|  | @@ -41,50 +41,54 @@ class PhpTemplate
 | 
	
		
			
				|  |  |  		// PLUGINS
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		$template = $this;
 | 
	
		
			
				|  |  | -		$this->addPlugin('layout', function ($param) use ($template) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('layout', function ($key) use ($template) {
 | 
	
		
			
				|  |  |  			// {layout my_layout_template.tpl.php}
 | 
	
		
			
				|  |  | -			$template->layout = $param;
 | 
	
		
			
				|  |  | +			$template->layout = $key;
 | 
	
		
			
				|  |  |  			return '';
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -		$this->addPlugin('\/\/', function ($param) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('\/\/', function ($key) {
 | 
	
		
			
				|  |  |  			// {// this is a comment}
 | 
	
		
			
				|  |  |  			return '';
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -		$this->addPlugin('#', function ($param) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('#', function ($key) {
 | 
	
		
			
				|  |  |  			// {# this is a comment}
 | 
	
		
			
				|  |  |  			return '';
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -		$this->addPlugin('tr', function ($param) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('assign', function ($key, $value) use ($template) {
 | 
	
		
			
				|  |  | +			// {assign var_name content of my variable}
 | 
	
		
			
				|  |  | +			$template->assign($key, $value);
 | 
	
		
			
				|  |  | +			return '';
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  | +		$this->addPlugin('tr', function ($key) {
 | 
	
		
			
				|  |  |  			// {tr my text in english} ==> mon texte en francais
 | 
	
		
			
				|  |  | -			return gettext($param);
 | 
	
		
			
				|  |  | +			return gettext($key);
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -		$this->addPlugin('include', function ($param) use ($template) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('include', function ($key) use ($template) {
 | 
	
		
			
				|  |  |  			// {include my_template.tpl.php}
 | 
	
		
			
				|  |  |  			$template = new PhpTemplate($template->templates_dirs, $template->variables, null, $template->templates_dirs);
 | 
	
		
			
				|  |  | -			$templatechild_content = $template->fetch($param);
 | 
	
		
			
				|  |  | +			$templatechild_content = $template->fetch($key);
 | 
	
		
			
				|  |  |  			return $templatechild_content;
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -		$this->addPlugin('routeUrl', function ($param) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('routeUrl', function ($key, $value=[]) {
 | 
	
		
			
				|  |  |  			// {routeUrl login_page} ===> /login
 | 
	
		
			
				|  |  | -			$params = explode(' ', $param);
 | 
	
		
			
				|  |  | -			$route_name = array_shift($params);
 | 
	
		
			
				|  |  | -			$url_args = $params;
 | 
	
		
			
				|  |  | +			$route_name = $key;
 | 
	
		
			
				|  |  | +			$url_args = explode(' ', $value);
 | 
	
		
			
				|  |  |  			$url = getRouteUrl($route_name, $url_args);
 | 
	
		
			
				|  |  |  			return $url;
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		$this->addPlugin('block', function ($param, $matched_expr, $begin_block_offset_start, &$content) use ($template) {
 | 
	
		
			
				|  |  | +		$this->addPlugin('block', function ($key, $matched_expr, $begin_block_offset_start, &$content) use ($template) {
 | 
	
		
			
				|  |  |  			// {block block_name}my html content{/block}  ==> assign variable $block_name with block content
 | 
	
		
			
				|  |  |  			$begin_block_offset_end = $begin_block_offset_start + strlen($matched_expr);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			$end_block_offset_start = strpos($content, '{/block}', $begin_block_offset_end);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if ($end_block_offset_start) {
 | 
	
		
			
				|  |  | -				$block = isset($template->variables[$param]) ? $template->variables[$param] : '';
 | 
	
		
			
				|  |  | +				$block = isset($template->variables[$key]) ? $template->variables[$key] : '';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				$block = substr($content, $begin_block_offset_end, $end_block_offset_start - $begin_block_offset_end) . $block;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				$template->assign($param, $block);
 | 
	
		
			
				|  |  | +				$template->assign($key, $block);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				$end_block_offset_end = $end_block_offset_start + strlen("{/block}");
 | 
	
		
			
				|  |  |  				$content = substr($content, 0, $begin_block_offset_start) . substr($content, $end_block_offset_end);
 | 
	
	
		
			
				|  | @@ -165,9 +169,10 @@ class PhpTemplate
 | 
	
		
			
				|  |  |  				foreach ($this->plugins as $prefix => $callback) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  					if ($prefix != 'block') {
 | 
	
		
			
				|  |  | -						preg_match_all('/{' . $prefix . ' ([^}]+)}/', $content, $regs, PREG_SET_ORDER);
 | 
	
		
			
				|  |  | +						preg_match_all('/{' . $prefix . ' ([^} ]+)( ([^}]+))?}/', $content, $regs, PREG_SET_ORDER);
 | 
	
		
			
				|  |  |  						foreach($regs as $reg) {
 | 
	
		
			
				|  |  | -							$replaced = $callback($reg[1], $reg);
 | 
	
		
			
				|  |  | +							$value = isset($reg[3]) ? $reg[3] : null;
 | 
	
		
			
				|  |  | +							$replaced = $callback($reg[1], $value);
 | 
	
		
			
				|  |  |  							$content = str_replace($reg[0], $replaced, $content);
 | 
	
		
			
				|  |  |  						}
 | 
	
		
			
				|  |  |  					} else {
 |