diff --git a/include/template_processor.php b/include/template_processor.php index b4d444e1c..111fc5849 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -1,5 +1,5 @@ $v ) { - if (is_array($v)) { - $this->_build_replace($v, "$prefix$k."); - } else { - $this->search[] = $prefix . $k; - $this->replace[] = $v; - } - } - } - } private function _push_stack(){ - $this->stack[] = array($this->r, $this->search, $this->replace, $this->nodes); + $this->stack[] = array($this->r, $this->nodes); } private function _pop_stack(){ - list($this->r, $this->search, $this->replace, $this->nodes) = array_pop($this->stack); + list($this->r, $this->nodes) = array_pop($this->stack); } - private function _get_var($name){ - $keys = array_map('trim',explode(".",$name)); + private function _get_var($name, $retNoKey=false){ + $keys = array_map('trim',explode(".",$name)); + if ($retNoKey && !array_key_exists($keys[0], $this->r)) return KEY_NOT_EXISTS; $val = $this->r; foreach($keys as $k) { $val = (isset($val[$k]) ? $val[$k] : null); @@ -169,40 +157,24 @@ return $s; } - /* - private function _str_replace($str){ - #$this->search,$this->replace, - $searchs = $this->search; - foreach($searchs as $search){ - $search = "|".preg_quote($search)."(\|[a-zA-Z0-9_]*)*|"; - $m = array(); - if (preg_match_all($search, $str,$m)){ - foreach ($m[0] as $match){ - $toks = explode("|",$match); - $val = $this->_get_var($toks[0]); - for($k=1; $k1){ - $str = str_replace( $match, $val, $str); - } - } - } - - } - return str_replace($this->search,$this->replace, $str); - }*/ + private function var_replace($s){ + $m = array(); + if (preg_match_all('/\$\[{0,1}([a-zA-Z0-9-_]+\.*)+\]{0,1}/', $s,$m)){ + foreach($m[0] as $var){ + $varn = str_replace(array("[","]"), array("",""), $var); + $val = $this->_get_var($varn, true); + if ($val!=KEY_NOT_EXISTS) + $s = str_replace($var, $val, $s); + } + } + + return $s; + } public function replace($s, $r) { $this->r = $r; - $this->search = array(); - $this->replace = array(); - - $this->_build_replace($r, ""); - #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s); $s = $this->_build_nodes($s); $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); @@ -210,12 +182,12 @@ // remove comments block $s = preg_replace('/{#[^#]*#}/', "" , $s); + // replace strings recursively (limit to 10 loops) $os = ""; $count=0; while($os!=$s && $count<10){ $os=$s; $count++; - //$s = $this->_str_replace($s); - $s = str_replace($this->search, $this->replace, $s); + $s = $this->var_replace($s); } return template_unescape($s); } diff --git a/include/text.php b/include/text.php index 4276b7fcb..042ee982c 100755 --- a/include/text.php +++ b/include/text.php @@ -14,7 +14,13 @@ if(! function_exists('replace_macros')) { function replace_macros($s,$r) { global $t; - return $t->replace($s,$r); + //$ts = microtime(); + $r = $t->replace($s,$r); + //$tt = microtime() - $ts; + + //$a = get_app(); + //$a->page['debug'] .= "$tt
\n"; + return $r; }} diff --git a/mod/group.php b/mod/group.php index f6f8e4173..13401ef0d 100755 --- a/mod/group.php +++ b/mod/group.php @@ -84,6 +84,7 @@ function group_content(&$a) { return replace_macros($tpl, $context + array( '$title' => t('Create a group of contacts/friends.'), '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), + '$gid' => 'new', )); diff --git a/view/search_item.tpl b/view/search_item.tpl index a889062e0..80d6678fb 100755 --- a/view/search_item.tpl +++ b/view/search_item.tpl @@ -31,8 +31,8 @@
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index 0dcd30f7b..09cf64397 100755 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -53,8 +53,8 @@
$item.body
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl index 31f046a76..c3638094c 100755 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -58,8 +58,8 @@
$item.body
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl index d165d9801..51e36b6f4 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -31,8 +31,8 @@
$item.body
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index 75cd5f65e..211906c93 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -35,8 +35,8 @@
$item.body
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/theme/vier/search_item.tpl b/view/theme/vier/search_item.tpl index f2a3a3c8b..fb87d7661 100755 --- a/view/theme/vier/search_item.tpl +++ b/view/theme/vier/search_item.tpl @@ -37,9 +37,10 @@
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }} +
diff --git a/view/theme/vier/wall_item.tpl b/view/theme/vier/wall_item.tpl index 8b06989fa..aa972937d 100644 --- a/view/theme/vier/wall_item.tpl +++ b/view/theme/vier/wall_item.tpl @@ -38,9 +38,10 @@
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }} +
diff --git a/view/theme/vier/wallwall_item.tpl b/view/theme/vier/wallwall_item.tpl index a8a46c34c..c557b33f1 100644 --- a/view/theme/vier/wallwall_item.tpl +++ b/view/theme/vier/wallwall_item.tpl @@ -45,8 +45,8 @@
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/wall_item.tpl b/view/wall_item.tpl index ddae5b609..c99077510 100755 --- a/view/wall_item.tpl +++ b/view/wall_item.tpl @@ -31,8 +31,8 @@
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}
diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl index 3fc704e35..be942f261 100755 --- a/view/wallwall_item.tpl +++ b/view/wallwall_item.tpl @@ -35,8 +35,8 @@
- {{ for $item.tags as $item.tag }} - $item.tag + {{ for $item.tags as $tag }} + $tag {{ endfor }}