aboutsummaryrefslogtreecommitdiffstats
path: root/include/template_processor.php
diff options
context:
space:
mode:
authorFabio Comuni <fabrix.xm@gmail.com>2012-02-21 11:25:22 +0100
committerFabio Comuni <fabrix.xm@gmail.com>2012-02-21 11:25:22 +0100
commit01a2791e3a83fba4da878cb094855819821a23d1 (patch)
tree885c6f7a3b3f73fd45fa1e372f335cd8756e6d30 /include/template_processor.php
parent5910fbf42023f36e69068c4ec09c772d997bbb72 (diff)
downloadvolse-hubzilla-01a2791e3a83fba4da878cb094855819821a23d1.tar.gz
volse-hubzilla-01a2791e3a83fba4da878cb094855819821a23d1.tar.bz2
volse-hubzilla-01a2791e3a83fba4da878cb094855819821a23d1.zip
template: add support for variable filters
Diffstat (limited to 'include/template_processor.php')
-rwxr-xr-xinclude/template_processor.php28
1 files changed, 26 insertions, 2 deletions
diff --git a/include/template_processor.php b/include/template_processor.php
index 25f7703a2..0d476f0e6 100755
--- a/include/template_processor.php
+++ b/include/template_processor.php
@@ -10,7 +10,7 @@
var $done = false;
var $d = false;
var $lang = null;
-
+ var $debug=false;
private function _preg_error(){
switch(preg_last_error()){
@@ -160,6 +160,30 @@
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; $k<count($toks); $k++){
+ $func = $toks[$k];
+ if (function_exists($func)) $val = $func($val);
+ }
+ if (count($toks)>1){
+ $str = str_replace( $match, $val, $str);
+ }
+ }
+ }
+
+ }
+ return str_replace($this->search,$this->replace, $str);
+ }
+
public function replace($s, $r) {
$this->r = $r;
@@ -180,7 +204,7 @@
$os = ""; $count=0;
while($os!=$s && $count<10){
$os=$s; $count++;
- $s = str_replace($this->search,$this->replace, $s);
+ $s = $this->_str_replace($s);
}
return template_unescape($s);
}