Merge branch 'v3.1.19'

This commit is contained in:
Uwe Tews
2014-10-31 02:29:14 +01:00
131 changed files with 7459 additions and 5510 deletions

View File

@@ -1,12 +1,31 @@
===== 3.1.19-dev ===== (xx.xx.2014) ===== 3.1.20-dev ===== (xx.xx.2014)
===== 3.1.19 ===== (30.06.2014)
20.06.2014
- bugfix template variables could not be passed as paramter in {include} when the include was in a {nocache} section (topic 25131)
17.06.2014
- bugfix large template text of some charsets could cause parsing errors (topic 24630)
08.06.2014
- bugfix registered objects did not work after spelling fixes of 06.06.2014
- bugfix {block} tags within {literal} .. {/literal} got not displayed correctly (topic 25024)
- bugfix UNC WINDOWS PATH like "\\psf\path\to\dir" did not work as template directory (Issue 192)
- bugfix {html_image} security check did fail on files relative to basedir (Issue 191)
06.06.2014
- fixed PHPUnit outputFilterTrimWhitespaceTests.php assertion of test result
- fixed spelling, PHPDoc , minor errors, code cleanup
02.06.2014
- using multiple cwd with relative template dirs could result in identical compiled file names. (issue 194 and topic 25099)
19.04.2014 19.04.2014
- bugfix calling createTemplate(template, data) with empty data array caused notice of array to string conversion (Issue 189) - bugfix calling createTemplate(template, data) with empty data array caused notice of array to string conversion (Issue 189)
- bugfix clearCompiledTemplate() did not delete files on WINDOWS when a compile_id was specified - bugfix clearCompiledTemplate() did not delete files on WINDOWS when a compile_id was specified
18.04.2014 18.04.2014
- revert bugfix of 5.4.2015 because %-e date format is not supported on all operating systems - revert bugfix of 5.4.2014 because %-e date format is not supported on all operating systems
===== 3.1.18 ===== (07.04.2014) ===== 3.1.18 ===== (07.04.2014)
06.04.2014 06.04.2014

View File

@@ -1,7 +1,7 @@
<?php <?php
/** /**
* Example Application * Example Application
*
* @package Example-application * @package Example-application
*/ */

View File

@@ -2,10 +2,10 @@
/** /**
* APC CacheResource * APC CacheResource
*
* CacheResource Implementation based on the KeyValueStore API to use * CacheResource Implementation based on the KeyValueStore API to use
* memcache as the storage resource for Smarty's output caching. * memcache as the storage resource for Smarty's output caching.
* * * *
*
* @package CacheResource-examples * @package CacheResource-examples
* @author Uwe Tews * @author Uwe Tews
*/ */
@@ -23,6 +23,7 @@ class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
* Read values for a set of keys from cache * Read values for a set of keys from cache
* *
* @param array $keys list of keys to fetch * @param array $keys list of keys to fetch
*
* @return array list of values with the given keys used as indexes * @return array list of values with the given keys used as indexes
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
@@ -42,6 +43,7 @@ class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
* *
* @param array $keys list of values to save * @param array $keys list of values to save
* @param int $expire expiration time * @param int $expire expiration time
*
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
protected function write(array $keys, $expire = null) protected function write(array $keys, $expire = null)
@@ -57,6 +59,7 @@ class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
* Remove values from cache * Remove values from cache
* *
* @param array $keys list of keys to delete * @param array $keys list of keys to delete
*
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
protected function delete(array $keys) protected function delete(array $keys)

View File

@@ -2,10 +2,8 @@
/** /**
* Memcache CacheResource * Memcache CacheResource
*
* CacheResource Implementation based on the KeyValueStore API to use * CacheResource Implementation based on the KeyValueStore API to use
* memcache as the storage resource for Smarty's output caching. * memcache as the storage resource for Smarty's output caching.
*
* Note that memcache has a limitation of 256 characters per cache-key. * Note that memcache has a limitation of 256 characters per cache-key.
* To avoid complications all cache-keys are translated to a sha1 hash. * To avoid complications all cache-keys are translated to a sha1 hash.
* *
@@ -16,6 +14,7 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
{ {
/** /**
* memcache instance * memcache instance
*
* @var Memcache * @var Memcache
*/ */
protected $memcache = null; protected $memcache = null;
@@ -30,6 +29,7 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
* Read values for a set of keys from cache * Read values for a set of keys from cache
* *
* @param array $keys list of keys to fetch * @param array $keys list of keys to fetch
*
* @return array list of values with the given keys used as indexes * @return array list of values with the given keys used as indexes
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
@@ -55,6 +55,7 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
* *
* @param array $keys list of values to save * @param array $keys list of values to save
* @param int $expire expiration time * @param int $expire expiration time
*
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
protected function write(array $keys, $expire = null) protected function write(array $keys, $expire = null)
@@ -71,6 +72,7 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
* Remove values from cache * Remove values from cache
* *
* @param array $keys list of keys to delete * @param array $keys list of keys to delete
*
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
protected function delete(array $keys) protected function delete(array $keys)
@@ -90,6 +92,6 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
*/ */
protected function purge() protected function purge()
{ {
return $this->memcache->flush(); $this->memcache->flush();
} }
} }

View File

@@ -2,10 +2,8 @@
/** /**
* MySQL CacheResource * MySQL CacheResource
*
* CacheResource Implementation based on the Custom API to use * CacheResource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's output caching. * MySQL as the storage resource for Smarty's output caching.
*
* Table definition: * Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `output_cache` ( * <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
* `id` CHAR(40) NOT NULL COMMENT 'sha1 hash', * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
@@ -36,7 +34,8 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
{ {
try { try {
$this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty"); $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
} catch (PDOException $e) { }
catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage()); throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
} }
$this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id'); $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
@@ -54,6 +53,7 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
* @param string $compile_id compile id * @param string $compile_id compile id
* @param string $content cached content * @param string $content cached content
* @param integer $mtime cache modification timestamp (epoch) * @param integer $mtime cache modification timestamp (epoch)
*
* @return void * @return void
*/ */
protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime) protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
@@ -74,10 +74,12 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
* Fetch cached content's modification timestamp from data source * Fetch cached content's modification timestamp from data source
* *
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content. * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
*
* @param string $id unique cache content identifier * @param string $id unique cache content identifier
* @param string $name template name * @param string $name template name
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
*
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/ */
protected function fetchTimestamp($id, $name, $cache_id, $compile_id) protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
@@ -98,6 +100,7 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration time in seconds or null * @param integer|null $exp_time seconds till expiration time in seconds or null
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content) protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
@@ -120,6 +123,7 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration or null * @param integer|null $exp_time seconds till expiration or null
*
* @return integer number of deleted caches * @return integer number of deleted caches
*/ */
protected function delete($name, $cache_id, $compile_id, $exp_time) protected function delete($name, $cache_id, $compile_id, $exp_time)

View File

@@ -2,7 +2,6 @@
/** /**
* Extends All Resource * Extends All Resource
*
* Resource Implementation modifying the extends-Resource to walk * Resource Implementation modifying the extends-Resource to walk
* through the template_dirs and inherit all templates of the same name * through the template_dirs and inherit all templates of the same name
* *
@@ -16,6 +15,7 @@ class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
* *
* @param Smarty_Template_Source $source source object * @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
*
* @return void * @return void
*/ */
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
@@ -31,7 +31,9 @@ class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
} }
$sources[$s->uid] = $s; $sources[$s->uid] = $s;
$uid .= $s->filepath; $uid .= $s->filepath;
} catch (SmartyException $e) {} }
catch (SmartyException $e) {
}
} }
if (!$sources) { if (!$sources) {

View File

@@ -2,10 +2,8 @@
/** /**
* MySQL Resource * MySQL Resource
*
* Resource Implementation based on the Custom API to use * Resource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's templates and configs. * MySQL as the storage resource for Smarty's templates and configs.
*
* Table definition: * Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `templates` ( * <pre>CREATE TABLE IF NOT EXISTS `templates` (
* `name` varchar(100) NOT NULL, * `name` varchar(100) NOT NULL,
@@ -13,7 +11,6 @@
* `source` text, * `source` text,
* PRIMARY KEY (`name`) * PRIMARY KEY (`name`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre> * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
*
* Demo data: * Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre> * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
* *
@@ -33,7 +30,8 @@ class Smarty_Resource_Mysql extends Smarty_Resource_Custom
{ {
try { try {
$this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty"); $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
} catch (PDOException $e) { }
catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage()); throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
} }
$this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name'); $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
@@ -46,6 +44,7 @@ class Smarty_Resource_Mysql extends Smarty_Resource_Custom
* @param string $name template name * @param string $name template name
* @param string $source template source * @param string $source template source
* @param integer $mtime template modification timestamp (epoch) * @param integer $mtime template modification timestamp (epoch)
*
* @return void * @return void
*/ */
protected function fetch($name, &$source, &$mtime) protected function fetch($name, &$source, &$mtime)
@@ -66,7 +65,9 @@ class Smarty_Resource_Mysql extends Smarty_Resource_Custom
* Fetch a template's modification time from database * Fetch a template's modification time from database
* *
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source. * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
*
* @param string $name template name * @param string $name template name
*
* @return integer timestamp (epoch) the template was modified * @return integer timestamp (epoch) the template was modified
*/ */
protected function fetchTimestamp($name) protected function fetchTimestamp($name)

View File

@@ -2,13 +2,10 @@
/** /**
* MySQL Resource * MySQL Resource
*
* Resource Implementation based on the Custom API to use * Resource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's templates and configs. * MySQL as the storage resource for Smarty's templates and configs.
*
* Note that this MySQL implementation fetches the source and timestamps in * Note that this MySQL implementation fetches the source and timestamps in
* a single database query, instead of two separate like resource.mysql.php does. * a single database query, instead of two separate like resource.mysql.php does.
*
* Table definition: * Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `templates` ( * <pre>CREATE TABLE IF NOT EXISTS `templates` (
* `name` varchar(100) NOT NULL, * `name` varchar(100) NOT NULL,
@@ -16,7 +13,6 @@
* `source` text, * `source` text,
* PRIMARY KEY (`name`) * PRIMARY KEY (`name`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre> * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
*
* Demo data: * Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre> * <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
* *
@@ -34,7 +30,8 @@ class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
{ {
try { try {
$this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty"); $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
} catch (PDOException $e) { }
catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage()); throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
} }
$this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name'); $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
@@ -46,6 +43,7 @@ class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
* @param string $name template name * @param string $name template name
* @param string $source template source * @param string $source template source
* @param integer $mtime template modification timestamp (epoch) * @param integer $mtime template modification timestamp (epoch)
*
* @return void * @return void
*/ */
protected function fetch($name, &$source, &$mtime) protected function fetch($name, &$source, &$mtime)

View File

@@ -38,9 +38,14 @@ loop=$FirstName}
An example of section looped key values: An example of section looped key values:
{section name=sec1 loop=$contacts} {section name=sec1 loop=$contacts}
phone: {$contacts[sec1].phone}<br> phone: {$contacts[sec1].phone}
fax: {$contacts[sec1].fax}<br> <br>
cell: {$contacts[sec1].cell}<br>
fax: {$contacts[sec1].fax}
<br>
cell: {$contacts[sec1].cell}
<br>
{/section} {/section}
<p> <p>

View File

@@ -3,21 +3,17 @@
* Project: Smarty: the PHP compiling template engine * Project: Smarty: the PHP compiling template engine
* File: Smarty.class.php * File: Smarty.class.php
* SVN: $Id$ * SVN: $Id$
*
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For questions, help, comments, discussion, etc., please join the * For questions, help, comments, discussion, etc., please join the
* Smarty mailing list. Send a blank e-mail to * Smarty mailing list. Send a blank e-mail to
* smarty-discussion-subscribe@googlegroups.com * smarty-discussion-subscribe@googlegroups.com
@@ -102,6 +98,7 @@ include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_cacheresource_file.php';
/** /**
* This is the main Smarty class * This is the main Smarty class
*
* @package Smarty * @package Smarty
*/ */
class Smarty extends Smarty_Internal_TemplateBase class Smarty extends Smarty_Internal_TemplateBase
@@ -206,111 +203,133 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* auto literal on delimiters with whitspace * auto literal on delimiters with whitspace
*
* @var boolean * @var boolean
*/ */
public $auto_literal = true; public $auto_literal = true;
/** /**
* display error on not assigned variables * display error on not assigned variables
*
* @var boolean * @var boolean
*/ */
public $error_unassigned = false; public $error_unassigned = false;
/** /**
* look up relative filepaths in include_path * look up relative filepaths in include_path
*
* @var boolean * @var boolean
*/ */
public $use_include_path = false; public $use_include_path = false;
/** /**
* template directory * template directory
*
* @var array * @var array
*/ */
private $template_dir = array(); private $template_dir = array();
/** /**
* joined template directory string used in cache keys * joined template directory string used in cache keys
*
* @var string * @var string
*/ */
public $joined_template_dir = null; public $joined_template_dir = null;
/** /**
* joined config directory string used in cache keys * joined config directory string used in cache keys
*
* @var string * @var string
*/ */
public $joined_config_dir = null; public $joined_config_dir = null;
/** /**
* default template handler * default template handler
*
* @var callable * @var callable
*/ */
public $default_template_handler_func = null; public $default_template_handler_func = null;
/** /**
* default config handler * default config handler
*
* @var callable * @var callable
*/ */
public $default_config_handler_func = null; public $default_config_handler_func = null;
/** /**
* default plugin handler * default plugin handler
*
* @var callable * @var callable
*/ */
public $default_plugin_handler_func = null; public $default_plugin_handler_func = null;
/** /**
* compile directory * compile directory
*
* @var string * @var string
*/ */
private $compile_dir = null; private $compile_dir = null;
/** /**
* plugins directory * plugins directory
*
* @var array * @var array
*/ */
private $plugins_dir = array(); private $plugins_dir = array();
/** /**
* cache directory * cache directory
*
* @var string * @var string
*/ */
private $cache_dir = null; private $cache_dir = null;
/** /**
* config directory * config directory
*
* @var array * @var array
*/ */
private $config_dir = array(); private $config_dir = array();
/** /**
* force template compiling? * force template compiling?
*
* @var boolean * @var boolean
*/ */
public $force_compile = false; public $force_compile = false;
/** /**
* check template for modifications? * check template for modifications?
*
* @var boolean * @var boolean
*/ */
public $compile_check = true; public $compile_check = true;
/** /**
* use sub dirs for compiled/cached files? * use sub dirs for compiled/cached files?
*
* @var boolean * @var boolean
*/ */
public $use_sub_dirs = false; public $use_sub_dirs = false;
/** /**
* allow ambiguous resources (that are made unique by the resource handler) * allow ambiguous resources (that are made unique by the resource handler)
*
* @var boolean * @var boolean
*/ */
public $allow_ambiguous_resources = false; public $allow_ambiguous_resources = false;
/** /**
* caching enabled * caching enabled
*
* @var boolean * @var boolean
*/ */
public $caching = false; public $caching = false;
/** /**
* merge compiled includes * merge compiled includes
*
* @var boolean * @var boolean
*/ */
public $merge_compiled_includes = false; public $merge_compiled_includes = false;
/** /**
* template inheritance merge compiled includes * template inheritance merge compiled includes
*
* @var boolean * @var boolean
*/ */
public $inheritance_merge_compiled_includes = true; public $inheritance_merge_compiled_includes = true;
/** /**
* cache lifetime in seconds * cache lifetime in seconds
*
* @var integer * @var integer
*/ */
public $cache_lifetime = 3600; public $cache_lifetime = 3600;
/** /**
* force cache file creation * force cache file creation
*
* @var boolean * @var boolean
*/ */
public $force_cache = false; public $force_cache = false;
@@ -330,11 +349,13 @@ class Smarty extends Smarty_Internal_TemplateBase
public $compile_id = null; public $compile_id = null;
/** /**
* template left-delimiter * template left-delimiter
*
* @var string * @var string
*/ */
public $left_delimiter = "{"; public $left_delimiter = "{";
/** /**
* template right-delimiter * template right-delimiter
*
* @var string * @var string
*/ */
public $right_delimiter = "}"; public $right_delimiter = "}";
@@ -343,7 +364,6 @@ class Smarty extends Smarty_Internal_TemplateBase
*/ */
/** /**
* class name * class name
*
* This should be instance of Smarty_Security. * This should be instance of Smarty_Security.
* *
* @var string * @var string
@@ -370,7 +390,6 @@ class Smarty extends Smarty_Internal_TemplateBase
public $allow_php_templates = false; public $allow_php_templates = false;
/** /**
* Should compiled-templates be prevented from being called directly? * Should compiled-templates be prevented from being called directly?
*
* {@internal * {@internal
* Currently used by Smarty_Internal_Template only. * Currently used by Smarty_Internal_Template only.
* }} * }}
@@ -381,7 +400,6 @@ class Smarty extends Smarty_Internal_TemplateBase
/**#@-*/ /**#@-*/
/** /**
* debug mode * debug mode
*
* Setting this to true enables the debug-console. * Setting this to true enables the debug-console.
* *
* @var boolean * @var boolean
@@ -393,12 +411,12 @@ class Smarty extends Smarty_Internal_TemplateBase
* <li>NONE => no debugging control allowed</li> * <li>NONE => no debugging control allowed</li>
* <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li> * <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
* </ul> * </ul>
*
* @var string * @var string
*/ */
public $debugging_ctrl = 'NONE'; public $debugging_ctrl = 'NONE';
/** /**
* Name of debugging URL-param. * Name of debugging URL-param.
*
* Only used when $debugging_ctrl is set to 'URL'. * Only used when $debugging_ctrl is set to 'URL'.
* The name of the URL-parameter that activates debugging. * The name of the URL-parameter that activates debugging.
* *
@@ -407,16 +425,19 @@ class Smarty extends Smarty_Internal_TemplateBase
public $smarty_debug_id = 'SMARTY_DEBUG'; public $smarty_debug_id = 'SMARTY_DEBUG';
/** /**
* Path of debug template. * Path of debug template.
*
* @var string * @var string
*/ */
public $debug_tpl = null; public $debug_tpl = null;
/** /**
* When set, smarty uses this value as error_reporting-level. * When set, smarty uses this value as error_reporting-level.
*
* @var int * @var int
*/ */
public $error_reporting = null; public $error_reporting = null;
/** /**
* Internal flag for getTags() * Internal flag for getTags()
*
* @var boolean * @var boolean
*/ */
public $get_used_tags = false; public $get_used_tags = false;
@@ -427,16 +448,19 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Controls whether variables with the same name overwrite each other. * Controls whether variables with the same name overwrite each other.
*
* @var boolean * @var boolean
*/ */
public $config_overwrite = true; public $config_overwrite = true;
/** /**
* Controls whether config values of on/true/yes and off/false/no get converted to boolean. * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
*
* @var boolean * @var boolean
*/ */
public $config_booleanize = true; public $config_booleanize = true;
/** /**
* Controls whether hidden config sections/vars are read from the file. * Controls whether hidden config sections/vars are read from the file.
*
* @var boolean * @var boolean
*/ */
public $config_read_hidden = false; public $config_read_hidden = false;
@@ -449,16 +473,19 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* locking concurrent compiles * locking concurrent compiles
*
* @var boolean * @var boolean
*/ */
public $compile_locking = true; public $compile_locking = true;
/** /**
* Controls whether cache resources should emply locking mechanism * Controls whether cache resources should emply locking mechanism
*
* @var boolean * @var boolean
*/ */
public $cache_locking = false; public $cache_locking = false;
/** /**
* seconds to wait for acquiring a lock before ignoring the write lock * seconds to wait for acquiring a lock before ignoring the write lock
*
* @var float * @var float
*/ */
public $locking_timeout = 10; public $locking_timeout = 10;
@@ -467,19 +494,19 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* global template functions * global template functions
*
* @var array * @var array
*/ */
public $template_functions = array(); public $template_functions = array();
/** /**
* resource type used if none given * resource type used if none given
*
* Must be an valid key of $registered_resources. * Must be an valid key of $registered_resources.
*
* @var string * @var string
*/ */
public $default_resource_type = 'file'; public $default_resource_type = 'file';
/** /**
* caching type * caching type
*
* Must be an element of $cache_resource_types. * Must be an element of $cache_resource_types.
* *
* @var string * @var string
@@ -487,121 +514,145 @@ class Smarty extends Smarty_Internal_TemplateBase
public $caching_type = 'file'; public $caching_type = 'file';
/** /**
* internal config properties * internal config properties
*
* @var array * @var array
*/ */
public $properties = array(); public $properties = array();
/** /**
* config type * config type
*
* @var string * @var string
*/ */
public $default_config_type = 'file'; public $default_config_type = 'file';
/** /**
* cached template objects * cached template objects
*
* @var array * @var array
*/ */
public $template_objects = array(); public $template_objects = array();
/** /**
* check If-Modified-Since headers * check If-Modified-Since headers
*
* @var boolean * @var boolean
*/ */
public $cache_modified_check = false; public $cache_modified_check = false;
/** /**
* registered plugins * registered plugins
*
* @var array * @var array
*/ */
public $registered_plugins = array(); public $registered_plugins = array();
/** /**
* plugin search order * plugin search order
*
* @var array * @var array
*/ */
public $plugin_search_order = array('function', 'block', 'compiler', 'class'); public $plugin_search_order = array('function', 'block', 'compiler', 'class');
/** /**
* registered objects * registered objects
*
* @var array * @var array
*/ */
public $registered_objects = array(); public $registered_objects = array();
/** /**
* registered classes * registered classes
*
* @var array * @var array
*/ */
public $registered_classes = array(); public $registered_classes = array();
/** /**
* registered filters * registered filters
*
* @var array * @var array
*/ */
public $registered_filters = array(); public $registered_filters = array();
/** /**
* registered resources * registered resources
*
* @var array * @var array
*/ */
public $registered_resources = array(); public $registered_resources = array();
/** /**
* resource handler cache * resource handler cache
*
* @var array * @var array
*/ */
public $_resource_handlers = array(); public $_resource_handlers = array();
/** /**
* registered cache resources * registered cache resources
*
* @var array * @var array
*/ */
public $registered_cache_resources = array(); public $registered_cache_resources = array();
/** /**
* cache resource handler cache * cache resource handler cache
*
* @var array * @var array
*/ */
public $_cacheresource_handlers = array(); public $_cacheresource_handlers = array();
/** /**
* autoload filter * autoload filter
*
* @var array * @var array
*/ */
public $autoload_filters = array(); public $autoload_filters = array();
/** /**
* default modifier * default modifier
*
* @var array * @var array
*/ */
public $default_modifiers = array(); public $default_modifiers = array();
/** /**
* autoescape variable output * autoescape variable output
*
* @var boolean * @var boolean
*/ */
public $escape_html = false; public $escape_html = false;
/** /**
* global internal smarty vars * global internal smarty vars
*
* @var array * @var array
*/ */
public static $_smarty_vars = array(); public static $_smarty_vars = array();
/** /**
* start time for execution time calculation * start time for execution time calculation
*
* @var int * @var int
*/ */
public $start_time = 0; public $start_time = 0;
/** /**
* default file permissions * default file permissions
*
* @var int * @var int
*/ */
public $_file_perms = 0644; public $_file_perms = 0644;
/** /**
* default dir permissions * default dir permissions
*
* @var int * @var int
*/ */
public $_dir_perms = 0771; public $_dir_perms = 0771;
/** /**
* block tag hierarchy * block tag hierarchy
*
* @var array * @var array
*/ */
public $_tag_stack = array(); public $_tag_stack = array();
/** /**
* self pointer to Smarty object * self pointer to Smarty object
*
* @var Smarty * @var Smarty
*/ */
public $smarty; public $smarty;
/** /**
* required by the compiler for BC * required by the compiler for BC
*
* @var string * @var string
*/ */
public $_current_file = null; public $_current_file = null;
/** /**
* internal flag to enable parser debugging * internal flag to enable parser debugging
*
* @var bool * @var bool
*/ */
public $_parserdebug = false; public $_parserdebug = false;
@@ -615,7 +666,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Initialize new Smarty object * Initialize new Smarty object
*
*/ */
public function __construct() public function __construct()
{ {
@@ -656,11 +707,11 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* <<magic>> Generic getter. * <<magic>> Generic getter.
*
* Calls the appropriate getter function. * Calls the appropriate getter function.
* Issues an E_USER_NOTICE if no valid getter is found. * Issues an E_USER_NOTICE if no valid getter is found.
* *
* @param string $name property name * @param string $name property name
*
* @return mixed * @return mixed
*/ */
public function __get($name) public function __get($name)
@@ -682,7 +733,6 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* <<magic>> Generic setter. * <<magic>> Generic setter.
*
* Calls the appropriate setter function. * Calls the appropriate setter function.
* Issues an E_USER_NOTICE if no valid setter is found. * Issues an E_USER_NOTICE if no valid setter is found.
* *
@@ -710,6 +760,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Check if a template resource exists * Check if a template resource exists
* *
* @param string $resource_name template name * @param string $resource_name template name
*
* @return boolean status * @return boolean status
*/ */
public function templateExists($resource_name) public function templateExists($resource_name)
@@ -727,8 +778,8 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Returns a single or all global variables * Returns a single or all global variables
* *
* @param object $smarty
* @param string $varname variable name or null * @param string $varname variable name or null
*
* @return string variable value or or array of variables * @return string variable value or or array of variables
*/ */
public function getGlobal($varname = null) public function getGlobal($varname = null)
@@ -754,6 +805,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* *
* @param integer $exp_time expiration time * @param integer $exp_time expiration time
* @param string $type resource type * @param string $type resource type
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
public function clearAllCache($exp_time = null, $type = null) public function clearAllCache($exp_time = null, $type = null)
@@ -773,6 +825,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer $exp_time expiration time * @param integer $exp_time expiration time
* @param string $type resource type * @param string $type resource type
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null) public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
@@ -788,6 +841,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Loads security class and enables security * Loads security class and enables security
* *
* @param string|Smarty_Security $security_class if a string is used, it must be class-name * @param string|Smarty_Security $security_class if a string is used, it must be class-name
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
* @throws SmartyException when an invalid class name is provided * @throws SmartyException when an invalid class name is provided
*/ */
@@ -816,6 +870,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Disable security * Disable security
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function disableSecurity() public function disableSecurity()
@@ -829,13 +884,14 @@ class Smarty extends Smarty_Internal_TemplateBase
* Set template directory * Set template directory
* *
* @param string|array $template_dir directory(s) of template sources * @param string|array $template_dir directory(s) of template sources
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setTemplateDir($template_dir) public function setTemplateDir($template_dir)
{ {
$this->template_dir = array(); $this->template_dir = array();
foreach ((array) $template_dir as $k => $v) { foreach ((array) $template_dir as $k => $v) {
$this->template_dir[$k] = str_replace(array('//','\\\\'), DS, rtrim($v, '/\\')) . DS; $this->template_dir[$k] = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
} }
$this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir); $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir);
@@ -848,6 +904,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* *
* @param string|array $template_dir directory(s) of template sources * @param string|array $template_dir directory(s) of template sources
* @param string $key of the array element to assign the template dir to * @param string $key of the array element to assign the template dir to
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
* @throws SmartyException when the given template directory is not valid * @throws SmartyException when the given template directory is not valid
*/ */
@@ -858,7 +915,7 @@ class Smarty extends Smarty_Internal_TemplateBase
if (is_array($template_dir)) { if (is_array($template_dir)) {
foreach ($template_dir as $k => $v) { foreach ($template_dir as $k => $v) {
$v = str_replace(array('//','\\\\'), DS, rtrim($v, '/\\')) . DS; $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
if (is_int($k)) { if (is_int($k)) {
// indexes are not merged but appended // indexes are not merged but appended
$this->template_dir[] = $v; $this->template_dir[] = $v;
@@ -868,7 +925,7 @@ class Smarty extends Smarty_Internal_TemplateBase
} }
} }
} else { } else {
$v = str_replace(array('//','\\\\'), DS, rtrim($template_dir, '/\\')) . DS; $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($template_dir, '/\\')) . DS;
if ($key !== null) { if ($key !== null) {
// override directory at specified index // override directory at specified index
$this->template_dir[$key] = $v; $this->template_dir[$key] = $v;
@@ -885,7 +942,8 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Get template directories * Get template directories
* *
* @param mixed index of directory to get, null to get all * @param mixed $index index of directory to get, null to get all
*
* @return array|string list of template directories, or directory of $index * @return array|string list of template directories, or directory of $index
*/ */
public function getTemplateDir($index = null) public function getTemplateDir($index = null)
@@ -900,14 +958,15 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Set config directory * Set config directory
* *
* @param string|array $template_dir directory(s) of configuration sources * @param $config_dir
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setConfigDir($config_dir) public function setConfigDir($config_dir)
{ {
$this->config_dir = array(); $this->config_dir = array();
foreach ((array) $config_dir as $k => $v) { foreach ((array) $config_dir as $k => $v) {
$this->config_dir[$k] = str_replace(array('//','\\\\'), DS, rtrim($v, '/\\')) . DS; $this->config_dir[$k] = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
} }
$this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir); $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir);
@@ -919,7 +978,8 @@ class Smarty extends Smarty_Internal_TemplateBase
* Add config directory(s) * Add config directory(s)
* *
* @param string|array $config_dir directory(s) of config sources * @param string|array $config_dir directory(s) of config sources
* @param string key of the array element to assign the config dir to * @param mixed $key key of the array element to assign the config dir to
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function addConfigDir($config_dir, $key = null) public function addConfigDir($config_dir, $key = null)
@@ -929,7 +989,7 @@ class Smarty extends Smarty_Internal_TemplateBase
if (is_array($config_dir)) { if (is_array($config_dir)) {
foreach ($config_dir as $k => $v) { foreach ($config_dir as $k => $v) {
$v = str_replace(array('//','\\\\'), DS, rtrim($v, '/\\')) . DS; $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
if (is_int($k)) { if (is_int($k)) {
// indexes are not merged but appended // indexes are not merged but appended
$this->config_dir[] = $v; $this->config_dir[] = $v;
@@ -939,7 +999,7 @@ class Smarty extends Smarty_Internal_TemplateBase
} }
} }
} else { } else {
$v = str_replace(array('//','\\\\'), DS, rtrim($config_dir, '/\\')) . DS; $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($config_dir, '/\\')) . DS;
if ($key !== null) { if ($key !== null) {
// override directory at specified index // override directory at specified index
$this->config_dir[$key] = rtrim($v, '/\\') . DS; $this->config_dir[$key] = rtrim($v, '/\\') . DS;
@@ -957,7 +1017,8 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Get config directory * Get config directory
* *
* @param mixed index of directory to get, null to get all * @param mixed $index index of directory to get, null to get all
*
* @return array|string configuration directory * @return array|string configuration directory
*/ */
public function getConfigDir($index = null) public function getConfigDir($index = null)
@@ -973,6 +1034,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Set plugins directory * Set plugins directory
* *
* @param string|array $plugins_dir directory(s) of plugins * @param string|array $plugins_dir directory(s) of plugins
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setPluginsDir($plugins_dir) public function setPluginsDir($plugins_dir)
@@ -988,8 +1050,8 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* Adds directory of plugin files * Adds directory of plugin files
* *
* @param object $smarty * @param $plugins_dir
* @param string $ |array $ plugins folder *
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function addPluginsDir($plugins_dir) public function addPluginsDir($plugins_dir)
@@ -1031,6 +1093,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Set compile directory * Set compile directory
* *
* @param string $compile_dir directory to store compiled templates in * @param string $compile_dir directory to store compiled templates in
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setCompileDir($compile_dir) public function setCompileDir($compile_dir)
@@ -1057,6 +1120,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Set cache directory * Set cache directory
* *
* @param string $cache_dir directory to store cached templates in * @param string $cache_dir directory to store cached templates in
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setCacheDir($cache_dir) public function setCacheDir($cache_dir)
@@ -1083,6 +1147,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Set default modifiers * Set default modifiers
* *
* @param array|string $modifiers modifier or list of modifiers to set * @param array|string $modifiers modifier or list of modifiers to set
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setDefaultModifiers($modifiers) public function setDefaultModifiers($modifiers)
@@ -1096,6 +1161,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Add default modifiers * Add default modifiers
* *
* @param array|string $modifiers modifier or list of modifiers to add * @param array|string $modifiers modifier or list of modifiers to add
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function addDefaultModifiers($modifiers) public function addDefaultModifiers($modifiers)
@@ -1119,12 +1185,12 @@ class Smarty extends Smarty_Internal_TemplateBase
return $this->default_modifiers; return $this->default_modifiers;
} }
/** /**
* Set autoload filters * Set autoload filters
* *
* @param array $filters filters to load automatically * @param array $filters filters to load automatically
* @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function setAutoloadFilters($filters, $type = null) public function setAutoloadFilters($filters, $type = null)
@@ -1143,6 +1209,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* *
* @param array $filters filters to load automatically * @param array $filters filters to load automatically
* @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
*/ */
public function addAutoloadFilters($filters, $type = null) public function addAutoloadFilters($filters, $type = null)
@@ -1170,6 +1237,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Get autoload filters * Get autoload filters
* *
* @param string $type type of filter to get autoloads for. Defaults to all autoload filters * @param string $type type of filter to get autoloads for. Defaults to all autoload filters
*
* @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified
*/ */
public function getAutoloadFilters($type = null) public function getAutoloadFilters($type = null)
@@ -1195,6 +1263,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* set the debug template * set the debug template
* *
* @param string $tpl_name * @param string $tpl_name
*
* @return Smarty current Smarty instance for chaining * @return Smarty current Smarty instance for chaining
* @throws SmartyException if file is not readable * @throws SmartyException if file is not readable
*/ */
@@ -1216,6 +1285,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param mixed $compile_id compile id to be used with this template * @param mixed $compile_id compile id to be used with this template
* @param object $parent next higher level of Smarty variables * @param object $parent next higher level of Smarty variables
* @param boolean $do_clone flag is Smarty object shall be cloned * @param boolean $do_clone flag is Smarty object shall be cloned
*
* @return object template object * @return object template object
*/ */
public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true) public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
@@ -1275,7 +1345,6 @@ class Smarty extends Smarty_Internal_TemplateBase
return $tpl; return $tpl;
} }
/** /**
* Takes unknown classes and loads plugin files for them * Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName * class name format: Smarty_PluginType_PluginName
@@ -1283,6 +1352,8 @@ class Smarty extends Smarty_Internal_TemplateBase
* *
* @param string $plugin_name class plugin name to load * @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded * @param bool $check check if already loaded
*
* @throws SmartyException
* @return string |boolean filepath of loaded file or false * @return string |boolean filepath of loaded file or false
*/ */
public function loadPlugin($plugin_name, $check = true) public function loadPlugin($plugin_name, $check = true)
@@ -1297,8 +1368,6 @@ class Smarty extends Smarty_Internal_TemplateBase
// count($_name_parts) < 3 === !isset($_name_parts[2]) // count($_name_parts) < 3 === !isset($_name_parts[2])
if (!isset($_name_parts[2]) || strtolower($_name_parts[0]) !== 'smarty') { if (!isset($_name_parts[2]) || strtolower($_name_parts[0]) !== 'smarty') {
throw new SmartyException("plugin {$plugin_name} is not a valid name format"); throw new SmartyException("plugin {$plugin_name} is not a valid name format");
return false;
} }
// if type is "internal", get plugin from sysplugins // if type is "internal", get plugin from sysplugins
if (strtolower($_name_parts[1]) == 'internal') { if (strtolower($_name_parts[1]) == 'internal') {
@@ -1355,6 +1424,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param bool $force_compile force all to recompile * @param bool $force_compile force all to recompile
* @param int $time_limit * @param int $time_limit
* @param int $max_errors * @param int $max_errors
*
* @return integer number of template files recompiled * @return integer number of template files recompiled
*/ */
public function compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null) public function compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
@@ -1369,6 +1439,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param bool $force_compile force all to recompile * @param bool $force_compile force all to recompile
* @param int $time_limit * @param int $time_limit
* @param int $max_errors * @param int $max_errors
*
* @return integer number of template files recompiled * @return integer number of template files recompiled
*/ */
public function compileAllConfig($extension = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null) public function compileAllConfig($extension = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null)
@@ -1382,6 +1453,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* @param string $resource_name template name * @param string $resource_name template name
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer $exp_time expiration time * @param integer $exp_time expiration time
*
* @return integer number of template files deleted * @return integer number of template files deleted
*/ */
public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
@@ -1389,11 +1461,11 @@ class Smarty extends Smarty_Internal_TemplateBase
return Smarty_Internal_Utility::clearCompiledTemplate($resource_name, $compile_id, $exp_time, $this); return Smarty_Internal_Utility::clearCompiledTemplate($resource_name, $compile_id, $exp_time, $this);
} }
/** /**
* Return array of tag/attributes of all tags used by an template * Return array of tag/attributes of all tags used by an template
* *
* @param object $templae template object * @param Smarty_Internal_Template $template
*
* @return array of tag/attributes * @return array of tag/attributes
*/ */
public function getTags(Smarty_Internal_Template $template) public function getTags(Smarty_Internal_Template $template)
@@ -1405,6 +1477,7 @@ class Smarty extends Smarty_Internal_TemplateBase
* Run installation test * Run installation test
* *
* @param array $errors Array to write errors into, rather than outputting them * @param array $errors Array to write errors into, rather than outputting them
*
* @return boolean true if setup is fine, false if something is wrong * @return boolean true if setup is fine, false if something is wrong
*/ */
public function testInstall(&$errors = null) public function testInstall(&$errors = null)
@@ -1416,7 +1489,13 @@ class Smarty extends Smarty_Internal_TemplateBase
* Error Handler to mute expected messages * Error Handler to mute expected messages
* *
* @link http://php.net/set_error_handler * @link http://php.net/set_error_handler
*
* @param integer $errno Error level * @param integer $errno Error level
* @param $errstr
* @param $errfile
* @param $errline
* @param $errcontext
*
* @return boolean * @return boolean
*/ */
public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext) public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
@@ -1519,6 +1598,7 @@ if (Smarty::$_CHARSET !== 'UTF-8') {
/** /**
* Smarty exception class * Smarty exception class
*
* @package Smarty * @package Smarty
*/ */
class SmartyException extends Exception class SmartyException extends Exception
@@ -1533,6 +1613,7 @@ class SmartyException extends Exception
/** /**
* Smarty compiler exception class * Smarty compiler exception class
*
* @package Smarty * @package Smarty
*/ */
class SmartyCompilerException extends SmartyException class SmartyCompilerException extends SmartyException
@@ -1541,23 +1622,28 @@ class SmartyCompilerException extends SmartyException
{ {
return ' --> Smarty Compiler: ' . $this->message . ' <-- '; return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
} }
/** /**
* The line number of the template error * The line number of the template error
*
* @type int|null * @type int|null
*/ */
public $line = null; public $line = null;
/** /**
* The template source snippet relating to the error * The template source snippet relating to the error
*
* @type string|null * @type string|null
*/ */
public $source = null; public $source = null;
/** /**
* The raw text of the error message * The raw text of the error message
*
* @type string|null * @type string|null
*/ */
public $desc = null; public $desc = null;
/** /**
* The resource identifier or template name * The resource identifier or template name
*
* @type string|null * @type string|null
*/ */
public $template = null; public $template = null;

View File

@@ -3,21 +3,17 @@
* Project: Smarty: the PHP compiling template engine * Project: Smarty: the PHP compiling template engine
* File: SmartyBC.class.php * File: SmartyBC.class.php
* SVN: $Id: $ * SVN: $Id: $
*
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For questions, help, comments, discussion, etc., please join the * For questions, help, comments, discussion, etc., please join the
* Smarty mailing list. Send a blank e-mail to * Smarty mailing list. Send a blank e-mail to
* smarty-discussion-subscribe@googlegroups.com * smarty-discussion-subscribe@googlegroups.com
@@ -43,6 +39,7 @@ class SmartyBC extends Smarty
{ {
/** /**
* Smarty 2 BC * Smarty 2 BC
*
* @var string * @var string
*/ */
public $_version = self::SMARTY_VERSION; public $_version = self::SMARTY_VERSION;
@@ -122,7 +119,10 @@ class SmartyBC extends Smarty
* @param object $object_impl the referenced PHP object to register * @param object $object_impl the referenced PHP object to register
* @param array $allowed list of allowed methods (empty = all) * @param array $allowed list of allowed methods (empty = all)
* @param boolean $smarty_args smarty argument format, else traditional * @param boolean $smarty_args smarty argument format, else traditional
* @param array $block_functs list of methods that are block format * @param array $block_methods list of methods that are block format
*
* @throws SmartyException
* @internal param array $block_functs list of methods that are block format
*/ */
public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array()) public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
{ {
@@ -309,6 +309,7 @@ class SmartyBC extends Smarty
* @param string $cache_id name of cache_id * @param string $cache_id name of cache_id
* @param string $compile_id name of compile_id * @param string $compile_id name of compile_id
* @param string $exp_time expiration time * @param string $exp_time expiration time
*
* @return boolean * @return boolean
*/ */
public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null) public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
@@ -320,6 +321,7 @@ class SmartyBC extends Smarty
* clear the entire contents of cache (all templates) * clear the entire contents of cache (all templates)
* *
* @param string $exp_time expire time * @param string $exp_time expire time
*
* @return boolean * @return boolean
*/ */
public function clear_all_cache($exp_time = null) public function clear_all_cache($exp_time = null)
@@ -333,6 +335,7 @@ class SmartyBC extends Smarty
* @param string $tpl_file name of template file * @param string $tpl_file name of template file
* @param string $cache_id * @param string $cache_id
* @param string $compile_id * @param string $compile_id
*
* @return boolean * @return boolean
*/ */
public function is_cached($tpl_file, $cache_id = null, $compile_id = null) public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
@@ -356,6 +359,7 @@ class SmartyBC extends Smarty
* @param string $tpl_file * @param string $tpl_file
* @param string $compile_id * @param string $compile_id
* @param string $exp_time * @param string $exp_time
*
* @return boolean results of {@link smarty_core_rm_auto()} * @return boolean results of {@link smarty_core_rm_auto()}
*/ */
public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null) public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
@@ -367,6 +371,7 @@ class SmartyBC extends Smarty
* Checks whether requested template exists. * Checks whether requested template exists.
* *
* @param string $tpl_file * @param string $tpl_file
*
* @return boolean * @return boolean
*/ */
public function template_exists($tpl_file) public function template_exists($tpl_file)
@@ -378,6 +383,7 @@ class SmartyBC extends Smarty
* Returns an array containing template variables * Returns an array containing template variables
* *
* @param string $name * @param string $name
*
* @return array * @return array
*/ */
public function get_template_vars($name = null) public function get_template_vars($name = null)
@@ -389,6 +395,7 @@ class SmartyBC extends Smarty
* Returns an array containing config variables * Returns an array containing config variables
* *
* @param string $name * @param string $name
*
* @return array * @return array
*/ */
public function get_config_vars($name = null) public function get_config_vars($name = null)
@@ -412,6 +419,7 @@ class SmartyBC extends Smarty
* return a reference to a registered object * return a reference to a registered object
* *
* @param string $name * @param string $name
*
* @return object * @return object
*/ */
public function get_registered_object($name) public function get_registered_object($name)
@@ -439,7 +447,6 @@ class SmartyBC extends Smarty
{ {
trigger_error("Smarty error: $error_msg", $error_type); trigger_error("Smarty error: $error_msg", $error_type);
} }
} }
/** /**
@@ -449,6 +456,7 @@ class SmartyBC extends Smarty
* @param string $content contents of the block * @param string $content contents of the block
* @param object $template template object * @param object $template template object
* @param boolean &$repeat repeat flag * @param boolean &$repeat repeat flag
*
* @return string content re-formatted * @return string content re-formatted
*/ */
function smarty_php_tag($params, $content, $template, &$repeat) function smarty_php_tag($params, $content, $template, &$repeat)

View File

@@ -81,21 +81,23 @@ td {
#table_config_vars th { #table_config_vars th {
color: maroon; color: maroon;
} }
{/literal} {/literal}
</style> </style>
</head> </head>
<body> <body>
<h1>Smarty Debug Console - {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1> <h1>Smarty Debug Console
- {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
{if !empty($template_data)} {if !empty($template_data)}
<h2>included templates &amp; config files (load time in seconds)</h2> <h2>included templates &amp; config files (load time in seconds)</h2>
<div> <div>
{foreach $template_data as $template} {foreach $template_data as $template}
<font color=brown>{$template.name}</font> <font color=brown>{$template.name}</font>
<span class="exectime"> <span class="exectime">
(compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}) (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}
)
</span> </span>
<br> <br>
{/foreach} {/foreach}
@@ -108,7 +110,8 @@ td {
{foreach $assigned_vars as $vars} {foreach $assigned_vars as $vars}
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}"> <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
<th>${$vars@key|escape:'html'}</th> <th>${$vars@key|escape:'html'}</th>
<td>{$vars|debug_print_var nofilter}</td></tr> <td>{$vars|debug_print_var nofilter}</td>
</tr>
{/foreach} {/foreach}
</table> </table>
@@ -118,7 +121,8 @@ td {
{foreach $config_vars as $vars} {foreach $config_vars as $vars}
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}"> <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
<th>{$vars@key|escape:'html'}</th> <th>{$vars@key|escape:'html'}</th>
<td>{$vars|debug_print_var nofilter}</td></tr> <td>{$vars|debug_print_var nofilter}</td>
</tr>
{/foreach} {/foreach}
</table> </table>

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {textformat}{/textformat} block plugin * Smarty {textformat}{/textformat} block plugin
*
* Type: block function<br> * Type: block function<br>
* Name: textformat<br> * Name: textformat<br>
* Purpose: format text a certain way with preset styles * Purpose: format text a certain way with preset styles
@@ -25,10 +24,12 @@
* *
* @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
* (Smarty online manual) * (Smarty online manual)
*
* @param array $params parameters * @param array $params parameters
* @param string $content contents of the block * @param string $content contents of the block
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
* @param boolean &$repeat repeat flag * @param boolean &$repeat repeat flag
*
* @return string content re-formatted * @return string content re-formatted
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*/ */
@@ -76,7 +77,6 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
} }
// split into paragraphs // split into paragraphs
$_paragraphs = preg_split('![\r\n]{2}!', $content); $_paragraphs = preg_split('![\r\n]{2}!', $content);
$_output = '';
foreach ($_paragraphs as &$_paragraph) { foreach ($_paragraphs as &$_paragraph) {
if (!$_paragraph) { if (!$_paragraph) {

View File

@@ -1,13 +1,13 @@
<?php <?php
/** /**
* Smarty plugin * Smarty plugin
*
* @package Smarty * @package Smarty
* @subpackage PluginsFunction * @subpackage PluginsFunction
*/ */
/** /**
* Smarty {counter} function plugin * Smarty {counter} function plugin
*
* Type: function<br> * Type: function<br>
* Name: counter<br> * Name: counter<br>
* Purpose: print out a counter value * Purpose: print out a counter value
@@ -15,8 +15,10 @@
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @link http://www.smarty.net/manual/en/language.function.counter.php {counter} * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
* (Smarty online manual) * (Smarty online manual)
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
*
* @return string|null * @return string|null
*/ */
function smarty_function_counter($params, $template) function smarty_function_counter($params, $template)
@@ -66,11 +68,11 @@ function smarty_function_counter($params, $template)
$counter['direction'] = $params['direction']; $counter['direction'] = $params['direction'];
} }
if ($counter['direction'] == "down") if ($counter['direction'] == "down") {
$counter['count'] -= $counter['skip']; $counter['count'] -= $counter['skip'];
else } else {
$counter['count'] += $counter['skip']; $counter['count'] += $counter['skip'];
}
return $retval; return $retval;
} }

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {cycle} function plugin * Smarty {cycle} function plugin
*
* Type: function<br> * Type: function<br>
* Name: cycle<br> * Name: cycle<br>
* Date: May 3, 2002<br> * Date: May 3, 2002<br>
@@ -38,8 +37,10 @@
* @author credit to Gerard <gerard@interfold.com> * @author credit to Gerard <gerard@interfold.com>
* @author credit to Jason Sweat <jsweat_php@yahoo.com> * @author credit to Jason Sweat <jsweat_php@yahoo.com>
* @version 1.3 * @version 1.3
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
*
* @return string|null * @return string|null
*/ */
@@ -60,7 +61,8 @@ function smarty_function_cycle($params, $template)
} }
} else { } else {
if (isset($cycle_vars[$name]['values']) if (isset($cycle_vars[$name]['values'])
&& $cycle_vars[$name]['values'] != $params['values'] ) { && $cycle_vars[$name]['values'] != $params['values']
) {
$cycle_vars[$name]['index'] = 0; $cycle_vars[$name]['index'] = 0;
} }
$cycle_vars[$name]['values'] = $params['values']; $cycle_vars[$name]['values'] = $params['values'];

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {fetch} plugin * Smarty {fetch} plugin
*
* Type: function<br> * Type: function<br>
* Name: fetch<br> * Name: fetch<br>
* Purpose: fetch file, web or ftp data and display results * Purpose: fetch file, web or ftp data and display results
@@ -16,8 +15,11 @@
* @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
* (Smarty online manual) * (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
*
* @throws SmartyException
* @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
*/ */
function smarty_function_fetch($params, $template) function smarty_function_fetch($params, $template)

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {html_checkboxes} function plugin * Smarty {html_checkboxes} function plugin
*
* File: function.html_checkboxes.php<br> * File: function.html_checkboxes.php<br>
* Type: function<br> * Type: function<br>
* Name: html_checkboxes<br> * Name: html_checkboxes<br>
@@ -37,8 +36,10 @@
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
* @author credits to Monte Ohrt <monte at ohrt dot com> * @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0 * @version 1.0
*
* @param array $params parameters * @param array $params parameters
* @param object $template template object * @param object $template template object
*
* @return string * @return string
* @uses smarty_function_escape_special_chars() * @uses smarty_function_escape_special_chars()
*/ */
@@ -116,7 +117,8 @@ function smarty_function_html_checkboxes($params, $template)
case 'assign': case 'assign':
break; break;
case 'strict': break; case 'strict':
break;
case 'disabled': case 'disabled':
case 'readonly': case 'readonly':
@@ -143,8 +145,9 @@ function smarty_function_html_checkboxes($params, $template)
} }
} }
if (!isset($options) && !isset($values)) if (!isset($options) && !isset($values)) {
return ''; /* raise error here? */ return '';
} /* raise error here? */
$_html_result = array(); $_html_result = array();
@@ -164,7 +167,6 @@ function smarty_function_html_checkboxes($params, $template)
} else { } else {
return implode("\n", $_html_result); return implode("\n", $_html_result);
} }
} }
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true) function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true)

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {html_image} function plugin * Smarty {html_image} function plugin
*
* Type: function<br> * Type: function<br>
* Name: html_image<br> * Name: html_image<br>
* Date: Feb 24, 2003<br> * Date: Feb 24, 2003<br>
@@ -29,8 +28,11 @@
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author credits to Duda <duda@big.hu> * @author credits to Duda <duda@big.hu>
* @version 1.0 * @version 1.0
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
*
* @throws SmartyException
* @return string * @return string
* @uses smarty_function_escape_special_chars() * @uses smarty_function_escape_special_chars()
*/ */
@@ -112,7 +114,7 @@ function smarty_function_html_image($params, $template)
} }
} else { } else {
// local file // local file
if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) { if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
return; return;
} }
} }

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {html_options} function plugin * Smarty {html_options} function plugin
*
* Type: function<br> * Type: function<br>
* Name: html_options<br> * Name: html_options<br>
* Purpose: Prints the list of <option> tags generated from * Purpose: Prints the list of <option> tags generated from
@@ -28,12 +27,13 @@
* (Smarty online manual) * (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de> * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object *
* @return string * @return string
* @uses smarty_function_escape_special_chars() * @uses smarty_function_escape_special_chars()
*/ */
function smarty_function_html_options($params, $template) function smarty_function_html_options($params)
{ {
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
@@ -91,7 +91,8 @@ function smarty_function_html_options($params, $template)
} }
break; break;
case 'strict': break; case 'strict':
break;
case 'disabled': case 'disabled':
case 'readonly': case 'readonly':

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {html_radios} function plugin * Smarty {html_radios} function plugin
*
* File: function.html_radios.php<br> * File: function.html_radios.php<br>
* Type: function<br> * Type: function<br>
* Name: html_radios<br> * Name: html_radios<br>
@@ -37,8 +36,10 @@
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
* @author credits to Monte Ohrt <monte at ohrt dot com> * @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0 * @version 1.0
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
*
* @return string * @return string
* @uses smarty_function_escape_special_chars() * @uses smarty_function_escape_special_chars()
*/ */
@@ -102,7 +103,8 @@ function smarty_function_html_radios($params, $template)
case 'assign': case 'assign':
break; break;
case 'strict': break; case 'strict':
break;
case 'disabled': case 'disabled':
case 'readonly': case 'readonly':

View File

@@ -17,11 +17,9 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/** /**
* Smarty {html_select_date} plugin * Smarty {html_select_date} plugin
*
* Type: function<br> * Type: function<br>
* Name: html_select_date<br> * Name: html_select_date<br>
* Purpose: Prints the dropdowns for date selection. * Purpose: Prints the dropdowns for date selection.
*
* ChangeLog: * ChangeLog:
* <pre> * <pre>
* - 1.0 initial release * - 1.0 initial release
@@ -47,11 +45,12 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
* @author Andrei Zmievski * @author Andrei Zmievski
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm * @author Rodney Rehm
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object *
* @return string * @return string
*/ */
function smarty_function_html_select_date($params, $template) function smarty_function_html_select_date($params)
{ {
// generate timestamps used for month names only // generate timestamps used for month names only
static $_month_timestamps = null; static $_month_timestamps = null;
@@ -187,7 +186,6 @@ function smarty_function_html_select_date($params, $template)
? $params['time'][$prefix . $_elementName] ? $params['time'][$prefix . $_elementName]
: date($_elementKey); : date($_elementKey);
} }
$time = mktime(0, 0, 0, $_month, $_day, $_year);
} elseif (isset($params['time'][$field_array][$prefix . 'Year'])) { } elseif (isset($params['time'][$field_array][$prefix . 'Year'])) {
// $_REQUEST given // $_REQUEST given
foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) { foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
@@ -196,7 +194,6 @@ function smarty_function_html_select_date($params, $template)
? $params['time'][$field_array][$prefix . $_elementName] ? $params['time'][$field_array][$prefix . $_elementName]
: date($_elementKey); : date($_elementKey);
} }
$time = mktime(0, 0, 0, $_month, $_day, $_year);
} else { } else {
// no date found, use NOW // no date found, use NOW
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
@@ -219,9 +216,9 @@ function smarty_function_html_select_date($params, $template)
if ($t === null) { if ($t === null) {
$$key = (int) $_current_year; $$key = (int) $_current_year;
} elseif ($t[0] == '+') { } elseif ($t[0] == '+') {
$$key = (int) ($_current_year + trim(substr($t, 1))); $$key = (int) ($_current_year + (int)trim(substr($t, 1)));
} elseif ($t[0] == '-') { } elseif ($t[0] == '-') {
$$key = (int) ($_current_year - trim(substr($t, 1))); $$key = (int) ($_current_year - (int)trim(substr($t, 1)));
} else { } else {
$$key = (int) $$key; $$key = (int) $$key;
} }
@@ -236,7 +233,6 @@ function smarty_function_html_select_date($params, $template)
// generate year <select> or <input> // generate year <select> or <input>
if ($display_years) { if ($display_years) {
$_html_years = '';
$_extra = ''; $_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year'); $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
if ($all_extra) { if ($all_extra) {
@@ -277,7 +273,6 @@ function smarty_function_html_select_date($params, $template)
// generate month <select> or <input> // generate month <select> or <input>
if ($display_months) { if ($display_months) {
$_html_month = '';
$_extra = ''; $_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month'); $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
if ($all_extra) { if ($all_extra) {
@@ -316,7 +311,6 @@ function smarty_function_html_select_date($params, $template)
// generate day <select> or <input> // generate day <select> or <input>
if ($display_days) { if ($display_days) {
$_html_day = '';
$_extra = ''; $_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day'); $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
if ($all_extra) { if ($all_extra) {

View File

@@ -17,7 +17,6 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/** /**
* Smarty {html_select_time} function plugin * Smarty {html_select_time} function plugin
*
* Type: function<br> * Type: function<br>
* Name: html_select_time<br> * Name: html_select_time<br>
* Purpose: Prints the dropdowns for time selection * Purpose: Prints the dropdowns for time selection
@@ -26,12 +25,13 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
* (Smarty online manual) * (Smarty online manual)
* @author Roberto Berto <roberto@berto.net> * @author Roberto Berto <roberto@berto.net>
* @author Monte Ohrt <monte AT ohrt DOT com> * @author Monte Ohrt <monte AT ohrt DOT com>
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object *
* @return string * @return string
* @uses smarty_make_timestamp() * @uses smarty_make_timestamp()
*/ */
function smarty_function_html_select_time($params, $template) function smarty_function_html_select_time($params)
{ {
$prefix = "Time_"; $prefix = "Time_";
$field_array = null; $field_array = null;

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {html_table} function plugin * Smarty {html_table} function plugin
*
* Type: function<br> * Type: function<br>
* Name: html_table<br> * Name: html_table<br>
* Date: Feb 17, 2003<br> * Date: Feb 17, 2003<br>
@@ -43,11 +42,12 @@
* @version 1.1 * @version 1.1
* @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table} * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
* (Smarty online manual) * (Smarty online manual)
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object *
* @return string * @return string
*/ */
function smarty_function_html_table($params, $template) function smarty_function_html_table($params)
{ {
$table_attr = 'border="1"'; $table_attr = 'border="1"';
$tr_attr = ''; $tr_attr = '';

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty {mailto} function plugin * Smarty {mailto} function plugin
*
* Type: function<br> * Type: function<br>
* Name: mailto<br> * Name: mailto<br>
* Date: May 21, 2002 * Date: May 21, 2002
@@ -44,11 +43,12 @@
* @version 1.2 * @version 1.2
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author credits to Jason Sweat (added cc, bcc and subject functionality) * @author credits to Jason Sweat (added cc, bcc and subject functionality)
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object *
* @return string * @return string
*/ */
function smarty_function_mailto($params, $template) function smarty_function_mailto($params)
{ {
static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true); static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
$extra = ''; $extra = '';
@@ -72,8 +72,9 @@ function smarty_function_mailto($params, $template)
case 'cc': case 'cc':
case 'bcc': case 'bcc':
case 'followupto': case 'followupto':
if (!empty($value)) if (!empty($value)) {
$mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value)); $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
}
break; break;
case 'subject': case 'subject':

View File

@@ -1,15 +1,14 @@
<?php <?php
/** /**
* Smarty plugin * Smarty plugin
*
* This plugin is only for Smarty2 BC * This plugin is only for Smarty2 BC
*
* @package Smarty * @package Smarty
* @subpackage PluginsFunction * @subpackage PluginsFunction
*/ */
/** /**
* Smarty {math} function plugin * Smarty {math} function plugin
*
* Type: function<br> * Type: function<br>
* Name: math<br> * Name: math<br>
* Purpose: handle math computations in template * Purpose: handle math computations in template
@@ -17,8 +16,10 @@
* @link http://www.smarty.net/manual/en/language.function.math.php {math} * @link http://www.smarty.net/manual/en/language.function.math.php {math}
* (Smarty online manual) * (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param array $params parameters * @param array $params parameters
* @param Smarty_Internal_Template $template template object * @param Smarty_Internal_Template $template template object
*
* @return string|null * @return string|null
*/ */
function smarty_function_math($params, $template) function smarty_function_math($params, $template)

View File

@@ -8,16 +8,15 @@
/** /**
* Smarty capitalize modifier plugin * Smarty capitalize modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: capitalize<br> * Name: capitalize<br>
* Purpose: capitalize words in the string * Purpose: capitalize words in the string
*
* {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }} * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
* *
* @param string $string string to capitalize * @param string $string string to capitalize
* @param boolean $uc_digits also capitalize "x123" to "X123" * @param boolean $uc_digits also capitalize "x123" to "X123"
* @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa" * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
*
* @return string capitalized string * @return string capitalized string
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm * @author Rodney Rehm
@@ -70,18 +69,22 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
* *
* @author Kyle Renfrow * @author Kyle Renfrow
*/ */
function smarty_mod_cap_mbconvert_cb($matches){ function smarty_mod_cap_mbconvert_cb($matches)
{
return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, Smarty::$_CHARSET); return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, Smarty::$_CHARSET);
} }
function smarty_mod_cap_mbconvert2_cb($matches){ function smarty_mod_cap_mbconvert2_cb($matches)
{
return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[3]), MB_CASE_UPPER, Smarty::$_CHARSET); return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[3]), MB_CASE_UPPER, Smarty::$_CHARSET);
} }
function smarty_mod_cap_ucfirst_cb($matches){ function smarty_mod_cap_ucfirst_cb($matches)
{
return stripslashes($matches[1]) . ucfirst(stripslashes($matches[2])); return stripslashes($matches[1]) . ucfirst(stripslashes($matches[2]));
} }
function smarty_mod_cap_ucfirst2_cb($matches){ function smarty_mod_cap_ucfirst2_cb($matches)
{
return stripslashes($matches[1]) . ucfirst(stripslashes($matches[3])); return stripslashes($matches[1]) . ucfirst(stripslashes($matches[3]));
} }

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty date_format modifier plugin * Smarty date_format modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: date_format<br> * Name: date_format<br>
* Purpose: format datestamps via strftime<br> * Purpose: format datestamps via strftime<br>
@@ -19,10 +18,12 @@
* *
* @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string input date string * @param string $string input date string
* @param string $format strftime format for output * @param string $format strftime format for output
* @param string $default_date default date if $string is empty * @param string $default_date default date if $string is empty
* @param string $formatter either 'strftime' or 'auto' * @param string $formatter either 'strftime' or 'auto'
*
* @return string |void * @return string |void
* @uses smarty_make_timestamp() * @uses smarty_make_timestamp()
*/ */

View File

@@ -8,15 +8,16 @@
/** /**
* Smarty debug_print_var modifier plugin * Smarty debug_print_var modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: debug_print_var<br> * Name: debug_print_var<br>
* Purpose: formats variable contents for display in the console * Purpose: formats variable contents for display in the console
* *
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param array|object $var variable to be formatted * @param array|object $var variable to be formatted
* @param integer $depth maximum recursion depth if $var is an array * @param integer $depth maximum recursion depth if $var is an array
* @param integer $length maximum string length if $var is a string * @param integer $length maximum string length if $var is a string
*
* @return string * @return string
*/ */
function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40) function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40)

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty escape modifier plugin * Smarty escape modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: escape<br> * Name: escape<br>
* Purpose: escape string for output * Purpose: escape string for output
* *
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string input string * @param string $string input string
* @param string $esc_type escape type * @param string $esc_type escape type
* @param string $char_set character set, used for htmlspecialchars() or htmlentities() * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
* @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities() * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
*
* @return string escaped input string * @return string escaped input string
*/ */
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true) function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty regex_replace modifier plugin * Smarty regex_replace modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: regex_replace<br> * Name: regex_replace<br>
* Purpose: regular expression search/replace * Purpose: regular expression search/replace
@@ -16,9 +15,11 @@
* @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
* regex_replace (Smarty online manual) * regex_replace (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string input string * @param string $string input string
* @param string|array $search regular expression(s) to search for * @param string|array $search regular expression(s) to search for
* @param string|array $replace string(s) that should be replaced * @param string|array $replace string(s) that should be replaced
*
* @return string * @return string
*/ */
function smarty_modifier_regex_replace($string, $search, $replace) function smarty_modifier_regex_replace($string, $search, $replace)
@@ -36,6 +37,7 @@ function smarty_modifier_regex_replace($string, $search, $replace)
/** /**
* @param string $search string(s) that should be replaced * @param string $search string(s) that should be replaced
*
* @return string * @return string
* @ignore * @ignore
*/ */

View File

@@ -1,13 +1,13 @@
<?php <?php
/** /**
* Smarty plugin * Smarty plugin
*
* @package Smarty * @package Smarty
* @subpackage PluginsModifier * @subpackage PluginsModifier
*/ */
/** /**
* Smarty replace modifier plugin * Smarty replace modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: replace<br> * Name: replace<br>
* Purpose: simple search/replace * Purpose: simple search/replace
@@ -15,9 +15,11 @@
* @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual) * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author Uwe Tews * @author Uwe Tews
*
* @param string $string input string * @param string $string input string
* @param string $search text to search for * @param string $search text to search for
* @param string $replace replacement text * @param string $replace replacement text
*
* @return string * @return string
*/ */
function smarty_modifier_replace($string, $search, $replace) function smarty_modifier_replace($string, $search, $replace)

View File

@@ -1,21 +1,23 @@
<?php <?php
/** /**
* Smarty plugin * Smarty plugin
*
* @package Smarty * @package Smarty
* @subpackage PluginsModifier * @subpackage PluginsModifier
*/ */
/** /**
* Smarty spacify modifier plugin * Smarty spacify modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: spacify<br> * Name: spacify<br>
* Purpose: add spaces between characters in a string * Purpose: add spaces between characters in a string
* *
* @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual) * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string input string * @param string $string input string
* @param string $spacify_char string to insert between characters. * @param string $spacify_char string to insert between characters.
*
* @return string * @return string
*/ */
function smarty_modifier_spacify($string, $spacify_char = ' ') function smarty_modifier_spacify($string, $spacify_char = ' ')

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty truncate modifier plugin * Smarty truncate modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: truncate<br> * Name: truncate<br>
* Purpose: Truncate a string to a certain length if necessary, * Purpose: Truncate a string to a certain length if necessary,
@@ -17,17 +16,20 @@
* *
* @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual) * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string input string * @param string $string input string
* @param integer $length length of truncated text * @param integer $length length of truncated text
* @param string $etc end string * @param string $etc end string
* @param boolean $break_words truncate at word boundary * @param boolean $break_words truncate at word boundary
* @param boolean $middle truncate in the middle of text * @param boolean $middle truncate in the middle of text
*
* @return string truncated string * @return string truncated string
*/ */
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
{ {
if ($length == 0) if ($length == 0) {
return ''; return '';
}
if (Smarty::$_MBSTRING) { if (Smarty::$_MBSTRING) {
if (mb_strlen($string, Smarty::$_CHARSET) > $length) { if (mb_strlen($string, Smarty::$_CHARSET) > $length) {

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty cat modifier plugin * Smarty cat modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: cat<br> * Name: cat<br>
* Date: Feb 24, 2003<br> * Date: Feb 24, 2003<br>
@@ -19,10 +18,12 @@
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
* (Smarty online manual) * (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_cat($params, $compiler) function smarty_modifiercompiler_cat($params)
{ {
return '(' . implode(').(', $params) . ')'; return '(' . implode(').(', $params) . ')';
} }

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty count_characters modifier plugin * Smarty count_characters modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: count_characteres<br> * Name: count_characteres<br>
* Purpose: count the number of characters in a text * Purpose: count the number of characters in a text
* *
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_count_characters($params, $compiler) function smarty_modifiercompiler_count_characters($params)
{ {
if (!isset($params[1]) || $params[1] != 'true') { if (!isset($params[1]) || $params[1] != 'true') {
return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)'; return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)';

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty count_paragraphs modifier plugin * Smarty count_paragraphs modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: count_paragraphs<br> * Name: count_paragraphs<br>
* Purpose: count the number of paragraphs in a text * Purpose: count the number of paragraphs in a text
@@ -16,10 +15,12 @@
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
* count_paragraphs (Smarty online manual) * count_paragraphs (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_count_paragraphs($params, $compiler) function smarty_modifiercompiler_count_paragraphs($params)
{ {
// count \r or \n characters // count \r or \n characters
return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)'; return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty count_sentences modifier plugin * Smarty count_sentences modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: count_sentences * Name: count_sentences
* Purpose: count the number of sentences in a text * Purpose: count the number of sentences in a text
@@ -16,10 +15,12 @@
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
* count_sentences (Smarty online manual) * count_sentences (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_count_sentences($params, $compiler) function smarty_modifiercompiler_count_sentences($params)
{ {
// find periods, question marks, exclamation marks with a word before but not after. // find periods, question marks, exclamation marks with a word before but not after.
return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)'; return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)';

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty count_words modifier plugin * Smarty count_words modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: count_words<br> * Name: count_words<br>
* Purpose: count the number of words in a text * Purpose: count the number of words in a text
* *
* @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_count_words($params, $compiler) function smarty_modifiercompiler_count_words($params)
{ {
if (Smarty::$_MBSTRING) { if (Smarty::$_MBSTRING) {
// return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)'; // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty default modifier plugin * Smarty default modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: default<br> * Name: default<br>
* Purpose: designate default value for empty variables * Purpose: designate default value for empty variables
* *
* @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_default ($params, $compiler) function smarty_modifiercompiler_default($params)
{ {
$output = $params[0]; $output = $params[0];
if (!isset($params[1])) { if (!isset($params[1])) {

View File

@@ -13,14 +13,16 @@ require_once( SMARTY_PLUGINS_DIR .'shared.literal_compiler_param.php' );
/** /**
* Smarty escape modifier plugin * Smarty escape modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: escape<br> * Name: escape<br>
* Purpose: escape string for output * Purpose: escape string for output
* *
* @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual) * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
* @author Rodney Rehm * @author Rodney Rehm
*
* @param array $params parameters * @param array $params parameters
* @param $compiler
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_escape($params, $compiler) function smarty_modifiercompiler_escape($params, $compiler)
@@ -105,9 +107,9 @@ function smarty_modifiercompiler_escape($params, $compiler)
case 'javascript': case 'javascript':
// escape quotes and backslashes, newlines, etc. // escape quotes and backslashes, newlines, etc.
return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))'; return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
} }
} catch (SmartyException $e) { }
catch (SmartyException $e) {
// pass through to regular plugin fallback // pass through to regular plugin fallback
} }

View File

@@ -8,16 +8,17 @@
/** /**
* Smarty from_charset modifier plugin * Smarty from_charset modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: from_charset<br> * Name: from_charset<br>
* Purpose: convert character encoding from $charset to internal encoding * Purpose: convert character encoding from $charset to internal encoding
* *
* @author Rodney Rehm * @author Rodney Rehm
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_from_charset($params, $compiler) function smarty_modifiercompiler_from_charset($params)
{ {
if (!Smarty::$_MBSTRING) { if (!Smarty::$_MBSTRING) {
// FIXME: (rodneyrehm) shouldn't this throw an error? // FIXME: (rodneyrehm) shouldn't this throw an error?

View File

@@ -1,24 +1,26 @@
<?php <?php
/** /**
* Smarty plugin * Smarty plugin
*
* @package Smarty * @package Smarty
* @subpackage PluginsModifierCompiler * @subpackage PluginsModifierCompiler
*/ */
/** /**
* Smarty indent modifier plugin * Smarty indent modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: indent<br> * Name: indent<br>
* Purpose: indent lines of text * Purpose: indent lines of text
* *
* @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_indent($params, $compiler) function smarty_modifiercompiler_indent($params)
{ {
if (!isset($params[1])) { if (!isset($params[1])) {
$params[1] = 4; $params[1] = 4;

View File

@@ -1,13 +1,13 @@
<?php <?php
/** /**
* Smarty plugin * Smarty plugin
*
* @package Smarty * @package Smarty
* @subpackage PluginsModifierCompiler * @subpackage PluginsModifierCompiler
*/ */
/** /**
* Smarty lower modifier plugin * Smarty lower modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: lower<br> * Name: lower<br>
* Purpose: convert string to lowercase * Purpose: convert string to lowercase
@@ -15,11 +15,13 @@
* @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_lower($params, $compiler) function smarty_modifiercompiler_lower($params)
{ {
if (Smarty::$_MBSTRING) { if (Smarty::$_MBSTRING) {
return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';

View File

@@ -8,16 +8,14 @@
/** /**
* Smarty noprint modifier plugin * Smarty noprint modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: noprint<br> * Name: noprint<br>
* Purpose: return an empty string * Purpose: return an empty string
* *
* @author Uwe Tews * @author Uwe Tews
* @param array $params parameters
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_noprint($params, $compiler) function smarty_modifiercompiler_noprint()
{ {
return "''"; return "''";
} }

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty string_format modifier plugin * Smarty string_format modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: string_format<br> * Name: string_format<br>
* Purpose: format strings via sprintf * Purpose: format strings via sprintf
* *
* @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_string_format($params, $compiler) function smarty_modifiercompiler_string_format($params)
{ {
return 'sprintf(' . $params[1] . ',' . $params[0] . ')'; return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
} }

View File

@@ -8,7 +8,6 @@
/** /**
* Smarty strip modifier plugin * Smarty strip modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: strip<br> * Name: strip<br>
* Purpose: Replace all repeated spaces, newlines, tabs * Purpose: Replace all repeated spaces, newlines, tabs
@@ -18,11 +17,13 @@
* *
* @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_strip($params, $compiler) function smarty_modifiercompiler_strip($params)
{ {
if (!isset($params[1])) { if (!isset($params[1])) {
$params[1] = "' '"; $params[1] = "' '";

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty strip_tags modifier plugin * Smarty strip_tags modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: strip_tags<br> * Name: strip_tags<br>
* Purpose: strip html tags from text * Purpose: strip html tags from text
* *
* @link http://www.smarty.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual) * @link http://www.smarty.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_strip_tags($params, $compiler) function smarty_modifiercompiler_strip_tags($params)
{ {
if (!isset($params[1]) || $params[1] === true || trim($params[1], '"') == 'true') { if (!isset($params[1]) || $params[1] === true || trim($params[1], '"') == 'true') {
return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})"; return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";

View File

@@ -8,16 +8,17 @@
/** /**
* Smarty to_charset modifier plugin * Smarty to_charset modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: to_charset<br> * Name: to_charset<br>
* Purpose: convert character encoding from internal encoding to $charset * Purpose: convert character encoding from internal encoding to $charset
* *
* @author Rodney Rehm * @author Rodney Rehm
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_to_charset($params, $compiler) function smarty_modifiercompiler_to_charset($params)
{ {
if (!Smarty::$_MBSTRING) { if (!Smarty::$_MBSTRING) {
// FIXME: (rodneyrehm) shouldn't this throw an error? // FIXME: (rodneyrehm) shouldn't this throw an error?

View File

@@ -8,16 +8,17 @@
/** /**
* Smarty unescape modifier plugin * Smarty unescape modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: unescape<br> * Name: unescape<br>
* Purpose: unescape html entities * Purpose: unescape html entities
* *
* @author Rodney Rehm * @author Rodney Rehm
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_unescape($params, $compiler) function smarty_modifiercompiler_unescape($params)
{ {
if (!isset($params[1])) { if (!isset($params[1])) {
$params[1] = 'html'; $params[1] = 'html';

View File

@@ -8,17 +8,18 @@
/** /**
* Smarty upper modifier plugin * Smarty upper modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: lower<br> * Name: lower<br>
* Purpose: convert string to uppercase * Purpose: convert string to uppercase
* *
* @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual) * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_upper($params, $compiler) function smarty_modifiercompiler_upper($params)
{ {
if (Smarty::$_MBSTRING) { if (Smarty::$_MBSTRING) {
return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';

View File

@@ -8,14 +8,16 @@
/** /**
* Smarty wordwrap modifier plugin * Smarty wordwrap modifier plugin
*
* Type: modifier<br> * Type: modifier<br>
* Name: wordwrap<br> * Name: wordwrap<br>
* Purpose: wrap a string of text at a given length * 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) * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
* @author Uwe Tews * @author Uwe Tews
*
* @param array $params parameters * @param array $params parameters
* @param $compiler
*
* @return string with compiled code * @return string with compiled code
*/ */
function smarty_modifiercompiler_wordwrap($params, $compiler) function smarty_modifiercompiler_wordwrap($params, $compiler)

View File

@@ -8,16 +8,16 @@
/** /**
* Smarty trimwhitespace outputfilter plugin * Smarty trimwhitespace outputfilter plugin
*
* Trim unnecessary whitespace from HTML markup. * Trim unnecessary whitespace from HTML markup.
* *
* @author Rodney Rehm * @author Rodney Rehm
*
* @param string $source input string * @param string $source input string
* @param Smarty_Internal_Template $smarty Smarty object *
* @return string filtered output * @return string filtered output
* @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail! * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
*/ */
function smarty_outputfilter_trimwhitespace($source, Smarty_Internal_Template $smarty) function smarty_outputfilter_trimwhitespace($source)
{ {
$store = array(); $store = array();
$_store = 0; $_store = 0;

View File

@@ -9,13 +9,14 @@
if (version_compare(PHP_VERSION, '5.2.3', '>=')) { if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
/** /**
* escape_special_chars common function * escape_special_chars common function
*
* Function: smarty_function_escape_special_chars<br> * Function: smarty_function_escape_special_chars<br>
* Purpose: used by other smarty functions to escape * Purpose: used by other smarty functions to escape
* special chars except for already escaped ones * special chars except for already escaped ones
* *
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string text that should by escaped * @param string $string text that should by escaped
*
* @return string * @return string
*/ */
function smarty_function_escape_special_chars($string) function smarty_function_escape_special_chars($string)
@@ -29,13 +30,14 @@ if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
} else { } else {
/** /**
* escape_special_chars common function * escape_special_chars common function
*
* Function: smarty_function_escape_special_chars<br> * Function: smarty_function_escape_special_chars<br>
* Purpose: used by other smarty functions to escape * Purpose: used by other smarty functions to escape
* special chars except for already escaped ones * special chars except for already escaped ones
* *
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param string $string text that should by escaped * @param string $string text that should by escaped
*
* @return string * @return string
*/ */
function smarty_function_escape_special_chars($string) function smarty_function_escape_special_chars($string)

View File

@@ -12,6 +12,7 @@
* @param array $params parameter array as given to the compiler function * @param array $params parameter array as given to the compiler function
* @param integer $index array index of the parameter to convert * @param integer $index array index of the parameter to convert
* @param mixed $default value to be returned if the parameter is not present * @param mixed $default value to be returned if the parameter is not present
*
* @return mixed evaluated value of parameter or $default * @return mixed evaluated value of parameter or $default
* @throws SmartyException if parameter is not a literal (but an expression, variable, …) * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
* @author Rodney Rehm * @author Rodney Rehm

View File

@@ -11,7 +11,9 @@
* Purpose: used by other smarty functions to make a timestamp from a string. * Purpose: used by other smarty functions to make a timestamp from a string.
* *
* @author Monte Ohrt <monte at ohrt dot com> * @author Monte Ohrt <monte at ohrt dot com>
*
* @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime() * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
*
* @return int * @return int
*/ */
function smarty_make_timestamp($string) function smarty_make_timestamp($string)

View File

@@ -14,6 +14,7 @@ if (!function_exists('smarty_mb_str_replace')) {
* @param string $replace the replacement string * @param string $replace the replacement string
* @param string $subject the source string * @param string $subject the source string
* @param int &$count number of matches found * @param int &$count number of matches found
*
* @return string replaced string * @return string replaced string
* @author Rodney Rehm * @author Rodney Rehm
*/ */
@@ -51,5 +52,4 @@ if (!function_exists('smarty_mb_str_replace')) {
return $subject; return $subject;
} }
} }

View File

@@ -10,8 +10,10 @@
* convert characters to their decimal unicode equivalents * convert characters to their decimal unicode equivalents
* *
* @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
*
* @param string $string characters to calculate unicode of * @param string $string characters to calculate unicode of
* @param string $encoding encoding of $string, if null mb_internal_encoding() is used * @param string $encoding encoding of $string, if null mb_internal_encoding() is used
*
* @return array sequence of unicodes * @return array sequence of unicodes
* @author Rodney Rehm * @author Rodney Rehm
*/ */
@@ -30,8 +32,10 @@ function smarty_mb_to_unicode($string, $encoding=null)
* convert unicodes to the character of given encoding * convert unicodes to the character of given encoding
* *
* @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
*
* @param integer|array $unicode single unicode or list of unicodes to convert * @param integer|array $unicode single unicode or list of unicodes to convert
* @param string $encoding encoding of returned string, if null mb_internal_encoding() is used * @param string $encoding encoding of returned string, if null mb_internal_encoding() is used
*
* @return string unicode as character sequence in given $encoding * @return string unicode as character sequence in given $encoding
* @author Rodney Rehm * @author Rodney Rehm
*/ */

View File

@@ -12,10 +12,12 @@ if (!function_exists('smarty_mb_wordwrap')) {
* Wrap a string to a given number of characters * Wrap a string to a given number of characters
* *
* @link http://php.net/manual/en/function.wordwrap.php for similarity * @link http://php.net/manual/en/function.wordwrap.php for similarity
*
* @param string $str the string to wrap * @param string $str the string to wrap
* @param int $width the width of the output * @param int $width the width of the output
* @param string $break the character used to break the line * @param string $break the character used to break the line
* @param boolean $cut ignored parameter, just for the sake of * @param boolean $cut ignored parameter, just for the sake of
*
* @return string wrapped string * @return string wrapped string
* @author Rodney Rehm * @author Rodney Rehm
*/ */
@@ -78,5 +80,4 @@ if (!function_exists('smarty_mb_wordwrap')) {
return $t; return $t;
} }
} }

View File

@@ -10,10 +10,10 @@
* Smarty htmlspecialchars variablefilter plugin * Smarty htmlspecialchars variablefilter plugin
* *
* @param string $source input string * @param string $source input string
* @param Smarty_Internal_Template $smarty Smarty object *
* @return string filtered output * @return string filtered output
*/ */
function smarty_variablefilter_htmlspecialchars($source, $smarty) function smarty_variablefilter_htmlspecialchars($source)
{ {
return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET); return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET);
} }

View File

@@ -17,12 +17,14 @@ abstract class Smarty_CacheResource
{ {
/** /**
* cache for Smarty_CacheResource instances * cache for Smarty_CacheResource instances
*
* @var array * @var array
*/ */
public static $resources = array(); public static $resources = array();
/** /**
* resource types provided by the core * resource types provided by the core
*
* @var array * @var array
*/ */
protected static $sysplugins = array( protected static $sysplugins = array(
@@ -34,6 +36,7 @@ abstract class Smarty_CacheResource
* *
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
*
* @return void * @return void
*/ */
abstract public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template); abstract public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
@@ -41,7 +44,8 @@ abstract class Smarty_CacheResource
/** /**
* populate Cached Object with timestamp and exists from Resource * populate Cached Object with timestamp and exists from Resource
* *
* @param Smarty_Template_Cached $source cached object * @param Smarty_Template_Cached $cached
*
* @return void * @return void
*/ */
abstract public function populateTimestamp(Smarty_Template_Cached $cached); abstract public function populateTimestamp(Smarty_Template_Cached $cached);
@@ -51,7 +55,8 @@ abstract class Smarty_CacheResource
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if the cached content does not exist *
* @return boolean true or false if the cached content does not exist
*/ */
abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null); abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null);
@@ -60,6 +65,7 @@ abstract class Smarty_CacheResource
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content); abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
@@ -68,7 +74,8 @@ abstract class Smarty_CacheResource
* Return cached content * Return cached content
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param string $content content of cache *
* @return null|string
*/ */
public function getCachedContent(Smarty_Internal_Template $_template) public function getCachedContent(Smarty_Internal_Template $_template)
{ {
@@ -87,6 +94,7 @@ abstract class Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param integer $exp_time expiration time (number of seconds, not timestamp) * @param integer $exp_time expiration time (number of seconds, not timestamp)
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
abstract public function clearAll(Smarty $smarty, $exp_time = null); abstract public function clearAll(Smarty $smarty, $exp_time = null);
@@ -99,10 +107,17 @@ abstract class Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer $exp_time expiration time (number of seconds, not timestamp) * @param integer $exp_time expiration time (number of seconds, not timestamp)
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time); abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
/**
* @param Smarty $smarty
* @param Smarty_Template_Cached $cached
*
* @return bool|null
*/
public function locked(Smarty $smarty, Smarty_Template_Cached $cached) public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
// theoretically locking_timeout should be checked against time_limit (max_execution_time) // theoretically locking_timeout should be checked against time_limit (max_execution_time)
@@ -120,18 +135,42 @@ abstract class Smarty_CacheResource
return $hadLock; return $hadLock;
} }
/**
* Check is cache is locked for this template
*
* @param Smarty $smarty
* @param Smarty_Template_Cached $cached
*
* @return bool
*/
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
// check if lock exists // check if lock exists
return false; return false;
} }
/**
* Lock cache for this template
*
* @param Smarty $smarty
* @param Smarty_Template_Cached $cached
*
* @return bool
*/
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
// create lock // create lock
return true; return true;
} }
/**
* Unlock cache for this template
*
* @param Smarty $smarty
* @param Smarty_Template_Cached $cached
*
* @return bool
*/
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
// release lock // release lock
@@ -143,6 +182,8 @@ abstract class Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param string $type name of the cache resource * @param string $type name of the cache resource
*
* @throws SmartyException
* @return Smarty_CacheResource Cache Resource Handler * @return Smarty_CacheResource Cache Resource Handler
*/ */
public static function load(Smarty $smarty, $type = null) public static function load(Smarty $smarty, $type = null)
@@ -201,7 +242,6 @@ abstract class Smarty_CacheResource
/** /**
* Smarty Resource Data Object * Smarty Resource Data Object
*
* Cache Data Container for Template Files * Cache Data Container for Template Files
* *
* @package Smarty * @package Smarty
@@ -212,72 +252,84 @@ class Smarty_Template_Cached
{ {
/** /**
* Source Filepath * Source Filepath
*
* @var string * @var string
*/ */
public $filepath = false; public $filepath = false;
/** /**
* Source Content * Source Content
*
* @var string * @var string
*/ */
public $content = null; public $content = null;
/** /**
* Source Timestamp * Source Timestamp
*
* @var integer * @var integer
*/ */
public $timestamp = false; public $timestamp = false;
/** /**
* Source Existence * Source Existence
*
* @var boolean * @var boolean
*/ */
public $exists = false; public $exists = false;
/** /**
* Cache Is Valid * Cache Is Valid
*
* @var boolean * @var boolean
*/ */
public $valid = false; public $valid = false;
/** /**
* Cache was processed * Cache was processed
*
* @var boolean * @var boolean
*/ */
public $processed = false; public $processed = false;
/** /**
* CacheResource Handler * CacheResource Handler
*
* @var Smarty_CacheResource * @var Smarty_CacheResource
*/ */
public $handler = null; public $handler = null;
/** /**
* Template Compile Id (Smarty_Internal_Template::$compile_id) * Template Compile Id (Smarty_Internal_Template::$compile_id)
*
* @var string * @var string
*/ */
public $compile_id = null; public $compile_id = null;
/** /**
* Template Cache Id (Smarty_Internal_Template::$cache_id) * Template Cache Id (Smarty_Internal_Template::$cache_id)
*
* @var string * @var string
*/ */
public $cache_id = null; public $cache_id = null;
/** /**
* Id for cache locking * Id for cache locking
*
* @var string * @var string
*/ */
public $lock_id = null; public $lock_id = null;
/** /**
* flag that cache is locked by this instance * flag that cache is locked by this instance
*
* @var bool * @var bool
*/ */
public $is_locked = false; public $is_locked = false;
/** /**
* Source Object * Source Object
*
* @var Smarty_Template_Source * @var Smarty_Template_Source
*/ */
public $source = null; public $source = null;
@@ -366,6 +418,7 @@ class Smarty_Template_Cached
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
public function write(Smarty_Internal_Template $_template, $content) public function write(Smarty_Internal_Template $_template, $content)
@@ -386,5 +439,4 @@ class Smarty_Template_Cached
return false; return false;
} }
} }

View File

@@ -24,13 +24,13 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* @param string $compile_id compile id * @param string $compile_id compile id
* @param string $content cached content * @param string $content cached content
* @param integer $mtime cache modification timestamp (epoch) * @param integer $mtime cache modification timestamp (epoch)
*
* @return void * @return void
*/ */
abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime); abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
/** /**
* Fetch cached content's modification timestamp from data source * Fetch cached content's modification timestamp from data source
*
* {@internal implementing this method is optional. * {@internal implementing this method is optional.
* Only implement it if modification times can be accessed faster than loading the complete cached content.}} * Only implement it if modification times can be accessed faster than loading the complete cached content.}}
* *
@@ -38,6 +38,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* @param string $name template name * @param string $name template name
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
*
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/ */
protected function fetchTimestamp($id, $name, $cache_id, $compile_id) protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
@@ -54,6 +55,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration or null * @param integer|null $exp_time seconds till expiration or null
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content); abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
@@ -65,6 +67,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer|null $exp_time seconds till expiration time in seconds or null * @param integer|null $exp_time seconds till expiration time in seconds or null
*
* @return integer number of deleted caches * @return integer number of deleted caches
*/ */
abstract protected function delete($name, $cache_id, $compile_id, $exp_time); abstract protected function delete($name, $cache_id, $compile_id, $exp_time);
@@ -74,6 +77,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
*
* @return void * @return void
*/ */
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
@@ -88,7 +92,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
/** /**
* populate Cached Object with timestamp and exists from Resource * populate Cached Object with timestamp and exists from Resource
* *
* @param Smarty_Template_Cached $source cached object * @param Smarty_Template_Cached $cached
*
* @return void * @return void
*/ */
public function populateTimestamp(Smarty_Template_Cached $cached) public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -111,7 +116,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if the cached content does not exist *
* @return boolean true or false if the cached content does not exist
*/ */
public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null) public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
{ {
@@ -131,6 +137,9 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
); );
} }
if (isset($content)) { if (isset($content)) {
/** @var Smarty_Internal_Template $_smarty_tpl
* used in evaluated code
*/
$_smarty_tpl = $_template; $_smarty_tpl = $_template;
eval("?>" . $content); eval("?>" . $content);
@@ -145,6 +154,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
public function writeCachedContent(Smarty_Internal_Template $_template, $content) public function writeCachedContent(Smarty_Internal_Template $_template, $content)
@@ -164,6 +174,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param integer $exp_time expiration time (number of seconds, not timestamp) * @param integer $exp_time expiration time (number of seconds, not timestamp)
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
public function clearAll(Smarty $smarty, $exp_time = null) public function clearAll(Smarty $smarty, $exp_time = null)
@@ -181,6 +192,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer $exp_time expiration time (number of seconds, not timestamp) * @param integer $exp_time expiration time (number of seconds, not timestamp)
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
@@ -221,7 +233,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if cache is locked *
* @return boolean true or false if cache is locked
*/ */
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -241,6 +254,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return bool|void
*/ */
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -256,6 +271,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return bool|void
*/ */
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {

View File

@@ -8,19 +8,16 @@
/** /**
* Smarty Cache Handler Base for Key/Value Storage Implementations * Smarty Cache Handler Base for Key/Value Storage Implementations
*
* This class implements the functionality required to use simple key/value stores * This class implements the functionality required to use simple key/value stores
* for hierarchical cache groups. key/value stores like memcache or APC do not support * for hierarchical cache groups. key/value stores like memcache or APC do not support
* wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
* is no problem to filesystem and RDBMS implementations. * is no problem to filesystem and RDBMS implementations.
*
* This implementation is based on the concept of invalidation. While one specific cache * This implementation is based on the concept of invalidation. While one specific cache
* can be identified and cleared, any range of caches cannot be identified. For this reason * can be identified and cleared, any range of caches cannot be identified. For this reason
* each level of the cache group hierarchy can have its own value in the store. These values * each level of the cache group hierarchy can have its own value in the store. These values
* are nothing but microtimes, telling us when a particular cache group was cleared for the * are nothing but microtimes, telling us when a particular cache group was cleared for the
* last time. These keys are evaluated for every cache read to determine if the cache has * last time. These keys are evaluated for every cache read to determine if the cache has
* been invalidated since it was created and should hence be treated as inexistent. * been invalidated since it was created and should hence be treated as inexistent.
*
* Although deep hierarchies are possible, they are not recommended. Try to keep your * Although deep hierarchies are possible, they are not recommended. Try to keep your
* cache groups as shallow as possible. Anything up 3-5 parents should be ok. So * cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
* »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating * »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
@@ -35,11 +32,13 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
{ {
/** /**
* cache for contents * cache for contents
*
* @var array * @var array
*/ */
protected $contents = array(); protected $contents = array();
/** /**
* cache for timestamps * cache for timestamps
*
* @var array * @var array
*/ */
protected $timestamps = array(); protected $timestamps = array();
@@ -49,6 +48,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
*
* @return void * @return void
*/ */
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
@@ -65,6 +65,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* populate Cached Object with timestamp and exists from Resource * populate Cached Object with timestamp and exists from Resource
* *
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return void * @return void
*/ */
public function populateTimestamp(Smarty_Template_Cached $cached) public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -82,7 +83,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if the cached content does not exist *
* @return boolean true or false if the cached content does not exist
*/ */
public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null) public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
{ {
@@ -97,6 +99,9 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
} }
} }
if (isset($content)) { if (isset($content)) {
/** @var Smarty_Internal_Template $_smarty_tpl
* used in evaluated code
*/
$_smarty_tpl = $_template; $_smarty_tpl = $_template;
eval("?>" . $content); eval("?>" . $content);
@@ -111,6 +116,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
public function writeCachedContent(Smarty_Internal_Template $_template, $content) public function writeCachedContent(Smarty_Internal_Template $_template, $content)
@@ -122,11 +128,11 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
/** /**
* Empty cache * Empty cache
*
* {@internal the $exp_time argument is ignored altogether }} * {@internal the $exp_time argument is ignored altogether }}
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param integer $exp_time expiration time [being ignored] * @param integer $exp_time expiration time [being ignored]
*
* @return integer number of cache files deleted [always -1] * @return integer number of cache files deleted [always -1]
* @uses purge() to clear the whole store * @uses purge() to clear the whole store
* @uses invalidate() to mark everything outdated if purge() is inapplicable * @uses invalidate() to mark everything outdated if purge() is inapplicable
@@ -142,7 +148,6 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
/** /**
* Empty cache for a specific template * Empty cache for a specific template
*
* {@internal the $exp_time argument is ignored altogether}} * {@internal the $exp_time argument is ignored altogether}}
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
@@ -150,6 +155,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer $exp_time expiration time [being ignored] * @param integer $exp_time expiration time [being ignored]
*
* @return integer number of cache files deleted [always -1] * @return integer number of cache files deleted [always -1]
* @uses buildCachedFilepath() to generate the CacheID * @uses buildCachedFilepath() to generate the CacheID
* @uses invalidate() to mark CacheIDs parent chain as outdated * @uses invalidate() to mark CacheIDs parent chain as outdated
@@ -164,6 +170,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
return - 1; return - 1;
} }
/** /**
* Get template's unique ID * Get template's unique ID
* *
@@ -171,6 +178,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @param string $resource_name template name * @param string $resource_name template name
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
*
* @return string filepath of cache file * @return string filepath of cache file
*/ */
protected function getTemplateUid(Smarty $smarty, $resource_name, $cache_id, $compile_id) protected function getTemplateUid(Smarty $smarty, $resource_name, $cache_id, $compile_id)
@@ -201,6 +209,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* Sanitize CacheID components * Sanitize CacheID components
* *
* @param string $string CacheID component to sanitize * @param string $string CacheID component to sanitize
*
* @return string sanitized CacheID component * @return string sanitized CacheID component
*/ */
protected function sanitize($string) protected function sanitize($string)
@@ -224,6 +233,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @param string $content cached content * @param string $content cached content
* @param integer &$timestamp cached timestamp (epoch) * @param integer &$timestamp cached timestamp (epoch)
* @param string $resource_uid resource's uid * @param string $resource_uid resource's uid
*
* @return boolean success * @return boolean success
*/ */
protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null, &$timestamp = null, $resource_uid = null) protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null, &$timestamp = null, $resource_uid = null)
@@ -245,7 +255,6 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
/** /**
* Add current microtime to the beginning of $cache_content * Add current microtime to the beginning of $cache_content
*
* {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}} * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
* *
* @param string &$content the content to be cached * @param string &$content the content to be cached
@@ -261,6 +270,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* Extract the timestamp the $content was cached * Extract the timestamp the $content was cached
* *
* @param string &$content the cached content * @param string &$content the cached content
*
* @return float the microtime the content was cached * @return float the microtime the content was cached
*/ */
protected function getMetaTimestamp(&$content) protected function getMetaTimestamp(&$content)
@@ -280,6 +290,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param string $resource_uid source's uid * @param string $resource_uid source's uid
*
* @return void * @return void
*/ */
protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null) protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
@@ -289,23 +300,25 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
// invalidate everything // invalidate everything
if (!$resource_name && !$cache_id && !$compile_id) { if (!$resource_name && !$cache_id && !$compile_id) {
$key = 'IVK#ALL'; $key = 'IVK#ALL';
} } // invalidate all caches by template
// invalidate all caches by template else {
else if ($resource_name && !$cache_id && !$compile_id) { if ($resource_name && !$cache_id && !$compile_id) {
$key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name); $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
} } // invalidate all caches by cache group
// invalidate all caches by cache group else {
else if (!$resource_name && $cache_id && !$compile_id) { if (!$resource_name && $cache_id && !$compile_id) {
$key = 'IVK#CACHE#' . $this->sanitize($cache_id); $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
} } // invalidate all caches by compile id
// invalidate all caches by compile id else {
else if (!$resource_name && !$cache_id && $compile_id) { if (!$resource_name && !$cache_id && $compile_id) {
$key = 'IVK#COMPILE#' . $this->sanitize($compile_id); $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
} } // invalidate by combination
// invalidate by combination
else { else {
$key = 'IVK#CID#' . $cid; $key = 'IVK#CID#' . $cid;
} }
}
}
}
$this->write(array($key => $now)); $this->write(array($key => $now));
} }
@@ -317,6 +330,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param string $resource_uid source's filepath * @param string $resource_uid source's filepath
*
* @return float the microtime the CacheID was invalidated * @return float the microtime the CacheID was invalidated
*/ */
protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null) protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
@@ -342,7 +356,6 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
/** /**
* Translate a CacheID into the list of applicable InvalidationKeys. * Translate a CacheID into the list of applicable InvalidationKeys.
*
* Splits "some|chain|into|an|array" into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... ) * Splits "some|chain|into|an|array" into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
* *
* @param string $cid CacheID to translate * @param string $cid CacheID to translate
@@ -350,6 +363,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param string $resource_uid source's filepath * @param string $resource_uid source's filepath
*
* @return array list of InvalidationKeys * @return array list of InvalidationKeys
* @uses $invalidationKeyPrefix to prepend to each InvalidationKey * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
*/ */
@@ -398,7 +412,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if cache is locked *
* @return boolean true or false if cache is locked
*/ */
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -413,6 +428,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return bool|void
*/ */
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -426,6 +443,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return bool|void
*/ */
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -438,6 +457,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* Read values for a set of keys from cache * Read values for a set of keys from cache
* *
* @param array $keys list of keys to fetch * @param array $keys list of keys to fetch
*
* @return array list of values with the given keys used as indexes * @return array list of values with the given keys used as indexes
*/ */
abstract protected function read(array $keys); abstract protected function read(array $keys);
@@ -447,6 +467,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* *
* @param array $keys list of values to save * @param array $keys list of values to save
* @param int $expire expiration time * @param int $expire expiration time
*
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
abstract protected function write(array $keys, $expire = null); abstract protected function write(array $keys, $expire = null);
@@ -455,6 +476,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
* Remove values from cache * Remove values from cache
* *
* @param array $keys list of keys to delete * @param array $keys list of keys to delete
*
* @return boolean true on success, false on failure * @return boolean true on success, false on failure
*/ */
abstract protected function delete(array $keys); abstract protected function delete(array $keys);
@@ -468,5 +490,4 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
{ {
return false; return false;
} }
} }

View File

@@ -8,13 +8,11 @@
/** /**
* Smarty Resource Data Object * Smarty Resource Data Object
*
* Meta Data Container for Config Files * Meta Data Container for Config Files
* *
* @package Smarty * @package Smarty
* @subpackage TemplateResources * @subpackage TemplateResources
* @author Rodney Rehm * @author Rodney Rehm
*
* @property string $content * @property string $content
* @property int $timestamp * @property int $timestamp
* @property bool $exists * @property bool $exists
@@ -52,6 +50,7 @@ class Smarty_Config_Source extends Smarty_Template_Source
* *
* @param string $property_name valid: content, timestamp, exists * @param string $property_name valid: content, timestamp, exists
* @param mixed $value newly assigned value (not check for correct type) * @param mixed $value newly assigned value (not check for correct type)
*
* @throws SmartyException when the given property name is not valid * @throws SmartyException when the given property name is not valid
*/ */
public function __set($property_name, $value) public function __set($property_name, $value)
@@ -72,6 +71,8 @@ class Smarty_Config_Source extends Smarty_Template_Source
* <<magic>> Generic getter. * <<magic>> Generic getter.
* *
* @param string $property_name valid: content, timestamp, exists * @param string $property_name valid: content, timestamp, exists
*
* @return mixed|void
* @throws SmartyException when the given property name is not valid * @throws SmartyException when the given property name is not valid
*/ */
public function __get($property_name) public function __get($property_name)
@@ -90,5 +91,4 @@ class Smarty_Config_Source extends Smarty_Template_Source
throw new SmartyException("config property '$property_name' does not exist."); throw new SmartyException("config property '$property_name' does not exist.");
} }
} }
} }

View File

@@ -10,7 +10,6 @@
/** /**
* This class does contain all necessary methods for the HTML cache on file system * This class does contain all necessary methods for the HTML cache on file system
*
* Implements the file system as resource for the HTML cache Version ussing nocache inserts. * Implements the file system as resource for the HTML cache Version ussing nocache inserts.
* *
* @package Smarty * @package Smarty
@@ -23,6 +22,7 @@
* *
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
*
* @return void * @return void
*/ */
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
@@ -69,6 +69,7 @@
* populate Cached Object with timestamp and exists from Resource * populate Cached Object with timestamp and exists from Resource
* *
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return void * @return void
*/ */
public function populateTimestamp(Smarty_Template_Cached $cached) public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -82,10 +83,14 @@
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if the cached content does not exist *
* @return booleantrue or false if the cached content does not exist
*/ */
public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null) public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
{ {
/** @var Smarty_Internal_Template $_smarty_tpl
* used in included file
*/
$_smarty_tpl = $_template; $_smarty_tpl = $_template;
return @include $_template->cached->filepath; return @include $_template->cached->filepath;
@@ -96,6 +101,7 @@
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty_Internal_Template $_template template object
* @param string $content content to cache * @param string $content content to cache
*
* @return boolean success * @return boolean success
*/ */
public function writeCachedContent(Smarty_Internal_Template $_template, $content) public function writeCachedContent(Smarty_Internal_Template $_template, $content)
@@ -114,8 +120,9 @@
/** /**
* Empty cache * Empty cache
* *
* @param Smarty_Internal_Template $_template template object * @param Smarty $smarty
* @param integer $exp_time expiration time (number of seconds, not timestamp) * @param integer $exp_time expiration time (number of seconds, not timestamp)
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
public function clearAll(Smarty $smarty, $exp_time = null) public function clearAll(Smarty $smarty, $exp_time = null)
@@ -126,11 +133,12 @@
/** /**
* Empty cache for a specific template * Empty cache for a specific template
* *
* @param Smarty $_template template object * @param Smarty $smarty
* @param string $resource_name template name * @param string $resource_name template name
* @param string $cache_id cache id * @param string $cache_id cache id
* @param string $compile_id compile id * @param string $compile_id compile id
* @param integer $exp_time expiration time (number of seconds, not timestamp) * @param integer $exp_time expiration time (number of seconds, not timestamp)
*
* @return integer number of cache files deleted * @return integer number of cache files deleted
*/ */
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
@@ -180,7 +188,9 @@
$_cacheDirs = new RecursiveDirectoryIterator($_dir); $_cacheDirs = new RecursiveDirectoryIterator($_dir);
$_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST); $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_cache as $_file) { foreach ($_cache as $_file) {
if (substr(basename($_file->getPathname()),0,1) == '.' || strpos($_file, '.svn') !== false) continue; if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
continue;
}
// directory ? // directory ?
if ($_file->isDir()) { if ($_file->isDir()) {
if (!$_cache->isDot()) { if (!$_cache->isDot()) {
@@ -208,7 +218,9 @@
continue; continue;
} }
for ($i = 0; $i < $_cache_id_parts_count; $i ++) { for ($i = 0; $i < $_cache_id_parts_count; $i ++) {
if ($_parts[$i] != $_cache_id_parts[$i]) continue 2; if ($_parts[$i] != $_cache_id_parts[$i]) {
continue 2;
}
} }
} }
// expired ? // expired ?
@@ -237,7 +249,8 @@
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
* @return booelan true or false if cache is locked *
* @return boolean true or false if cache is locked
*/ */
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -256,6 +269,8 @@
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return bool|void
*/ */
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
@@ -268,6 +283,8 @@
* *
* @param Smarty $smarty Smarty object * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object * @param Smarty_Template_Cached $cached cached object
*
* @return bool|void
*/ */
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Append * Smarty Internal Plugin Compile Append
*
* Compiles the {append} tag * Compiles the {append} tag
* *
* @package Smarty * @package Smarty
@@ -23,6 +22,7 @@ class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -47,5 +47,4 @@ class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
// call compile assign // call compile assign
return parent::compile($_new_attr, $compiler, $_params); return parent::compile($_new_attr, $compiler, $_params);
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Assign * Smarty Internal Plugin Compile Assign
*
* Compiles the {assign} tag * Compiles the {assign} tag
* *
* @package Smarty * @package Smarty
@@ -23,6 +22,7 @@ class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -83,5 +83,4 @@ class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
return $output; return $output;
} }
} }

View File

@@ -2,7 +2,6 @@
/** /**
* Smarty Internal Plugin Compile Block * Smarty Internal Plugin Compile Block
*
* Compiles the {block}{/block} tags * Compiles the {block}{/block} tags
* *
* @package Smarty * @package Smarty
@@ -70,6 +69,7 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return boolean true * @return boolean true
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -81,7 +81,6 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase
// check if we process an inheritance child template // check if we process an inheritance child template
if ($compiler->inheritance_child) { if ($compiler->inheritance_child) {
array_unshift(self::$nested_block_names, $_name); array_unshift(self::$nested_block_names, $_name);
$this->template->block_data[$_name]['source'] = '';
// build {block} for child block // build {block} for child block
self::$block_data[$_name]['source'] = self::$block_data[$_name]['source'] =
"{$compiler->smarty->left_delimiter}private_child_block name={$_attr['name']} file='{$compiler->template->source->filepath}' type='{$compiler->template->source->type}' resource='{$compiler->template->template_resource}'" . "{$compiler->smarty->left_delimiter}private_child_block name={$_attr['name']} file='{$compiler->template->source->filepath}' type='{$compiler->template->source->type}' resource='{$compiler->template->template_resource}'" .
@@ -114,12 +113,12 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase
return true; return true;
} }
/** /**
* Compile saved child block source * Compile saved child block source
* *
* @param object $compiler compiler object * @param object $compiler compiler object
* @param string $_name optional name of child block * @param string $_name optional name of child block
*
* @return string compiled code of child block * @return string compiled code of child block
*/ */
static function compileChildBlock($compiler, $_name = null) static function compileChildBlock($compiler, $_name = null)
@@ -208,7 +207,8 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase
* *
* @param object $compiler compiler object * @param object $compiler compiler object
* @param string $_name optional name of child block * @param string $_name optional name of child block
* @return string compiled code of schild block *
* @return string compiled code of child block
*/ */
static function compileParentBlock($compiler, $_name = null) static function compileParentBlock($compiler, $_name = null)
{ {
@@ -237,17 +237,16 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase
/** /**
* Process block source * Process block source
* *
* @param $compiler
* @param string $source source text * @param string $source source text
* @return '' *
*/ */
static function blockSource($compiler, $source) static function blockSource($compiler, $source)
{ {
Smarty_Internal_Compile_Block::$block_data[Smarty_Internal_Compile_Block::$nested_block_names[0]]['source'] .= $source; Smarty_Internal_Compile_Block::$block_data[Smarty_Internal_Compile_Block::$nested_block_names[0]]['source'] .= $source;
} }
} }
/** /**
* Smarty Internal Plugin Compile BlockClose Class * Smarty Internal Plugin Compile BlockClose Class
* *
@@ -261,6 +260,7 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -276,7 +276,6 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase
if ($compiler->inheritance_child) { if ($compiler->inheritance_child) {
$name1 = Smarty_Internal_Compile_Block::$nested_block_names[0]; $name1 = Smarty_Internal_Compile_Block::$nested_block_names[0];
Smarty_Internal_Compile_Block::$block_data[$name1]['source'] .= "{$compiler->smarty->left_delimiter}/private_child_block{$compiler->smarty->right_delimiter}"; Smarty_Internal_Compile_Block::$block_data[$name1]['source'] .= "{$compiler->smarty->left_delimiter}/private_child_block{$compiler->smarty->right_delimiter}";
$level = count(Smarty_Internal_Compile_Block::$nested_block_names);
array_shift(Smarty_Internal_Compile_Block::$nested_block_names); array_shift(Smarty_Internal_Compile_Block::$nested_block_names);
if (!empty(Smarty_Internal_Compile_Block::$nested_block_names)) { if (!empty(Smarty_Internal_Compile_Block::$nested_block_names)) {
$name2 = Smarty_Internal_Compile_Block::$nested_block_names[0]; $name2 = Smarty_Internal_Compile_Block::$nested_block_names[0];
@@ -363,12 +362,12 @@ class Smarty_Internal_Compile_Private_Child_Block extends Smarty_Internal_Compil
*/ */
public $required_attributes = array('name', 'file', 'uid', 'line', 'type', 'resource'); public $required_attributes = array('name', 'file', 'uid', 'line', 'type', 'resource');
/** /**
* Compiles code for the {private_child_block} tag * Compiles code for the {private_child_block} tag
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return boolean true * @return boolean true
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -386,7 +385,6 @@ class Smarty_Internal_Compile_Private_Child_Block extends Smarty_Internal_Compil
unset ($compiler->template->source); unset ($compiler->template->source);
$exists = $compiler->template->source->exists; $exists = $compiler->template->source->exists;
// must merge includes // must merge includes
if ($_attr['nocache'] == true) { if ($_attr['nocache'] == true) {
$compiler->tag_nocache = true; $compiler->tag_nocache = true;
@@ -414,12 +412,12 @@ class Smarty_Internal_Compile_Private_Child_Block extends Smarty_Internal_Compil
class Smarty_Internal_Compile_Private_Child_Blockclose extends Smarty_Internal_CompileBase class Smarty_Internal_Compile_Private_Child_Blockclose extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {/private_child_block} tag * Compiles code for the {/private_child_block} tag
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return boolean true * @return boolean true
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)

View File

@@ -1,13 +1,13 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Break * Smarty Internal Plugin Compile Break
*
* Compiles the {break} tag * Compiles the {break} tag
* *
* @package Smarty * @package Smarty
* @subpackage Compiler * @subpackage Compiler
* @author Uwe Tews * @author Uwe Tews
*/ */
/** /**
* Smarty Internal Plugin Compile Break Class * Smarty Internal Plugin Compile Break Class
* *
@@ -37,6 +37,7 @@ class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -71,5 +72,4 @@ class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
return "<?php break {$_levels}?>"; return "<?php break {$_levels}?>";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Function_Call * Smarty Internal Plugin Compile Function_Call
*
* Compiles the calls of user defined tags defined by {function} * Compiles the calls of user defined tags defined by {function}
* *
* @package Smarty * @package Smarty
@@ -44,7 +43,7 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter *
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -53,7 +52,7 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
$_attr = $this->getAttributes($compiler, $args); $_attr = $this->getAttributes($compiler, $args);
// save possible attributes // save possible attributes
if (isset($_attr['assign'])) { if (isset($_attr['assign'])) {
// output will be stored in a smarty variable instead of beind displayed // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign']; $_assign = $_attr['assign'];
} }
$_name = $_attr['name']; $_name = $_attr['name'];
@@ -96,7 +95,7 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
} }
} }
} }
//varibale name? //variable name?
if (!(strpos($_name, '$') === false)) { if (!(strpos($_name, '$') === false)) {
$call_cache = $_name; $call_cache = $_name;
$call_function = '$tmp = "smarty_template_function_".' . $_name . '; $tmp'; $call_function = '$tmp = "smarty_template_function_".' . $_name . '; $tmp';
@@ -125,5 +124,4 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
return $_output; return $_output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Capture * Smarty Internal Plugin Compile Capture
*
* Compiles the {capture} tag * Compiles the {capture} tag
* *
* @package Smarty * @package Smarty
@@ -37,6 +36,7 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -55,7 +55,6 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
return $_output; return $_output;
} }
} }
/** /**
@@ -71,6 +70,7 @@ class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -93,5 +93,4 @@ class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
return $_output; return $_output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Config Load * Smarty Internal Plugin Compile Config Load
*
* Compiles the {config load} tag * Compiles the {config load} tag
* *
* @package Smarty * @package Smarty
@@ -44,6 +43,7 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -56,7 +56,7 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
$compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno); $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
} }
// save posible attributes // save possible attributes
$conf_file = $_attr['file']; $conf_file = $_attr['file'];
if (isset($_attr['section'])) { if (isset($_attr['section'])) {
$section = $_attr['section']; $section = $_attr['section'];
@@ -79,5 +79,4 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
return $_output; return $_output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Continue * Smarty Internal Plugin Compile Continue
*
* Compiles the {continue} tag * Compiles the {continue} tag
* *
* @package Smarty * @package Smarty
@@ -38,6 +37,7 @@ class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -72,5 +72,4 @@ class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase
return "<?php continue {$_levels}?>"; return "<?php continue {$_levels}?>";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Debug * Smarty Internal Plugin Compile Debug
*
* Compiles the {debug} tag. * Compiles the {debug} tag.
* It opens a window the the Smarty Debugging Console. * It opens a window the the Smarty Debugging Console.
* *
@@ -23,6 +22,7 @@ class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -38,5 +38,4 @@ class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
return $_output; return $_output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Eval * Smarty Internal Plugin Compile Eval
*
* Compiles the {eval} tag. * Compiles the {eval} tag.
* *
* @package Smarty * @package Smarty
@@ -44,6 +43,7 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -53,7 +53,7 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
// check and get attributes // check and get attributes
$_attr = $this->getAttributes($compiler, $args); $_attr = $this->getAttributes($compiler, $args);
if (isset($_attr['assign'])) { if (isset($_attr['assign'])) {
// output will be stored in a smarty variable instead of beind displayed // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign']; $_assign = $_attr['assign'];
} }
@@ -68,5 +68,4 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
return "<?php $_output ?>"; return "<?php $_output ?>";
} }
} }

View File

@@ -2,7 +2,6 @@
/** /**
* Smarty Internal Plugin Compile extend * Smarty Internal Plugin Compile extend
*
* Compiles the {extends} tag * Compiles the {extends} tag
* *
* @package Smarty * @package Smarty
@@ -38,6 +37,7 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -52,6 +52,9 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase
} }
$name = $_attr['file']; $name = $_attr['file'];
/** @var Smarty_Internal_Template $_smarty_tpl
* used in evaluated code
*/
$_smarty_tpl = $compiler->template; $_smarty_tpl = $compiler->template;
eval("\$tpl_name = $name;"); eval("\$tpl_name = $name;");
// create template object // create template object
@@ -59,7 +62,7 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase
// check for recursion // check for recursion
$uid = $_template->source->uid; $uid = $_template->source->uid;
if (isset($compiler->extends_uid[$uid])) { if (isset($compiler->extends_uid[$uid])) {
$compiler->trigger_template_error("illegal recursive call of \"$include_file\"", $this->lex->line - 1); $compiler->trigger_template_error("illegal recursive call of \"$include_file\"", $compiler->lex->line - 1);
} }
$compiler->extends_uid[$uid] = true; $compiler->extends_uid[$uid] = true;
if (empty($_template->source->components)) { if (empty($_template->source->components)) {
@@ -69,7 +72,7 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase
array_unshift($compiler->sources, $source); array_unshift($compiler->sources, $source);
$uid = $source->uid; $uid = $source->uid;
if (isset($compiler->extends_uid[$uid])) { if (isset($compiler->extends_uid[$uid])) {
$compiler->trigger_template_error("illegal recursive call of \"{$sorce->filepath}\"", $this->lex->line - 1); $compiler->trigger_template_error("illegal recursive call of \"{$source->filepath}\"", $compiler->lex->line - 1);
} }
$compiler->extends_uid[$uid] = true; $compiler->extends_uid[$uid] = true;
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile For * Smarty Internal Plugin Compile For
*
* Compiles the {for} {forelse} {/for} tags * Compiles the {for} {forelse} {/for} tags
* *
* @package Smarty * @package Smarty
@@ -19,21 +18,18 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {for} tag * Compiles code for the {for} tag
* * Smarty 3 does implement two different syntax's:
* Smarty 3 does implement two different sytaxes:
*
* - {for $var in $array} * - {for $var in $array}
* For looping over arrays or iterators * For looping over arrays or iterators
*
* - {for $x=0; $x<$y; $x++} * - {for $x=0; $x<$y; $x++}
* For general loops * For general loops
* * The parser is generating different sets of attribute by which this compiler can
* The parser is gereration different sets of attribute by which this compiler can * determine which syntax is used.
* determin which syntax is used.
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -81,7 +77,6 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
// return compiled code // return compiled code
return $output; return $output;
} }
} }
/** /**
@@ -98,6 +93,7 @@ class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -110,7 +106,6 @@ class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
return "<?php }} else { ?>"; return "<?php }} else { ?>";
} }
} }
/** /**
@@ -127,6 +122,7 @@ class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -146,5 +142,4 @@ class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
return "<?php }} ?>"; return "<?php }} ?>";
} }
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Foreach * Smarty Internal Plugin Compile Foreach
*
* Compiles the {foreach} {foreachelse} {/foreach} tags * Compiles the {foreach} {foreachelse} {/foreach} tags
* *
* @package Smarty * @package Smarty
@@ -45,6 +44,7 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -181,6 +181,7 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -193,7 +194,6 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
return "<?php }\nif (!\$_smarty_tpl->tpl_vars[$item]->_loop) {\n?>"; return "<?php }\nif (!\$_smarty_tpl->tpl_vars[$item]->_loop) {\n?>";
} }
} }
/** /**
@@ -210,6 +210,7 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -225,5 +226,4 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
return "<?php } ?>"; return "<?php } ?>";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Function * Smarty Internal Plugin Compile Function
*
* Compiles the {function} {/function} tags * Compiles the {function} {/function} tags
* *
* @package Smarty * @package Smarty
@@ -45,6 +44,7 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return boolean true * @return boolean true
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -64,6 +64,9 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
// set flag that we are compiling a template function // set flag that we are compiling a template function
$compiler->compiles_template_function = true; $compiler->compiles_template_function = true;
$compiler->template->properties['function'][$_name]['parameter'] = array(); $compiler->template->properties['function'][$_name]['parameter'] = array();
/** @var Smarty_Internal_Template $_smarty_tpl
* used in evaluated code
*/
$_smarty_tpl = $compiler->template; $_smarty_tpl = $compiler->template;
foreach ($_attr as $_key => $_data) { foreach ($_attr as $_key => $_data) {
eval ('$tmp=' . $_data . ';'); eval ('$tmp=' . $_data . ';');
@@ -79,7 +82,7 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}; foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>"; foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
} }
// Init temporay context // Init temporary context
$compiler->template->required_plugins = array('compiled' => array(), 'nocache' => array()); $compiler->template->required_plugins = array('compiled' => array(), 'nocache' => array());
$compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser); $compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser);
$compiler->parser->current_buffer->append_subtree(new _smarty_tag($compiler->parser, $output)); $compiler->parser->current_buffer->append_subtree(new _smarty_tag($compiler->parser, $output));
@@ -88,7 +91,6 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
$compiler->template->properties['function'][$_name]['compiled'] = ''; $compiler->template->properties['function'][$_name]['compiled'] = '';
return true; return true;
} }
} }
/** /**
@@ -105,6 +107,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return boolean true * @return boolean true
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -161,5 +164,4 @@ foreach (Smarty::\$global_tpl_vars as \$key => \$value) if(!isset(\$_smarty_tpl-
return $output; return $output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile If * Smarty Internal Plugin Compile If
*
* Compiles the {if} {else} {elseif} {/if} tags * Compiles the {if} {else} {elseif} {/if} tags
* *
* @package Smarty * @package Smarty
@@ -23,6 +22,7 @@ class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -62,7 +62,6 @@ class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
return "<?php if ({$parameter['if condition']}) {?>"; return "<?php if ({$parameter['if condition']}) {?>";
} }
} }
} }
/** /**
@@ -79,6 +78,7 @@ class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -88,7 +88,6 @@ class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
return "<?php } else { ?>"; return "<?php } else { ?>";
} }
} }
/** /**
@@ -105,6 +104,7 @@ class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -154,8 +154,9 @@ class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
} }
} else { } else {
$tmp = ''; $tmp = '';
foreach ($compiler->prefix_code as $code) foreach ($compiler->prefix_code as $code) {
$tmp .= $code; $tmp .= $code;
}
$compiler->prefix_code = array(); $compiler->prefix_code = array();
$this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache)); $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
if ($condition_by_assign) { if ($condition_by_assign) {
@@ -173,7 +174,6 @@ class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
} }
} }
} }
} }
/** /**
@@ -190,6 +190,7 @@ class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -206,5 +207,4 @@ class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
return "<?php {$tmp}?>"; return "<?php {$tmp}?>";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Include * Smarty Internal Plugin Compile Include
*
* Compiles the {include} tag * Compiles the {include} tag
* *
* @package Smarty * @package Smarty
@@ -56,17 +55,18 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
{ {
// check and get attributes // check and get attributes
$_attr = $this->getAttributes($compiler, $args); $_attr = $this->getAttributes($compiler, $args);
// save posible attributes // save possible attributes
$include_file = $_attr['file']; $include_file = $_attr['file'];
if (isset($_attr['assign'])) { if (isset($_attr['assign'])) {
// output will be stored in a smarty variable instead of beind displayed // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign']; $_assign = $_attr['assign'];
} }
@@ -164,6 +164,9 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
$uid = sha1($_compile_id); $uid = sha1($_compile_id);
$tpl_name = null; $tpl_name = null;
$nocache = false; $nocache = false;
/** @var Smarty_Internal_Template $_smarty_tpl
* used in evaluated code
*/
$_smarty_tpl = $compiler->template; $_smarty_tpl = $compiler->template;
eval("\$tpl_name = $include_file;"); eval("\$tpl_name = $include_file;");
if (!isset($compiler->smarty->merged_templates_func[$tpl_name][$uid])) { if (!isset($compiler->smarty->merged_templates_func[$tpl_name][$uid])) {
@@ -183,7 +186,6 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
$tpl->mustCompile = true; $tpl->mustCompile = true;
if (!($tpl->source->uncompiled) && $tpl->source->exists) { if (!($tpl->source->uncompiled) && $tpl->source->exists) {
// get compiled code // get compiled code
$compiled_code = $tpl->compiler->compileTemplate($tpl, $nocache); $compiled_code = $tpl->compiler->compileTemplate($tpl, $nocache);
// release compiler object to free memory // release compiler object to free memory
@@ -214,17 +216,17 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
if (!empty($_attr)) { if (!empty($_attr)) {
if ($_parent_scope == Smarty::SCOPE_LOCAL) { if ($_parent_scope == Smarty::SCOPE_LOCAL) {
// create variables // create variables
$nccode = '';
foreach ($_attr as $key => $value) { foreach ($_attr as $key => $value) {
$_pairs[] = "'$key'=>$value"; $_pairs[] = "'$key'=>$value";
$nccode .= "\$_smarty_tpl->tpl_vars['$key'] = new Smarty_variable($value);\n";
} }
$_vars = 'array(' . join(',', $_pairs) . ')'; $_vars = 'array(' . join(',', $_pairs) . ')';
$_has_vars = true;
} else { } else {
$compiler->trigger_template_error('variable passing not allowed in parent/global scope', $compiler->lex->taglineno); $compiler->trigger_template_error('variable passing not allowed in parent/global scope', $compiler->lex->taglineno);
} }
} else { } else {
$_vars = 'array()'; $_vars = 'array()';
$_has_vars = false;
} }
if ($has_compiled_template) { if ($has_compiled_template) {
// never call inline templates in nocache mode // never call inline templates in nocache mode
@@ -232,6 +234,11 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
$_hash = $compiler->smarty->merged_templates_func[$tpl_name][$uid]['nocache_hash']; $_hash = $compiler->smarty->merged_templates_func[$tpl_name][$uid]['nocache_hash'];
$_output = "<?php /* Call merged included template \"" . $tpl_name . "\" */\n"; $_output = "<?php /* Call merged included template \"" . $tpl_name . "\" */\n";
$_output .= "\$_tpl_stack[] = \$_smarty_tpl;\n"; $_output .= "\$_tpl_stack[] = \$_smarty_tpl;\n";
if (!empty($nccode) && $_caching == 9999 && $_smarty_tpl->caching) {
$compiler->suppressNocacheProcessing = false;
$_output .= substr($compiler->processNocacheCode('<?php ' .$nccode . "?>\n", true), 6, -3);
$compiler->suppressNocacheProcessing = true;
}
$_output .= " \$_smarty_tpl = \$_smarty_tpl->setupInlineSubTemplate($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope, '$_hash');\n"; $_output .= " \$_smarty_tpl = \$_smarty_tpl->setupInlineSubTemplate($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope, '$_hash');\n";
if (isset($_assign)) { if (isset($_assign)) {
$_output .= 'ob_start(); '; $_output .= 'ob_start(); ';

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Include PHP * Smarty Internal Plugin Compile Include PHP
*
* Compiles the {include_php} tag * Compiles the {include_php} tag
* *
* @package Smarty * @package Smarty
@@ -44,6 +43,8 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @throws SmartyException
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -54,8 +55,9 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
// check and get attributes // check and get attributes
$_attr = $this->getAttributes($compiler, $args); $_attr = $this->getAttributes($compiler, $args);
$_output = '<?php '; /** @var Smarty_Internal_Template $_smarty_tpl
* used in evaluated code
*/
$_smarty_tpl = $compiler->template; $_smarty_tpl = $compiler->template;
$_filepath = false; $_filepath = false;
eval('$_file = ' . $_attr['file'] . ';'); eval('$_file = ' . $_attr['file'] . ';');
@@ -102,5 +104,4 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
return "<?php include{$_once} ('{$_filepath}');?>\n"; return "<?php include{$_once} ('{$_filepath}');?>\n";
} }
} }
} }

View File

@@ -2,7 +2,6 @@
/** /**
* Smarty Internal Plugin Compile Insert * Smarty Internal Plugin Compile Insert
*
* Compiles the {insert} tag * Compiles the {insert} tag
* *
* @package Smarty * @package Smarty
@@ -45,6 +44,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -59,12 +59,12 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
$_script = null; $_script = null;
$_output = '<?php '; $_output = '<?php ';
// save posible attributes // save possible attributes
eval('$_name = ' . $_attr['name'] . ';'); eval('$_name = ' . $_attr['name'] . ';');
if (isset($_attr['assign'])) { if (isset($_attr['assign'])) {
// output will be stored in a smarty variable instead of being displayed // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign']; $_assign = $_attr['assign'];
// create variable to make shure that the compiler knows about its nocache status // create variable to make sure that the compiler knows about its nocache status
$compiler->template->tpl_vars[trim($_attr['assign'], "'")] = new Smarty_Variable(null, true); $compiler->template->tpl_vars[trim($_attr['assign'], "'")] = new Smarty_Variable(null, true);
} }
if (isset($_attr['script'])) { if (isset($_attr['script'])) {
@@ -137,5 +137,4 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
return $_output; return $_output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Ldelim * Smarty Internal Plugin Compile Ldelim
*
* Compiles the {ldelim} tag * Compiles the {ldelim} tag
* *
* @package Smarty * @package Smarty
@@ -19,10 +18,11 @@ class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {ldelim} tag * Compiles code for the {ldelim} tag
*
* This tag does output the left delimiter * This tag does output the left delimiter
*
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -36,5 +36,4 @@ class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
return $compiler->smarty->left_delimiter; return $compiler->smarty->left_delimiter;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Nocache * Smarty Internal Plugin Compile Nocache
*
* Compiles the {nocache} {/nocache} tags. * Compiles the {nocache} {/nocache} tags.
* *
* @package Smarty * @package Smarty
@@ -10,7 +9,7 @@
*/ */
/** /**
* Smarty Internal Plugin Compile Nocache Classv * Smarty Internal Plugin Compile Nocache Class
* *
* @package Smarty * @package Smarty
* @subpackage Compiler * @subpackage Compiler
@@ -19,11 +18,11 @@ class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {nocache} tag * Compiles code for the {nocache} tag
*
* This tag does not generate compiled output. It only sets a compiler flag. * This tag does not generate compiled output. It only sets a compiler flag.
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return bool * @return bool
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -39,7 +38,6 @@ class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase
return true; return true;
} }
} }
/** /**
@@ -52,11 +50,11 @@ class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {/nocache} tag * Compiles code for the {/nocache} tag
*
* This tag does not generate compiled output. It only sets a compiler flag. * This tag does not generate compiled output. It only sets a compiler flag.
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return bool * @return bool
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -69,5 +67,4 @@ class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase
return true; return true;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Block Plugin * Smarty Internal Plugin Compile Block Plugin
*
* Compiles code for the execution of block plugin * Compiles code for the execution of block plugin
* *
* @package Smarty * @package Smarty
@@ -33,6 +32,7 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
* @param string $tag name of block plugin * @param string $tag name of block plugin
* @param string $function PHP function name * @param string $function PHP function name
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter, $tag, $function) public function compile($args, $compiler, $parameter, $tag, $function)
@@ -82,5 +82,4 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
return $output . "\n"; return $output . "\n";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Function Plugin * Smarty Internal Plugin Compile Function Plugin
*
* Compiles code for the execution of function plugin * Compiles code for the execution of function plugin
* *
* @package Smarty * @package Smarty
@@ -40,6 +39,7 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
* @param string $tag name of function plugin * @param string $tag name of function plugin
* @param string $function PHP function name * @param string $function PHP function name
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter, $tag, $function) public function compile($args, $compiler, $parameter, $tag, $function)
@@ -68,5 +68,4 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
return $output; return $output;
} }
} }

View File

@@ -2,7 +2,6 @@
/** /**
* Smarty Internal Plugin Compile Modifier * Smarty Internal Plugin Compile Modifier
*
* Compiles code for modifier execution * Compiles code for modifier execution
* *
* @package Smarty * @package Smarty
@@ -24,6 +23,7 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -136,5 +136,4 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa
return $output; return $output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Object Block Function * Smarty Internal Plugin Compile Object Block Function
*
* Compiles code for registered objects as block function * Compiles code for registered objects as block function
* *
* @package Smarty * @package Smarty
@@ -33,6 +32,7 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
* @param string $tag name of block object * @param string $tag name of block object
* @param string $method name of method to call * @param string $method name of method to call
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter, $tag, $method) public function compile($args, $compiler, $parameter, $tag, $method)
@@ -83,5 +83,4 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
return $output . "\n"; return $output . "\n";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Object Funtion * Smarty Internal Plugin Compile Object Function
*
* Compiles code for registered objects as function * Compiles code for registered objects as function
* *
* @package Smarty * @package Smarty
@@ -33,6 +32,7 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
* @param string $tag name of function * @param string $tag name of function
* @param string $method name of method to call * @param string $method name of method to call
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter, $tag, $method) public function compile($args, $compiler, $parameter, $tag, $method)
@@ -81,5 +81,4 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
return $output; return $output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Print Expression * Smarty Internal Plugin Compile Print Expression
*
* Compiles any tag which will output an expression or variable * Compiles any tag which will output an expression or variable
* *
* @package Smarty * @package Smarty
@@ -33,11 +32,13 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
public $option_flags = array('nocache', 'nofilter'); public $option_flags = array('nocache', 'nofilter');
/** /**
* Compiles code for gererting output from any expression * Compiles code for generating output from any expression
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @throws SmartyException
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -48,12 +49,6 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
if ($_attr['nocache'] === true) { if ($_attr['nocache'] === true) {
$compiler->tag_nocache = true; $compiler->tag_nocache = true;
} }
// filter handling
if ($_attr['nofilter'] === true) {
$_filter = 'false';
} else {
$_filter = 'true';
}
if (isset($_attr['assign'])) { if (isset($_attr['assign'])) {
// assign output to variable // assign output to variable
$output = "<?php \$_smarty_tpl->assign({$_attr['assign']},{$parameter['value']});?>"; $output = "<?php \$_smarty_tpl->assign({$_attr['assign']},{$parameter['value']});?>";
@@ -85,7 +80,7 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
if ($compiler->template->smarty->escape_html) { if ($compiler->template->smarty->escape_html) {
$output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')"; $output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
} }
// loop over registerd filters // loop over registered filters
if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) { if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) {
foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key => $function) { foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key => $function) {
if (!is_array($function)) { if (!is_array($function)) {
@@ -130,7 +125,8 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
/** /**
* @param object $compiler compiler object * @param object $compiler compiler object
* @param string $name name of variable filter * @param string $name name of variable filter
* @param type $output embedded output * @param string $output embedded output
*
* @return string * @return string
*/ */
private function compile_output_filter($compiler, $name, $output) private function compile_output_filter($compiler, $name, $output)
@@ -152,5 +148,4 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
return "{$plugin_name}({$output},\$_smarty_tpl)"; return "{$plugin_name}({$output},\$_smarty_tpl)";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Registered Block * Smarty Internal Plugin Compile Registered Block
*
* Compiles code for the execution of a registered block function * Compiles code for the execution of a registered block function
* *
* @package Smarty * @package Smarty
@@ -32,6 +31,7 @@ class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_C
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
* @param string $tag name of block function * @param string $tag name of block function
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter, $tag) public function compile($args, $compiler, $parameter, $tag)
@@ -108,5 +108,4 @@ class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_C
return $output . "\n"; return $output . "\n";
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Registered Function * Smarty Internal Plugin Compile Registered Function
*
* Compiles code for the execution of a registered function * Compiles code for the execution of a registered function
* *
* @package Smarty * @package Smarty
@@ -32,6 +31,7 @@ class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Interna
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
* @param string $tag name of function * @param string $tag name of function
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter, $tag) public function compile($args, $compiler, $parameter, $tag)
@@ -76,5 +76,4 @@ class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Interna
return $output; return $output;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Special Smarty Variable * Smarty Internal Plugin Compile Special Smarty Variable
*
* Compiles the special $smarty variables * Compiles the special $smarty variables
* *
* @package Smarty * @package Smarty
@@ -18,10 +17,12 @@
class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the speical $smarty variables * Compiles code for the special $smarty variables
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param $parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -110,5 +111,4 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
return $compiled_ref; return $compiled_ref;
} }
} }

View File

@@ -1,8 +1,8 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Rdelim * Smarty Internal Plugin Compile Rdelim
*
* Compiles the {rdelim} tag * Compiles the {rdelim} tag
*
* @package Smarty * @package Smarty
* @subpackage Compiler * @subpackage Compiler
* @author Uwe Tews * @author Uwe Tews
@@ -18,11 +18,11 @@ class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {rdelim} tag * Compiles code for the {rdelim} tag
*
* This tag does output the right delimiter. * This tag does output the right delimiter.
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -36,5 +36,4 @@ class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase
return $compiler->smarty->right_delimiter; return $compiler->smarty->right_delimiter;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Section * Smarty Internal Plugin Compile Section
*
* Compiles the {section} {sectionelse} {/section} tags * Compiles the {section} {sectionelse} {/section} tags
* *
* @package Smarty * @package Smarty
@@ -44,6 +43,7 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -69,10 +69,11 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase
break; break;
case 'show': case 'show':
if (is_bool($attr_value)) if (is_bool($attr_value)) {
$show_attr_value = $attr_value ? 'true' : 'false'; $show_attr_value = $attr_value ? 'true' : 'false';
else } else {
$show_attr_value = "(bool) $attr_value"; $show_attr_value = "(bool) $attr_value";
}
$output .= "{$section_props}['show'] = $show_attr_value;\n"; $output .= "{$section_props}['show'] = $show_attr_value;\n";
break; break;
@@ -91,23 +92,27 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase
} }
} }
if (!isset($_attr['show'])) if (!isset($_attr['show'])) {
$output .= "{$section_props}['show'] = true;\n"; $output .= "{$section_props}['show'] = true;\n";
}
if (!isset($_attr['loop'])) if (!isset($_attr['loop'])) {
$output .= "{$section_props}['loop'] = 1;\n"; $output .= "{$section_props}['loop'] = 1;\n";
}
if (!isset($_attr['max'])) if (!isset($_attr['max'])) {
$output .= "{$section_props}['max'] = {$section_props}['loop'];\n"; $output .= "{$section_props}['max'] = {$section_props}['loop'];\n";
else } else {
$output .= "if ({$section_props}['max'] < 0)\n" . " {$section_props}['max'] = {$section_props}['loop'];\n"; $output .= "if ({$section_props}['max'] < 0)\n" . " {$section_props}['max'] = {$section_props}['loop'];\n";
}
if (!isset($_attr['step'])) if (!isset($_attr['step'])) {
$output .= "{$section_props}['step'] = 1;\n"; $output .= "{$section_props}['step'] = 1;\n";
}
if (!isset($_attr['start'])) if (!isset($_attr['start'])) {
$output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n"; $output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n";
else { } else {
$output .= "if ({$section_props}['start'] < 0)\n" . " {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" . "else\n" . " {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n"; $output .= "if ({$section_props}['start'] < 0)\n" . " {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" . "else\n" . " {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n";
} }
@@ -134,7 +139,6 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase
return $output; return $output;
} }
} }
/** /**
@@ -150,6 +154,7 @@ class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -162,7 +167,6 @@ class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
return "<?php endfor; else: ?>"; return "<?php endfor; else: ?>";
} }
} }
/** /**
@@ -178,6 +182,7 @@ class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -198,5 +203,4 @@ class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
return "<?php endfor; endif; ?>"; return "<?php endfor; endif; ?>";
} }
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile Setfilter * Smarty Internal Plugin Compile Setfilter
*
* Compiles code for setfilter tag * Compiles code for setfilter tag
* *
* @package Smarty * @package Smarty
@@ -23,6 +22,7 @@ class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -34,7 +34,6 @@ class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
return true; return true;
} }
} }
/** /**
@@ -47,11 +46,11 @@ class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
{ {
/** /**
* Compiles code for the {/setfilter} tag * Compiles code for the {/setfilter} tag
*
* This tag does not generate compiled output. It resets variable filter. * This tag does not generate compiled output. It resets variable filter.
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -68,5 +67,4 @@ class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
return true; return true;
} }
} }

View File

@@ -1,7 +1,6 @@
<?php <?php
/** /**
* Smarty Internal Plugin Compile While * Smarty Internal Plugin Compile While
*
* Compiles the {while} tag * Compiles the {while} tag
* *
* @package Smarty * @package Smarty
@@ -23,6 +22,7 @@ class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $parameter array with compilation parameter * @param array $parameter array with compilation parameter
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler, $parameter) public function compile($args, $compiler, $parameter)
@@ -62,7 +62,6 @@ class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
return "<?php while ({$parameter['if condition']}) {?>"; return "<?php while ({$parameter['if condition']}) {?>";
} }
} }
} }
/** /**
@@ -78,6 +77,7 @@ class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
* *
* @param array $args array with attributes from parser * @param array $args array with attributes from parser
* @param object $compiler compiler object * @param object $compiler compiler object
*
* @return string compiled code * @return string compiled code
*/ */
public function compile($args, $compiler) public function compile($args, $compiler)
@@ -90,5 +90,4 @@ class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
return "<?php }?>"; return "<?php }?>";
} }
} }

View File

@@ -43,7 +43,6 @@ abstract class Smarty_Internal_CompileBase
/** /**
* This function checks if the attributes passed are valid * This function checks if the attributes passed are valid
*
* The attributes passed for the tag to compile are checked against the list of required and * The attributes passed for the tag to compile are checked against the list of required and
* optional attributes. Required attributes must be present. Optional attributes are check against * optional attributes. Required attributes must be present. Optional attributes are check against
* the corresponding list. The keyword '_any' specifies that any attribute will be accepted * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
@@ -51,6 +50,7 @@ abstract class Smarty_Internal_CompileBase
* *
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array $attributes attributes applied to the tag * @param array $attributes attributes applied to the tag
*
* @return array of mapped attributes for further processing * @return array of mapped attributes for further processing
*/ */
public function getAttributes($compiler, $attributes) public function getAttributes($compiler, $attributes)
@@ -105,7 +105,7 @@ abstract class Smarty_Internal_CompileBase
$compiler->trigger_template_error("missing \"" . $attr . "\" attribute", $compiler->lex->taglineno); $compiler->trigger_template_error("missing \"" . $attr . "\" attribute", $compiler->lex->taglineno);
} }
} }
// check for unallowed attributes // check for not allowed attributes
if ($this->optional_attributes != array('_any')) { if ($this->optional_attributes != array('_any')) {
$tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags); $tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags);
foreach ($_indexed_attr as $key => $dummy) { foreach ($_indexed_attr as $key => $dummy) {
@@ -126,7 +126,6 @@ abstract class Smarty_Internal_CompileBase
/** /**
* Push opening tag name on stack * Push opening tag name on stack
*
* Optionally additional data can be saved on stack * Optionally additional data can be saved on stack
* *
* @param object $compiler compiler object * @param object $compiler compiler object
@@ -140,11 +139,11 @@ abstract class Smarty_Internal_CompileBase
/** /**
* Pop closing tag * Pop closing tag
*
* Raise an error if this stack-top doesn't match with expected opening tags * Raise an error if this stack-top doesn't match with expected opening tags
* *
* @param object $compiler compiler object * @param object $compiler compiler object
* @param array|string $expectedTag the expected opening tag names * @param array|string $expectedTag the expected opening tag names
*
* @return mixed any type the opening tag's name or saved data * @return mixed any type the opening tag's name or saved data
*/ */
public function closeTag($compiler, $expectedTag) public function closeTag($compiler, $expectedTag)
@@ -172,5 +171,4 @@ abstract class Smarty_Internal_CompileBase
return; return;
} }
} }

View File

@@ -9,20 +9,16 @@
/** /**
* Smarty Internal Plugin Config * Smarty Internal Plugin Config
*
* Main class for config variables * Main class for config variables
* *
* @package Smarty * @package Smarty
* @subpackage Config * @subpackage Config
*
* @property Smarty_Config_Source $source
* @property Smarty_Config_Compiled $compiled
* @ignore * @ignore
*/ */
class Smarty_Internal_Config class Smarty_Internal_Config
{ {
/** /**
* Samrty instance * Smarty instance
* *
* @var Smarty object * @var Smarty object
*/ */
@@ -35,6 +31,7 @@ class Smarty_Internal_Config
public $data = null; public $data = null;
/** /**
* Config resource * Config resource
*
* @var string * @var string
*/ */
public $config_resource = null; public $config_resource = null;
@@ -58,6 +55,7 @@ class Smarty_Internal_Config
public $compiled_timestamp = null; public $compiled_timestamp = null;
/** /**
* flag if compiled config file is invalid and must be (re)compiled * flag if compiled config file is invalid and must be (re)compiled
*
* @var bool * @var bool
*/ */
public $mustCompile = null; public $mustCompile = null;
@@ -104,7 +102,7 @@ class Smarty_Internal_Config
$_compile_id = isset($this->smarty->compile_id) ? preg_replace('![^\w\|]+!', '_', $this->smarty->compile_id) : null; $_compile_id = isset($this->smarty->compile_id) ? preg_replace('![^\w\|]+!', '_', $this->smarty->compile_id) : null;
$_flag = (int) $this->smarty->config_read_hidden + (int) $this->smarty->config_booleanize * 2 $_flag = (int) $this->smarty->config_read_hidden + (int) $this->smarty->config_booleanize * 2
+ (int) $this->smarty->config_overwrite * 4; + (int) $this->smarty->config_overwrite * 4;
$_filepath = sha1($this->source->filepath . $_flag); $_filepath = sha1(realpath($this->source->filepath) . $_flag);
// if use_sub_dirs, break file into directories // if use_sub_dirs, break file into directories
if ($this->smarty->use_sub_dirs) { if ($this->smarty->use_sub_dirs) {
$_filepath = substr($_filepath, 0, 2) . DS $_filepath = substr($_filepath, 0, 2) . DS
@@ -122,7 +120,7 @@ class Smarty_Internal_Config
} }
/** /**
* Returns the timpestamp of the compiled file * Returns the timestamp of the compiled file
* *
* @return integer the file timestamp * @return integer the file timestamp
*/ */
@@ -135,7 +133,6 @@ class Smarty_Internal_Config
/** /**
* Returns if the current config file must be compiled * Returns if the current config file must be compiled
*
* It does compare the timestamps of config source and the compiled config and checks the force compile configuration * It does compare the timestamps of config source and the compiled config and checks the force compile configuration
* *
* @return boolean true if the file must be compiled * @return boolean true if the file must be compiled
@@ -149,7 +146,6 @@ class Smarty_Internal_Config
/** /**
* Returns the compiled config file * Returns the compiled config file
*
* It checks if the config file must be compiled or just read the compiled version * It checks if the config file must be compiled or just read the compiled version
* *
* @return string the compiled config file * @return string the compiled config file
@@ -189,14 +185,15 @@ class Smarty_Internal_Config
// call compiler // call compiler
try { try {
$this->compiler_object->compileSource($this); $this->compiler_object->compileSource($this);
} catch (Exception $e) { }
catch (Exception $e) {
// restore old timestamp in case of error // restore old timestamp in case of error
if ($this->smarty->compile_locking && $saved_timestamp) { if ($this->smarty->compile_locking && $saved_timestamp) {
touch($this->getCompiledFilepath(), $saved_timestamp); touch($this->getCompiledFilepath(), $saved_timestamp);
} }
throw $e; throw $e;
} }
// compiling succeded // compiling succeeded
// write compiled template // write compiled template
Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->getCompiledConfig(), $this->smarty); Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->getCompiledConfig(), $this->smarty);
} }
@@ -205,7 +202,9 @@ class Smarty_Internal_Config
* load config variables * load config variables
* *
* @param mixed $sections array of section names, single section or null * @param mixed $sections array of section names, single section or null
* @param object $scope global,parent or local * @param string $scope global,parent or local
*
* @throws Exception
*/ */
public function loadConfigVars($sections = null, $scope = 'local') public function loadConfigVars($sections = null, $scope = 'local')
{ {
@@ -261,6 +260,7 @@ class Smarty_Internal_Config
* *
* @param string $property_name property name * @param string $property_name property name
* @param mixed $value value * @param mixed $value value
*
* @throws SmartyException if $property_name is not valid * @throws SmartyException if $property_name is not valid
*/ */
public function __set($property_name, $value) public function __set($property_name, $value)
@@ -280,6 +280,8 @@ class Smarty_Internal_Config
* get Smarty property in template context * get Smarty property in template context
* *
* @param string $property_name property name * @param string $property_name property name
*
* @return \Smarty_Config_Source|\Smarty_Template_Compiled
* @throws SmartyException if $property_name is not valid * @throws SmartyException if $property_name is not valid
*/ */
public function __get($property_name) public function __get($property_name)
@@ -301,5 +303,4 @@ class Smarty_Internal_Config
throw new SmartyException("config attribute '$property_name' does not exist."); throw new SmartyException("config attribute '$property_name' does not exist.");
} }
} }

Some files were not shown because too many files have changed in this diff Show More