[pLog-svn] r2881 - in plog/trunk/class/template/smarty: . core plugins

oscar at devel.lifetype.net oscar at devel.lifetype.net
Wed Feb 1 17:25:03 GMT 2006


Author: oscar
Date: 2006-02-01 17:25:02 +0000 (Wed, 01 Feb 2006)
New Revision: 2881

Added:
   plog/trunk/class/template/smarty/core/
   plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php
   plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php
   plog/trunk/class/template/smarty/core/core.create_dir_structure.php
   plog/trunk/class/template/smarty/core/core.display_debug_console.php
   plog/trunk/class/template/smarty/core/core.get_include_path.php
   plog/trunk/class/template/smarty/core/core.get_microtime.php
   plog/trunk/class/template/smarty/core/core.get_php_resource.php
   plog/trunk/class/template/smarty/core/core.is_secure.php
   plog/trunk/class/template/smarty/core/core.is_trusted.php
   plog/trunk/class/template/smarty/core/core.load_plugins.php
   plog/trunk/class/template/smarty/core/core.load_resource_plugin.php
   plog/trunk/class/template/smarty/core/core.process_cached_inserts.php
   plog/trunk/class/template/smarty/core/core.process_compiled_include.php
   plog/trunk/class/template/smarty/core/core.read_cache_file.php
   plog/trunk/class/template/smarty/core/core.rm_auto.php
   plog/trunk/class/template/smarty/core/core.rmdir.php
   plog/trunk/class/template/smarty/core/core.run_insert_handler.php
   plog/trunk/class/template/smarty/core/core.smarty_include_php.php
   plog/trunk/class/template/smarty/core/core.write_cache_file.php
   plog/trunk/class/template/smarty/core/core.write_compiled_include.php
   plog/trunk/class/template/smarty/core/core.write_compiled_resource.php
   plog/trunk/class/template/smarty/core/core.write_file.php
Removed:
   plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php
   plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php
   plog/trunk/class/template/smarty/core/core.create_dir_structure.php
   plog/trunk/class/template/smarty/core/core.display_debug_console.php
   plog/trunk/class/template/smarty/core/core.get_include_path.php
   plog/trunk/class/template/smarty/core/core.get_microtime.php
   plog/trunk/class/template/smarty/core/core.get_php_resource.php
   plog/trunk/class/template/smarty/core/core.is_secure.php
   plog/trunk/class/template/smarty/core/core.is_trusted.php
   plog/trunk/class/template/smarty/core/core.load_plugins.php
   plog/trunk/class/template/smarty/core/core.load_resource_plugin.php
   plog/trunk/class/template/smarty/core/core.process_cached_inserts.php
   plog/trunk/class/template/smarty/core/core.process_compiled_include.php
   plog/trunk/class/template/smarty/core/core.read_cache_file.php
   plog/trunk/class/template/smarty/core/core.rm_auto.php
   plog/trunk/class/template/smarty/core/core.rmdir.php
   plog/trunk/class/template/smarty/core/core.run_insert_handler.php
   plog/trunk/class/template/smarty/core/core.smarty_include_php.php
   plog/trunk/class/template/smarty/core/core.write_cache_file.php
   plog/trunk/class/template/smarty/core/core.write_compiled_include.php
   plog/trunk/class/template/smarty/core/core.write_compiled_resource.php
   plog/trunk/class/template/smarty/core/core.write_file.php
   plog/trunk/class/template/smarty/internals/
   plog/trunk/class/template/smarty/plugins/modifier.stars.php
   plog/trunk/class/template/smarty/plugins/modifier.substr.php
   plog/trunk/class/template/smarty/plugins/modifier.utf8_truncate.php
Modified:
   plog/trunk/class/template/smarty/Config_File.class.php
   plog/trunk/class/template/smarty/Smarty.class.php
   plog/trunk/class/template/smarty/Smarty_Compiler.class.php
   plog/trunk/class/template/smarty/debug.tpl
   plog/trunk/class/template/smarty/plugins/block.textformat.php
   plog/trunk/class/template/smarty/plugins/compiler.assign.php
   plog/trunk/class/template/smarty/plugins/function.assign_debug_info.php
   plog/trunk/class/template/smarty/plugins/function.config_load.php
   plog/trunk/class/template/smarty/plugins/function.counter.php
   plog/trunk/class/template/smarty/plugins/function.cycle.php
   plog/trunk/class/template/smarty/plugins/function.debug.php
   plog/trunk/class/template/smarty/plugins/function.eval.php
   plog/trunk/class/template/smarty/plugins/function.fetch.php
   plog/trunk/class/template/smarty/plugins/function.html_checkboxes.php
   plog/trunk/class/template/smarty/plugins/function.html_image.php
   plog/trunk/class/template/smarty/plugins/function.html_options.php
   plog/trunk/class/template/smarty/plugins/function.html_radios.php
   plog/trunk/class/template/smarty/plugins/function.html_select_date.php
   plog/trunk/class/template/smarty/plugins/function.html_select_time.php
   plog/trunk/class/template/smarty/plugins/function.html_table.php
   plog/trunk/class/template/smarty/plugins/function.mailto.php
   plog/trunk/class/template/smarty/plugins/function.math.php
   plog/trunk/class/template/smarty/plugins/function.popup.php
   plog/trunk/class/template/smarty/plugins/function.popup_init.php
   plog/trunk/class/template/smarty/plugins/modifier.capitalize.php
   plog/trunk/class/template/smarty/plugins/modifier.cat.php
   plog/trunk/class/template/smarty/plugins/modifier.count_characters.php
   plog/trunk/class/template/smarty/plugins/modifier.count_paragraphs.php
   plog/trunk/class/template/smarty/plugins/modifier.count_sentences.php
   plog/trunk/class/template/smarty/plugins/modifier.count_words.php
   plog/trunk/class/template/smarty/plugins/modifier.date_format.php
   plog/trunk/class/template/smarty/plugins/modifier.debug_print_var.php
   plog/trunk/class/template/smarty/plugins/modifier.default.php
   plog/trunk/class/template/smarty/plugins/modifier.escape.php
   plog/trunk/class/template/smarty/plugins/modifier.indent.php
   plog/trunk/class/template/smarty/plugins/modifier.lower.php
   plog/trunk/class/template/smarty/plugins/modifier.nl2br.php
   plog/trunk/class/template/smarty/plugins/modifier.regex_replace.php
   plog/trunk/class/template/smarty/plugins/modifier.replace.php
   plog/trunk/class/template/smarty/plugins/modifier.spacify.php
   plog/trunk/class/template/smarty/plugins/modifier.string_format.php
   plog/trunk/class/template/smarty/plugins/modifier.strip.php
   plog/trunk/class/template/smarty/plugins/modifier.strip_tags.php
   plog/trunk/class/template/smarty/plugins/modifier.truncate.php
   plog/trunk/class/template/smarty/plugins/modifier.upper.php
   plog/trunk/class/template/smarty/plugins/modifier.wordwrap.php
   plog/trunk/class/template/smarty/plugins/outputfilter.trimwhitespace.php
   plog/trunk/class/template/smarty/plugins/shared.escape_special_chars.php
   plog/trunk/class/template/smarty/plugins/shared.make_timestamp.php
Log:
reverted to the previous version of smarty, we cannot accept the change of not accepting relative paths nor I have the time to debug it. If somebody wants to work on this, please do not commit until things work the way they do in the current version of smarty.


Modified: plog/trunk/class/template/smarty/Config_File.class.php
===================================================================
--- plog/trunk/class/template/smarty/Config_File.class.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/Config_File.class.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -18,14 +18,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * @link http://smarty.php.net/
- * @version 2.6.12
- * @copyright Copyright: 2001-2005 New Digital Group, Inc.
+ * @version 2.6.2
+ * @copyright Copyright: 2001-2004 ispi of Lincoln, Inc.
  * @author Andrei Zmievski <andrei at php.net>
  * @access public
  * @package Smarty
  */
 
-/* $Id: Config_File.class.php,v 1.83 2005/12/14 14:53:55 mohrt Exp $ */
+/* $Id: Config_File.class.php,v 1.2 2004/02/20 15:52:24 phunkphorce Exp $ */
 
 /**
  * Config file reading class
@@ -105,7 +105,7 @@
      * @param string $var_name (optional) variable to get info for
      * @return string|array a value or array of values
      */
-    function get($file_name, $section_name = NULL, $var_name = NULL)
+    function &get($file_name, $section_name = NULL, $var_name = NULL)
     {
         if (empty($file_name)) {
             $this->_trigger_error_msg('Empty config file name');
@@ -240,7 +240,7 @@
             return false;
         }
 
-        $contents = ($size = filesize($config_file)) ? fread($fp, $size) : '';
+        $contents = fread($fp, filesize($config_file));
         fclose($fp);
 
         $this->_config_data[$config_file] = $this->parse_contents($contents);
@@ -285,9 +285,9 @@
             $line = $lines[$i];
             if (empty($line)) continue;
 
-            if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) {
+            if ( $line{0} == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) {
                 /* section found */
-                if (substr($match[1], 0, 1) == '.') {
+                if ($match[1]{0} == '.') {
                     /* hidden section */
                     if ($this->read_hidden) {
                         $section_name = substr($match[1], 1);
@@ -347,7 +347,7 @@
      */
     function _set_config_var(&$container, $var_name, $var_value, $booleanize)
     {
-        if (substr($var_name, 0, 1) == '.') {
+        if ($var_name{0} == '.') {
             if (!$this->read_hidden)
                 return;
             else

Modified: plog/trunk/class/template/smarty/Smarty.class.php
===================================================================
--- plog/trunk/class/template/smarty/Smarty.class.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/Smarty.class.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,6 +1,12 @@
 <?php
 
 /**
+ * WARNING: This smarty class has been modified by me to improve a couple of things so that
+ * they would work better in plog. Do not just update them like that!!!
+ * look in lines 1247 and 1248
+ */
+
+/**
  * Project:     Smarty: the PHP compiling template engine
  * File:        Smarty.class.php
  *
@@ -23,14 +29,14 @@
  * smarty-general-subscribe at lists.php.net
  *
  * @link http://smarty.php.net/
- * @copyright 2001-2005 New Digital Group, Inc.
- * @author Monte Ohrt <monte at ohrt dot com>
+ * @copyright 2001-2004 ispi of Lincoln, Inc.
+ * @author Monte Ohrt <monte at ispi.net>
  * @author Andrei Zmievski <andrei at php.net>
  * @package Smarty
- * @version 2.6.12
+ * @version 2.6.2
  */
 
-/* $Id: Smarty.class.php,v 1.523 2005/12/31 19:17:04 messju Exp $ */
+/* $Id: Smarty.class.php,v 1.2 2004/02/20 15:52:24 phunkphorce Exp $ */
 
 /**
  * DIR_SEP isn't used anymore, but third party apps might
@@ -49,17 +55,13 @@
     define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 }
 
-if (!defined('SMARTY_CORE_DIR')) {
-    define('SMARTY_CORE_DIR', SMARTY_DIR . 'internals' . DIRECTORY_SEPARATOR);
-}
-
 define('SMARTY_PHP_PASSTHRU',   0);
 define('SMARTY_PHP_QUOTE',      1);
 define('SMARTY_PHP_REMOVE',     2);
 define('SMARTY_PHP_ALLOW',      3);
 
 /**
- * @package Smarty
+ * \ingroup Template
  */
 class Smarty
 {
@@ -185,7 +187,7 @@
      *
      * @var boolean
      */
-    var $cache_modified_check = false;
+    var $cache_modified_check = true;
 
     /**
      * This determines how Smarty handles "<?php ... ?>" tags in templates.
@@ -232,11 +234,11 @@
                                                                'isset', 'empty',
                                                                'count', 'sizeof',
                                                                'in_array', 'is_array',
-                                                               'true', 'false', 'null'),
+                                                               'true','false'),
                                     'INCLUDE_ANY'     => false,
                                     'PHP_TAGS'        => false,
                                     'MODIFIER_FUNCS'  => array('count'),
-                                    'ALLOW_CONSTANTS'  => false
+                                    'ALLOW_CONSTANTS' => false
                                    );
 
     /**
@@ -268,7 +270,7 @@
      *
      * @var string
      */
-    var $request_vars_order    = 'EGPCS';
+    var $request_vars_order    = "EGPCS";
 
     /**
      * Indicates wether $HTTP_*_VARS[] (request_use_auto_globals=false)
@@ -404,6 +406,13 @@
  * @access private
  */
     /**
+     * error messages. true/false
+     *
+     * @var boolean
+     */
+    var $_error_msg            = false;
+
+    /**
      * where assigned template vars are kept
      *
      * @var array
@@ -464,7 +473,7 @@
      *
      * @var string
      */
-    var $_version              = '2.6.12';
+    var $_version              = '2.6.2';
 
     /**
      * current template inclusion depth
@@ -914,7 +923,7 @@
         switch ($type) {
             case 'output':
                 $_params = array('plugins' => array(array($type . 'filter', $name, null, null, false)));
-                require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
                 smarty_core_load_plugins($_params, $this);
                 break;
 
@@ -941,10 +950,10 @@
         if (!isset($compile_id))
             $compile_id = $this->compile_id;
 
-        if (!isset($tpl_file))
-            $compile_id = null;
+    if (!isset($tpl_file))
+        $compile_id = null;
 
-        $_auto_id = $this->_get_auto_id($cache_id, $compile_id);
+    $_auto_id = $this->_get_auto_id($cache_id, $compile_id);
 
         if (!empty($this->cache_handler_func)) {
             return call_user_func_array($this->cache_handler_func,
@@ -954,7 +963,7 @@
                             'auto_source' => $tpl_file,
                             'auto_id' => $_auto_id,
                             'exp_time' => $exp_time);
-            require_once(SMARTY_CORE_DIR . 'core.rm_auto.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rm_auto.php');
             return smarty_core_rm_auto($_params, $this);
         }
 
@@ -969,7 +978,18 @@
      */
     function clear_all_cache($exp_time = null)
     {
-        return $this->clear_cache(null, null, null, $exp_time);
+        if (!empty($this->cache_handler_func)) {
+            $dummy = null;
+            call_user_func_array($this->cache_handler_func,
+                           array('clear', &$this, &$dummy, null, null, null, $exp_time));
+        } else {
+            $_params = array('auto_base' => $this->cache_dir,
+                            'auto_source' => null,
+                            'auto_id' => null,
+                            'exp_time' => $exp_time);
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rm_auto.php');
+            return smarty_core_rm_auto($_params, $this);
+        }
     }
 
 
@@ -994,7 +1014,7 @@
             'cache_id' => $cache_id,
             'compile_id' => $compile_id
         );
-        require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php');
+        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.read_cache_file.php');
         return smarty_core_read_cache_file($_params, $this);
     }
 
@@ -1028,7 +1048,7 @@
                         'auto_id' => $compile_id,
                         'exp_time' => $exp_time,
                         'extensions' => array('.inc', '.php'));
-        require_once(SMARTY_CORE_DIR . 'core.rm_auto.php');
+        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rm_auto.php');
         return smarty_core_rm_auto($_params, $this);
     }
 
@@ -1055,12 +1075,9 @@
     {
         if(!isset($name)) {
             return $this->_tpl_vars;
-        } elseif(isset($this->_tpl_vars[$name])) {
+        }
+        if(isset($this->_tpl_vars[$name])) {
             return $this->_tpl_vars[$name];
-        } else {
-            // var non-existant, return valid reference
-            $_tmp = null;
-            return $_tmp;   
         }
     }
 
@@ -1077,10 +1094,6 @@
             return $this->_config[0]['vars'];
         } else if(isset($this->_config[0]['vars'][$name])) {
             return $this->_config[0]['vars'][$name];
-        } else {
-            // var non-existant, return valid reference
-            $_tmp = null;
-            return $_tmp;
         }
     }
 
@@ -1139,14 +1152,15 @@
                     $this->debugging = true;
                 }
             } else {
-                $this->debugging = (bool)($this->request_use_auto_globals ? @$_COOKIE['SMARTY_DEBUG'] : @$GLOBALS['HTTP_COOKIE_VARS']['SMARTY_DEBUG']);
+                $_cookie_var = $this->request_use_auto_globals ? $_COOKIE['SMARTY_DEBUG'] : $GLOBALS['HTTP_COOKIE_VARS']['SMARTY_DEBUG'];
+                $this->debugging = $_cookie_var ? true : false;
             }
         }
 
         if ($this->debugging) {
             // capture time for debugging info
             $_params = array();
-            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
             $_debug_start_time = smarty_core_get_microtime($_params, $this);
             $this->_smarty_debug_info[] = array('type'      => 'template',
                                                 'filename'  => $resource_name,
@@ -1171,20 +1185,20 @@
                 'compile_id' => $compile_id,
                 'results' => null
             );
-            require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.read_cache_file.php');
             if (smarty_core_read_cache_file($_params, $this)) {
                 $_smarty_results = $_params['results'];
-                if (!empty($this->_cache_info['insert_tags'])) {
+                if (@count($this->_cache_info['insert_tags'])) {
                     $_params = array('plugins' => $this->_cache_info['insert_tags']);
-                    require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
                     smarty_core_load_plugins($_params, $this);
                     $_params = array('results' => $_smarty_results);
-                    require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php');
+                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.process_cached_inserts.php');
                     $_smarty_results = smarty_core_process_cached_inserts($_params, $this);
                 }
-                if (!empty($this->_cache_info['cache_serials'])) {
+                if (@count($this->_cache_info['cache_serials'])) {
                     $_params = array('results' => $_smarty_results);
-                    require_once(SMARTY_CORE_DIR . 'core.process_compiled_include.php');
+                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.process_compiled_include.php');
                     $_smarty_results = smarty_core_process_compiled_include($_params, $this);
                 }
 
@@ -1194,9 +1208,9 @@
                     {
                         // capture time for debugging info
                         $_params = array();
-                        require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+                        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
                         $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time;
-                        require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
+                        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php');
                         $_smarty_results .= smarty_core_display_debug_console($_params, $this);
                     }
                     if ($this->cache_modified_check) {
@@ -1207,12 +1221,12 @@
                             && !$this->_cache_serials
                             && $_gmt_mtime == $_last_modified_date) {
                             if (php_sapi_name()=='cgi')
-                                header('Status: 304 Not Modified');
+                                header("Status: 304 Not Modified");
                             else
-                                header('HTTP/1.1 304 Not Modified');
+                                header("HTTP/1.1 304 Not Modified");
 
                         } else {
-                            header('Last-Modified: '.$_gmt_mtime);
+                            header("Last-Modified: ".$_gmt_mtime);
                             echo $_smarty_results;
                         }
                     } else {
@@ -1230,8 +1244,10 @@
                 }
             } else {
                 $this->_cache_info['template'][$resource_name] = true;
+				$timestamp = time();
+				$this->_cache_info['timestamp'] = $timestamp;					
                 if ($this->cache_modified_check && $display) {
-                    header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT');
+                    header("Last-Modified: ".gmdate('D, d M Y H:i:s', $timestamp).' GMT');
                 }
             }
         }
@@ -1277,9 +1293,9 @@
                         'cache_id' => $cache_id,
                         'compile_id' => $compile_id,
                         'results' => $_smarty_results);
-            require_once(SMARTY_CORE_DIR . 'core.write_cache_file.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_cache_file.php');
             smarty_core_write_cache_file($_params, $this);
-            require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.process_cached_inserts.php');
             $_smarty_results = smarty_core_process_cached_inserts($_params, $this);
 
             if ($this->_cache_serials) {
@@ -1298,9 +1314,9 @@
             if ($this->debugging) {
                 // capture time for debugging info
                 $_params = array();
-                require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+                require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
                 $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = (smarty_core_get_microtime($_params, $this) - $_debug_start_time);
-                require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
+                require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php');
                 echo smarty_core_display_debug_console($_params, $this);
             }
             error_reporting($_smarty_old_error_level);
@@ -1366,7 +1382,7 @@
     function _get_plugin_filepath($type, $name)
     {
         $_params = array('type' => $type, 'name' => $name);
-        require_once(SMARTY_CORE_DIR . 'core.assemble_plugin_filepath.php');
+        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.assemble_plugin_filepath.php');
         return smarty_core_assemble_plugin_filepath($_params, $this);
     }
 
@@ -1419,21 +1435,23 @@
         }
 
         $_source_content = $_params['source_content'];
+        $_resource_timestamp = $_params['resource_timestamp'];
         $_cache_include    = substr($compile_path, 0, -4).'.inc';
 
         if ($this->_compile_source($resource_name, $_source_content, $_compiled_content, $_cache_include)) {
             // if a _cache_serial was set, we also have to write an include-file:
             if ($this->_cache_include_info) {
-                require_once(SMARTY_CORE_DIR . 'core.write_compiled_include.php');
-                smarty_core_write_compiled_include(array_merge($this->_cache_include_info, array('compiled_content'=>$_compiled_content, 'resource_name'=>$resource_name)),  $this);
+                require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_include.php');
+                smarty_core_write_compiled_include(array_merge($this->_cache_include_info, array('compiled_content'=>$_compiled_content)),  $this);
             }
 
-            $_params = array('compile_path'=>$compile_path, 'compiled_content' => $_compiled_content);
-            require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php');
+            $_params = array('compile_path'=>$compile_path, 'compiled_content' => $_compiled_content, 'resource_timestamp' => $_resource_timestamp);
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_resource.php');
             smarty_core_write_compiled_resource($_params, $this);
 
             return true;
         } else {
+            $this->trigger_error($smarty_compiler->_error_msg);
             return false;
         }
 
@@ -1473,7 +1491,6 @@
         $smarty_compiler->secure_dir        = $this->secure_dir;
         $smarty_compiler->security_settings = $this->security_settings;
         $smarty_compiler->trusted_dir       = $this->trusted_dir;
-        $smarty_compiler->use_sub_dirs      = $this->use_sub_dirs;
         $smarty_compiler->_reg_objects      = &$this->_reg_objects;
         $smarty_compiler->_plugins          = &$this->_plugins;
         $smarty_compiler->_tpl_vars         = &$this->_tpl_vars;
@@ -1482,9 +1499,7 @@
         $smarty_compiler->_config            = $this->_config;
         $smarty_compiler->request_use_auto_globals  = $this->request_use_auto_globals;
 
-        if (isset($cache_include_path) && isset($this->_cache_serials[$cache_include_path])) {
-            $smarty_compiler->_cache_serial = $this->_cache_serials[$cache_include_path];
-        }
+        $smarty_compiler->_cache_serial = null;
         $smarty_compiler->_cache_include = $cache_include_path;
 
 
@@ -1539,8 +1554,6 @@
         $_params = array('resource_name' => $params['resource_name']) ;
         if (isset($params['resource_base_path']))
             $_params['resource_base_path'] = $params['resource_base_path'];
-        else
-            $_params['resource_base_path'] = $this->template_dir;
 
         if ($this->_parse_resource_name($_params)) {
             $_resource_type = $_params['resource_type'];
@@ -1591,7 +1604,7 @@
                 $this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"');
             }
         } else if ($_return && $this->security) {
-            require_once(SMARTY_CORE_DIR . 'core.is_secure.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
             if (!smarty_core_is_secure($_params, $this)) {
                 if (!$params['quiet'])
                     $this->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed');
@@ -1636,10 +1649,16 @@
         }
 
         if ($params['resource_type'] == 'file') {
-            if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $params['resource_name'])) {
+            if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $params['resource_name'])) {
                 // relative pathname to $params['resource_base_path']
                 // use the first directory where the file is found
-                foreach ((array)$params['resource_base_path'] as $_curr_path) {
+                if (isset($params['resource_base_path'])) {
+                    $_resource_base_path = (array)$params['resource_base_path'];
+                } else {
+                    $_resource_base_path = (array)$this->template_dir;
+                    $_resource_base_path[] = '.';
+                }
+                foreach ($_resource_base_path as $_curr_path) {
                     $_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
                     if (file_exists($_fullpath) && is_file($_fullpath)) {
                         $params['resource_name'] = $_fullpath;
@@ -1647,20 +1666,17 @@
                     }
                     // didn't find the file, try include_path
                     $_params = array('file_path' => $_fullpath);
-                    require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
+                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
                     if(smarty_core_get_include_path($_params, $this)) {
                         $params['resource_name'] = $_params['new_file_path'];
                         return true;
                     }
                 }
                 return false;
-            } else {
-                /* absolute path */
-                return file_exists($params['resource_name']);
             }
         } elseif (empty($this->_plugins['resource'][$params['resource_type']])) {
             $_params = array('type' => $params['resource_type']);
-            require_once(SMARTY_CORE_DIR . 'core.load_resource_plugin.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_resource_plugin.php');
             smarty_core_load_resource_plugin($_params, $this);
         }
 
@@ -1698,8 +1714,8 @@
      */
     function _dequote($string)
     {
-        if ((substr($string, 0, 1) == "'" || substr($string, 0, 1) == '"') &&
-            substr($string, -1) == substr($string, 0, 1))
+        if (($string{0} == "'" || $string{0} == '"') &&
+            $string{strlen($string)-1} == $string{0})
             return substr($string, 1, -1);
         else
             return $string;
@@ -1707,23 +1723,50 @@
 
 
     /**
-     * read in a file
+     * read in a file from line $start for $lines.
+     * read the entire file if $start and $lines are null.
      *
      * @param string $filename
+     * @param integer $start
+     * @param integer $lines
      * @return string
      */
-    function _read_file($filename)
+    function _read_file($filename, $start=null, $lines=null)
     {
-        if ( file_exists($filename) && ($fd = @fopen($filename, 'rb')) ) {
-            $contents = '';
-            while (!feof($fd)) {
-                $contents .= fread($fd, 8192);
-            }
-            fclose($fd);
-            return $contents;
-        } else {
+	if( !is_readable($filename))
+		return false;
+
+        if (!($fd = @fopen($filename, 'r'))) {
             return false;
         }
+        flock($fd, LOCK_SH);
+        if ($start == null && $lines == null) {
+            // read the entire file
+            $contents = fread($fd, filesize($filename));
+        } else {
+            if ( $start > 1 ) {
+                // skip the first lines before $start
+                for ($loop=1; $loop < $start; $loop++) {
+                    fgets($fd, 65536);
+                }
+            }
+            if ( $lines == null ) {
+                // read the rest of the file
+                while (!feof($fd)) {
+                    $contents .= fgets($fd, 65536);
+                }
+            } else {
+                // read up to $lines lines
+                for ($loop=0; $loop < $lines; $loop++) {
+                    $contents .= fgets($fd, 65536);
+                    if (feof($fd)) {
+                        break;
+                    }
+                }
+            }
+        }
+        fclose($fd);
+        return $contents;
     }
 
     /**
@@ -1739,8 +1782,17 @@
     function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null)
     {
         $_compile_dir_sep =  $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
-        $_return = $auto_base . DIRECTORY_SEPARATOR;
 
+        if(@is_dir($auto_base)) {
+            $_return = $auto_base . DIRECTORY_SEPARATOR;
+        } else {
+            // auto_base not found, try include_path
+            $_params = array('file_path' => $auto_base);
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
+            smarty_core_get_include_path($_params, $this);
+            $_return = isset($_params['new_file_path']) ? $_params['new_file_path'] . DIRECTORY_SEPARATOR : null;
+        }
+
         if(isset($auto_id)) {
             // make auto_id safe for directory names
             $auto_id = str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id)));
@@ -1751,12 +1803,11 @@
         if(isset($auto_source)) {
             // make source name safe for filename
             $_filename = urlencode(basename($auto_source));
-            $_crc32 = sprintf('%08X', crc32($auto_source));
+            $_crc32 = crc32($auto_source) . $_compile_dir_sep;
             // prepend %% to avoid name conflicts with
             // with $params['auto_id'] names
-            $_crc32 = substr($_crc32, 0, 2) . $_compile_dir_sep .
-                      substr($_crc32, 0, 3) . $_compile_dir_sep . $_crc32;
-            $_return .= '%%' . $_crc32 . '%%' . $_filename;
+            $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32;
+            $_return .= $_crc32 . $_filename;
         }
 
         return $_return;
@@ -1772,9 +1823,11 @@
     {
         if(isset($exp_time)) {
             if(time() - @filemtime($resource) >= $exp_time) {
+	            if( is_readable($resource)) return false;
                 return @unlink($resource);
             }
         } else {
+	        if( is_readable($resource)) return false;
             return @unlink($resource);
         }
     }
@@ -1848,7 +1901,7 @@
     {
         if ($this->debugging) {
             $_params = array();
-            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
             $debug_start_time = smarty_core_get_microtime($_params, $this);
             $this->_smarty_debug_info[] = array('type'      => 'template',
                                                   'filename'  => $params['smarty_include_tpl_file'],
@@ -1879,7 +1932,7 @@
         if ($this->debugging) {
             // capture time for debugging info
             $_params = array();
-            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
             $this->_smarty_debug_info[$included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $debug_start_time;
         }
 
@@ -1899,7 +1952,7 @@
 
         if ($this->_cache_including) {
             /* return next set of cache_attrs */
-            $_return = current($_cache_attrs);
+            $_return =& current($_cache_attrs);
             next($_cache_attrs);
             return $_return;
 

Modified: plog/trunk/class/template/smarty/Smarty_Compiler.class.php
===================================================================
--- plog/trunk/class/template/smarty/Smarty_Compiler.class.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/Smarty_Compiler.class.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -19,18 +19,18 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * @link http://smarty.php.net/
- * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Monte Ohrt <monte at ispi.net>
  * @author Andrei Zmievski <andrei at php.net>
- * @version 2.6.12
- * @copyright 2001-2005 New Digital Group, Inc.
+ * @version 2.6.2
+ * @copyright 2001-2004 ispi of Lincoln, Inc.
  * @package Smarty
  */
 
-/* $Id: Smarty_Compiler.class.php,v 1.376 2006/01/15 19:29:45 messju Exp $ */
+/* $Id: Smarty_Compiler.class.php,v 1.2 2004/02/20 15:52:24 phunkphorce Exp $ */
 
 /**
  * Template compiling class
- * @package Smarty
+ * \ingroup Template
  */
 class Smarty_Compiler extends Smarty {
 
@@ -49,9 +49,7 @@
     var $_si_qstr_regexp        =   null;
     var $_qstr_regexp           =   null;
     var $_func_regexp           =   null;
-    var $_reg_obj_regexp        =   null;
     var $_var_bracket_regexp    =   null;
-    var $_num_const_regexp      =   null;
     var $_dvar_guts_regexp      =   null;
     var $_dvar_regexp           =   null;
     var $_cvar_regexp           =   null;
@@ -99,12 +97,6 @@
         // [$bar]
         $this->_var_bracket_regexp = '\[\$?[\w\.]+\]';
 
-        // matches numerical constants
-        // 30
-        // -12
-        // 13.22
-        $this->_num_const_regexp = '(?:\-?\d+(?:\.\d+)?)';
-
         // matches $ vars (not objects):
         // $foo
         // $foo.bar
@@ -113,10 +105,11 @@
         // $foo[$bar]
         // $foo[5][blah]
         // $foo[5].bar[$foobar][4]
-        $this->_dvar_math_regexp = '(?:[\+\*\/\%]|(?:-(?!>)))';
+        $this->_dvar_math_regexp = '[\+\-\*\/\%]';
         $this->_dvar_math_var_regexp = '[\$\w\.\+\-\*\/\%\d\>\[\]]';
+        $this->_dvar_num_var_regexp = '\-?\d+(?:\.\d+)?' . $this->_dvar_math_var_regexp;
         $this->_dvar_guts_regexp = '\w+(?:' . $this->_var_bracket_regexp
-                . ')*(?:\.\$?\w+(?:' . $this->_var_bracket_regexp . ')*)*(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?';
+                . ')*(?:\.\$?\w+(?:' . $this->_var_bracket_regexp . ')*)*(?:' . $this->_dvar_math_regexp . '(?:\-?\d+(?:\.\d+)?|' . $this->_dvar_math_var_regexp . ')*)?';
         $this->_dvar_regexp = '\$' . $this->_dvar_guts_regexp;
 
         // matches config vars:
@@ -141,7 +134,7 @@
         // "text"
         $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')';
 
-        // matches valid object call (one level of object nesting allowed in parameters):
+        // matches valid object call (no objects allowed in parameters):
         // $foo->bar
         // $foo->bar()
         // $foo->bar("text")
@@ -149,20 +142,13 @@
         // $foo->bar($foo, "foo")
         // $foo->bar->foo()
         // $foo->bar->foo->bar()
-        // $foo->bar($foo->bar)
-        // $foo->bar($foo->bar())
-        // $foo->bar($foo->bar($blah,$foo,44,"foo",$foo[0].bar))
         $this->_obj_ext_regexp = '\->(?:\$?' . $this->_dvar_guts_regexp . ')';
-        $this->_obj_restricted_param_regexp = '(?:'
-                . '(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')(?:' . $this->_obj_ext_regexp . '(?:\((?:(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')'
-                . '(?:\s*,\s*(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . '))*)?\))?)*)';
-        $this->_obj_single_param_regexp = '(?:\w+|' . $this->_obj_restricted_param_regexp . '(?:\s*,\s*(?:(?:\w+|'
-                . $this->_var_regexp . $this->_obj_restricted_param_regexp . ')))*)';
-        $this->_obj_params_regexp = '\((?:' . $this->_obj_single_param_regexp
-                . '(?:\s*,\s*' . $this->_obj_single_param_regexp . ')*)?\)';
+        $this->_obj_params_regexp = '\((?:\w+|'
+                . $this->_var_regexp . '(?:\s*,\s*(?:(?:\w+|'
+                . $this->_var_regexp . ')))*)?\)';
         $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)';
-        $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?)';
-        
+        $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?)';
+
         // matches valid modifier syntax:
         // |foo
         // |@foo
@@ -171,7 +157,7 @@
         // |foo:"bar":$foobar
         // |foo|bar
         // |foo:$foo->bar
-        $this->_mod_regexp = '(?:\|@?\w+(?::(?:\w+|' . $this->_num_const_regexp . '|'
+        $this->_mod_regexp = '(?:\|@?\w+(?::(?>-?\w+|'
            . $this->_obj_call_regexp . '|' . $this->_avar_regexp . '|' . $this->_qstr_regexp .'))*)';
 
         // matches valid function name:
@@ -193,7 +179,7 @@
         // "text"|bar
         // $foo->bar
         $this->_param_regexp = '(?:\s*(?:' . $this->_obj_call_regexp . '|'
-           . $this->_var_regexp . '|' . $this->_num_const_regexp  . '|\w+)(?>' . $this->_mod_regexp . '*)\s*)';
+           . $this->_var_regexp  . '|\w+)(?>' . $this->_mod_regexp . '*)\s*)';
 
         // matches valid parenthesised function parameters:
         //
@@ -237,8 +223,8 @@
 
         $this->_current_file = $resource_name;
         $this->_current_line_no = 1;
-        $ldq = preg_quote($this->left_delimiter, '~');
-        $rdq = preg_quote($this->right_delimiter, '~');
+        $ldq = preg_quote($this->left_delimiter, '!');
+        $rdq = preg_quote($this->right_delimiter, '!');
 
         // run template source through prefilter functions
         if (count($this->_plugins['prefilter']) > 0) {
@@ -255,7 +241,7 @@
         }
 
         /* fetch all special blocks */
-        $search = "~{$ldq}\*(.*?)\*{$rdq}|{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}|{$ldq}\s*php\s*{$rdq}(.*?){$ldq}\s*/php\s*{$rdq}~s";
+        $search = "!{$ldq}\*(.*?)\*{$rdq}|{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}|{$ldq}\s*php\s*{$rdq}(.*?){$ldq}\s*/php\s*{$rdq}!s";
 
         preg_match_all($search, $source_content, $match,  PREG_SET_ORDER);
         $this->_folded_blocks = $match;
@@ -270,15 +256,15 @@
                                        , $source_content);
 
         /* Gather all template tags. */
-        preg_match_all("~{$ldq}\s*(.*?)\s*{$rdq}~s", $source_content, $_match);
+        preg_match_all("!{$ldq}\s*(.*?)\s*{$rdq}!s", $source_content, $_match);
         $template_tags = $_match[1];
         /* Split content by template tags to obtain non-template content. */
-        $text_blocks = preg_split("~{$ldq}.*?{$rdq}~s", $source_content);
+        $text_blocks = preg_split("!{$ldq}.*?{$rdq}!s", $source_content);
 
         /* loop through text blocks */
         for ($curr_tb = 0, $for_max = count($text_blocks); $curr_tb < $for_max; $curr_tb++) {
             /* match anything resembling php tags */
-            if (preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?php[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) {
+            if (preg_match_all('!(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?php[\"\']?)!is', $text_blocks[$curr_tb], $sp_match)) {
                 /* replace tags with placeholders to prevent recursive replacements */
                 $sp_match[1] = array_unique($sp_match[1]);
                 usort($sp_match[1], '_smarty_sort_length');
@@ -298,7 +284,7 @@
                         $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '', $text_blocks[$curr_tb]);
                     } else {
                         /* SMARTY_PHP_ALLOW, but echo non php starting tags */
-                        $sp_match[1][$curr_sp] = preg_replace('~(<\?(?!php|=|$))~i', '<?php echo \'\\1\'?>'."\n", $sp_match[1][$curr_sp]);
+                        $sp_match[1][$curr_sp] = preg_replace('%(<\?(?!php|=|$))%i', '<?php echo \'\\1\'?>'."\n", $sp_match[1][$curr_sp]);
                         $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', $sp_match[1][$curr_sp], $text_blocks[$curr_tb]);
                     }
                 }
@@ -318,50 +304,31 @@
             return;
         }
 
-        /* Reformat $text_blocks between 'strip' and '/strip' tags,
-           removing spaces, tabs and newlines. */
-        $strip = false;
-        for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) {
-            if ($compiled_tags[$i] == '{strip}') {
-                $compiled_tags[$i] = '';
-                $strip = true;
-                /* remove leading whitespaces */
-                $text_blocks[$i + 1] = ltrim($text_blocks[$i + 1]);
-            }
-            if ($strip) {
-                /* strip all $text_blocks before the next '/strip' */
-                for ($j = $i + 1; $j < $for_max; $j++) {
-                    /* remove leading and trailing whitespaces of each line */
-                    $text_blocks[$j] = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $text_blocks[$j]);
-                    if ($compiled_tags[$j] == '{/strip}') {                       
-                        /* remove trailing whitespaces from the last text_block */
-                        $text_blocks[$j] = rtrim($text_blocks[$j]);
-                    }
-                    $text_blocks[$j] = "<?php echo '" . strtr($text_blocks[$j], array("'"=>"\'", "\\"=>"\\\\")) . "'; ?>";
-                    if ($compiled_tags[$j] == '{/strip}') {
-                        $compiled_tags[$j] = "\n"; /* slurped by php, but necessary
-                                    if a newline is following the closing strip-tag */
-                        $strip = false;
-                        $i = $j;
-                        break;
-                    }
-                }
-            }
-        }
         $compiled_content = '';
 
         /* Interleave the compiled contents and text blocks to get the final result. */
         for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) {
             if ($compiled_tags[$i] == '') {
                 // tag result empty, remove first newline from following text block
-                $text_blocks[$i+1] = preg_replace('~^(\r\n|\r|\n)~', '', $text_blocks[$i+1]);
+                $text_blocks[$i+1] = preg_replace('!^(\r\n|\r|\n)!', '', $text_blocks[$i+1]);
             }
             $compiled_content .= $text_blocks[$i].$compiled_tags[$i];
         }
         $compiled_content .= $text_blocks[$i];
 
+        /* Reformat data between 'strip' and '/strip' tags, removing spaces, tabs and newlines. */
+        if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $compiled_content, $_match)) {
+            $strip_tags = $_match[0];
+            $strip_tags_modified = preg_replace("!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", '', $strip_tags);
+            $strip_tags_modified = preg_replace('![\r\n]+!m', '', $strip_tags_modified);
+            for ($i = 0, $for_max = count($strip_tags); $i < $for_max; $i++)
+                $compiled_content = preg_replace("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s",
+                                                  $this->_quote_replace($strip_tags_modified[$i]),
+                                                  $compiled_content, 1);
+        }
+
         // remove \n from the end of the file, if any
-        if (strlen($compiled_content) && (substr($compiled_content, -1) == "\n") ) {
+        if (($_len=strlen($compiled_content)) && ($compiled_content{$_len - 1} == "\n" )) {
             $compiled_content = substr($compiled_content, 0, -1);
         }
 
@@ -370,7 +337,7 @@
         }
 
         // remove unnecessary close/open tags
-        $compiled_content = preg_replace('~\?>\n?<\?php~', '', $compiled_content);
+        $compiled_content = preg_replace('!\?>\n?<\?php!', '', $compiled_content);
 
         // run compiled template through postfilter functions
         if (count($this->_plugins['postfilter']) > 0) {
@@ -396,19 +363,19 @@
             $_plugins_params = "array('plugins' => array(";
             foreach ($this->_plugin_info as $plugin_type => $plugins) {
                 foreach ($plugins as $plugin_name => $plugin_info) {
-                    $_plugins_params .= "array('$plugin_type', '$plugin_name', '" . strtr($plugin_info[0], array("'" => "\\'", "\\" => "\\\\")) . "', $plugin_info[1], ";
+                    $_plugins_params .= "array('$plugin_type', '$plugin_name', '$plugin_info[0]', $plugin_info[1], ";
                     $_plugins_params .= $plugin_info[2] ? 'true),' : 'false),';
                 }
             }
             $_plugins_params .= '))';
-            $plugins_code = "<?php require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');\nsmarty_core_load_plugins($_plugins_params, \$this); ?>\n";
+            $plugins_code = "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');\nsmarty_core_load_plugins($_plugins_params, \$this); ?>\n";
             $template_header .= $plugins_code;
             $this->_plugin_info = array();
             $this->_plugins_code = $plugins_code;
         }
 
         if ($this->_init_smarty_vars) {
-            $template_header .= "<?php require_once(SMARTY_CORE_DIR . 'core.assign_smarty_interface.php');\nsmarty_core_assign_smarty_interface(null, \$this); ?>\n";
+            $template_header .= "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.assign_smarty_interface.php');\nsmarty_core_assign_smarty_interface(null, \$this); ?>\n";
             $this->_init_smarty_vars = false;
         }
 
@@ -425,29 +392,33 @@
     function _compile_tag($template_tag)
     {
         /* Matched comment. */
-        if (substr($template_tag, 0, 1) == '*' && substr($template_tag, -1) == '*')
+        if ($template_tag{0} == '*' && $template_tag{strlen($template_tag) - 1} == '*')
             return '';
-        
+
         /* Split tag into two three parts: command, command modifiers and the arguments. */
-        if(! preg_match('~^(?:(' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp
+        if(! preg_match('/^(?:(' . $this->_obj_call_regexp . '|' . $this->_var_regexp
                 . '|\/?' . $this->_reg_obj_regexp . '|\/?' . $this->_func_regexp . ')(' . $this->_mod_regexp . '*))
                       (?:\s+(.*))?$
-                    ~xs', $template_tag, $match)) {
+                    /xs', $template_tag, $match)) {
             $this->_syntax_error("unrecognized tag: $template_tag", E_USER_ERROR, __FILE__, __LINE__);
         }
-        
+
         $tag_command = $match[1];
         $tag_modifier = isset($match[2]) ? $match[2] : null;
         $tag_args = isset($match[3]) ? $match[3] : null;
 
-        if (preg_match('~^' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '$~', $tag_command)) {
+        if (preg_match('!^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '$!', $tag_command)) {
             /* tag name is a variable or object */
-            $_return = $this->_parse_var_props($tag_command . $tag_modifier);
-            return "<?php echo $_return; ?>" . $this->_additional_newline;
+            $_return = $this->_parse_var_props($tag_command . $tag_modifier, $this->_parse_attrs($tag_args));
+            if(isset($_tag_attrs['assign'])) {
+                return "<?php \$this->assign('" . $this->_dequote($_tag_attrs['assign']) . "', $_return ); ?>\n";
+            } else {
+                return "<?php echo $_return; ?>" . $this->_additional_newline;
+            }
         }
 
         /* If the tag name is a registered object, we process it. */
-        if (preg_match('~^\/?' . $this->_reg_obj_regexp . '$~', $tag_command)) {
+        if (preg_match('!^\/?' . $this->_reg_obj_regexp . '$!', $tag_command)) {
             return $this->_compile_registered_object_tag($tag_command, $this->_parse_attrs($tag_args), $tag_modifier);
         }
 
@@ -465,7 +436,7 @@
             case 'else':
                 list($_open_tag) = end($this->_tag_stack);
                 if ($_open_tag != 'if' && $_open_tag != 'elseif')
-                    $this->_syntax_error('unexpected {else}', E_USER_ERROR, __FILE__, __LINE__);
+                    $this->_syntax_error('unxepected {else}', E_USER_ERROR, __FILE__, __LINE__);
                 else
                     $this->_push_tag('else');
                 return '<?php else: ?>';
@@ -473,7 +444,7 @@
             case 'elseif':
                 list($_open_tag) = end($this->_tag_stack);
                 if ($_open_tag != 'if' && $_open_tag != 'elseif')
-                    $this->_syntax_error('unexpected {elseif}', E_USER_ERROR, __FILE__, __LINE__);
+                    $this->_syntax_error('unxepected {elseif}', E_USER_ERROR, __FILE__, __LINE__);
                 if ($_open_tag == 'if')
                     $this->_push_tag('elseif');
                 return $this->_compile_if_tag($tag_args, true);
@@ -517,29 +488,29 @@
 
             case 'foreachelse':
                 $this->_push_tag('foreachelse');
-                return "<?php endforeach; else: ?>";
+                return "<?php endforeach; unset(\$_from); else: ?>";
 
             case '/foreach':
                 $_open_tag = $this->_pop_tag('foreach');
                 if ($_open_tag == 'foreachelse')
-                    return "<?php endif; unset(\$_from); ?>";
+                    return "<?php endif; ?>";
                 else
-                    return "<?php endforeach; endif; unset(\$_from); ?>";
+                    return "<?php endforeach; unset(\$_from); endif; ?>";
                 break;
 
             case 'strip':
             case '/strip':
-                if (substr($tag_command, 0, 1)=='/') {
+                if ($tag_command{0}=='/') {
                     $this->_pop_tag('strip');
                     if (--$this->_strip_depth==0) { /* outermost closing {/strip} */
                         $this->_additional_newline = "\n";
-                        return '{' . $tag_command . '}';
+                        return $this->left_delimiter.$tag_command.$this->right_delimiter;
                     }
                 } else {
                     $this->_push_tag('strip');
                     if ($this->_strip_depth++==0) { /* outermost opening {strip} */
                         $this->_additional_newline = "";
-                        return '{' . $tag_command . '}';
+                        return $this->left_delimiter.$tag_command.$this->right_delimiter;
                     }
                 }
                 return '';
@@ -664,7 +635,7 @@
      */
     function _compile_block_tag($tag_command, $tag_args, $tag_modifier, &$output)
     {
-        if (substr($tag_command, 0, 1) == '/') {
+        if ($tag_command{0} == '/') {
             $start_tag = false;
             $tag_command = substr($tag_command, 1);
         } else
@@ -726,18 +697,17 @@
         if ($start_tag) {
             $output = '<?php ' . $this->_push_cacheable_state('block', $tag_command);
             $attrs = $this->_parse_attrs($tag_args);
-            $_cache_attrs='';
-            $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, $_cache_attrs);
+            $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, $_cache_attrs='');
             $output .= "$_cache_attrs\$this->_tag_stack[] = array('$tag_command', array(".implode(',', $arg_list).')); ';
-            $output .= '$_block_repeat=true;' . $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], null, $this, $_block_repeat);';
+            $output .= $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], null, $this, $_block_repeat=true);';
             $output .= 'while ($_block_repeat) { ob_start(); ?>';
         } else {
-            $output = '<?php $_block_content = ob_get_contents(); ob_end_clean(); ';
-            $_out_tag_text = $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], $_block_content, $this, $_block_repeat)';
+            $output = '<?php $this->_block_content = ob_get_contents(); ob_end_clean(); ';
+            $_out_tag_text = $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], $this->_block_content, $this, $_block_repeat=false)';
             if ($tag_modifier != '') {
                 $this->_parse_modifiers($_out_tag_text, $tag_modifier);
             }
-            $output .= '$_block_repeat=false;echo ' . $_out_tag_text . '; } ';
+            $output .= 'echo '.$_out_tag_text.'; } ';
             $output .= " array_pop(\$this->_tag_stack); " . $this->_pop_cacheable_state('block', $tag_command) . '?>';
         }
 
@@ -802,8 +772,7 @@
 
         $_cacheable_state = $this->_push_cacheable_state('function', $tag_command);
         $attrs = $this->_parse_attrs($tag_args);
-        $_cache_attrs = '';
-        $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs);
+        $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs='');
 
         $output = $this->_compile_plugin_call('function', $tag_command).'(array('.implode(',', $arg_list)."), \$this)";
         if($tag_modifier != '') {
@@ -828,7 +797,7 @@
      */
     function _compile_registered_object_tag($tag_command, $attrs, $tag_modifier)
     {
-        if (substr($tag_command, 0, 1) == '/') {
+        if ($tag_command{0} == '/') {
             $start_tag = false;
             $tag_command = substr($tag_command, 1);
         } else {
@@ -876,13 +845,13 @@
                 // block method
                 if ($start_tag) {
                     $prefix = "\$this->_tag_stack[] = array('$obj_comp', $args); ";
-                    $prefix .= "\$_block_repeat=true; \$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], null, \$this, \$_block_repeat); ";
+                    $prefix .= "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], null, \$this, \$_block_repeat=true); ";
                     $prefix .= "while (\$_block_repeat) { ob_start();";
                     $return = null;
                     $postfix = '';
             } else {
-                    $prefix = "\$_obj_block_content = ob_get_contents(); ob_end_clean(); ";
-                    $return = "\$_block_repeat=false; \$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], \$_obj_block_content, \$this, \$_block_repeat)";
+                    $prefix = "\$this->_obj_block_content = ob_get_contents(); ob_end_clean(); ";
+                    $return = "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], \$this->_obj_block_content, \$this, \$_block_repeat=false)";
                     $postfix = "} array_pop(\$this->_tag_stack);";
                 }
             } else {
@@ -943,7 +912,7 @@
 
         $_params = "array('args' => array(".implode(', ', (array)$arg_list)."))";
 
-        return "<?php require_once(SMARTY_CORE_DIR . 'core.run_insert_handler.php');\necho smarty_core_run_insert_handler($_params, \$this); ?>" . $this->_additional_newline;
+        return "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.run_insert_handler.php');\necho smarty_core_run_insert_handler($_params, \$this); ?>" . $this->_additional_newline;
     }
 
     /**
@@ -1027,7 +996,7 @@
 
         $_params = "array('smarty_file' => " . $attrs['file'] . ", 'smarty_assign' => '$assign_var', 'smarty_once' => $once_var, 'smarty_include_vars' => array(".implode(',', $arg_list)."))";
 
-        return "<?php require_once(SMARTY_CORE_DIR . 'core.smarty_include_php.php');\nsmarty_core_smarty_include_php($_params, \$this); ?>" . $this->_additional_newline;
+        return "<?php require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.smarty_include_php.php');\nsmarty_core_smarty_include_php($_params, \$this); ?>" . $this->_additional_newline;
     }
 
 
@@ -1048,7 +1017,7 @@
             $this->_syntax_error("missing section name", E_USER_ERROR, __FILE__, __LINE__);
         }
 
-        $output .= "unset(\$this->_sections[$section_name]);\n";
+        $output .= "if (isset(\$this->_sections[$section_name])) unset(\$this->_sections[$section_name]);\n";
         $section_props = "\$this->_sections[$section_name]";
 
         foreach ($attrs as $attr_name => $attr_value) {
@@ -1148,45 +1117,50 @@
         $arg_list = array();
 
         if (empty($attrs['from'])) {
-            return $this->_syntax_error("foreach: missing 'from' attribute", E_USER_ERROR, __FILE__, __LINE__);
+            $this->_syntax_error("missing 'from' attribute", E_USER_ERROR, __FILE__, __LINE__);
         }
-        $from = $attrs['from'];
 
         if (empty($attrs['item'])) {
-            return $this->_syntax_error("foreach: missing 'item' attribute", E_USER_ERROR, __FILE__, __LINE__);
+            $this->_syntax_error("missing 'item' attribute", E_USER_ERROR, __FILE__, __LINE__);
         }
+
+        $from = $attrs['from'];
         $item = $this->_dequote($attrs['item']);
-        if (!preg_match('~^\w+$~', $item)) {
-            return $this->_syntax_error("'foreach: item' must be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__);
+        if (isset($attrs['name']))
+            $name = $attrs['name'];
+
+        $output = '<?php ';
+        if (isset($name)) {
+            $output .= "if (isset(\$this->_foreach[$name])) unset(\$this->_foreach[$name]);\n";
+            $foreach_props = "\$this->_foreach[$name]";
         }
 
-        if (isset($attrs['key'])) {
-            $key  = $this->_dequote($attrs['key']);
-            if (!preg_match('~^\w+$~', $key)) {
-                return $this->_syntax_error("foreach: 'key' must to be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__);
+        $key_part = '';
+
+        foreach ($attrs as $attr_name => $attr_value) {
+            switch ($attr_name) {
+                case 'key':
+                    $key  = $this->_dequote($attrs['key']);
+                    $key_part = "\$this->_tpl_vars['$key'] => ";
+                    break;
+
+                case 'name':
+                    $output .= "{$foreach_props}['$attr_name'] = $attr_value;\n";
+                    break;
             }
-            $key_part = "\$this->_tpl_vars['$key'] => ";
-        } else {
-            $key = null;
-            $key_part = '';
         }
 
-        if (isset($attrs['name'])) {
-            $name = $attrs['name'];
-        } else {
-            $name = null;
-        }
-
-        $output = '<?php ';
-        $output .= "\$_from = $from; if (!is_array(\$_from) && !is_object(\$_from)) { settype(\$_from, 'array'); }";
         if (isset($name)) {
-            $foreach_props = "\$this->_foreach[$name]";
-            $output .= "{$foreach_props} = array('total' => count(\$_from), 'iteration' => 0);\n";
-            $output .= "if ({$foreach_props}['total'] > 0):\n";
+            $output .= "{$foreach_props}['total'] = count(\$_from = (array)$from);\n";
+            $output .= "{$foreach_props}['show'] = {$foreach_props}['total'] > 0;\n";
+            $output .= "if ({$foreach_props}['show']):\n";
+            $output .= "{$foreach_props}['iteration'] = 0;\n";
             $output .= "    foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n";
             $output .= "        {$foreach_props}['iteration']++;\n";
+            $output .= "        {$foreach_props}['first'] = ({$foreach_props}['iteration'] == 1);\n";
+            $output .= "        {$foreach_props}['last']  = ({$foreach_props}['iteration'] == {$foreach_props}['total']);\n";
         } else {
-            $output .= "if (count(\$_from)):\n";
+            $output .= "if (count(\$_from = (array)$from)):\n";
             $output .= "    foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n";
         }
         $output .= '?>';
@@ -1242,23 +1216,16 @@
     {
 
         /* Tokenize args for 'if' tag. */
-        preg_match_all('~(?>
+        preg_match_all('/(?>
                 ' . $this->_obj_call_regexp . '(?:' . $this->_mod_regexp . '*)? | # valid object call
                 ' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)?    | # var or quoted string
                 \-?0[xX][0-9a-fA-F]+|\-?\d+(?:\.\d+)?|\.\d+|!==|===|==|!=|<>|<<|>>|<=|>=|\&\&|\|\||\(|\)|,|\!|\^|=|\&|\~|<|>|\||\%|\+|\-|\/|\*|\@    | # valid non-word token
                 \b\w+\b                                                        | # valid word token
                 \S+                                                           # anything else
-                )~x', $tag_args, $match);
+                )/x', $tag_args, $match);
 
         $tokens = $match[0];
 
-        if(empty($tokens)) {
-            $_error_msg .= $elseif ? "'elseif'" : "'if'";
-            $_error_msg .= ' statement requires arguments'; 
-            $this->_syntax_error($_error_msg, E_USER_ERROR, __FILE__, __LINE__);
-        }
-            
-                
         // make sure we have balanced parenthesis
         $token_count = array_count_values($tokens);
         if(isset($token_count['(']) && $token_count['('] != $token_count[')']) {
@@ -1375,16 +1342,13 @@
                     break;
 
                 default:
-                    if(preg_match('~^' . $this->_func_regexp . '$~', $token) ) {
+                    if(preg_match('!^' . $this->_func_regexp . '$!', $token) ) {
                             // function call
                             if($this->security &&
                                !in_array($token, $this->security_settings['IF_FUNCS'])) {
                                 $this->_syntax_error("(secure mode) '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__);
                             }
-                    } elseif(preg_match('~^' . $this->_var_regexp . '$~', $token) && (strpos('+-*/^%&|', substr($token, -1)) === false) && isset($tokens[$i+1]) && $tokens[$i+1] == '(') {
-                        // variable function call
-                        $this->_syntax_error("variable function call '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__);                      
-                    } elseif(preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)$~', $token)) {
+                    } elseif(preg_match('!^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)$!', $token)) {
                         // object or variable
                         $token = $this->_parse_var_props($token);
                     } elseif(is_numeric($token)) {
@@ -1508,10 +1472,10 @@
     {
 
         /* Tokenize tag attributes. */
-        preg_match_all('~(?:' . $this->_obj_call_regexp . '|' . $this->_qstr_regexp . ' | (?>[^"\'=\s]+)
+        preg_match_all('/(?:' . $this->_obj_call_regexp . '|' . $this->_qstr_regexp . ' | (?>[^"\'=\s]+)
                          )+ |
                          [=]
-                        ~x', $tag_args, $match);
+                        /x', $tag_args, $match);
         $tokens       = $match[0];
 
         $attrs = array();
@@ -1526,7 +1490,7 @@
                 case 0:
                     /* If the token is a valid identifier, we set attribute name
                        and go to state 1. */
-                    if (preg_match('~^\w+$~', $token)) {
+                    if (preg_match('!^\w+$!', $token)) {
                         $attr_name = $token;
                         $state = 1;
                     } else
@@ -1547,15 +1511,15 @@
                     if ($token != '=') {
                         /* We booleanize the token if it's a non-quoted possible
                            boolean value. */
-                        if (preg_match('~^(on|yes|true)$~', $token)) {
+                        if (preg_match('!^(on|yes|true)$!', $token)) {
                             $token = 'true';
-                        } else if (preg_match('~^(off|no|false)$~', $token)) {
+                        } else if (preg_match('!^(off|no|false)$!', $token)) {
                             $token = 'false';
                         } else if ($token == 'null') {
                             $token = 'null';
-                        } else if (preg_match('~^' . $this->_num_const_regexp . '|0[xX][0-9a-fA-F]+$~', $token)) {
+                        } else if (preg_match('!^-?([0-9]+|0[xX][0-9a-fA-F]+)$!', $token)) {
                             /* treat integer literally */
-                        } else if (!preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . ')*$~', $token)) {
+                        } else if (!preg_match('!^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . ')*$!', $token)) {
                             /* treat as a string, double-quote it escaping quotes */
                             $token = '"'.addslashes($token).'"';
                         }
@@ -1607,52 +1571,44 @@
     {
         $val = trim($val);
 
-        if(preg_match('~^(' . $this->_obj_call_regexp . '|' . $this->_dvar_regexp . ')(' . $this->_mod_regexp . '*)$~', $val, $match)) {
+        if(preg_match('!^(' . $this->_obj_call_regexp . '|' . $this->_dvar_regexp . ')(' . $this->_mod_regexp . '*)$!', $val, $match)) {
             // $ variable or object
             $return = $this->_parse_var($match[1]);
             $modifiers = $match[2];
-            if (!empty($this->default_modifiers) && !preg_match('~(^|\|)smarty:nodefaults($|\|)~',$modifiers)) {
+            if (!empty($this->default_modifiers) && !preg_match('!(^|\|)smarty:nodefaults($|\|)!',$modifiers)) {
                 $_default_mod_string = implode('|',(array)$this->default_modifiers);
                 $modifiers = empty($modifiers) ? $_default_mod_string : $_default_mod_string . '|' . $modifiers;
             }
             $this->_parse_modifiers($return, $modifiers);
             return $return;
-        } elseif (preg_match('~^' . $this->_db_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+        } elseif (preg_match('!^' . $this->_db_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
                 // double quoted text
-                preg_match('~^(' . $this->_db_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match);
+                preg_match('!^(' . $this->_db_qstr_regexp . ')('. $this->_mod_regexp . '*)$!', $val, $match);
                 $return = $this->_expand_quoted_text($match[1]);
                 if($match[2] != '') {
                     $this->_parse_modifiers($return, $match[2]);
                 }
                 return $return;
             }
-        elseif(preg_match('~^' . $this->_num_const_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
-                // numerical constant
-                preg_match('~^(' . $this->_num_const_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match);
-                if($match[2] != '') {
-                    $this->_parse_modifiers($match[1], $match[2]);
-                    return $match[1];
-                }
-            }
-        elseif(preg_match('~^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+        elseif(preg_match('!^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
                 // single quoted text
-                preg_match('~^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match);
+                preg_match('!^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$!', $val, $match);
                 if($match[2] != '') {
                     $this->_parse_modifiers($match[1], $match[2]);
                     return $match[1];
                 }
             }
-        elseif(preg_match('~^' . $this->_cvar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+        elseif(preg_match('!^' . $this->_cvar_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
                 // config var
                 return $this->_parse_conf_var($val);
             }
-        elseif(preg_match('~^' . $this->_svar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) {
+        elseif(preg_match('!^' . $this->_svar_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) {
                 // section var
                 return $this->_parse_section_prop($val);
             }
         elseif(!in_array($val, $this->_permitted_tokens) && !is_numeric($val)) {
             // literal string
-            return $this->_expand_quoted_text('"' . strtr($val, array('\\' => '\\\\', '"' => '\\"')) .'"');
+            return $this->_expand_quoted_text('"' . $val .'"');
         }
         return $val;
     }
@@ -1666,19 +1622,19 @@
     function _expand_quoted_text($var_expr)
     {
         // if contains unescaped $, expand it
-        if(preg_match_all('~(?:\`(?<!\\\\)\$' . $this->_dvar_guts_regexp . '(?:' . $this->_obj_ext_regexp . ')*\`)|(?:(?<!\\\\)\$\w+(\[[a-zA-Z0-9]+\])*)~', $var_expr, $_match)) {
+        if(preg_match_all('%(?:\`(?<!\\\\)\$' . $this->_dvar_guts_regexp . '\`)|(?:(?<!\\\\)\$\w+(\[[a-zA-Z0-9]+\])*)%', $var_expr, $_match)) {
             $_match = $_match[0];
             rsort($_match);
             reset($_match);
             foreach($_match as $_var) {
                 $var_expr = str_replace ($_var, '".(' . $this->_parse_var(str_replace('`','',$_var)) . ')."', $var_expr);
             }
-            $_return = preg_replace('~\.""|(?<!\\\\)""\.~', '', $var_expr);
+            $_return = preg_replace('%\.""|(?<!\\\\)""\.%', '', $var_expr);
         } else {
             $_return = $var_expr;
         }
         // replace double quoted literal string with single quotes
-        $_return = preg_replace('~^"([\s\w]+)"$~',"'\\1'",$_return);
+        $_return = preg_replace('!^"([\s\w]+)"$!',"'\\1'",$_return);
         return $_return;
     }
 
@@ -1692,7 +1648,7 @@
     function _parse_var($var_expr)
     {
         $_has_math = false;
-        $_math_vars = preg_split('~('.$this->_dvar_math_regexp.'|'.$this->_qstr_regexp.')~', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE);
+        $_math_vars = preg_split('!('.$this->_dvar_math_regexp.'|'.$this->_qstr_regexp.')!', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE);
 
         if(count($_math_vars) > 1) {
             $_first_var = "";
@@ -1704,7 +1660,7 @@
 
                 if(!empty($_math_var) || is_numeric($_math_var)) {
                     // hit a math operator, so process the stuff which came before it
-                    if(preg_match('~^' . $this->_dvar_math_regexp . '$~', $_math_var)) {
+                    if(preg_match('!^' . $this->_dvar_math_regexp . '$!', $_math_var)) {
                         $_has_math = true;
                         if(!empty($_complete_var) || is_numeric($_complete_var)) {
                             $_output .= $this->_parse_var($_complete_var);
@@ -1718,13 +1674,23 @@
 
                         $_complete_var = "";
                     } else {
+                        // fetch multiple -> (like $foo->bar->baz ) which wouldn't get fetched else, because it would only get $foo->bar and treat the ->baz as "-" ">baz" then
+                        for($_i = $_k + 1; $_i <= count($_math_vars); $_i += 2) {
+                            // fetch -> because it gets splitted at - and move it back together
+                            if( /* prevent notice */ (isset($_math_vars[$_i]) && isset($_math_vars[$_i+1])) && ($_math_vars[$_i] === '-' && $_math_vars[$_i+1]{0} === '>')) {
+                                $_math_var .= $_math_vars[$_i].$_math_vars[$_i+1];
+                                $_math_vars[$_i] = $_math_vars[$_i+1] = '';
+                            } else {
+                                break;
+                            }
+                        }
                         $_complete_var .= $_math_var;
                     }
                 }
             }
             if($_has_math) {
                 if(!empty($_complete_var) || is_numeric($_complete_var))
-                    $_output .= $this->_parse_var($_complete_var);
+                    $_output .= $this->_parse_var($_complete_var, true);
 
                 // get the modifiers working (only the last var from math + modifier is left)
                 $var_expr = $_complete_var;
@@ -1732,16 +1698,15 @@
         }
 
         // prevent cutting of first digit in the number (we _definitly_ got a number if the first char is a digit)
-        if(is_numeric(substr($var_expr, 0, 1)))
+        if(is_numeric($var_expr{0}))
             $_var_ref = $var_expr;
         else
             $_var_ref = substr($var_expr, 1);
-        
+
         if(!$_has_math) {
-            
             // get [foo] and .foo and ->foo and (...) pieces
-            preg_match_all('~(?:^\w+)|' . $this->_obj_params_regexp . '|(?:' . $this->_var_bracket_regexp . ')|->\$?\w+|\.\$?\w+|\S+~', $_var_ref, $match);
-                        
+            preg_match_all('!(?:^\w+)|' . $this->_obj_params_regexp . '|(?:' . $this->_var_bracket_regexp . ')|->\$?\w+|\.\$?\w+|\S+!', $_var_ref, $match);
+
             $_indexes = $match[0];
             $_var_name = array_shift($_indexes);
 
@@ -1758,7 +1723,7 @@
                     $_var_name = substr(array_shift($_indexes), 1);
                     $_output = "\$this->_smarty_vars['$_var_name']";
                 }
-            } elseif(is_numeric($_var_name) && is_numeric(substr($var_expr, 0, 1))) {
+            } elseif(is_numeric($_var_name) && is_numeric($var_expr{0})) {
                 // because . is the operator for accessing arrays thru inidizes we need to put it together again for floating point numbers
                 if(count($_indexes) > 0)
                 {
@@ -1771,11 +1736,11 @@
             }
 
             foreach ($_indexes as $_index) {
-                if (substr($_index, 0, 1) == '[') {
+                if ($_index{0} == '[') {
                     $_index = substr($_index, 1, -1);
                     if (is_numeric($_index)) {
                         $_output .= "[$_index]";
-                    } elseif (substr($_index, 0, 1) == '$') {
+                    } elseif ($_index{0} == '$') {
                         if (strpos($_index, '.') !== false) {
                             $_output .= '[' . $this->_parse_var($_index) . ']';
                         } else {
@@ -1787,8 +1752,8 @@
                         $_var_section_prop = isset($_var_parts[1]) ? $_var_parts[1] : 'index';
                         $_output .= "[\$this->_sections['$_var_section']['$_var_section_prop']]";
                     }
-                } else if (substr($_index, 0, 1) == '.') {
-                    if (substr($_index, 1, 1) == '$')
+                } else if ($_index{0} == '.') {
+                    if ($_index{1} == '$')
                         $_output .= "[\$this->_tpl_vars['" . substr($_index, 2) . "']]";
                     else
                         $_output .= "['" . substr($_index, 1) . "']";
@@ -1797,7 +1762,7 @@
                         $this->_syntax_error('call to internal object members is not allowed', E_USER_ERROR, __FILE__, __LINE__);
                     } elseif($this->security && substr($_index, 2, 1) == '_') {
                         $this->_syntax_error('(secure) call to private object member is not allowed', E_USER_ERROR, __FILE__, __LINE__);
-                    } elseif (substr($_index, 2, 1) == '$') {
+                    } elseif ($_index{2} == '$') {
                         if ($this->security) {
                             $this->_syntax_error('(secure) call to dynamic object member is not allowed', E_USER_ERROR, __FILE__, __LINE__);
                         } else {
@@ -1806,7 +1771,7 @@
                     } else {
                         $_output .= $_index;
                     }
-                } elseif (substr($_index, 0, 1) == '(') {
+                } elseif ($_index{0} == '(') {
                     $_index = $this->_parse_parenth_args($_index);
                     $_output .= $_index;
                 } else {
@@ -1826,14 +1791,13 @@
      */
     function _parse_parenth_args($parenth_args)
     {
-        preg_match_all('~' . $this->_param_regexp . '~',$parenth_args, $match);
-        $orig_vals = $match = $match[0];
+        preg_match_all('!' . $this->_param_regexp . '!',$parenth_args, $match);
+        $match = $match[0];
+        rsort($match);
+        reset($match);
+        $orig_vals = $match;
         $this->_parse_vars_props($match);
-        $replace = array();
-        for ($i = 0, $count = count($match); $i < $count; $i++) {
-            $replace[$orig_vals[$i]] = $match[$i];
-        }
-        return strtr($parenth_args, $replace);
+        return str_replace($orig_vals, $match, $parenth_args);
     }
 
     /**
@@ -1889,7 +1853,7 @@
      */
     function _parse_modifiers(&$output, $modifier_string)
     {
-        preg_match_all('~\|(@?\w+)((?>:(?:'. $this->_qstr_regexp . '|[^|]+))*)~', '|' . $modifier_string, $_match);
+        preg_match_all('!\|(@?\w+)((?>:(?:'. $this->_qstr_regexp . '|[^|]+))*)!', '|' . $modifier_string, $_match);
         list(, $_modifiers, $modifier_arg_strings) = $_match;
 
         for ($_i = 0, $_for_max = count($_modifiers); $_i < $_for_max; $_i++) {
@@ -1900,10 +1864,10 @@
                 continue;
             }
 
-            preg_match_all('~:(' . $this->_qstr_regexp . '|[^:]+)~', $modifier_arg_strings[$_i], $_match);
+            preg_match_all('!:(' . $this->_qstr_regexp . '|[^:]+)!', $modifier_arg_strings[$_i], $_match);
             $_modifier_args = $_match[1];
 
-            if (substr($_modifier_name, 0, 1) == '@') {
+            if ($_modifier_name{0} == '@') {
                 $_map_array = false;
                 $_modifier_name = substr($_modifier_name, 1);
             } else {
@@ -1925,10 +1889,10 @@
 
             if($_modifier_name == 'default') {
                 // supress notifications of default modifier vars and args
-                if(substr($output, 0, 1) == '$') {
+                if($output{0} == '$') {
                     $output = '@' . $output;
                 }
-                if(isset($_modifier_args[0]) && substr($_modifier_args[0], 0, 1) == '$') {
+                if(isset($_modifier_args[0]) && $_modifier_args[0]{0} == '$') {
                     $_modifier_args[0] = '@' . $_modifier_args[0];
                 }
             }
@@ -1980,7 +1944,7 @@
         /* Extract the reference name. */
         $_ref = substr($indexes[0], 1);
         foreach($indexes as $_index_no=>$_index) {
-            if (substr($_index, 0, 1) != '.' && $_index_no<2 || !preg_match('~^(\.|\[|->)~', $_index)) {
+            if ($_index{0} != '.' && $_index_no<2 || !preg_match('!^(\.|\[|->)!', $_index)) {
                 $this->_syntax_error('$smarty' . implode('', array_slice($indexes, 0, 2)) . ' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__);
             }
         }
@@ -1992,41 +1956,13 @@
                 break;
 
             case 'foreach':
-                array_shift($indexes);
-                $_var = $this->_parse_var_props(substr($indexes[0], 1));
-                $_propname = substr($indexes[1], 1);
-                $_max_index = 1;
-                switch ($_propname) {
-                    case 'index':
-                        array_shift($indexes);
-                        $compiled_ref = "(\$this->_foreach[$_var]['iteration']-1)";
-                        break;
-                        
-                    case 'first':
-                        array_shift($indexes);
-                        $compiled_ref = "(\$this->_foreach[$_var]['iteration'] <= 1)";
-                        break;
-
-                    case 'last':
-                        array_shift($indexes);
-                        $compiled_ref = "(\$this->_foreach[$_var]['iteration'] == \$this->_foreach[$_var]['total'])";
-                        break;
-                        
-                    case 'show':
-                        array_shift($indexes);
-                        $compiled_ref = "(\$this->_foreach[$_var]['total'] > 0)";
-                        break;
-                        
-                    default:
-                        unset($_max_index);
-                        $compiled_ref = "\$this->_foreach[$_var]";
-                }
-                break;
-
             case 'section':
                 array_shift($indexes);
                 $_var = $this->_parse_var_props(substr($indexes[0], 1));
-                $compiled_ref = "\$this->_sections[$_var]";
+                if ($_ref == 'foreach')
+                    $compiled_ref = "\$this->_foreach[$_var]";
+                else
+                    $compiled_ref = "\$this->_sections[$_var]";
                 break;
 
             case 'get':
@@ -2080,18 +2016,9 @@
                 break;
 
             case 'const':
-                if ($this->security && !$this->security_settings['ALLOW_CONSTANTS']) {
-                    $this->_syntax_error("(secure mode) constants not permitted",
-                                         E_USER_WARNING, __FILE__, __LINE__);
-                    return;
-                }
                 array_shift($indexes);
-                if (preg_match('!^\.\w+$!', $indexes[0])) {
-                    $compiled_ref = '@' . substr($indexes[0], 1);
-                } else {
-                    $_val = $this->_parse_var_props(substr($indexes[0], 1));
-                    $compiled_ref = '@constant(' . $_val . ')';
-                }
+                $_val = $this->_parse_var_props(substr($indexes[0],1));
+                $compiled_ref = '@constant(' . $_val . ')';
                 $_max_index = 1;
                 break;
 
@@ -2100,14 +2027,6 @@
                 $_max_index = 3;
                 break;
 
-            case 'ldelim':
-                $compiled_ref = "'$this->left_delimiter'";
-                break;
-
-            case 'rdelim':
-                $compiled_ref = "'$this->right_delimiter'";
-                break;
-                
             default:
                 $this->_syntax_error('$smarty.' . $_ref . ' is an unknown reference', E_USER_ERROR, __FILE__, __LINE__);
                 break;
@@ -2162,7 +2081,7 @@
                 if ($prefilter === false) {
                     unset($this->_plugins['prefilter'][$filter_name]);
                     $_params = array('plugins' => array(array('prefilter', $filter_name, null, null, false)));
-                    require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
                     smarty_core_load_plugins($_params, $this);
                 }
             }
@@ -2172,7 +2091,7 @@
                 if ($postfilter === false) {
                     unset($this->_plugins['postfilter'][$filter_name]);
                     $_params = array('plugins' => array(array('postfilter', $filter_name, null, null, false)));
-                    require_once(SMARTY_CORE_DIR . 'core.load_plugins.php');
+                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.load_plugins.php');
                     smarty_core_load_plugins($_params, $this);
                 }
             }
@@ -2188,7 +2107,7 @@
      */
     function _quote_replace($string)
     {
-        return strtr($string, array('\\' => '\\\\', '$' => '\\$'));
+        return preg_replace('![\\$]\d!', '\\\\\\0', $string);
     }
 
     /**
@@ -2216,9 +2135,9 @@
         if ($_cacheable
             || 0<$this->_cacheable_state++) return '';
         if (!isset($this->_cache_serial)) $this->_cache_serial = md5(uniqid('Smarty'));
-        $_ret = 'if ($this->caching && !$this->_cache_including) { echo \'{nocache:'
+        $_ret = 'if ($this->caching) { echo \'{nocache:'
             . $this->_cache_serial . '#' . $this->_nocache_count
-            . '}\'; };';
+            . '}\';}';
         return $_ret;
     }
 
@@ -2233,15 +2152,15 @@
         $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4];
         if ($_cacheable
             || --$this->_cacheable_state>0) return '';
-        return 'if ($this->caching && !$this->_cache_including) { echo \'{/nocache:'
+        return 'if ($this->caching) { echo \'{/nocache:'
             . $this->_cache_serial . '#' . ($this->_nocache_count++)
-            . '}\'; };';
+            . '}\';}';
     }
 
 
     /**
      * push opening tag-name, file-name and line-number on the tag-stack
-     * @param string the opening tag's name
+     * @param: string the opening tag's name
      */
     function _push_tag($open_tag)
     {
@@ -2251,8 +2170,8 @@
     /**
      * pop closing tag-name
      * raise an error if this stack-top doesn't match with the closing tag
-     * @param string the closing tag's name
-     * @return string the opening tag's name
+     * @param: string the closing tag's name
+     * @return: string the opening tag's name
      */
     function _pop_tag($close_tag)
     {
@@ -2273,13 +2192,6 @@
                 $this->_pop_tag($close_tag);
                 return $_open_tag;
             }
-            if ($_open_tag == 'else' || $_open_tag == 'elseif') {
-                $_open_tag = 'if';
-            } elseif ($_open_tag == 'sectionelse') {
-                $_open_tag = 'section';
-            } elseif ($_open_tag == 'foreachelse') {
-                $_open_tag = 'foreach';
-            }
             $message = " expected {/$_open_tag} (opened line $_line_no).";
         }
         $this->_syntax_error("mismatched tag {/$close_tag}.$message",

Copied: plog/trunk/class/template/smarty/core (from rev 1663, plog/trunk/class/template/smarty/core)

Deleted: plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,66 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * assemble filepath of requested plugin
- *
- * @param string $type
- * @param string $name
- * @return string|false
- */
-function smarty_core_assemble_plugin_filepath($params, &$smarty)
-{
-    static $_filepaths_cache = array();
-
-    $_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';
-    if (isset($_filepaths_cache[$_plugin_filename])) {
-        return $_filepaths_cache[$_plugin_filename];
-    }
-    $_return = false;
-
-    foreach ((array)$smarty->plugins_dir as $_plugin_dir) {
-
-        $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
-
-        // see if path is relative
-        if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {
-            $_relative_paths[] = $_plugin_dir;
-            // relative path, see if it is in the SMARTY_DIR
-            if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {
-                $_return = SMARTY_DIR . $_plugin_filepath;
-                break;
-            }
-        }
-        // try relative to cwd (or absolute)
-        if (@is_readable($_plugin_filepath)) {
-            $_return = $_plugin_filepath;
-            break;
-        }
-    }
-
-    if($_return === false) {
-        // still not found, try PHP include_path
-        if(isset($_relative_paths)) {
-            foreach ((array)$_relative_paths as $_plugin_dir) {
-
-                $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
-
-                $_params = array('file_path' => $_plugin_filepath);
-                require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
-                if(smarty_core_get_include_path($_params, $smarty)) {
-                    return $_params['new_file_path'];
-                }
-            }
-        }
-    }
-    $_filepaths_cache[$_plugin_filename] = $_return;
-    return $_return;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php (from rev 1663, plog/trunk/class/template/smarty/core/core.assemble_plugin_filepath.php)

Deleted: plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,43 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty assign_smarty_interface core plugin
- *
- * Type:     core<br>
- * Name:     assign_smarty_interface<br>
- * Purpose:  assign the $smarty interface variable
- * @param array Format: null
- * @param Smarty
- */
-function smarty_core_assign_smarty_interface($params, &$smarty)
-{
-        if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) {
-            return;
-        }
-
-        $_globals_map = array('g'  => 'HTTP_GET_VARS',
-                             'p'  => 'HTTP_POST_VARS',
-                             'c'  => 'HTTP_COOKIE_VARS',
-                             's'  => 'HTTP_SERVER_VARS',
-                             'e'  => 'HTTP_ENV_VARS');
-
-        $_smarty_vars_request  = array();
-
-        foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) {
-            if (isset($_globals_map[$_c])) {
-                $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]);
-            }
-        }
-        $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']);
-
-        $smarty->_smarty_vars['request'] = $_smarty_vars_request;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php (from rev 1663, plog/trunk/class/template/smarty/core/core.assign_smarty_interface.php)

Deleted: plog/trunk/class/template/smarty/core/core.create_dir_structure.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.create_dir_structure.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.create_dir_structure.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,79 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * create full directory structure
- *
- * @param string $dir
- */
-
-// $dir
-
-function smarty_core_create_dir_structure($params, &$smarty)
-{
-    if (!file_exists($params['dir'])) {
-        $_open_basedir_ini = ini_get('open_basedir');
-
-        if (DIRECTORY_SEPARATOR=='/') {
-            /* unix-style paths */
-            $_dir = $params['dir'];
-            $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
-            $_new_dir = ($_dir{0}=='/') ? '/' : getcwd().'/';
-            if($_use_open_basedir = !empty($_open_basedir_ini)) {
-                $_open_basedirs = explode(':', $_open_basedir_ini);
-            }
-
-        } else {
-            /* other-style paths */
-            $_dir = str_replace('\\','/', $params['dir']);
-            $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
-            if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) {
-                /* leading "//" for network volume, or "[letter]:/" for full path */
-                $_new_dir = $_root_dir[1];
-                /* remove drive-letter from _dir_parts */
-                if (isset($_root_dir[3])) array_shift($_dir_parts);
-
-            } else {
-                $_new_dir = str_replace('\\', '/', getcwd()).'/';
-
-            }
-
-            if($_use_open_basedir = !empty($_open_basedir_ini)) {
-                $_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini));
-            }
-
-        }
-
-        /* all paths use "/" only from here */
-        foreach ($_dir_parts as $_dir_part) {
-            $_new_dir .= $_dir_part;
-
-            if ($_use_open_basedir) {
-                // do not attempt to test or make directories outside of open_basedir
-                $_make_new_dir = false;
-                foreach ($_open_basedirs as $_open_basedir) {
-                    if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) {
-                        $_make_new_dir = true;
-                        break;
-                    }
-                }
-            } else {
-                $_make_new_dir = true;
-            }
-
-            if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) {
-                $smarty->trigger_error("problem creating directory '" . $_new_dir . "'");
-                return false;
-            }
-            $_new_dir .= '/';
-        }
-    }
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.create_dir_structure.php (from rev 1663, plog/trunk/class/template/smarty/core/core.create_dir_structure.php)

Deleted: plog/trunk/class/template/smarty/core/core.display_debug_console.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.display_debug_console.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.display_debug_console.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,60 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Smarty debug_console function plugin
- *
- * Type:     core<br>
- * Name:     display_debug_console<br>
- * Purpose:  display the javascript debug console window
- * @param array Format: null
- * @param Smarty
- */
-function smarty_core_display_debug_console($params, &$smarty)
-{
-    // we must force compile the debug template in case the environment
-    // changed between separate applications.
-
-    if(empty($smarty->debug_tpl)) {
-        // set path to debug template from SMARTY_DIR
-        $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl';
-        if($smarty->security && is_file($smarty->debug_tpl)) {
-            $smarty->secure_dir[] = dirname(realpath($smarty->debug_tpl));
-        }
-    }
-
-    $_ldelim_orig = $smarty->left_delimiter;
-    $_rdelim_orig = $smarty->right_delimiter;
-
-    $smarty->left_delimiter = '{';
-    $smarty->right_delimiter = '}';
-
-    $_compile_id_orig = $smarty->_compile_id;
-    $smarty->_compile_id = null;
-
-    $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl);
-    if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path))
-    {
-        ob_start();
-        $smarty->_include($_compile_path);
-        $_results = ob_get_contents();
-        ob_end_clean();
-    } else {
-        $_results = '';
-    }
-
-    $smarty->_compile_id = $_compile_id_orig;
-
-    $smarty->left_delimiter = $_ldelim_orig;
-    $smarty->right_delimiter = $_rdelim_orig;
-
-    return $_results;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.display_debug_console.php (from rev 1663, plog/trunk/class/template/smarty/core/core.display_debug_console.php)

Deleted: plog/trunk/class/template/smarty/core/core.get_include_path.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.get_include_path.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.get_include_path.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,44 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Get path to file from include_path
- *
- * @param string $file_path
- * @param string $new_file_path
- * @return boolean
- * @staticvar array|null
- */
-
-//  $file_path, &$new_file_path
-
-function smarty_core_get_include_path(&$params, &$smarty)
-{
-    static $_path_array = null;
-
-    if(!isset($_path_array)) {
-        $_ini_include_path = ini_get('include_path');
-
-        if(strstr($_ini_include_path,';')) {
-            // windows pathnames
-            $_path_array = explode(';',$_ini_include_path);
-        } else {
-            $_path_array = explode(':',$_ini_include_path);
-        }
-    }
-    foreach ($_path_array as $_include_path) {
-        if (@is_readable($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {
-               $params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
-            return true;
-        }
-    }
-    return false;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.get_include_path.php (from rev 1663, plog/trunk/class/template/smarty/core/core.get_include_path.php)

Deleted: plog/trunk/class/template/smarty/core/core.get_microtime.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.get_microtime.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.get_microtime.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,23 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Get seconds and microseconds
- * @return double
- */
-function smarty_core_get_microtime($params, &$smarty)
-{
-    $mtime = microtime();
-    $mtime = explode(" ", $mtime);
-    $mtime = (double)($mtime[1]) + (double)($mtime[0]);
-    return ($mtime);
-}
-
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.get_microtime.php (from rev 1663, plog/trunk/class/template/smarty/core/core.get_microtime.php)

Deleted: plog/trunk/class/template/smarty/core/core.get_php_resource.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.get_php_resource.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.get_php_resource.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,80 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Retrieves PHP script resource
- *
- * sets $php_resource to the returned resource
- * @param string $resource
- * @param string $resource_type
- * @param  $php_resource
- * @return boolean
- */
-
-function smarty_core_get_php_resource(&$params, &$smarty)
-{
-
-    $params['resource_base_path'] = $smarty->trusted_dir;
-    $smarty->_parse_resource_name($params, $smarty);
-
-    /*
-     * Find out if the resource exists.
-     */
-
-    if ($params['resource_type'] == 'file') {
-        $_readable = false;
-        if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
-            $_readable = true;
-        } else {
-            // test for file in include_path
-            $_params = array('file_path' => $params['resource_name']);
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');
-            if(smarty_core_get_include_path($_params, $smarty)) {
-                $_include_path = $_params['new_file_path'];
-                $_readable = true;
-            }
-        }
-    } else if ($params['resource_type'] != 'file') {
-        $_template_source = null;
-        $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
-            && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
-                                    array($params['resource_name'], &$_template_source, &$smarty));
-    }
-
-    /*
-     * Set the error function, depending on which class calls us.
-     */
-    if (method_exists($smarty, '_syntax_error')) {
-        $_error_funcc = '_syntax_error';
-    } else {
-        $_error_funcc = 'trigger_error';
-    }
-
-    if ($_readable) {
-        if ($smarty->security) {
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_trusted.php');
-            if (!smarty_core_is_trusted($params, $smarty)) {
-                $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
-                return false;
-            }
-        }
-    } else {
-        $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
-        return false;
-    }
-
-    if ($params['resource_type'] == 'file') {
-        $params['php_resource'] = $params['resource_name'];
-    } else {
-        $params['php_resource'] = $_template_source;
-    }
-    return true;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.get_php_resource.php (from rev 1663, plog/trunk/class/template/smarty/core/core.get_php_resource.php)

Deleted: plog/trunk/class/template/smarty/core/core.is_secure.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.is_secure.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.is_secure.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,59 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * determines if a resource is secure or not.
- *
- * @param string $resource_type
- * @param string $resource_name
- * @return boolean
- */
-
-//  $resource_type, $resource_name
-
-function smarty_core_is_secure($params, &$smarty)
-{
-    static $check_template_dir = true;
-
-    if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) {
-        return true;
-    }
-
-    $_smarty_secure = false;
-    if ($params['resource_type'] == 'file') {
-        if($check_template_dir) {
-            if (!in_array($smarty->template_dir, $smarty->secure_dir))
-                // add template_dir to secure_dir array
-                array_unshift($smarty->secure_dir, $smarty->template_dir);
-            $check_template_dir = false;
-        }
-        if (!empty($smarty->secure_dir)) {
-            $_rp = realpath($params['resource_name']);
-            foreach ((array)$smarty->secure_dir as $curr_dir) {
-                if ( !empty($curr_dir) && is_readable ($curr_dir)) {
-                    $_cd = realpath($curr_dir);
-                    if (strncmp($_rp, $_cd, strlen($_cd)) == 0
-                        && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) {
-                        $_smarty_secure = true;
-                        break;
-                    }
-                }
-            }
-        }
-    } else {
-        // resource is not on local file system
-        $_smarty_secure = call_user_func_array(
-            $smarty->_plugins['resource'][$params['resource_type']][0][2],
-            array($params['resource_name'], &$_smarty_secure, &$smarty));
-    }
-
-    return $_smarty_secure;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.is_secure.php (from rev 1663, plog/trunk/class/template/smarty/core/core.is_secure.php)

Deleted: plog/trunk/class/template/smarty/core/core.is_trusted.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.is_trusted.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.is_trusted.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**#@+
- * @access private
- */
-/**
- * determines if a resource is trusted or not
- *
- * @param string $resource_type
- * @param string $resource_name
- * @return boolean
- */
-
- // $resource_type, $resource_name
-
-function smarty_core_is_trusted($params, &$smarty)
-{
-    $_smarty_trusted = false;
-    if ($params['resource_type'] == 'file') {
-        if (!empty($smarty->trusted_dir)) {
-            $_rp = realpath($params['resource_name']);
-            foreach ((array)$smarty->trusted_dir as $curr_dir) {
-                if (!empty($curr_dir) && is_readable ($curr_dir)) {
-                    $_cd = realpath($curr_dir);
-                    if (strncmp($_rp, $_cd, strlen($_cd)) == 0
-                        && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) {
-                        $_smarty_trusted = true;
-                        break;
-                    }
-                }
-            }
-        }
-
-    } else {
-        // resource is not on local file system
-        $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3],
-                                                array($params['resource_name'], $smarty));
-    }
-
-    return $_smarty_trusted;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.is_trusted.php (from rev 1663, plog/trunk/class/template/smarty/core/core.is_trusted.php)

Deleted: plog/trunk/class/template/smarty/core/core.load_plugins.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.load_plugins.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.load_plugins.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,125 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Load requested plugins
- *
- * @param array $plugins
- */
-
-// $plugins
-
-function smarty_core_load_plugins($params, &$smarty)
-{
-
-    foreach ($params['plugins'] as $_plugin_info) {
-        list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info;
-        $_plugin = &$smarty->_plugins[$_type][$_name];
-
-        /*
-         * We do not load plugin more than once for each instance of Smarty.
-         * The following code checks for that. The plugin can also be
-         * registered dynamically at runtime, in which case template file
-         * and line number will be unknown, so we fill them in.
-         *
-         * The final element of the info array is a flag that indicates
-         * whether the dynamically registered plugin function has been
-         * checked for existence yet or not.
-         */
-        if (isset($_plugin)) {
-            if (empty($_plugin[3])) {
-                if (!is_callable($_plugin[0])) {
-                    $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
-                } else {
-                    $_plugin[1] = $_tpl_file;
-                    $_plugin[2] = $_tpl_line;
-                    $_plugin[3] = true;
-                    if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */
-                }
-            }
-            continue;
-        } else if ($_type == 'insert') {
-            /*
-             * For backwards compatibility, we check for insert functions in
-             * the symbol table before trying to load them as a plugin.
-             */
-            $_plugin_func = 'insert_' . $_name;
-            if (function_exists($_plugin_func)) {
-                $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false);
-                continue;
-            }
-        }
-
-        $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name);
-
-        if (! $_found = ($_plugin_file != false)) {
-            $_message = "could not load plugin file '$_type.$_name.php'\n";
-        }
-
-        /*
-         * If plugin file is found, it -must- provide the properly named
-         * plugin function. In case it doesn't, simply output the error and
-         * do not fall back on any other method.
-         */
-        if ($_found) {
-            include_once $_plugin_file;
-
-            $_plugin_func = 'smarty_' . $_type . '_' . $_name;
-            if (!function_exists($_plugin_func)) {
-                $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
-                continue;
-            }
-        }
-        /*
-         * In case of insert plugins, their code may be loaded later via
-         * 'script' attribute.
-         */
-        else if ($_type == 'insert' && $_delayed_loading) {
-            $_plugin_func = 'smarty_' . $_type . '_' . $_name;
-            $_found = true;
-        }
-
-        /*
-         * Plugin specific processing and error checking.
-         */
-        if (!$_found) {
-            if ($_type == 'modifier') {
-                /*
-                 * In case modifier falls back on using PHP functions
-                 * directly, we only allow those specified in the security
-                 * context.
-                 */
-                if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) {
-                    $_message = "(secure mode) modifier '$_name' is not allowed";
-                } else {
-                    if (!function_exists($_name)) {
-                        $_message = "modifier '$_name' is not implemented";
-                    } else {
-                        $_plugin_func = $_name;
-                        $_found = true;
-                    }
-                }
-            } else if ($_type == 'function') {
-                /*
-                 * This is a catch-all situation.
-                 */
-                $_message = "unknown tag - '$_name'";
-            }
-        }
-
-        if ($_found) {
-            $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true);
-        } else {
-            // output error
-            $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__);
-        }
-    }
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.load_plugins.php (from rev 1663, plog/trunk/class/template/smarty/core/core.load_plugins.php)

Deleted: plog/trunk/class/template/smarty/core/core.load_resource_plugin.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.load_resource_plugin.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.load_resource_plugin.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,74 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * load a resource plugin
- *
- * @param string $type
- */
-
-// $type
-
-function smarty_core_load_resource_plugin($params, &$smarty)
-{
-    /*
-     * Resource plugins are not quite like the other ones, so they are
-     * handled differently. The first element of plugin info is the array of
-     * functions provided by the plugin, the second one indicates whether
-     * all of them exist or not.
-     */
-
-    $_plugin = &$smarty->_plugins['resource'][$params['type']];
-    if (isset($_plugin)) {
-        if (!$_plugin[1] && count($_plugin[0])) {
-            $_plugin[1] = true;
-            foreach ($_plugin[0] as $_plugin_func) {
-                if (!is_callable($_plugin_func)) {
-                    $_plugin[1] = false;
-                    break;
-                }
-            }
-        }
-
-        if (!$_plugin[1]) {
-            $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__);
-        }
-
-        return;
-    }
-
-    $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']);
-    $_found = ($_plugin_file != false);
-
-    if ($_found) {            /*
-         * If the plugin file is found, it -must- provide the properly named
-         * plugin functions.
-         */
-        include_once($_plugin_file);
-
-        /*
-         * Locate functions that we require the plugin to provide.
-         */
-        $_resource_ops = array('source', 'timestamp', 'secure', 'trusted');
-        $_resource_funcs = array();
-        foreach ($_resource_ops as $_op) {
-            $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op;
-            if (!function_exists($_plugin_func)) {
-                $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__);
-                return;
-            } else {
-                $_resource_funcs[] = $_plugin_func;
-            }
-        }
-
-        $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true);
-    }
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.load_resource_plugin.php (from rev 1663, plog/trunk/class/template/smarty/core/core.load_resource_plugin.php)

Deleted: plog/trunk/class/template/smarty/core/core.process_cached_inserts.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.process_cached_inserts.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.process_cached_inserts.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Replace cached inserts with the actual results
- *
- * @param string $results
- * @return string
- */
-function smarty_core_process_cached_inserts($params, &$smarty)
-{
-    preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis',
-                   $params['results'], $match);
-    list($cached_inserts, $insert_args) = $match;
-
-    for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) {
-        if ($smarty->debugging) {
-            $_params = array();
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
-            $debug_start_time = smarty_core_get_microtime($_params, $smarty);
-        }
-
-        $args = unserialize($insert_args[$i]);
-        $name = $args['name'];
-
-        if (isset($args['script'])) {
-            $_params = array('resource_name' => $smarty->_dequote($args['script']));
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php');
-            if(!smarty_core_get_php_resource($_params, $smarty)) {
-                return false;
-            }
-            $resource_type = $_params['resource_type'];
-            $php_resource = $_params['php_resource'];
-
-
-            if ($resource_type == 'file') {
-                $smarty->_include($php_resource, true);
-            } else {
-                $smarty->_eval($php_resource);
-            }
-        }
-
-        $function_name = $smarty->_plugins['insert'][$name][0];
-        if (empty($args['assign'])) {
-            $replace = $function_name($args, $smarty);
-        } else {
-            $smarty->assign($args['assign'], $function_name($args, $smarty));
-            $replace = '';
-        }
-
-        $params['results'] = str_replace($cached_inserts[$i], $replace, $params['results']);
-        if ($smarty->debugging) {
-            $_params = array();
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
-            $smarty->_smarty_debug_info[] = array('type'      => 'insert',
-                                                'filename'  => 'insert_'.$name,
-                                                'depth'     => $smarty->_inclusion_depth,
-                                                'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time);
-        }
-    }
-
-    return $params['results'];
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.process_cached_inserts.php (from rev 1663, plog/trunk/class/template/smarty/core/core.process_cached_inserts.php)

Deleted: plog/trunk/class/template/smarty/core/core.process_compiled_include.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.process_compiled_include.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.process_compiled_include.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,32 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Replace nocache-tags by results of the corresponding non-cacheable
- * functions and return it
- *
- * @param string $compiled_tpl
- * @param string $cached_source
- * @return string
- */
-
-function smarty_core_process_compiled_include($params, &$smarty)
-{
-    $_cache_including = $smarty->_cache_including;
-    $smarty->_cache_including = true;
-
-    $_return = $params['results'];
-    foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) {
-        $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s',
-                                         array(&$smarty, '_process_compiled_include_callback'),
-                                         $_return);
-    }
-    $smarty->_cache_including = $_cache_including;
-    return $_return;
-}
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.process_compiled_include.php (from rev 1663, plog/trunk/class/template/smarty/core/core.process_compiled_include.php)

Deleted: plog/trunk/class/template/smarty/core/core.read_cache_file.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.read_cache_file.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.read_cache_file.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,111 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * read a cache file, determine if it needs to be
- * regenerated or not
- *
- * @param string $tpl_file
- * @param string $cache_id
- * @param string $compile_id
- * @param string $results
- * @return boolean
- */
-
-//  $tpl_file, $cache_id, $compile_id, &$results
-
-function smarty_core_read_cache_file(&$params, &$smarty)
-{
-    static  $content_cache = array();
-
-    if ($smarty->force_compile) {
-        // force compile enabled, always regenerate
-        return false;
-    }
-
-    if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) {
-        list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']];
-        return true;
-    }
-
-    if (!empty($smarty->cache_handler_func)) {
-        // use cache_handler function
-        call_user_func_array($smarty->cache_handler_func,
-                             array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
-    } else {
-        // use local cache file
-        $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
-        $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
-        $params['results'] = $smarty->_read_file($_cache_file);
-    }
-
-    if (empty($params['results'])) {
-        // nothing to parse (error?), regenerate cache
-        return false;
-    }
-
-    $cache_split = explode("\n", $params['results'], 2);
-    $cache_header = $cache_split[0];
-
-    $_cache_info = unserialize($cache_header);
-
-    if ($smarty->caching == 2 && isset ($_cache_info['expires'])){
-        // caching by expiration time
-        if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) {
-            // cache expired, regenerate
-            return false;
-        }
-    } else {
-        // caching by lifetime
-        if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) {
-            // cache expired, regenerate
-            return false;
-        }
-    }
-
-    if ($smarty->compile_check) {
-        $_params = array('get_source' => false, 'quiet'=>true);
-        foreach (array_keys($_cache_info['template']) as $_template_dep) {
-            $_params['resource_name'] = $_template_dep;
-            if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
-                // template file has changed, regenerate cache
-                return false;
-            }
-        }
-
-        if (isset($_cache_info['config'])) {
-            $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true);
-            foreach (array_keys($_cache_info['config']) as $_config_dep) {
-                $_params['resource_name'] = $_config_dep;
-                if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
-                    // config file has changed, regenerate cache
-                    return false;
-                }
-            }
-        }
-    }
-
-    foreach ($_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) {
-        if (empty($smarty->_cache_serials[$_include_file_path])) {
-            $smarty->_include($_include_file_path, true);
-        }
-
-        if ($smarty->_cache_serials[$_include_file_path] != $_cache_serial) {
-            /* regenerate */
-            return false;
-        }
-    }
-    $params['results'] = $cache_split[1];
-    $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info);
-
-    $smarty->_cache_info = $_cache_info;
-    return true;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.read_cache_file.php (from rev 1663, plog/trunk/class/template/smarty/core/core.read_cache_file.php)

Deleted: plog/trunk/class/template/smarty/core/core.rm_auto.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.rm_auto.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.rm_auto.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * delete an automagically created file by name and id
- *
- * @param string $auto_base
- * @param string $auto_source
- * @param string $auto_id
- * @param integer $exp_time
- * @return boolean
- */
-
-// $auto_base, $auto_source = null, $auto_id = null, $exp_time = null
-
-function smarty_core_rm_auto($params, &$smarty)
-{
-    if (!@is_dir($params['auto_base']))
-      return false;
-
-    if(!isset($params['auto_id']) && !isset($params['auto_source'])) {
-        $_params = array(
-            'dirname' => $params['auto_base'],
-            'level' => 0,
-            'exp_time' => $params['exp_time']
-        );
-        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php');
-        $_res = smarty_core_rmdir($_params, $smarty);
-    } else {
-        $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']);
-
-        if(isset($params['auto_source'])) {
-            if (isset($params['extensions'])) {
-                $_res = false;
-                foreach ((array)$params['extensions'] as $_extension)
-                    $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']);
-            } else {
-                $_res = $smarty->_unlink($_tname, $params['exp_time']);
-            }
-        } elseif ($smarty->use_sub_dirs) {
-            $_params = array(
-                'dirname' => $_tname,
-                'level' => 1,
-                'exp_time' => $params['exp_time']
-            );
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php');
-            $_res = smarty_core_rmdir($_params, $smarty);
-        } else {
-            // remove matching file names
-            $_handle = opendir($params['auto_base']);
-            $_res = true;
-            while (false !== ($_filename = readdir($_handle))) {
-                if($_filename == '.' || $_filename == '..') {
-                    continue;
-                } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) {
-                    $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']);
-                }
-            }
-        }
-    }
-
-    return $_res;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.rm_auto.php (from rev 1663, plog/trunk/class/template/smarty/core/core.rm_auto.php)

Deleted: plog/trunk/class/template/smarty/core/core.rmdir.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.rmdir.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.rmdir.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,55 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * delete a dir recursively (level=0 -> keep root)
- * WARNING: no tests, it will try to remove what you tell it!
- *
- * @param string $dirname
- * @param integer $level
- * @param integer $exp_time
- * @return boolean
- */
-
-//  $dirname, $level = 1, $exp_time = null
-
-function smarty_core_rmdir($params, &$smarty)
-{
-   if(!isset($params['level'])) { $params['level'] = 1; }
-   if(!isset($params['exp_time'])) { $params['exp_time'] = null; }
-
-   if($_handle = @opendir($params['dirname'])) {
-
-        while (false !== ($_entry = readdir($_handle))) {
-            if ($_entry != '.' && $_entry != '..') {
-                if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) {
-                    $_params = array(
-                        'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry,
-                        'level' => $params['level'] + 1,
-                        'exp_time' => $params['exp_time']
-                    );
-                    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php');
-                    smarty_core_rmdir($_params, $smarty);
-                }
-                else {
-                    $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']);
-                }
-            }
-        }
-        closedir($_handle);
-   }
-
-   if ($params['level']) {
-       return @rmdir($params['dirname']);
-   }
-   return (bool)$_handle;
-
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.rmdir.php (from rev 1663, plog/trunk/class/template/smarty/core/core.rmdir.php)

Deleted: plog/trunk/class/template/smarty/core/core.run_insert_handler.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.run_insert_handler.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.run_insert_handler.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,71 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Handle insert tags
- *
- * @param array $args
- * @return string
- */
-function smarty_core_run_insert_handler($params, &$smarty)
-{
-
-    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
-    if ($smarty->debugging) {
-        $_params = array();
-        $_debug_start_time = smarty_core_get_microtime($_params, $smarty);
-    }
-
-    if ($smarty->caching) {
-        $_arg_string = serialize($params['args']);
-        $_name = $params['args']['name'];
-        if (!isset($smarty->_cache_info['insert_tags'][$_name])) {
-            $smarty->_cache_info['insert_tags'][$_name] = array('insert',
-                                                             $_name,
-                                                             $smarty->_plugins['insert'][$_name][1],
-                                                             $smarty->_plugins['insert'][$_name][2],
-                                                             !empty($params['args']['script']) ? true : false);
-        }
-        return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5;
-    } else {
-        if (isset($params['args']['script'])) {
-            $_params = array('resource_name' => $smarty->_dequote($params['args']['script']));
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php');
-            if(!smarty_core_get_php_resource($_params, $smarty)) {
-                return false;
-            }
-
-            if ($_params['resource_type'] == 'file') {
-                $smarty->_include($_params['php_resource'], true);
-            } else {
-                $smarty->_eval($_params['php_resource']);
-            }
-            unset($params['args']['script']);
-        }
-
-        $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0];
-        $_content = $_funcname($params['args'], $smarty);
-        if ($smarty->debugging) {
-            $_params = array();
-            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
-            $smarty->_smarty_debug_info[] = array('type'      => 'insert',
-                                                'filename'  => 'insert_'.$params['args']['name'],
-                                                'depth'     => $smarty->_inclusion_depth,
-                                                'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
-        }
-
-        if (!empty($params['args']["assign"])) {
-            $smarty->assign($params['args']["assign"], $_content);
-        } else {
-            return $_content;
-        }
-    }
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.run_insert_handler.php (from rev 1663, plog/trunk/class/template/smarty/core/core.run_insert_handler.php)

Deleted: plog/trunk/class/template/smarty/core/core.smarty_include_php.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.smarty_include_php.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.smarty_include_php.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,50 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * called for included php files within templates
- *
- * @param string $smarty_file
- * @param string $smarty_assign variable to assign the included template's
- *               output into
- * @param boolean $smarty_once uses include_once if this is true
- * @param array $smarty_include_vars associative array of vars from
- *              {include file="blah" var=$var}
- */
-
-//  $file, $assign, $once, $_smarty_include_vars
-
-function smarty_core_smarty_include_php($params, &$smarty)
-{
-    $_params = array('resource_name' => $params['smarty_file']);
-    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php');
-    smarty_core_get_php_resource($_params, $smarty);
-    $_smarty_resource_type = $_params['resource_type'];
-    $_smarty_php_resource = $_params['php_resource'];
-
-    if (!empty($params['smarty_assign'])) {
-        ob_start();
-        if ($_smarty_resource_type == 'file') {
-            $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
-        } else {
-            $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
-        }
-        $smarty->assign($params['smarty_assign'], ob_get_contents());
-        ob_end_clean();
-    } else {
-        if ($_smarty_resource_type == 'file') {
-            $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
-        } else {
-            $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
-        }
-    }
-}
-
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.smarty_include_php.php (from rev 1663, plog/trunk/class/template/smarty/core/core.smarty_include_php.php)

Deleted: plog/trunk/class/template/smarty/core/core.write_cache_file.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.write_cache_file.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.write_cache_file.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,73 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Prepend the cache information to the cache file
- * and write it
- *
- * @param string $tpl_file
- * @param string $cache_id
- * @param string $compile_id
- * @param string $results
- * @return true|null
- */
-
- // $tpl_file, $cache_id, $compile_id, $results
-
-function smarty_core_write_cache_file($params, &$smarty)
-{
-
-    // put timestamp in cache header
-    $smarty->_cache_info['timestamp'] = time();
-    if ($smarty->cache_lifetime > -1){
-        // expiration set
-        $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime;
-    } else {
-        // cache will never expire
-        $smarty->_cache_info['expires'] = -1;
-    }
-
-    // collapse {nocache...}-tags
-    $params['results'] = preg_replace('!((\{nocache\:([0-9a-f]{32})#(\d+)\})'
-                                      .'.*'
-                                      .'{/nocache\:\\3#\\4\})!Us'
-                                      ,'\\2'
-                                      ,$params['results']);
-    $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials;
-
-    // prepend the cache header info into cache file
-    $params['results'] = serialize($smarty->_cache_info)."\n".$params['results'];
-
-    if (!empty($smarty->cache_handler_func)) {
-        // use cache_handler function
-        call_user_func_array($smarty->cache_handler_func,
-                             array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
-    } else {
-        // use local cache file
-
-        if(!@is_writable($smarty->cache_dir)) {
-            // cache_dir not writable, see if it exists
-            if(!@is_dir($smarty->cache_dir)) {
-                $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
-                return false;
-            }
-            $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR);
-            return false;
-        }
-
-        $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
-        $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
-        $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true);
-        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php');
-        smarty_core_write_file($_params, $smarty);
-        return true;
-    }
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.write_cache_file.php (from rev 1663, plog/trunk/class/template/smarty/core/core.write_cache_file.php)

Deleted: plog/trunk/class/template/smarty/core/core.write_compiled_include.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.write_compiled_include.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.write_compiled_include.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,59 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * Extract non-cacheable parts out of compiled template and write it
- *
- * @param string $compile_path
- * @param string $template_compiled
- * @param integer $template_timestamp
- * @return boolean
- */
-
-function smarty_core_write_compiled_include($params, &$smarty)
-{
-    $_tag_start = 'if \(\$this->caching\) \{ echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\';\}';
-    $_tag_end   = 'if \(\$this->caching\) \{ echo \'\{/nocache\:(\\2)#(\\3)\}\';\}';
-
-    preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us',
-                   $params['compiled_content'], $_match_source, PREG_SET_ORDER);
-
-    // no nocache-parts found: done
-    if (count($_match_source)==0) return;
-
-    // convert the matched php-code to functions
-    $_include_compiled = "<?php /* funky header here */\n\n";
-
-    $_compile_path = $params['include_file_path'];
-
-    $smarty->_cache_serials[$_compile_path] = $params['cache_serial'];
-    $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>";
-
-    $_include_compiled .= $params['plugins_code'];
-    $_include_compiled .= "<?php";
-    for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) {
-        $_match =& $_match_source[$_i];
-        $_include_compiled .= "
-function _smarty_tplfunc_$_match[2]_$_match[3](&\$this)
-{
-$_match[4]
-}
-
-";
-    }
-    $_include_compiled .= "\n\n?>\n";
-
-    $_params = array('filename' => $_compile_path,
-                     'contents' => $_include_compiled, 'create_dirs' => true);
-
-    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php');
-    smarty_core_write_file($_params, $smarty);
-    return true;
-}
-
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.write_compiled_include.php (from rev 1663, plog/trunk/class/template/smarty/core/core.write_compiled_include.php)

Deleted: plog/trunk/class/template/smarty/core/core.write_compiled_resource.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.write_compiled_resource.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.write_compiled_resource.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,36 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * write the compiled resource
- *
- * @param string $compile_path
- * @param string $compiled_content
- * @param integer $resource_timestamp
- * @return true
- */
-function smarty_core_write_compiled_resource($params, &$smarty)
-{
-    if(!@is_writable($smarty->compile_dir)) {
-        // compile_dir not writable, see if it exists
-        if(!@is_dir($smarty->compile_dir)) {
-            $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
-            return false;
-        }
-        $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR);
-        return false;
-    }
-
-    $_params = array('filename' => $params['compile_path'], 'timestamp'=>$params['resource_timestamp'], 'contents' => $params['compiled_content'], 'create_dirs' => true);
-    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php');
-    smarty_core_write_file($_params, $smarty);
-    return true;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.write_compiled_resource.php (from rev 1663, plog/trunk/class/template/smarty/core/core.write_compiled_resource.php)

Deleted: plog/trunk/class/template/smarty/core/core.write_file.php
===================================================================
--- plog/trunk/class/template/smarty/core/core.write_file.php	2005-03-31 07:38:12 UTC (rev 1663)
+++ plog/trunk/class/template/smarty/core/core.write_file.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,51 +0,0 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
-
-/**
- * write out a file to disk
- *
- * @param string $filename
- * @param string $contents
- * @param boolean $create_dirs
- * @return boolean
- */
-function smarty_core_write_file($params, &$smarty)
-{
-    $_dirname = dirname($params['filename']);
-
-    if ($params['create_dirs']) {
-        $_params = array('dir' => $_dirname);
-        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.create_dir_structure.php');
-        smarty_core_create_dir_structure($_params, $smarty);
-    }
-
-    // write to tmp file, then rename it to avoid
-    // file locking race condition
-    $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('');
-
-    if (!($fd = @fopen($_tmp_file, 'w'))) {
-        $smarty->trigger_error("problem writing temporary file '$_tmp_file'");
-        return false;
-    }
-
-    fwrite($fd, $params['contents']);
-    if (isset($params['timestamp'])) {
-       touch($_tmp_file, $params['timestamp']);
-    }
-    fclose($fd);
-    if(file_exists($params['filename'])) {
-        @unlink($params['filename']);
-    }
-    @rename($_tmp_file, $params['filename']);
-    @chmod($params['filename'], $smarty->_file_perms);
-
-    return true;
-}
-
-/* vim: set expandtab: */
-
-?>

Copied: plog/trunk/class/template/smarty/core/core.write_file.php (from rev 1663, plog/trunk/class/template/smarty/core/core.write_file.php)

Modified: plog/trunk/class/template/smarty/debug.tpl
===================================================================
--- plog/trunk/class/template/smarty/debug.tpl	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/debug.tpl	2006-02-01 17:25:02 UTC (rev 2881)
@@ -36,7 +36,7 @@
 	   var title = 'Console_' + self.name;
 	{rdelim}
 	_smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes");
-	_smarty_console.document.write("<HTML><HEAD><TITLE>Smarty Debug Console_"+self.name+"</TITLE></HEAD><BODY bgcolor=#ffffff>");
+	_smarty_console.document.write("<HTML><TITLE>Smarty Debug Console_"+self.name+"</TITLE><BODY bgcolor=#ffffff>");
 	_smarty_console.document.write("<table border=0 width=100%>");
 	_smarty_console.document.write("<tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>");
 	_smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>");

Modified: plog/trunk/class/template/smarty/plugins/block.textformat.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/block.textformat.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/block.textformat.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -23,7 +23,6 @@
  *           indent_char: string (" ")
  *           wrap_boundary: boolean (true)
  * </pre>
- * @author Monte Ohrt <monte at ohrt dot com>
  * @param string contents of the block
  * @param Smarty clever simulation of a method
  * @return string string $content re-formatted
@@ -72,30 +71,33 @@
     }
 
     // split into paragraphs
-    $_paragraphs = preg_split('![\r\n][\r\n]!',$content);
-    $_output = '';
+    $paragraphs = preg_split('![\r\n][\r\n]!',$content);
+    $output = '';
 
-    for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {
-        if ($_paragraphs[$_x] == '') {
+    foreach ($paragraphs as $paragraph) {
+        if ($paragraph == '') {
             continue;
         }
         // convert mult. spaces & special chars to single space
-        $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]);
+        $paragraph = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'),array(' ',''),$paragraph);
         // indent first line
         if($indent_first > 0) {
-            $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];
+            $paragraph = str_repeat($indent_char,$indent_first) . $paragraph;
         }
         // wordwrap sentences
-        $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut);
+        $paragraph = wordwrap($paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
         // indent lines
         if($indent > 0) {
-            $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);
+            $paragraph = preg_replace('!^!m',str_repeat($indent_char,$indent),$paragraph);
         }
+        $output .= $paragraph . $wrap_char . $wrap_char;
     }
-    $_output = implode($wrap_char . $wrap_char, $_paragraphs);
 
-    return $assign ? $smarty->assign($assign, $_output) : $_output;
-
+    if ($assign) {
+        $smarty->assign($assign,$output);
+    } else {
+        return $output;
+    }
 }
 
 /* vim: set expandtab: */

Modified: plog/trunk/class/template/smarty/plugins/compiler.assign.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/compiler.assign.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/compiler.assign.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,9 +1,4 @@
 <?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage plugins
- */
 
 /**
  * Smarty {assign} compiler function plugin
@@ -13,8 +8,6 @@
  * Purpose:  assign a value to a template variable
  * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign}
  *       (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com> (initial author)
- * @auther messju mohr <messju at lammfellpuschen dot de> (conversion to compiler function)
  * @param string containing var-attribute and value-attribute
  * @param Smarty_Compiler
  */

Modified: plog/trunk/class/template/smarty/plugins/function.assign_debug_info.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.assign_debug_info.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.assign_debug_info.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -11,7 +11,6 @@
  * Type:     function<br>
  * Name:     assign_debug_info<br>
  * Purpose:  assign debug info to the template<br>
- * @author Monte Ohrt <monte at ohrt dot com>
  * @param array unused in this plugin, this plugin uses {@link Smarty::$_config},
  *              {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info}
  * @param Smarty
@@ -25,7 +24,7 @@
         ksort($config_vars);
         $smarty->assign("_debug_config_keys", array_keys($config_vars));
         $smarty->assign("_debug_config_vals", array_values($config_vars));
-    }
+    }   
     
     $included_templates = $smarty->_smarty_debug_info;
     

Modified: plog/trunk/class/template/smarty/plugins/function.config_load.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.config_load.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.config_load.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -13,8 +13,6 @@
  * Purpose:  load config file vars
  * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load}
  *       (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author messju mohr <messju at lammfellpuschen dot de> (added use of resources)
  * @param array Format:
  * <pre>
  * array('file' => required config file name,
@@ -28,7 +26,7 @@
 {
         if ($smarty->debugging) {
             $_params = array();
-            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
             $_debug_start_time = smarty_core_get_microtime($_params, $smarty);
         }
 
@@ -55,9 +53,7 @@
             }
         }
 
-        $_params = array('resource_name' => $_file,
-                         'resource_base_path' => $smarty->config_dir,
-                         'get_source' => false);
+        $_params = array('resource_name' => $_file, 'resource_base_path' => $smarty->config_dir);
         $smarty->_parse_resource_name($_params);
         $_file_path = $_params['resource_type'] . ':' . $_params['resource_name'];
         if (isset($_section))
@@ -65,19 +61,10 @@
         else
             $_compile_file = $smarty->_get_compile_path($_file_path);
 
-        if($smarty->force_compile || !file_exists($_compile_file)) {
-            $_compile = true;
-        } elseif ($smarty->compile_check) {
-            $_params = array('resource_name' => $_file,
-                             'resource_base_path' => $smarty->config_dir,
-                             'get_source' => false);
-            $_compile = $smarty->_fetch_resource_info($_params) &&
-                $_params['resource_timestamp'] > filemtime($_compile_file);
-        } else {
-            $_compile = false;
-        }
-
-        if($_compile) {
+        if($smarty->force_compile
+                || !file_exists($_compile_file)
+                || ($smarty->compile_check
+                    && !$smarty->_is_compiled($_file_path, $_compile_file))) {
             // compile config file
             if(!is_object($smarty->_conf_obj)) {
                 require_once SMARTY_DIR . $smarty->config_class . '.class.php';
@@ -87,10 +74,7 @@
                 $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden;
                 $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines;
             }
-
-            $_params = array('resource_name' => $_file,
-                             'resource_base_path' => $smarty->config_dir,
-                             $_params['get_source'] = true);
+            $_params = array('resource_name' => $_file, 'resource_base_path' => $smarty->config_dir);
             if (!$smarty->_fetch_resource_info($_params)) {
                 return;
             }
@@ -103,7 +87,7 @@
                 $_output = '<?php $_config_vars = unserialize(\'' . strtr(serialize($_config_vars),array('\''=>'\\\'', '\\'=>'\\\\')) . '\'); ?>';
             }
             $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp']));
-            require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_resource.php');
             smarty_core_write_compiled_resource($_params, $smarty);
         } else {
             include($_compile_file);
@@ -128,7 +112,7 @@
 
         if ($smarty->debugging) {
             $_params = array();
-            require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
+            require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php');
             $smarty->_smarty_debug_info[] = array('type'      => 'config',
                                                 'filename'  => $_file.' ['.$_section.'] '.$_scope,
                                                 'depth'     => $smarty->_inclusion_depth,

Modified: plog/trunk/class/template/smarty/plugins/function.counter.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.counter.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.counter.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -12,7 +12,6 @@
  * Type:     function<br>
  * Name:     counter<br>
  * Purpose:  print out a counter value
- * @author Monte Ohrt <monte at ohrt dot com>
  * @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
  *       (Smarty online manual)
  * @param array parameters

Modified: plog/trunk/class/template/smarty/plugins/function.cycle.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.cycle.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.cycle.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -23,7 +23,7 @@
  *         - delimiter = the value delimiter, default is ","
  *         - assign = boolean, assigns to template var instead of
  *                    printed.
- *
+ * 
  * Examples:<br>
  * <pre>
  * {cycle values="#eeeeee,#d0d0d0d"}
@@ -32,7 +32,7 @@
  * </pre>
  * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle}
  *       (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Monte Ohrt <monte at ispi.net>
  * @author credit to Mark Priatel <mpriatel at rogers.com>
  * @author credit to Gerard <gerard at interfold.com>
  * @author credit to Jason Sweat <jsweat_php at yahoo.com>
@@ -66,7 +66,7 @@
     $cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['delimiter'] : ',';
     
     if(is_array($cycle_vars[$name]['values'])) {
-        $cycle_array = $cycle_vars[$name]['values'];
+        $cycle_array = $cycle_vars[$name]['values'];    
     } else {
         $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
     }
@@ -88,7 +88,7 @@
 
     if($advance) {
         if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
-            $cycle_vars[$name]['index'] = 0;
+            $cycle_vars[$name]['index'] = 0;            
         } else {
             $cycle_vars[$name]['index']++;
         }

Modified: plog/trunk/class/template/smarty/plugins/function.debug.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.debug.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.debug.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -15,7 +15,7 @@
  * Purpose:  popup debug window
  * @link http://smarty.php.net/manual/en/language.function.debug.php {debug}
  *       (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @version  1.0
  * @param array
  * @param Smarty
@@ -23,10 +23,10 @@
  */
 function smarty_function_debug($params, &$smarty)
 {
-    if (isset($params['output'])) {
-        $smarty->assign('_smarty_debug_output', $params['output']);
+    if($params['output']) {
+        $smarty->assign('_smarty_debug_output',$params['output']);
     }
-    require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
+    require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php');
     return smarty_core_display_debug_console(null, $smarty);
 }
 

Modified: plog/trunk/class/template/smarty/plugins/function.eval.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.eval.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.eval.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  evaluate a template variable as a template<br>
  * @link http://smarty.php.net/manual/en/language.function.eval.php {eval}
  *       (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
  * @param array
  * @param Smarty
  */

Modified: plog/trunk/class/template/smarty/plugins/function.fetch.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.fetch.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.fetch.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  fetch file, web or ftp data and display results
  * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch}
  *       (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
  * @param array
  * @param Smarty
  * @return string|null if the assign parameter is passed, Smarty assigns the
@@ -27,10 +26,9 @@
         return;
     }
 
-    $content = '';
     if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) {
         $_params = array('resource_type' => 'file', 'resource_name' => $params['file']);
-        require_once(SMARTY_CORE_DIR . 'core.is_secure.php');
+        require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php');
         if(!smarty_core_is_secure($_params, $smarty)) {
             $smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed');
             return;
@@ -65,12 +63,9 @@
                 } else {
                     $port = $uri_parts['port'];
                 }
-                if(!empty($uri_parts['user'])) {
-                    $user = $uri_parts['user'];
+                if(empty($uri_parts['user'])) {
+                    $user = '';
                 }
-                if(!empty($uri_parts['pass'])) {
-                    $pass = $uri_parts['pass'];
-                }
                 // loop through parameters, setup headers
                 foreach($params as $param_key => $param_value) {
                     switch($param_key) {
@@ -176,6 +171,7 @@
                         fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
                     }
 
+                    $content = '';
                     fputs($fp, "\r\n");
                     while(!feof($fp)) {
                         $content .= fgets($fp,4096);

Modified: plog/trunk/class/template/smarty/plugins/function.html_checkboxes.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_checkboxes.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_checkboxes.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -20,8 +20,7 @@
  *           - options    (optional) - associative array
  *           - checked    (optional) - array default not set
  *           - separator  (optional) - ie <br> or &nbsp;
- *           - output     (optional) - the output next to each checkbox
- *           - assign     (optional) - assign the output as an array to this variable
+ *           - output     (optional) - without this one the buttons don't have names
  * Examples:
  * <pre>
  * {html_checkboxes values=$ids output=$names}
@@ -31,7 +30,7 @@
  * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
  *      (Smarty online manual)
  * @author     Christopher Kvarme <christopher.kvarme at flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Monte Ohrt <monte at ispi.net>
  * @version    1.0
  * @param array
  * @param Smarty
@@ -82,9 +81,6 @@
                 $options = (array)$_val;
                 break;
 
-            case 'assign':
-                break;
-
             default:
                 if(!is_array($_val)) {
                     $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
@@ -99,27 +95,23 @@
         return ''; /* raise error here? */
 
     settype($selected, 'array');
-    $_html_result = array();
+    $_html_result = '';
 
-    if (isset($options)) {
+    if (is_array($options)) {
 
         foreach ($options as $_key=>$_val)
-            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
+            $_html_result .= smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
 
 
     } else {
         foreach ($values as $_i=>$_key) {
             $_val = isset($output[$_i]) ? $output[$_i] : '';
-            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
+            $_html_result .= smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
         }
 
     }
 
-    if(!empty($params['assign'])) {
-        $smarty->assign($params['assign'], $_html_result);
-    } else {
-        return implode("\n",$_html_result);
-    }
+    return $_html_result;
 
 }
 
@@ -135,7 +127,7 @@
     }
     $_output .= $extra . ' />' . $output;
     if ($labels) $_output .= '</label>';
-    $_output .=  $separator;
+    $_output .=  $separator . "\n";
 
     return $_output;
 }

Modified: plog/trunk/class/template/smarty/plugins/function.html_image.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_image.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_image.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -15,17 +15,17 @@
  * Purpose:  format HTML tags for the image<br>
  * Input:<br>
  *         - file = file (and path) of image (required)
+ *         - border = border width (optional, default 0)
  *         - height = image height (optional, default actual height)
- *         - width = image width (optional, default actual width)
+ *         - image =image width (optional, default actual width)
  *         - basedir = base directory for absolute paths, default
  *                     is environment variable DOCUMENT_ROOT
- *         - path_prefix = prefix for path output (optional, default empty)
  *
- * Examples: {html_image file="/images/masthead.gif"}
- * Output:   <img src="/images/masthead.gif" width=400 height=23>
+ * Examples: {html_image file="images/masthead.gif"}
+ * Output:   <img src="images/masthead.gif" border=0 width=400 height=23>
  * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image}
  *      (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @author credits to Duda <duda at big.hu> - wrote first image function
  *           in repository, helped with lots of functionality
  * @version  1.0
@@ -40,21 +40,21 @@
     
     $alt = '';
     $file = '';
+    $border = 0;
     $height = '';
     $width = '';
     $extra = '';
     $prefix = '';
     $suffix = '';
-    $path_prefix = '';
     $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];
     $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : '';
     foreach($params as $_key => $_val) {
         switch($_key) {
             case 'file':
+            case 'border':
             case 'height':
             case 'width':
             case 'dpi':
-            case 'path_prefix':
             case 'basedir':
                 $$_key = $_val;
                 break;
@@ -93,9 +93,15 @@
     } else {
         $_image_path = $file;
     }
-    
+
     if(!isset($params['width']) || !isset($params['height'])) {
-        if(!$_image_data = @getimagesize($_image_path)) {
+        if ($smarty->security &&
+            ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) &&
+            (require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php')) &&
+            (!smarty_core_is_secure($_params, $smarty)) ) {
+            $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE);
+
+        } elseif (!$_image_data = @getimagesize($_image_path)) {
             if(!file_exists($_image_path)) {
                 $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
                 return;
@@ -107,13 +113,7 @@
                 return;
             }
         }
-        if ($smarty->security &&
-            ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) &&
-            (require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) &&
-            (!smarty_core_is_secure($_params, $smarty)) ) {
-            $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE);
-        }        
-        
+
         if(!isset($params['width'])) {
             $width = $_image_data[0];
         }
@@ -134,7 +134,7 @@
         $height = round($height * $_resize);
     }
 
-    return $prefix . '<img src="'.$path_prefix.$file.'" alt="'.$alt.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix;
+    return $prefix . '<img src="'.$file.'" alt="'.$alt.'" border="'.$border.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix;
 }
 
 /* vim: set expandtab: */

Modified: plog/trunk/class/template/smarty/plugins/function.html_options.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_options.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_options.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -21,7 +21,6 @@
  *           the passed parameters
  * @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image}
  *      (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
  * @param array
  * @param Smarty
  * @return string
@@ -73,14 +72,14 @@
 
     $_html_result = '';
 
-    if (isset($options)) {
+    if (is_array($options)) {
         
         foreach ($options as $_key=>$_val)
             $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
 
     } else {
         
-        foreach ($values as $_i=>$_key) {
+        foreach ((array)$values as $_i=>$_key) {
             $_val = isset($output[$_i]) ? $output[$_i] : '';
             $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
         }

Modified: plog/trunk/class/template/smarty/plugins/function.html_radios.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_radios.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_radios.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -20,8 +20,7 @@
  *           - options    (optional) - associative array
  *           - checked    (optional) - array default not set
  *           - separator  (optional) - ie <br> or &nbsp;
- *           - output     (optional) - the output next to each radio button
- *           - assign     (optional) - assign the output as an array to this variable
+ *           - output     (optional) - without this one the buttons don't have names
  * Examples:
  * <pre>
  * {html_radios values=$ids output=$names}
@@ -31,7 +30,7 @@
  * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
  *      (Smarty online manual)
  * @author     Christopher Kvarme <christopher.kvarme at flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Monte Ohrt <monte at ispi.net>
  * @version    1.0
  * @param array
  * @param Smarty
@@ -48,7 +47,6 @@
     $selected = null;
     $separator = '';
     $labels = true;
-    $label_ids = false;
     $output = null;
     $extra = '';
 
@@ -69,7 +67,6 @@
                 break;
 
             case 'labels':
-            case 'label_ids':
                 $$_key = (bool)$_val;
                 break;
 
@@ -87,8 +84,6 @@
                 $options = (array)$_val;
                 break;
 
-            case 'assign':
-                break;
 
             default:
                 if(!is_array($_val)) {
@@ -103,52 +98,39 @@
     if (!isset($options) && !isset($values))
         return ''; /* raise error here? */
 
-    $_html_result = array();
+    $_html_result = '';
 
-    if (isset($options)) {
+    if (isset($options) && is_array($options)) {
 
-        foreach ($options as $_key=>$_val)
-            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
+        foreach ((array)$options as $_key=>$_val)
+            $_html_result .= smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
 
     } else {
 
-        foreach ($values as $_i=>$_key) {
+        foreach ((array)$values as $_i=>$_key) {
             $_val = isset($output[$_i]) ? $output[$_i] : '';
-            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
+            $_html_result .= smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
         }
 
     }
 
-    if(!empty($params['assign'])) {
-        $smarty->assign($params['assign'], $_html_result);
-    } else {
-        return implode("\n",$_html_result);
-    }
+    return $_html_result;
 
 }
 
-function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids) {
+function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels) {
     $_output = '';
-    if ($labels) {
-      if($label_ids) {
-          $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!', '_', $name . '_' . $value));
-          $_output .= '<label for="' . $_id . '">';
-      } else {
-          $_output .= '<label>';           
-      }
-   }
-   $_output .= '<input type="radio" name="'
+    if ($labels) $_output .= '<label>';
+    $_output .= '<input type="radio" name="'
         . smarty_function_escape_special_chars($name) . '" value="'
         . smarty_function_escape_special_chars($value) . '"';
 
-   if ($labels && $label_ids) $_output .= ' id="' . $_id . '"';
-
-    if ((string)$value==$selected) {
+    if ($value==$selected) {
         $_output .= ' checked="checked"';
     }
     $_output .= $extra . ' />' . $output;
     if ($labels) $_output .= '</label>';
-    $_output .=  $separator;
+    $_output .=  $separator . "\n";
 
     return $_output;
 }

Modified: plog/trunk/class/template/smarty/plugins/function.html_select_date.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_select_date.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_select_date.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -22,20 +22,16 @@
  *                month values (Gary Loescher)
  *           - 1.3.1 added support for choosing format for
  *                day values (Marcus Bointon)
- *           - 1.3.2 suppport negative timestamps, force year
- *             dropdown to include given date unless explicitly set (Monte)
  * @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date}
  *      (Smarty online manual)
- * @version 1.3.2
- * @author Andrei Zmievski
- * @author Monte Ohrt <monte at ohrt dot com>
+ * @version 1.3.1
+ * @author   Andrei Zmievski
  * @param array
  * @param Smarty
  * @return string
  */
 function smarty_function_html_select_date($params, &$smarty)
 {
-    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
     require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
     require_once $smarty->_get_plugin_filepath('function','html_options');
     /* Default values. */
@@ -80,7 +76,6 @@
     $day_empty       = null;
     $month_empty     = null;
     $year_empty      = null;
-    $extra_attrs     = '';
 
     foreach ($params as $_key=>$_value) {
         switch ($_key) {
@@ -122,28 +117,21 @@
                 break;
 
             default:
-                if(!is_array($_value)) {
-                    $extra_attrs .= ' '.$_key.'="'.smarty_function_escape_special_chars($_value).'"';
-                } else {
-                    $smarty->trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
-                }
-                break;
+                $smarty->trigger_error("[html_select_date] unknown parameter $_key", E_USER_WARNING);
+
         }
     }
 
-    if(preg_match('!^-\d+$!',$time)) {
-        // negative timestamp, use date()
-        $time = date('Y-m-d',$time);
-    }
     // If $time is not in format yyyy-mm-dd
     if (!preg_match('/^\d{0,4}-\d{0,2}-\d{0,2}$/', $time)) {
-        // use smarty_make_timestamp to get an unix timestamp and
+        // then $time is empty or unix timestamp or mysql timestamp
+        // using smarty_make_timestamp to get an unix timestamp and
         // strftime to make yyyy-mm-dd
         $time = strftime('%Y-%m-%d', smarty_make_timestamp($time));
     }
     // Now split this in pieces, which later can be used to set the select
     $time = explode("-", $time);
-    
+
     // make syntax "+N" or "-N" work with start_year and end_year
     if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) {
         if ($match[1] == '+') {
@@ -159,16 +147,6 @@
             $start_year = strftime('%Y') - $match[2];
         }
     }
-    if (strlen($time[0]) > 0) { 
-        if ($start_year > $time[0] && !isset($params['start_year'])) {
-            // force start year to include given date if not explicitly set
-            $start_year = $time[0];
-        }
-        if($end_year < $time[0] && !isset($params['end_year'])) {
-            // force end year to include given date if not explicitly set
-            $end_year = $time[0];
-        }
-    }
 
     $field_order = strtoupper($field_order);
 
@@ -201,13 +179,14 @@
         if (null !== $all_extra){
             $month_result .= ' ' . $all_extra;
         }
-        $month_result .= $extra_attrs . '>'."\n";
+        $month_result .= '>'."\n";
 
         $month_result .= smarty_function_html_options(array('output'     => $month_names,
                                                             'values'     => $month_values,
-                                                            'selected'   => (int)$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '',
+                                                            'selected'   => $month_values[(int)$time[1]],
                                                             'print_result' => false),
                                                       $smarty);
+
         $month_result .= '</select>';
     }
 
@@ -237,7 +216,7 @@
         if (null !== $day_extra){
             $day_result .= ' ' . $day_extra;
         }
-        $day_result .= $extra_attrs . '>'."\n";
+        $day_result .= '>'."\n";
         $day_result .= smarty_function_html_options(array('output'     => $days,
                                                           'values'     => $day_values,
                                                           'selected'   => $time[2],
@@ -260,13 +239,11 @@
             if (null !== $year_extra){
                 $year_result .= ' ' . $year_extra;
             }
-            $year_result .= ' />';
+            $year_result .= '>';
         } else {
             $years = range((int)$start_year, (int)$end_year);
             if ($reverse_years) {
                 rsort($years, SORT_NUMERIC);
-            } else {
-                sort($years, SORT_NUMERIC);
             }
             $yearvals = $years;
             if(isset($year_empty)) {
@@ -283,7 +260,7 @@
             if (null !== $year_extra){
                 $year_result .= ' ' . $year_extra;
             }
-            $year_result .= $extra_attrs . '>'."\n";
+            $year_result .= '>'."\n";
             $year_result .= smarty_function_html_options(array('output' => $years,
                                                                'values' => $yearvals,
                                                                'selected'   => $time[0],

Modified: plog/trunk/class/template/smarty/plugins/function.html_select_time.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_select_time.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_select_time.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,8 +14,6 @@
  * Purpose:  Prints the dropdowns for time selection
  * @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time}
  *          (Smarty online manual)
- * @author Roberto Berto <roberto at berto.net>
- * @credits Monte Ohrt <monte AT ohrt DOT com>
  * @param array
  * @param Smarty
  * @return string

Modified: plog/trunk/class/template/smarty/plugins/function.html_table.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.html_table.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.html_table.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -33,7 +33,7 @@
  * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
  * {table loop=$data cols=4 tr_attr=$colors}
  * </pre>
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @version  1.0
  * @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table}
  *          (Smarty online manual)
@@ -73,7 +73,6 @@
             case 'trailpad':
             case 'hdir':
             case 'vdir':
-            case 'inner':
                 $$_key = (string)$_value;
                 break;
 

Modified: plog/trunk/class/template/smarty/plugins/function.mailto.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.mailto.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.mailto.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -20,7 +20,6 @@
  *         - encode = (optional) can be one of:
  *                * none : no encoding (default)
  *                * javascript : encode with javascript
- *                * javascript_charcode : encode with javascript charcode
  *                * hex : encode with hexidecimal (no javascript)
  *         - cc = (optional) address(es) to carbon copy
  *         - bcc = (optional) address(es) to blind carbon copy
@@ -41,7 +40,7 @@
  * @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}
  *          (Smarty online manual)
  * @version  1.2
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @author   credits to Jason Sweat (added cc, bcc and subject functionality)
  * @param    array
  * @param    Smarty
@@ -49,7 +48,7 @@
  */
 function smarty_function_mailto($params, &$smarty)
 {
-    $extra = '';
+    $extra = '';    
 
     if (empty($params['address'])) {
         $smarty->trigger_error("mailto: missing 'address' parameter");
@@ -93,7 +92,7 @@
     $address .= $mail_parm_vals;
 
     $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
-    if (!in_array($encode,array('javascript','javascript_charcode','hex','none')) ) {
+    if (!in_array($encode,array('javascript','hex','none')) ) {
         $smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex");
         return;
     }
@@ -106,27 +105,8 @@
             $js_encode .= '%' . bin2hex($string[$x]);
         }
 
-        return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>';
+        return '<script type="text/javascript" language="javascript">eval(unescape(\''.$js_encode.'\'))</script>';
 
-    } elseif ($encode == 'javascript_charcode' ) {
-        $string = '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
-
-        for($x = 0, $y = strlen($string); $x < $y; $x++ ) {
-            $ord[] = ord($string[$x]);   
-        }
-
-        $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n";
-        $_ret .= "<!--\n";
-        $_ret .= "{document.write(String.fromCharCode(";
-        $_ret .= implode(',',$ord);
-        $_ret .= "))";
-        $_ret .= "}\n";
-        $_ret .= "//-->\n";
-        $_ret .= "</script>\n";
-        
-        return $_ret;
-        
-        
     } elseif ($encode == 'hex') {
 
         preg_match('!^(.*)(\?.*)$!',$address,$match);
@@ -134,7 +114,6 @@
             $smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");
             return;
         }
-        $address_encode = '';
         for ($x=0; $x < strlen($address); $x++) {
             if(preg_match('!\w!',$address[$x])) {
                 $address_encode .= '%' . bin2hex($address[$x]);
@@ -142,13 +121,11 @@
                 $address_encode .= $address[$x];
             }
         }
-        $text_encode = '';
         for ($x=0; $x < strlen($text); $x++) {
             $text_encode .= '&#x' . bin2hex($text[$x]).';';
         }
 
-        $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
-        return '<a href="'.$mailto.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';
+        return '<a href="mailto:'.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';
 
     } else {
         // no encoding

Modified: plog/trunk/class/template/smarty/plugins/function.math.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.math.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.math.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  handle math computations in template<br>
  * @link http://smarty.php.net/manual/en/language.function.math.php {math}
  *          (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param array
  * @param Smarty
  * @return string
@@ -36,13 +35,12 @@
     }
 
     // match all vars in equation, make sure all are passed
-    preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]+)!",$equation, $match);
+    preg_match_all("!\!(0x)([a-zA-Z][a-zA-Z0-9_]*)!",$equation, $match);
     $allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10',
                            'max','min','pi','pow','rand','round','sin','sqrt','srand','tan');
-    
-    foreach($match[1] as $curr_var) {
-        if ($curr_var && !in_array($curr_var, array_keys($params)) && !in_array($curr_var, $allowed_funcs)) {
-            $smarty->trigger_error("math: function call $curr_var not allowed");
+    foreach($match[2] as $curr_var) {
+        if (!in_array($curr_var,array_keys($params)) && !in_array($curr_var, $allowed_funcs)) {
+            $smarty->trigger_error("math: parameter $curr_var not passed as argument");
             return;
         }
     }
@@ -58,7 +56,7 @@
                 $smarty->trigger_error("math: parameter $key: is not numeric");
                 return;
             }
-            $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+            $equation = preg_replace("/\b$key\b/",$val, $equation);
         }
     }
 

Modified: plog/trunk/class/template/smarty/plugins/function.popup.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.popup.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.popup.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  make text pop up in windows via overlib
  * @link http://smarty.php.net/manual/en/language.function.popup.php {popup}
  *          (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param array
  * @param Smarty
  * @return string
@@ -26,11 +25,7 @@
         switch ($_key) {
             case 'text':
             case 'trigger':
-            case 'function':
-            case 'inarray':
                 $$_key = (string)$_value;
-                if ($_key == 'function' || $_key == 'inarray')
-                    $append .= ',' . strtoupper($_key) . ",'$_value'";
                 break;
 
             case 'caption':
@@ -47,15 +42,6 @@
             case 'textfont':
             case 'captionfont':
             case 'closefont':
-            case 'fgbackground':
-            case 'bgbackground':
-            case 'caparray':
-            case 'capicon':
-            case 'background':
-            case 'frame':
-                $append .= ',' . strtoupper($_key) . ",'$_value'";
-                break;
-
             case 'textsize':
             case 'captionsize':
             case 'closesize':
@@ -64,15 +50,23 @@
             case 'border':
             case 'offsetx':
             case 'offsety':
+            case 'fgbackground':
+            case 'bgbackground':
+            case 'inarray':
+            case 'caparray':
+            case 'capicon':
             case 'snapx':
             case 'snapy':
             case 'fixx':
             case 'fixy':
+            case 'background':
             case 'padx':
             case 'pady':
+            case 'frame':
             case 'timeout':
             case 'delay':
-                $append .= ',' . strtoupper($_key) . ",$_value";
+            case 'function':
+                $append .= ',' . strtoupper($_key) . ",'$_value'";
                 break;
 
             case 'sticky':
@@ -87,9 +81,6 @@
             case 'fullhtml':
             case 'hauto':
             case 'vauto':
-            case 'mouseoff':
-            case 'followmouse':
-            case 'closeclick':
                 if ($_value) $append .= ',' . strtoupper($_key);
                 break;
 
@@ -106,11 +97,8 @@
     if (empty($trigger)) { $trigger = "onmouseover"; }
 
     $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\'';
-    $retval .= $append . ');"';
-    if ($trigger == 'onmouseover')
-       $retval .= ' onmouseout="nd();"';
+    $retval .= $append . ');" onmouseout="nd();"';
 
-
     return $retval;
 }
 

Modified: plog/trunk/class/template/smarty/plugins/function.popup_init.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/function.popup_init.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/function.popup_init.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  initialize overlib
  * @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init}
  *          (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param array
  * @param Smarty
  * @return string

Modified: plog/trunk/class/template/smarty/plugins/modifier.capitalize.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.capitalize.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.capitalize.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,30 +14,12 @@
  * Purpose:  capitalize words in the string
  * @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE
  *      capitalize (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return string
  */
-function smarty_modifier_capitalize($string, $uc_digits = false)
+function smarty_modifier_capitalize($string)
 {
-    smarty_modifier_capitalize_ucfirst(null, $uc_digits);
-    return preg_replace_callback('!\b\w+\b!', 'smarty_modifier_capitalize_ucfirst', $string);
+    return ucwords($string);
 }
 
-function smarty_modifier_capitalize_ucfirst($string, $uc_digits = null)
-{
-    static $_uc_digits = false;
-    
-    if(isset($uc_digits)) {
-        $_uc_digits = $uc_digits;
-        return;
-    }
-    
-    if(!preg_match('!\d!',$string[0]) || $_uc_digits)
-        return ucfirst($string[0]);
-    else
-        return $string[0];
-}
-
-
 ?>

Modified: plog/trunk/class/template/smarty/plugins/modifier.cat.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.cat.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.cat.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -17,7 +17,7 @@
  * Example:  {$var|cat:"foo"}
  * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
  *          (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @version 1.0
  * @param string
  * @param string

Modified: plog/trunk/class/template/smarty/plugins/modifier.count_characters.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.count_characters.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.count_characters.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  count the number of characters in a text
  * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php
  *          count_characters (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param boolean include whitespace in the character count
  * @return integer

Modified: plog/trunk/class/template/smarty/plugins/modifier.count_paragraphs.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.count_paragraphs.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.count_paragraphs.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  count the number of paragraphs in a text
  * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
  *          count_paragraphs (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return integer
  */

Modified: plog/trunk/class/template/smarty/plugins/modifier.count_sentences.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.count_sentences.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.count_sentences.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  count the number of sentences in a text
  * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
  *          count_sentences (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return integer
  */

Modified: plog/trunk/class/template/smarty/plugins/modifier.count_words.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.count_words.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.count_words.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  count the number of words in a text
  * @link http://smarty.php.net/manual/en/language.modifier.count.words.php
  *          count_words (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return integer
  */

Modified: plog/trunk/class/template/smarty/plugins/modifier.date_format.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.date_format.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.date_format.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -21,7 +21,6 @@
  *         - default_date: default date if $string is empty
  * @link http://smarty.php.net/manual/en/language.modifier.date.format.php
  *          date_format (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param string
  * @param string
@@ -30,11 +29,6 @@
  */
 function smarty_modifier_date_format($string, $format="%b %e, %Y", $default_date=null)
 {
-    if (substr(PHP_OS,0,3) == 'WIN') {
-           $_win_from = array ('%e',  '%T',       '%D');
-           $_win_to   = array ('%#d', '%H:%M:%S', '%m/%d/%y');
-           $format = str_replace($_win_from, $_win_to, $format);
-    }
     if($string != '') {
         return strftime($format, smarty_make_timestamp($string));
     } elseif (isset($default_date) && $default_date != '') {

Modified: plog/trunk/class/template/smarty/plugins/modifier.debug_print_var.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.debug_print_var.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.debug_print_var.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  formats variable contents for display in the console
  * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php
  *          debug_print_var (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param array|object
  * @param integer
  * @param integer

Modified: plog/trunk/class/template/smarty/plugins/modifier.default.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.default.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.default.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  designate default value for empty variables
  * @link http://smarty.php.net/manual/en/language.modifier.default.php
  *          default (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param string
  * @return string

Modified: plog/trunk/class/template/smarty/plugins/modifier.escape.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.escape.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.escape.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,26 +14,25 @@
  * Purpose:  Escape the string according to escapement type
  * @link http://smarty.php.net/manual/en/language.modifier.escape.php
  *          escape (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param html|htmlall|url|quotes|hex|hexentity|javascript
  * @return string
  */
-function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
+function smarty_modifier_escape($string, $esc_type = 'html')
 {
     switch ($esc_type) {
         case 'html':
-            return htmlspecialchars($string, ENT_QUOTES, $char_set);
+            return htmlspecialchars($string, ENT_QUOTES);
 
         case 'htmlall':
-            return htmlentities($string, ENT_QUOTES, $char_set);
+            return htmlentities($string, ENT_QUOTES);
 
         case 'url':
+            return urlencode($string);
+            
+        case 'raw':
             return rawurlencode($string);
 
-        case 'urlpathinfo':
-            return str_replace('%2F','/',rawurlencode($string));
-            
         case 'quotes':
             // escape unescaped single quotes
             return preg_replace("%(?<!\\\\)'%", "\\'", $string);
@@ -53,35 +52,9 @@
             }
             return $return;
 
-        case 'decentity':
-            $return = '';
-            for ($x=0; $x < strlen($string); $x++) {
-                $return .= '&#' . ord($string[$x]) . ';';
-            }
-            return $return;
-
         case 'javascript':
-            // escape quotes and backslashes, newlines, etc.
-            return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
-            
-        case 'mail':
-            // safe way to display e-mail address on a web page
-            return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);
-            
-        case 'nonstd':
-           // escape non-standard chars, such as ms document quotes
-           $_res = '';
-           for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {
-               $_ord = ord(substr($string, $_i, 1));
-               // non-standard char, escape it
-               if($_ord >= 126){
-                   $_res .= '&#' . $_ord . ';';
-               }
-               else {
-                   $_res .= substr($string, $_i, 1);
-               }
-           }
-           return $_res;
+            // escape quotes and backslashes and newlines
+            return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n'));
 
         default:
             return $string;

Modified: plog/trunk/class/template/smarty/plugins/modifier.indent.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.indent.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.indent.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  indent lines of text
  * @link http://smarty.php.net/manual/en/language.modifier.indent.php
  *          indent (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param integer
  * @param string

Modified: plog/trunk/class/template/smarty/plugins/modifier.lower.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.lower.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.lower.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  convert string to lowercase
  * @link http://smarty.php.net/manual/en/language.modifier.lower.php
  *          lower (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return string
  */

Modified: plog/trunk/class/template/smarty/plugins/modifier.nl2br.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.nl2br.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.nl2br.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -21,7 +21,7 @@
  * @link http://smarty.php.net/manual/en/language.modifier.nl2br.php
  *          nl2br (Smarty online manual)
  * @version  1.0
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @param string
  * @return string
  */

Modified: plog/trunk/class/template/smarty/plugins/modifier.regex_replace.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.regex_replace.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.regex_replace.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  regular epxression search/replace
  * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
  *          regex_replace (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param string|array
  * @param string|array
@@ -22,10 +21,6 @@
  */
 function smarty_modifier_regex_replace($string, $search, $replace)
 {
-    if (preg_match('!\W(\w+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
-        /* remove eval-modifier from $search */
-        $search = substr($search, 0, -strlen($match[1])) . str_replace('e', '', $match[1]);
-    }
     return preg_replace($search, $replace, $string);
 }
 

Modified: plog/trunk/class/template/smarty/plugins/modifier.replace.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.replace.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.replace.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  simple search/replace
  * @link http://smarty.php.net/manual/en/language.modifier.replace.php
  *          replace (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param string
  * @param string

Modified: plog/trunk/class/template/smarty/plugins/modifier.spacify.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.spacify.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.spacify.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  add spaces between characters in a string
  * @link http://smarty.php.net/manual/en/language.modifier.spacify.php
  *          spacify (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param string
  * @return string

Deleted: plog/trunk/class/template/smarty/plugins/modifier.stars.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.stars.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.stars.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * Smarty plugin
- * -------------------------------------------------------------
- * Type:     modifier
- * Name:     stars
- * Purpose:  convert chars to stars, excluding N suffix chars
- * Date:     April 15th, 2004
- * Version:  1.0
- * Author:   Monte Ohrt <monte at ohrt dot com>
- * -------------------------------------------------------------
- */
-function smarty_modifier_stars($string, $suffix = 0, $char = '*')
-{
-    $_prefix_len = strlen($string) - $suffix;
-    if($_prefix_len > 0) {
-        return str_repeat($char, $_prefix_len) . substr($string, -$suffix, $suffix);
-    } else {
-        return $string;
-    }
-}
-
-?>
\ No newline at end of file

Modified: plog/trunk/class/template/smarty/plugins/modifier.string_format.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.string_format.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.string_format.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  format strings via sprintf
  * @link http://smarty.php.net/manual/en/language.modifier.string.format.php
  *          string_format (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param string
  * @return string

Modified: plog/trunk/class/template/smarty/plugins/modifier.strip.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.strip.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.strip.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -17,7 +17,7 @@
  * Date:     September 25th, 2002
  * @link http://smarty.php.net/manual/en/language.modifier.strip.php
  *          strip (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @version  1.0
  * @param string
  * @param string

Modified: plog/trunk/class/template/smarty/plugins/modifier.strip_tags.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.strip_tags.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.strip_tags.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  strip html tags from text
  * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php
  *          strip_tags (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param boolean
  * @return string

Deleted: plog/trunk/class/template/smarty/plugins/modifier.substr.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.substr.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.substr.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,18 +0,0 @@
-<?php
-/**
- * Smarty substr modifier plugin
- *
- * Type:     modifier<br>
- * Name:     smarty<br>
- * Purpose:  make php's substr available to templates.
- */
-function smarty_modifier_substr($string, $start = -1, $length = -1){
-   if($start == -1 && $length == -1)
-     return substr($string);
-   else if($length == -1)
-     return substr($string, $start);
-   else
-     return substr($string, $start, $length);
-}
-
-?>

Modified: plog/trunk/class/template/smarty/plugins/modifier.truncate.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.truncate.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.truncate.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -13,36 +13,29 @@
  * Name:     truncate<br>
  * Purpose:  Truncate a string to a certain length if necessary,
  *           optionally splitting in the middle of a word, and
- *           appending the $etc string or inserting $etc into the middle.
+ *           appending the $etc string.
  * @link http://smarty.php.net/manual/en/language.modifier.truncate.php
  *          truncate (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param integer
  * @param string
  * @param boolean
- * @param boolean
  * @return string
  */
 function smarty_modifier_truncate($string, $length = 80, $etc = '...',
-                                  $break_words = false, $middle = false)
+                                  $break_words = false)
 {
     if ($length == 0)
         return '';
 
     if (strlen($string) > $length) {
         $length -= strlen($etc);
-        if (!$break_words && !$middle) {
+        if (!$break_words)
             $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
-        }
-        if(!$middle) {
-            return substr($string, 0, $length).$etc;
-        } else {
-            return substr($string, 0, $length/2) . $etc . substr($string, -$length/2);
-        }
-    } else {
+      
+        return substr($string, 0, $length).$etc;
+    } else
         return $string;
-    }
 }
 
 /* vim: set expandtab: */

Modified: plog/trunk/class/template/smarty/plugins/modifier.upper.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.upper.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.upper.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  convert string to uppercase
  * @link http://smarty.php.net/manual/en/language.modifier.upper.php
  *          upper (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return string
  */

Deleted: plog/trunk/class/template/smarty/plugins/modifier.utf8_truncate.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.utf8_truncate.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.utf8_truncate.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -1,33 +0,0 @@
-<?php
-include_once(PLOG_CLASS_PATH.'class/data/utf8/utf8_funcs.php');
-
-/**
- * Smarty truncate modifier plugin
- *
- * Type:     modifier<br>
- * Name:     utf8_truncate<br>
- * @param string
- * @param integer
- * @param string
- * @param boolean
- * @return string
- */
-function smarty_modifier_utf8_truncate($string, $length = 80, $etc = '...',
-                                  $break_words = false)
-{
-    if ($length == 0)
-        return '';
-
-    if (utf8_strlen($string) > $length) {
-        $length -= strlen($etc);
-        if (!$break_words)
-            $string = preg_replace('/\s+?(\w+)?$/', '', utf8_substr($string, 0, $length+1));
-      
-        return utf8_substr($string, 0, $length).$etc;
-    } else
-        return $string;
-}
-
-/* vim: set expandtab: */
-
-?>

Modified: plog/trunk/class/template/smarty/plugins/modifier.wordwrap.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/modifier.wordwrap.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/modifier.wordwrap.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -14,7 +14,6 @@
  * Purpose:  wrap a string of text at a given length
  * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php
  *          wordwrap (Smarty online manual)
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @param integer
  * @param string

Modified: plog/trunk/class/template/smarty/plugins/outputfilter.trimwhitespace.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/outputfilter.trimwhitespace.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/outputfilter.trimwhitespace.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -19,7 +19,7 @@
  * Install:  Drop into the plugin directory, call
  *           <code>$smarty->load_filter('output','trimwhitespace');</code>
  *           from application.
- * @author   Monte Ohrt <monte at ohrt dot com>
+ * @author   Monte Ohrt <monte at ispi.net>
  * @author Contributions from Lars Noschinski <lars at usenet.noschinski.de>
  * @version  1.3
  * @param string

Modified: plog/trunk/class/template/smarty/plugins/shared.escape_special_chars.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/shared.escape_special_chars.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/shared.escape_special_chars.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -12,7 +12,6 @@
  * Function: smarty_function_escape_special_chars<br>
  * Purpose:  used by other smarty functions to escape
  *           special chars except for already escaped ones
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return string
  */

Modified: plog/trunk/class/template/smarty/plugins/shared.make_timestamp.php
===================================================================
--- plog/trunk/class/template/smarty/plugins/shared.make_timestamp.php	2006-02-01 16:49:33 UTC (rev 2880)
+++ plog/trunk/class/template/smarty/plugins/shared.make_timestamp.php	2006-02-01 17:25:02 UTC (rev 2881)
@@ -10,35 +10,32 @@
  * Function: smarty_make_timestamp<br>
  * Purpose:  used by other smarty functions to make a timestamp
  *           from a string.
- * @author   Monte Ohrt <monte at ohrt dot com>
  * @param string
  * @return string
  */
 function smarty_make_timestamp($string)
 {
     if(empty($string)) {
-        // use "now":
-        $time = time();
+        $string = "now";
+    }
+    $time = strtotime($string);
+    if (is_numeric($time) && $time != -1)
+        return $time;
 
-    } elseif (preg_match('/^\d{14}$/', $string)) {
-        // it is mysql timestamp format of YYYYMMDDHHMMSS?            
-        $time = mktime(substr($string, 8, 2),substr($string, 10, 2),substr($string, 12, 2),
-                       substr($string, 4, 2),substr($string, 6, 2),substr($string, 0, 4));
-        
-    } elseif (is_numeric($string)) {
-        // it is a numeric string, we handle it as timestamp
-        $time = (int)$string;
-        
-    } else {
-        // strtotime should handle it
-        $time = strtotime($string);
-        if ($time == -1 || $time === false) {
-            // strtotime() was not able to parse $string, use "now":
-            $time = time();
-        }
+    // is mysql timestamp format of YYYYMMDDHHMMSS?
+    if (preg_match('/^\d{14}$/', $string)) {
+        $time = mktime(substr($string,8,2),substr($string,10,2),substr($string,12,2),
+               substr($string,4,2),substr($string,6,2),substr($string,0,4));
+
+        return $time;
     }
-    return $time;
 
+    // couldn't recognize it, try to return a time
+    $time = (int) $string;
+    if ($time > 0)
+        return $time;
+    else
+        return time();
 }
 
 /* vim: set expandtab: */



More information about the pLog-svn mailing list