Location: PHPKode > scripts > Template Handler > template-handler/template_handler.php
<?
#  Template Handler Class :  Rob Thomson www.marotori.com

class template_handler {
	# set the moduleType variable
	# $moduleType controls where the system
	# looks for modules & plugins within the
	# system.

		
	function template_handler(){		
		
	}

	function setBaseDir($dir){		
		$this->baseDir = $dir;
	}
	

	# return the template	
	function retrieve(){
		# clean up any tags that have been set
		if(is_array($this->objArray)){
			$this->objArray = array_unique($this->objArray);
			foreach($this->objArray as $x){
				$this->templateContent = str_replace($x,"",$this->templateContent);
			}
			unset($this->objArray);
		}
		# parse the template looking for any php code
		
	
			$string = $this->templateContent;
			
			# first find and subst out all text area content
			preg_match_all("/<(textarea)(.*?)>(.*?)<\/textarea>/si", $string, $regs);
			# replace all textarea content with a custom tag
			$count = "1";
			if(is_array($regs[0])){
				foreach($regs[0] as $tag){
					$string = str_replace($tag,"{textarea-" . $count . "}",$string);
					$textarea[] = array("field" => "{textarea-" . $count . "}","data" => $tag);	
				$count++;
				}
			}
		
			        $pos = 0;
			        while ( ($pos = strpos( $string, '<?' )) != FALSE ) {
			          $pos2 = strpos($string, '?>', $pos + 2);
			            ob_start();
			             eval( substr( $string, $pos + 2, $pos2 - $pos - 2) );
			             $value = ob_get_contents();
			            ob_end_clean();
			          $string = substr( $string, 0, $pos ) . $value . substr( $string,$pos2 + 2);
			        }
			# reassemble to handle php code input into text areas        
			if(is_array($textarea)){
				foreach($textarea as $x){
					$string = str_replace($x[field],$x[data],$string);
				}
			}			        
			        
			        
			        
			        
			        
			  $this->templateContent = $string;

		# display the output
		return $this->templateContent;
	}


	
	# set the template that will be used
	function setTemplate($template="none"){
		if($template == "none"){
			print "[error] please specify a template. <br>";	
		} else {
			$this->templateName = "$template";
			$this->templatePath =  $this->baseDir . $this->templateName;	

			if(file_exists($this->templatePath)){
				$handle = fopen ($this->templatePath, "r");
				$this->templateContent = fread ($handle, filesize ($this->templatePath));
				fclose ($handle);				
			} else {
				print "[error] unable to open template from "  . $this->templatePath . "<br>";
				print "Has setBaseDir($dir) been set<br>";	
			}	
		}
		
	}

	# set the specified object to its relevant value
	function setObject($objtag,$content){
		$this->objArray[] = "{". $objtag . "}";
		$this->templateContent = str_replace('{' . $objtag . '}',$content . '{' . $objtag . '}',$this->templateContent);
	}


}


//EOF
?>
Return current item: Template Handler