Use Horde_Template:: (for now)
authorMichael M Slusarz <slusarz@curecanti.org>
Thu, 9 Jul 2009 20:46:17 +0000 (14:46 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Thu, 9 Jul 2009 20:47:52 +0000 (14:47 -0600)
24 files changed:
imp/acl.php
imp/ajax.php
imp/compose-dimp.php
imp/compose.php
imp/contacts.php
imp/fetchmailprefs.php
imp/filterprefs.php
imp/folders.php
imp/lib/IMP.php
imp/lib/Identity/imp.php
imp/lib/Template.php [deleted file]
imp/lib/UI/Mailbox.php
imp/login.php
imp/mailbox.php
imp/message.php
imp/pgp.php
imp/rss.php
imp/saveimage.php
imp/search.php
imp/smime.php
imp/stationery.php
imp/thread.php
ingo/filters.php
ingo/lib/Template.php [deleted file]

index 539ba52..8139542 100644 (file)
@@ -145,7 +145,7 @@ $chunk = Horde_Util::nonInputVar('chunk');
 Prefs_UI::generateHeader(null, $chunk);
 
 /* Set up template. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('aclurl', Horde::applicationUrl('acl.php'));
 $t->set('forminput', Horde_Util::formInput());
index 0acd370..12d6a0a 100644 (file)
@@ -607,7 +607,7 @@ case 'ShowPortal':
     $result = new stdClass;
     $result->portal = '';
     if (!empty($blocks)) {
-        $t = new IMP_Template(IMP_TEMPLATES . '/imp/');
+        $t = new Horde_Template(IMP_TEMPLATES . '/imp/');
         $t->set('block', $blocks);
         $result->portal = $t->fetch('portal.html');
     }
index 930580f..3156133 100644 (file)
@@ -305,7 +305,7 @@ if ($get_sig && !empty($sig)) {
         : $msg . "\n" . $sig;
 }
 
-$t = new IMP_Template(IMP_TEMPLATES . '/imp/');
+$t = new Horde_Template(IMP_TEMPLATES . '/imp/');
 $t->setOption('gettext', true);
 $t->set('title', $title);
 $t->set('closelink', Horde::img('close.png', 'X', array('id' => 'compose_close'), $registry->getImageDir('horde')));
index 0bee148..8a27951 100644 (file)
@@ -33,7 +33,7 @@ function _popupSuccess()
     $menu->add(Horde::applicationUrl('compose.php'), _("New Message"), 'compose.png');
     $menu->add('', _("Close this window"), 'close.png', $GLOBALS['registry']->getImageDir('horde'), '', 'window.close();');
     require IMP_TEMPLATES . '/common-header.inc';
-    $success_template = new IMP_Template();
+    $success_template = new Horde_Template();
     $success_template->set('menu', $menu->render());
     echo $success_template->fetch(IMP_TEMPLATES . '/compose/success.html');
     IMP::status();
@@ -807,7 +807,7 @@ if (!$redirect) {
 
 
 /* Set up the base template now. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('post_action', Horde_Util::addParameter(Horde::applicationUrl('compose.php'), 'uniq', uniqid(mt_rand())));
 $t->set('allow_compose', !$compose_disable);
index 1d2db1e..e0e5f39 100644 (file)
@@ -62,7 +62,7 @@ foreach (explode('|', Horde_Util::getFormData('sa')) as $addr) {
 }
 
 /* Prepare the contacts template. */
-$template = new IMP_Template();
+$template = new Horde_Template();
 $template->setOption('gettext', true);
 
 $template->set('action', Horde::url(Horde_Util::addParameter(Horde::applicationUrl('contacts.php'), array('uniq' => uniqid(mt_rand())))));
index a8e27a0..e68a46e 100644 (file)
@@ -98,7 +98,7 @@ $app = 'imp';
 $chunk = Horde_Util::nonInputVar('chunk');
 
 /* Prepare template. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('navcell', Horde_Util::bufferOutput(array('Prefs_UI', 'generateNavigationCell'), 'fetchmail'));
 $t->set('fetchurl', $fetch_url);
index 4cafcc4..a04ce52 100644 (file)
@@ -53,7 +53,7 @@ $chunk = Horde_Util::nonInputVar('chunk');
 $group = 'filters';
 Prefs_UI::generateHeader(null, $chunk);
 
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('navcell', Horde_Util::bufferOutput(array('Prefs_UI', 'generateNavigationCell'), 'filters'));
 $t->set('prefsurl', IMP::prefsURL(true));
index 3d2839b..88e886e 100644 (file)
@@ -269,7 +269,7 @@ case 'folders_empty_mailbox_confirm':
         require IMP_TEMPLATES . '/common-header.inc';
         IMP::menu();
 
-        $template = new IMP_Template();
+        $template = new Horde_Template();
         $template->setOption('gettext', true);
         $template->set('delete', ($actionID == 'delete_folder_confirm'));
         $template->set('empty', ($actionID == 'folders_empty_mailbox_confirm'));
@@ -310,7 +310,7 @@ case 'mbox_size':
             $loop[] = $data;
         }
 
-        $template = new IMP_Template();
+        $template = new Horde_Template();
         $template->setOption('gettext', true);
         $template->set('folders', $loop);
         $template->set('folders_url', $folders_url);
@@ -336,7 +336,7 @@ if ($_SESSION['imp']['file_upload'] && ($actionID == 'import_mbox')) {
     IMP::quota();
 
     /* Prepare import template. */
-    $i_template = new IMP_Template();
+    $i_template = new Horde_Template();
     $i_template->setOption('gettext', true);
     $i_template->set('folders_url', $folders_url);
     $i_template->set('import_folder', $folder_list[0]);
@@ -361,7 +361,7 @@ IMP::addInlineScript(array(
 
 /* Prepare the header template. */
 $refresh_title = _("Reload View");
-$head_template = new IMP_Template();
+$head_template = new Horde_Template();
 $head_template->setOption('gettext', true);
 $head_template->set('title', $refresh_title);
 $head_template->set('folders_url', $folders_url);
@@ -374,7 +374,7 @@ $head_template->set('refresh', Horde::link($folders_url, $refresh_title, '', '',
 $head_template->set('folders_token', $folders_token);
 
 /* Prepare the actions template. */
-$a_template = new IMP_Template();
+$a_template = new Horde_Template();
 $a_template->setOption('gettext', true);
 $a_template->set('id', 0);
 $a_template->set('javascript', $browser->hasFeature('javascript'));
@@ -494,7 +494,7 @@ foreach ($raw_rows as $val) {
 }
 
 /* Render the rows now. */
-$template = new IMP_Template();
+$template = new Horde_Template();
 $template->setOption('gettext', true);
 $template->set('rows', $rows);
 
index 5d78a9f..d63d545 100644 (file)
@@ -625,7 +625,7 @@ class IMP
      */
     static public function menu()
     {
-        $t = new IMP_Template();
+        $t = new Horde_Template();
         $t->set('forminput', Horde_Util::formInput());
         $t->set('use_folders', ($_SESSION['imp']['protocol'] != 'pop') && $GLOBALS['conf']['user']['allow_folders'], true);
         if ($t->get('use_folders')) {
@@ -666,7 +666,7 @@ class IMP
     {
         $quotadata = self::quotaData(true);
         if (!empty($quotadata)) {
-            $t = new IMP_Template();
+            $t = new Horde_Template();
             $t->set('class', $quotadata['class']);
             $t->set('message', $quotadata['message']);
             echo $t->fetch(IMP_TEMPLATES . '/quota/quota.html');
@@ -751,7 +751,7 @@ class IMP
      */
     static public function getNewMessagePopup($var)
     {
-        $t = new IMP_Template();
+        $t = new Horde_Template();
         $t->setOption('gettext', true);
         if (is_array($var)) {
             if (empty($var)) {
index f779392..355974c 100644 (file)
@@ -49,7 +49,7 @@ class Identity_imp extends Identity
      */
     function __construct()
     {
-        parent::Identity();
+        parent::__construct();
         $this->_properties = array_merge(
             $this->_properties,
             array('replyto_addr', 'alias_addr', 'tieto_addr', 'bcc_addr',
diff --git a/imp/lib/Template.php b/imp/lib/Template.php
deleted file mode 100644 (file)
index 109f227..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-<?php
-/**
- * Horde Template system. Adapted from bTemplate by Brian Lozier
- * <brian@massassi.net>.
- *
- * Horde_Template provides a basic template engine with tags, loops,
- * and if conditions. However, it is also a simple interface with
- * several essential functions: set(), fetch(), and
- * parse(). Subclasses or decorators can implement (or delegate) these
- * three methods, plus the options api, and easily implement other
- * template engines (PHP code, XSLT, etc.) without requiring usage
- * changes.
- *
- * Compilation code adapted from code written by Bruno Pedro <bpedro@ptm.pt>.
- *
- * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @author  Michael Slusarz <slusarz@horde.org>
- * @package Horde_Template
- */
-
-/** The identifier to use for memory-only templates. */
-define('IMP_TEMPLATE_STRING', '**string');
-
-class IMP_Template {
-
-    /**
-     * The Horde_Cache object to use.
-     *
-     * @var Horde_Cache
-     */
-    var $_cache;
-
-    /**
-     * Option values.
-     *
-     * @var array
-     */
-    var $_options = array();
-
-    /**
-     * Directory that templates should be read from.
-     *
-     * @var string
-     */
-    var $_basepath = '';
-
-    /**
-     * Tag (scalar) values.
-     *
-     * @var array
-     */
-    var $_scalars = array();
-
-    /**
-     * Loop tag values.
-     *
-     * @var array
-     */
-    var $_arrays = array();
-
-    /**
-     * Path to template source.
-     *
-     * @var string
-     */
-    var $_templateFile = null;
-
-    /**
-     * Template source.
-     *
-     * @var string
-     */
-    var $_template = null;
-
-    /**
-     * Foreach variable mappings.
-     *
-     * @var array
-     */
-    var $_foreachMap = array();
-
-    /**
-     * Foreach variable incrementor.
-     *
-     * @var integer
-     */
-    var $_foreachVar = 0;
-
-    /**
-     * preg_match() cache.
-     *
-     * @var array
-     */
-    var $_pregcache = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $basepath  The directory where templates are read from.
-     */
-    function IMP_Template($basepath = null)
-    {
-        if (!is_null($basepath)) {
-            $this->_basepath = $basepath;
-        }
-
-
-        $this->_cache = IMP::getCache();
-    }
-
-    /**
-     * Sets an option.
-     * Currently available options are:
-     * <pre>
-     * 'debug' - Output debugging information to screen
-     * 'forcecompile' - Force a compilation on every page load
-     * 'gettext' - Activate gettext detection
-     * <pre>
-     *
-     * @param string $option  The option name.
-     * @param mixed $val      The option's value.
-     */
-    function setOption($option, $val)
-    {
-        $this->_options[$option] = $val;
-    }
-
-    /**
-     * Set the template contents to a string.
-     *
-     * @param string $template  The template text.
-     */
-    function setTemplate($template)
-    {
-        $this->_template = $template;
-        $this->_parse();
-        $this->_templateFile = IMP_TEMPLATE_STRING;
-    }
-
-    /**
-     * Returns an option's value.
-     *
-     * @param string $option  The option name.
-     *
-     * @return mixed  The option's value.
-     */
-    function getOption($option)
-    {
-        return isset($this->_options[$option]) ? $this->_options[$option] : null;
-    }
-
-    /**
-     * Sets a tag, loop, or if variable.
-     *
-     * @param string|array $tag   Either the tag name or a hash with tag names
-     *                            as keys and tag values as values.
-     * @param mixed        $var   The value to replace the tag with.
-     */
-    function set($tag, $var)
-    {
-        if (is_array($tag)) {
-            foreach ($tag as $tTag => $tVar) {
-                $this->set($tTag, $tVar);
-            }
-        } elseif (is_array($var) || is_object($var)) {
-            $this->_arrays[$tag] = $var;
-        } else {
-            $this->_scalars[$tag] = $var;
-        }
-    }
-
-    /**
-     * Returns the value of a tag or loop.
-     *
-     * @param string $tag  The tag name.
-     *
-     * @return mixed  The tag value or null if the tag hasn't been set yet.
-     */
-    function get($tag)
-    {
-        if (isset($this->_arrays[$tag])) {
-            return $this->_arrays[$tag];
-        }
-        if (isset($this->_scalars[$tag])) {
-            return $this->_scalars[$tag];
-        }
-        return null;
-    }
-
-    /**
-     * Fetches a template from the specified file and return the parsed
-     * contents.
-     *
-     * @param string $filename  The file to fetch the template from.
-     *
-     * @return string  The parsed template.
-     */
-    function fetch($filename = null)
-    {
-        $file = $this->_basepath . $filename;
-        $force = $this->getOption('forcecompile');
-
-        if (!is_null($filename) && ($file != $this->_templateFile)) {
-            $this->_template = $this->_templateFile = null;
-        }
-
-        /* First, check for a cached compiled version. */
-        $cacheid = 'horde_template|' . filemtime($file) . '|' . $file . '|'
-            . $this->getOption('gettext');
-        if (!$force && is_null($this->_template) && $this->_cache) {
-            $this->_template = $this->_cache->get($cacheid, 0);
-            if ($this->_template === false) {
-                $this->_template = null;
-            }
-        }
-
-        /* Parse and compile the template. */
-        if ($force || is_null($this->_template)) {
-            $this->_template = str_replace("\n", " \n", file_get_contents($file));
-            $this->_parse();
-            if (isset($cacheid) &&
-                !$this->_cache->set($cacheid, $this->_template)) {
-                Horde::logMessage(sprintf(_("Could not save the compiled template file '%s'."), $file), __FILE__, __LINE__, PEAR_LOG_ERR);
-            }
-        }
-
-        $this->_templateFile = $file;
-
-        /* Template debugging. */
-        if ($this->getOption('debug')) {
-            echo '<pre>' . htmlspecialchars($this->_template) . '</pre>';
-        }
-
-        return $this->parse();
-    }
-
-    /**
-     * Parses all variables/tags in the template.
-     *
-     * @param string $contents  The unparsed template.
-     *
-     * @return string  The parsed template.
-     */
-    function parse($contents = null)
-    {
-        if (!is_null($contents)) {
-            $this->setTemplate(str_replace("\n", " \n", $contents));
-        }
-
-        /* Evaluate the compiled template and return the output. */
-        ob_start();
-        eval('?>' . $this->_template);
-        return is_null($contents) ? ob_get_clean() : str_replace(" \n", "\n", ob_get_clean());
-    }
-
-    /**
-     * Parses all variables/tags in the template.
-     */
-    function _parse()
-    {
-        // Escape XML instructions.
-        $this->_template = preg_replace('/\?>|<\?/',
-                                        '<?php echo \'$0\' ?>',
-                                        $this->_template);
-
-        // Parse gettext tags, if the option is enabled.
-        if ($this->getOption('gettext')) {
-            $this->_parseGettext();
-        }
-
-        // Process ifs.
-        $this->_parseIf();
-
-        // Process loops and arrays.
-        $this->_parseLoop();
-
-        // Process base scalar tags.  Needs to be after _parseLoop() as we
-        // rely on _foreachMap().
-        $this->_parseTags();
-
-        // Finally, process any associative array scalar tags.
-        $this->_parseAssociativeTags();
-    }
-
-    /**
-     * Parses gettext tags.
-     *
-     * @access private
-     */
-    function _parseGettext()
-    {
-        if (preg_match_all("/<gettext>(.+?)<\/gettext>/s", $this->_template, $matches, PREG_SET_ORDER)) {
-            $replace = array();
-            foreach ($matches as $val) {
-                $replace[$val[0]] = '<?php echo _(\'' . str_replace("'", "\\'", $val[1]) . '\'); ?>';
-            }
-            $this->_doReplace($replace);
-        }
-    }
-
-    /**
-     * Parses 'if' statements.
-     *
-     * @access private
-     *
-     * @param string $key  The key prefix to parse.
-     */
-    function _parseIf($key = null)
-    {
-        $replace = array();
-
-        foreach ($this->_doSearch('if', $key) as $val) {
-            $replace[$val[0]] = '<?php if (!empty(' . $this->_generatePHPVar('scalars', $val[1]) . ') || !empty(' . $this->_generatePHPVar('arrays', $val[1]) . ')): ?>';
-            $replace[$val[2]] = '<?php endif; ?>';
-
-            // Check for else statement.
-            foreach ($this->_doSearch('else', $key) as $val2) {
-                $replace[$val2[0]] = '<?php else: ?>';
-                $replace[$val2[2]] = '';
-            }
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Parses the given array for any loops or other uses of the array.
-     *
-     * @access private
-     *
-     * @param string $key  The key prefix to parse.
-     */
-    function _parseLoop($key = null)
-    {
-        $replace = array();
-
-        foreach ($this->_doSearch('loop', $key) as $val) {
-            $divider = null;
-
-            // See if we have a divider.
-            if (preg_match("/<divider:" . $val[1] . ">(.*)<\/divider:" . $val[1] . ">/sU", $this->_template, $m)) {
-                $divider = $m[1];
-                $replace[$m[0]] = '';
-            }
-
-            if (!isset($this->_foreachMap[$val[1]])) {
-                $this->_foreachMap[$val[1]] = ++$this->_foreachVar;
-            }
-            $varId = $this->_foreachMap[$val[1]];
-            $var = $this->_generatePHPVar('arrays', $val[1]);
-
-            $replace[$val[0]] = '<?php ' .
-                (($divider) ? '$i' . $varId . ' = count(' . $var . '); ' : '') .
-                'foreach (' . $this->_generatePHPVar('arrays', $val[1]) . ' as $k' . $varId . ' => $v' . $varId . '): ?>';
-            $replace[$val[2]] = '<?php ' .
-                (($divider) ? 'if (--$i' . $varId . ' != 0) { echo \'' . $divider . '\'; }; ' : '') .
-                'endforeach; ?>';
-
-            // Parse ifs.
-            $this->_parseIf($val[1]);
-
-            // Parse interior loops.
-            $this->_parseLoop($val[1]);
-
-            // Replace scalars.
-            $this->_parseTags($val[1]);
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Replaces 'tag' tags with their PHP equivalents.
-     *
-     * @access private
-     *
-     * @param string $key  The key prefix to parse.
-     */
-    function _parseTags($key = null)
-    {
-        $replace = array();
-
-        foreach ($this->_doSearch('tag', $key, true) as $val) {
-            $replace_text = '<?php ';
-            if (isset($this->_foreachMap[$val[1]])) {
-                $var = $this->_foreachMap[$val[1]];
-                $replace_text .= 'if (isset($v' . $var . ')) { echo is_array($v' . $var . ') ? $k' . $var . ' : $v' . $var . '; } else';
-            }
-            $var = $this->_generatePHPVar('scalars', $val[1]);
-            $replace[$val[0]] = $replace_text . 'if (isset(' . $var . ')) { echo ' . $var . '; } ?>';
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Parse associative tags (i.e. <tag:foo.bar />).
-     *
-     * @access private
-     */
-    function _parseAssociativeTags()
-    {
-        $replace = array();
-
-        foreach ($this->_pregcache['tag'] as $key => $val) {
-            $parts = explode('.', $val[1]);
-            $var = '$this->_arrays[\'' . $parts[0] . '\'][\'' . $parts[1] . '\']';
-            $replace[$val[0]] = '<?php if (isset(' . $var . ')) { echo ' . $var . '; } ?>';
-            unset($this->_pregcache['tag'][$key]);
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Output the correct PHP variable string for use in template space.
-     *
-     * @access private
-     */
-    function _generatePHPVar($tag, $key)
-    {
-        $out = '';
-
-        $a = explode('.', $key);
-        $a_count = count($a);
-
-        if ($a_count == 1) {
-            switch ($tag) {
-            case 'arrays':
-                $out = '$this->_arrays';
-                break;
-
-            case 'scalars':
-                $out = '$this->_scalars';
-                break;
-            }
-        } else {
-            $out = '$v' . $this->_foreachMap[implode('.', array_slice($a, 0, -1))];
-        }
-
-        return $out . '[\'' . end($a) . '\']';
-    }
-
-    /**
-     * TODO
-     *
-     * @access private
-     */
-    function _doSearch($tag, $key, $noclose = false)
-    {
-        $out = array();
-        $level = (is_null($key)) ? 0 : substr_count($key, '.') + 1;
-
-        if (!isset($this->_pregcache[$key])) {
-            $regex = ($noclose) ?
-                "/<" . $tag . ":(.+?)\s\/>/" :
-                "/<" . $tag . ":([^>]+)>/";
-            preg_match_all($regex, $this->_template, $this->_pregcache[$tag], PREG_SET_ORDER);
-        }
-
-        foreach ($this->_pregcache[$tag] as $pkey => $val) {
-            $val_level = substr_count($val[1], '.');
-            $add = false;
-            if (is_null($key)) {
-                $add = !$val_level;
-            } else {
-                $add = (($val_level == $level) &&
-                        (strpos($val[1], $key . '.') === 0));
-            }
-            if ($add) {
-                if (!$noclose) {
-                    $val[2] = '</' . $tag . ':' . $val[1] . '>';
-                }
-                $out[] = $val;
-                unset($this->_pregcache[$tag][$pkey]);
-            }
-        }
-
-        return $out;
-    }
-
-    /**
-     * TODO
-     *
-     * @access private
-     */
-    function _doReplace($replace)
-    {
-        if (empty($replace)) {
-            return;
-        }
-
-        $search = array();
-
-        foreach (array_keys($replace) as $val) {
-            $search[] = '/' . preg_quote($val, '/') . '/';
-        }
-
-        $this->_template = preg_replace($search, array_values($replace), $this->_template);
-    }
-
-}
index 0a39259..22f489d 100644 (file)
@@ -32,7 +32,7 @@ class IMP_UI_Mailbox
      *
      * @param string $mailbox  The current mailbox.
      */
-    function __construct($mailbox = null)
+    public function __construct($mailbox = null)
     {
         $this->_mailbox = $mailbox;
     }
index 915908a..e746384 100644 (file)
@@ -252,7 +252,7 @@ if ($browser->isMobile()) {
 $display_list = ($show_list && !empty($hordeauth_servers_list));
 
 /* Prepare the login template. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $tabindex = 0;
 
index 09c991a..f6365f5 100644 (file)
@@ -22,7 +22,7 @@ function _outputSummaries($msgs, $mbox)
     }
 
     if (!isset($template)) {
-        $template = new IMP_Template();
+        $template = new Horde_Template();
         $template->setOption('gettext', true);
 
         // Some browsers have trouble with hidden overflow in table cells
@@ -431,7 +431,7 @@ IMP::status();
 IMP::quota();
 
 /* Prepare the header template. */
-$hdr_template = new IMP_Template();
+$hdr_template = new Horde_Template();
 $hdr_template->set('title', $title);
 $hdr_template->set('pagetitle', $pagetitle);
 if ($readonly) {
@@ -474,7 +474,7 @@ if (empty($pageOb['end'])) {
     if ($pageOb['anymsg'] && isset($deleted_prompt)) {
         /* Show 'Show Deleted' prompt if mailbox has no viewable message but
            has hidden, deleted messages. */
-        $del_template = new IMP_Template();
+        $del_template = new Horde_Template();
         $del_template->set('hide', Horde::widget(Horde_Util::addParameter($refresh_url, array('actionID' => 'hide_deleted', 'mailbox_token' => $mailbox_token)), $deleted_prompt, 'widget hideAction', '', '', $deleted_prompt));
         if (!$readonly) {
             $del_template->set('purge', Horde::widget(Horde_Util::addParameter($refresh_url, array('actionID' => 'expunge_mailbox', 'mailbox_token' => $mailbox_token)), _("Purge Deleted"), 'widget purgeAction', '', '', _("Pur_ge Deleted")));
@@ -482,7 +482,7 @@ if (empty($pageOb['end'])) {
         echo $del_template->fetch(IMP_TEMPLATES . '/mailbox/actions_deleted.html');
     }
 
-    $empty_template = new IMP_Template();
+    $empty_template = new Horde_Template();
     $empty_template->setOption('gettext', true);
     echo $empty_template->fetch(IMP_TEMPLATES . '/mailbox/empty_mailbox.html');
     require $registry->get('templates', 'horde') . '/common-footer.inc';
@@ -496,7 +496,7 @@ if ($pageOb['msgcount']) {
     $use_trash = $prefs->getValue('use_trash');
 
     /* Prepare the navbar template. */
-    $n_template = new IMP_Template();
+    $n_template = new Horde_Template();
     $n_template->setOption('gettext', true);
     $n_template->set('id', 1);
     $n_template->set('sessiontag', Horde_Util::formInput());
@@ -531,7 +531,7 @@ if ($pageOb['msgcount']) {
     echo $n_template->fetch(IMP_TEMPLATES . '/mailbox/navbar.html');
 
     /* Prepare the actions template. */
-    $a_template = new IMP_Template();
+    $a_template = new Horde_Template();
     if (!$readonly) {
         $del_class = ($use_trash && (($imp_mbox['mailbox'] == (IMP::folderPref($prefs->getValue('trash_folder'), true))) || !is_null($vtrash)))
             ? 'permdeleteAction'
@@ -677,7 +677,7 @@ if ($pageOb['msgcount']) {
     }
 
     /* Prepare the message headers template. */
-    $mh_template = new IMP_Template();
+    $mh_template = new Horde_Template();
     $mh_template->setOption('gettext', true);
     $mh_template->set('check_all', Horde::getAccessKeyAndTitle(_("Check _All/None")));
     $mh_template->set('form_tag', true);
@@ -711,7 +711,7 @@ while (list(,$ob) = each($mbox_info['overview'])) {
             $folder_link = Horde::url(Horde_Util::addParameter('mailbox.php', 'mailbox', $ob['mailbox']));
             $folder_link = Horde::link($folder_link, sprintf(_("View messages in %s"), IMP::displayFolder($ob['mailbox'])), 'smallheader') . IMP::displayFolder($ob['mailbox']) . '</a>';
             if (is_null($search_template)) {
-                $search_template = new IMP_Template();
+                $search_template = new Horde_Template();
             }
             $search_template->set('lastMbox', $lastMbox);
             $search_template->set('folder_link', $folder_link);
@@ -860,7 +860,7 @@ while (list(,$ob) = each($mbox_info['overview'])) {
 _outputSummaries($msgs, $lastMbox);
 
 /* Prepare the message footers template. */
-$mf_template = new IMP_Template();
+$mf_template = new Horde_Template();
 $mf_template->set('page', $pageOb['page']);
 echo $mf_template->fetch(IMP_TEMPLATES . '/mailbox/message_footers.html');
 
index 1f977d9..b76162d 100644 (file)
@@ -422,7 +422,7 @@ if (!IMP::$printMode) {
     }
 
     /* Prepare the navbar top template. */
-    $t_template = new IMP_Template();
+    $t_template = new Horde_Template();
     $t_template->set('message_url', $message_url);
     $t_template->set('form_input', Horde_Util::formInput());
     $t_template->set('mailbox', htmlspecialchars($imp_mbox['mailbox']));
@@ -435,7 +435,7 @@ if (!IMP::$printMode) {
     $t_template->set('message_token', $message_token);
 
     /* Prepare the navbar navigate template. */
-    $n_template = new IMP_Template();
+    $n_template = new Horde_Template();
     $n_template->setOption('gettext', true);
     $n_template->set('readonly', $readonly);
     $n_template->set('usepop', $use_pop);
@@ -473,7 +473,7 @@ if (!IMP::$printMode) {
     }
 
     /* Prepare the navbar actions template. */
-    $a_template = new IMP_Template();
+    $a_template = new Horde_Template();
     $a_template->setOption('gettext', true);
     $a_template->set('readonly', $readonly);
     $compose_params = array('index' => $index, 'identity' => $identity, 'thismailbox' => $mailbox_name);
@@ -569,7 +569,7 @@ $hdrs = array();
 $i = 1;
 
 /* Prepare the main message template. */
-$m_template = new IMP_Template();
+$m_template = new Horde_Template();
 foreach ($display_headers as $head => $val) {
     $hdrs[] = array('name' => $basic_headers[$head], 'val' => $val, 'i' => (++$i % 2));
 }
index e83023f..ccec617 100644 (file)
@@ -26,7 +26,7 @@ function _importKeyDialog($target)
     require IMP_TEMPLATES . '/common-header.inc';
     IMP::status();
 
-    $t = new IMP_Template();
+    $t = new Horde_Template();
     $t->setOption('gettext', true);
     $t->set('selfurl', Horde::applicationUrl('pgp.php'));
     $t->set('broken_mp_form', $GLOBALS['browser']->hasQuirk('broken_multipart_form'));
@@ -314,7 +314,7 @@ $chunk = Horde_Util::nonInputVar('chunk');
 Prefs_UI::generateHeader('pgp', $chunk);
 
 /* If PGP preference not active, do NOT show PGP Admin screen. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 if ($prefs->getValue('use_pgp')) {
     Horde::addScriptFile('prototype.js', 'horde', true);
index d619ae7..9a9b512 100644 (file)
@@ -81,7 +81,7 @@ $description = ($total_num == 0)
     ? _("No Messages")
     : sprintf(_("%u of %u messages in %s unread."), $unseen_num, $total_num, IMP::getLabel($mailbox));
 
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->set('charset', Horde_Nls::getCharset());
 $t->set('xsl', $registry->get('themesuri') . '/feed-rss.xsl');
 $t->set('pubDate', htmlspecialchars(date('r')));
index 2e4ec53..41ca2a7 100644 (file)
@@ -36,7 +36,7 @@ case 'save_image':
 }
 
 /* Build the template. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('action', Horde::applicationUrl('saveimage.php'));
 $t->set('id', htmlspecialchars($id));
index 08ba910..b87d674 100644 (file)
@@ -140,7 +140,7 @@ if (!$conf['user']['allow_folders']) {
 }
 
 /* Prepare the search template. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 
 $t->set('action', Horde::applicationUrl('search.php'));
index 8ebe52e..141624f 100644 (file)
@@ -16,7 +16,7 @@ function _importKeyDialog($target)
     require IMP_TEMPLATES . '/common-header.inc';
     IMP::status();
 
-    $t = new IMP_Template();
+    $t = new Horde_Template();
     $t->setOption('gettext', true);
     $t->set('selfurl', Horde::applicationUrl('smime.php'));
     $t->set('broken_mp_form', $GLOBALS['browser']->hasQuirk('broken_multipart_form'));
@@ -242,7 +242,7 @@ try {
 }
 
 /* If S/MIME preference not active, do NOT show S/MIME Admin screen. */
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('use_smime_help', Horde_Help::link('imp', 'smime-overview'));
 if ($openssl_check && $prefs->getValue('use_smime')) {
index 4b5bddc..f4ede20 100644 (file)
@@ -105,7 +105,7 @@ $app = 'imp';
 $chunk = Horde_Util::nonInputVar('chunk');
 Prefs_UI::generateHeader(null, $chunk);
 
-$t = new IMP_Template();
+$t = new Horde_Template();
 $t->setOption('gettext', true);
 $t->set('action', Horde::selfUrl());
 $t->set('forminput', Horde_Util::formInput());
index d58e813..f44203c 100644 (file)
@@ -141,7 +141,7 @@ foreach ($loop_array as $mbox => $idxlist) {
 $imp_message = IMP_Message::singleton();
 $imp_message->flag(array('\\seen'), $loop_array);
 
-$template = new IMP_Template();
+$template = new Horde_Template();
 $template->setOption('gettext', true);
 $template->set(
     'subject',
index 284a56b..424a1f0 100644 (file)
@@ -301,7 +301,7 @@ if (count($filter_list) == 0) {
     }
 
     /* Output the template. */
-    $template = new Ingo_Template();
+    $template = new Horde_Template();
     $template->set('down_img', $down_img);
     $template->set('up_img', $up_img);
     $template->set('filter', $display, true);
diff --git a/ingo/lib/Template.php b/ingo/lib/Template.php
deleted file mode 100644 (file)
index 71effba..0000000
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-/**
- * Horde Template system. Adapted from bTemplate by Brian Lozier
- * <brian@massassi.net>.
- *
- * Horde_Template provides a basic template engine with tags, loops,
- * and if conditions. However, it is also a simple interface with
- * several essential functions: set(), fetch(), and
- * parse(). Subclasses or decorators can implement (or delegate) these
- * three methods, plus the options api, and easily implement other
- * template engines (PHP code, XSLT, etc.) without requiring usage
- * changes.
- *
- * Compilation code adapted from code written by Bruno Pedro <bpedro@ptm.pt>.
- *
- * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @author  Michael Slusarz <slusarz@horde.org>
- * @package Horde_Template
- */
-
-/** The identifier to use for memory-only templates. */
-define('INGO_TEMPLATE_STRING', '**string');
-
-class Ingo_Template {
-
-    /**
-     * The Horde_Cache object to use.
-     *
-     * @var Horde_Cache
-     */
-    var $_cache;
-
-    /**
-     * Option values.
-     *
-     * @var array
-     */
-    var $_options = array();
-
-    /**
-     * Directory that templates should be read from.
-     *
-     * @var string
-     */
-    var $_basepath = '';
-
-    /**
-     * Tag (scalar) values.
-     *
-     * @var array
-     */
-    var $_scalars = array();
-
-    /**
-     * Loop tag values.
-     *
-     * @var array
-     */
-    var $_arrays = array();
-
-    /**
-     * Path to template source.
-     *
-     * @var string
-     */
-    var $_templateFile = null;
-
-    /**
-     * Template source.
-     *
-     * @var string
-     */
-    var $_template = null;
-
-    /**
-     * Foreach variable mappings.
-     *
-     * @var array
-     */
-    var $_foreachMap = array();
-
-    /**
-     * Foreach variable incrementor.
-     *
-     * @var integer
-     */
-    var $_foreachVar = 0;
-
-    /**
-     * preg_match() cache.
-     *
-     * @var array
-     */
-    var $_pregcache = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $basepath  The directory where templates are read from.
-     */
-    function Ingo_Template($basepath = null)
-    {
-        if (!is_null($basepath)) {
-            $this->_basepath = $basepath;
-        }
-
-        if (!empty($GLOBALS['conf']['cache']['driver'])) {
-            require_once 'Horde/Cache.php';
-            $this->_cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver']));
-        }
-
-        // DEBUGGING
-        $this->setOption('forcecompile', true);
-    }
-
-    /**
-     * Sets an option.
-     * Currently available options are:
-     * <pre>
-     * 'debug' - Output debugging information to screen
-     * 'forcecompile' - Force a compilation on every page load
-     * 'gettext' - Activate gettext detection
-     * <pre>
-     *
-     * @param string $option  The option name.
-     * @param mixed $val      The option's value.
-     */
-    function setOption($option, $val)
-    {
-        $this->_options[$option] = $val;
-    }
-
-    /**
-     * Set the template contents to a string.
-     *
-     * @param string $template  The template text.
-     */
-    function setTemplate($template)
-    {
-        $this->_template = $template;
-        $this->_parse();
-        $this->_templateFile = INGO_TEMPLATE_STRING;
-    }
-
-    /**
-     * Returns an option's value.
-     *
-     * @param string $option  The option name.
-     *
-     * @return mixed  The option's value.
-     */
-    function getOption($option)
-    {
-        return isset($this->_options[$option]) ? $this->_options[$option] : null;
-    }
-
-    /**
-     * Sets a tag, loop, or if variable.
-     *
-     * @param string|array $tag   Either the tag name or a hash with tag names
-     *                            as keys and tag values as values.
-     * @param mixed        $var   The value to replace the tag with.
-     */
-    function set($tag, $var)
-    {
-        if (is_array($tag)) {
-            foreach ($tag as $tTag => $tVar) {
-                $this->set($tTag, $tVar);
-            }
-        } elseif (is_array($var) || is_object($var)) {
-            $this->_arrays[$tag] = $var;
-        } else {
-            $this->_scalars[$tag] = $var;
-        }
-    }
-
-    /**
-     * Returns the value of a tag or loop.
-     *
-     * @param string $tag  The tag name.
-     *
-     * @return mixed  The tag value or null if the tag hasn't been set yet.
-     */
-    function get($tag)
-    {
-        if (isset($this->_arrays[$tag])) {
-            return $this->_arrays[$tag];
-        }
-        if (isset($this->_scalars[$tag])) {
-            return $this->_scalars[$tag];
-        }
-        return null;
-    }
-
-    /**
-     * Fetches a template from the specified file and return the parsed
-     * contents.
-     *
-     * @param string $filename  The file to fetch the template from.
-     *
-     * @return string  The parsed template.
-     */
-    function fetch($filename = null)
-    {
-        $file = $this->_basepath . $filename;
-        $force = $this->getOption('forcecompile');
-
-        if (!is_null($filename) && ($file != $this->_templateFile)) {
-            $this->_template = $this->_templateFile = null;
-        }
-
-        /* First, check for a cached compiled version. */
-        if (!$force && is_null($this->_template) && isset($this->_cache)) {
-            $cacheid = 'horde_template|' . filemtime($file) . '|' . $file;
-            $this->_template = $this->_cache->get($cacheid, 0);
-            if ($this->_template === false) {
-                $this->_template = null;
-            }
-        }
-
-        /* Parse and compile the template. */
-        if ($force || is_null($this->_template)) {
-            $this->_template = str_replace("\n", " \n", file_get_contents($file));
-            $this->_parse();
-            if (isset($cacheid) &&
-                !$this->_cache->set($cacheid, $this->_template)) {
-                Horde::logMessage(sprintf(_("Could not save the compiled template file '%s'."), $file), __FILE__, __LINE__, PEAR_LOG_ERR);
-            }
-        }
-
-        $this->_templateFile = $file;
-
-        /* Template debugging. */
-        if ($this->getOption('debug')) {
-            echo '<pre>' . htmlspecialchars($this->_template) . '</pre>';
-        }
-
-        return $this->parse();
-    }
-
-    /**
-     * Parses all variables/tags in the template.
-     *
-     * @param string $contents  The unparsed template.
-     *
-     * @return string  The parsed template.
-     */
-    function parse($contents = null)
-    {
-        if (!is_null($contents)) {
-            $this->setTemplate(str_replace("\n", " \n", $contents));
-        }
-
-        /* Evaluate the compiled template and return the output. */
-        ob_start();
-        eval('?>' . $this->_template);
-        return str_replace(" \n", "\n", ob_get_clean());
-    }
-
-    /**
-     * Parses all variables/tags in the template.
-     */
-    function _parse()
-    {
-        // Escape XML instructions.
-        $this->_template = preg_replace('/\?>|<\?/',
-                                        '<?php echo \'$0\' ?>',
-                                        $this->_template);
-
-        // Parse gettext tags, if the option is enabled.
-        if ($this->getOption('gettext')) {
-            $this->_parseGettext();
-        }
-
-        // Process ifs.
-        $this->_parseIf();
-
-        // Process loops and arrays.
-        $this->_parseLoop();
-
-        // Process base scalar tags.  Needs to be after _parseLoop() as we
-        // rely on _foreachMap().
-        $this->_parseTags();
-
-        // Finally, process any associative array scalar tags.
-        $this->_parseAssociativeTags();
-    }
-
-    /**
-     * Parses gettext tags.
-     *
-     * @access private
-     */
-    function _parseGettext()
-    {
-        if (preg_match_all("/<gettext>(.+?)<\/gettext>/s", $this->_template, $matches, PREG_SET_ORDER)) {
-            $replace = array();
-            foreach ($matches as $val) {
-                $replace[$val[0]] = '<?php echo _(\'' . str_replace("'", "\\'", $val[1]) . '\'); ?>';
-            }
-            $this->_doReplace($replace);
-        }
-    }
-
-    /**
-     * Parses 'if' statements.
-     *
-     * @access private
-     *
-     * @param string $key  The key prefix to parse.
-     */
-    function _parseIf($key = null)
-    {
-        $replace = array();
-
-        foreach ($this->_doSearch('if', $key) as $val) {
-            $replace[$val[0]] = '<?php if (!empty(' . $this->_generatePHPVar('scalars', $val[1]) . ') || !empty(' . $this->_generatePHPVar('arrays', $val[1]) . ')): ?>';
-            $replace[$val[2]] = '<?php endif; ?>';
-
-            // Check for else statement.
-            foreach ($this->_doSearch('else', $key) as $val2) {
-                $replace[$val2[0]] = '<?php else: ?>';
-                $replace[$val2[2]] = '';
-            }
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Parses the given array for any loops or other uses of the array.
-     *
-     * @access private
-     *
-     * @param string $key  The key prefix to parse.
-     */
-    function _parseLoop($key = null)
-    {
-        $replace = array();
-
-        foreach ($this->_doSearch('loop', $key) as $val) {
-            $divider = null;
-
-            // See if we have a divider.
-            if (preg_match("/<divider:" . $val[1] . ">(.*)<\/divider:" . $val[1] . ">/sU", $this->_template, $m)) {
-                $divider = $m[1];
-                $replace[$m[0]] = '';
-            }
-
-            if (!isset($this->_foreachMap[$val[1]])) {
-                $this->_foreachMap[$val[1]] = ++$this->_foreachVar;
-            }
-            $varId = $this->_foreachMap[$val[1]];
-            $var = $this->_generatePHPVar('arrays', $val[1]);
-
-            $replace[$val[0]] = '<?php ' .
-                (($divider) ? '$i' . $varId . ' = count(' . $var . '); ' : '') .
-                'foreach (' . $this->_generatePHPVar('arrays', $val[1]) . ' as $k' . $varId . ' => $v' . $varId . '): ?>';
-            $replace[$val[2]] = '<?php ' .
-                (($divider) ? 'if (--$i' . $varId . ' != 0) { echo \'' . $divider . '\'; }; ' : '') .
-                'endforeach; ?>';
-
-            // Parse ifs.
-            $this->_parseIf($val[1]);
-
-            // Parse interior loops.
-            $this->_parseLoop($val[1]);
-
-            // Replace scalars.
-            $this->_parseTags($val[1]);
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Replaces 'tag' tags with their PHP equivalents.
-     *
-     * @access private
-     *
-     * @param string $key  The key prefix to parse.
-     */
-    function _parseTags($key = null)
-    {
-        $replace = array();
-
-        foreach ($this->_doSearch('tag', $key, true) as $val) {
-            $replace_text = '<?php ';
-            if (isset($this->_foreachMap[$val[1]])) {
-                $var = $this->_foreachMap[$val[1]];
-                $replace_text .= 'if (isset($v' . $var . ')) { echo is_array($v' . $var . ') ? $k' . $var . ' : $v' . $var . '; } else';
-            }
-            $var = $this->_generatePHPVar('scalars', $val[1]);
-            $replace[$val[0]] = $replace_text . 'if (isset(' . $var . ')) { echo ' . $var . '; } ?>';
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Parse associative tags (i.e. <tag:foo.bar />).
-     *
-     * @access private
-     */
-    function _parseAssociativeTags()
-    {
-        $replace = array();
-
-        foreach ($this->_pregcache['tag'] as $key => $val) {
-            $parts = explode('.', $val[1]);
-            $var = '$this->_arrays[\'' . $parts[0] . '\'][\'' . $parts[1] . '\']';
-            $replace[$val[0]] = '<?php if (isset(' . $var . ')) { echo ' . $var . '; } ?>';
-            unset($this->_pregcache['tag'][$key]);
-        }
-
-        $this->_doReplace($replace);
-    }
-
-    /**
-     * Output the correct PHP variable string for use in template space.
-     *
-     * @access private
-     */
-    function _generatePHPVar($tag, $key)
-    {
-        $out = '';
-
-        $a = explode('.', $key);
-        $a_count = count($a);
-
-        if ($a_count == 1) {
-            switch ($tag) {
-            case 'arrays':
-                $out = '$this->_arrays';
-                break;
-
-            case 'scalars':
-                $out = '$this->_scalars';
-                break;
-            }
-        } else {
-            $out = '$v' . $this->_foreachMap[implode('.', array_slice($a, 0, -1))];
-        }
-
-        return $out . '[\'' . end($a) . '\']';
-    }
-
-    /**
-     * TODO
-     *
-     * @access private
-     */
-    function _doSearch($tag, $key, $noclose = false)
-    {
-        $out = array();
-        $level = (is_null($key)) ? 0 : substr_count($key, '.') + 1;
-
-        if (!isset($this->_pregcache[$key])) {
-            $regex = ($noclose) ?
-                "/<" . $tag . ":(.+?)\s\/>/" :
-                "/<" . $tag . ":([^>]+)>/";
-            preg_match_all($regex, $this->_template, $this->_pregcache[$tag], PREG_SET_ORDER);
-        }
-
-        foreach ($this->_pregcache[$tag] as $pkey => $val) {
-            $val_level = substr_count($val[1], '.');
-            $add = false;
-            if (is_null($key)) {
-                $add = !$val_level;
-            } else {
-                $add = (($val_level == $level) &&
-                        (strpos($val[1], $key . '.') === 0));
-            }
-            if ($add) {
-                if (!$noclose) {
-                    $val[2] = '</' . $tag . ':' . $val[1] . '>';
-                }
-                $out[] = $val;
-                unset($this->_pregcache[$tag][$pkey]);
-            }
-        }
-
-        return $out;
-    }
-
-    /**
-     * TODO
-     *
-     * @access private
-     */
-    function _doReplace($replace)
-    {
-        if (empty($replace)) {
-            return;
-        }
-
-        $search = array();
-
-        foreach (array_keys($replace) as $val) {
-            $search[] = '/' . preg_quote($val, '/') . '/';
-        }
-
-        $this->_template = preg_replace($search, array_values($replace), $this->_template);
-    }
-
-}