diff options
author | rvelices <rv-github@modusoptimus.com> | 2007-09-19 03:23:19 +0000 |
---|---|---|
committer | rvelices <rv-github@modusoptimus.com> | 2007-09-19 03:23:19 +0000 |
commit | 131cf74ba44c35ac82cb949bf33794c8f579105c (patch) | |
tree | 0262aaf1073f0e55d5287c66ce92cc4551a1805c /include/template.php | |
parent | b2c5c04c6a7778a11b285592fad04fe1574eef28 (diff) |
merge -r 2094 from branch-1_7 to trunk
- fix: quick search error if the query term contained " or '
- optimized sql query in sync_users (called every time on admin page) - a lot faster when #user_cache_categories is big
- added function Template->delete_block_vars (opposite of assign_block_vars)
git-svn-id: http://piwigo.org/svn/trunk@2095 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/template.php')
-rw-r--r-- | include/template.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/include/template.php b/include/template.php index 0e8f626f0..7d93237e6 100644 --- a/include/template.php +++ b/include/template.php @@ -296,6 +296,43 @@ class Template { } /** + * Block-level variable deletion. Deletes the last block iteration. + * if all is true - all blocks are removed + * return true if a deletion occured + */ + function delete_block_vars($blockname, $all=false) + { + $blocks = explode('.', $blockname); + $blockcount = count($blocks); + $str = '$this->_tpldata'; + for ($i = 0; $i < $blockcount; $i++) + { + $str .= '[\'' . $blocks[$i] . '.\']'; + eval('$lastiteration = isset('.$str.') ? sizeof('.$str.')-1:-1;'); + if ($lastiteration==-1) + { + return false; + } + if ($i==$blockcount-1) + { + break; + } + $str .= '[' . $lastiteration . ']'; + } + + if ($all==true or $lastiteration==0) + { + $str ='unset('.$str.');'; + } + else + { + $str ='unset('.$str.'['.$lastiteration.']);'; + } + eval($str); + return true; + } + + /** * Root-level variable assignment. Adds to current assignments, overriding * any existing variable assignment with the same name. */ |