From e868e130b07dc0563d03b8fd983dec95db99821e Mon Sep 17 00:00:00 2001 From: Pepijn Over Date: Tue, 22 Apr 2014 20:59:47 +0200 Subject: [PATCH] adding required "?" prefix to if statements in templates --- .../Server/Controller/LogController.class.php | 2 +- src/psm/Service/Template.class.php | 31 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/psm/Module/Server/Controller/LogController.class.php b/src/psm/Module/Server/Controller/LogController.class.php index c92262c8..b727b0b7 100644 --- a/src/psm/Module/Server/Controller/LogController.class.php +++ b/src/psm/Module/Server/Controller/LogController.class.php @@ -86,7 +86,7 @@ class LogController extends AbstractServerController { 'server_log_entries', array( 'logtitle' => $key, - 'has_users' => ($key == 'status') ? false : true, + '?has_users' => ($key == 'status') ? false : true, ) ); $this->tpl->addTemplateData( diff --git a/src/psm/Service/Template.class.php b/src/psm/Service/Template.class.php index 616052f3..e5d433de 100644 --- a/src/psm/Service/Template.class.php +++ b/src/psm/Service/Template.class.php @@ -118,9 +118,12 @@ class Template { } $source = $this->addTemplateData($source, $subdata, true); } else { - // replace if statements - $if_replacement = empty($value) ? '' : '$1'; - $source = preg_replace('{(.*?)}is', $if_replacement, $source); + if(substr($key, 0, 1) == '?') { + $key = substr($key, 1); + // replace if statements + $if_replacement = empty($value) ? '' : '$1'; + $source = preg_replace('{(.*?)}is', $if_replacement, $source); + } $source = str_replace('{'.$key.'}', $value, $source); } @@ -206,18 +209,24 @@ class Template { $tmp_string = str_replace('{'.$k.'}', $repeat_html, $tmp_string); } else { foreach($v as $vk => $vv) { - // replace if statements - $if_replacement = empty($vv) ? '' : '$1'; - $tmp_string = preg_replace('{(.*?)}is', $if_replacement, $tmp_string); + if(substr($vk, 0, 1) == '?') { + $vk = substr($vk, 1); + // replace if statements + $if_replacement = empty($vv) ? '' : '$1'; + $tmp_string = preg_replace('{(.*?)}is', $if_replacement, $tmp_string); + } $tmp_string = str_replace('{'.$k.'_'.$vk.'}', $vv, $tmp_string); } } } else { - // replace if statements - $if_replacement = empty($v) ? '' : '$1'; - $tmp_string = preg_replace('{(.*?)}is', $if_replacement, $tmp_string); - + if(substr($k, 0, 1) == '?') { + $k = substr($k, 1); + // replace if statements + $if_replacement = empty($v) ? '' : '$1'; + $tmp_string = preg_replace('{(.*?)}is', $if_replacement, $tmp_string); + } + $tmp_string = str_replace('{'.$k.'}', $v, $tmp_string); } } @@ -239,7 +248,7 @@ class Template { // check if there are any unused if, and if there are remove them $result = preg_replace('{(.*?)}is', '', $result); - + // check for tpl variables that have not been replaced. ie: {name}. ignore literal stuff, though. ie: {{name}} is {name} and should not be removed preg_match_all('~{?{(\w+?)}}?~', $result, $matches);