aboutsummaryrefslogtreecommitdiffstats
path: root/include/template.php
diff options
context:
space:
mode:
authorrvelices <rv-github@modusoptimus.com>2007-09-19 03:23:19 +0000
committerrvelices <rv-github@modusoptimus.com>2007-09-19 03:23:19 +0000
commit131cf74ba44c35ac82cb949bf33794c8f579105c (patch)
tree0262aaf1073f0e55d5287c66ce92cc4551a1805c /include/template.php
parentb2c5c04c6a7778a11b285592fad04fe1574eef28 (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.php37
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.
*/