diff options
Diffstat (limited to 'libs/sysplugins')
150 files changed, 0 insertions, 25338 deletions
diff --git a/libs/sysplugins/smarty_cacheresource.php b/libs/sysplugins/smarty_cacheresource.php deleted file mode 100644 index db68f9bf..00000000 --- a/libs/sysplugins/smarty_cacheresource.php +++ /dev/null @@ -1,219 +0,0 @@ -<?php -/** - * Smarty Internal Plugin - * - * @package Smarty - * @subpackage Cacher - */ - -/** - * Cache Handler API - * - * @package Smarty - * @subpackage Cacher - * @author Rodney Rehm - */ -abstract class Smarty_CacheResource -{ - /** - * resource types provided by the core - * - * @var array - */ - protected static $sysplugins = array('file' => 'smarty_internal_cacheresource_file.php',); - - /** - * populate Cached Object with meta data from Resource - * - * @param \Smarty_Template_Cached $cached cached object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - abstract public function populate(\Smarty_Template_Cached $cached, Smarty_Internal_Template $_template); - - /** - * populate Cached Object with timestamp and exists from Resource - * - * @param Smarty_Template_Cached $cached - * - * @return void - */ - abstract public function populateTimestamp(Smarty_Template_Cached $cached); - - /** - * Read the cached template and process header - * - * @param Smarty_Internal_Template $_template template object - * @param Smarty_Template_Cached $cached cached object - * @param boolean $update flag if called because cache update - * - * @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, - $update = false - ); - - /** - * Write the rendered template output to cache - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * - * @return boolean success - */ - abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content); - - /** - * Read cached template from cache - * - * @param Smarty_Internal_Template $_template template object - * - * @return string content - */ - abstract public function readCachedContent(Smarty_Internal_Template $_template); - - /** - * Return cached content - * - * @param Smarty_Internal_Template $_template template object - * - * @return null|string - */ - public function getCachedContent(Smarty_Internal_Template $_template) - { - if ($_template->cached->handler->process($_template)) { - ob_start(); - $unifunc = $_template->cached->unifunc; - $unifunc($_template); - return ob_get_clean(); - } - return null; - } - - /** - * Empty cache - * - * @param Smarty $smarty Smarty object - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return integer number of cache files deleted - */ - abstract public function clearAll(Smarty $smarty, $exp_time = null); - - /** - * Empty cache for a specific template - * - * @param Smarty $smarty Smarty object - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return integer number of cache files deleted - */ - 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) - { - // theoretically locking_timeout should be checked against time_limit (max_execution_time) - $start = microtime(true); - $hadLock = null; - while ($this->hasLock($smarty, $cached)) { - $hadLock = true; - if (microtime(true) - $start > $smarty->locking_timeout) { - // abort waiting for lock release - return false; - } - sleep(1); - } - 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) - { - // check if lock exists - 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) - { - // create lock - 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) - { - // release lock - return true; - } - - /** - * Load Cache Resource Handler - * - * @param Smarty $smarty Smarty object - * @param string $type name of the cache resource - * - * @throws SmartyException - * @return Smarty_CacheResource Cache Resource Handler - */ - public static function load(Smarty $smarty, $type = null) - { - if (!isset($type)) { - $type = $smarty->caching_type; - } - // try smarty's cache - if (isset($smarty->_cache[ 'cacheresource_handlers' ][ $type ])) { - return $smarty->_cache[ 'cacheresource_handlers' ][ $type ]; - } - // try registered resource - if (isset($smarty->registered_cache_resources[ $type ])) { - // do not cache these instances as they may vary from instance to instance - return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = $smarty->registered_cache_resources[ $type ]; - } - // try sysplugins dir - if (isset(self::$sysplugins[ $type ])) { - $cache_resource_class = 'Smarty_Internal_CacheResource_' . smarty_ucfirst_ascii($type); - return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class(); - } - // try plugins dir - $cache_resource_class = 'Smarty_CacheResource_' . smarty_ucfirst_ascii($type); - if ($smarty->loadPlugin($cache_resource_class)) { - return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class(); - } - // give up - throw new SmartyException("Unable to load cache resource '{$type}'"); - } -} diff --git a/libs/sysplugins/smarty_cacheresource_custom.php b/libs/sysplugins/smarty_cacheresource_custom.php deleted file mode 100644 index 68ad1128..00000000 --- a/libs/sysplugins/smarty_cacheresource_custom.php +++ /dev/null @@ -1,297 +0,0 @@ -<?php -/** - * Smarty Internal Plugin - * - * @package Smarty - * @subpackage Cacher - */ - -/** - * Cache Handler API - * - * @package Smarty - * @subpackage Cacher - * @author Rodney Rehm - */ -abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource -{ - /** - * fetch cached content and its modification time from data source - * - * @param string $id unique cache content identifier - * @param string $name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param string $content cached content - * @param integer $mtime cache modification timestamp (epoch) - * - * @return void - */ - abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime); - - /** - * Fetch cached content's modification timestamp from data source - * {@internal 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 $name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * - * @return integer|boolean timestamp (epoch) the template was modified, or false if not found - */ - protected function fetchTimestamp($id, $name, $cache_id, $compile_id) - { - return false; - } - - /** - * Save content to cache - * - * @param string $id unique cache content identifier - * @param string $name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer|null $exp_time seconds till expiration or null - * @param string $content content to cache - * - * @return boolean success - */ - abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content); - - /** - * Delete content from cache - * - * @param string|null $name template name - * @param string|null $cache_id cache id - * @param string|null $compile_id compile id - * @param integer|null $exp_time seconds till expiration time in seconds or null - * - * @return integer number of deleted caches - */ - abstract protected function delete($name, $cache_id, $compile_id, $exp_time); - - /** - * populate Cached Object with meta data from Resource - * - * @param Smarty_Template_Cached $cached cached object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) - { - $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null; - $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null; - $path = $cached->source->uid . $_cache_id . $_compile_id; - $cached->filepath = sha1($path); - if ($_template->smarty->cache_locking) { - $cached->lock_id = sha1('lock.' . $path); - } - $this->populateTimestamp($cached); - } - - /** - * populate Cached Object with timestamp and exists from Resource - * - * @param Smarty_Template_Cached $cached - * - * @return void - */ - public function populateTimestamp(Smarty_Template_Cached $cached) - { - $mtime = - $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id); - if ($mtime !== null) { - $cached->timestamp = $mtime; - $cached->exists = !!$cached->timestamp; - return; - } - $timestamp = null; - $this->fetch( - $cached->filepath, - $cached->source->name, - $cached->cache_id, - $cached->compile_id, - $cached->content, - $timestamp - ); - $cached->timestamp = isset($timestamp) ? $timestamp : false; - $cached->exists = !!$cached->timestamp; - } - - /** - * Read the cached template and process the header - * - * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template - * @param Smarty_Template_Cached $cached cached object - * @param boolean $update flag if called because cache update - * - * @return boolean true or false if the cached content does not exist - */ - public function process( - Smarty_Internal_Template $_smarty_tpl, - Smarty_Template_Cached $cached = null, - $update = false - ) { - if (!$cached) { - $cached = $_smarty_tpl->cached; - } - $content = $cached->content ? $cached->content : null; - $timestamp = $cached->timestamp ? $cached->timestamp : null; - if ($content === null || !$timestamp) { - $this->fetch( - $_smarty_tpl->cached->filepath, - $_smarty_tpl->source->name, - $_smarty_tpl->cache_id, - $_smarty_tpl->compile_id, - $content, - $timestamp - ); - } - if (isset($content)) { - eval('?>' . $content); - $cached->content = null; - return true; - } - return false; - } - - /** - * Write the rendered template output to cache - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * - * @return boolean success - */ - public function writeCachedContent(Smarty_Internal_Template $_template, $content) - { - return $this->save( - $_template->cached->filepath, - $_template->source->name, - $_template->cache_id, - $_template->compile_id, - $_template->cache_lifetime, - $content - ); - } - - /** - * Read cached template from cache - * - * @param Smarty_Internal_Template $_template template object - * - * @return string|boolean content - */ - public function readCachedContent(Smarty_Internal_Template $_template) - { - $content = $_template->cached->content ? $_template->cached->content : null; - $timestamp = null; - if ($content === null) { - $timestamp = null; - $this->fetch( - $_template->cached->filepath, - $_template->source->name, - $_template->cache_id, - $_template->compile_id, - $content, - $timestamp - ); - } - if (isset($content)) { - return $content; - } - return false; - } - - /** - * Empty cache - * - * @param Smarty $smarty Smarty object - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return integer number of cache files deleted - */ - public function clearAll(Smarty $smarty, $exp_time = null) - { - return $this->delete(null, null, null, $exp_time); - } - - /** - * Empty cache for a specific template - * - * @param Smarty $smarty Smarty object - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return int number of cache files deleted - * @throws \SmartyException - */ - public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) - { - $cache_name = null; - if (isset($resource_name)) { - $source = Smarty_Template_Source::load(null, $smarty, $resource_name); - if ($source->exists) { - $cache_name = $source->name; - } else { - return 0; - } - } - return $this->delete($cache_name, $cache_id, $compile_id, $exp_time); - } - - /** - * Check is cache is locked for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return boolean true or false if cache is locked - */ - public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $id = $cached->lock_id; - $name = $cached->source->name . '.lock'; - $mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id); - if ($mtime === null) { - $this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime); - } - return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout; - } - - /** - * Lock cache for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return bool|void - */ - public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $cached->is_locked = true; - $id = $cached->lock_id; - $name = $cached->source->name . '.lock'; - $this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, ''); - } - - /** - * Unlock cache for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return bool|void - */ - public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $cached->is_locked = false; - $name = $cached->source->name . '.lock'; - $this->delete($name, $cached->cache_id, $cached->compile_id, null); - } -} diff --git a/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/libs/sysplugins/smarty_cacheresource_keyvaluestore.php deleted file mode 100644 index 4b1c0f6d..00000000 --- a/libs/sysplugins/smarty_cacheresource_keyvaluestore.php +++ /dev/null @@ -1,538 +0,0 @@ -<?php -/** - * Smarty Internal Plugin - * - * @package Smarty - * @subpackage Cacher - */ - -/** - * Smarty Cache Handler Base for Key/Value Storage Implementations - * 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 - * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which - * is no problem to filesystem and RDBMS implementations. - * 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 - * 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 - * 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. - * 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 - * »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 - * cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever« - * consider using »a|b|c|$page-$items-$whatever« instead. - * - * @package Smarty - * @subpackage Cacher - * @author Rodney Rehm - */ -abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource -{ - /** - * cache for contents - * - * @var array - */ - protected $contents = array(); - - /** - * cache for timestamps - * - * @var array - */ - protected $timestamps = array(); - - /** - * populate Cached Object with meta data from Resource - * - * @param Smarty_Template_Cached $cached cached object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) - { - $cached->filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' . - $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id); - $this->populateTimestamp($cached); - } - - /** - * populate Cached Object with timestamp and exists from Resource - * - * @param Smarty_Template_Cached $cached cached object - * - * @return void - */ - public function populateTimestamp(Smarty_Template_Cached $cached) - { - if (!$this->fetch( - $cached->filepath, - $cached->source->name, - $cached->cache_id, - $cached->compile_id, - $content, - $timestamp, - $cached->source->uid - ) - ) { - return; - } - $cached->content = $content; - $cached->timestamp = (int)$timestamp; - $cached->exists = !!$cached->timestamp; - } - - /** - * Read the cached template and process the header - * - * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template - * @param Smarty_Template_Cached $cached cached object - * @param boolean $update flag if called because cache update - * - * @return boolean true or false if the cached content does not exist - */ - public function process( - Smarty_Internal_Template $_smarty_tpl, - Smarty_Template_Cached $cached = null, - $update = false - ) { - if (!$cached) { - $cached = $_smarty_tpl->cached; - } - $content = $cached->content ? $cached->content : null; - $timestamp = $cached->timestamp ? $cached->timestamp : null; - if ($content === null || !$timestamp) { - if (!$this->fetch( - $_smarty_tpl->cached->filepath, - $_smarty_tpl->source->name, - $_smarty_tpl->cache_id, - $_smarty_tpl->compile_id, - $content, - $timestamp, - $_smarty_tpl->source->uid - ) - ) { - return false; - } - } - if (isset($content)) { - eval('?>' . $content); - return true; - } - return false; - } - - /** - * Write the rendered template output to cache - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * - * @return boolean success - */ - public function writeCachedContent(Smarty_Internal_Template $_template, $content) - { - $this->addMetaTimestamp($content); - return $this->write(array($_template->cached->filepath => $content), $_template->cache_lifetime); - } - - /** - * Read cached template from cache - * - * @param Smarty_Internal_Template $_template template object - * - * @return string|false content - */ - public function readCachedContent(Smarty_Internal_Template $_template) - { - $content = $_template->cached->content ? $_template->cached->content : null; - $timestamp = null; - if ($content === null) { - if (!$this->fetch( - $_template->cached->filepath, - $_template->source->name, - $_template->cache_id, - $_template->compile_id, - $content, - $timestamp, - $_template->source->uid - ) - ) { - return false; - } - } - if (isset($content)) { - return $content; - } - return false; - } - - /** - * Empty cache - * {@internal the $exp_time argument is ignored altogether }} - * - * @param Smarty $smarty Smarty object - * @param integer $exp_time expiration time [being ignored] - * - * @return integer number of cache files deleted [always -1] - * @uses purge() to clear the whole store - * @uses invalidate() to mark everything outdated if purge() is inapplicable - */ - public function clearAll(Smarty $smarty, $exp_time = null) - { - if (!$this->purge()) { - $this->invalidate(null); - } - return -1; - } - - /** - * Empty cache for a specific template - * {@internal the $exp_time argument is ignored altogether}} - * - * @param Smarty $smarty Smarty object - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time [being ignored] - * - * @return int number of cache files deleted [always -1] - * @throws \SmartyException - * @uses buildCachedFilepath() to generate the CacheID - * @uses invalidate() to mark CacheIDs parent chain as outdated - * @uses delete() to remove CacheID from cache - */ - public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) - { - $uid = $this->getTemplateUid($smarty, $resource_name); - $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' . - $this->sanitize($compile_id); - $this->delete(array($cid)); - $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid); - return -1; - } - - /** - * Get template's unique ID - * - * @param Smarty $smarty Smarty object - * @param string $resource_name template name - * - * @return string filepath of cache file - * @throws \SmartyException - */ - protected function getTemplateUid(Smarty $smarty, $resource_name) - { - if (isset($resource_name)) { - $source = Smarty_Template_Source::load(null, $smarty, $resource_name); - if ($source->exists) { - return $source->uid; - } - } - return ''; - } - - /** - * Sanitize CacheID components - * - * @param string $string CacheID component to sanitize - * - * @return string sanitized CacheID component - */ - protected function sanitize($string) - { - $string = trim((string)$string, '|'); - if (!$string) { - return ''; - } - return preg_replace('#[^\w\|]+#S', '_', $string); - } - - /** - * Fetch and prepare a cache object. - * - * @param string $cid CacheID to fetch - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param string $content cached content - * @param integer &$timestamp cached timestamp (epoch) - * @param string $resource_uid resource's uid - * - * @return boolean success - */ - protected function fetch( - $cid, - $resource_name = null, - $cache_id = null, - $compile_id = null, - &$content = null, - &$timestamp = null, - $resource_uid = null - ) { - $t = $this->read(array($cid)); - $content = !empty($t[ $cid ]) ? $t[ $cid ] : null; - $timestamp = null; - if ($content && ($timestamp = $this->getMetaTimestamp($content))) { - $invalidated = - $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid); - if ($invalidated > $timestamp) { - $timestamp = null; - $content = null; - } - } - return !!$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}} - * - * @param string &$content the content to be cached - */ - protected function addMetaTimestamp(&$content) - { - $mt = explode(' ', microtime()); - $ts = pack('NN', $mt[ 1 ], (int)($mt[ 0 ] * 100000000)); - $content = $ts . $content; - } - - /** - * Extract the timestamp the $content was cached - * - * @param string &$content the cached content - * - * @return float the microtime the content was cached - */ - protected function getMetaTimestamp(&$content) - { - extract(unpack('N1s/N1m/a*content', $content)); - /** - * @var int $s - * @var int $m - */ - return $s + ($m / 100000000); - } - - /** - * Invalidate CacheID - * - * @param string $cid CacheID - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param string $resource_uid source's uid - * - * @return void - */ - protected function invalidate( - $cid = null, - $resource_name = null, - $cache_id = null, - $compile_id = null, - $resource_uid = null - ) { - $now = microtime(true); - $key = null; - // invalidate everything - if (!$resource_name && !$cache_id && !$compile_id) { - $key = 'IVK#ALL'; - } // invalidate all caches by template - else { - if ($resource_name && !$cache_id && !$compile_id) { - $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name); - } // invalidate all caches by cache group - else { - if (!$resource_name && $cache_id && !$compile_id) { - $key = 'IVK#CACHE#' . $this->sanitize($cache_id); - } // invalidate all caches by compile id - else { - if (!$resource_name && !$cache_id && $compile_id) { - $key = 'IVK#COMPILE#' . $this->sanitize($compile_id); - } // invalidate by combination - else { - $key = 'IVK#CID#' . $cid; - } - } - } - } - $this->write(array($key => $now)); - } - - /** - * Determine the latest timestamp known to the invalidation chain - * - * @param string $cid CacheID to determine latest invalidation timestamp of - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param string $resource_uid source's filepath - * - * @return float the microtime the CacheID was invalidated - */ - protected function getLatestInvalidationTimestamp( - $cid, - $resource_name = null, - $cache_id = null, - $compile_id = null, - $resource_uid = null - ) { - // abort if there is no CacheID - if (false && !$cid) { - return 0; - } - // abort if there are no InvalidationKeys to check - if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) { - return 0; - } - // there are no InValidationKeys - if (!($values = $this->read($_cid))) { - return 0; - } - // make sure we're dealing with floats - $values = array_map('floatval', $values); - return max($values); - } - - /** - * Translate a CacheID into the list of applicable InvalidationKeys. - * Splits 'some|chain|into|an|array' into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... ) - * - * @param string $cid CacheID to translate - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param string $resource_uid source's filepath - * - * @return array list of InvalidationKeys - * @uses $invalidationKeyPrefix to prepend to each InvalidationKey - */ - protected function listInvalidationKeys( - $cid, - $resource_name = null, - $cache_id = null, - $compile_id = null, - $resource_uid = null - ) { - $t = array('IVK#ALL'); - $_name = $_compile = '#'; - if ($resource_name) { - $_name .= $resource_uid . '#' . $this->sanitize($resource_name); - $t[] = 'IVK#TEMPLATE' . $_name; - } - if ($compile_id) { - $_compile .= $this->sanitize($compile_id); - $t[] = 'IVK#COMPILE' . $_compile; - } - $_name .= '#'; - $cid = trim((string)$cache_id, '|'); - if (!$cid) { - return $t; - } - $i = 0; - while (true) { - // determine next delimiter position - $i = strpos($cid, '|', $i); - // add complete CacheID if there are no more delimiters - if ($i === false) { - $t[] = 'IVK#CACHE#' . $cid; - $t[] = 'IVK#CID' . $_name . $cid . $_compile; - $t[] = 'IVK#CID' . $_name . $_compile; - break; - } - $part = substr($cid, 0, $i); - // add slice to list - $t[] = 'IVK#CACHE#' . $part; - $t[] = 'IVK#CID' . $_name . $part . $_compile; - // skip past delimiter position - $i++; - } - return $t; - } - - /** - * Check is cache is locked for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return boolean true or false if cache is locked - */ - public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $key = 'LOCK#' . $cached->filepath; - $data = $this->read(array($key)); - return $data && time() - $data[ $key ] < $smarty->locking_timeout; - } - - /** - * Lock cache for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return bool|void - */ - public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $cached->is_locked = true; - $key = 'LOCK#' . $cached->filepath; - $this->write(array($key => time()), $smarty->locking_timeout); - } - - /** - * Unlock cache for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return bool|void - */ - public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $cached->is_locked = false; - $key = 'LOCK#' . $cached->filepath; - $this->delete(array($key)); - } - - /** - * Read values for a set of keys from cache - * - * @param array $keys list of keys to fetch - * - * @return array list of values with the given keys used as indexes - */ - abstract protected function read(array $keys); - - /** - * Save values for a set of keys to cache - * - * @param array $keys list of values to save - * @param int $expire expiration time - * - * @return boolean true on success, false on failure - */ - abstract protected function write(array $keys, $expire = null); - - /** - * Remove values from cache - * - * @param array $keys list of keys to delete - * - * @return boolean true on success, false on failure - */ - abstract protected function delete(array $keys); - - /** - * Remove *all* values from cache - * - * @return boolean true on success, false on failure - */ - protected function purge() - { - return false; - } -} diff --git a/libs/sysplugins/smarty_data.php b/libs/sysplugins/smarty_data.php deleted file mode 100644 index 2545ed3a..00000000 --- a/libs/sysplugins/smarty_data.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** - * Smarty Plugin Data - * This file contains the data object - * - * @package Smarty - * @subpackage Template - * @author Uwe Tews - */ - -/** - * class for the Smarty data object - * The Smarty data object will hold Smarty variables in the current scope - * - * @package Smarty - * @subpackage Template - */ -class Smarty_Data extends Smarty_Internal_Data -{ - /** - * Counter - * - * @var int - */ - public static $count = 0; - - /** - * Data block name - * - * @var string - */ - public $dataObjectName = ''; - - /** - * Smarty object - * - * @var Smarty - */ - public $smarty = null; - - /** - * create Smarty data object - * - * @param Smarty|array $_parent parent template - * @param Smarty|Smarty_Internal_Template $smarty global smarty instance - * @param string $name optional data block name - * - * @throws SmartyException - */ - public function __construct($_parent = null, $smarty = null, $name = null) - { - parent::__construct(); - self::$count++; - $this->dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count); - $this->smarty = $smarty; - if (is_object($_parent)) { - // when object set up back pointer - $this->parent = $_parent; - } elseif (is_array($_parent)) { - // set up variable values - foreach ($_parent as $_key => $_val) { - $this->tpl_vars[ $_key ] = new Smarty_Variable($_val); - } - } elseif ($_parent !== null) { - throw new SmartyException('Wrong type for template variables'); - } - } -} diff --git a/libs/sysplugins/smarty_internal_block.php b/libs/sysplugins/smarty_internal_block.php deleted file mode 100644 index 9956d642..00000000 --- a/libs/sysplugins/smarty_internal_block.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -/** - * Smarty {block} tag class - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Block -{ - /** - * Block name - * - * @var string - */ - public $name = ''; - - /** - * Hide attribute - * - * @var bool - */ - public $hide = false; - - /** - * Append attribute - * - * @var bool - */ - public $append = false; - - /** - * prepend attribute - * - * @var bool - */ - public $prepend = false; - - /** - * Block calls $smarty.block.child - * - * @var bool - */ - public $callsChild = false; - - /** - * Inheritance child block - * - * @var Smarty_Internal_Block|null - */ - public $child = null; - - /** - * Inheritance calling parent block - * - * @var Smarty_Internal_Block|null - */ - public $parent = null; - - /** - * Inheritance Template index - * - * @var int - */ - public $tplIndex = 0; - - /** - * Smarty_Internal_Block constructor. - * - if outer level {block} of child template ($state === 1) save it as child root block - * - otherwise process inheritance and render - * - * @param string $name block name - * @param int|null $tplIndex index of outer level {block} if nested - */ - public function __construct($name, $tplIndex) - { - $this->name = $name; - $this->tplIndex = $tplIndex; - } - - /** - * Compiled block code overloaded by {block} class - * - * @param \Smarty_Internal_Template $tpl - */ - public function callBlock(Smarty_Internal_Template $tpl) - { - } -} diff --git a/libs/sysplugins/smarty_internal_cacheresource_file.php b/libs/sysplugins/smarty_internal_cacheresource_file.php deleted file mode 100644 index c77ae9e1..00000000 --- a/libs/sysplugins/smarty_internal_cacheresource_file.php +++ /dev/null @@ -1,235 +0,0 @@ -<?php -/** - * Smarty Internal Plugin CacheResource File - * - * @package Smarty - * @subpackage Cacher - * @author Uwe Tews - * @author Rodney Rehm - */ - -/** - * 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. - * - * @package Smarty - * @subpackage Cacher - */ -class Smarty_Internal_CacheResource_File extends Smarty_CacheResource -{ - /** - * populate Cached Object with meta data from Resource - * - * @param Smarty_Template_Cached $cached cached object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) - { - $source = &$_template->source; - $smarty = &$_template->smarty; - $_compile_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'; - $_filepath = sha1($source->uid . $smarty->_joined_template_dir); - $cached->filepath = $smarty->getCacheDir(); - if (isset($_template->cache_id)) { - $cached->filepath .= preg_replace( - array( - '![^\w|]+!', - '![|]+!' - ), - array( - '_', - $_compile_dir_sep - ), - $_template->cache_id - ) . $_compile_dir_sep; - } - if (isset($_template->compile_id)) { - $cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep; - } - // if use_sub_dirs, break file into directories - if ($smarty->use_sub_dirs) { - $cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . DIRECTORY_SEPARATOR . $_filepath[ 2 ] . - $_filepath[ 3 ] . - DIRECTORY_SEPARATOR . - $_filepath[ 4 ] . $_filepath[ 5 ] . DIRECTORY_SEPARATOR; - } - $cached->filepath .= $_filepath; - $basename = $source->handler->getBasename($source); - if (!empty($basename)) { - $cached->filepath .= '.' . $basename; - } - if ($smarty->cache_locking) { - $cached->lock_id = $cached->filepath . '.lock'; - } - $cached->filepath .= '.php'; - $cached->timestamp = $cached->exists = is_file($cached->filepath); - if ($cached->exists) { - $cached->timestamp = filemtime($cached->filepath); - } - } - - /** - * populate Cached Object with timestamp and exists from Resource - * - * @param Smarty_Template_Cached $cached cached object - * - * @return void - */ - public function populateTimestamp(Smarty_Template_Cached $cached) - { - $cached->timestamp = $cached->exists = is_file($cached->filepath); - if ($cached->exists) { - $cached->timestamp = filemtime($cached->filepath); - } - } - - /** - * Read the cached template and process its header - * - * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template - * @param Smarty_Template_Cached $cached cached object - * @param bool $update flag if called because cache update - * - * @return boolean true or false if the cached content does not exist - */ - public function process( - Smarty_Internal_Template $_smarty_tpl, - Smarty_Template_Cached $cached = null, - $update = false - ) { - $_smarty_tpl->cached->valid = false; - if ($update && defined('HHVM_VERSION')) { - eval('?>' . file_get_contents($_smarty_tpl->cached->filepath)); - return true; - } else { - return @include $_smarty_tpl->cached->filepath; - } - } - - /** - * Write the rendered template output to cache - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * - * @return bool success - * @throws \SmartyException - */ - public function writeCachedContent(Smarty_Internal_Template $_template, $content) - { - if ($_template->smarty->ext->_writeFile->writeFile( - $_template->cached->filepath, - $content, - $_template->smarty - ) === true - ) { - if (function_exists('opcache_invalidate') - && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api'))) < 1 - ) { - opcache_invalidate($_template->cached->filepath, true); - } elseif (function_exists('apc_compile_file')) { - apc_compile_file($_template->cached->filepath); - } - $cached = $_template->cached; - $cached->timestamp = $cached->exists = is_file($cached->filepath); - if ($cached->exists) { - $cached->timestamp = filemtime($cached->filepath); - return true; - } - } - return false; - } - - /** - * Read cached template from cache - * - * @param Smarty_Internal_Template $_template template object - * - * @return string content - */ - public function readCachedContent(Smarty_Internal_Template $_template) - { - if (is_file($_template->cached->filepath)) { - return file_get_contents($_template->cached->filepath); - } - return false; - } - - /** - * Empty cache - * - * @param Smarty $smarty - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return integer number of cache files deleted - */ - public function clearAll(Smarty $smarty, $exp_time = null) - { - return $smarty->ext->_cacheResourceFile->clear($smarty, null, null, null, $exp_time); - } - - /** - * Empty cache for a specific template - * - * @param Smarty $smarty - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return integer number of cache files deleted - */ - public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) - { - return $smarty->ext->_cacheResourceFile->clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time); - } - - /** - * Check is cache is locked for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return boolean true or false if cache is locked - */ - public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - clearstatcache(true, $cached->lock_id ?? ''); - if (null !== $cached->lock_id && is_file($cached->lock_id)) { - $t = filemtime($cached->lock_id); - return $t && (time() - $t < $smarty->locking_timeout); - } else { - return false; - } - } - - /** - * Lock cache for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return bool|void - */ - public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $cached->is_locked = true; - touch($cached->lock_id); - } - - /** - * Unlock cache for this template - * - * @param Smarty $smarty Smarty object - * @param Smarty_Template_Cached $cached cached object - * - * @return bool|void - */ - public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) - { - $cached->is_locked = false; - @unlink($cached->lock_id); - } -} diff --git a/libs/sysplugins/smarty_internal_compile_append.php b/libs/sysplugins/smarty_internal_compile_append.php deleted file mode 100644 index 1a9befbf..00000000 --- a/libs/sysplugins/smarty_internal_compile_append.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Append - * Compiles the {append} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Append Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign -{ - /** - * Compiles code for the {append} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // the following must be assigned at runtime because it will be overwritten in parent class - $this->required_attributes = array('var', 'value'); - $this->shorttag_order = array('var', 'value'); - $this->optional_attributes = array('scope', 'index'); - $this->mapCache = array(); - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - // map to compile assign attributes - if (isset($_attr[ 'index' ])) { - $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']'; - unset($_attr[ 'index' ]); - } else { - $_params[ 'smarty_internal_index' ] = '[]'; - } - $_new_attr = array(); - foreach ($_attr as $key => $value) { - $_new_attr[] = array($key => $value); - } - // call compile assign - return parent::compile($_new_attr, $compiler, $_params); - } -} diff --git a/libs/sysplugins/smarty_internal_compile_assign.php b/libs/sysplugins/smarty_internal_compile_assign.php deleted file mode 100644 index 1f0ab9b7..00000000 --- a/libs/sysplugins/smarty_internal_compile_assign.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Assign - * Compiles the {assign} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Assign Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $option_flags = array('nocache', 'noscope'); - - /** - * Valid scope names - * - * @var array - */ - public $valid_scopes = array( - 'local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT, - 'root' => Smarty::SCOPE_ROOT, 'global' => Smarty::SCOPE_GLOBAL, - 'tpl_root' => Smarty::SCOPE_TPL_ROOT, 'smarty' => Smarty::SCOPE_SMARTY - ); - - /** - * Compiles code for the {assign} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append - $this->required_attributes = array('var', 'value'); - $this->shorttag_order = array('var', 'value'); - $this->optional_attributes = array('scope'); - $this->mapCache = array(); - $_nocache = false; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - // nocache ? - if ($_var = $compiler->getId($_attr[ 'var' ])) { - $_var = "'{$_var}'"; - } else { - $_var = $_attr[ 'var' ]; - } - if ($compiler->tag_nocache || $compiler->nocache) { - $_nocache = true; - // create nocache var to make it know for further compiling - $compiler->setNocacheInVariable($_attr[ 'var' ]); - } - // scope setup - if ($_attr[ 'noscope' ]) { - $_scope = -1; - } else { - $_scope = $compiler->convertScope($_attr, $this->valid_scopes); - } - // optional parameter - $_params = ''; - if ($_nocache || $_scope) { - $_params .= ' ,' . var_export($_nocache, true); - } - if ($_scope) { - $_params .= ' ,' . $_scope; - } - if (isset($parameter[ 'smarty_internal_index' ])) { - $output = - "<?php \$_tmp_array = isset(\$_smarty_tpl->tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n"; - $output .= "if (!(is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess)) {\n"; - $output .= "settype(\$_tmp_array, 'array');\n"; - $output .= "}\n"; - $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n"; - $output .= "\$_smarty_tpl->_assignInScope({$_var}, \$_tmp_array{$_params});?>"; - } else { - $output = "<?php \$_smarty_tpl->_assignInScope({$_var}, {$_attr['value']}{$_params});?>"; - } - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_block.php b/libs/sysplugins/smarty_internal_compile_block.php deleted file mode 100644 index cbaccd2b..00000000 --- a/libs/sysplugins/smarty_internal_compile_block.php +++ /dev/null @@ -1,189 +0,0 @@ -<?php -/** - * This file is part of Smarty. - * - * (c) 2015 Uwe Tews - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Smarty Internal Plugin Compile Block Class - * - * @author Uwe Tews <uwe.tews@googlemail.com> - */ -class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $option_flags = array('hide', 'nocache'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('assign'); - - /** - * Compiles code for the {block} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - if (!isset($compiler->_cache[ 'blockNesting' ])) { - $compiler->_cache[ 'blockNesting' ] = 0; - } - if ($compiler->_cache[ 'blockNesting' ] === 0) { - // make sure that inheritance gets initialized in template code - $this->registerInit($compiler); - $this->option_flags = array('hide', 'nocache', 'append', 'prepend'); - } else { - $this->option_flags = array('hide', 'nocache'); - } - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - ++$compiler->_cache[ 'blockNesting' ]; - $_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(mt_rand(), true)); - $compiler->_cache[ 'blockName' ][ $compiler->_cache[ 'blockNesting' ] ] = $_attr[ 'name' ]; - $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ] = $_className; - $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ] = array(); - $compiler->_cache[ 'blockParams' ][ 1 ][ 'subBlocks' ][ trim($_attr[ 'name' ], '"\'') ][] = $_className; - $this->openTag( - $compiler, - 'block', - array( - $_attr, $compiler->nocache, $compiler->parser->current_buffer, - $compiler->template->compiled->has_nocache_code, - $compiler->template->caching - ) - ); - $compiler->saveRequiredPlugins(true); - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); - $compiler->template->compiled->has_nocache_code = false; - $compiler->suppressNocacheProcessing = true; - } -} - -/** - * Smarty Internal Plugin Compile BlockClose Class - */ -class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance -{ - /** - * Compiles code for the {/block} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return bool true - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block')); - // init block parameter - $_block = $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]; - unset($compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]); - $_name = $_attr[ 'name' ]; - $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null; - unset($_attr[ 'assign' ], $_attr[ 'name' ]); - foreach ($_attr as $name => $stat) { - if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat !== 'false')) { - $_block[ $name ] = 'true'; - } - } - $_className = $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ]; - // get compiled block code - $_functionCode = $compiler->parser->current_buffer; - // setup buffer for template function code - $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); - $output = "<?php\n"; - $output .= $compiler->cStyleComment(" {block {$_name}} ") . "\n"; - $output .= "class {$_className} extends Smarty_Internal_Block\n"; - $output .= "{\n"; - foreach ($_block as $property => $value) { - $output .= "public \${$property} = " . var_export($value, true) . ";\n"; - } - $output .= "public function callBlock(Smarty_Internal_Template \$_smarty_tpl) {\n"; - $output .= $compiler->compileRequiredPlugins(); - $compiler->restoreRequiredPlugins(); - if ($compiler->template->compiled->has_nocache_code) { - $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n"; - } - if (isset($_assign)) { - $output .= "ob_start();\n"; - } - $output .= "?>\n"; - $compiler->parser->current_buffer->append_subtree( - $compiler->parser, - new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $output - ) - ); - $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode); - $output = "<?php\n"; - if (isset($_assign)) { - $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; - } - $output .= "}\n"; - $output .= "}\n"; - $output .= $compiler->cStyleComment(" {/block {$_name}} ") . "\n\n"; - $output .= "?>\n"; - $compiler->parser->current_buffer->append_subtree( - $compiler->parser, - new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $output - ) - ); - $compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser); - $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); - // restore old status - $compiler->template->compiled->has_nocache_code = $_has_nocache_code; - $compiler->tag_nocache = $compiler->nocache; - $compiler->nocache = $_nocache; - $compiler->parser->current_buffer = $_buffer; - $output = "<?php \n"; - if ($compiler->_cache[ 'blockNesting' ] === 1) { - $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n"; - } else { - $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n"; - } - $output .= "?>\n"; - --$compiler->_cache[ 'blockNesting' ]; - if ($compiler->_cache[ 'blockNesting' ] === 0) { - unset($compiler->_cache[ 'blockNesting' ]); - } - $compiler->has_code = true; - $compiler->suppressNocacheProcessing = true; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_block_child.php b/libs/sysplugins/smarty_internal_compile_block_child.php deleted file mode 100644 index 588d1862..00000000 --- a/libs/sysplugins/smarty_internal_compile_block_child.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -/** - * This file is part of Smarty. - * - * (c) 2015 Uwe Tews - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Smarty Internal Plugin Compile Block Child Class - * - * @author Uwe Tews <uwe.tews@googlemail.com> - */ -class Smarty_Internal_Compile_Block_Child extends Smarty_Internal_Compile_Child -{ - /** - * Tag name - * - * @var string - */ - public $tag = 'block_child'; -} diff --git a/libs/sysplugins/smarty_internal_compile_block_parent.php b/libs/sysplugins/smarty_internal_compile_block_parent.php deleted file mode 100644 index 97f11ca4..00000000 --- a/libs/sysplugins/smarty_internal_compile_block_parent.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * This file is part of Smarty. - * - * (c) 2015 Uwe Tews - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Smarty Internal Plugin Compile Block Parent Class - * - * @author Uwe Tews <uwe.tews@googlemail.com> - */ -class Smarty_Internal_Compile_Block_Parent extends Smarty_Internal_Compile_Child -{ - /** - * Tag name - * - * @var string - */ - public $tag = 'block_parent'; - - /** - * Block type - * - * @var string - */ - public $blockType = 'Parent'; -} diff --git a/libs/sysplugins/smarty_internal_compile_break.php b/libs/sysplugins/smarty_internal_compile_break.php deleted file mode 100644 index 1ee8d75d..00000000 --- a/libs/sysplugins/smarty_internal_compile_break.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Break - * Compiles the {break} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Break Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('levels'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('levels'); - - /** - * Tag name may be overloaded by Smarty_Internal_Compile_Continue - * - * @var string - */ - public $tag = 'break'; - - /** - * Compiles code for the {break} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - list($levels, $foreachLevels) = $this->checkLevels($args, $compiler); - $output = "<?php "; - if ($foreachLevels > 0 && $this->tag === 'continue') { - $foreachLevels--; - } - if ($foreachLevels > 0) { - /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */ - $foreachCompiler = $compiler->getTagCompiler('foreach'); - $output .= $foreachCompiler->compileRestore($foreachLevels); - } - $output .= "{$this->tag} {$levels};?>"; - return $output; - } - - /** - * check attributes and return array of break and foreach levels - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return array - * @throws \SmartyCompilerException - */ - public function checkLevels($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true); - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - if ($_attr[ 'nocache' ] === true) { - $compiler->trigger_template_error('nocache option not allowed', null, true); - } - if (isset($_attr[ 'levels' ])) { - if (!is_numeric($_attr[ 'levels' ])) { - $compiler->trigger_template_error('level attribute must be a numeric constant', null, true); - } - $levels = $_attr[ 'levels' ]; - } else { - $levels = 1; - } - $level_count = $levels; - $stack_count = count($compiler->_tag_stack) - 1; - $foreachLevels = 0; - $lastTag = ''; - while ($level_count > 0 && $stack_count >= 0) { - if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) { - $lastTag = $compiler->_tag_stack[ $stack_count ][ 0 ]; - if ($level_count === 0) { - break; - } - $level_count--; - if ($compiler->_tag_stack[ $stack_count ][ 0 ] === 'foreach') { - $foreachLevels++; - } - } - $stack_count--; - } - if ($level_count !== 0) { - $compiler->trigger_template_error("cannot {$this->tag} {$levels} level(s)", null, true); - } - if ($lastTag === 'foreach' && $this->tag === 'break' && $foreachLevels > 0) { - $foreachLevels--; - } - return array($levels, $foreachLevels); - } -} diff --git a/libs/sysplugins/smarty_internal_compile_call.php b/libs/sysplugins/smarty_internal_compile_call.php deleted file mode 100644 index 445cabc6..00000000 --- a/libs/sysplugins/smarty_internal_compile_call.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Function_Call - * Compiles the calls of user defined tags defined by {function} - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Function_Call Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Compiles the calls of user defined tags defined by {function} - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - // save possible attributes - if (isset($_attr[ 'assign' ])) { - // output will be stored in a smarty variable instead of being displayed - $_assign = $_attr[ 'assign' ]; - } - //$_name = trim($_attr['name'], "''"); - $_name = $_attr[ 'name' ]; - unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]); - // set flag (compiled code of {function} must be included in cache file - if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) { - $_nocache = 'true'; - } else { - $_nocache = 'false'; - } - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - $_params = 'array(' . implode(',', $_paramsArray) . ')'; - //$compiler->suppressNocacheProcessing = true; - // was there an assign attribute - if (isset($_assign)) { - $_output = - "<?php ob_start();\n\$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n"; - } else { - $_output = - "<?php \$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n"; - } - return $_output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_capture.php b/libs/sysplugins/smarty_internal_compile_capture.php deleted file mode 100644 index a4ffbc9e..00000000 --- a/libs/sysplugins/smarty_internal_compile_capture.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Capture - * Compiles the {capture} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Capture Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('name', 'assign', 'append'); - - /** - * Compiles code for the {$smarty.capture.xxx} - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - */ - public static function compileSpecialVariable( - $args, - Smarty_Internal_TemplateCompilerBase $compiler, - $parameter = null - ) { - return '$_smarty_tpl->smarty->ext->_capture->getBuffer($_smarty_tpl' . - (isset($parameter[ 1 ]) ? ", {$parameter[ 1 ]})" : ')'); - } - - /** - * Compiles code for the {capture} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param null $parameter - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args, $parameter, 'capture'); - $buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'"; - $assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null'; - $append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null'; - $compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache); - // maybe nocache because of nocache variables - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - $_output = "<?php \$_smarty_tpl->smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>"; - return $_output; - } -} - -/** - * Smarty Internal Plugin Compile Captureclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/capture} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param null $parameter - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args, $parameter, '/capture'); - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]); - return "<?php \$_smarty_tpl->smarty->ext->_capture->close(\$_smarty_tpl);?>"; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_child.php b/libs/sysplugins/smarty_internal_compile_child.php deleted file mode 100644 index f728c18b..00000000 --- a/libs/sysplugins/smarty_internal_compile_child.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php -/** - * This file is part of Smarty. - * - * (c) 2015 Uwe Tews - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Smarty Internal Plugin Compile Child Class - * - * @author Uwe Tews <uwe.tews@googlemail.com> - */ -class Smarty_Internal_Compile_Child extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('assign'); - - /** - * Tag name - * - * @var string - */ - public $tag = 'child'; - - /** - * Block type - * - * @var string - */ - public $blockType = 'Child'; - - /** - * Compiles code for the {child} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $tag = isset($parameter[ 0 ]) ? "'{$parameter[0]}'" : "'{{$this->tag}}'"; - if (!isset($compiler->_cache[ 'blockNesting' ])) { - $compiler->trigger_template_error( - "{$tag} used outside {block} tags ", - $compiler->parser->lex->taglineno - ); - } - $compiler->has_code = true; - $compiler->suppressNocacheProcessing = true; - if ($this->blockType === 'Child') { - $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true'; - } - $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null; - $output = "<?php \n"; - if (isset($_assign)) { - $output .= "ob_start();\n"; - } - $output .= '$_smarty_tpl->inheritance->call' . $this->blockType . '($_smarty_tpl, $this' . - ($this->blockType === 'Child' ? '' : ", {$tag}") . ");\n"; - if (isset($_assign)) { - $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; - } - $output .= "?>\n"; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_config_load.php b/libs/sysplugins/smarty_internal_compile_config_load.php deleted file mode 100644 index 8fe64ee1..00000000 --- a/libs/sysplugins/smarty_internal_compile_config_load.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Config Load - * Compiles the {config load} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Config Load Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('file'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('file', 'section'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('section', 'scope'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $option_flags = array('nocache', 'noscope'); - - /** - * Valid scope names - * - * @var array - */ - public $valid_scopes = array( - 'local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT, - 'root' => Smarty::SCOPE_ROOT, 'tpl_root' => Smarty::SCOPE_TPL_ROOT, - 'smarty' => Smarty::SCOPE_SMARTY, 'global' => Smarty::SCOPE_SMARTY - ); - - /** - * Compiles code for the {config_load} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - if ($_attr[ 'nocache' ] === true) { - $compiler->trigger_template_error('nocache option not allowed', null, true); - } - // save possible attributes - $conf_file = $_attr[ 'file' ]; - if (isset($_attr[ 'section' ])) { - $section = $_attr[ 'section' ]; - } else { - $section = 'null'; - } - // scope setup - if ($_attr[ 'noscope' ]) { - $_scope = -1; - } else { - $_scope = $compiler->convertScope($_attr, $this->valid_scopes); - } - // create config object - $_output = - "<?php\n\$_smarty_tpl->smarty->ext->configLoad->_loadConfigFile(\$_smarty_tpl, {$conf_file}, {$section}, {$_scope});\n?>\n"; - return $_output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_continue.php b/libs/sysplugins/smarty_internal_compile_continue.php deleted file mode 100644 index e545728e..00000000 --- a/libs/sysplugins/smarty_internal_compile_continue.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Continue - * Compiles the {continue} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Continue Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Continue extends Smarty_Internal_Compile_Break -{ - /** - * Tag name - * - * @var string - */ - public $tag = 'continue'; -} diff --git a/libs/sysplugins/smarty_internal_compile_debug.php b/libs/sysplugins/smarty_internal_compile_debug.php deleted file mode 100644 index 79941668..00000000 --- a/libs/sysplugins/smarty_internal_compile_debug.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Debug - * Compiles the {debug} tag. - * It opens a window the the Smarty Debugging Console. - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Debug Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {debug} tag - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - // compile always as nocache - $compiler->tag_nocache = true; - // display debug template - $_output = - "<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n"; - $_output .= "unset(\$_smarty_debug);\n?>"; - return $_output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_eval.php b/libs/sysplugins/smarty_internal_compile_eval.php deleted file mode 100644 index 8e0174e3..00000000 --- a/libs/sysplugins/smarty_internal_compile_eval.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Eval - * Compiles the {eval} tag. - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Eval Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('var'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('assign'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('var', 'assign'); - - /** - * Compiles code for the {eval} tag - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - if (isset($_attr[ 'assign' ])) { - // output will be stored in a smarty variable instead of being displayed - $_assign = $_attr[ 'assign' ]; - } - // create template object - $_output = - "\$_template = new {$compiler->smarty->template_class}('eval:'.{$_attr[ 'var' ]}, \$_smarty_tpl->smarty, \$_smarty_tpl);"; - //was there an assign attribute? - if (isset($_assign)) { - $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());"; - } else { - $_output .= 'echo $_template->fetch();'; - } - return "<?php $_output ?>"; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_extends.php b/libs/sysplugins/smarty_internal_compile_extends.php deleted file mode 100644 index d72d2b76..00000000 --- a/libs/sysplugins/smarty_internal_compile_extends.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile extend - * Compiles the {extends} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile extend Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inheritance -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('file'); - - /** - * Array of names of optional attribute required by tag - * use array('_any') if there is no restriction of attributes names - * - * @var array - */ - public $optional_attributes = array('extends_resource'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('file'); - - /** - * Compiles code for the {extends} tag extends: resource - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - if ($_attr[ 'nocache' ] === true) { - $compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1); - } - if (strpos($_attr[ 'file' ], '$_tmp') !== false) { - $compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1); - } - // add code to initialize inheritance - $this->registerInit($compiler, true); - $file = trim($_attr[ 'file' ], '\'"'); - if (strlen($file) > 8 && substr($file, 0, 8) === 'extends:') { - // generate code for each template - $files = array_reverse(explode('|', substr($file, 8))); - $i = 0; - foreach ($files as $file) { - if ($file[ 0 ] === '"') { - $file = trim($file, '".'); - } else { - $file = "'{$file}'"; - } - $i++; - if ($i === count($files) && isset($_attr[ 'extends_resource' ])) { - $this->compileEndChild($compiler); - } - $this->compileInclude($compiler, $file); - } - if (!isset($_attr[ 'extends_resource' ])) { - $this->compileEndChild($compiler); - } - } else { - $this->compileEndChild($compiler, $_attr[ 'file' ]); - } - $compiler->has_code = false; - return ''; - } - - /** - * Add code for inheritance endChild() method to end of template - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param null|string $template optional inheritance parent template - * - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler, $template = null) - { - $inlineUids = ''; - if (isset($template) && $compiler->smarty->merge_compiled_includes) { - $code = $compiler->compileTag('include', array($template, array('scope' => 'parent'))); - if (preg_match('/([,][\s]*[\'][a-z0-9]+[\'][,][\s]*[\']content.*[\'])[)]/', $code, $match)) { - $inlineUids = $match[ 1 ]; - } - } - $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - '<?php $_smarty_tpl->inheritance->endChild($_smarty_tpl' . - (isset($template) ? - ", {$template}{$inlineUids}" : - '') . ");\n?>" - ); - } - - /** - * Add code for including subtemplate to end of template - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param string $template subtemplate name - * - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $template) - { - $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $compiler->compileTag( - 'include', - array( - $template, - array('scope' => 'parent') - ) - ) - ); - } - - /** - * Create source code for {extends} from source components array - * - * @param \Smarty_Internal_Template $template - * - * @return string - */ - public static function extendsSourceArrayCode(Smarty_Internal_Template $template) - { - $resources = array(); - foreach ($template->source->components as $source) { - $resources[] = $source->resource; - } - return $template->smarty->left_delimiter . 'extends file=\'extends:' . join('|', $resources) . - '\' extends_resource=true' . $template->smarty->right_delimiter; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_for.php b/libs/sysplugins/smarty_internal_compile_for.php deleted file mode 100644 index 969e22c1..00000000 --- a/libs/sysplugins/smarty_internal_compile_for.php +++ /dev/null @@ -1,164 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile For - * Compiles the {for} {forelse} {/for} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile For Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {for} tag - * Smarty supports two different syntax's: - * - {for $var in $array} - * For looping over arrays or iterators - * - {for $x=0; $x<$y; $x++} - * For general loops - * The parser is generating different sets of attribute by which this compiler can - * determine which syntax is used. - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - */ - public function compile($args, $compiler, $parameter) - { - $compiler->loopNesting++; - if ($parameter === 0) { - $this->required_attributes = array('start', 'to'); - $this->optional_attributes = array('max', 'step'); - } else { - $this->required_attributes = array('start', 'ifexp', 'var', 'step'); - $this->optional_attributes = array(); - } - $this->mapCache = array(); - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $output = "<?php\n"; - if ($parameter === 1) { - foreach ($_attr[ 'start' ] as $_statement) { - if (is_array($_statement[ 'var' ])) { - $var = $_statement[ 'var' ][ 'var' ]; - $index = $_statement[ 'var' ][ 'smarty_internal_index' ]; - } else { - $var = $_statement[ 'var' ]; - $index = ''; - } - $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);\n"; - $output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n"; - } - if (is_array($_attr[ 'var' ])) { - $var = $_attr[ 'var' ][ 'var' ]; - $index = $_attr[ 'var' ][ 'smarty_internal_index' ]; - } else { - $var = $_attr[ 'var' ]; - $index = ''; - } - $output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n"; - } else { - $_statement = $_attr[ 'start' ]; - if (is_array($_statement[ 'var' ])) { - $var = $_statement[ 'var' ][ 'var' ]; - $index = $_statement[ 'var' ][ 'smarty_internal_index' ]; - } else { - $var = $_statement[ 'var' ]; - $index = ''; - } - $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);"; - if (isset($_attr[ 'step' ])) { - $output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];"; - } else { - $output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;"; - } - if (isset($_attr[ 'max' ])) { - $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n"; - } else { - $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n"; - } - $output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n"; - $output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n"; - $output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration === 1;"; - $output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration === \$_smarty_tpl->tpl_vars[$var]->total;"; - } - $output .= '?>'; - $this->openTag($compiler, 'for', array('for', $compiler->nocache)); - // maybe nocache because of nocache variables - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - // return compiled code - return $output; - } -} - -/** - * Smarty Internal Plugin Compile Forelse Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {forelse} tag - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - */ - public function compile($args, $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - list($openTag, $nocache) = $this->closeTag($compiler, array('for')); - $this->openTag($compiler, 'forelse', array('forelse', $nocache)); - return "<?php }} else { ?>"; - } -} - -/** - * Smarty Internal Plugin Compile Forclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/for} tag - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - */ - public function compile($args, $compiler, $parameter) - { - $compiler->loopNesting--; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse')); - $output = "<?php }\n"; - if ($openTag !== 'forelse') { - $output .= "}\n"; - } - $output .= "?>"; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_foreach.php b/libs/sysplugins/smarty_internal_compile_foreach.php deleted file mode 100644 index edfe358b..00000000 --- a/libs/sysplugins/smarty_internal_compile_foreach.php +++ /dev/null @@ -1,343 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Foreach - * Compiles the {foreach} {foreachelse} {/foreach} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Foreach Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_ForeachSection -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('from', 'item'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('name', 'key', 'properties'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('from', 'item', 'key', 'name'); - - /** - * counter - * - * @var int - */ - public $counter = 0; - - /** - * Name of this tag - * - * @var string - */ - public $tagName = 'foreach'; - - /** - * Valid properties of $smarty.foreach.name.xxx variable - * - * @var array - */ - public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total'); - - /** - * Valid properties of $item@xxx variable - * - * @var array - */ - public $itemProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'key'); - - /** - * Flag if tag had name attribute - * - * @var bool - */ - public $isNamed = false; - - /** - * Compiles code for the {foreach} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $compiler->loopNesting++; - // init - $this->isNamed = false; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $from = $_attr[ 'from' ]; - $item = $compiler->getId($_attr[ 'item' ]); - if ($item === false) { - $item = $compiler->getVariableName($_attr[ 'item' ]); - } - $key = $name = null; - $attributes = array('item' => $item); - if (isset($_attr[ 'key' ])) { - $key = $compiler->getId($_attr[ 'key' ]); - if ($key === false) { - $key = $compiler->getVariableName($_attr[ 'key' ]); - } - $attributes[ 'key' ] = $key; - } - if (isset($_attr[ 'name' ])) { - $this->isNamed = true; - $name = $attributes[ 'name' ] = $compiler->getId($_attr[ 'name' ]); - } - foreach ($attributes as $a => $v) { - if ($v === false) { - $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true); - } - } - $fromName = $compiler->getVariableName($_attr[ 'from' ]); - if ($fromName) { - foreach (array('item', 'key') as $a) { - if (isset($attributes[ $a ]) && $attributes[ $a ] === $fromName) { - $compiler->trigger_template_error( - "'{$a}' and 'from' may not have same variable name '{$fromName}'", - null, - true - ); - } - } - } - $itemVar = "\$_smarty_tpl->tpl_vars['{$item}']"; - $local = '$__foreach_' . $attributes[ 'item' ] . '_' . $this->counter++ . '_'; - // search for used tag attributes - $itemAttr = array(); - $namedAttr = array(); - $this->scanForProperties($attributes, $compiler); - if (!empty($this->matchResults[ 'item' ])) { - $itemAttr = $this->matchResults[ 'item' ]; - } - if (!empty($this->matchResults[ 'named' ])) { - $namedAttr = $this->matchResults[ 'named' ]; - } - if (isset($_attr[ 'properties' ]) && preg_match_all('/[\'](.*?)[\']/', $_attr[ 'properties' ], $match)) { - foreach ($match[ 1 ] as $prop) { - if (in_array($prop, $this->itemProperties)) { - $itemAttr[ $prop ] = true; - } else { - $compiler->trigger_template_error("Invalid property '{$prop}'", null, true); - } - } - if ($this->isNamed) { - foreach ($match[ 1 ] as $prop) { - if (in_array($prop, $this->nameProperties)) { - $nameAttr[ $prop ] = true; - } else { - $compiler->trigger_template_error("Invalid property '{$prop}'", null, true); - } - } - } - } - if (isset($itemAttr[ 'first' ])) { - $itemAttr[ 'index' ] = true; - } - if (isset($namedAttr[ 'first' ])) { - $namedAttr[ 'index' ] = true; - } - if (isset($namedAttr[ 'last' ])) { - $namedAttr[ 'iteration' ] = true; - $namedAttr[ 'total' ] = true; - } - if (isset($itemAttr[ 'last' ])) { - $itemAttr[ 'iteration' ] = true; - $itemAttr[ 'total' ] = true; - } - if (isset($namedAttr[ 'show' ])) { - $namedAttr[ 'total' ] = true; - } - if (isset($itemAttr[ 'show' ])) { - $itemAttr[ 'total' ] = true; - } - $keyTerm = ''; - if (isset($attributes[ 'key' ])) { - $keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => "; - } - if (isset($itemAttr[ 'key' ])) { - $keyTerm = "{$itemVar}->key => "; - } - if ($this->isNamed) { - $foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']"; - } - $needTotal = isset($itemAttr[ 'total' ]); - // Register tag - $this->openTag( - $compiler, - 'foreach', - array('foreach', $compiler->nocache, $local, $itemVar, empty($itemAttr) ? 1 : 2) - ); - // maybe nocache because of nocache variables - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - // generate output code - $output = "<?php\n"; - $output .= "\$_from = \$_smarty_tpl->smarty->ext->_foreach->init(\$_smarty_tpl, $from, " . - var_export($item, true); - if ($name || $needTotal || $key) { - $output .= ', ' . var_export($needTotal, true); - } - if ($name || $key) { - $output .= ', ' . var_export($key, true); - } - if ($name) { - $output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true); - } - $output .= ");\n"; - if (isset($itemAttr[ 'show' ])) { - $output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n"; - } - if (isset($itemAttr[ 'iteration' ])) { - $output .= "{$itemVar}->iteration = 0;\n"; - } - if (isset($itemAttr[ 'index' ])) { - $output .= "{$itemVar}->index = -1;\n"; - } - $output .= "{$itemVar}->do_else = true;\n"; - $output .= "if (\$_from !== null) foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n"; - $output .= "{$itemVar}->do_else = false;\n"; - if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) { - $output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n"; - } - if (isset($itemAttr[ 'iteration' ])) { - $output .= "{$itemVar}->iteration++;\n"; - } - if (isset($itemAttr[ 'index' ])) { - $output .= "{$itemVar}->index++;\n"; - } - if (isset($itemAttr[ 'first' ])) { - $output .= "{$itemVar}->first = !{$itemVar}->index;\n"; - } - if (isset($itemAttr[ 'last' ])) { - $output .= "{$itemVar}->last = {$itemVar}->iteration === {$itemVar}->total;\n"; - } - if (isset($foreachVar)) { - if (isset($namedAttr[ 'iteration' ])) { - $output .= "{$foreachVar}->value['iteration']++;\n"; - } - if (isset($namedAttr[ 'index' ])) { - $output .= "{$foreachVar}->value['index']++;\n"; - } - if (isset($namedAttr[ 'first' ])) { - $output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n"; - } - if (isset($namedAttr[ 'last' ])) { - $output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] === {$foreachVar}->value['total'];\n"; - } - } - if (!empty($itemAttr)) { - $output .= "{$local}saved = {$itemVar};\n"; - } - $output .= '?>'; - return $output; - } - - /** - * Compiles code for to restore saved template variables - * - * @param int $levels number of levels to restore - * - * @return string compiled code - */ - public function compileRestore($levels) - { - return "\$_smarty_tpl->smarty->ext->_foreach->restore(\$_smarty_tpl, {$levels});"; - } -} - -/** - * Smarty Internal Plugin Compile Foreachelse Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {foreachelse} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - list($openTag, $nocache, $local, $itemVar, $restore) = $this->closeTag($compiler, array('foreach')); - $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $itemVar, 0)); - $output = "<?php\n"; - if ($restore === 2) { - $output .= "{$itemVar} = {$local}saved;\n"; - } - $output .= "}\nif ({$itemVar}->do_else) {\n?>"; - return $output; - } -} - -/** - * Smarty Internal Plugin Compile Foreachclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/foreach} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $compiler->loopNesting--; - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - list( - $openTag, $compiler->nocache, $local, $itemVar, $restore - ) = $this->closeTag($compiler, array('foreach', 'foreachelse')); - $output = "<?php\n"; - if ($restore === 2) { - $output .= "{$itemVar} = {$local}saved;\n"; - } - $output .= "}\n"; - /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */ - $foreachCompiler = $compiler->getTagCompiler('foreach'); - $output .= $foreachCompiler->compileRestore(1); - $output .= "?>"; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_function.php b/libs/sysplugins/smarty_internal_compile_function.php deleted file mode 100644 index b05a82b7..00000000 --- a/libs/sysplugins/smarty_internal_compile_function.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Function - * Compiles the {function} {/function} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Function Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Compiles code for the {function} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return bool true - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - if ($_attr[ 'nocache' ] === true) { - $compiler->trigger_template_error('nocache option not allowed', null, true); - } - unset($_attr[ 'nocache' ]); - $_name = trim($_attr[ 'name' ], '\'"'); - - if (!preg_match('/^[a-zA-Z0-9_\x80-\xff]+$/', $_name)) { - $compiler->trigger_template_error("Function name contains invalid characters: {$_name}", null, true); - } - - $compiler->parent_compiler->tpl_function[ $_name ] = array(); - $save = array( - $_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code, - $compiler->template->caching - ); - $this->openTag($compiler, 'function', $save); - // Init temporary context - $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); - $compiler->template->compiled->has_nocache_code = false; - $compiler->saveRequiredPlugins(true); - return true; - } -} - -/** - * Smarty Internal Plugin Compile Functionclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase -{ - /** - * Compiler object - * - * @var object - */ - private $compiler = null; - - /** - * Compiles code for the {/function} tag - * - * @param array $args array with attributes from parser - * @param object|\Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return bool true - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $this->compiler = $compiler; - $saved_data = $this->closeTag($compiler, array('function')); - $_attr = $saved_data[ 0 ]; - $_name = trim($_attr[ 'name' ], '\'"'); - $compiler->parent_compiler->tpl_function[ $_name ][ 'compiled_filepath' ] = - $compiler->parent_compiler->template->compiled->filepath; - $compiler->parent_compiler->tpl_function[ $_name ][ 'uid' ] = $compiler->template->source->uid; - $_parameter = $_attr; - unset($_parameter[ 'name' ]); - // default parameter - $_paramsArray = array(); - foreach ($_parameter as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - if (!empty($_paramsArray)) { - $_params = 'array(' . implode(',', $_paramsArray) . ')'; - $_paramsCode = "\$params = array_merge($_params, \$params);\n"; - } else { - $_paramsCode = ''; - } - $_functionCode = $compiler->parser->current_buffer; - // setup buffer for template function code - $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); - $_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}"; - $_funcNameCaching = $_funcName . '_nocache'; - if ($compiler->template->compiled->has_nocache_code) { - $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching; - $output = "<?php\n"; - $output .= $compiler->cStyleComment(" {$_funcNameCaching} ") . "\n"; - $output .= "if (!function_exists('{$_funcNameCaching}')) {\n"; - $output .= "function {$_funcNameCaching} (Smarty_Internal_Template \$_smarty_tpl,\$params) {\n"; - $output .= "ob_start();\n"; - $output .= $compiler->compileRequiredPlugins(); - $output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n"; - $output .= $_paramsCode; - $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n"; - $output .= "\$params = var_export(\$params, true);\n"; - $output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php "; - $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->saveTemplateVariables(\\\$_smarty_tpl, '{$_name}');\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value, \\\$_smarty_tpl->isRenderingCache);\n}\n?>"; - $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";?>"; - $compiler->parser->current_buffer->append_subtree( - $compiler->parser, - new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $output - ) - ); - $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode); - $output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php "; - $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n"; - $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>"; - $output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash ?? '', ob_get_clean());\n"; - $output .= "}\n}\n"; - $output .= $compiler->cStyleComment("/ {$_funcName}_nocache ") . "\n\n"; - $output .= "?>\n"; - $compiler->parser->current_buffer->append_subtree( - $compiler->parser, - new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $output - ) - ); - $_functionCode = new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - preg_replace_callback( - "/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", - array($this, 'removeNocache'), - $_functionCode->to_smarty_php($compiler->parser) - ) - ); - } - $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName; - $output = "<?php\n"; - $output .= $compiler->cStyleComment(" {$_funcName} ") . "\n"; - $output .= "if (!function_exists('{$_funcName}')) {\n"; - $output .= "function {$_funcName}(Smarty_Internal_Template \$_smarty_tpl,\$params) {\n"; - $output .= $_paramsCode; - $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n"; - $output .= $compiler->compileCheckPlugins(array_merge($compiler->required_plugins[ 'compiled' ], - $compiler->required_plugins[ 'nocache' ])); - $output .= "?>\n"; - $compiler->parser->current_buffer->append_subtree( - $compiler->parser, - new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $output - ) - ); - $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode); - $output = "<?php\n}}\n"; - $output .= $compiler->cStyleComment("/ {$_funcName} ") . "\n\n"; - $output .= "?>\n"; - $compiler->parser->current_buffer->append_subtree( - $compiler->parser, - new Smarty_Internal_ParseTree_Tag( - $compiler->parser, - $output - ) - ); - $compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser); - // restore old buffer - $compiler->parser->current_buffer = $saved_data[ 1 ]; - // restore old status - $compiler->restoreRequiredPlugins(); - $compiler->template->compiled->has_nocache_code = $saved_data[ 2 ]; - $compiler->template->caching = $saved_data[ 3 ]; - return true; - } - - /** - * Remove nocache code - * - * @param $match - * - * @return string - */ - public function removeNocache($match) - { - $code = - preg_replace( - "/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", - '', - $match[ 0 ] - ); - $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code); - return $code; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_if.php b/libs/sysplugins/smarty_internal_compile_if.php deleted file mode 100644 index df3dc3fa..00000000 --- a/libs/sysplugins/smarty_internal_compile_if.php +++ /dev/null @@ -1,207 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile If - * Compiles the {if} {else} {elseif} {/if} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile If Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {if} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $this->openTag($compiler, 'if', array(1, $compiler->nocache)); - // must whole block be nocache ? - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - if (!isset($parameter[ 'if condition' ])) { - $compiler->trigger_template_error('missing if condition', null, true); - } - if (is_array($parameter[ 'if condition' ])) { - if (is_array($parameter[ 'if condition' ][ 'var' ])) { - $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; - } else { - $var = $parameter[ 'if condition' ][ 'var' ]; - } - if ($compiler->nocache) { - // create nocache var to make it know for further compiling - $compiler->setNocacheInVariable($var); - } - $prefixVar = $compiler->getNewPrefixVariable(); - $_output = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n"; - $assignAttr = array(); - $assignAttr[][ 'value' ] = $prefixVar; - $assignCompiler = new Smarty_Internal_Compile_Assign(); - if (is_array($parameter[ 'if condition' ][ 'var' ])) { - $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; - $_output .= $assignCompiler->compile( - $assignAttr, - $compiler, - array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) - ); - } else { - $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; - $_output .= $assignCompiler->compile($assignAttr, $compiler, array()); - } - $_output .= "<?php if ({$prefixVar}) {?>"; - return $_output; - } else { - return "<?php if ({$parameter['if condition']}) {?>"; - } - } -} - -/** - * Smarty Internal Plugin Compile Else Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {else} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif')); - $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache)); - return '<?php } else { ?>'; - } -} - -/** - * Smarty Internal Plugin Compile ElseIf Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {elseif} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif')); - if (!isset($parameter[ 'if condition' ])) { - $compiler->trigger_template_error('missing elseif condition', null, true); - } - $assignCode = ''; - $var = ''; - if (is_array($parameter[ 'if condition' ])) { - $condition_by_assign = true; - if (is_array($parameter[ 'if condition' ][ 'var' ])) { - $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; - } else { - $var = $parameter[ 'if condition' ][ 'var' ]; - } - if ($compiler->nocache) { - // create nocache var to make it know for further compiling - $compiler->setNocacheInVariable($var); - } - $prefixVar = $compiler->getNewPrefixVariable(); - $assignCode = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n"; - $assignCompiler = new Smarty_Internal_Compile_Assign(); - $assignAttr = array(); - $assignAttr[][ 'value' ] = $prefixVar; - if (is_array($parameter[ 'if condition' ][ 'var' ])) { - $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; - $assignCode .= $assignCompiler->compile( - $assignAttr, - $compiler, - array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) - ); - } else { - $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; - $assignCode .= $assignCompiler->compile($assignAttr, $compiler, array()); - } - } else { - $condition_by_assign = false; - } - $prefixCode = $compiler->getPrefixCode(); - if (empty($prefixCode)) { - if ($condition_by_assign) { - $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache)); - $_output = $compiler->appendCode("<?php } else {\n?>", $assignCode); - return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>"); - } else { - $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache)); - return "<?php } elseif ({$parameter['if condition']}) {?>"; - } - } else { - $_output = $compiler->appendCode("<?php } else {\n?>", $prefixCode); - $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache)); - if ($condition_by_assign) { - $_output = $compiler->appendCode($_output, $assignCode); - return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>"); - } else { - return $compiler->appendCode($_output, "<?php if ({$parameter['if condition']}) {?>"); - } - } - } -} - -/** - * Smarty Internal Plugin Compile Ifclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/if} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif')); - $tmp = ''; - for ($i = 0; $i < $nesting; $i++) { - $tmp .= '}'; - } - return "<?php {$tmp}?>"; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_include.php b/libs/sysplugins/smarty_internal_compile_include.php deleted file mode 100644 index bf62461b..00000000 --- a/libs/sysplugins/smarty_internal_compile_include.php +++ /dev/null @@ -1,347 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Include - * Compiles the {include} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Include Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase -{ - /** - * caching mode to create nocache code but no cache file - */ - const CACHING_NOCACHE_CODE = 9999; - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('file'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('file'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $option_flags = array('nocache', 'inline', 'caching'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Valid scope names - * - * @var array - */ - public $valid_scopes = array( - 'parent' => Smarty::SCOPE_PARENT, 'root' => Smarty::SCOPE_ROOT, - 'global' => Smarty::SCOPE_GLOBAL, 'tpl_root' => Smarty::SCOPE_TPL_ROOT, - 'smarty' => Smarty::SCOPE_SMARTY - ); - - /** - * Compiles code for the {include} tag - * - * @param array $args array with attributes from parser - * @param Smarty_Internal_SmartyTemplateCompiler $compiler compiler object - * - * @return string - * @throws \Exception - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler) - { - $uid = $t_hash = null; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $fullResourceName = $source_resource = $_attr[ 'file' ]; - $variable_template = false; - $cache_tpl = false; - // parse resource_name - if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) { - $type = !empty($match[ 3 ]) ? $match[ 3 ] : $compiler->template->smarty->default_resource_type; - $name = !empty($match[ 5 ]) ? $match[ 5 ] : $match[ 6 ]; - $handler = Smarty_Resource::load($compiler->smarty, $type); - if ($handler->recompiled || $handler->uncompiled) { - $variable_template = true; - } - if (!$variable_template) { - if ($type !== 'string') { - $fullResourceName = "{$type}:{$name}"; - $compiled = $compiler->parent_compiler->template->compiled; - if (isset($compiled->includes[ $fullResourceName ])) { - $compiled->includes[ $fullResourceName ]++; - $cache_tpl = true; - } else { - if ("{$compiler->template->source->type}:{$compiler->template->source->name}" == - $fullResourceName - ) { - // recursive call of current template - $compiled->includes[ $fullResourceName ] = 2; - $cache_tpl = true; - } else { - $compiled->includes[ $fullResourceName ] = 1; - } - } - $fullResourceName = $match[ 1 ] . $fullResourceName . $match[ 1 ]; - } - } - if (empty($match[ 5 ])) { - $variable_template = true; - } - } else { - $variable_template = true; - } - // scope setup - $_scope = $compiler->convertScope($_attr, $this->valid_scopes); - // set flag to cache subtemplate object when called within loop or template name is variable. - if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) { - $_cache_tpl = 'true'; - } else { - $_cache_tpl = 'false'; - } - // assume caching is off - $_caching = Smarty::CACHING_OFF; - $call_nocache = $compiler->tag_nocache || $compiler->nocache; - // caching was on and {include} is not in nocache mode - if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) { - $_caching = self::CACHING_NOCACHE_CODE; - } - // flag if included template code should be merged into caller - $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr[ 'inline' ] === true) && - !$compiler->template->source->handler->recompiled; - if ($merge_compiled_includes) { - // variable template name ? - if ($variable_template) { - $merge_compiled_includes = false; - } - // variable compile_id? - if (isset($_attr[ 'compile_id' ]) && $compiler->isVariable($_attr[ 'compile_id' ])) { - $merge_compiled_includes = false; - } - } - /* - * if the {include} tag provides individual parameter for caching or compile_id - * the subtemplate must not be included into the common cache file and is treated like - * a call in nocache mode. - * - */ - if ($_attr[ 'nocache' ] !== true && $_attr[ 'caching' ]) { - $_caching = $_new_caching = (int)$_attr[ 'caching' ]; - $call_nocache = true; - } else { - $_new_caching = Smarty::CACHING_LIFETIME_CURRENT; - } - if (isset($_attr[ 'cache_lifetime' ])) { - $_cache_lifetime = $_attr[ 'cache_lifetime' ]; - $call_nocache = true; - $_caching = $_new_caching; - } else { - $_cache_lifetime = '$_smarty_tpl->cache_lifetime'; - } - if (isset($_attr[ 'cache_id' ])) { - $_cache_id = $_attr[ 'cache_id' ]; - $call_nocache = true; - $_caching = $_new_caching; - } else { - $_cache_id = '$_smarty_tpl->cache_id'; - } - if (isset($_attr[ 'compile_id' ])) { - $_compile_id = $_attr[ 'compile_id' ]; - } else { - $_compile_id = '$_smarty_tpl->compile_id'; - } - // if subtemplate will be called in nocache mode do not merge - if ($compiler->template->caching && $call_nocache) { - $merge_compiled_includes = false; - } - // assign attribute - if (isset($_attr[ 'assign' ])) { - // output will be stored in a smarty variable instead of being displayed - if ($_assign = $compiler->getId($_attr[ 'assign' ])) { - $_assign = "'{$_assign}'"; - if ($compiler->tag_nocache || $compiler->nocache || $call_nocache) { - // create nocache var to make it know for further compiling - $compiler->setNocacheInVariable($_attr[ 'assign' ]); - } - } else { - $_assign = $_attr[ 'assign' ]; - } - } - $has_compiled_template = false; - if ($merge_compiled_includes) { - $c_id = isset($_attr[ 'compile_id' ]) ? $_attr[ 'compile_id' ] : $compiler->template->compile_id; - // we must observe different compile_id and caching - $t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching')); - $compiler->smarty->allow_ambiguous_resources = true; - /* @var Smarty_Internal_Template $tpl */ - $tpl = new $compiler->smarty->template_class( - trim($fullResourceName, '"\''), - $compiler->smarty, - $compiler->template, - $compiler->template->cache_id, - $c_id, - $_caching - ); - $uid = $tpl->source->type . $tpl->source->uid; - if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) { - $has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash); - } else { - $has_compiled_template = true; - } - unset($tpl); - } - // delete {include} standard attributes - unset($_attr[ 'file' ], $_attr[ 'assign' ], $_attr[ 'cache_id' ], $_attr[ 'compile_id' ], $_attr[ 'cache_lifetime' ], $_attr[ 'nocache' ], $_attr[ 'caching' ], $_attr[ 'scope' ], $_attr[ 'inline' ]); - // remaining attributes must be assigned as smarty variable - $_vars = 'array()'; - if (!empty($_attr)) { - $_pairs = array(); - // create variables - foreach ($_attr as $key => $value) { - $_pairs[] = "'$key'=>$value"; - } - $_vars = 'array(' . join(',', $_pairs) . ')'; - } - $update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache && - $_compile_id !== '$_smarty_tpl->compile_id'; - if ($has_compiled_template && !$call_nocache) { - $_output = "<?php\n"; - if ($update_compile_id) { - $_output .= $compiler->makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n"); - } - if (!empty($_attr) && $_caching === 9999 && $compiler->template->caching) { - $_vars_nc = "foreach ($_vars as \$ik => \$iv) {\n"; - $_vars_nc .= "\$_smarty_tpl->tpl_vars[\$ik] = new Smarty_Variable(\$iv);\n"; - $_vars_nc .= "}\n"; - $_output .= substr($compiler->processNocacheCode('<?php ' . $_vars_nc . "?>\n", true), 6, -3); - } - if (isset($_assign)) { - $_output .= "ob_start();\n"; - } - $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['func']}');\n"; - if (isset($_assign)) { - $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; - } - if ($update_compile_id) { - $_output .= $compiler->makeNocacheCode("\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n"); - } - $_output .= "?>"; - return $_output; - } - if ($call_nocache) { - $compiler->tag_nocache = true; - } - $_output = "<?php "; - if ($update_compile_id) { - $_output .= "\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n"; - } - // was there an assign attribute - if (isset($_assign)) { - $_output .= "ob_start();\n"; - } - $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n"; - if (isset($_assign)) { - $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; - } - if ($update_compile_id) { - $_output .= "\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n"; - } - $_output .= "?>"; - return $_output; - } - - /** - * Compile inline sub template - * - * @param \Smarty_Internal_SmartyTemplateCompiler $compiler - * @param \Smarty_Internal_Template $tpl - * @param string $t_hash - * - * @return bool - * @throws \Exception - * @throws \SmartyException - */ - public function compileInlineTemplate( - Smarty_Internal_SmartyTemplateCompiler $compiler, - Smarty_Internal_Template $tpl, - $t_hash - ) { - $uid = $tpl->source->type . $tpl->source->uid; - if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) { - $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] = $tpl->source->uid; - if (isset($compiler->template->inheritance)) { - $tpl->inheritance = clone $compiler->template->inheritance; - } - $tpl->compiled = new Smarty_Template_Compiled(); - $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash; - $tpl->loadCompiler(); - // save unique function name - $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] = - $tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true)); - // make sure whole chain gets compiled - $tpl->mustCompile = true; - $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] = - $tpl->compiled->nocache_hash; - if ($tpl->source->type === 'file') { - $sourceInfo = $tpl->source->filepath; - } else { - $basename = $tpl->source->handler->getBasename($tpl->source); - $sourceInfo = $tpl->source->type . ':' . - ($basename ? $basename : $tpl->source->name); - } - // get compiled code - $compiled_code = "<?php\n\n"; - $compiled_code .= $compiler->cStyleComment(" Start inline template \"{$sourceInfo}\" =============================") . "\n"; - $compiled_code .= "function {$tpl->compiled->unifunc} (Smarty_Internal_Template \$_smarty_tpl) {\n"; - $compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler); - $compiled_code .= "<?php\n"; - $compiled_code .= "}\n?>\n"; - $compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode); - $compiled_code .= "<?php\n\n"; - $compiled_code .= $compiler->cStyleComment(" End inline template \"{$sourceInfo}\" =============================") . "\n"; - $compiled_code .= '?>'; - unset($tpl->compiler); - if ($tpl->compiled->has_nocache_code) { - // replace nocache_hash - $compiled_code = - str_replace( - "{$tpl->compiled->nocache_hash}", - $compiler->template->compiled->nocache_hash, - $compiled_code - ); - $compiler->template->compiled->has_nocache_code = true; - } - $compiler->parent_compiler->mergedSubTemplatesCode[ $tpl->compiled->unifunc ] = $compiled_code; - return true; - } else { - return false; - } - } -} diff --git a/libs/sysplugins/smarty_internal_compile_insert.php b/libs/sysplugins/smarty_internal_compile_insert.php deleted file mode 100644 index 29031d91..00000000 --- a/libs/sysplugins/smarty_internal_compile_insert.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Insert - * Compiles the {insert} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Insert Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('name'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Compiles code for the {insert} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache); - if (!$nocacheParam) { - // do not compile as nocache code - $compiler->suppressNocacheProcessing = true; - } - $compiler->tag_nocache = true; - $_smarty_tpl = $compiler->template; - $_name = null; - $_script = null; - $_output = '<?php '; - // save possible attributes - eval('$_name = @' . $_attr[ 'name' ] . ';'); - if (isset($_attr[ 'assign' ])) { - // output will be stored in a smarty variable instead of being displayed - $_assign = $_attr[ 'assign' ]; - // create variable to make sure that the compiler knows about its nocache status - $var = trim($_attr[ 'assign' ], '\''); - if (isset($compiler->template->tpl_vars[ $var ])) { - $compiler->template->tpl_vars[ $var ]->nocache = true; - } else { - $compiler->template->tpl_vars[ $var ] = new Smarty_Variable(null, true); - } - } - if (isset($_attr[ 'script' ])) { - // script which must be included - $_function = "smarty_insert_{$_name}"; - $_smarty_tpl = $compiler->template; - $_filepath = false; - eval('$_script = @' . $_attr[ 'script' ] . ';'); - if (!isset($compiler->smarty->security_policy) && file_exists($_script)) { - $_filepath = $_script; - } else { - if (isset($compiler->smarty->security_policy)) { - $_dir = $compiler->smarty->security_policy->trusted_dir; - } else { - $_dir = null; - } - if (!empty($_dir)) { - foreach ((array)$_dir as $_script_dir) { - $_script_dir = rtrim($_script_dir ?? '', '/\\') . DIRECTORY_SEPARATOR; - if (file_exists($_script_dir . $_script)) { - $_filepath = $_script_dir . $_script; - break; - } - } - } - } - if ($_filepath === false) { - $compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true); - } - // code for script file loading - $_output .= "require_once '{$_filepath}' ;"; - include_once $_filepath; - if (!is_callable($_function)) { - $compiler->trigger_template_error( - " {insert} function '{$_function}' is not callable in script file '{$_script}'", - null, - true - ); - } - } else { - $_filepath = 'null'; - $_function = "insert_{$_name}"; - // function in PHP script ? - if (!is_callable($_function)) { - // try plugin - if (!$_function = $compiler->getPlugin($_name, 'insert')) { - $compiler->trigger_template_error( - "{insert} no function or plugin found for '{$_name}'", - null, - true - ); - } - } - } - // delete {insert} standard attributes - unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'script' ], $_attr[ 'nocache' ]); - // convert attributes into parameter array string - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - $_paramsArray[] = "'$_key' => $_value"; - } - $_params = 'array(' . implode(", ", $_paramsArray) . ')'; - // call insert - if (isset($_assign)) { - if ($_smarty_tpl->caching && !$nocacheParam) { - $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>"; - } else { - $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>"; - } - } else { - if ($_smarty_tpl->caching && !$nocacheParam) { - $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>"; - } else { - $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>"; - } - } - $compiler->template->compiled->has_nocache_code = true; - return $_output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_ldelim.php b/libs/sysplugins/smarty_internal_compile_ldelim.php deleted file mode 100644 index 5493d4ec..00000000 --- a/libs/sysplugins/smarty_internal_compile_ldelim.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Ldelim - * Compiles the {ldelim} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Ldelim Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {ldelim} tag - * This tag does output the left delimiter - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $_attr = $this->getAttributes($compiler, $args); - if ($_attr[ 'nocache' ] === true) { - $compiler->trigger_template_error('nocache option not allowed', null, true); - } - return $compiler->smarty->left_delimiter; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_make_nocache.php b/libs/sysplugins/smarty_internal_compile_make_nocache.php deleted file mode 100644 index 8a34ccd0..00000000 --- a/libs/sysplugins/smarty_internal_compile_make_nocache.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Make_Nocache - * Compiles the {make_nocache} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Make_Nocache Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Make_Nocache extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $option_flags = array(); - - /** - * Array of names of required attribute required by tag - * - * @var array - */ - public $required_attributes = array('var'); - - /** - * Shorttag attribute order defined by its names - * - * @var array - */ - public $shorttag_order = array('var'); - - /** - * Compiles code for the {make_nocache} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - if ($compiler->template->caching) { - $output = "<?php \$_smarty_tpl->smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n"; - $compiler->template->compiled->has_nocache_code = true; - $compiler->suppressNocacheProcessing = true; - return $output; - } else { - return true; - } - } -} diff --git a/libs/sysplugins/smarty_internal_compile_nocache.php b/libs/sysplugins/smarty_internal_compile_nocache.php deleted file mode 100644 index 12f64ed2..00000000 --- a/libs/sysplugins/smarty_internal_compile_nocache.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Nocache - * Compiles the {nocache} {/nocache} tags. - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Nocache Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase -{ - /** - * Array of names of valid option flags - * - * @var array - */ - public $option_flags = array(); - - /** - * Compiles code for the {nocache} tag - * This tag does not generate compiled output. It only sets a compiler flag. - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return bool - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $_attr = $this->getAttributes($compiler, $args); - $this->openTag($compiler, 'nocache', array($compiler->nocache)); - // enter nocache mode - $compiler->nocache = true; - // this tag does not return compiled code - $compiler->has_code = false; - return true; - } -} - -/** - * Smarty Internal Plugin Compile Nocacheclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/nocache} tag - * This tag does not generate compiled output. It only sets a compiler flag. - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return bool - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $_attr = $this->getAttributes($compiler, $args); - // leave nocache mode - list($compiler->nocache) = $this->closeTag($compiler, array('nocache')); - // this tag does not return compiled code - $compiler->has_code = false; - return true; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_parent.php b/libs/sysplugins/smarty_internal_compile_parent.php deleted file mode 100644 index ff23edf7..00000000 --- a/libs/sysplugins/smarty_internal_compile_parent.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * This file is part of Smarty. - * - * (c) 2015 Uwe Tews - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Smarty Internal Plugin Compile Parent Class - * - * @author Uwe Tews <uwe.tews@googlemail.com> - */ -class Smarty_Internal_Compile_Parent extends Smarty_Internal_Compile_Child -{ - /** - * Tag name - * - * @var string - */ - public $tag = 'parent'; - - /** - * Block type - * - * @var string - */ - public $blockType = 'Parent'; -} diff --git a/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/libs/sysplugins/smarty_internal_compile_private_block_plugin.php deleted file mode 100644 index 199a296c..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_block_plugin.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Block Plugin - * Compiles code for the execution of block plugin - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Block Plugin Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * nesting level - * - * @var int - */ - public $nesting = 0; - - /** - * Compiles code for the execution of block plugin - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * @param string $tag name of block plugin - * @param string $function PHP function name - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function = null) - { - if (!isset($tag[ 5 ]) || substr($tag, -5) !== 'close') { - // opening tag of block plugin - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $this->nesting++; - unset($_attr[ 'nocache' ]); - list($callback, $_paramsArray, $callable) = $this->setup($compiler, $_attr, $tag, $function); - $_params = 'array(' . implode(',', $_paramsArray) . ')'; - // compile code - $output = "<?php "; - if (is_array($callback)) { - $output .= "\$_block_plugin{$this->nesting} = isset({$callback[0]}) ? {$callback[0]} : null;\n"; - $callback = "\$_block_plugin{$this->nesting}{$callback[1]}"; - } - if (isset($callable)) { - $output .= "if (!is_callable({$callable})) {\nthrow new SmartyException('block tag \'{$tag}\' not callable or registered');\n}\n"; - } - $output .= "\$_smarty_tpl->smarty->_cache['_tag_stack'][] = array('{$tag}', {$_params});\n"; - $output .= "\$_block_repeat=true;\necho {$callback}({$_params}, null, \$_smarty_tpl, \$_block_repeat);\nwhile (\$_block_repeat) {\nob_start();?>"; - $this->openTag($compiler, $tag, array($_params, $compiler->nocache, $callback)); - // maybe nocache because of nocache variables or nocache plugin - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - } else { - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - // closing tag of block plugin, restore nocache - list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, -5)); - // compile code - if (!isset($parameter[ 'modifier_list' ])) { - $mod_pre = $mod_post = $mod_content = ''; - $mod_content2 = 'ob_get_clean()'; - } else { - $mod_content2 = "\$_block_content{$this->nesting}"; - $mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n"; - $mod_pre = "ob_start();\n"; - $mod_post = 'echo ' . $compiler->compileTag( - 'private_modifier', - array(), - array( - 'modifierlist' => $parameter[ 'modifier_list' ], - 'value' => 'ob_get_clean()' - ) - ) . ";\n"; - } - $output = - "<?php {$mod_content}\$_block_repeat=false;\n{$mod_pre}echo {$callback}({$_params}, {$mod_content2}, \$_smarty_tpl, \$_block_repeat);\n{$mod_post}}\n"; - $output .= 'array_pop($_smarty_tpl->smarty->_cache[\'_tag_stack\']);?>'; - } - return $output; - } - - /** - * Setup callback and parameter array - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param array $_attr attributes - * @param string $tag - * @param string $function - * - * @return array - */ - public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function) - { - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - return array($function, $_paramsArray, null); - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_foreachsection.php b/libs/sysplugins/smarty_internal_compile_private_foreachsection.php deleted file mode 100644 index 246350dc..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_foreachsection.php +++ /dev/null @@ -1,228 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile ForeachSection - * Shared methods for {foreach} {section} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile ForeachSection Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_CompileBase -{ - /** - * Name of this tag - * - * @var string - */ - public $tagName = ''; - - /** - * Valid properties of $smarty.xxx variable - * - * @var array - */ - public $nameProperties = array(); - - /** - * {section} tag has no item properties - * - * @var array - */ - public $itemProperties = null; - - /** - * {section} tag has always name attribute - * - * @var bool - */ - public $isNamed = true; - - /** - * @var array - */ - public $matchResults = array(); - - /** - * Preg search pattern - * - * @var string - */ - private $propertyPreg = ''; - - /** - * Offsets in preg match result - * - * @var array - */ - private $resultOffsets = array(); - - /** - * Start offset - * - * @var int - */ - private $startOffset = 0; - - /** - * Scan sources for used tag attributes - * - * @param array $attributes - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * - * @throws \SmartyException - */ - public function scanForProperties($attributes, Smarty_Internal_TemplateCompilerBase $compiler) - { - $this->propertyPreg = '~('; - $this->startOffset = 1; - $this->resultOffsets = array(); - $this->matchResults = array('named' => array(), 'item' => array()); - if (isset($attributes[ 'name' ])) { - $this->buildPropertyPreg(true, $attributes); - } - if (isset($this->itemProperties)) { - if ($this->isNamed) { - $this->propertyPreg .= '|'; - } - $this->buildPropertyPreg(false, $attributes); - } - $this->propertyPreg .= ')\W~i'; - // Template source - $this->matchTemplateSource($compiler); - // Parent template source - $this->matchParentTemplateSource($compiler); - // {block} source - $this->matchBlockSource($compiler); - } - - /** - * Build property preg string - * - * @param bool $named - * @param array $attributes - */ - public function buildPropertyPreg($named, $attributes) - { - if ($named) { - $this->resultOffsets[ 'named' ] = $this->startOffset = $this->startOffset + 3; - $this->propertyPreg .= "(([\$]smarty[.]{$this->tagName}[.]" . - ($this->tagName === 'section' ? "|[\[]\s*" : '') . - "){$attributes['name']}[.]("; - $properties = $this->nameProperties; - } else { - $this->resultOffsets[ 'item' ] = $this->startOffset = $this->startOffset + 2; - $this->propertyPreg .= "([\$]{$attributes['item']}[@]("; - $properties = $this->itemProperties; - } - $propName = reset($properties); - while ($propName) { - $this->propertyPreg .= "{$propName}"; - $propName = next($properties); - if ($propName) { - $this->propertyPreg .= '|'; - } - } - $this->propertyPreg .= '))'; - } - - /** - * Find matches in source string - * - * @param string $source - */ - public function matchProperty($source) - { - preg_match_all($this->propertyPreg, $source, $match); - foreach ($this->resultOffsets as $key => $offset) { - foreach ($match[ $offset ] as $m) { - if (!empty($m)) { - $this->matchResults[ $key ][ smarty_strtolower_ascii($m) ] = true; - } - } - } - } - - /** - * Find matches in template source - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - */ - public function matchTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler) - { - $this->matchProperty($compiler->parser->lex->data); - } - - /** - * Find matches in all parent template source - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * - * @throws \SmartyException - */ - public function matchParentTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler) - { - // search parent compiler template source - $nextCompiler = $compiler; - while ($nextCompiler !== $nextCompiler->parent_compiler) { - $nextCompiler = $nextCompiler->parent_compiler; - if ($compiler !== $nextCompiler) { - // get template source - $_content = $nextCompiler->template->source->getContent(); - if ($_content !== '') { - // run pre filter if required - if ((isset($nextCompiler->smarty->autoload_filters[ 'pre' ]) || - isset($nextCompiler->smarty->registered_filters[ 'pre' ])) - ) { - $_content = $nextCompiler->smarty->ext->_filterHandler->runFilter( - 'pre', - $_content, - $nextCompiler->template - ); - } - $this->matchProperty($_content); - } - } - } - } - - /** - * Find matches in {block} tag source - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - */ - public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler) - { - } - - /** - * Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - $tag = smarty_strtolower_ascii(trim($parameter[ 0 ], '"\'')); - $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false; - if (!$name) { - $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true); - } - $property = isset($parameter[ 2 ]) ? smarty_strtolower_ascii($compiler->getId($parameter[ 2 ])) : false; - if (!$property || !in_array($property, $this->nameProperties)) { - $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true); - } - $tagVar = "'__smarty_{$tag}_{$name}'"; - return "(isset(\$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}']) ? \$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}'] : null)"; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/libs/sysplugins/smarty_internal_compile_private_function_plugin.php deleted file mode 100644 index 05582342..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_function_plugin.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Function Plugin - * Compiles code for the execution of function plugin - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Function Plugin Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array(); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Compiles code for the execution of function plugin - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * @param string $tag name of function plugin - * @param string $function PHP function name - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - unset($_attr[ 'nocache' ]); - // convert attributes into parameter array string - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - $_params = 'array(' . implode(',', $_paramsArray) . ')'; - // compile code - $output = "{$function}({$_params},\$_smarty_tpl)"; - if (!empty($parameter[ 'modifierlist' ])) { - $output = $compiler->compileTag( - 'private_modifier', - array(), - array( - 'modifierlist' => $parameter[ 'modifierlist' ], - 'value' => $output - ) - ); - } - $output = "<?php echo {$output};?>\n"; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_modifier.php b/libs/sysplugins/smarty_internal_compile_private_modifier.php deleted file mode 100644 index aea082f0..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_modifier.php +++ /dev/null @@ -1,161 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Modifier - * Compiles code for modifier execution - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Modifier Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for modifier execution - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $output = $parameter[ 'value' ]; - // loop over list of modifiers - foreach ($parameter[ 'modifierlist' ] as $single_modifier) { - /* @var string $modifier */ - $modifier = $single_modifier[ 0 ]; - $single_modifier[ 0 ] = $output; - $params = implode(',', $single_modifier); - // check if we know already the type of modifier - if (isset($compiler->known_modifier_type[ $modifier ])) { - $modifier_types = array($compiler->known_modifier_type[ $modifier ]); - } else { - $modifier_types = array(1, 2, 3, 4, 5, 6); - } - foreach ($modifier_types as $type) { - switch ($type) { - case 1: - // registered modifier - if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) { - if (is_callable($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ])) { - $output = - sprintf( - 'call_user_func_array($_smarty_tpl->registered_plugins[ \'%s\' ][ %s ][ 0 ], array( %s ))', - Smarty::PLUGIN_MODIFIER, - var_export($modifier, true), - $params - ); - $compiler->known_modifier_type[ $modifier ] = $type; - break 2; - } - } - break; - case 2: - // registered modifier compiler - if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) { - $output = - call_user_func( - $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ], - $single_modifier, - $compiler->smarty - ); - $compiler->known_modifier_type[ $modifier ] = $type; - break 2; - } - break; - case 3: - // modifiercompiler plugin - if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) { - // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) - || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) - ) { - $plugin = 'smarty_modifiercompiler_' . $modifier; - $output = $plugin($single_modifier, $compiler); - } - $compiler->known_modifier_type[ $modifier ] = $type; - break 2; - } - break; - case 4: - // modifier plugin - if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) { - // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) - || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) - ) { - $output = "{$function}({$params})"; - } - $compiler->known_modifier_type[ $modifier ] = $type; - break 2; - } - break; - case 5: - // PHP function - if (is_callable($modifier)) { - // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) - || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler) - ) { - trigger_error('Using php-function "' . $modifier . '" as a modifier is deprecated and will be ' . - 'removed in a future release. Use Smarty::registerPlugin to explicitly register ' . - 'a custom modifier.', E_USER_DEPRECATED); - $output = "{$modifier}({$params})"; - } - $compiler->known_modifier_type[ $modifier ] = $type; - break 2; - } - break; - case 6: - // default plugin handler - if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ]) - || (is_callable($compiler->smarty->default_plugin_handler_func) - && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER)) - ) { - $function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ]; - // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) - || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) - ) { - if (!is_array($function)) { - $output = "{$function}({$params})"; - } else { - if (is_object($function[ 0 ])) { - $output = $function[ 0 ] . '->' . $function[ 1 ] . '(' . $params . ')'; - } else { - $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')'; - } - } - } - if (isset($compiler->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) - || - isset($compiler->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) - ) { - // was a plugin - $compiler->known_modifier_type[ $modifier ] = 4; - } else { - $compiler->known_modifier_type[ $modifier ] = $type; - } - break 2; - } - } - } - if (!isset($compiler->known_modifier_type[ $modifier ])) { - $compiler->trigger_template_error("unknown modifier '{$modifier}'", null, true); - } - } - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/libs/sysplugins/smarty_internal_compile_private_object_block_function.php deleted file mode 100644 index baac51b2..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_object_block_function.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Object Block Function - * Compiles code for registered objects as block function - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Object Block Function Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_Compile_Private_Block_Plugin -{ - /** - * Setup callback and parameter array - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param array $_attr attributes - * @param string $tag - * @param string $method - * - * @return array - */ - public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $method) - { - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - $callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}"); - return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')"); - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_object_function.php b/libs/sysplugins/smarty_internal_compile_private_object_function.php deleted file mode 100644 index 2a763c6e..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_object_function.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Object Function - * Compiles code for registered objects as function - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Object Function Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Compiles code for the execution of function plugin - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * @param string $tag name of function - * @param string $method name of method to call - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - unset($_attr[ 'nocache' ]); - $_assign = null; - if (isset($_attr[ 'assign' ])) { - $_assign = $_attr[ 'assign' ]; - unset($_attr[ 'assign' ]); - } - // method or property ? - if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) { - // convert attributes into parameter array string - if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) { - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - $_params = 'array(' . implode(',', $_paramsArray) . ')'; - $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)"; - } else { - $_params = implode(',', $_attr); - $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})"; - } - } else { - // object property - $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}"; - } - if (!empty($parameter[ 'modifierlist' ])) { - $output = $compiler->compileTag( - 'private_modifier', - array(), - array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output) - ); - } - if (empty($_assign)) { - return "<?php echo {$output};?>\n"; - } else { - return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n"; - } - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/libs/sysplugins/smarty_internal_compile_private_print_expression.php deleted file mode 100644 index 96bd3724..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_print_expression.php +++ /dev/null @@ -1,161 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Print Expression - * Compiles any tag which will output an expression or variable - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Print Expression Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('assign'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $option_flags = array('nocache', 'nofilter'); - - /** - * Compiles code for generating output from any expression - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $output = $parameter[ 'value' ]; - // tag modifier - if (!empty($parameter[ 'modifierlist' ])) { - $output = $compiler->compileTag( - 'private_modifier', - array(), - array( - 'modifierlist' => $parameter[ 'modifierlist' ], - 'value' => $output - ) - ); - } - if (isset($_attr[ 'assign' ])) { - // assign output to variable - return "<?php \$_smarty_tpl->assign({$_attr['assign']},{$output});?>"; - } else { - // display value - if (!$_attr[ 'nofilter' ]) { - // default modifier - if (!empty($compiler->smarty->default_modifiers)) { - if (empty($compiler->default_modifier_list)) { - $modifierlist = array(); - foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) { - preg_match_all( - '/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', - $single_default_modifier, - $mod_array - ); - for ($i = 0, $count = count($mod_array[ 0 ]); $i < $count; $i++) { - if ($mod_array[ 0 ][ $i ] !== ':') { - $modifierlist[ $key ][] = $mod_array[ 0 ][ $i ]; - } - } - } - $compiler->default_modifier_list = $modifierlist; - } - $output = $compiler->compileTag( - 'private_modifier', - array(), - array( - 'modifierlist' => $compiler->default_modifier_list, - 'value' => $output - ) - ); - } - // autoescape html - if ($compiler->template->smarty->escape_html) { - $output = "htmlspecialchars((string) {$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')"; - } - // loop over registered filters - if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) { - foreach ($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ] as $key => - $function) { - if (!is_array($function)) { - $output = "{$function}({$output},\$_smarty_tpl)"; - } elseif (is_object($function[ 0 ])) { - $output = - "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)"; - } else { - $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)"; - } - } - } - // auto loaded filters - if (isset($compiler->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ])) { - foreach ((array)$compiler->template->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ] as $name) { - $result = $this->compile_variable_filter($compiler, $name, $output); - if ($result !== false) { - $output = $result; - } else { - // not found, throw exception - throw new SmartyException("Unable to load variable filter '{$name}'"); - } - } - } - foreach ($compiler->variable_filters as $filter) { - if (count($filter) === 1 - && ($result = $this->compile_variable_filter($compiler, $filter[ 0 ], $output)) !== false - ) { - $output = $result; - } else { - $output = $compiler->compileTag( - 'private_modifier', - array(), - array('modifierlist' => array($filter), 'value' => $output) - ); - } - } - } - $output = "<?php echo {$output};?>\n"; - } - return $output; - } - - /** - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param string $name name of variable filter - * @param string $output embedded output - * - * @return string - * @throws \SmartyException - */ - private function compile_variable_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output) - { - $function = $compiler->getPlugin($name, 'variablefilter'); - if ($function) { - return "{$function}({$output},\$_smarty_tpl)"; - } else { - // not found - return false; - } - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/libs/sysplugins/smarty_internal_compile_private_registered_block.php deleted file mode 100644 index 0f818d1b..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_registered_block.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Registered Block - * Compiles code for the execution of a registered block function - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Registered Block Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_Compile_Private_Block_Plugin -{ - /** - * Setup callback, parameter array and nocache mode - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param array $_attr attributes - * @param string $tag - * @param null $function - * - * @return array - */ - public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function) - { - if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) { - $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ]; - $callback = $tag_info[ 0 ]; - if (is_array($callback)) { - if (is_object($callback[ 0 ])) { - $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')"; - $callback = - array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}"); - } else { - $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')"; - $callback = - array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}"); - } - } else { - $callable = "\$_block_plugin{$this->nesting}"; - $callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", ''); - } - } else { - $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ]; - $callback = $tag_info[ 0 ]; - if (is_array($callback)) { - $callable = "array('{$callback[0]}', '{$callback[1]}')"; - $callback = "{$callback[1]}::{$callback[1]}"; - } else { - $callable = null; - } - } - $compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache; - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) { - $_value = str_replace('\'', "^#^", $_value); - $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - return array($callback, $_paramsArray, $callable); - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/libs/sysplugins/smarty_internal_compile_private_registered_function.php deleted file mode 100644 index 2591107d..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_registered_function.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Registered Function - * Compiles code for the execution of a registered function - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Registered Function Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('_any'); - - /** - * Compiles code for the execution of a registered function - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * @param string $tag name of function - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - unset($_attr[ 'nocache' ]); - if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) { - $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ]; - $is_registered = true; - } else { - $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ]; - $is_registered = false; - } - // not cacheable? - $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[ 1 ]; - // convert attributes into parameter array string - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) { - $_value = str_replace('\'', "^#^", $_value); - $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; - } - } - $_params = 'array(' . implode(',', $_paramsArray) . ')'; - // compile code - if ($is_registered) { - $output = - "call_user_func_array( \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0], array( {$_params},\$_smarty_tpl ) )"; - } else { - $function = $tag_info[ 0 ]; - if (!is_array($function)) { - $output = "{$function}({$_params},\$_smarty_tpl)"; - } else { - $output = "{$function[0]}::{$function[1]}({$_params},\$_smarty_tpl)"; - } - } - if (!empty($parameter[ 'modifierlist' ])) { - $output = $compiler->compileTag( - 'private_modifier', - array(), - array( - 'modifierlist' => $parameter[ 'modifierlist' ], - 'value' => $output - ) - ); - } - $output = "<?php echo {$output};?>\n"; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/libs/sysplugins/smarty_internal_compile_private_special_variable.php deleted file mode 100644 index 590cba5a..00000000 --- a/libs/sysplugins/smarty_internal_compile_private_special_variable.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Special Smarty Variable - * Compiles the special $smarty variables - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile special Smarty Variable Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the special $smarty variables - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param $parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2)); - $variable = smarty_strtolower_ascii($compiler->getId($_index[ 0 ])); - if ($variable === false) { - $compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true); - } - if (!isset($compiler->smarty->security_policy) - || $compiler->smarty->security_policy->isTrustedSpecialSmartyVar($variable, $compiler) - ) { - switch ($variable) { - case 'foreach': - case 'section': - if (!isset(Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ])) { - $class = 'Smarty_Internal_Compile_' . smarty_ucfirst_ascii($variable); - Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ] = new $class; - } - return Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ]->compileSpecialVariable( - array(), - $compiler, - $_index - ); - case 'capture': - if (class_exists('Smarty_Internal_Compile_Capture')) { - return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index); - } - return ''; - case 'now': - return 'time()'; - case 'cookies': - if (isset($compiler->smarty->security_policy) - && !$compiler->smarty->security_policy->allow_super_globals - ) { - $compiler->trigger_template_error("(secure mode) super globals not permitted"); - break; - } - $compiled_ref = '$_COOKIE'; - break; - case 'get': - case 'post': - case 'env': - case 'server': - case 'session': - case 'request': - if (isset($compiler->smarty->security_policy) - && !$compiler->smarty->security_policy->allow_super_globals - ) { - $compiler->trigger_template_error("(secure mode) super globals not permitted"); - break; - } - $compiled_ref = '$_' . smarty_strtoupper_ascii($variable); - break; - case 'template': - return 'basename($_smarty_tpl->source->filepath)'; - case 'template_object': - if (isset($compiler->smarty->security_policy)) { - $compiler->trigger_template_error("(secure mode) template_object not permitted"); - break; - } - return '$_smarty_tpl'; - case 'current_dir': - return 'dirname($_smarty_tpl->source->filepath)'; - case 'version': - return "Smarty::SMARTY_VERSION"; - case 'const': - if (isset($compiler->smarty->security_policy) - && !$compiler->smarty->security_policy->allow_constants - ) { - $compiler->trigger_template_error("(secure mode) constants not permitted"); - break; - } - if (strpos($_index[ 1 ], '$') === false && strpos($_index[ 1 ], '\'') === false) { - return "(defined('{$_index[1]}') ? constant('{$_index[1]}') : null)"; - } else { - return "(defined({$_index[1]}) ? constant({$_index[1]}) : null)"; - } - // no break - case 'config': - if (isset($_index[ 2 ])) { - return "(is_array(\$tmp = \$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])) ? \$tmp[$_index[2]] : null)"; - } else { - return "\$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])"; - } - // no break - case 'ldelim': - return "\$_smarty_tpl->smarty->left_delimiter"; - case 'rdelim': - return "\$_smarty_tpl->smarty->right_delimiter"; - default: - $compiler->trigger_template_error('$smarty.' . trim($_index[ 0 ], "'") . ' is not defined'); - break; - } - if (isset($_index[ 1 ])) { - array_shift($_index); - foreach ($_index as $_ind) { - $compiled_ref = $compiled_ref . "[$_ind]"; - } - } - return $compiled_ref; - } - } -} diff --git a/libs/sysplugins/smarty_internal_compile_rdelim.php b/libs/sysplugins/smarty_internal_compile_rdelim.php deleted file mode 100644 index 1cc340c1..00000000 --- a/libs/sysplugins/smarty_internal_compile_rdelim.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Rdelim - * Compiles the {rdelim} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Rdelim Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_Compile_Ldelim -{ - /** - * Compiles code for the {rdelim} tag - * This tag does output the right delimiter. - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - parent::compile($args, $compiler); - return $compiler->smarty->right_delimiter; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_section.php b/libs/sysplugins/smarty_internal_compile_section.php deleted file mode 100644 index 0dee2082..00000000 --- a/libs/sysplugins/smarty_internal_compile_section.php +++ /dev/null @@ -1,462 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Section - * Compiles the {section} {sectionelse} {/section} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Section Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_ForeachSection -{ - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $required_attributes = array('name', 'loop'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $shorttag_order = array('name', 'loop'); - - /** - * Attribute definition: Overwrites base class. - * - * @var array - * @see Smarty_Internal_CompileBase - */ - public $optional_attributes = array('start', 'step', 'max', 'show', 'properties'); - - /** - * counter - * - * @var int - */ - public $counter = 0; - - /** - * Name of this tag - * - * @var string - */ - public $tagName = 'section'; - - /** - * Valid properties of $smarty.section.name.xxx variable - * - * @var array - */ - public $nameProperties = array( - 'first', 'last', 'index', 'iteration', 'show', 'total', 'rownum', 'index_prev', - 'index_next', 'loop' - ); - - /** - * {section} tag has no item properties - * - * @var array - */ - public $itemProperties = null; - - /** - * {section} tag has always name attribute - * - * @var bool - */ - public $isNamed = true; - - /** - * Compiles code for the {section} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - * @throws \SmartyCompilerException - * @throws \SmartyException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $compiler->loopNesting++; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $attributes = array('name' => $compiler->getId($_attr[ 'name' ])); - unset($_attr[ 'name' ]); - foreach ($attributes as $a => $v) { - if ($v === false) { - $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true); - } - } - $local = "\$__section_{$attributes['name']}_" . $this->counter++ . '_'; - $sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']"; - $this->openTag($compiler, 'section', array('section', $compiler->nocache, $local, $sectionVar)); - // maybe nocache because of nocache variables - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - $initLocal = array(); - $initNamedProperty = array(); - $initFor = array(); - $incFor = array(); - $cmpFor = array(); - $propValue = array( - 'index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1, - 'iteration' => "{$local}iteration", - ); - $propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,); - // search for used tag attributes - $this->scanForProperties($attributes, $compiler); - if (!empty($this->matchResults[ 'named' ])) { - $namedAttr = $this->matchResults[ 'named' ]; - } - if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) { - foreach ($match[ 1 ] as $prop) { - if (in_array($prop, $this->nameProperties)) { - $namedAttr[ $prop ] = true; - } else { - $compiler->trigger_template_error("Invalid property '{$prop}'", null, true); - } - } - } - $namedAttr[ 'index' ] = true; - $output = "<?php\n"; - foreach ($_attr as $attr_name => $attr_value) { - switch ($attr_name) { - case 'loop': - if (is_numeric($attr_value)) { - $v = (int)$attr_value; - $t = 0; - } else { - $v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))"; - $t = 1; - } - if ($t === 1) { - $initLocal[ 'loop' ] = $v; - $v = "{$local}loop"; - } - break; - case 'show': - if (is_bool($attr_value)) { - $v = $attr_value ? 'true' : 'false'; - $t = 0; - } else { - $v = "(bool) $attr_value"; - $t = 3; - } - break; - case 'step': - if (is_numeric($attr_value)) { - $v = (int)$attr_value; - $v = ($v === 0) ? 1 : $v; - $t = 0; - break; - } - $initLocal[ 'step' ] = "((int)@$attr_value) === 0 ? 1 : (int)@$attr_value"; - $v = "{$local}step"; - $t = 2; - break; - case 'max': - case 'start': - if (is_numeric($attr_value)) { - $v = (int)$attr_value; - $t = 0; - break; - } - $v = "(int)@$attr_value"; - $t = 3; - break; - } - if ($t === 3 && $compiler->getId($attr_value)) { - $t = 1; - } - $propValue[ $attr_name ] = $v; - $propType[ $attr_name ] = $t; - } - if (isset($namedAttr[ 'step' ])) { - $initNamedProperty[ 'step' ] = $propValue[ 'step' ]; - } - if (isset($namedAttr[ 'iteration' ])) { - $propValue[ 'iteration' ] = "{$sectionVar}->value['iteration']"; - } - $incFor[ 'iteration' ] = "{$propValue['iteration']}++"; - $initFor[ 'iteration' ] = "{$propValue['iteration']} = 1"; - if ($propType[ 'step' ] === 0) { - if ($propValue[ 'step' ] === 1) { - $incFor[ 'index' ] = "{$sectionVar}->value['index']++"; - } elseif ($propValue[ 'step' ] > 1) { - $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}"; - } else { - $incFor[ 'index' ] = "{$sectionVar}->value['index'] -= " . -$propValue[ 'step' ]; - } - } else { - $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}"; - } - if (!isset($propValue[ 'max' ])) { - $propValue[ 'max' ] = $propValue[ 'loop' ]; - $propType[ 'max' ] = $propType[ 'loop' ]; - } elseif ($propType[ 'max' ] !== 0) { - $propValue[ 'max' ] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}"; - $propType[ 'max' ] = 1; - } else { - if ($propValue[ 'max' ] < 0) { - $propValue[ 'max' ] = $propValue[ 'loop' ]; - $propType[ 'max' ] = $propType[ 'loop' ]; - } - } - if (!isset($propValue[ 'start' ])) { - $start_code = - array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue[ 'loop' ], 5 => ' - 1'); - if ($propType[ 'loop' ] === 0) { - $start_code[ 5 ] = ''; - $start_code[ 4 ] = $propValue[ 'loop' ] - 1; - } - if ($propType[ 'step' ] === 0) { - if ($propValue[ 'step' ] > 0) { - $start_code = array(1 => '0'); - $propType[ 'start' ] = 0; - } else { - $start_code[ 1 ] = $start_code[ 2 ] = $start_code[ 3 ] = ''; - $propType[ 'start' ] = $propType[ 'loop' ]; - } - } else { - $propType[ 'start' ] = 1; - } - $propValue[ 'start' ] = join('', $start_code); - } else { - $start_code = - array( - 1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0', - 5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')', - 11 => ' : ', 12 => 'min(', 13 => $propValue[ 'start' ], 14 => ', ', - 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue[ 'loop' ], 17 => ' : ', - 18 => $propType[ 'loop' ] === 0 ? $propValue[ 'loop' ] - 1 : "{$propValue['loop']} - 1", - 19 => ')' - ); - if ($propType[ 'step' ] === 0) { - $start_code[ 3 ] = $start_code[ 5 ] = $start_code[ 15 ] = $start_code[ 17 ] = ''; - if ($propValue[ 'step' ] > 0) { - $start_code[ 6 ] = $start_code[ 18 ] = ''; - } else { - $start_code[ 4 ] = $start_code[ 16 ] = ''; - } - } - if ($propType[ 'start' ] === 0) { - if ($propType[ 'loop' ] === 0) { - $start_code[ 8 ] = $propValue[ 'start' ] + $propValue[ 'loop' ]; - } - $propType[ 'start' ] = $propType[ 'step' ] + $propType[ 'loop' ]; - $start_code[ 1 ] = ''; - if ($propValue[ 'start' ] < 0) { - for ($i = 11; $i <= 19; $i++) { - $start_code[ $i ] = ''; - } - if ($propType[ 'start' ] === 0) { - $start_code = array( - max( - $propValue[ 'step' ] > 0 ? 0 : -1, - $propValue[ 'start' ] + $propValue[ 'loop' ] - ) - ); - } - } else { - for ($i = 1; $i <= 11; $i++) { - $start_code[ $i ] = ''; - } - if ($propType[ 'start' ] === 0) { - $start_code = - array( - min( - $propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] : $propValue[ 'loop' ] - 1, - $propValue[ 'start' ] - ) - ); - } - } - } - $propValue[ 'start' ] = join('', $start_code); - } - if ($propType[ 'start' ] !== 0) { - $initLocal[ 'start' ] = $propValue[ 'start' ]; - $propValue[ 'start' ] = "{$local}start"; - } - $initFor[ 'index' ] = "{$sectionVar}->value['index'] = {$propValue['start']}"; - if (!isset($_attr[ 'start' ]) && !isset($_attr[ 'step' ]) && !isset($_attr[ 'max' ])) { - $propValue[ 'total' ] = $propValue[ 'loop' ]; - $propType[ 'total' ] = $propType[ 'loop' ]; - } else { - $propType[ 'total' ] = - $propType[ 'start' ] + $propType[ 'loop' ] + $propType[ 'step' ] + $propType[ 'max' ]; - if ($propType[ 'total' ] === 0) { - $propValue[ 'total' ] = - min( - ceil( - ($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] - $propValue[ 'start' ] : - (int)$propValue[ 'start' ] + 1) / abs($propValue[ 'step' ]) - ), - $propValue[ 'max' ] - ); - } else { - $total_code = array( - 1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ", - 5 => $propValue[ 'loop' ], 6 => ' - ', 7 => $propValue[ 'start' ], 8 => ' : ', - 9 => $propValue[ 'start' ], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(', - 14 => $propValue[ 'step' ], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})", - ); - if (!isset($propValue[ 'max' ])) { - $total_code[ 1 ] = $total_code[ 17 ] = ''; - } - if ($propType[ 'loop' ] + $propType[ 'start' ] === 0) { - $total_code[ 5 ] = $propValue[ 'loop' ] - $propValue[ 'start' ]; - $total_code[ 6 ] = $total_code[ 7 ] = ''; - } - if ($propType[ 'start' ] === 0) { - $total_code[ 9 ] = (int)$propValue[ 'start' ] + 1; - $total_code[ 10 ] = ''; - } - if ($propType[ 'step' ] === 0) { - $total_code[ 13 ] = $total_code[ 15 ] = ''; - if ($propValue[ 'step' ] === 1 || $propValue[ 'step' ] === -1) { - $total_code[ 2 ] = $total_code[ 12 ] = $total_code[ 14 ] = $total_code[ 16 ] = ''; - } elseif ($propValue[ 'step' ] < 0) { - $total_code[ 14 ] = -$propValue[ 'step' ]; - } - $total_code[ 4 ] = ''; - if ($propValue[ 'step' ] > 0) { - $total_code[ 8 ] = $total_code[ 9 ] = $total_code[ 10 ] = ''; - } else { - $total_code[ 5 ] = $total_code[ 6 ] = $total_code[ 7 ] = $total_code[ 8 ] = ''; - } - } - $propValue[ 'total' ] = join('', $total_code); - } - } - if (isset($namedAttr[ 'loop' ])) { - $initNamedProperty[ 'loop' ] = "'loop' => {$propValue['loop']}"; - } - if (isset($namedAttr[ 'total' ])) { - $initNamedProperty[ 'total' ] = "'total' => {$propValue['total']}"; - if ($propType[ 'total' ] > 0) { - $propValue[ 'total' ] = "{$sectionVar}->value['total']"; - } - } elseif ($propType[ 'total' ] > 0) { - $initLocal[ 'total' ] = $propValue[ 'total' ]; - $propValue[ 'total' ] = "{$local}total"; - } - $cmpFor[ 'iteration' ] = "{$propValue['iteration']} <= {$propValue['total']}"; - foreach ($initLocal as $key => $code) { - $output .= "{$local}{$key} = {$code};\n"; - } - $_vars = 'array(' . join(', ', $initNamedProperty) . ')'; - $output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n"; - $cond_code = "{$propValue['total']} !== 0"; - if ($propType[ 'total' ] === 0) { - if ($propValue[ 'total' ] === 0) { - $cond_code = 'false'; - } else { - $cond_code = 'true'; - } - } - if ($propType[ 'show' ] > 0) { - $output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n"; - $output .= "if ({$local}show) {\n"; - } elseif ($propValue[ 'show' ] === 'true') { - $output .= "if ({$cond_code}) {\n"; - } else { - $output .= "if (false) {\n"; - } - $jinit = join(', ', $initFor); - $jcmp = join(', ', $cmpFor); - $jinc = join(', ', $incFor); - $output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n"; - if (isset($namedAttr[ 'rownum' ])) { - $output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n"; - } - if (isset($namedAttr[ 'index_prev' ])) { - $output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n"; - } - if (isset($namedAttr[ 'index_next' ])) { - $output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n"; - } - if (isset($namedAttr[ 'first' ])) { - $output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} === 1);\n"; - } - if (isset($namedAttr[ 'last' ])) { - $output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} === {$propValue['total']});\n"; - } - $output .= '?>'; - return $output; - } -} - -/** - * Smarty Internal Plugin Compile Sectionelse Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {sectionelse} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - list($openTag, $nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section')); - $this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache, $local, $sectionVar)); - return "<?php }} else {\n ?>"; - } -} - -/** - * Smarty Internal Plugin Compile Sectionclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/section} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $compiler->loopNesting--; - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - list($openTag, $compiler->nocache, $local, $sectionVar) = - $this->closeTag($compiler, array('section', 'sectionelse')); - $output = "<?php\n"; - if ($openTag === 'sectionelse') { - $output .= "}\n"; - } else { - $output .= "}\n}\n"; - } - $output .= '?>'; - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_setfilter.php b/libs/sysplugins/smarty_internal_compile_setfilter.php deleted file mode 100644 index 70e2e2f9..00000000 --- a/libs/sysplugins/smarty_internal_compile_setfilter.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Setfilter - * Compiles code for setfilter tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Setfilter Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for setfilter tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - $compiler->variable_filter_stack[] = $compiler->variable_filters; - $compiler->variable_filters = $parameter[ 'modifier_list' ]; - // this tag does not return compiled code - $compiler->has_code = false; - return true; - } -} - -/** - * Smarty Internal Plugin Compile Setfilterclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/setfilter} tag - * This tag does not generate compiled output. It resets variable filter. - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $_attr = $this->getAttributes($compiler, $args); - // reset variable filter to previous state - if (count($compiler->variable_filter_stack)) { - $compiler->variable_filters = array_pop($compiler->variable_filter_stack); - } else { - $compiler->variable_filters = array(); - } - // this tag does not return compiled code - $compiler->has_code = false; - return true; - } -} diff --git a/libs/sysplugins/smarty_internal_compile_shared_inheritance.php b/libs/sysplugins/smarty_internal_compile_shared_inheritance.php deleted file mode 100644 index d90262e6..00000000 --- a/libs/sysplugins/smarty_internal_compile_shared_inheritance.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile Shared Inheritance - * Shared methods for {extends} and {block} tags - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Shared Inheritance Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase -{ - /** - * Compile inheritance initialization code as prefix - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param bool|false $initChildSequence if true force child template - */ - public static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false) - { - $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " . - var_export($initChildSequence, true) . ");\n?>\n"; - } - - /** - * Register post compile callback to compile inheritance initialization code - * - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * @param bool|false $initChildSequence if true force child template - */ - public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false) - { - if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) { - $compiler->registerPostCompileCallback( - array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'), - array($initChildSequence), - 'inheritanceInit', - $initChildSequence - ); - $compiler->_cache[ 'inheritanceInit' ] = true; - } - } -} diff --git a/libs/sysplugins/smarty_internal_compile_while.php b/libs/sysplugins/smarty_internal_compile_while.php deleted file mode 100644 index 5aa3a733..00000000 --- a/libs/sysplugins/smarty_internal_compile_while.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Compile While - * Compiles the {while} tag - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile While Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {while} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter - * - * @return string compiled code - * @throws \SmartyCompilerException - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) - { - $compiler->loopNesting++; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $this->openTag($compiler, 'while', $compiler->nocache); - if (!array_key_exists('if condition', $parameter)) { - $compiler->trigger_template_error('missing while condition', null, true); - } - // maybe nocache because of nocache variables - $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; - if (is_array($parameter[ 'if condition' ])) { - if ($compiler->nocache) { - // create nocache var to make it know for further compiling - if (is_array($parameter[ 'if condition' ][ 'var' ])) { - $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; - } else { - $var = $parameter[ 'if condition' ][ 'var' ]; - } - $compiler->setNocacheInVariable($var); - } - $prefixVar = $compiler->getNewPrefixVariable(); - $assignCompiler = new Smarty_Internal_Compile_Assign(); - $assignAttr = array(); - $assignAttr[][ 'value' ] = $prefixVar; - if (is_array($parameter[ 'if condition' ][ 'var' ])) { - $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; - $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>"; - $_output .= $assignCompiler->compile( - $assignAttr, - $compiler, - array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) - ); - } else { - $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; - $_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>"; - $_output .= $assignCompiler->compile($assignAttr, $compiler, array()); - } - return $_output; - } else { - return "<?php\n while ({$parameter['if condition']}) {?>"; - } - } -} - -/** - * Smarty Internal Plugin Compile Whileclose Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase -{ - /** - * Compiles code for the {/while} tag - * - * @param array $args array with attributes from parser - * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * - * @return string compiled code - */ - public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) - { - $compiler->loopNesting--; - // must endblock be nocache? - if ($compiler->nocache) { - $compiler->tag_nocache = true; - } - $compiler->nocache = $this->closeTag($compiler, array('while')); - return "<?php }?>\n"; - } -} diff --git a/libs/sysplugins/smarty_internal_compilebase.php b/libs/sysplugins/smarty_internal_compilebase.php deleted file mode 100644 index 2a32e437..00000000 --- a/libs/sysplugins/smarty_internal_compilebase.php +++ /dev/null @@ -1,203 +0,0 @@ -<?php -/** - * Smarty Internal Plugin CompileBase - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * This class does extend all internal compile plugins - * - * @package Smarty - * @subpackage Compiler - */ -abstract class Smarty_Internal_CompileBase -{ - /** - * Array of names of required attribute required by tag - * - * @var array - */ - public $required_attributes = array(); - - /** - * Array of names of optional attribute required by tag - * use array('_any') if there is no restriction of attributes names - * - * @var array - */ - public $optional_attributes = array(); - - /** - * Shorttag attribute order defined by its names - * - * @var array - */ - public $shorttag_order = array(); - - /** - * Array of names of valid option flags - * - * @var array - */ - public $option_flags = array('nocache'); - - /** - * Mapping array for boolean option value - * - * @var array - */ - public $optionMap = array(1 => true, 0 => false, 'true' => true, 'false' => false); - - /** - * Mapping array with attributes as key - * - * @var array - */ - public $mapCache = array(); - - /** - * 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 - * 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 - * as valid - * - * @param object $compiler compiler object - * @param array $attributes attributes applied to the tag - * - * @return array of mapped attributes for further processing - */ - public function getAttributes($compiler, $attributes) - { - $_indexed_attr = array(); - if (!isset($this->mapCache[ 'option' ])) { - $this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true); - } - foreach ($attributes as $key => $mixed) { - // shorthand ? - if (!is_array($mixed)) { - // option flag ? - if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) { - $_indexed_attr[ trim($mixed, '\'"') ] = true; - // shorthand attribute ? - } elseif (isset($this->shorttag_order[ $key ])) { - $_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed; - } else { - // too many shorthands - $compiler->trigger_template_error('too many shorthand attributes', null, true); - } - // named attribute - } else { - foreach ($mixed as $k => $v) { - // option flag? - if (isset($this->mapCache[ 'option' ][ $k ])) { - if (is_bool($v)) { - $_indexed_attr[ $k ] = $v; - } else { - if (is_string($v)) { - $v = trim($v, '\'" '); - } - if (isset($this->optionMap[ $v ])) { - $_indexed_attr[ $k ] = $this->optionMap[ $v ]; - } else { - $compiler->trigger_template_error( - "illegal value '" . var_export($v, true) . - "' for option flag '{$k}'", - null, - true - ); - } - } - // must be named attribute - } else { - $_indexed_attr[ $k ] = $v; - } - } - } - } - // check if all required attributes present - foreach ($this->required_attributes as $attr) { - if (!isset($_indexed_attr[ $attr ])) { - $compiler->trigger_template_error("missing '{$attr}' attribute", null, true); - } - } - // check for not allowed attributes - if ($this->optional_attributes !== array('_any')) { - if (!isset($this->mapCache[ 'all' ])) { - $this->mapCache[ 'all' ] = - array_fill_keys( - array_merge( - $this->required_attributes, - $this->optional_attributes, - $this->option_flags - ), - true - ); - } - foreach ($_indexed_attr as $key => $dummy) { - if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) { - $compiler->trigger_template_error("unexpected '{$key}' attribute", null, true); - } - } - } - // default 'false' for all option flags not set - foreach ($this->option_flags as $flag) { - if (!isset($_indexed_attr[ $flag ])) { - $_indexed_attr[ $flag ] = false; - } - } - if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) { - $compiler->tag_nocache = true; - } - return $_indexed_attr; - } - - /** - * Push opening tag name on stack - * Optionally additional data can be saved on stack - * - * @param object $compiler compiler object - * @param string $openTag the opening tag's name - * @param mixed $data optional data saved - */ - public function openTag($compiler, $openTag, $data = null) - { - array_push($compiler->_tag_stack, array($openTag, $data)); - } - - /** - * Pop closing tag - * Raise an error if this stack-top doesn't match with expected opening tags - * - * @param object $compiler compiler object - * @param array|string $expectedTag the expected opening tag names - * - * @return mixed any type the opening tag's name or saved data - */ - public function closeTag($compiler, $expectedTag) - { - if (count($compiler->_tag_stack) > 0) { - // get stacked info - list($_openTag, $_data) = array_pop($compiler->_tag_stack); - // open tag must match with the expected ones - if (in_array($_openTag, (array)$expectedTag)) { - if (is_null($_data)) { - // return opening tag - return $_openTag; - } else { - // return restored data - return $_data; - } - } - // wrong nesting of tags - $compiler->trigger_template_error("unclosed '{$compiler->smarty->left_delimiter}{$_openTag}{$compiler->smarty->right_delimiter}' tag"); - return; - } - // wrong nesting of tags - $compiler->trigger_template_error('unexpected closing tag', null, true); - return; - } -} diff --git a/libs/sysplugins/smarty_internal_config_file_compiler.php b/libs/sysplugins/smarty_internal_config_file_compiler.php deleted file mode 100644 index 469b9667..00000000 --- a/libs/sysplugins/smarty_internal_config_file_compiler.php +++ /dev/null @@ -1,211 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Config File Compiler - * This is the config file compiler class. It calls the lexer and parser to - * perform the compiling. - * - * @package Smarty - * @subpackage Config - * @author Uwe Tews - */ - -/** - * Main config file compiler class - * - * @package Smarty - * @subpackage Config - */ -class Smarty_Internal_Config_File_Compiler -{ - /** - * Lexer class name - * - * @var string - */ - public $lexer_class; - - /** - * Parser class name - * - * @var string - */ - public $parser_class; - - /** - * Lexer object - * - * @var object - */ - public $lex; - - /** - * Parser object - * - * @var object - */ - public $parser; - - /** - * Smarty object - * - * @var Smarty object - */ - public $smarty; - - /** - * Smarty object - * - * @var Smarty_Internal_Template object - */ - public $template; - - /** - * Compiled config data sections and variables - * - * @var array - */ - public $config_data = array(); - - /** - * compiled config data must always be written - * - * @var bool - */ - public $write_compiled_code = true; - - /** - * Initialize compiler - * - * @param string $lexer_class class name - * @param string $parser_class class name - * @param Smarty $smarty global instance - */ - public function __construct($lexer_class, $parser_class, Smarty $smarty) - { - $this->smarty = $smarty; - // get required plugins - $this->lexer_class = $lexer_class; - $this->parser_class = $parser_class; - $this->smarty = $smarty; - $this->config_data[ 'sections' ] = array(); - $this->config_data[ 'vars' ] = array(); - } - - /** - * Method to compile Smarty config source. - * - * @param Smarty_Internal_Template $template - * - * @return bool true if compiling succeeded, false if it failed - * @throws \SmartyException - */ - public function compileTemplate(Smarty_Internal_Template $template) - { - $this->template = $template; - $this->template->compiled->file_dependency[ $this->template->source->uid ] = - array( - $this->template->source->filepath, - $this->template->source->getTimeStamp(), - $this->template->source->type - ); - if ($this->smarty->debugging) { - if (!isset($this->smarty->_debug)) { - $this->smarty->_debug = new Smarty_Internal_Debug(); - } - $this->smarty->_debug->start_compile($this->template); - } - // init the lexer/parser to compile the config file - /* @var Smarty_Internal_ConfigFileLexer $this->lex */ - $this->lex = new $this->lexer_class( - str_replace( - array( - "\r\n", - "\r" - ), - "\n", - $template->source->getContent() - ) . "\n", - $this - ); - /* @var Smarty_Internal_ConfigFileParser $this->parser */ - $this->parser = new $this->parser_class($this->lex, $this); - if (function_exists('mb_internal_encoding') - && function_exists('ini_get') - && ((int)ini_get('mbstring.func_overload')) & 2 - ) { - $mbEncoding = mb_internal_encoding(); - mb_internal_encoding('ASCII'); - } else { - $mbEncoding = null; - } - if ($this->smarty->_parserdebug) { - $this->parser->PrintTrace(); - } - // get tokens from lexer and parse them - while ($this->lex->yylex()) { - if ($this->smarty->_parserdebug) { - echo "<br>Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n"; - } - $this->parser->doParse($this->lex->token, $this->lex->value); - } - // finish parsing process - $this->parser->doParse(0, 0); - if ($mbEncoding) { - mb_internal_encoding($mbEncoding); - } - if ($this->smarty->debugging) { - $this->smarty->_debug->end_compile($this->template); - } - // template header code - $template_header = sprintf( - "<?php /* Smarty version %s, created on %s\n compiled from '%s' */ ?>\n", - Smarty::SMARTY_VERSION, - date("Y-m-d H:i:s"), - str_replace('*/', '* /' , $this->template->source->filepath) - ); - $code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' . - var_export($this->config_data, true) . '); ?>'; - return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code); - } - - /** - * display compiler error messages without dying - * If parameter $args is empty it is a parser detected syntax error. - * In this case the parser is called to obtain information about expected tokens. - * If parameter $args contains a string this is used as error message - * - * @param string $args individual error message or null - * - * @throws SmartyCompilerException - */ - public function trigger_config_file_error($args = null) - { - // get config source line which has error - $line = $this->lex->line; - if (isset($args)) { - // $line--; - } - $match = preg_split("/\n/", $this->lex->data); - $error_text = - "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' "; - if (isset($args)) { - // individual error message - $error_text .= $args; - } else { - // expected token from parser - foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) { - $exp_token = $this->parser->yyTokenName[ $token ]; - if (isset($this->lex->smarty_token_names[ $exp_token ])) { - // token type from lexer - $expect[] = '"' . $this->lex->smarty_token_names[ $exp_token ] . '"'; - } else { - // otherwise internal token name - $expect[] = $this->parser->yyTokenName[ $token ]; - } - } - // output parser error message - $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect); - } - throw new SmartyCompilerException($error_text); - } -} diff --git a/libs/sysplugins/smarty_internal_configfilelexer.php b/libs/sysplugins/smarty_internal_configfilelexer.php deleted file mode 100644 index afb3efcb..00000000 --- a/libs/sysplugins/smarty_internal_configfilelexer.php +++ /dev/null @@ -1,739 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Configfilelexer - * - * This is the lexer to break the config file source into tokens - * - * @package Smarty - * @subpackage Config - * @author Uwe Tews - */ - -/** - * Smarty_Internal_Configfilelexer - * - * This is the config file lexer. - * It is generated from the smarty_internal_configfilelexer.plex file - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ -class Smarty_Internal_Configfilelexer -{ - const START = 1; - const VALUE = 2; - const NAKED_STRING_VALUE = 3; - const COMMENT = 4; - const SECTION = 5; - const TRIPPLE = 6; - - /** - * Source - * - * @var string - */ - public $data; - - /** - * Source length - * - * @var int - */ - public $dataLength = null; - - /** - * byte counter - * - * @var int - */ - public $counter; - - /** - * token number - * - * @var int - */ - public $token; - - /** - * token value - * - * @var string - */ - public $value; - - /** - * current line - * - * @var int - */ - public $line; - - /** - * state number - * - * @var int - */ - public $state = 1; - - /** - * Smarty object - * - * @var Smarty - */ - public $smarty = null; - - /** - * trace file - * - * @var resource - */ - public $yyTraceFILE; - - /** - * trace prompt - * - * @var string - */ - public $yyTracePrompt; - - /** - * state names - * - * @var array - */ - public $state_name = array( - 1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE' - ); - - /** - * token names - * - * @var array - */ - public $smarty_token_names = array( // Text for parser error messages - ); - - /** - * compiler object - * - * @var Smarty_Internal_Config_File_Compiler - */ - private $compiler = null; - - /** - * copy of config_booleanize - * - * @var bool - */ - private $configBooleanize = false; - - /** - * storage for assembled token patterns - * - * @var string - */ - private $yy_global_pattern1 = null; - - private $yy_global_pattern2 = null; - - private $yy_global_pattern3 = null; - - private $yy_global_pattern4 = null; - - private $yy_global_pattern5 = null; - - private $yy_global_pattern6 = null; - - private $_yy_state = 1; - - private $_yy_stack = array(); - - /** - * constructor - * - * @param string $data template source - * @param Smarty_Internal_Config_File_Compiler $compiler - */ - public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler) - { - $this->data = $data . "\n"; //now all lines are \n-terminated - $this->dataLength = strlen($data); - $this->counter = 0; - if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) { - $this->counter += strlen($match[ 0 ]); - } - $this->line = 1; - $this->compiler = $compiler; - $this->smarty = $compiler->smarty; - $this->configBooleanize = $this->smarty->config_booleanize; - } - - public function replace($input) - { - return $input; - } // end function - - public function PrintTrace() - { - $this->yyTraceFILE = fopen('php://output', 'w'); - $this->yyTracePrompt = '<br>'; - } - - public function yylex() - { - return $this->{'yylex' . $this->_yy_state}(); - } - - public function yypushstate($state) - { - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sState push %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state - ); - } - array_push($this->_yy_stack, $this->_yy_state); - $this->_yy_state = $state; - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%snew State %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state - ); - } - } - - public function yypopstate() - { - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sState pop %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state - ); - } - $this->_yy_state = array_pop($this->_yy_stack); - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%snew State %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state - ); - } - } - - public function yybegin($state) - { - $this->_yy_state = $state; - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sState set %s\n", - $this->yyTracePrompt, - isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state - ); - } - } - - public function yylex1() - { - if (!isset($this->yy_global_pattern1)) { - $this->yy_global_pattern1 = - $this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - do { - if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][ 1 ])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state START'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r1_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } - } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[ $this->counter ]); - } - break; - } while (true); - } - - public function yy_r1_1() - { - $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; - $this->yypushstate(self::COMMENT); - } - - public function yy_r1_2() - { - $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; - $this->yypushstate(self::SECTION); - } - - public function yy_r1_3() - { - $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; - } - - public function yy_r1_4() - { - $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; - $this->yypushstate(self::VALUE); - } // end function - - public function yy_r1_5() - { - return false; - } - - public function yy_r1_6() - { - $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; - } - - public function yy_r1_7() - { - $this->token = Smarty_Internal_Configfileparser::TPC_ID; - } - - public function yy_r1_8() - { - $this->token = Smarty_Internal_Configfileparser::TPC_OTHER; - } - - public function yylex2() - { - if (!isset($this->yy_global_pattern2)) { - $this->yy_global_pattern2 = - $this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - do { - if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][ 1 ])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state VALUE'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r2_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } - } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[ $this->counter ]); - } - break; - } while (true); - } - - public function yy_r2_1() - { - return false; - } - - public function yy_r2_2() - { - $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT; - $this->yypopstate(); - } - - public function yy_r2_3() - { - $this->token = Smarty_Internal_Configfileparser::TPC_INT; - $this->yypopstate(); - } - - public function yy_r2_4() - { - $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES; - $this->yypushstate(self::TRIPPLE); - } - - public function yy_r2_5() - { - $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING; - $this->yypopstate(); - } - - public function yy_r2_6() - { - $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING; - $this->yypopstate(); - } // end function - - public function yy_r2_7() - { - if (!$this->configBooleanize || - !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no'))) { - $this->yypopstate(); - $this->yypushstate(self::NAKED_STRING_VALUE); - return true; //reprocess in new state - } else { - $this->token = Smarty_Internal_Configfileparser::TPC_BOOL; - $this->yypopstate(); - } - } - - public function yy_r2_8() - { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; - $this->yypopstate(); - } - - public function yy_r2_9() - { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; - $this->value = ''; - $this->yypopstate(); - } // end function - - public function yylex3() - { - if (!isset($this->yy_global_pattern3)) { - $this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - do { - if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][ 1 ])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state NAKED_STRING_VALUE'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r3_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } - } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[ $this->counter ]); - } - break; - } while (true); - } - - public function yy_r3_1() - { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; - $this->yypopstate(); - } - - public function yylex4() - { - if (!isset($this->yy_global_pattern4)) { - $this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - do { - if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][ 1 ])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state COMMENT'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r4_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } - } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[ $this->counter ]); - } - break; - } while (true); - } - - public function yy_r4_1() - { - return false; - } - - public function yy_r4_2() - { - $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; - } // end function - - public function yy_r4_3() - { - $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; - $this->yypopstate(); - } - - public function yylex5() - { - if (!isset($this->yy_global_pattern5)) { - $this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - do { - if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][ 1 ])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state SECTION'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r5_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } - } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[ $this->counter ]); - } - break; - } while (true); - } - - public function yy_r5_1() - { - $this->token = Smarty_Internal_Configfileparser::TPC_DOT; - } - - public function yy_r5_2() - { - $this->token = Smarty_Internal_Configfileparser::TPC_SECTION; - $this->yypopstate(); - } // end function - - public function yylex6() - { - if (!isset($this->yy_global_pattern6)) { - $this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - do { - if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][ 1 ])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state TRIPPLE'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r6_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } - } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[ $this->counter ]); - } - break; - } while (true); - } - - public function yy_r6_1() - { - $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END; - $this->yypopstate(); - $this->yypushstate(self::START); - } - - public function yy_r6_2() - { - $to = strlen($this->data); - preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); - if (isset($match[ 0 ][ 1 ])) { - $to = $match[ 0 ][ 1 ]; - } else { - $this->compiler->trigger_config_file_error('missing or misspelled literal closing tag'); - } - $this->value = substr($this->data, $this->counter, $to - $this->counter); - $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT; - } -} diff --git a/libs/sysplugins/smarty_internal_configfileparser.php b/libs/sysplugins/smarty_internal_configfileparser.php deleted file mode 100644 index 36fdb76e..00000000 --- a/libs/sysplugins/smarty_internal_configfileparser.php +++ /dev/null @@ -1,1046 +0,0 @@ -<?php - -class TPC_yyStackEntry -{ - public $stateno; /* The state-number */ - public $major; /* The major token value. This is the code - ** number for the token at this stack level */ - public $minor; /* The user-supplied minor token value. This - ** is the value of the token */ -} - -// line 12 "../smarty/lexer/smarty_internal_configfileparser.y" - -/** - * Smarty Internal Plugin Configfileparse - * - * This is the config file parser. - * It is generated from the smarty_internal_configfileparser.y file - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ -class Smarty_Internal_Configfileparser -{ - // line 25 "../smarty/lexer/smarty_internal_configfileparser.y" - const TPC_OPENB = 1; - const TPC_SECTION = 2; - const TPC_CLOSEB = 3; - const TPC_DOT = 4; - const TPC_ID = 5; - const TPC_EQUAL = 6; - const TPC_FLOAT = 7; - const TPC_INT = 8; - const TPC_BOOL = 9; - const TPC_SINGLE_QUOTED_STRING = 10; - const TPC_DOUBLE_QUOTED_STRING = 11; - const TPC_TRIPPLE_QUOTES = 12; - const TPC_TRIPPLE_TEXT = 13; - const TPC_TRIPPLE_QUOTES_END = 14; - const TPC_NAKED_STRING = 15; - const TPC_OTHER = 16; - const TPC_NEWLINE = 17; - const TPC_COMMENTSTART = 18; - const YY_NO_ACTION = 60; - const YY_ACCEPT_ACTION = 59; - const YY_ERROR_ACTION = 58; - const YY_SZ_ACTTAB = 38; - const YY_SHIFT_USE_DFLT = -8; - const YY_SHIFT_MAX = 19; - const YY_REDUCE_USE_DFLT = -17; - const YY_REDUCE_MAX = 10; - const YYNOCODE = 29; - const YYSTACKDEPTH = 100; - const YYNSTATE = 36; - const YYNRULE = 22; - const YYERRORSYMBOL = 19; - const YYERRSYMDT = 'yy0'; - const YYFALLBACK = 0; - - public static $yy_action = array( - 32, 31, 30, 29, 35, 13, 19, 3, 24, 26, - 59, 9, 14, 1, 16, 25, 11, 28, 25, 11, - 17, 27, 34, 20, 18, 15, 23, 5, 6, 22, - 10, 8, 4, 12, 2, 33, 7, 21, - ); - - public static $yy_lookahead = array( - 7, 8, 9, 10, 11, 12, 5, 23, 15, 16, - 20, 21, 2, 23, 4, 17, 18, 14, 17, 18, - 13, 14, 25, 26, 15, 2, 17, 3, 3, 17, - 25, 25, 6, 1, 23, 27, 22, 24, - ); - - public static $yy_shift_ofst = array( - -8, 1, 1, 1, -7, -2, -2, 32, -8, -8, - -8, 9, 10, 7, 25, 24, 23, 3, 12, 26, - ); - - public static $yy_reduce_ofst = array( - -10, -3, -3, -3, 8, 6, 5, 13, 11, 14, - -16, - ); - - public static $yyExpectedTokens = array( - array(), - array(5, 17, 18,), - array(5, 17, 18,), - array(5, 17, 18,), - array(7, 8, 9, 10, 11, 12, 15, 16,), - array(17, 18,), - array(17, 18,), - array(1,), - array(), - array(), - array(), - array(15, 17,), - array(2, 4,), - array(13, 14,), - array(3,), - array(3,), - array(2,), - array(14,), - array(17,), - array(6,), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - ); - - public static $yy_default = array( - 44, 37, 41, 40, 58, 58, 58, 36, 44, 39, - 44, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 43, 38, 57, 56, 53, 55, 54, 52, 51, 49, - 48, 47, 46, 45, 42, 50, - ); - - public static $yyFallback = array(); - - public static $yyRuleName = array( - 'start ::= global_vars sections', - 'global_vars ::= var_list', - 'sections ::= sections section', - 'sections ::=', - 'section ::= OPENB SECTION CLOSEB newline var_list', - 'section ::= OPENB DOT SECTION CLOSEB newline var_list', - 'var_list ::= var_list newline', - 'var_list ::= var_list var', - 'var_list ::=', - 'var ::= ID EQUAL value', - 'value ::= FLOAT', - 'value ::= INT', - 'value ::= BOOL', - 'value ::= SINGLE_QUOTED_STRING', - 'value ::= DOUBLE_QUOTED_STRING', - 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END', - 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END', - 'value ::= NAKED_STRING', - 'value ::= OTHER', - 'newline ::= NEWLINE', - 'newline ::= COMMENTSTART NEWLINE', - 'newline ::= COMMENTSTART NAKED_STRING NEWLINE', - ); - - public static $yyRuleInfo = array( - array(0 => 20, 1 => 2), - array(0 => 21, 1 => 1), - array(0 => 22, 1 => 2), - array(0 => 22, 1 => 0), - array(0 => 24, 1 => 5), - array(0 => 24, 1 => 6), - array(0 => 23, 1 => 2), - array(0 => 23, 1 => 2), - array(0 => 23, 1 => 0), - array(0 => 26, 1 => 3), - array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), - array(0 => 27, 1 => 3), - array(0 => 27, 1 => 2), - array(0 => 27, 1 => 1), - array(0 => 27, 1 => 1), - array(0 => 25, 1 => 1), - array(0 => 25, 1 => 2), - array(0 => 25, 1 => 3), - ); - - public static $yyReduceMap = array( - 0 => 0, - 2 => 0, - 3 => 0, - 19 => 0, - 20 => 0, - 21 => 0, - 1 => 1, - 4 => 4, - 5 => 5, - 6 => 6, - 7 => 7, - 8 => 8, - 9 => 9, - 10 => 10, - 11 => 11, - 12 => 12, - 13 => 13, - 14 => 14, - 15 => 15, - 16 => 16, - 17 => 17, - 18 => 17, - ); - - /** - * helper map - * - * @var array - */ - private static $escapes_single = array( - '\\' => '\\', - '\'' => '\'' - ); - - /** - * result status - * - * @var bool - */ - public $successful = true; - - /** - * return value - * - * @var mixed - */ - public $retvalue = 0; - - /** - * @var - */ - public $yymajor; - - /** - * compiler object - * - * @var Smarty_Internal_Config_File_Compiler - */ - public $compiler = null; - - /** - * smarty object - * - * @var Smarty - */ - public $smarty = null; - - public $yyTraceFILE; - - public $yyTracePrompt; - - public $yyidx; - - public $yyerrcnt; - - public $yystack = array(); - - public $yyTokenName = array( - '$', 'OPENB', 'SECTION', 'CLOSEB', - 'DOT', 'ID', 'EQUAL', 'FLOAT', - 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', - 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING', - 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error', - 'start', 'global_vars', 'sections', 'var_list', - 'section', 'newline', 'var', 'value', - ); - - /** - * lexer object - * - * @var Smarty_Internal_Configfilelexer - */ - private $lex; - - /** - * internal error flag - * - * @var bool - */ - private $internalError = false; - - /** - * copy of config_overwrite property - * - * @var bool - */ - private $configOverwrite = false; - - /** - * copy of config_read_hidden property - * - * @var bool - */ - private $configReadHidden = false; - - private $_retvalue; - - /** - * constructor - * - * @param Smarty_Internal_Configfilelexer $lex - * @param Smarty_Internal_Config_File_Compiler $compiler - */ - public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler) - { - $this->lex = $lex; - $this->smarty = $compiler->smarty; - $this->compiler = $compiler; - $this->configOverwrite = $this->smarty->config_overwrite; - $this->configReadHidden = $this->smarty->config_read_hidden; - } - - public static function yy_destructor($yymajor, $yypminor) - { - switch ($yymajor) { - default: - break; /* If no destructor action specified: do nothing */ - } - } - - /** - * parse single quoted string - * remove outer quotes - * unescape inner quotes - * - * @param string $qstr - * - * @return string - */ - private static function parse_single_quoted_string($qstr) - { - $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes - $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE); - $str = ''; - foreach ($ss as $s) { - if (strlen($s) === 2 && $s[ 0 ] === '\\') { - if (isset(self::$escapes_single[ $s[ 1 ] ])) { - $s = self::$escapes_single[ $s[ 1 ] ]; - } - } - $str .= $s; - } - return $str; - } /* Index of top element in stack */ - /** - * parse double quoted string - * - * @param string $qstr - * - * @return string - */ - private static function parse_double_quoted_string($qstr) - { - $inner_str = substr($qstr, 1, strlen($qstr) - 2); - return stripcslashes($inner_str); - } /* Shifts left before out of the error */ - /** - * parse triple quoted string - * - * @param string $qstr - * - * @return string - */ - private static function parse_tripple_double_quoted_string($qstr) - { - return stripcslashes($qstr); - } /* The parser's stack */ - public function Trace($TraceFILE, $zTracePrompt) - { - if (!$TraceFILE) { - $zTracePrompt = 0; - } elseif (!$zTracePrompt) { - $TraceFILE = 0; - } - $this->yyTraceFILE = $TraceFILE; - $this->yyTracePrompt = $zTracePrompt; - } - - public function PrintTrace() - { - $this->yyTraceFILE = fopen('php://output', 'w'); - $this->yyTracePrompt = '<br>'; - } - - public function tokenName($tokenType) - { - if ($tokenType === 0) { - return 'End of Input'; - } - if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) { - return $this->yyTokenName[ $tokenType ]; - } else { - return 'Unknown'; - } - } - - public function yy_pop_parser_stack() - { - if (empty($this->yystack)) { - return; - } - $yytos = array_pop($this->yystack); - if ($this->yyTraceFILE && $this->yyidx >= 0) { - fwrite( - $this->yyTraceFILE, - $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . - "\n" - ); - } - $yymajor = $yytos->major; - self::yy_destructor($yymajor, $yytos->minor); - $this->yyidx--; - return $yymajor; - } - - public function __destruct() - { - while ($this->yystack !== array()) { - $this->yy_pop_parser_stack(); - } - if (is_resource($this->yyTraceFILE)) { - fclose($this->yyTraceFILE); - } - } - - public function yy_get_expected_tokens($token) - { - static $res3 = array(); - static $res4 = array(); - $state = $this->yystack[ $this->yyidx ]->stateno; - $expected = self::$yyExpectedTokens[ $state ]; - if (isset($res3[ $state ][ $token ])) { - if ($res3[ $state ][ $token ]) { - return $expected; - } - } else { - if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { - return $expected; - } - } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ === 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return array_unique($expected); - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; - $nextstate = $this->yy_find_reduce_action( - $this->yystack[ $this->yyidx ]->stateno, - self::$yyRuleInfo[ $yyruleno ][ 0 ] - ); - if (isset(self::$yyExpectedTokens[ $nextstate ])) { - $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]); - if (isset($res4[ $nextstate ][ $token ])) { - if ($res4[ $nextstate ][ $token ]) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return array_unique($expected); - } - } else { - if ($res4[ $nextstate ][ $token ] = - in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return array_unique($expected); - } - } - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new TPC_yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; - $this->yystack[ $this->yyidx ] = $x; - continue 2; - } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return array_unique($expected); - } elseif ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return $expected; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; - return array_unique($expected); - } - - public function yy_is_expected_token($token) - { - static $res = array(); - static $res2 = array(); - if ($token === 0) { - return true; // 0 is not part of this - } - $state = $this->yystack[ $this->yyidx ]->stateno; - if (isset($res[ $state ][ $token ])) { - if ($res[ $state ][ $token ]) { - return true; - } - } else { - if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { - return true; - } - } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ === 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return true; - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; - $nextstate = $this->yy_find_reduce_action( - $this->yystack[ $this->yyidx ]->stateno, - self::$yyRuleInfo[ $yyruleno ][ 0 ] - ); - if (isset($res2[ $nextstate ][ $token ])) { - if ($res2[ $nextstate ][ $token ]) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - } else { - if ($res2[ $nextstate ][ $token ] = - (isset(self::$yyExpectedTokens[ $nextstate ]) && - in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new TPC_yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; - $this->yystack[ $this->yyidx ] = $x; - continue 2; - } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - if (!$token) { - // end of input: this is valid - return true; - } - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return false; - } elseif ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return true; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - - public function yy_find_shift_action($iLookAhead) - { - $stateno = $this->yystack[ $this->yyidx ]->stateno; - /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ - if (!isset(self::$yy_shift_ofst[ $stateno ])) { - // no shift actions - return self::$yy_default[ $stateno ]; - } - $i = self::$yy_shift_ofst[ $stateno ]; - if ($i === self::YY_SHIFT_USE_DFLT) { - return self::$yy_default[ $stateno ]; - } - if ($iLookAhead === self::YYNOCODE) { - return self::YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[ $i ] != $iLookAhead) { - if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) - && ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' . - $this->yyTokenName[ $iLookAhead ] . ' => ' . - $this->yyTokenName[ $iFallback ] . "\n"); - } - return $this->yy_find_shift_action($iFallback); - } - return self::$yy_default[ $stateno ]; - } else { - return self::$yy_action[ $i ]; - } - } - - public function yy_find_reduce_action($stateno, $iLookAhead) - { - /* $stateno = $this->yystack[$this->yyidx]->stateno; */ - if (!isset(self::$yy_reduce_ofst[ $stateno ])) { - return self::$yy_default[ $stateno ]; - } - $i = self::$yy_reduce_ofst[ $stateno ]; - if ($i === self::YY_REDUCE_USE_DFLT) { - return self::$yy_default[ $stateno ]; - } - if ($iLookAhead === self::YYNOCODE) { - return self::YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[ $i ] != $iLookAhead) { - return self::$yy_default[ $stateno ]; - } else { - return self::$yy_action[ $i ]; - } - } - - public function yy_shift($yyNewState, $yyMajor, $yypMinor) - { - $this->yyidx++; - if ($this->yyidx >= self::YYSTACKDEPTH) { - $this->yyidx--; - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - // line 239 "../smarty/lexer/smarty_internal_configfileparser.y" - $this->internalError = true; - $this->compiler->trigger_config_file_error('Stack overflow in configfile parser'); - return; - } - $yytos = new TPC_yyStackEntry; - $yytos->stateno = $yyNewState; - $yytos->major = $yyMajor; - $yytos->minor = $yypMinor; - $this->yystack[] = $yytos; - if ($this->yyTraceFILE && $this->yyidx > 0) { - fprintf( - $this->yyTraceFILE, - "%sShift %d\n", - $this->yyTracePrompt, - $yyNewState - ); - fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); - for ($i = 1; $i <= $this->yyidx; $i++) { - fprintf( - $this->yyTraceFILE, - " %s", - $this->yyTokenName[ $this->yystack[ $i ]->major ] - ); - } - fwrite($this->yyTraceFILE, "\n"); - } - } - - public function yy_r0() - { - $this->_retvalue = null; - } - - public function yy_r1() - { - $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor); - $this->_retvalue = null; - } - - public function yy_r4() - { - $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); - $this->_retvalue = null; - } - - // line 245 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r5() - { - if ($this->configReadHidden) { - $this->add_section_vars( - $this->yystack[ $this->yyidx + -3 ]->minor, - $this->yystack[ $this->yyidx + 0 ]->minor - ); - } - $this->_retvalue = null; - } - - // line 250 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r6() - { - $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; - } - - // line 264 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r7() - { - $this->_retvalue = - array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor)); - } - - // line 269 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r8() - { - $this->_retvalue = array(); - } - - // line 277 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r9() - { - $this->_retvalue = - array( - 'key' => $this->yystack[ $this->yyidx + -2 ]->minor, - 'value' => $this->yystack[ $this->yyidx + 0 ]->minor - ); - } - - // line 281 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r10() - { - $this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor; - } - - // line 285 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r11() - { - $this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor; - } - - // line 291 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r12() - { - $this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor); - } - - // line 296 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r13() - { - $this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor); - } - - // line 300 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r14() - { - $this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor); - } - - // line 304 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r15() - { - $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor); - } - - // line 308 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r16() - { - $this->_retvalue = ''; - } - - // line 312 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_r17() - { - $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; - } - - // line 316 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_reduce($yyruleno) - { - if ($this->yyTraceFILE && $yyruleno >= 0 - && $yyruleno < count(self::$yyRuleName)) { - fprintf( - $this->yyTraceFILE, - "%sReduce (%d) [%s].\n", - $this->yyTracePrompt, - $yyruleno, - self::$yyRuleName[ $yyruleno ] - ); - } - $this->_retvalue = $yy_lefthand_side = null; - if (isset(self::$yyReduceMap[ $yyruleno ])) { - // call the action - $this->_retvalue = null; - $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}(); - $yy_lefthand_side = $this->_retvalue; - } - $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ]; - $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ]; - $this->yyidx -= $yysize; - for ($i = $yysize; $i; $i--) { - // pop all of the right-hand side parameters - array_pop($this->yystack); - } - $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto); - if ($yyact < self::YYNSTATE) { - if (!$this->yyTraceFILE && $yysize) { - $this->yyidx++; - $x = new TPC_yyStackEntry; - $x->stateno = $yyact; - $x->major = $yygoto; - $x->minor = $yy_lefthand_side; - $this->yystack[ $this->yyidx ] = $x; - } else { - $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); - } - } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) { - $this->yy_accept(); - } - } - - // line 320 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_parse_failed() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - } - - // line 324 "../smarty/lexer/smarty_internal_configfileparser.y" - public function yy_syntax_error($yymajor, $TOKEN) - { - // line 232 "../smarty/lexer/smarty_internal_configfileparser.y" - $this->internalError = true; - $this->yymajor = $yymajor; - $this->compiler->trigger_config_file_error(); - } - - public function yy_accept() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - // line 225 "../smarty/lexer/smarty_internal_configfileparser.y" - $this->successful = !$this->internalError; - $this->internalError = false; - $this->retvalue = $this->_retvalue; - } - - public function doParse($yymajor, $yytokenvalue) - { - $yyerrorhit = 0; /* True if yymajor has invoked an error */ - if ($this->yyidx === null || $this->yyidx < 0) { - $this->yyidx = 0; - $this->yyerrcnt = -1; - $x = new TPC_yyStackEntry; - $x->stateno = 0; - $x->major = 0; - $this->yystack = array(); - $this->yystack[] = $x; - } - $yyendofinput = ($yymajor == 0); - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sInput %s\n", - $this->yyTracePrompt, - $this->yyTokenName[ $yymajor ] - ); - } - do { - $yyact = $this->yy_find_shift_action($yymajor); - if ($yymajor < self::YYERRORSYMBOL && - !$this->yy_is_expected_token($yymajor)) { - // force a syntax error - $yyact = self::YY_ERROR_ACTION; - } - if ($yyact < self::YYNSTATE) { - $this->yy_shift($yyact, $yymajor, $yytokenvalue); - $this->yyerrcnt--; - if ($yyendofinput && $this->yyidx >= 0) { - $yymajor = 0; - } else { - $yymajor = self::YYNOCODE; - } - } elseif ($yyact < self::YYNSTATE + self::YYNRULE) { - $this->yy_reduce($yyact - self::YYNSTATE); - } elseif ($yyact === self::YY_ERROR_ACTION) { - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sSyntax Error!\n", - $this->yyTracePrompt - ); - } - if (self::YYERRORSYMBOL) { - if ($this->yyerrcnt < 0) { - $this->yy_syntax_error($yymajor, $yytokenvalue); - } - $yymx = $this->yystack[ $this->yyidx ]->major; - if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { - if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sDiscard input token %s\n", - $this->yyTracePrompt, - $this->yyTokenName[ $yymajor ] - ); - } - $this->yy_destructor($yymajor, $yytokenvalue); - $yymajor = self::YYNOCODE; - } else { - while ($this->yyidx >= 0 && - $yymx !== self::YYERRORSYMBOL && - ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE - ) { - $this->yy_pop_parser_stack(); - } - if ($this->yyidx < 0 || $yymajor == 0) { - $this->yy_destructor($yymajor, $yytokenvalue); - $this->yy_parse_failed(); - $yymajor = self::YYNOCODE; - } elseif ($yymx !== self::YYERRORSYMBOL) { - $u2 = 0; - $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); - } - } - $this->yyerrcnt = 3; - $yyerrorhit = 1; - } else { - if ($this->yyerrcnt <= 0) { - $this->yy_syntax_error($yymajor, $yytokenvalue); - } - $this->yyerrcnt = 3; - $this->yy_destructor($yymajor, $yytokenvalue); - if ($yyendofinput) { - $this->yy_parse_failed(); - } - $yymajor = self::YYNOCODE; - } - } else { - $this->yy_accept(); - $yymajor = self::YYNOCODE; - } - } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); - } - - /** - * parse optional boolean keywords - * - * @param string $str - * - * @return bool - */ - private function parse_bool($str) - { - $str = strtolower($str); - if (in_array($str, array('on', 'yes', 'true'))) { - $res = true; - } else { - $res = false; - } - return $res; - } - - /** - * set a config variable in target array - * - * @param array $var - * @param array $target_array - */ - private function set_var(array $var, array &$target_array) - { - $key = $var[ 'key' ]; - $value = $var[ 'value' ]; - if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) { - $target_array[ 'vars' ][ $key ] = $value; - } else { - settype($target_array[ 'vars' ][ $key ], 'array'); - $target_array[ 'vars' ][ $key ][] = $value; - } - } - - /** - * add config variable to global vars - * - * @param array $vars - */ - private function add_global_vars(array $vars) - { - if (!isset($this->compiler->config_data[ 'vars' ])) { - $this->compiler->config_data[ 'vars' ] = array(); - } - foreach ($vars as $var) { - $this->set_var($var, $this->compiler->config_data); - } - } - - /** - * add config variable to section - * - * @param string $section_name - * @param array $vars - */ - private function add_section_vars($section_name, array $vars) - { - if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) { - $this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = array(); - } - foreach ($vars as $var) { - $this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]); - } - } -} diff --git a/libs/sysplugins/smarty_internal_data.php b/libs/sysplugins/smarty_internal_data.php deleted file mode 100644 index 1b64185b..00000000 --- a/libs/sysplugins/smarty_internal_data.php +++ /dev/null @@ -1,272 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Data - * This file contains the basic classes and methods for template and variable creation - * - * @package Smarty - * @subpackage Template - * @author Uwe Tews - */ - -/** - * Base class with template and variable methods - * - * @package Smarty - * @subpackage Template - * - * @property int $scope - * @property Smarty $smarty - * The following methods will be dynamically loaded by the extension handler when they are called. - * They are located in a corresponding Smarty_Internal_Method_xxxx class - * - * @method mixed _getConfigVariable(string $varName, bool $errorEnable = true) - * @method mixed getConfigVariable(string $varName, bool $errorEnable = true) - * @method mixed getConfigVars(string $varName = null, bool $searchParents = true) - * @method mixed getGlobal(string $varName = null) - * @method mixed getStreamVariable(string $variable) - * @method Smarty_Internal_Data clearAssign(mixed $tpl_var) - * @method Smarty_Internal_Data clearAllAssign() - * @method Smarty_Internal_Data clearConfig(string $varName = null) - * @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local') - */ -abstract class Smarty_Internal_Data -{ - /** - * This object type (Smarty = 1, template = 2, data = 4) - * - * @var int - */ - public $_objType = 4; - - /** - * name of class used for templates - * - * @var string - */ - public $template_class = 'Smarty_Internal_Template'; - - /** - * template variables - * - * @var Smarty_Variable[] - */ - public $tpl_vars = array(); - - /** - * parent template (if any) - * - * @var Smarty|Smarty_Internal_Template|Smarty_Data - */ - public $parent = null; - - /** - * configuration settings - * - * @var string[] - */ - public $config_vars = array(); - - /** - * extension handler - * - * @var Smarty_Internal_Extension_Handler - */ - public $ext = null; - - /** - * Smarty_Internal_Data constructor. - * - * Install extension handler - */ - public function __construct() - { - $this->ext = new Smarty_Internal_Extension_Handler(); - $this->ext->objType = $this->_objType; - } - - /** - * assigns a Smarty variable - * - * @param array|string $tpl_var the template variable name(s) - * @param mixed $value the value to assign - * @param boolean $nocache if true any output of this variable will be not cached - * - * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for - * chaining - */ - public function assign($tpl_var, $value = null, $nocache = false) - { - if (is_array($tpl_var)) { - foreach ($tpl_var as $_key => $_val) { - $this->assign($_key, $_val, $nocache); - } - } else { - if ($tpl_var !== '') { - if ($this->_objType === 2) { - /** - * - * - * @var Smarty_Internal_Template $this - */ - $this->_assignInScope($tpl_var, $value, $nocache); - } else { - $this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache); - } - } - } - return $this; - } - - /** - * appends values to template variables - * - * @api Smarty::append() - * @link https://www.smarty.net/docs/en/api.append.tpl - * - * @param array|string $tpl_var the template variable name(s) - * @param mixed $value the value to append - * @param bool $merge flag if array elements shall be merged - * @param bool $nocache if true any output of this variable will - * be not cached - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function append($tpl_var, $value = null, $merge = false, $nocache = false) - { - return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache); - } - - /** - * assigns a global Smarty variable - * - * @param string $varName the global variable name - * @param mixed $value the value to assign - * @param boolean $nocache if true any output of this variable will be not cached - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function assignGlobal($varName, $value = null, $nocache = false) - { - return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache); - } - - /** - * appends values to template variables by reference - * - * @param string $tpl_var the template variable name - * @param mixed &$value the referenced value to append - * @param boolean $merge flag if array elements shall be merged - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function appendByRef($tpl_var, &$value, $merge = false) - { - return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge); - } - - /** - * assigns values to template variables by reference - * - * @param string $tpl_var the template variable name - * @param $value - * @param boolean $nocache if true any output of this variable will be not cached - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function assignByRef($tpl_var, &$value, $nocache = false) - { - return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache); - } - - /** - * Returns a single or all template variables - * - * @api Smarty::getTemplateVars() - * @link https://www.smarty.net/docs/en/api.get.template.vars.tpl - * - * @param string $varName variable name or null - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object - * @param bool $searchParents include parent templates? - * - * @return mixed variable value or or array of variables - */ - public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true) - { - return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents); - } - - /** - * Follow the parent chain an merge template and config variables - * - * @param \Smarty_Internal_Data|null $data - */ - public function _mergeVars(Smarty_Internal_Data $data = null) - { - if (isset($data)) { - if (!empty($this->tpl_vars)) { - $data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars); - } - if (!empty($this->config_vars)) { - $data->config_vars = array_merge($this->config_vars, $data->config_vars); - } - } else { - $data = $this; - } - if (isset($this->parent)) { - $this->parent->_mergeVars($data); - } - } - - /** - * Return true if this instance is a Data obj - * - * @return bool - */ - public function _isDataObj() - { - return $this->_objType === 4; - } - - /** - * Return true if this instance is a template obj - * - * @return bool - */ - public function _isTplObj() - { - return $this->_objType === 2; - } - - /** - * Return true if this instance is a Smarty obj - * - * @return bool - */ - public function _isSmartyObj() - { - return $this->_objType === 1; - } - - /** - * Get Smarty object - * - * @return Smarty - */ - public function _getSmartyObj() - { - return $this->smarty; - } - - /** - * Handle unknown class methods - * - * @param string $name unknown method-name - * @param array $args argument array - * - * @return mixed - */ - public function __call($name, $args) - { - return $this->ext->_callExternalMethod($this, $name, $args); - } -} diff --git a/libs/sysplugins/smarty_internal_debug.php b/libs/sysplugins/smarty_internal_debug.php deleted file mode 100644 index da67904c..00000000 --- a/libs/sysplugins/smarty_internal_debug.php +++ /dev/null @@ -1,428 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Debug - * Class to collect data for the Smarty Debugging Console - * - * @package Smarty - * @subpackage Debug - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Debug Class - * - * @package Smarty - * @subpackage Debug - */ -class Smarty_Internal_Debug extends Smarty_Internal_Data -{ - /** - * template data - * - * @var array - */ - public $template_data = array(); - - /** - * List of uid's which shall be ignored - * - * @var array - */ - public $ignore_uid = array(); - - /** - * Index of display() and fetch() calls - * - * @var int - */ - public $index = 0; - - /** - * Counter for window offset - * - * @var int - */ - public $offset = 0; - - /** - * Start logging template - * - * @param \Smarty_Internal_Template $template template - * @param null $mode true: display false: fetch null: subtemplate - */ - public function start_template(Smarty_Internal_Template $template, $mode = null) - { - if (isset($mode) && !$template->_isSubTpl()) { - $this->index++; - $this->offset++; - $this->template_data[ $this->index ] = null; - } - $key = $this->get_key($template); - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true); - } - - /** - * End logging of cache time - * - * @param \Smarty_Internal_Template $template cached template - */ - public function end_template(Smarty_Internal_Template $template) - { - $key = $this->get_key($template); - $this->template_data[ $this->index ][ $key ][ 'total_time' ] += - microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ]; - //$this->template_data[$this->index][$key]['properties'] = $template->properties; - } - - /** - * Start logging of compile time - * - * @param \Smarty_Internal_Template $template - */ - public function start_compile(Smarty_Internal_Template $template) - { - static $_is_stringy = array('string' => true, 'eval' => true); - if (!empty($template->compiler->trace_uid)) { - $key = $template->compiler->trace_uid; - if (!isset($this->template_data[ $this->index ][ $key ])) { - if (isset($_is_stringy[ $template->source->type ])) { - $this->template_data[ $this->index ][ $key ][ 'name' ] = - '\'' . substr($template->source->name, 0, 25) . '...\''; - } else { - $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath; - } - $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0; - $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0; - $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0; - } - } else { - if (isset($this->ignore_uid[ $template->source->uid ])) { - return; - } - $key = $this->get_key($template); - } - $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true); - } - - /** - * End logging of compile time - * - * @param \Smarty_Internal_Template $template - */ - public function end_compile(Smarty_Internal_Template $template) - { - if (!empty($template->compiler->trace_uid)) { - $key = $template->compiler->trace_uid; - } else { - if (isset($this->ignore_uid[ $template->source->uid ])) { - return; - } - $key = $this->get_key($template); - } - $this->template_data[ $this->index ][ $key ][ 'compile_time' ] += - microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ]; - } - - /** - * Start logging of render time - * - * @param \Smarty_Internal_Template $template - */ - public function start_render(Smarty_Internal_Template $template) - { - $key = $this->get_key($template); - $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true); - } - - /** - * End logging of compile time - * - * @param \Smarty_Internal_Template $template - */ - public function end_render(Smarty_Internal_Template $template) - { - $key = $this->get_key($template); - $this->template_data[ $this->index ][ $key ][ 'render_time' ] += - microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ]; - } - - /** - * Start logging of cache time - * - * @param \Smarty_Internal_Template $template cached template - */ - public function start_cache(Smarty_Internal_Template $template) - { - $key = $this->get_key($template); - $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true); - } - - /** - * End logging of cache time - * - * @param \Smarty_Internal_Template $template cached template - */ - public function end_cache(Smarty_Internal_Template $template) - { - $key = $this->get_key($template); - $this->template_data[ $this->index ][ $key ][ 'cache_time' ] += - microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ]; - } - - /** - * Register template object - * - * @param \Smarty_Internal_Template $template cached template - */ - public function register_template(Smarty_Internal_Template $template) - { - } - - /** - * Register data object - * - * @param \Smarty_Data $data data object - */ - public static function register_data(Smarty_Data $data) - { - } - - /** - * Opens a window for the Smarty Debugging Console and display the data - * - * @param Smarty_Internal_Template|Smarty $obj object to debug - * @param bool $full - * - * @throws \Exception - * @throws \SmartyException - */ - public function display_debug($obj, $full = false) - { - if (!$full) { - $this->offset++; - $savedIndex = $this->index; - $this->index = 9999; - } - $smarty = $obj->_getSmartyObj(); - // create fresh instance of smarty for displaying the debug console - // to avoid problems if the application did overload the Smarty class - $debObj = new Smarty(); - // copy the working dirs from application - $debObj->setCompileDir($smarty->getCompileDir()); - // init properties by hand as user may have edited the original Smarty class - $debObj->setPluginsDir(is_dir(__DIR__ . '/../plugins') ? __DIR__ . - '/../plugins' : $smarty->getPluginsDir()); - $debObj->force_compile = false; - $debObj->compile_check = Smarty::COMPILECHECK_ON; - $debObj->left_delimiter = '{'; - $debObj->right_delimiter = '}'; - $debObj->security_policy = null; - $debObj->debugging = false; - $debObj->debugging_ctrl = 'NONE'; - $debObj->error_reporting = E_ALL & ~E_NOTICE; - $debObj->debug_tpl = - isset($smarty->debug_tpl) ? $smarty->debug_tpl : 'file:' . __DIR__ . '/../debug.tpl'; - $debObj->registered_plugins = array(); - $debObj->registered_resources = array(); - $debObj->registered_filters = array(); - $debObj->autoload_filters = array(); - $debObj->default_modifiers = array(); - $debObj->escape_html = true; - $debObj->caching = Smarty::CACHING_OFF; - $debObj->compile_id = null; - $debObj->cache_id = null; - // prepare information of assigned variables - $ptr = $this->get_debug_vars($obj); - $_assigned_vars = $ptr->tpl_vars; - ksort($_assigned_vars); - $_config_vars = $ptr->config_vars; - ksort($_config_vars); - $debugging = $smarty->debugging; - $templateName = $obj->source->type . ':' . $obj->source->name; - $displayMode = $debugging === 2 || !$full; - $offset = $this->offset * 50; - $_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj); - if ($obj->_isTplObj()) { - $_template->assign('template_name', $templateName); - } - if ($obj->_objType === 1 || $full) { - $_template->assign('template_data', $this->template_data[ $this->index ]); - } else { - $_template->assign('template_data', null); - } - $_template->assign('assigned_vars', $_assigned_vars); - $_template->assign('config_vars', $_config_vars); - $_template->assign('execution_time', microtime(true) - $smarty->start_time); - $_template->assign('targetWindow', $displayMode ? md5("$offset$templateName") : '__Smarty__'); - $_template->assign('offset', $offset); - echo $_template->fetch(); - if (isset($full)) { - $this->index--; - } - if (!$full) { - $this->index = $savedIndex; - } - } - - /** - * Recursively gets variables from all template/data scopes - * - * @param Smarty_Internal_Template|Smarty_Data $obj object to debug - * - * @return StdClass - */ - public function get_debug_vars($obj) - { - $config_vars = array(); - foreach ($obj->config_vars as $key => $var) { - $config_vars[ $key ][ 'value' ] = $var; - if ($obj->_isTplObj()) { - $config_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name; - } elseif ($obj->_isDataObj()) { - $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName; - } else { - $config_vars[ $key ][ 'scope' ] = 'Smarty object'; - } - } - $tpl_vars = array(); - foreach ($obj->tpl_vars as $key => $var) { - foreach ($var as $varkey => $varvalue) { - if ($varkey === 'value') { - $tpl_vars[ $key ][ $varkey ] = $varvalue; - } else { - if ($varkey === 'nocache') { - if ($varvalue === true) { - $tpl_vars[ $key ][ $varkey ] = $varvalue; - } - } else { - if ($varkey !== 'scope' || $varvalue !== 0) { - $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue; - } - } - } - } - if ($obj->_isTplObj()) { - $tpl_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name; - } elseif ($obj->_isDataObj()) { - $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName; - } else { - $tpl_vars[ $key ][ 'scope' ] = 'Smarty object'; - } - } - if (isset($obj->parent)) { - $parent = $this->get_debug_vars($obj->parent); - foreach ($parent->tpl_vars as $name => $pvar) { - if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) { - $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ]; - } - } - $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars); - foreach ($parent->config_vars as $name => $pvar) { - if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) { - $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ]; - } - } - $config_vars = array_merge($parent->config_vars, $config_vars); - } else { - foreach (Smarty::$global_tpl_vars as $key => $var) { - if (!array_key_exists($key, $tpl_vars)) { - foreach ($var as $varkey => $varvalue) { - if ($varkey === 'value') { - $tpl_vars[ $key ][ $varkey ] = $varvalue; - } else { - if ($varkey === 'nocache') { - if ($varvalue === true) { - $tpl_vars[ $key ][ $varkey ] = $varvalue; - } - } else { - if ($varkey !== 'scope' || $varvalue !== 0) { - $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue; - } - } - } - } - $tpl_vars[ $key ][ 'scope' ] = 'Global'; - } - } - } - return (object)array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars); - } - - /** - * Return key into $template_data for template - * - * @param \Smarty_Internal_Template $template template object - * - * @return string key into $template_data - */ - private function get_key(Smarty_Internal_Template $template) - { - static $_is_stringy = array('string' => true, 'eval' => true); - // calculate Uid if not already done - if ($template->source->uid === '') { - $template->source->filepath; - } - $key = $template->source->uid; - if (isset($this->template_data[ $this->index ][ $key ])) { - return $key; - } else { - if (isset($_is_stringy[ $template->source->type ])) { - $this->template_data[ $this->index ][ $key ][ 'name' ] = - '\'' . substr($template->source->name, 0, 25) . '...\''; - } else { - $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath; - } - $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0; - $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0; - $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0; - $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0; - return $key; - } - } - - /** - * Ignore template - * - * @param \Smarty_Internal_Template $template - */ - public function ignore(Smarty_Internal_Template $template) - { - // calculate Uid if not already done - if ($template->source->uid === '') { - $template->source->filepath; - } - $this->ignore_uid[ $template->source->uid ] = true; - } - - /** - * handle 'URL' debugging mode - * - * @param Smarty $smarty - */ - public function debugUrl(Smarty $smarty) - { - if (isset($_SERVER[ 'QUERY_STRING' ])) { - $_query_string = $_SERVER[ 'QUERY_STRING' ]; - } else { - $_query_string = ''; - } - if (false !== strpos($_query_string, $smarty->smarty_debug_id)) { - if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) { - // enable debugging for this browser session - setcookie('SMARTY_DEBUG', true); - $smarty->debugging = true; - } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) { - // disable debugging for this browser session - setcookie('SMARTY_DEBUG', false); - $smarty->debugging = false; - } else { - // enable debugging for this page - $smarty->debugging = true; - } - } else { - if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) { - $smarty->debugging = true; - } - } - } -} diff --git a/libs/sysplugins/smarty_internal_errorhandler.php b/libs/sysplugins/smarty_internal_errorhandler.php deleted file mode 100644 index 6f526c38..00000000 --- a/libs/sysplugins/smarty_internal_errorhandler.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -/** - * Smarty error handler to fix new error levels in PHP8 for backwards compatibility - * - * @package Smarty - * @subpackage PluginsInternal - * @author Simon Wisselink - * - */ -class Smarty_Internal_ErrorHandler -{ - - /** - * Allows {$foo} where foo is unset. - * @var bool - */ - public $allowUndefinedVars = true; - - /** - * Allows {$foo->propName} where propName is undefined. - * @var bool - */ - public $allowUndefinedProperties = true; - - /** - * Allows {$foo.bar} where bar is unset and {$foo.bar1.bar2} where either bar1 or bar2 is unset. - * @var bool - */ - public $allowUndefinedArrayKeys = true; - - /** - * Allows {$foo->bar} where bar is not an object (e.g. null or false). - * @var bool - */ - public $allowDereferencingNonObjects = true; - - private $previousErrorHandler = null; - - /** - * Enable error handler to intercept errors - */ - public function activate() { - /* - Error muting is done because some people implemented custom error_handlers using - https://php.net/set_error_handler and for some reason did not understand the following paragraph: - - It is important to remember that the standard PHP error handler is completely bypassed for the - error types specified by error_types unless the callback function returns FALSE. - error_reporting() settings will have no effect and your error handler will be called regardless - - however you are still able to read the current value of error_reporting and act appropriately. - Of particular note is that this value will be 0 if the statement that caused the error was - prepended by the @ error-control operator. - */ - $this->previousErrorHandler = set_error_handler([$this, 'handleError']); - } - - /** - * Disable error handler - */ - public function deactivate() { - restore_error_handler(); - $this->previousErrorHandler = null; - } - - /** - * Error Handler to mute expected messages - * - * @link https://php.net/set_error_handler - * - * @param integer $errno Error level - * @param $errstr - * @param $errfile - * @param $errline - * @param $errcontext - * - * @return bool - */ - public function handleError($errno, $errstr, $errfile, $errline, $errcontext = []) - { - - if ($this->allowUndefinedVars && preg_match( - '/^(Attempt to read property "value" on null|Trying to get property (\'value\' )?of non-object)/', - $errstr - )) { - return; // suppresses this error - } - - if ($this->allowUndefinedProperties && preg_match( - '/^(Undefined property)/', - $errstr - )) { - return; // suppresses this error - } - - if ($this->allowUndefinedArrayKeys && preg_match( - '/^(Undefined index|Undefined array key|Trying to access array offset on value of type)/', - $errstr - )) { - return; // suppresses this error - } - - if ($this->allowDereferencingNonObjects && preg_match( - '/^Attempt to read property ".+?" on/', - $errstr - )) { - return; // suppresses this error - } - - // pass all other errors through to the previous error handler or to the default PHP error handler - return $this->previousErrorHandler ? - call_user_func($this->previousErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext) : false; - } -} diff --git a/libs/sysplugins/smarty_internal_extension_handler.php b/libs/sysplugins/smarty_internal_extension_handler.php deleted file mode 100644 index 3ef040ab..00000000 --- a/libs/sysplugins/smarty_internal_extension_handler.php +++ /dev/null @@ -1,197 +0,0 @@ -<?php - -/** - * Smarty Extension handler - * - * Load extensions dynamically - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - * - * Runtime extensions - * @property Smarty_Internal_Runtime_CacheModify $_cacheModify - * @property Smarty_Internal_Runtime_CacheResourceFile $_cacheResourceFile - * @property Smarty_Internal_Runtime_Capture $_capture - * @property Smarty_Internal_Runtime_CodeFrame $_codeFrame - * @property Smarty_Internal_Runtime_FilterHandler $_filterHandler - * @property Smarty_Internal_Runtime_Foreach $_foreach - * @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath - * @property Smarty_Internal_Runtime_Make_Nocache $_make_nocache - * @property Smarty_Internal_Runtime_UpdateCache $_updateCache - * @property Smarty_Internal_Runtime_UpdateScope $_updateScope - * @property Smarty_Internal_Runtime_TplFunction $_tplFunction - * @property Smarty_Internal_Runtime_WriteFile $_writeFile - * - * Method extensions - * @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars - * @property Smarty_Internal_Method_Append $append - * @property Smarty_Internal_Method_AppendByRef $appendByRef - * @property Smarty_Internal_Method_AssignGlobal $assignGlobal - * @property Smarty_Internal_Method_AssignByRef $assignByRef - * @property Smarty_Internal_Method_LoadFilter $loadFilter - * @property Smarty_Internal_Method_LoadPlugin $loadPlugin - * @property Smarty_Internal_Method_RegisterFilter $registerFilter - * @property Smarty_Internal_Method_RegisterObject $registerObject - * @property Smarty_Internal_Method_RegisterPlugin $registerPlugin - * @property mixed|\Smarty_Template_Cached configLoad - */ -#[\AllowDynamicProperties] -class Smarty_Internal_Extension_Handler -{ - public $objType = null; - - /** - * Cache for property information from generic getter/setter - * Preloaded with names which should not use with generic getter/setter - * - * @var array - */ - private $_property_info = array( - 'AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0, - 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0, - 'TemplateVars' => 0, 'Literals' => 'Literals', - );// - - private $resolvedProperties = array(); - - /** - * Call external Method - * - * @param \Smarty_Internal_Data $data - * @param string $name external method names - * @param array $args argument array - * - * @return mixed - */ - public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args) - { - /* @var Smarty $data ->smarty */ - $smarty = isset($data->smarty) ? $data->smarty : $data; - if (!isset($smarty->ext->$name)) { - if (preg_match('/^((set|get)|(.*?))([A-Z].*)$/', $name, $match)) { - $basename = $this->upperCase($match[ 4 ]); - if (!isset($smarty->ext->$basename) && isset($this->_property_info[ $basename ]) - && is_string($this->_property_info[ $basename ]) - ) { - $class = 'Smarty_Internal_Method_' . $this->_property_info[ $basename ]; - if (class_exists($class)) { - $classObj = new $class(); - $methodes = get_class_methods($classObj); - foreach ($methodes as $method) { - $smarty->ext->$method = $classObj; - } - } - } - if (!empty($match[ 2 ]) && !isset($smarty->ext->$name)) { - $class = 'Smarty_Internal_Method_' . $this->upperCase($name); - if (!class_exists($class)) { - $objType = $data->_objType; - $propertyType = false; - if (!isset($this->resolvedProperties[ $match[ 0 ] ][ $objType ])) { - $property = $this->resolvedProperties['property'][$basename] ?? - $this->resolvedProperties['property'][$basename] = smarty_strtolower_ascii( - join( - '_', - preg_split( - '/([A-Z][^A-Z]*)/', - $basename, - -1, - PREG_SPLIT_NO_EMPTY | - PREG_SPLIT_DELIM_CAPTURE - ) - ) - ); - if ($property !== false) { - if (property_exists($data, $property)) { - $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 1; - } elseif (property_exists($smarty, $property)) { - $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 2; - } else { - $this->resolvedProperties[ 'property' ][ $basename ] = $property = false; - } - } - } else { - $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ]; - $property = $this->resolvedProperties[ 'property' ][ $basename ]; - } - if ($propertyType) { - $obj = $propertyType === 1 ? $data : $smarty; - if ($match[ 2 ] === 'get') { - return $obj->$property; - } elseif ($match[ 2 ] === 'set') { - return $obj->$property = $args[ 0 ]; - } - } - } - } - } - } - $callback = array($smarty->ext->$name, $name); - array_unshift($args, $data); - if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) { - return call_user_func_array($callback, $args); - } - return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args); - } - - /** - * Make first character of name parts upper case - * - * @param string $name - * - * @return string - */ - public function upperCase($name) - { - $_name = explode('_', $name); - $_name = array_map('smarty_ucfirst_ascii', $_name); - return implode('_', $_name); - } - - /** - * get extension object - * - * @param string $property_name property name - * - * @return mixed|Smarty_Template_Cached - */ - public function __get($property_name) - { - // object properties of runtime template extensions will start with '_' - if ($property_name[ 0 ] === '_') { - $class = 'Smarty_Internal_Runtime' . $this->upperCase($property_name); - } else { - $class = 'Smarty_Internal_Method_' . $this->upperCase($property_name); - } - if (!class_exists($class)) { - return $this->$property_name = new Smarty_Internal_Undefined($class); - } - return $this->$property_name = new $class(); - } - - /** - * set extension property - * - * @param string $property_name property name - * @param mixed $value value - * - */ - public function __set($property_name, $value) - { - $this->$property_name = $value; - } - - /** - * Call error handler for undefined method - * - * @param string $name unknown method-name - * @param array $args argument array - * - * @return mixed - */ - public function __call($name, $args) - { - return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), array($this)); - } -} diff --git a/libs/sysplugins/smarty_internal_method_addautoloadfilters.php b/libs/sysplugins/smarty_internal_method_addautoloadfilters.php deleted file mode 100644 index a05f55a8..00000000 --- a/libs/sysplugins/smarty_internal_method_addautoloadfilters.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -/** - * Smarty Method AddAutoloadFilters - * - * Smarty::addAutoloadFilters() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_AddAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters -{ - /** - * Add autoload filters - * - * @api Smarty::setAutoloadFilters() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @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 - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function addAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null) - { - $smarty = $obj->_getSmartyObj(); - if ($type !== null) { - $this->_checkFilterType($type); - if (!empty($smarty->autoload_filters[ $type ])) { - $smarty->autoload_filters[ $type ] = array_merge($smarty->autoload_filters[ $type ], (array)$filters); - } else { - $smarty->autoload_filters[ $type ] = (array)$filters; - } - } else { - foreach ((array)$filters as $type => $value) { - $this->_checkFilterType($type); - if (!empty($smarty->autoload_filters[ $type ])) { - $smarty->autoload_filters[ $type ] = - array_merge($smarty->autoload_filters[ $type ], (array)$value); - } else { - $smarty->autoload_filters[ $type ] = (array)$value; - } - } - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php b/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php deleted file mode 100644 index c3feb3d8..00000000 --- a/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * Smarty Method AddDefaultModifiers - * - * Smarty::addDefaultModifiers() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_AddDefaultModifiers -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Add default modifiers - * - * @api Smarty::addDefaultModifiers() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param array|string $modifiers modifier or list of modifiers - * to add - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function addDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers) - { - $smarty = $obj->_getSmartyObj(); - if (is_array($modifiers)) { - $smarty->default_modifiers = array_merge($smarty->default_modifiers, $modifiers); - } else { - $smarty->default_modifiers[] = $modifiers; - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_append.php b/libs/sysplugins/smarty_internal_method_append.php deleted file mode 100644 index e207734e..00000000 --- a/libs/sysplugins/smarty_internal_method_append.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -/** - * Smarty Method Append - * - * Smarty::append() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_Append -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * appends values to template variables - * - * @api Smarty::append() - * @link https://www.smarty.net/docs/en/api.append.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param array|string $tpl_var the template variable name(s) - * @param mixed $value the value to append - * @param bool $merge flag if array elements shall be merged - * @param bool $nocache if true any output of this variable will - * be not cached - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function append(Smarty_Internal_Data $data, $tpl_var, $value = null, $merge = false, $nocache = false) - { - if (is_array($tpl_var)) { - // $tpl_var is an array, ignore $value - foreach ($tpl_var as $_key => $_val) { - if ($_key !== '') { - $this->append($data, $_key, $_val, $merge, $nocache); - } - } - } else { - if ($tpl_var !== '' && isset($value)) { - if (!isset($data->tpl_vars[ $tpl_var ])) { - $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false); - if ($tpl_var_inst instanceof Smarty_Undefined_Variable) { - $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache); - } else { - $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst; - } - } - if (!(is_array($data->tpl_vars[ $tpl_var ]->value) - || $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess) - ) { - settype($data->tpl_vars[ $tpl_var ]->value, 'array'); - } - if ($merge && is_array($value)) { - foreach ($value as $_mkey => $_mval) { - $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval; - } - } else { - $data->tpl_vars[ $tpl_var ]->value[] = $value; - } - } - if ($data->_isTplObj() && $data->scope) { - $data->ext->_updateScope->_updateScope($data, $tpl_var); - } - } - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_appendbyref.php b/libs/sysplugins/smarty_internal_method_appendbyref.php deleted file mode 100644 index b5be69b5..00000000 --- a/libs/sysplugins/smarty_internal_method_appendbyref.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/** - * Smarty Method AppendByRef - * - * Smarty::appendByRef() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_AppendByRef -{ - /** - * appends values to template variables by reference - * - * @api Smarty::appendByRef() - * @link https://www.smarty.net/docs/en/api.append.by.ref.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $tpl_var the template variable name - * @param mixed &$value the referenced value to append - * @param bool $merge flag if array elements shall be merged - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false) - { - if ($tpl_var !== '' && isset($value)) { - if (!isset($data->tpl_vars[ $tpl_var ])) { - $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(); - } - if (!is_array($data->tpl_vars[ $tpl_var ]->value)) { - settype($data->tpl_vars[ $tpl_var ]->value, 'array'); - } - if ($merge && is_array($value)) { - foreach ($value as $_key => $_val) { - $data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ]; - } - } else { - $data->tpl_vars[ $tpl_var ]->value[] = &$value; - } - if ($data->_isTplObj() && $data->scope) { - $data->ext->_updateScope->_updateScope($data, $tpl_var); - } - } - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_assignbyref.php b/libs/sysplugins/smarty_internal_method_assignbyref.php deleted file mode 100644 index fa705bb8..00000000 --- a/libs/sysplugins/smarty_internal_method_assignbyref.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -/** - * Smarty Method AssignByRef - * - * Smarty::assignByRef() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_AssignByRef -{ - /** - * assigns values to template variables by reference - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $tpl_var the template variable name - * @param $value - * @param boolean $nocache if true any output of this variable will - * be not cached - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function assignByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $nocache) - { - if ($tpl_var !== '') { - $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache); - $data->tpl_vars[ $tpl_var ]->value = &$value; - if ($data->_isTplObj() && $data->scope) { - $data->ext->_updateScope->_updateScope($data, $tpl_var); - } - } - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_assignglobal.php b/libs/sysplugins/smarty_internal_method_assignglobal.php deleted file mode 100644 index 08cfa469..00000000 --- a/libs/sysplugins/smarty_internal_method_assignglobal.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * Smarty Method AssignGlobal - * - * Smarty::assignGlobal() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_AssignGlobal -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * assigns a global Smarty variable - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $varName the global variable name - * @param mixed $value the value to assign - * @param boolean $nocache if true any output of this variable will - * be not cached - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function assignGlobal(Smarty_Internal_Data $data, $varName, $value = null, $nocache = false) - { - if ($varName !== '') { - Smarty::$global_tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache); - $ptr = $data; - while ($ptr->_isTplObj()) { - $ptr->tpl_vars[ $varName ] = clone Smarty::$global_tpl_vars[ $varName ]; - $ptr = $ptr->parent; - } - } - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_clearallassign.php b/libs/sysplugins/smarty_internal_method_clearallassign.php deleted file mode 100644 index 6fb0c8f3..00000000 --- a/libs/sysplugins/smarty_internal_method_clearallassign.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -/** - * Smarty Method ClearAllAssign - * - * Smarty::clearAllAssign() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ClearAllAssign -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * clear all the assigned template variables. - * - * @api Smarty::clearAllAssign() - * @link https://www.smarty.net/docs/en/api.clear.all.assign.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function clearAllAssign(Smarty_Internal_Data $data) - { - $data->tpl_vars = array(); - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_clearallcache.php b/libs/sysplugins/smarty_internal_method_clearallcache.php deleted file mode 100644 index b74d3058..00000000 --- a/libs/sysplugins/smarty_internal_method_clearallcache.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * Smarty Method ClearAllCache - * - * Smarty::clearAllCache() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ClearAllCache -{ - /** - * Valid for Smarty object - * - * @var int - */ - public $objMap = 1; - - /** - * Empty cache folder - * - * @api Smarty::clearAllCache() - * @link https://www.smarty.net/docs/en/api.clear.all.cache.tpl - * - * @param \Smarty $smarty - * @param integer $exp_time expiration time - * @param string $type resource type - * - * @return int number of cache files deleted - * @throws \SmartyException - */ - public function clearAllCache(Smarty $smarty, $exp_time = null, $type = null) - { - $smarty->_clearTemplateCache(); - // load cache resource and call clearAll - $_cache_resource = Smarty_CacheResource::load($smarty, $type); - return $_cache_resource->clearAll($smarty, $exp_time); - } -} diff --git a/libs/sysplugins/smarty_internal_method_clearassign.php b/libs/sysplugins/smarty_internal_method_clearassign.php deleted file mode 100644 index 12b755c0..00000000 --- a/libs/sysplugins/smarty_internal_method_clearassign.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/** - * Smarty Method ClearAssign - * - * Smarty::clearAssign() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ClearAssign -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * clear the given assigned template variable(s). - * - * @api Smarty::clearAssign() - * @link https://www.smarty.net/docs/en/api.clear.assign.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string|array $tpl_var the template variable(s) to clear - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function clearAssign(Smarty_Internal_Data $data, $tpl_var) - { - if (is_array($tpl_var)) { - foreach ($tpl_var as $curr_var) { - unset($data->tpl_vars[ $curr_var ]); - } - } else { - unset($data->tpl_vars[ $tpl_var ]); - } - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_clearcache.php b/libs/sysplugins/smarty_internal_method_clearcache.php deleted file mode 100644 index df766eee..00000000 --- a/libs/sysplugins/smarty_internal_method_clearcache.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -/** - * Smarty Method ClearCache - * - * Smarty::clearCache() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ClearCache -{ - /** - * Valid for Smarty object - * - * @var int - */ - public $objMap = 1; - - /** - * Empty cache for a specific template - * - * @api Smarty::clearCache() - * @link https://www.smarty.net/docs/en/api.clear.cache.tpl - * - * @param \Smarty $smarty - * @param string $template_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time - * @param string $type resource type - * - * @return int number of cache files deleted - * @throws \SmartyException - */ - public function clearCache( - Smarty $smarty, - $template_name, - $cache_id = null, - $compile_id = null, - $exp_time = null, - $type = null - ) { - $smarty->_clearTemplateCache(); - // load cache resource and call clear - $_cache_resource = Smarty_CacheResource::load($smarty, $type); - return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time); - } -} diff --git a/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php b/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php deleted file mode 100644 index db0a49b0..00000000 --- a/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -/** - * Smarty Method ClearCompiledTemplate - * - * Smarty::clearCompiledTemplate() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ClearCompiledTemplate -{ - /** - * Valid for Smarty object - * - * @var int - */ - public $objMap = 1; - - /** - * Delete compiled template file - * - * @api Smarty::clearCompiledTemplate() - * @link https://www.smarty.net/docs/en/api.clear.compiled.template.tpl - * - * @param \Smarty $smarty - * @param string $resource_name template name - * @param string $compile_id compile id - * @param integer $exp_time expiration time - * - * @return int number of template files deleted - * @throws \SmartyException - */ - public function clearCompiledTemplate(Smarty $smarty, $resource_name = null, $compile_id = null, $exp_time = null) - { - // clear template objects cache - $smarty->_clearTemplateCache(); - $_compile_dir = $smarty->getCompileDir(); - if ($_compile_dir === '/') { //We should never want to delete this! - return 0; - } - $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null; - $_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'; - if (isset($resource_name)) { - $_save_stat = $smarty->caching; - $smarty->caching = Smarty::CACHING_OFF; - /* @var Smarty_Internal_Template $tpl */ - $tpl = $smarty->createTemplate($resource_name); - $smarty->caching = $_save_stat; - if (!$tpl->source->handler->uncompiled && !$tpl->source->handler->recompiled && $tpl->source->exists) { - $_resource_part_1 = basename(str_replace('^', DIRECTORY_SEPARATOR, $tpl->compiled->filepath)); - $_resource_part_1_length = strlen($_resource_part_1); - } else { - return 0; - } - $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1); - $_resource_part_2_length = strlen($_resource_part_2); - } - $_dir = $_compile_dir; - if ($smarty->use_sub_dirs && isset($_compile_id)) { - $_dir .= $_compile_id . $_dir_sep; - } - if (isset($_compile_id)) { - $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep; - $_compile_id_part_length = strlen($_compile_id_part); - } - $_count = 0; - try { - $_compileDirs = new RecursiveDirectoryIterator($_dir); - // NOTE: UnexpectedValueException thrown for PHP >= 5.3 - } catch (Exception $e) { - return 0; - } - $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST); - foreach ($_compile as $_file) { - if (substr(basename($_file->getPathname()), 0, 1) === '.') { - continue; - } - $_filepath = (string)$_file; - if ($_file->isDir()) { - if (!$_compile->isDot()) { - // delete folder if empty - @rmdir($_file->getPathname()); - } - } else { - // delete only php files - if (substr($_filepath, -4) !== '.php') { - continue; - } - $unlink = false; - if ((!isset($_compile_id) || - (isset($_filepath[ $_compile_id_part_length ]) && - $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) - && (!isset($resource_name) || (isset($_filepath[ $_resource_part_1_length ]) - && substr_compare( - $_filepath, - $_resource_part_1, - -$_resource_part_1_length, - $_resource_part_1_length - ) === 0) || (isset($_filepath[ $_resource_part_2_length ]) - && substr_compare( - $_filepath, - $_resource_part_2, - -$_resource_part_2_length, - $_resource_part_2_length - ) === 0)) - ) { - if (isset($exp_time)) { - if (is_file($_filepath) && time() - filemtime($_filepath) >= $exp_time) { - $unlink = true; - } - } else { - $unlink = true; - } - } - if ($unlink && is_file($_filepath) && @unlink($_filepath)) { - $_count++; - if (function_exists('opcache_invalidate') - && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1) - ) { - opcache_invalidate($_filepath, true); - } elseif (function_exists('apc_delete_file')) { - apc_delete_file($_filepath); - } - } - } - } - return $_count; - } -} diff --git a/libs/sysplugins/smarty_internal_method_clearconfig.php b/libs/sysplugins/smarty_internal_method_clearconfig.php deleted file mode 100644 index d1b73032..00000000 --- a/libs/sysplugins/smarty_internal_method_clearconfig.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * Smarty Method ClearConfig - * - * Smarty::clearConfig() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ClearConfig -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * clear a single or all config variables - * - * @api Smarty::clearConfig() - * @link https://www.smarty.net/docs/en/api.clear.config.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string|null $name variable name or null - * - * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty - */ - public function clearConfig(Smarty_Internal_Data $data, $name = null) - { - if (isset($name)) { - unset($data->config_vars[ $name ]); - } else { - $data->config_vars = array(); - } - return $data; - } -} diff --git a/libs/sysplugins/smarty_internal_method_compileallconfig.php b/libs/sysplugins/smarty_internal_method_compileallconfig.php deleted file mode 100644 index 3934ca04..00000000 --- a/libs/sysplugins/smarty_internal_method_compileallconfig.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -/** - * Smarty Method CompileAllConfig - * - * Smarty::compileAllConfig() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_CompileAllConfig extends Smarty_Internal_Method_CompileAllTemplates -{ - /** - * Compile all config files - * - * @api Smarty::compileAllConfig() - * - * @param \Smarty $smarty passed smarty object - * @param string $extension file extension - * @param bool $force_compile force all to recompile - * @param int $time_limit - * @param int $max_errors - * - * @return int number of template files recompiled - */ - public function compileAllConfig( - Smarty $smarty, - $extension = '.conf', - $force_compile = false, - $time_limit = 0, - $max_errors = null - ) { - return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true); - } -} diff --git a/libs/sysplugins/smarty_internal_method_compilealltemplates.php b/libs/sysplugins/smarty_internal_method_compilealltemplates.php deleted file mode 100644 index 5c046da4..00000000 --- a/libs/sysplugins/smarty_internal_method_compilealltemplates.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php - -/** - * Smarty Method CompileAllTemplates - * - * Smarty::compileAllTemplates() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_CompileAllTemplates -{ - /** - * Valid for Smarty object - * - * @var int - */ - public $objMap = 1; - - /** - * Compile all template files - * - * @api Smarty::compileAllTemplates() - * - * @param \Smarty $smarty passed smarty object - * @param string $extension file extension - * @param bool $force_compile force all to recompile - * @param int $time_limit - * @param int $max_errors - * - * @return integer number of template files recompiled - */ - public function compileAllTemplates( - Smarty $smarty, - $extension = '.tpl', - $force_compile = false, - $time_limit = 0, - $max_errors = null - ) { - return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors); - } - - /** - * Compile all template or config files - * - * @param \Smarty $smarty - * @param string $extension template file name extension - * @param bool $force_compile force all to recompile - * @param int $time_limit set maximum execution time - * @param int $max_errors set maximum allowed errors - * @param bool $isConfig flag true if called for config files - * - * @return int number of template files compiled - */ - protected function compileAll( - Smarty $smarty, - $extension, - $force_compile, - $time_limit, - $max_errors, - $isConfig = false - ) { - // switch off time limit - if (function_exists('set_time_limit')) { - @set_time_limit($time_limit); - } - $_count = 0; - $_error_count = 0; - $sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir(); - // loop over array of source directories - foreach ($sourceDir as $_dir) { - $_dir_1 = new RecursiveDirectoryIterator( - $_dir, - defined('FilesystemIterator::FOLLOW_SYMLINKS') ? - FilesystemIterator::FOLLOW_SYMLINKS : 0 - ); - $_dir_2 = new RecursiveIteratorIterator($_dir_1); - foreach ($_dir_2 as $_fileinfo) { - $_file = $_fileinfo->getFilename(); - if (substr(basename($_fileinfo->getPathname()), 0, 1) === '.' || strpos($_file, '.svn') !== false) { - continue; - } - if (substr_compare($_file, $extension, -strlen($extension)) !== 0) { - continue; - } - if ($_fileinfo->getPath() !== substr($_dir, 0, -1)) { - $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DIRECTORY_SEPARATOR . $_file; - } - echo "\n<br>", $_dir, '---', $_file; - flush(); - $_start_time = microtime(true); - $_smarty = clone $smarty; - // - $_smarty->_cache = array(); - $_smarty->ext = new Smarty_Internal_Extension_Handler(); - $_smarty->ext->objType = $_smarty->_objType; - $_smarty->force_compile = $force_compile; - try { - /* @var Smarty_Internal_Template $_tpl */ - $_tpl = new $smarty->template_class($_file, $_smarty); - $_tpl->caching = Smarty::CACHING_OFF; - $_tpl->source = - $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl); - if ($_tpl->mustCompile()) { - $_tpl->compileTemplateSource(); - $_count++; - echo ' compiled in ', microtime(true) - $_start_time, ' seconds'; - flush(); - } else { - echo ' is up to date'; - flush(); - } - } catch (Exception $e) { - echo "\n<br> ------>Error: ", $e->getMessage(), "<br><br>\n"; - $_error_count++; - } - // free memory - unset($_tpl); - $_smarty->_clearTemplateCache(); - if ($max_errors !== null && $_error_count === $max_errors) { - echo "\n<br><br>too many errors\n"; - exit(1); - } - } - } - echo "\n<br>"; - return $_count; - } -} diff --git a/libs/sysplugins/smarty_internal_method_configload.php b/libs/sysplugins/smarty_internal_method_configload.php deleted file mode 100644 index c3174d2d..00000000 --- a/libs/sysplugins/smarty_internal_method_configload.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php - -/** - * Smarty Method ConfigLoad - * - * Smarty::configLoad() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_ConfigLoad -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * load a config file, optionally load just selected sections - * - * @api Smarty::configLoad() - * @link https://www.smarty.net/docs/en/api.config.load.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $config_file filename - * @param mixed $sections array of section names, single - * section or null - * - * @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template - * @throws \Exception - */ - public function configLoad(Smarty_Internal_Data $data, $config_file, $sections = null) - { - $this->_loadConfigFile($data, $config_file, $sections, null); - return $data; - } - - /** - * load a config file, optionally load just selected sections - * - * @api Smarty::configLoad() - * @link https://www.smarty.net/docs/en/api.config.load.tpl - * - * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data - * @param string $config_file filename - * @param mixed $sections array of section names, single - * section or null - * @param int $scope scope into which config variables - * shall be loaded - * - * @throws \Exception - */ - public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0) - { - /* @var \Smarty $smarty */ - $smarty = $data->_getSmartyObj(); - /* @var \Smarty_Internal_Template $confObj */ - $confObj = new Smarty_Internal_Template($config_file, $smarty, $data, null, null, null, null, true); - $confObj->caching = Smarty::CACHING_OFF; - $confObj->source->config_sections = $sections; - $confObj->source->scope = $scope; - $confObj->compiled = Smarty_Template_Compiled::load($confObj); - $confObj->compiled->render($confObj); - if ($data->_isTplObj()) { - $data->compiled->file_dependency[ $confObj->source->uid ] = - array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type); - } - } - - /** - * load config variables into template object - * - * @param \Smarty_Internal_Template $tpl - * @param array $new_config_vars - */ - public function _loadConfigVars(Smarty_Internal_Template $tpl, $new_config_vars) - { - $this->_assignConfigVars($tpl->parent->config_vars, $tpl, $new_config_vars); - $tagScope = $tpl->source->scope; - if ($tagScope >= 0) { - if ($tagScope === Smarty::SCOPE_LOCAL) { - $this->_updateVarStack($tpl, $new_config_vars); - $tagScope = 0; - if (!$tpl->scope) { - return; - } - } - if ($tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) { - $mergedScope = $tagScope | $tpl->scope; - if ($mergedScope) { - // update scopes - /* @var \Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $ptr */ - foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent, $mergedScope) as $ptr) { - $this->_assignConfigVars($ptr->config_vars, $tpl, $new_config_vars); - if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) { - $this->_updateVarStack($tpl, $new_config_vars); - } - } - } - } - } - } - - /** - * Assign all config variables in given scope - * - * @param array $config_vars config variables in scope - * @param \Smarty_Internal_Template $tpl - * @param array $new_config_vars loaded config variables - */ - public function _assignConfigVars(&$config_vars, Smarty_Internal_Template $tpl, $new_config_vars) - { - // copy global config vars - foreach ($new_config_vars[ 'vars' ] as $variable => $value) { - if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) { - $config_vars[ $variable ] = $value; - } else { - $config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value); - } - } - // scan sections - $sections = $tpl->source->config_sections; - if (!empty($sections)) { - foreach ((array)$sections as $tpl_section) { - if (isset($new_config_vars[ 'sections' ][ $tpl_section ])) { - foreach ($new_config_vars[ 'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) { - if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) { - $config_vars[ $variable ] = $value; - } else { - $config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value); - } - } - } - } - } - } - - /** - * Update config variables in template local variable stack - * - * @param \Smarty_Internal_Template $tpl - * @param array $config_vars - */ - public function _updateVarStack(Smarty_Internal_Template $tpl, $config_vars) - { - $i = 0; - while (isset($tpl->_cache[ 'varStack' ][ $i ])) { - $this->_assignConfigVars($tpl->_cache[ 'varStack' ][ $i ][ 'config' ], $tpl, $config_vars); - $i++; - } - } - - /** - * gets a config variable value - * - * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data - * @param string $varName the name of the config variable - * @param bool $errorEnable - * - * @return null|string the value of the config variable - */ - public function _getConfigVariable(Smarty_Internal_Data $data, $varName, $errorEnable = true) - { - $_ptr = $data; - while ($_ptr !== null) { - if (isset($_ptr->config_vars[ $varName ])) { - // found it, return it - return $_ptr->config_vars[ $varName ]; - } - // not found, try at parent - $_ptr = $_ptr->parent; - } - if ($data->smarty->error_unassigned && $errorEnable) { - // force a notice - $x = $$varName; - } - return null; - } -} diff --git a/libs/sysplugins/smarty_internal_method_createdata.php b/libs/sysplugins/smarty_internal_method_createdata.php deleted file mode 100644 index c684c087..00000000 --- a/libs/sysplugins/smarty_internal_method_createdata.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * Smarty Method CreateData - * - * Smarty::createData() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_CreateData -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * creates a data object - * - * @api Smarty::createData() - * @link https://www.smarty.net/docs/en/api.create.data.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty $parent next higher level of Smarty - * variables - * @param string $name optional data block name - * - * @return \Smarty_Data data object - */ - public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null) - { - /* @var Smarty $smarty */ - $smarty = $obj->_getSmartyObj(); - $dataObj = new Smarty_Data($parent, $smarty, $name); - if ($smarty->debugging) { - Smarty_Internal_Debug::register_data($dataObj); - } - return $dataObj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_getautoloadfilters.php b/libs/sysplugins/smarty_internal_method_getautoloadfilters.php deleted file mode 100644 index 4145db10..00000000 --- a/libs/sysplugins/smarty_internal_method_getautoloadfilters.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/** - * Smarty Method GetAutoloadFilters - * - * Smarty::getAutoloadFilters() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters -{ - /** - * Get autoload filters - * - * @api Smarty::getAutoloadFilters() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type type of filter to get auto loads - * for. Defaults to all autoload - * filters - * - * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type - * was specified - * @throws \SmartyException - */ - public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null) - { - $smarty = $obj->_getSmartyObj(); - if ($type !== null) { - $this->_checkFilterType($type); - return isset($smarty->autoload_filters[ $type ]) ? $smarty->autoload_filters[ $type ] : array(); - } - return $smarty->autoload_filters; - } -} diff --git a/libs/sysplugins/smarty_internal_method_getconfigvariable.php b/libs/sysplugins/smarty_internal_method_getconfigvariable.php deleted file mode 100644 index b5481512..00000000 --- a/libs/sysplugins/smarty_internal_method_getconfigvariable.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -/** - * Smarty Method GetConfigVariable - * - * Smarty::getConfigVariable() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetConfigVariable -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * gets a config variable value - * - * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data - * @param string $varName the name of the config variable - * @param bool $errorEnable - * - * @return null|string the value of the config variable - */ - public function getConfigVariable(Smarty_Internal_Data $data, $varName = null, $errorEnable = true) - { - return $data->ext->configLoad->_getConfigVariable($data, $varName, $errorEnable); - } -} diff --git a/libs/sysplugins/smarty_internal_method_getconfigvars.php b/libs/sysplugins/smarty_internal_method_getconfigvars.php deleted file mode 100644 index 763bdf98..00000000 --- a/libs/sysplugins/smarty_internal_method_getconfigvars.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -/** - * Smarty Method GetConfigVars - * - * Smarty::getConfigVars() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetConfigVars -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * Returns a single or all config variables - * - * @api Smarty::getConfigVars() - * @link https://www.smarty.net/docs/en/api.get.config.vars.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $varname variable name or null - * @param bool $search_parents include parent templates? - * - * @return mixed variable value or or array of variables - */ - public function getConfigVars(Smarty_Internal_Data $data, $varname = null, $search_parents = true) - { - $_ptr = $data; - $var_array = array(); - while ($_ptr !== null) { - if (isset($varname)) { - if (isset($_ptr->config_vars[ $varname ])) { - return $_ptr->config_vars[ $varname ]; - } - } else { - $var_array = array_merge($_ptr->config_vars, $var_array); - } - // not found, try at parent - if ($search_parents) { - $_ptr = $_ptr->parent; - } else { - $_ptr = null; - } - } - if (isset($varname)) { - return ''; - } else { - return $var_array; - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_getdebugtemplate.php b/libs/sysplugins/smarty_internal_method_getdebugtemplate.php deleted file mode 100644 index 77d908c1..00000000 --- a/libs/sysplugins/smarty_internal_method_getdebugtemplate.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -/** - * Smarty Method GetDebugTemplate - * - * Smarty::getDebugTemplate() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetDebugTemplate -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * return name of debugging template - * - * @api Smarty::getDebugTemplate() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * - * @return string - */ - public function getDebugTemplate(Smarty_Internal_TemplateBase $obj) - { - $smarty = $obj->_getSmartyObj(); - return $smarty->debug_tpl; - } -} diff --git a/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php b/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php deleted file mode 100644 index 57da85c4..00000000 --- a/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -/** - * Smarty Method GetDefaultModifiers - * - * Smarty::getDefaultModifiers() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetDefaultModifiers -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Get default modifiers - * - * @api Smarty::getDefaultModifiers() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * - * @return array list of default modifiers - */ - public function getDefaultModifiers(Smarty_Internal_TemplateBase $obj) - { - $smarty = $obj->_getSmartyObj(); - return $smarty->default_modifiers; - } -} diff --git a/libs/sysplugins/smarty_internal_method_getglobal.php b/libs/sysplugins/smarty_internal_method_getglobal.php deleted file mode 100644 index 2be11d7e..00000000 --- a/libs/sysplugins/smarty_internal_method_getglobal.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -/** - * Smarty Method GetGlobal - * - * Smarty::getGlobal() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetGlobal -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * Returns a single or all global variables - * - * @api Smarty::getGlobal() - * - * @param \Smarty_Internal_Data $data - * @param string $varName variable name or null - * - * @return string|array variable value or or array of variables - */ - public function getGlobal(Smarty_Internal_Data $data, $varName = null) - { - if (isset($varName)) { - if (isset(Smarty::$global_tpl_vars[ $varName ])) { - return Smarty::$global_tpl_vars[ $varName ]->value; - } else { - return ''; - } - } else { - $_result = array(); - foreach (Smarty::$global_tpl_vars as $key => $var) { - $_result[ $key ] = $var->value; - } - return $_result; - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_getregisteredobject.php b/libs/sysplugins/smarty_internal_method_getregisteredobject.php deleted file mode 100644 index 0b3a071d..00000000 --- a/libs/sysplugins/smarty_internal_method_getregisteredobject.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -/** - * Smarty Method GetRegisteredObject - * - * Smarty::getRegisteredObject() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetRegisteredObject -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * return a reference to a registered object - * - * @api Smarty::getRegisteredObject() - * @link https://www.smarty.net/docs/en/api.get.registered.object.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $object_name object name - * - * @return object - * @throws \SmartyException if no such object is found - */ - public function getRegisteredObject(Smarty_Internal_TemplateBase $obj, $object_name) - { - $smarty = $obj->_getSmartyObj(); - if (!isset($smarty->registered_objects[ $object_name ])) { - throw new SmartyException("'$object_name' is not a registered object"); - } - if (!is_object($smarty->registered_objects[ $object_name ][ 0 ])) { - throw new SmartyException("registered '$object_name' is not an object"); - } - return $smarty->registered_objects[ $object_name ][ 0 ]; - } -} diff --git a/libs/sysplugins/smarty_internal_method_getstreamvariable.php b/libs/sysplugins/smarty_internal_method_getstreamvariable.php deleted file mode 100644 index 8db39c52..00000000 --- a/libs/sysplugins/smarty_internal_method_getstreamvariable.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -/** - * Smarty Method GetStreamVariable - * - * Smarty::getStreamVariable() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetStreamVariable -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * gets a stream variable - * - * @api Smarty::getStreamVariable() - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $variable the stream of the variable - * - * @return mixed - * @throws \SmartyException - */ - public function getStreamVariable(Smarty_Internal_Data $data, $variable) - { - $_result = ''; - $fp = fopen($variable, 'r+'); - if ($fp) { - while (!feof($fp) && ($current_line = fgets($fp)) !== false) { - $_result .= $current_line; - } - fclose($fp); - return $_result; - } - $smarty = isset($data->smarty) ? $data->smarty : $data; - if ($smarty->error_unassigned) { - throw new SmartyException('Undefined stream variable "' . $variable . '"'); - } else { - return null; - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_gettags.php b/libs/sysplugins/smarty_internal_method_gettags.php deleted file mode 100644 index 0d1335a8..00000000 --- a/libs/sysplugins/smarty_internal_method_gettags.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -/** - * Smarty Method GetTags - * - * Smarty::getTags() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetTags -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Return array of tag/attributes of all tags used by an template - * - * @api Smarty::getTags() - * @link https://www.smarty.net/docs/en/api.get.tags.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param null|string|Smarty_Internal_Template $template - * - * @return array of tag/attributes - * @throws \Exception - * @throws \SmartyException - */ - public function getTags(Smarty_Internal_TemplateBase $obj, $template = null) - { - /* @var Smarty $smarty */ - $smarty = $obj->_getSmartyObj(); - if ($obj->_isTplObj() && !isset($template)) { - $tpl = clone $obj; - } elseif (isset($template) && $template->_isTplObj()) { - $tpl = clone $template; - } elseif (isset($template) && is_string($template)) { - /* @var Smarty_Internal_Template $tpl */ - $tpl = new $smarty->template_class($template, $smarty); - // checks if template exists - if (!$tpl->source->exists) { - throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'"); - } - } - if (isset($tpl)) { - $tpl->smarty = clone $tpl->smarty; - $tpl->smarty->_cache[ 'get_used_tags' ] = true; - $tpl->_cache[ 'used_tags' ] = array(); - $tpl->smarty->merge_compiled_includes = false; - $tpl->smarty->disableSecurity(); - $tpl->caching = Smarty::CACHING_OFF; - $tpl->loadCompiler(); - $tpl->compiler->compileTemplate($tpl); - return $tpl->_cache[ 'used_tags' ]; - } - throw new SmartyException('Missing template specification'); - } -} diff --git a/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/libs/sysplugins/smarty_internal_method_gettemplatevars.php deleted file mode 100644 index 0470785b..00000000 --- a/libs/sysplugins/smarty_internal_method_gettemplatevars.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php - -/** - * Smarty Method GetTemplateVars - * - * Smarty::getTemplateVars() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_GetTemplateVars -{ - /** - * Valid for all objects - * - * @var int - */ - public $objMap = 7; - - /** - * Returns a single or all template variables - * - * @api Smarty::getTemplateVars() - * @link https://www.smarty.net/docs/en/api.get.template.vars.tpl - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $varName variable name or null - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object - * @param bool $searchParents include parent templates? - * - * @return mixed variable value or or array of variables - */ - public function getTemplateVars( - Smarty_Internal_Data $data, - $varName = null, - Smarty_Internal_Data $_ptr = null, - $searchParents = true - ) { - if (isset($varName)) { - $_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false); - if (is_object($_var)) { - return $_var->value; - } else { - return null; - } - } else { - $_result = array(); - if ($_ptr === null) { - $_ptr = $data; - } - while ($_ptr !== null) { - foreach ($_ptr->tpl_vars as $key => $var) { - if (!array_key_exists($key, $_result)) { - $_result[ $key ] = $var->value; - } - } - // not found, try at parent - if ($searchParents && isset($_ptr->parent)) { - $_ptr = $_ptr->parent; - } else { - $_ptr = null; - } - } - if ($searchParents && isset(Smarty::$global_tpl_vars)) { - foreach (Smarty::$global_tpl_vars as $key => $var) { - if (!array_key_exists($key, $_result)) { - $_result[ $key ] = $var->value; - } - } - } - return $_result; - } - } - - /** - * gets the object of a Smarty variable - * - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data - * @param string $varName the name of the Smarty variable - * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object - * @param bool $searchParents search also in parent data - * @param bool $errorEnable - * - * @return \Smarty_Variable - */ - public function _getVariable( - Smarty_Internal_Data $data, - $varName, - Smarty_Internal_Data $_ptr = null, - $searchParents = true, - $errorEnable = true - ) { - if ($_ptr === null) { - $_ptr = $data; - } - while ($_ptr !== null) { - if (isset($_ptr->tpl_vars[ $varName ])) { - // found it, return it - return $_ptr->tpl_vars[ $varName ]; - } - // not found, try at parent - if ($searchParents && isset($_ptr->parent)) { - $_ptr = $_ptr->parent; - } else { - $_ptr = null; - } - } - if (isset(Smarty::$global_tpl_vars[ $varName ])) { - // found it, return it - return Smarty::$global_tpl_vars[ $varName ]; - } - if ($errorEnable && $data->_getSmartyObj()->error_unassigned) { - // force a notice - $x = $$varName; - } - return new Smarty_Undefined_Variable; - } -} diff --git a/libs/sysplugins/smarty_internal_method_literals.php b/libs/sysplugins/smarty_internal_method_literals.php deleted file mode 100644 index bfa3f58e..00000000 --- a/libs/sysplugins/smarty_internal_method_literals.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -/** - * Smarty Method GetLiterals - * - * Smarty::getLiterals() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_Literals -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Get literals - * - * @api Smarty::getLiterals() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * - * @return array list of literals - */ - public function getLiterals(Smarty_Internal_TemplateBase $obj) - { - $smarty = $obj->_getSmartyObj(); - return (array)$smarty->literals; - } - - /** - * Add literals - * - * @api Smarty::addLiterals() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param array|string $literals literal or list of literals - * to addto add - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function addLiterals(Smarty_Internal_TemplateBase $obj, $literals = null) - { - if (isset($literals)) { - $this->set($obj->_getSmartyObj(), (array)$literals); - } - return $obj; - } - - /** - * Set literals - * - * @api Smarty::setLiterals() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param array|string $literals literal or list of literals - * to setto set - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function setLiterals(Smarty_Internal_TemplateBase $obj, $literals = null) - { - $smarty = $obj->_getSmartyObj(); - $smarty->literals = array(); - if (!empty($literals)) { - $this->set($smarty, (array)$literals); - } - return $obj; - } - - /** - * common setter for literals for easier handling of duplicates the - * Smarty::$literals array gets filled with identical key values - * - * @param \Smarty $smarty - * @param array $literals - * - * @throws \SmartyException - */ - private function set(Smarty $smarty, $literals) - { - $literals = array_combine($literals, $literals); - $error = isset($literals[ $smarty->left_delimiter ]) ? array($smarty->left_delimiter) : array(); - $error = isset($literals[ $smarty->right_delimiter ]) ? $error[] = $smarty->right_delimiter : $error; - if (!empty($error)) { - throw new SmartyException( - 'User defined literal(s) "' . $error . - '" may not be identical with left or right delimiter' - ); - } - $smarty->literals = array_merge((array)$smarty->literals, (array)$literals); - } -} diff --git a/libs/sysplugins/smarty_internal_method_loadfilter.php b/libs/sysplugins/smarty_internal_method_loadfilter.php deleted file mode 100644 index af788a24..00000000 --- a/libs/sysplugins/smarty_internal_method_loadfilter.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -/** - * Smarty Method LoadFilter - * - * Smarty::loadFilter() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_LoadFilter -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Valid filter types - * - * @var array - */ - private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true); - - /** - * load a filter of specified type and name - * - * @api Smarty::loadFilter() - * - * @link https://www.smarty.net/docs/en/api.load.filter.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type filter type - * @param string $name filter name - * - * @return bool - * @throws SmartyException if filter could not be loaded - */ - public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name) - { - $smarty = $obj->_getSmartyObj(); - $this->_checkFilterType($type); - $_plugin = "smarty_{$type}filter_{$name}"; - $_filter_name = $_plugin; - if (is_callable($_plugin)) { - $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin; - return true; - } - if ($smarty->loadPlugin($_plugin)) { - if (class_exists($_plugin, false)) { - $_plugin = array($_plugin, 'execute'); - } - if (is_callable($_plugin)) { - $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin; - return true; - } - } - throw new SmartyException("{$type}filter '{$name}' not found or callable"); - } - - /** - * Check if filter type is valid - * - * @param string $type - * - * @throws \SmartyException - */ - public function _checkFilterType($type) - { - if (!isset($this->filterTypes[ $type ])) { - throw new SmartyException("Illegal filter type '{$type}'"); - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_loadplugin.php b/libs/sysplugins/smarty_internal_method_loadplugin.php deleted file mode 100644 index 6ddcaec9..00000000 --- a/libs/sysplugins/smarty_internal_method_loadplugin.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -/** - * Smarty Extension Loadplugin - * - * $smarty->loadPlugin() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_LoadPlugin -{ - /** - * Cache of searched plugin files - * - * @var array - */ - public $plugin_files = array(); - - /** - * Takes unknown classes and loads plugin files for them - * class name format: Smarty_PluginType_PluginName - * plugin filename format: plugintype.pluginname.php - * - * @param \Smarty $smarty - * @param string $plugin_name class plugin name to load - * @param bool $check check if already loaded - * - * @return bool|string - * @throws \SmartyException - */ - public function loadPlugin(Smarty $smarty, $plugin_name, $check) - { - // if function or class exists, exit silently (already loaded) - if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) { - return true; - } - if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) { - throw new SmartyException("plugin {$plugin_name} is not a valid name format"); - } - if (!empty($match[ 2 ])) { - $file = SMARTY_SYSPLUGINS_DIR . smarty_strtolower_ascii($plugin_name) . '.php'; - if (isset($this->plugin_files[ $file ])) { - if ($this->plugin_files[ $file ] !== false) { - return $this->plugin_files[ $file ]; - } else { - return false; - } - } else { - if (is_file($file)) { - $this->plugin_files[ $file ] = $file; - include_once $file; - return $file; - } else { - $this->plugin_files[ $file ] = false; - return false; - } - } - } - // plugin filename is expected to be: [type].[name].php - $_plugin_filename = "{$match[1]}.{$match[4]}.php"; - $_lower_filename = smarty_strtolower_ascii($_plugin_filename); - if (isset($this->plugin_files)) { - if (isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) { - if (!$smarty->use_include_path || $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] !== false) { - return $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ]; - } - } - if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) { - unset($this->plugin_files[ 'include_path' ]); - } else { - if (isset($this->plugin_files[ 'include_path' ][ $_lower_filename ])) { - return $this->plugin_files[ 'include_path' ][ $_lower_filename ]; - } - } - } - $_file_names = array($_plugin_filename); - if ($_lower_filename !== $_plugin_filename) { - $_file_names[] = $_lower_filename; - } - $_p_dirs = $smarty->getPluginsDir(); - if (!isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) { - // loop through plugin dirs and find the plugin - foreach ($_p_dirs as $_plugin_dir) { - foreach ($_file_names as $name) { - $file = $_plugin_dir . $name; - if (is_file($file)) { - $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = $file; - include_once $file; - return $file; - } - $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = false; - } - } - } - if ($smarty->use_include_path) { - foreach ($_file_names as $_file_name) { - // try PHP include_path - $file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty); - $this->plugin_files[ 'include_path' ][ $_lower_filename ] = $file; - if ($file !== false) { - include_once $file; - return $file; - } - } - } - // no plugin loaded - return false; - } -} diff --git a/libs/sysplugins/smarty_internal_method_mustcompile.php b/libs/sysplugins/smarty_internal_method_mustcompile.php deleted file mode 100644 index 381346c8..00000000 --- a/libs/sysplugins/smarty_internal_method_mustcompile.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -/** - * Smarty Method MustCompile - * - * Smarty_Internal_Template::mustCompile() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_MustCompile -{ - /** - * Valid for template object - * - * @var int - */ - public $objMap = 2; - - /** - * Returns if the current template must be compiled by the Smarty compiler - * It does compare the timestamps of template source and the compiled templates and checks the force compile - * configuration - * - * @param \Smarty_Internal_Template $_template - * - * @return bool - * @throws \SmartyException - */ - public function mustCompile(Smarty_Internal_Template $_template) - { - if (!$_template->source->exists) { - if ($_template->_isSubTpl()) { - $parent_resource = " in '{$_template->parent->template_resource}'"; - } else { - $parent_resource = ''; - } - throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}"); - } - if ($_template->mustCompile === null) { - $_template->mustCompile = (!$_template->source->handler->uncompiled && - ($_template->smarty->force_compile || $_template->source->handler->recompiled || - !$_template->compiled->exists || ($_template->compile_check && - $_template->compiled->getTimeStamp() < - $_template->source->getTimeStamp()))); - } - return $_template->mustCompile; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registercacheresource.php b/libs/sysplugins/smarty_internal_method_registercacheresource.php deleted file mode 100644 index 5608b3fd..00000000 --- a/libs/sysplugins/smarty_internal_method_registercacheresource.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * Smarty Method RegisterCacheResource - * - * Smarty::registerCacheResource() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterCacheResource -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers a resource to fetch a template - * - * @api Smarty::registerCacheResource() - * @link https://www.smarty.net/docs/en/api.register.cacheresource.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $name name of resource type - * @param \Smarty_CacheResource $resource_handler - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function registerCacheResource( - Smarty_Internal_TemplateBase $obj, - $name, - Smarty_CacheResource $resource_handler - ) { - $smarty = $obj->_getSmartyObj(); - $smarty->registered_cache_resources[ $name ] = $resource_handler; - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerclass.php b/libs/sysplugins/smarty_internal_method_registerclass.php deleted file mode 100644 index 76a69c6e..00000000 --- a/libs/sysplugins/smarty_internal_method_registerclass.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -/** - * Smarty Method RegisterClass - * - * Smarty::registerClass() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterClass -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers static classes to be used in templates - * - * @api Smarty::registerClass() - * @link https://www.smarty.net/docs/en/api.register.class.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $class_name - * @param string $class_impl the referenced PHP class to - * register - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function registerClass(Smarty_Internal_TemplateBase $obj, $class_name, $class_impl) - { - $smarty = $obj->_getSmartyObj(); - // test if exists - if (!class_exists($class_impl)) { - throw new SmartyException("Undefined class '$class_impl' in register template class"); - } - // register the class - $smarty->registered_classes[ $class_name ] = $class_impl; - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php b/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php deleted file mode 100644 index b340f178..00000000 --- a/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * Smarty Method RegisterDefaultConfigHandler - * - * Smarty::registerDefaultConfigHandler() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterDefaultConfigHandler -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Register config default handler - * - * @api Smarty::registerDefaultConfigHandler() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param callable $callback class/method name - * - * @return \Smarty|\Smarty_Internal_Template - * @throws SmartyException if $callback is not callable - */ - public function registerDefaultConfigHandler(Smarty_Internal_TemplateBase $obj, $callback) - { - $smarty = $obj->_getSmartyObj(); - if (is_callable($callback)) { - $smarty->default_config_handler_func = $callback; - } else { - throw new SmartyException('Default config handler not callable'); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php b/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php deleted file mode 100644 index 4cda5b05..00000000 --- a/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/** - * Smarty Method RegisterDefaultPluginHandler - * - * Smarty::registerDefaultPluginHandler() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterDefaultPluginHandler -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers a default plugin handler - * - * @api Smarty::registerDefaultPluginHandler() - * @link https://www.smarty.net/docs/en/api.register.default.plugin.handler.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param callable $callback class/method name - * - * @return \Smarty|\Smarty_Internal_Template - * @throws SmartyException if $callback is not callable - */ - public function registerDefaultPluginHandler(Smarty_Internal_TemplateBase $obj, $callback) - { - $smarty = $obj->_getSmartyObj(); - if (is_callable($callback)) { - $smarty->default_plugin_handler_func = $callback; - } else { - throw new SmartyException("Default plugin handler '$callback' not callable"); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php b/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php deleted file mode 100644 index cbc133cc..00000000 --- a/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * Smarty Method RegisterDefaultTemplateHandler - * - * Smarty::registerDefaultTemplateHandler() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterDefaultTemplateHandler -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Register template default handler - * - * @api Smarty::registerDefaultTemplateHandler() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param callable $callback class/method name - * - * @return \Smarty|\Smarty_Internal_Template - * @throws SmartyException if $callback is not callable - */ - public function registerDefaultTemplateHandler(Smarty_Internal_TemplateBase $obj, $callback) - { - $smarty = $obj->_getSmartyObj(); - if (is_callable($callback)) { - $smarty->default_template_handler_func = $callback; - } else { - throw new SmartyException('Default template handler not callable'); - } - return $obj; - } - - /** - * get default content from template or config resource handler - * - * @param Smarty_Template_Source $source - * - * @throws \SmartyException - */ - public static function _getDefaultTemplate(Smarty_Template_Source $source) - { - if ($source->isConfig) { - $default_handler = $source->smarty->default_config_handler_func; - } else { - $default_handler = $source->smarty->default_template_handler_func; - } - $_content = $_timestamp = null; - $_return = call_user_func_array( - $default_handler, - array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty) - ); - if (is_string($_return)) { - $source->exists = is_file($_return); - if ($source->exists) { - $source->timestamp = filemtime($_return); - } else { - throw new SmartyException( - 'Default handler: Unable to load ' . - ($source->isConfig ? 'config' : 'template') . - " default file '{$_return}' for '{$source->type}:{$source->name}'" - ); - } - $source->name = $source->filepath = $_return; - $source->uid = sha1($source->filepath); - } elseif ($_return === true) { - $source->content = $_content; - $source->exists = true; - $source->uid = $source->name = sha1($_content); - $source->handler = Smarty_Resource::load($source->smarty, 'eval'); - } else { - $source->exists = false; - throw new SmartyException( - 'Default handler: No ' . ($source->isConfig ? 'config' : 'template') . - " default content for '{$source->type}:{$source->name}'" - ); - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerfilter.php b/libs/sysplugins/smarty_internal_method_registerfilter.php deleted file mode 100644 index 9719eb2b..00000000 --- a/libs/sysplugins/smarty_internal_method_registerfilter.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * Smarty Method RegisterFilter - * - * Smarty::registerFilter() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterFilter -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Valid filter types - * - * @var array - */ - private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true); - - /** - * Registers a filter function - * - * @api Smarty::registerFilter() - * - * @link https://www.smarty.net/docs/en/api.register.filter.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type filter type - * @param callback $callback - * @param string|null $name optional filter name - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null) - { - $smarty = $obj->_getSmartyObj(); - $this->_checkFilterType($type); - $name = isset($name) ? $name : $this->_getFilterName($callback); - if (!is_callable($callback)) { - throw new SmartyException("{$type}filter '{$name}' not callable"); - } - $smarty->registered_filters[ $type ][ $name ] = $callback; - return $obj; - } - - /** - * Return internal filter name - * - * @param callback $function_name - * - * @return string internal filter name - */ - public function _getFilterName($function_name) - { - if (is_array($function_name)) { - $_class_name = (is_object($function_name[ 0 ]) ? get_class($function_name[ 0 ]) : $function_name[ 0 ]); - return $_class_name . '_' . $function_name[ 1 ]; - } elseif (is_string($function_name)) { - return $function_name; - } else { - return 'closure'; - } - } - - /** - * Check if filter type is valid - * - * @param string $type - * - * @throws \SmartyException - */ - public function _checkFilterType($type) - { - if (!isset($this->filterTypes[ $type ])) { - throw new SmartyException("Illegal filter type '{$type}'"); - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerobject.php b/libs/sysplugins/smarty_internal_method_registerobject.php deleted file mode 100644 index 8e6fe052..00000000 --- a/libs/sysplugins/smarty_internal_method_registerobject.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * Smarty Method RegisterObject - * - * Smarty::registerObject() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterObject -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers object to be used in templates - * - * @api Smarty::registerObject() - * @link https://www.smarty.net/docs/en/api.register.object.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $object_name - * @param object $object the - * referenced - * PHP - * object - * to - * register - * - * @param array $allowed_methods_properties list of - * allowed - * methods - * (empty - * = all) - * - * @param bool $format smarty - * argument - * format, - * else - * traditional - * - * @param array $block_methods list of - * block-methods - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function registerObject( - Smarty_Internal_TemplateBase $obj, - $object_name, - $object, - $allowed_methods_properties = array(), - $format = true, - $block_methods = array() - ) { - $smarty = $obj->_getSmartyObj(); - // test if allowed methods callable - if (!empty($allowed_methods_properties)) { - foreach ((array)$allowed_methods_properties as $method) { - if (!is_callable(array($object, $method)) && !property_exists($object, $method)) { - throw new SmartyException("Undefined method or property '$method' in registered object"); - } - } - } - // test if block methods callable - if (!empty($block_methods)) { - foreach ((array)$block_methods as $method) { - if (!is_callable(array($object, $method))) { - throw new SmartyException("Undefined method '$method' in registered object"); - } - } - } - // register the object - $smarty->registered_objects[ $object_name ] = - array($object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods); - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerplugin.php b/libs/sysplugins/smarty_internal_method_registerplugin.php deleted file mode 100644 index 74c0ae90..00000000 --- a/libs/sysplugins/smarty_internal_method_registerplugin.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -/** - * Smarty Method RegisterPlugin - * - * Smarty::registerPlugin() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterPlugin -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers plugin to be used in templates - * - * @api Smarty::registerPlugin() - * @link https://www.smarty.net/docs/en/api.register.plugin.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type plugin type - * @param string $name name of template tag - * @param callback $callback PHP callback to register - * @param bool $cacheable if true (default) this - * function is cache able - * @param mixed $cache_attr caching attributes if any - * - * @return \Smarty|\Smarty_Internal_Template - * @throws SmartyException when the plugin tag is invalid - */ - public function registerPlugin( - Smarty_Internal_TemplateBase $obj, - $type, - $name, - $callback, - $cacheable = true, - $cache_attr = null - ) { - $smarty = $obj->_getSmartyObj(); - if (isset($smarty->registered_plugins[ $type ][ $name ])) { - throw new SmartyException("Plugin tag '{$name}' already registered"); - } elseif (!is_callable($callback)) { - throw new SmartyException("Plugin '{$name}' not callable"); - } elseif ($cacheable && $cache_attr) { - throw new SmartyException("Cannot set caching attributes for plugin '{$name}' when it is cacheable."); - } else { - $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool)$cacheable, (array)$cache_attr); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_registerresource.php b/libs/sysplugins/smarty_internal_method_registerresource.php deleted file mode 100644 index 302657ae..00000000 --- a/libs/sysplugins/smarty_internal_method_registerresource.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/** - * Smarty Method RegisterResource - * - * Smarty::registerResource() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_RegisterResource -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers a resource to fetch a template - * - * @api Smarty::registerResource() - * @link https://www.smarty.net/docs/en/api.register.resource.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $name name of resource type - * @param Smarty_Resource $resource_handler instance of Smarty_Resource - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function registerResource(Smarty_Internal_TemplateBase $obj, $name, Smarty_Resource $resource_handler) - { - $smarty = $obj->_getSmartyObj(); - $smarty->registered_resources[ $name ] = $resource_handler; - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_setautoloadfilters.php b/libs/sysplugins/smarty_internal_method_setautoloadfilters.php deleted file mode 100644 index 2972f3ce..00000000 --- a/libs/sysplugins/smarty_internal_method_setautoloadfilters.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -/** - * Smarty Method SetAutoloadFilters - * - * Smarty::setAutoloadFilters() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_SetAutoloadFilters -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Valid filter types - * - * @var array - */ - private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true); - - /** - * Set autoload filters - * - * @api Smarty::setAutoloadFilters() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @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 - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null) - { - $smarty = $obj->_getSmartyObj(); - if ($type !== null) { - $this->_checkFilterType($type); - $smarty->autoload_filters[ $type ] = (array)$filters; - } else { - foreach ((array)$filters as $type => $value) { - $this->_checkFilterType($type); - } - $smarty->autoload_filters = (array)$filters; - } - return $obj; - } - - /** - * Check if filter type is valid - * - * @param string $type - * - * @throws \SmartyException - */ - public function _checkFilterType($type) - { - if (!isset($this->filterTypes[ $type ])) { - throw new SmartyException("Illegal filter type '{$type}'"); - } - } -} diff --git a/libs/sysplugins/smarty_internal_method_setdebugtemplate.php b/libs/sysplugins/smarty_internal_method_setdebugtemplate.php deleted file mode 100644 index cc9d23e2..00000000 --- a/libs/sysplugins/smarty_internal_method_setdebugtemplate.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * Smarty Method SetDebugTemplate - * - * Smarty::setDebugTemplate() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_SetDebugTemplate -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * set the debug template - * - * @api Smarty::setDebugTemplate() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $tpl_name - * - * @return \Smarty|\Smarty_Internal_Template - * @throws SmartyException if file is not readable - */ - public function setDebugTemplate(Smarty_Internal_TemplateBase $obj, $tpl_name) - { - $smarty = $obj->_getSmartyObj(); - if (!is_readable($tpl_name)) { - throw new SmartyException("Unknown file '{$tpl_name}'"); - } - $smarty->debug_tpl = $tpl_name; - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php b/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php deleted file mode 100644 index eadc2de1..00000000 --- a/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/** - * Smarty Method SetDefaultModifiers - * - * Smarty::setDefaultModifiers() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_SetDefaultModifiers -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Set default modifiers - * - * @api Smarty::setDefaultModifiers() - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param array|string $modifiers modifier or list of modifiers - * to set - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function setDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers) - { - $smarty = $obj->_getSmartyObj(); - $smarty->default_modifiers = (array)$modifiers; - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_unloadfilter.php b/libs/sysplugins/smarty_internal_method_unloadfilter.php deleted file mode 100644 index e41e8dff..00000000 --- a/libs/sysplugins/smarty_internal_method_unloadfilter.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/** - * Smarty Method UnloadFilter - * - * Smarty::unloadFilter() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_UnloadFilter extends Smarty_Internal_Method_LoadFilter -{ - /** - * load a filter of specified type and name - * - * @api Smarty::unloadFilter() - * - * @link https://www.smarty.net/docs/en/api.unload.filter.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type filter type - * @param string $name filter name - * - * @return Smarty_Internal_TemplateBase - * @throws \SmartyException - */ - public function unloadFilter(Smarty_Internal_TemplateBase $obj, $type, $name) - { - $smarty = $obj->_getSmartyObj(); - $this->_checkFilterType($type); - if (isset($smarty->registered_filters[ $type ])) { - $_filter_name = "smarty_{$type}filter_{$name}"; - if (isset($smarty->registered_filters[ $type ][ $_filter_name ])) { - unset($smarty->registered_filters[ $type ][ $_filter_name ]); - if (empty($smarty->registered_filters[ $type ])) { - unset($smarty->registered_filters[ $type ]); - } - } - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_unregistercacheresource.php b/libs/sysplugins/smarty_internal_method_unregistercacheresource.php deleted file mode 100644 index 377397e9..00000000 --- a/libs/sysplugins/smarty_internal_method_unregistercacheresource.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * Smarty Method UnregisterCacheResource - * - * Smarty::unregisterCacheResource() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_UnregisterCacheResource -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers a resource to fetch a template - * - * @api Smarty::unregisterCacheResource() - * @link https://www.smarty.net/docs/en/api.unregister.cacheresource.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param $name - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function unregisterCacheResource(Smarty_Internal_TemplateBase $obj, $name) - { - $smarty = $obj->_getSmartyObj(); - if (isset($smarty->registered_cache_resources[ $name ])) { - unset($smarty->registered_cache_resources[ $name ]); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_unregisterfilter.php b/libs/sysplugins/smarty_internal_method_unregisterfilter.php deleted file mode 100644 index ebc9337d..00000000 --- a/libs/sysplugins/smarty_internal_method_unregisterfilter.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/** - * Smarty Method UnregisterFilter - * - * Smarty::unregisterFilter() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_UnregisterFilter extends Smarty_Internal_Method_RegisterFilter -{ - /** - * Unregisters a filter function - * - * @api Smarty::unregisterFilter() - * - * @link https://www.smarty.net/docs/en/api.unregister.filter.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type filter type - * @param callback|string $callback - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function unregisterFilter(Smarty_Internal_TemplateBase $obj, $type, $callback) - { - $smarty = $obj->_getSmartyObj(); - $this->_checkFilterType($type); - if (isset($smarty->registered_filters[ $type ])) { - $name = is_string($callback) ? $callback : $this->_getFilterName($callback); - if (isset($smarty->registered_filters[ $type ][ $name ])) { - unset($smarty->registered_filters[ $type ][ $name ]); - if (empty($smarty->registered_filters[ $type ])) { - unset($smarty->registered_filters[ $type ]); - } - } - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_unregisterobject.php b/libs/sysplugins/smarty_internal_method_unregisterobject.php deleted file mode 100644 index 77d61963..00000000 --- a/libs/sysplugins/smarty_internal_method_unregisterobject.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * Smarty Method UnregisterObject - * - * Smarty::unregisterObject() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_UnregisterObject -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers plugin to be used in templates - * - * @api Smarty::unregisterObject() - * @link https://www.smarty.net/docs/en/api.unregister.object.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $object_name name of object - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function unregisterObject(Smarty_Internal_TemplateBase $obj, $object_name) - { - $smarty = $obj->_getSmartyObj(); - if (isset($smarty->registered_objects[ $object_name ])) { - unset($smarty->registered_objects[ $object_name ]); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_unregisterplugin.php b/libs/sysplugins/smarty_internal_method_unregisterplugin.php deleted file mode 100644 index 2431d5c2..00000000 --- a/libs/sysplugins/smarty_internal_method_unregisterplugin.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -/** - * Smarty Method UnregisterPlugin - * - * Smarty::unregisterPlugin() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_UnregisterPlugin -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers plugin to be used in templates - * - * @api Smarty::unregisterPlugin() - * @link https://www.smarty.net/docs/en/api.unregister.plugin.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type plugin type - * @param string $name name of template tag - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function unregisterPlugin(Smarty_Internal_TemplateBase $obj, $type, $name) - { - $smarty = $obj->_getSmartyObj(); - if (isset($smarty->registered_plugins[ $type ][ $name ])) { - unset($smarty->registered_plugins[ $type ][ $name ]); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_method_unregisterresource.php b/libs/sysplugins/smarty_internal_method_unregisterresource.php deleted file mode 100644 index bbb6a861..00000000 --- a/libs/sysplugins/smarty_internal_method_unregisterresource.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * Smarty Method UnregisterResource - * - * Smarty::unregisterResource() method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Method_UnregisterResource -{ - /** - * Valid for Smarty and template object - * - * @var int - */ - public $objMap = 3; - - /** - * Registers a resource to fetch a template - * - * @api Smarty::unregisterResource() - * @link https://www.smarty.net/docs/en/api.unregister.resource.tpl - * - * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj - * @param string $type name of resource type - * - * @return \Smarty|\Smarty_Internal_Template - */ - public function unregisterResource(Smarty_Internal_TemplateBase $obj, $type) - { - $smarty = $obj->_getSmartyObj(); - if (isset($smarty->registered_resources[ $type ])) { - unset($smarty->registered_resources[ $type ]); - } - return $obj; - } -} diff --git a/libs/sysplugins/smarty_internal_nocache_insert.php b/libs/sysplugins/smarty_internal_nocache_insert.php deleted file mode 100644 index 88694dcf..00000000 --- a/libs/sysplugins/smarty_internal_nocache_insert.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Nocache Insert - * Compiles the {insert} tag into the cache file - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Smarty Internal Plugin Compile Insert Class - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_Nocache_Insert -{ - /** - * Compiles code for the {insert} tag into cache file - * - * @param string $_function insert function name - * @param array $_attr array with parameter - * @param Smarty_Internal_Template $_template template object - * @param string $_script script name to load or 'null' - * @param string $_assign optional variable name - * - * @return string compiled code - */ - public static function compile($_function, $_attr, $_template, $_script, $_assign = null) - { - $_output = '<?php '; - if ($_script !== 'null') { - // script which must be included - // code for script file loading - $_output .= "require_once '{$_script}';"; - } - // call insert - if (isset($_assign)) { - $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . - ',\$_smarty_tpl), true);?>'; - } else { - $_output .= "echo {$_function}(" . var_export($_attr, true) . ',$_smarty_tpl);?>'; - } - $_tpl = $_template; - while ($_tpl->_isSubTpl()) { - $_tpl = $_tpl->parent; - } - return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/"; - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree.php b/libs/sysplugins/smarty_internal_parsetree.php deleted file mode 100644 index 9f767852..00000000 --- a/libs/sysplugins/smarty_internal_parsetree.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Templateparser Parsetree - * These are classes to build parsetree in the template parser - * - * @package Smarty - * @subpackage Compiler - * @author Thue Kristensen - * @author Uwe Tews - */ - -/** - * @package Smarty - * @subpackage Compiler - * @ignore - */ -abstract class Smarty_Internal_ParseTree -{ - /** - * Buffer content - * - * @var mixed - */ - public $data; - - /** - * Subtree array - * - * @var array - */ - public $subtrees = array(); - - /** - * Return buffer - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string buffer content - */ - abstract public function to_smarty_php(Smarty_Internal_Templateparser $parser); - - /** - * Template data object destructor - */ - public function __destruct() - { - $this->data = null; - $this->subtrees = null; - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree_code.php b/libs/sysplugins/smarty_internal_parsetree_code.php deleted file mode 100644 index 7bd0bc45..00000000 --- a/libs/sysplugins/smarty_internal_parsetree_code.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Templateparser Parse Tree - * These are classes to build parse trees in the template parser - * - * @package Smarty - * @subpackage Compiler - * @author Thue Kristensen - * @author Uwe Tews - */ - -/** - * Code fragment inside a tag . - * - * @package Smarty - * @subpackage Compiler - * @ignore - */ -class Smarty_Internal_ParseTree_Code extends Smarty_Internal_ParseTree -{ - /** - * Create parse tree buffer for code fragment - * - * @param string $data content - */ - public function __construct($data) - { - $this->data = $data; - } - - /** - * Return buffer content in parentheses - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string content - */ - public function to_smarty_php(Smarty_Internal_Templateparser $parser) - { - return sprintf('(%s)', $this->data); - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree_dq.php b/libs/sysplugins/smarty_internal_parsetree_dq.php deleted file mode 100644 index 8655f586..00000000 --- a/libs/sysplugins/smarty_internal_parsetree_dq.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php -/** - * Double quoted string inside a tag. - * - * @package Smarty - * @subpackage Compiler - * @ignore - */ - -/** - * Double quoted string inside a tag. - * - * @package Smarty - * @subpackage Compiler - * @ignore - */ -class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree -{ - /** - * Create parse tree buffer for double quoted string subtrees - * - * @param object $parser parser object - * @param Smarty_Internal_ParseTree $subtree parse tree buffer - */ - public function __construct($parser, Smarty_Internal_ParseTree $subtree) - { - $this->subtrees[] = $subtree; - if ($subtree instanceof Smarty_Internal_ParseTree_Tag) { - $parser->block_nesting_level = count($parser->compiler->_tag_stack); - } - } - - /** - * Append buffer to subtree - * - * @param \Smarty_Internal_Templateparser $parser - * @param Smarty_Internal_ParseTree $subtree parse tree buffer - */ - public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree) - { - $last_subtree = count($this->subtrees) - 1; - if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag - && $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level - ) { - if ($subtree instanceof Smarty_Internal_ParseTree_Code) { - $this->subtrees[ $last_subtree ]->data = - $parser->compiler->appendCode( - $this->subtrees[ $last_subtree ]->data, - '<?php echo ' . $subtree->data . ';?>' - ); - } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) { - $this->subtrees[ $last_subtree ]->data = - $parser->compiler->appendCode( - $this->subtrees[ $last_subtree ]->data, - '<?php echo "' . $subtree->data . '";?>' - ); - } else { - $this->subtrees[ $last_subtree ]->data = - $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data); - } - } else { - $this->subtrees[] = $subtree; - } - if ($subtree instanceof Smarty_Internal_ParseTree_Tag) { - $parser->block_nesting_level = count($parser->compiler->_tag_stack); - } - } - - /** - * Merge subtree buffer content together - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string compiled template code - */ - public function to_smarty_php(Smarty_Internal_Templateparser $parser) - { - $code = ''; - foreach ($this->subtrees as $subtree) { - if ($code !== '') { - $code .= '.'; - } - if ($subtree instanceof Smarty_Internal_ParseTree_Tag) { - $more_php = $subtree->assign_to_var($parser); - } else { - $more_php = $subtree->to_smarty_php($parser); - } - $code .= $more_php; - if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) { - $parser->compiler->has_variable_string = true; - } - } - return $code; - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree_dqcontent.php b/libs/sysplugins/smarty_internal_parsetree_dqcontent.php deleted file mode 100644 index a8ca389d..00000000 --- a/libs/sysplugins/smarty_internal_parsetree_dqcontent.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Templateparser Parse Tree - * These are classes to build parse tree in the template parser - * - * @package Smarty - * @subpackage Compiler - * @author Thue Kristensen - * @author Uwe Tews - */ - -/** - * Raw chars as part of a double quoted string. - * - * @package Smarty - * @subpackage Compiler - * @ignore - */ -class Smarty_Internal_ParseTree_DqContent extends Smarty_Internal_ParseTree -{ - /** - * Create parse tree buffer with string content - * - * @param string $data string section - */ - public function __construct($data) - { - $this->data = $data; - } - - /** - * Return content as double quoted string - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string doubled quoted string - */ - public function to_smarty_php(Smarty_Internal_Templateparser $parser) - { - return '"' . $this->data . '"'; - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree_tag.php b/libs/sysplugins/smarty_internal_parsetree_tag.php deleted file mode 100644 index e6c75560..00000000 --- a/libs/sysplugins/smarty_internal_parsetree_tag.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Templateparser Parse Tree - * These are classes to build parse tree in the template parser - * - * @package Smarty - * @subpackage Compiler - * @author Thue Kristensen - * @author Uwe Tews - */ - -/** - * A complete smarty tag. - * - * @package Smarty - * @subpackage Compiler - * @ignore - */ -class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree -{ - /** - * Saved block nesting level - * - * @var int - */ - public $saved_block_nesting; - - /** - * Create parse tree buffer for Smarty tag - * - * @param \Smarty_Internal_Templateparser $parser parser object - * @param string $data content - */ - public function __construct(Smarty_Internal_Templateparser $parser, $data) - { - $this->data = $data; - $this->saved_block_nesting = $parser->block_nesting_level; - } - - /** - * Return buffer content - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string content - */ - public function to_smarty_php(Smarty_Internal_Templateparser $parser) - { - return $this->data; - } - - /** - * Return complied code that loads the evaluated output of buffer content into a temporary variable - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string template code - */ - public function assign_to_var(Smarty_Internal_Templateparser $parser) - { - $var = $parser->compiler->getNewPrefixVariable(); - $tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data); - $tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>"); - $parser->compiler->prefix_code[] = sprintf('%s', $tmp); - return $var; - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree_template.php b/libs/sysplugins/smarty_internal_parsetree_template.php deleted file mode 100644 index 829c420f..00000000 --- a/libs/sysplugins/smarty_internal_parsetree_template.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Templateparser Parse Tree - * These are classes to build parse tree in the template parser - * - * @package Smarty - * @subpackage Compiler - * @author Thue Kristensen - * @author Uwe Tews - */ - -/** - * Template element - * - * @package Smarty - * @subpackage Compiler - * @ignore - */ -class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree -{ - /** - * Array of template elements - * - * @var array - */ - public $subtrees = array(); - - /** - * Create root of parse tree for template elements - */ - public function __construct() - { - } - - /** - * Append buffer to subtree - * - * @param \Smarty_Internal_Templateparser $parser - * @param Smarty_Internal_ParseTree $subtree - */ - public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree) - { - if (!empty($subtree->subtrees)) { - $this->subtrees = array_merge($this->subtrees, $subtree->subtrees); - } else { - if ($subtree->data !== '') { - $this->subtrees[] = $subtree; - } - } - } - - /** - * Append array to subtree - * - * @param \Smarty_Internal_Templateparser $parser - * @param \Smarty_Internal_ParseTree[] $array - */ - public function append_array(Smarty_Internal_Templateparser $parser, $array = array()) - { - if (!empty($array)) { - $this->subtrees = array_merge($this->subtrees, (array)$array); - } - } - - /** - * Prepend array to subtree - * - * @param \Smarty_Internal_Templateparser $parser - * @param \Smarty_Internal_ParseTree[] $array - */ - public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array()) - { - if (!empty($array)) { - $this->subtrees = array_merge((array)$array, $this->subtrees); - } - } - - /** - * Sanitize and merge subtree buffers together - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string template code content - */ - public function to_smarty_php(Smarty_Internal_Templateparser $parser) - { - $code = ''; - - foreach ($this->getChunkedSubtrees() as $chunk) { - $text = ''; - switch ($chunk['mode']) { - case 'textstripped': - foreach ($chunk['subtrees'] as $subtree) { - $text .= $subtree->to_smarty_php($parser); - } - $code .= preg_replace( - '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', - "<?php echo '\$1'; ?>\n", - $parser->compiler->processText($text) - ); - break; - case 'text': - foreach ($chunk['subtrees'] as $subtree) { - $text .= $subtree->to_smarty_php($parser); - } - $code .= preg_replace( - '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', - "<?php echo '\$1'; ?>\n", - $text - ); - break; - case 'tag': - foreach ($chunk['subtrees'] as $subtree) { - $text = $parser->compiler->appendCode($text, $subtree->to_smarty_php($parser)); - } - $code .= $text; - break; - default: - foreach ($chunk['subtrees'] as $subtree) { - $text = $subtree->to_smarty_php($parser); - } - $code .= $text; - - } - } - return $code; - } - - private function getChunkedSubtrees() { - $chunks = array(); - $currentMode = null; - $currentChunk = array(); - for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) { - - if ($this->subtrees[ $key ]->data === '' && in_array($currentMode, array('textstripped', 'text', 'tag'))) { - continue; - } - - if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text - && $this->subtrees[ $key ]->isToBeStripped()) { - $newMode = 'textstripped'; - } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) { - $newMode = 'text'; - } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) { - $newMode = 'tag'; - } else { - $newMode = 'other'; - } - - if ($newMode == $currentMode) { - $currentChunk[] = $this->subtrees[ $key ]; - } else { - $chunks[] = array( - 'mode' => $currentMode, - 'subtrees' => $currentChunk - ); - $currentMode = $newMode; - $currentChunk = array($this->subtrees[ $key ]); - } - } - if ($currentMode && $currentChunk) { - $chunks[] = array( - 'mode' => $currentMode, - 'subtrees' => $currentChunk - ); - } - return $chunks; - } -} diff --git a/libs/sysplugins/smarty_internal_parsetree_text.php b/libs/sysplugins/smarty_internal_parsetree_text.php deleted file mode 100644 index 58116c81..00000000 --- a/libs/sysplugins/smarty_internal_parsetree_text.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php - -/** - * Smarty Internal Plugin Templateparser Parse Tree - * These are classes to build parse tree in the template parser - * - * @package Smarty - * @subpackage Compiler - * @author Thue Kristensen - * @author Uwe Tews - * * - * template text - * @package Smarty - * @subpackage Compiler - * @ignore - */ -class Smarty_Internal_ParseTree_Text extends Smarty_Internal_ParseTree -{ - - /** - * Wether this section should be stripped on output to smarty php - * @var bool - */ - private $toBeStripped = false; - - /** - * Create template text buffer - * - * @param string $data text - * @param bool $toBeStripped wether this section should be stripped on output to smarty php - */ - public function __construct($data, $toBeStripped = false) - { - $this->data = $data; - $this->toBeStripped = $toBeStripped; - } - - /** - * Wether this section should be stripped on output to smarty php - * @return bool - */ - public function isToBeStripped() { - return $this->toBeStripped; - } - - /** - * Return buffer content - * - * @param \Smarty_Internal_Templateparser $parser - * - * @return string text - */ - public function to_smarty_php(Smarty_Internal_Templateparser $parser) - { - return $this->data; - } -} diff --git a/libs/sysplugins/smarty_internal_resource_eval.php b/libs/sysplugins/smarty_internal_resource_eval.php deleted file mode 100644 index 3b552a58..00000000 --- a/libs/sysplugins/smarty_internal_resource_eval.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Resource Eval - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm - */ - -/** - * Smarty Internal Plugin Resource Eval - * Implements the strings as resource for Smarty template - * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}} - * - * @package Smarty - * @subpackage TemplateResources - */ -class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled -{ - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - $source->uid = $source->filepath = sha1($source->name); - $source->timestamp = $source->exists = true; - } - - /** - * Load template's source from $resource_name into current template object - * - * @uses decode() to decode base64 and urlencoded template_resources - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - */ - public function getContent(Smarty_Template_Source $source) - { - return $this->decode($source->name); - } - - /** - * decode base64 and urlencode - * - * @param string $string template_resource to decode - * - * @return string decoded template_resource - */ - protected function decode($string) - { - // decode if specified - if (($pos = strpos($string, ':')) !== false) { - if (!strncmp($string, 'base64', 6)) { - return base64_decode(substr($string, 7)); - } elseif (!strncmp($string, 'urlencode', 9)) { - return urldecode(substr($string, 10)); - } - } - return $string; - } - - /** - * modify resource_name according to resource handlers specifications - * - * @param Smarty $smarty Smarty instance - * @param string $resource_name resource_name to make unique - * @param boolean $isConfig flag for config resource - * - * @return string unique resource name - */ - public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) - { - return get_class($this) . '#' . $this->decode($resource_name); - } - - /** - * Determine basename for compiled filename - * - * @param Smarty_Template_Source $source source object - * - * @return string resource's basename - */ - public function getBasename(Smarty_Template_Source $source) - { - return ''; - } -} diff --git a/libs/sysplugins/smarty_internal_resource_extends.php b/libs/sysplugins/smarty_internal_resource_extends.php deleted file mode 100644 index 80946932..00000000 --- a/libs/sysplugins/smarty_internal_resource_extends.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Resource Extends - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm - */ - -/** - * Smarty Internal Plugin Resource Extends - * Implements the file system as resource for Smarty which {extend}s a chain of template files templates - * - * @package Smarty - * @subpackage TemplateResources - */ -class Smarty_Internal_Resource_Extends extends Smarty_Resource -{ - /** - * mbstring.overload flag - * - * @var int - */ - public $mbstring_overload = 0; - - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @throws SmartyException - */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - $uid = ''; - $sources = array(); - $components = explode('|', $source->name); - $smarty = &$source->smarty; - $exists = true; - foreach ($components as $component) { - /* @var \Smarty_Template_Source $_s */ - $_s = Smarty_Template_Source::load(null, $smarty, $component); - if ($_s->type === 'php') { - throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type"); - } - $sources[ $_s->uid ] = $_s; - $uid .= $_s->filepath; - if ($_template) { - $exists = $exists && $_s->exists; - } - } - $source->components = $sources; - $source->filepath = $_s->filepath; - $source->uid = sha1($uid . $source->smarty->_joined_template_dir); - $source->exists = $exists; - if ($_template) { - $source->timestamp = $_s->timestamp; - } - } - - /** - * populate Source Object with timestamp and exists from Resource - * - * @param Smarty_Template_Source $source source object - */ - public function populateTimestamp(Smarty_Template_Source $source) - { - $source->exists = true; - /* @var \Smarty_Template_Source $_s */ - foreach ($source->components as $_s) { - $source->exists = $source->exists && $_s->exists; - } - $source->timestamp = $source->exists ? $_s->getTimeStamp() : false; - } - - /** - * Load template's source from files into current template object - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - * @throws SmartyException if source cannot be loaded - */ - public function getContent(Smarty_Template_Source $source) - { - if (!$source->exists) { - throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'"); - } - $_components = array_reverse($source->components); - $_content = ''; - /* @var \Smarty_Template_Source $_s */ - foreach ($_components as $_s) { - // read content - $_content .= $_s->getContent(); - } - return $_content; - } - - /** - * Determine basename for compiled filename - * - * @param Smarty_Template_Source $source source object - * - * @return string resource's basename - */ - public function getBasename(Smarty_Template_Source $source) - { - return str_replace(':', '.', basename($source->filepath)); - } - - /* - * Disable timestamp checks for extends resource. - * The individual source components will be checked. - * - * @return bool - */ - /** - * @return bool - */ - public function checkTimestamps() - { - return false; - } -} diff --git a/libs/sysplugins/smarty_internal_resource_file.php b/libs/sysplugins/smarty_internal_resource_file.php deleted file mode 100644 index ae206067..00000000 --- a/libs/sysplugins/smarty_internal_resource_file.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Resource File - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm - */ - -/** - * Smarty Internal Plugin Resource File - * Implements the file system as resource for Smarty templates - * - * @package Smarty - * @subpackage TemplateResources - */ -class Smarty_Internal_Resource_File extends Smarty_Resource -{ - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @throws \SmartyException - */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - $source->filepath = $this->buildFilepath($source, $_template); - if ($source->filepath !== false) { - if (isset($source->smarty->security_policy) && is_object($source->smarty->security_policy)) { - $source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig); - } - $source->exists = true; - $source->uid = sha1( - $source->filepath . ($source->isConfig ? $source->smarty->_joined_config_dir : - $source->smarty->_joined_template_dir) - ); - $source->timestamp = filemtime($source->filepath); - } else { - $source->timestamp = $source->exists = false; - } - } - - /** - * populate Source Object with timestamp and exists from Resource - * - * @param Smarty_Template_Source $source source object - */ - public function populateTimestamp(Smarty_Template_Source $source) - { - if (!$source->exists) { - $source->timestamp = $source->exists = is_file($source->filepath); - } - if ($source->exists) { - $source->timestamp = filemtime($source->filepath); - } - } - - /** - * Load template's source from file into current template object - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - * @throws SmartyException if source cannot be loaded - */ - public function getContent(Smarty_Template_Source $source) - { - if ($source->exists) { - return file_get_contents($source->filepath); - } - throw new SmartyException( - 'Unable to read ' . ($source->isConfig ? 'config' : 'template') . - " {$source->type} '{$source->name}'" - ); - } - - /** - * Determine basename for compiled filename - * - * @param Smarty_Template_Source $source source object - * - * @return string resource's basename - */ - public function getBasename(Smarty_Template_Source $source) - { - return basename($source->filepath); - } - - /** - * build template filepath by traversing the template_dir array - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @return string fully qualified filepath - * @throws SmartyException - */ - protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - $file = $source->name; - // absolute file ? - if ($file[ 0 ] === '/' || $file[ 1 ] === ':') { - $file = $source->smarty->_realpath($file, true); - return is_file($file) ? $file : false; - } - // go relative to a given template? - if ($file[ 0 ] === '.' && $_template && $_template->_isSubTpl() - && preg_match('#^[.]{1,2}[\\\/]#', $file) - ) { - if ($_template->parent->source->type !== 'file' && $_template->parent->source->type !== 'extends' - && !isset($_template->parent->_cache[ 'allow_relative_path' ]) - ) { - throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'"); - } - // normalize path - $path = - $source->smarty->_realpath(dirname($_template->parent->source->filepath) . DIRECTORY_SEPARATOR . $file); - // files relative to a template only get one shot - return is_file($path) ? $path : false; - } - // normalize DIRECTORY_SEPARATOR - if (strpos($file, DIRECTORY_SEPARATOR === '/' ? '\\' : '/') !== false) { - $file = str_replace(DIRECTORY_SEPARATOR === '/' ? '\\' : '/', DIRECTORY_SEPARATOR, $file); - } - $_directories = $source->smarty->getTemplateDir(null, $source->isConfig); - // template_dir index? - if ($file[ 0 ] === '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) { - $file = $fileMatch[ 2 ]; - $_indices = explode(',', $fileMatch[ 1 ]); - $_index_dirs = array(); - foreach ($_indices as $index) { - $index = trim($index); - // try string indexes - if (isset($_directories[ $index ])) { - $_index_dirs[] = $_directories[ $index ]; - } elseif (is_numeric($index)) { - // try numeric index - $index = (int)$index; - if (isset($_directories[ $index ])) { - $_index_dirs[] = $_directories[ $index ]; - } else { - // try at location index - $keys = array_keys($_directories); - if (isset($_directories[ $keys[ $index ] ])) { - $_index_dirs[] = $_directories[ $keys[ $index ] ]; - } - } - } - } - if (empty($_index_dirs)) { - // index not found - return false; - } else { - $_directories = $_index_dirs; - } - } - // relative file name? - foreach ($_directories as $_directory) { - $path = $_directory . $file; - if (is_file($path)) { - return (strpos($path, '.' . DIRECTORY_SEPARATOR) !== false) ? $source->smarty->_realpath($path) : $path; - } - } - if (!isset($_index_dirs)) { - // Could be relative to cwd - $path = $source->smarty->_realpath($file, true); - if (is_file($path)) { - return $path; - } - } - // Use include path ? - if ($source->smarty->use_include_path) { - return $source->smarty->ext->_getIncludePath->getIncludePath($_directories, $file, $source->smarty); - } - return false; - } -} diff --git a/libs/sysplugins/smarty_internal_resource_php.php b/libs/sysplugins/smarty_internal_resource_php.php deleted file mode 100644 index 9d98ae18..00000000 --- a/libs/sysplugins/smarty_internal_resource_php.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -/** - * Smarty Internal Plugin Resource PHP - * Implements the file system as resource for PHP templates - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm - */ -class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File -{ - /** - * Flag that it's an uncompiled resource - * - * @var bool - */ - public $uncompiled = true; - - /** - * Resource does implement populateCompiledFilepath() method - * - * @var bool - */ - public $hasCompiledHandler = true; - - /** - * container for short_open_tag directive's value before executing PHP templates - * - * @var string - */ - protected $short_open_tag; - - /** - * Create a new PHP Resource - */ - public function __construct() - { - $this->short_open_tag = function_exists('ini_get') ? ini_get('short_open_tag') : 1; - } - - /** - * Load template's source from file into current template object - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - * @throws SmartyException if source cannot be loaded - */ - public function getContent(Smarty_Template_Source $source) - { - if ($source->exists) { - return ''; - } - throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); - } - - /** - * populate compiled object with compiled filepath - * - * @param Smarty_Template_Compiled $compiled compiled object - * @param Smarty_Internal_Template $_template template object (is ignored) - */ - public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) - { - $compiled->filepath = $_template->source->filepath; - $compiled->timestamp = $_template->source->timestamp; - $compiled->exists = $_template->source->exists; - $compiled->file_dependency[ $_template->source->uid ] = - array( - $compiled->filepath, - $compiled->timestamp, - $_template->source->type, - ); - } - - /** - * Render and output the template (without using the compiler) - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @return void - * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled - */ - public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template) - { - if (!$source->smarty->allow_php_templates) { - throw new SmartyException('PHP templates are disabled'); - } - if (!$source->exists) { - throw new SmartyException( - "Unable to load template '{$source->type}:{$source->name}'" . - ($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : '') - ); - } - // prepare variables - extract($_template->getTemplateVars()); - // include PHP template with short open tags enabled - if (function_exists('ini_set')) { - ini_set('short_open_tag', '1'); - } - /** - * - * - * @var Smarty_Internal_Template $_smarty_template - * used in included file - */ - $_smarty_template = $_template; - include $source->filepath; - if (function_exists('ini_set')) { - ini_set('short_open_tag', $this->short_open_tag); - } - } -} diff --git a/libs/sysplugins/smarty_internal_resource_stream.php b/libs/sysplugins/smarty_internal_resource_stream.php deleted file mode 100644 index 5f020349..00000000 --- a/libs/sysplugins/smarty_internal_resource_stream.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Resource Stream - * Implements the streams as resource for Smarty template - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm - */ - -/** - * Smarty Internal Plugin Resource Stream - * Implements the streams as resource for Smarty template - * - * @link https://php.net/streams - * @package Smarty - * @subpackage TemplateResources - */ -class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled -{ - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - if (strpos($source->resource, '://') !== false) { - $source->filepath = $source->resource; - } else { - $source->filepath = str_replace(':', '://', $source->resource); - } - $source->uid = false; - $source->content = $this->getContent($source); - $source->timestamp = $source->exists = !!$source->content; - } - - /** - * Load template's source from stream into current template object - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - */ - public function getContent(Smarty_Template_Source $source) - { - $t = ''; - // the availability of the stream has already been checked in Smarty_Resource::fetch() - $fp = fopen($source->filepath, 'r+'); - if ($fp) { - while (!feof($fp) && ($current_line = fgets($fp)) !== false) { - $t .= $current_line; - } - fclose($fp); - return $t; - } else { - return false; - } - } - - /** - * modify resource_name according to resource handlers specifications - * - * @param Smarty $smarty Smarty instance - * @param string $resource_name resource_name to make unique - * @param boolean $isConfig flag for config resource - * - * @return string unique resource name - */ - public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) - { - return get_class($this) . '#' . $resource_name; - } -} diff --git a/libs/sysplugins/smarty_internal_resource_string.php b/libs/sysplugins/smarty_internal_resource_string.php deleted file mode 100644 index 3fecbb7e..00000000 --- a/libs/sysplugins/smarty_internal_resource_string.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Resource String - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - * @author Rodney Rehm - */ - -/** - * Smarty Internal Plugin Resource String - * Implements the strings as resource for Smarty template - * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}} - * - * @package Smarty - * @subpackage TemplateResources - */ -class Smarty_Internal_Resource_String extends Smarty_Resource -{ - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - $source->uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir); - $source->timestamp = $source->exists = true; - } - - /** - * Load template's source from $resource_name into current template object - * - * @uses decode() to decode base64 and urlencoded template_resources - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - */ - public function getContent(Smarty_Template_Source $source) - { - return $this->decode($source->name); - } - - /** - * decode base64 and urlencode - * - * @param string $string template_resource to decode - * - * @return string decoded template_resource - */ - protected function decode($string) - { - // decode if specified - if (($pos = strpos($string, ':')) !== false) { - if (!strncmp($string, 'base64', 6)) { - return base64_decode(substr($string, 7)); - } elseif (!strncmp($string, 'urlencode', 9)) { - return urldecode(substr($string, 10)); - } - } - return $string; - } - - /** - * modify resource_name according to resource handlers specifications - * - * @param Smarty $smarty Smarty instance - * @param string $resource_name resource_name to make unique - * @param boolean $isConfig flag for config resource - * - * @return string unique resource name - */ - public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) - { - return get_class($this) . '#' . $this->decode($resource_name); - } - - /** - * Determine basename for compiled filename - * Always returns an empty string. - * - * @param Smarty_Template_Source $source source object - * - * @return string resource's basename - */ - public function getBasename(Smarty_Template_Source $source) - { - return ''; - } - - /* - * Disable timestamp checks for string resource. - * - * @return bool - */ - /** - * @return bool - */ - public function checkTimestamps() - { - return false; - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/libs/sysplugins/smarty_internal_runtime_cachemodify.php deleted file mode 100644 index 6e12d2ae..00000000 --- a/libs/sysplugins/smarty_internal_runtime_cachemodify.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -/** - * Inline Runtime Methods render, setSourceByUid, setupSubTemplate - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - **/ -class Smarty_Internal_Runtime_CacheModify -{ - /** - * check client side cache - * - * @param \Smarty_Template_Cached $cached - * @param \Smarty_Internal_Template $_template - * @param string $content - * - * @throws \Exception - * @throws \SmartyException - */ - public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content) - { - $_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code; - $_last_modified_date = - @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3); - if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) { - switch (PHP_SAPI) { - case 'cgi': // php-cgi < 5.3 - case 'cgi-fcgi': // php-cgi >= 5.3 - case 'fpm-fcgi': // php-fpm >= 5.3.3 - header('Status: 304 Not Modified'); - break; - case 'cli': - if (/* ^phpunit */ - !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ - ) { - $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified'; - } - break; - default: - if (/* ^phpunit */ - !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ - ) { - $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified'; - } else { - header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified'); - } - break; - } - } else { - switch (PHP_SAPI) { - case 'cli': - if (/* ^phpunit */ - !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ - ) { - $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = - 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT'; - } - break; - default: - header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT'); - break; - } - echo $content; - } - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php b/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php deleted file mode 100644 index 28709643..00000000 --- a/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php +++ /dev/null @@ -1,139 +0,0 @@ -<?php -/** - * Smarty cache resource file clear method - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ - -/** - * Smarty Internal Runtime Cache Resource File Class - * - * @package Smarty - * @subpackage PluginsInternal - */ -class Smarty_Internal_Runtime_CacheResourceFile -{ - /** - * Empty cache for a specific template - * - * @param Smarty $smarty - * @param string $resource_name template name - * @param string $cache_id cache id - * @param string $compile_id compile id - * @param integer $exp_time expiration time (number of seconds, not timestamp) - * - * @return integer number of cache files deleted - */ - public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) - { - $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null; - $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null; - $_dir_sep = $smarty->use_sub_dirs ? '/' : '^'; - $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0; - $_dir = $smarty->getCacheDir(); - if ($_dir === '/') { //We should never want to delete this! - return 0; - } - $_dir_length = strlen($_dir); - if (isset($_cache_id)) { - $_cache_id_parts = explode('|', $_cache_id); - $_cache_id_parts_count = count($_cache_id_parts); - if ($smarty->use_sub_dirs) { - foreach ($_cache_id_parts as $id_part) { - $_dir .= $id_part . '/'; - } - } - } - if (isset($resource_name)) { - $_save_stat = $smarty->caching; - $smarty->caching = Smarty::CACHING_LIFETIME_CURRENT; - $tpl = new $smarty->template_class($resource_name, $smarty); - $smarty->caching = $_save_stat; - // remove from template cache - $tpl->source; // have the template registered before unset() - if ($tpl->source->exists) { - $_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath)); - } else { - return 0; - } - } - $_count = 0; - $_time = time(); - if (file_exists($_dir)) { - $_cacheDirs = new RecursiveDirectoryIterator($_dir); - $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST); - foreach ($_cache as $_file) { - if (substr(basename($_file->getPathname()), 0, 1) === '.') { - continue; - } - $_filepath = (string)$_file; - // directory ? - if ($_file->isDir()) { - if (!$_cache->isDot()) { - // delete folder if empty - @rmdir($_file->getPathname()); - } - } else { - // delete only php files - if (substr($_filepath, -4) !== '.php') { - continue; - } - $_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length))); - $_parts_count = count($_parts); - // check name - if (isset($resource_name)) { - if ($_parts[ $_parts_count - 1 ] !== $_resourcename_parts) { - continue; - } - } - // check compile id - if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ]) - || $_parts[ $_parts_count - 2 - $_compile_id_offset ] !== $_compile_id) - ) { - continue; - } - // check cache id - if (isset($_cache_id)) { - // count of cache id parts - $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset : - $_parts_count - 1 - $_compile_id_offset; - if ($_parts_count < $_cache_id_parts_count) { - continue; - } - for ($i = 0; $i < $_cache_id_parts_count; $i++) { - if ($_parts[ $i ] !== $_cache_id_parts[ $i ]) { - continue 2; - } - } - } - if (is_file($_filepath)) { - // expired ? - if (isset($exp_time)) { - if ($exp_time < 0) { - preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_filepath), $match); - if ($_time < (filemtime($_filepath) + $match[ 1 ])) { - continue; - } - } else { - if ($_time - filemtime($_filepath) < $exp_time) { - continue; - } - } - } - $_count += @unlink($_filepath) ? 1 : 0; - if (function_exists('opcache_invalidate') - && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1) - ) { - opcache_invalidate($_filepath, true); - } elseif (function_exists('apc_delete_file')) { - apc_delete_file($_filepath); - } - } - } - } - } - return $_count; - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_capture.php b/libs/sysplugins/smarty_internal_runtime_capture.php deleted file mode 100644 index c9dca83d..00000000 --- a/libs/sysplugins/smarty_internal_runtime_capture.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -/** - * Runtime Extension Capture - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Runtime_Capture -{ - /** - * Flag that this instance will not be cached - * - * @var bool - */ - public $isPrivateExtension = true; - - /** - * Stack of capture parameter - * - * @var array - */ - private $captureStack = array(); - - /** - * Current open capture sections - * - * @var int - */ - private $captureCount = 0; - - /** - * Count stack - * - * @var int[] - */ - private $countStack = array(); - - /** - * Named buffer - * - * @var string[] - */ - private $namedBuffer = array(); - - /** - * Flag if callbacks are registered - * - * @var bool - */ - private $isRegistered = false; - - /** - * Open capture section - * - * @param \Smarty_Internal_Template $_template - * @param string $buffer capture name - * @param string $assign variable name - * @param string $append variable name - */ - public function open(Smarty_Internal_Template $_template, $buffer, $assign, $append) - { - if (!$this->isRegistered) { - $this->register($_template); - } - $this->captureStack[] = array( - $buffer, - $assign, - $append - ); - $this->captureCount++; - ob_start(); - } - - /** - * Register callbacks in template class - * - * @param \Smarty_Internal_Template $_template - */ - private function register(Smarty_Internal_Template $_template) - { - $_template->startRenderCallbacks[] = array( - $this, - 'startRender' - ); - $_template->endRenderCallbacks[] = array( - $this, - 'endRender' - ); - $this->startRender($_template); - $this->isRegistered = true; - } - - /** - * Start render callback - * - * @param \Smarty_Internal_Template $_template - */ - public function startRender(Smarty_Internal_Template $_template) - { - $this->countStack[] = $this->captureCount; - $this->captureCount = 0; - } - - /** - * Close capture section - * - * @param \Smarty_Internal_Template $_template - * - * @throws \SmartyException - */ - public function close(Smarty_Internal_Template $_template) - { - if ($this->captureCount) { - list($buffer, $assign, $append) = array_pop($this->captureStack); - $this->captureCount--; - if (isset($assign)) { - $_template->assign($assign, ob_get_contents()); - } - if (isset($append)) { - $_template->append($append, ob_get_contents()); - } - $this->namedBuffer[ $buffer ] = ob_get_clean(); - } else { - $this->error($_template); - } - } - - /** - * Error exception on not matching {capture}{/capture} - * - * @param \Smarty_Internal_Template $_template - * - * @throws \SmartyException - */ - public function error(Smarty_Internal_Template $_template) - { - throw new SmartyException("Not matching {capture}{/capture} in '{$_template->template_resource}'"); - } - - /** - * Return content of named capture buffer by key or as array - * - * @param \Smarty_Internal_Template $_template - * @param string|null $name - * - * @return string|string[]|null - */ - public function getBuffer(Smarty_Internal_Template $_template, $name = null) - { - if (isset($name)) { - return isset($this->namedBuffer[ $name ]) ? $this->namedBuffer[ $name ] : null; - } else { - return $this->namedBuffer; - } - } - - /** - * End render callback - * - * @param \Smarty_Internal_Template $_template - * - * @throws \SmartyException - */ - public function endRender(Smarty_Internal_Template $_template) - { - if ($this->captureCount) { - $this->error($_template); - } else { - $this->captureCount = array_pop($this->countStack); - } - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_codeframe.php b/libs/sysplugins/smarty_internal_runtime_codeframe.php deleted file mode 100644 index d0ca751e..00000000 --- a/libs/sysplugins/smarty_internal_runtime_codeframe.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php -/** - * Smarty Internal Extension - * This file contains the Smarty template extension to create a code frame - * - * @package Smarty - * @subpackage Template - * @author Uwe Tews - */ - -/** - * Class Smarty_Internal_Extension_CodeFrame - * Create code frame for compiled and cached templates - */ -class Smarty_Internal_Runtime_CodeFrame -{ - /** - * Create code frame for compiled and cached templates - * - * @param Smarty_Internal_Template $_template - * @param string $content optional template content - * @param string $functions compiled template function and block code - * @param bool $cache flag for cache file - * @param \Smarty_Internal_TemplateCompilerBase $compiler - * - * @return string - */ - public function create( - Smarty_Internal_Template $_template, - $content = '', - $functions = '', - $cache = false, - Smarty_Internal_TemplateCompilerBase $compiler = null - ) { - // build property code - $properties[ 'version' ] = Smarty::SMARTY_VERSION; - $properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true)); - if (!$cache) { - $properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code; - $properties[ 'file_dependency' ] = $_template->compiled->file_dependency; - $properties[ 'includes' ] = $_template->compiled->includes; - } else { - $properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code; - $properties[ 'file_dependency' ] = $_template->cached->file_dependency; - $properties[ 'cache_lifetime' ] = $_template->cache_lifetime; - } - $output = sprintf( - "<?php\n/* Smarty version %s, created on %s\n from '%s' */\n\n", - $properties[ 'version' ], - date("Y-m-d H:i:s"), - str_replace('*/', '* /', $_template->source->filepath) - ); - $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n"; - $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' . - ($cache ? 'true' : 'false') . ')'; - $output .= "if ({$dec}) {\n"; - $output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n"; - if (!$cache && !empty($compiler->tpl_function)) { - $output .= '$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions($_smarty_tpl, '; - $output .= var_export($compiler->tpl_function, true); - $output .= ");\n"; - } - if ($cache && isset($_template->smarty->ext->_tplFunction)) { - $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " . - var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n"; - } - $output .= "?>"; - $output .= $content; - $output .= "<?php }\n?>"; - $output .= $functions; - $output .= "<?php }\n"; - // remove unneeded PHP tags - if (preg_match('/\s*\?>[\n]?<\?php\s*/', $output)) { - $curr_split = preg_split( - '/\s*\?>[\n]?<\?php\s*/', - $output - ); - preg_match_all( - '/\s*\?>[\n]?<\?php\s*/', - $output, - $curr_parts - ); - $output = ''; - foreach ($curr_split as $idx => $curr_output) { - $output .= $curr_output; - if (isset($curr_parts[ 0 ][ $idx ])) { - $output .= "\n"; - } - } - } - if (preg_match('/\?>\s*$/', $output)) { - $curr_split = preg_split( - '/\?>\s*$/', - $output - ); - $output = ''; - foreach ($curr_split as $idx => $curr_output) { - $output .= $curr_output; - } - } - return $output; - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_filterhandler.php b/libs/sysplugins/smarty_internal_runtime_filterhandler.php deleted file mode 100644 index 9f868e1a..00000000 --- a/libs/sysplugins/smarty_internal_runtime_filterhandler.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Filter Handler - * Smarty filter handler class - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ - -/** - * Class for filter processing - * - * @package Smarty - * @subpackage PluginsInternal - */ -class Smarty_Internal_Runtime_FilterHandler -{ - /** - * Run filters over content - * The filters will be lazy loaded if required - * class name format: Smarty_FilterType_FilterName - * plugin filename format: filtertype.filtername.php - * Smarty2 filter plugins could be used - * - * @param string $type the type of filter ('pre','post','output') which shall run - * @param string $content the content which shall be processed by the filters - * @param Smarty_Internal_Template $template template object - * - * @throws SmartyException - * @return string the filtered content - */ - public function runFilter($type, $content, Smarty_Internal_Template $template) - { - // loop over autoload filters of specified type - if (!empty($template->smarty->autoload_filters[ $type ])) { - foreach ((array)$template->smarty->autoload_filters[ $type ] as $name) { - $plugin_name = "Smarty_{$type}filter_{$name}"; - if (function_exists($plugin_name)) { - $callback = $plugin_name; - } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) { - $callback = array($plugin_name, 'execute'); - } elseif ($template->smarty->loadPlugin($plugin_name, false)) { - if (function_exists($plugin_name)) { - // use loaded Smarty2 style plugin - $callback = $plugin_name; - } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) { - // loaded class of filter plugin - $callback = array($plugin_name, 'execute'); - } else { - throw new SmartyException("Auto load {$type}-filter plugin method '{$plugin_name}::execute' not callable"); - } - } else { - // nothing found, throw exception - throw new SmartyException("Unable to auto load {$type}-filter plugin '{$plugin_name}'"); - } - $content = call_user_func($callback, $content, $template); - } - } - // loop over registered filters of specified type - if (!empty($template->smarty->registered_filters[ $type ])) { - foreach ($template->smarty->registered_filters[ $type ] as $key => $name) { - $content = call_user_func($template->smarty->registered_filters[ $type ][ $key ], $content, $template); - } - } - // return filtered output - return $content; - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_foreach.php b/libs/sysplugins/smarty_internal_runtime_foreach.php deleted file mode 100644 index badead16..00000000 --- a/libs/sysplugins/smarty_internal_runtime_foreach.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php - -/** - * Foreach Runtime Methods count(), init(), restore() - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Runtime_Foreach -{ - /** - * Stack of saved variables - * - * @var array - */ - private $stack = array(); - - /** - * Init foreach loop - * - save item and key variables, named foreach property data if defined - * - init item and key variables, named foreach property data if required - * - count total if required - * - * @param \Smarty_Internal_Template $tpl - * @param mixed $from values to loop over - * @param string $item variable name - * @param bool $needTotal flag if we need to count values - * @param null|string $key variable name - * @param null|string $name of named foreach - * @param array $properties of named foreach - * - * @return mixed $from - */ - public function init( - Smarty_Internal_Template $tpl, - $from, - $item, - $needTotal = false, - $key = null, - $name = null, - $properties = array() - ) { - $needTotal = $needTotal || isset($properties[ 'total' ]); - $saveVars = array(); - $total = null; - if (!is_array($from)) { - if (is_object($from)) { - if ($needTotal) { - $total = $this->count($from); - } - } else { - settype($from, 'array'); - } - } - if (!isset($total)) { - $total = empty($from) ? 0 : ($needTotal ? count($from) : 1); - } - if (isset($tpl->tpl_vars[ $item ])) { - $saveVars[ 'item' ] = array( - $item, - $tpl->tpl_vars[ $item ] - ); - } - $tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache); - if ($total === 0) { - $from = null; - } else { - if ($key) { - if (isset($tpl->tpl_vars[ $key ])) { - $saveVars[ 'key' ] = array( - $key, - $tpl->tpl_vars[ $key ] - ); - } - $tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache); - } - } - if ($needTotal) { - $tpl->tpl_vars[ $item ]->total = $total; - } - if ($name) { - $namedVar = "__smarty_foreach_{$name}"; - if (isset($tpl->tpl_vars[ $namedVar ])) { - $saveVars[ 'named' ] = array( - $namedVar, - $tpl->tpl_vars[ $namedVar ] - ); - } - $namedProp = array(); - if (isset($properties[ 'total' ])) { - $namedProp[ 'total' ] = $total; - } - if (isset($properties[ 'iteration' ])) { - $namedProp[ 'iteration' ] = 0; - } - if (isset($properties[ 'index' ])) { - $namedProp[ 'index' ] = -1; - } - if (isset($properties[ 'show' ])) { - $namedProp[ 'show' ] = ($total > 0); - } - $tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp); - } - $this->stack[] = $saveVars; - return $from; - } - - /** - * [util function] counts an array, arrayAccess/traversable or PDOStatement object - * - * @param mixed $value - * - * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0 - * for empty elements - */ - public function count($value) - { - if ($value instanceof IteratorAggregate) { - // Note: getIterator() returns a Traversable, not an Iterator - // thus rewind() and valid() methods may not be present - return iterator_count($value->getIterator()); - } elseif ($value instanceof Iterator) { - return $value instanceof Generator ? 1 : iterator_count($value); - } elseif ($value instanceof Countable) { - return count($value); - } elseif ($value instanceof PDOStatement) { - return $value->rowCount(); - } elseif ($value instanceof Traversable) { - return iterator_count($value); - } - return count((array)$value); - } - - /** - * Restore saved variables - * - * will be called by {break n} or {continue n} for the required number of levels - * - * @param \Smarty_Internal_Template $tpl - * @param int $levels number of levels - */ - public function restore(Smarty_Internal_Template $tpl, $levels = 1) - { - while ($levels) { - $saveVars = array_pop($this->stack); - if (!empty($saveVars)) { - if (isset($saveVars[ 'item' ])) { - $item = &$saveVars[ 'item' ]; - $tpl->tpl_vars[ $item[ 0 ] ]->value = $item[ 1 ]->value; - } - if (isset($saveVars[ 'key' ])) { - $tpl->tpl_vars[ $saveVars[ 'key' ][ 0 ] ] = $saveVars[ 'key' ][ 1 ]; - } - if (isset($saveVars[ 'named' ])) { - $tpl->tpl_vars[ $saveVars[ 'named' ][ 0 ] ] = $saveVars[ 'named' ][ 1 ]; - } - } - $levels--; - } - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_getincludepath.php b/libs/sysplugins/smarty_internal_runtime_getincludepath.php deleted file mode 100644 index 5ae98304..00000000 --- a/libs/sysplugins/smarty_internal_runtime_getincludepath.php +++ /dev/null @@ -1,181 +0,0 @@ -<?php -/** - * Smarty read include path plugin - * - * @package Smarty - * @subpackage PluginsInternal - * @author Monte Ohrt - */ - -/** - * Smarty Internal Read Include Path Class - * - * @package Smarty - * @subpackage PluginsInternal - */ -class Smarty_Internal_Runtime_GetIncludePath -{ - /** - * include path cache - * - * @var string - */ - public $_include_path = ''; - - /** - * include path directory cache - * - * @var array - */ - public $_include_dirs = array(); - - /** - * include path directory cache - * - * @var array - */ - public $_user_dirs = array(); - - /** - * stream cache - * - * @var string[][] - */ - public $isFile = array(); - - /** - * stream cache - * - * @var string[] - */ - public $isPath = array(); - - /** - * stream cache - * - * @var int[] - */ - public $number = array(); - - /** - * status cache - * - * @var bool - */ - public $_has_stream_include = null; - - /** - * Number for array index - * - * @var int - */ - public $counter = 0; - - /** - * Check if include path was updated - * - * @param \Smarty $smarty - * - * @return bool - */ - public function isNewIncludePath(Smarty $smarty) - { - $_i_path = get_include_path(); - if ($this->_include_path !== $_i_path) { - $this->_include_dirs = array(); - $this->_include_path = $_i_path; - $_dirs = (array)explode(PATH_SEPARATOR, $_i_path); - foreach ($_dirs as $_path) { - if (is_dir($_path)) { - $this->_include_dirs[] = $smarty->_realpath($_path . DIRECTORY_SEPARATOR, true); - } - } - return true; - } - return false; - } - - /** - * return array with include path directories - * - * @param \Smarty $smarty - * - * @return array - */ - public function getIncludePathDirs(Smarty $smarty) - { - $this->isNewIncludePath($smarty); - return $this->_include_dirs; - } - - /** - * Return full file path from PHP include_path - * - * @param string[] $dirs - * @param string $file - * @param \Smarty $smarty - * - * @return bool|string full filepath or false - */ - public function getIncludePath($dirs, $file, Smarty $smarty) - { - //if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) { - if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : - $this->_has_stream_include = function_exists('stream_resolve_include_path')) - ) { - $this->isNewIncludePath($smarty); - } - // try PHP include_path - foreach ($dirs as $dir) { - $dir_n = isset($this->number[ $dir ]) ? $this->number[ $dir ] : $this->number[ $dir ] = $this->counter++; - if (isset($this->isFile[ $dir_n ][ $file ])) { - if ($this->isFile[ $dir_n ][ $file ]) { - return $this->isFile[ $dir_n ][ $file ]; - } else { - continue; - } - } - if (isset($this->_user_dirs[ $dir_n ])) { - if (false === $this->_user_dirs[ $dir_n ]) { - continue; - } else { - $dir = $this->_user_dirs[ $dir_n ]; - } - } else { - if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') { - $dir = str_ireplace(getcwd(), '.', $dir); - if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') { - $this->_user_dirs[ $dir_n ] = false; - continue; - } - } - $dir = substr($dir, 2); - $this->_user_dirs[ $dir_n ] = $dir; - } - if ($this->_has_stream_include) { - $path = stream_resolve_include_path($dir . (isset($file) ? $file : '')); - if ($path) { - return $this->isFile[ $dir_n ][ $file ] = $path; - } - } else { - foreach ($this->_include_dirs as $key => $_i_path) { - $path = isset($this->isPath[ $key ][ $dir_n ]) ? $this->isPath[ $key ][ $dir_n ] : - $this->isPath[ $key ][ $dir_n ] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false; - if ($path === false) { - continue; - } - if (isset($file)) { - $_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false; - if ($_file) { - return $_file; - } - } else { - // no file was given return directory path - return $path; - } - } - } - } - return false; - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_inheritance.php b/libs/sysplugins/smarty_internal_runtime_inheritance.php deleted file mode 100644 index 8f7f02d5..00000000 --- a/libs/sysplugins/smarty_internal_runtime_inheritance.php +++ /dev/null @@ -1,251 +0,0 @@ -<?php - -/** - * Inheritance Runtime Methods processBlock, endChild, init - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - **/ -class Smarty_Internal_Runtime_Inheritance -{ - /** - * State machine - * - 0 idle next extends will create a new inheritance tree - * - 1 processing child template - * - 2 wait for next inheritance template - * - 3 assume parent template, if child will loaded goto state 1 - * a call to a sub template resets the state to 0 - * - * @var int - */ - public $state = 0; - - /** - * Array of root child {block} objects - * - * @var Smarty_Internal_Block[] - */ - public $childRoot = array(); - - /** - * inheritance template nesting level - * - * @var int - */ - public $inheritanceLevel = 0; - - /** - * inheritance template index - * - * @var int - */ - public $tplIndex = -1; - - /** - * Array of template source objects - * - * @var Smarty_Template_Source[] - */ - public $sources = array(); - - /** - * Stack of source objects while executing block code - * - * @var Smarty_Template_Source[] - */ - public $sourceStack = array(); - - /** - * Initialize inheritance - * - * @param \Smarty_Internal_Template $tpl template object of caller - * @param bool $initChild if true init for child template - * @param array $blockNames outer level block name - */ - public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array()) - { - // if called while executing parent template it must be a sub-template with new inheritance root - if ($initChild && $this->state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) { - $tpl->inheritance = new Smarty_Internal_Runtime_Inheritance(); - $tpl->inheritance->init($tpl, $initChild, $blockNames); - return; - } - ++$this->tplIndex; - $this->sources[ $this->tplIndex ] = $tpl->source; - // start of child sub template(s) - if ($initChild) { - $this->state = 1; - if (!$this->inheritanceLevel) { - //grab any output of child templates - ob_start(); - } - ++$this->inheritanceLevel; - // $tpl->startRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateStart'); - // $tpl->endRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateEnd'); - } - // if state was waiting for parent change state to parent - if ($this->state === 2) { - $this->state = 3; - } - } - - /** - * End of child template(s) - * - if outer level is reached flush output buffer and switch to wait for parent template state - * - * @param \Smarty_Internal_Template $tpl - * @param null|string $template optional name of inheritance parent template - * @param null|string $uid uid of inline template - * @param null|string $func function call name of inline template - * - * @throws \Exception - * @throws \SmartyException - */ - public function endChild(Smarty_Internal_Template $tpl, $template = null, $uid = null, $func = null) - { - --$this->inheritanceLevel; - if (!$this->inheritanceLevel) { - ob_end_clean(); - $this->state = 2; - } - if (isset($template) && (($tpl->parent->_isTplObj() && $tpl->parent->source->type !== 'extends') - || $tpl->smarty->extends_recursion) - ) { - $tpl->_subTemplateRender( - $template, - $tpl->cache_id, - $tpl->compile_id, - $tpl->caching ? 9999 : 0, - $tpl->cache_lifetime, - array(), - 2, - false, - $uid, - $func - ); - } - } - - /** - * Smarty_Internal_Block constructor. - * - if outer level {block} of child template ($state === 1) save it as child root block - * - otherwise process inheritance and render - * - * @param \Smarty_Internal_Template $tpl - * @param $className - * @param string $name - * @param int|null $tplIndex index of outer level {block} if nested - * - * @throws \SmartyException - */ - public function instanceBlock(Smarty_Internal_Template $tpl, $className, $name, $tplIndex = null) - { - $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex); - if (isset($this->childRoot[ $name ])) { - $block->child = $this->childRoot[ $name ]; - } - if ($this->state === 1) { - $this->childRoot[ $name ] = $block; - return; - } - // make sure we got child block of child template of current block - while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) { - $block->child = $block->child->child; - } - $this->process($tpl, $block); - } - - /** - * Goto child block or render this - * - * @param \Smarty_Internal_Template $tpl - * @param \Smarty_Internal_Block $block - * @param \Smarty_Internal_Block|null $parent - * - * @throws \SmartyException - */ - public function process( - Smarty_Internal_Template $tpl, - Smarty_Internal_Block $block, - Smarty_Internal_Block $parent = null - ) { - if ($block->hide && !isset($block->child)) { - return; - } - if (isset($block->child) && $block->child->hide && !isset($block->child->child)) { - $block->child = null; - } - $block->parent = $parent; - if ($block->append && !$block->prepend && isset($parent)) { - $this->callParent($tpl, $block, '\'{block append}\''); - } - if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) { - $this->callBlock($block, $tpl); - } else { - $this->process($tpl, $block->child, $block); - } - if ($block->prepend && isset($parent)) { - $this->callParent($tpl, $block, '{block prepend}'); - if ($block->append) { - if ($block->callsChild || !isset($block->child) - || ($block->child->hide && !isset($block->child->child)) - ) { - $this->callBlock($block, $tpl); - } else { - $this->process($tpl, $block->child, $block); - } - } - } - $block->parent = null; - } - - /** - * Render child on \$smarty.block.child - * - * @param \Smarty_Internal_Template $tpl - * @param \Smarty_Internal_Block $block - * - * @return null|string block content - * @throws \SmartyException - */ - public function callChild(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block) - { - if (isset($block->child)) { - $this->process($tpl, $block->child, $block); - } - } - - /** - * Render parent block on \$smarty.block.parent or {block append/prepend} - * - * @param \Smarty_Internal_Template $tpl - * @param \Smarty_Internal_Block $block - * @param string $tag - * - * @return null|string block content - * @throws \SmartyException - */ - public function callParent(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block, $tag) - { - if (isset($block->parent)) { - $this->callBlock($block->parent, $tpl); - } else { - throw new SmartyException("inheritance: illegal '{$tag}' used in child template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'"); - } - } - - /** - * render block - * - * @param \Smarty_Internal_Block $block - * @param \Smarty_Internal_Template $tpl - */ - public function callBlock(Smarty_Internal_Block $block, Smarty_Internal_Template $tpl) - { - $this->sourceStack[] = $tpl->source; - $tpl->source = $this->sources[ $block->tplIndex ]; - $block->callBlock($tpl); - $tpl->source = array_pop($this->sourceStack); - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_make_nocache.php b/libs/sysplugins/smarty_internal_runtime_make_nocache.php deleted file mode 100644 index 7994aa04..00000000 --- a/libs/sysplugins/smarty_internal_runtime_make_nocache.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -/** - * {make_nocache} Runtime Methods save(), store() - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Runtime_Make_Nocache -{ - /** - * Save current variable value while rendering compiled template and inject nocache code to - * assign variable value in cahed template - * - * @param \Smarty_Internal_Template $tpl - * @param string $var variable name - * - * @throws \SmartyException - */ - public function save(Smarty_Internal_Template $tpl, $var) - { - if (isset($tpl->tpl_vars[ $var ])) { - $export = - preg_replace('/^\\\\?Smarty_Variable::__set_state[(]|[)]$/', '', var_export($tpl->tpl_vars[ $var ], true)); - if (preg_match('/(\w+)::__set_state/', $export, $match)) { - throw new SmartyException("{make_nocache \${$var}} in template '{$tpl->source->name}': variable does contain object '{$match[1]}' not implementing method '__set_state'"); - } - echo "/*%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/<?php " . - addcslashes("\$_smarty_tpl->smarty->ext->_make_nocache->store(\$_smarty_tpl, '{$var}', ", '\\') . - $export . ");?>\n/*/%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/"; - } - } - - /** - * Store variable value saved while rendering compiled template in cached template context - * - * @param \Smarty_Internal_Template $tpl - * @param string $var variable name - * @param array $properties - */ - public function store(Smarty_Internal_Template $tpl, $var, $properties) - { - // do not overwrite existing nocache variables - if (!isset($tpl->tpl_vars[ $var ]) || !$tpl->tpl_vars[ $var ]->nocache) { - $newVar = new Smarty_Variable(); - unset($properties[ 'nocache' ]); - foreach ($properties as $k => $v) { - $newVar->$k = $v; - } - $tpl->tpl_vars[ $var ] = $newVar; - } - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/libs/sysplugins/smarty_internal_runtime_tplfunction.php deleted file mode 100644 index e5f8e48f..00000000 --- a/libs/sysplugins/smarty_internal_runtime_tplfunction.php +++ /dev/null @@ -1,177 +0,0 @@ -<?php - -/** - * TplFunction Runtime Methods callTemplateFunction - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - **/ -class Smarty_Internal_Runtime_TplFunction -{ - /** - * Call template function - * - * @param \Smarty_Internal_Template $tpl template object - * @param string $name template function name - * @param array $params parameter array - * @param bool $nocache true if called nocache - * - * @throws \SmartyException - */ - public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache) - { - $funcParam = isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] : - (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : null); - if (isset($funcParam)) { - if (!$tpl->caching || ($tpl->caching && $nocache)) { - $function = $funcParam[ 'call_name' ]; - } else { - if (isset($funcParam[ 'call_name_caching' ])) { - $function = $funcParam[ 'call_name_caching' ]; - } else { - $function = $funcParam[ 'call_name' ]; - } - } - if (function_exists($function)) { - $this->saveTemplateVariables($tpl, $name); - $function($tpl, $params); - $this->restoreTemplateVariables($tpl, $name); - return; - } - // try to load template function dynamically - if ($this->addTplFuncToCache($tpl, $name, $function)) { - $this->saveTemplateVariables($tpl, $name); - $function($tpl, $params); - $this->restoreTemplateVariables($tpl, $name); - return; - } - } - throw new SmartyException("Unable to find template function '{$name}'"); - } - - /** - * Register template functions defined by template - * - * @param \Smarty|\Smarty_Internal_Template|\Smarty_Internal_TemplateBase $obj - * @param array $tplFunctions source information array of - * template functions defined - * in template - * @param bool $override if true replace existing - * functions with same name - */ - public function registerTplFunctions(Smarty_Internal_TemplateBase $obj, $tplFunctions, $override = true) - { - $obj->tplFunctions = - $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions); - // make sure that the template functions are known in parent templates - if ($obj->_isSubTpl()) { - $obj->smarty->ext->_tplFunction->registerTplFunctions($obj->parent, $tplFunctions, false); - } else { - $obj->smarty->tplFunctions = $override ? array_merge($obj->smarty->tplFunctions, $tplFunctions) : - array_merge($tplFunctions, $obj->smarty->tplFunctions); - } - } - - /** - * Return source parameter array for single or all template functions - * - * @param \Smarty_Internal_Template $tpl template object - * @param null|string $name template function name - * - * @return array|bool|mixed - */ - public function getTplFunction(Smarty_Internal_Template $tpl, $name = null) - { - if (isset($name)) { - return isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] : - (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : false); - } else { - return empty($tpl->tplFunctions) ? $tpl->smarty->tplFunctions : $tpl->tplFunctions; - } - } - - /** - * Add template function to cache file for nocache calls - * - * @param Smarty_Internal_Template $tpl - * @param string $_name template function name - * @param string $_function PHP function name - * - * @return bool - */ - public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function) - { - $funcParam = $tpl->tplFunctions[ $_name ]; - if (is_file($funcParam[ 'compiled_filepath' ])) { - // read compiled file - $code = file_get_contents($funcParam[ 'compiled_filepath' ]); - // grab template function - if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) { - // grab source info from file dependency - preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1); - unset($code); - // make PHP function known - eval($match[ 0 ]); - if (function_exists($_function)) { - // search cache file template - $tplPtr = $tpl; - while (!isset($tplPtr->cached) && isset($tplPtr->parent)) { - $tplPtr = $tplPtr->parent; - } - // add template function code to cache file - if (isset($tplPtr->cached)) { - $content = $tplPtr->cached->read($tplPtr); - if ($content) { - // check if we must update file dependency - if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) { - $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content); - } - $tplPtr->smarty->ext->_updateCache->write( - $tplPtr, - preg_replace('/\s*\?>\s*$/', "\n", $content) . - "\n" . preg_replace( - array( - '/^\s*<\?php\s+/', - '/\s*\?>\s*$/', - ), - "\n", - $match[ 0 ] - ) - ); - } - } - return true; - } - } - } - return false; - } - - /** - * Save current template variables on stack - * - * @param \Smarty_Internal_Template $tpl - * @param string $name stack name - */ - public function saveTemplateVariables(Smarty_Internal_Template $tpl, $name) - { - $tpl->_cache[ 'varStack' ][] = - array('tpl' => $tpl->tpl_vars, 'config' => $tpl->config_vars, 'name' => "_tplFunction_{$name}"); - } - - /** - * Restore saved variables into template objects - * - * @param \Smarty_Internal_Template $tpl - * @param string $name stack name - */ - public function restoreTemplateVariables(Smarty_Internal_Template $tpl, $name) - { - if (isset($tpl->_cache[ 'varStack' ])) { - $vars = array_pop($tpl->_cache[ 'varStack' ]); - $tpl->tpl_vars = $vars[ 'tpl' ]; - $tpl->config_vars = $vars[ 'config' ]; - } - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_updatecache.php b/libs/sysplugins/smarty_internal_runtime_updatecache.php deleted file mode 100644 index c1abbb32..00000000 --- a/libs/sysplugins/smarty_internal_runtime_updatecache.php +++ /dev/null @@ -1,183 +0,0 @@ -<?php - -/** - * Inline Runtime Methods render, setSourceByUid, setupSubTemplate - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - **/ -class Smarty_Internal_Runtime_UpdateCache -{ - /** - * check client side cache - * - * @param \Smarty_Template_Cached $cached - * @param Smarty_Internal_Template $_template - * @param string $content - */ - public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content) - { - } - - /** - * Cache was invalid , so render from compiled and write to cache - * - * @param \Smarty_Template_Cached $cached - * @param \Smarty_Internal_Template $_template - * @param $no_output_filter - * - * @throws \Exception - */ - public function updateCache(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $no_output_filter) - { - ob_start(); - if (!isset($_template->compiled)) { - $_template->loadCompiled(); - } - $_template->compiled->render($_template); - if ($_template->smarty->debugging) { - $_template->smarty->_debug->start_cache($_template); - } - $this->removeNoCacheHash($cached, $_template, $no_output_filter); - $compile_check = (int)$_template->compile_check; - $_template->compile_check = Smarty::COMPILECHECK_OFF; - if ($_template->_isSubTpl()) { - $_template->compiled->unifunc = $_template->parent->compiled->unifunc; - } - if (!$_template->cached->processed) { - $_template->cached->process($_template, true); - } - $_template->compile_check = $compile_check; - $cached->getRenderedTemplateCode($_template); - if ($_template->smarty->debugging) { - $_template->smarty->_debug->end_cache($_template); - } - } - - /** - * Sanitize content and write it to cache resource - * - * @param \Smarty_Template_Cached $cached - * @param Smarty_Internal_Template $_template - * @param bool $no_output_filter - * - * @throws \SmartyException - */ - public function removeNoCacheHash( - Smarty_Template_Cached $cached, - Smarty_Internal_Template $_template, - $no_output_filter - ) { - $php_pattern = '/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/'; - $content = ob_get_clean(); - $hash_array = $cached->hashes; - $hash_array[ $_template->compiled->nocache_hash ] = true; - $hash_array = array_keys($hash_array); - $nocache_hash = '(' . implode('|', $hash_array) . ')'; - $_template->cached->has_nocache_code = false; - // get text between non-cached items - $cache_split = - preg_split( - "!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s", - $content - ); - // get non-cached items - preg_match_all( - "!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s", - $content, - $cache_parts - ); - $content = ''; - // loop over items, stitch back together - foreach ($cache_split as $curr_idx => $curr_split) { - if (preg_match($php_pattern, $curr_split)) { - // escape PHP tags in template content - $php_split = preg_split( - $php_pattern, - $curr_split - ); - preg_match_all( - $php_pattern, - $curr_split, - $php_parts - ); - foreach ($php_split as $idx_php => $curr_php) { - $content .= $curr_php; - if (isset($php_parts[ 0 ][ $idx_php ])) { - $content .= "<?php echo '{$php_parts[ 1 ][ $idx_php ]}'; ?>\n"; - } - } - } else { - $content .= $curr_split; - } - if (isset($cache_parts[ 0 ][ $curr_idx ])) { - $_template->cached->has_nocache_code = true; - $content .= $cache_parts[ 2 ][ $curr_idx ]; - } - } - if (!$no_output_filter && !$_template->cached->has_nocache_code - && (isset($_template->smarty->autoload_filters[ 'output' ]) - || isset($_template->smarty->registered_filters[ 'output' ])) - ) { - $content = $_template->smarty->ext->_filterHandler->runFilter('output', $content, $_template); - } - // write cache file content - $this->writeCachedContent($_template, $content); - } - - /** - * Writes the content to cache resource - * - * @param Smarty_Internal_Template $_template - * @param string $content - * - * @return bool - */ - public function writeCachedContent(Smarty_Internal_Template $_template, $content) - { - if ($_template->source->handler->recompiled || !$_template->caching - ) { - // don't write cache file - return false; - } - if (!isset($_template->cached)) { - $_template->loadCached(); - } - $content = $_template->smarty->ext->_codeFrame->create($_template, $content, '', true); - return $this->write($_template, $content); - } - - /** - * Write this cache object to handler - * - * @param Smarty_Internal_Template $_template template object - * @param string $content content to cache - * - * @return bool success - */ - public function write(Smarty_Internal_Template $_template, $content) - { - if (!$_template->source->handler->recompiled) { - $cached = $_template->cached; - if ($cached->handler->writeCachedContent($_template, $content)) { - $cached->content = null; - $cached->timestamp = time(); - $cached->exists = true; - $cached->valid = true; - $cached->cache_lifetime = $_template->cache_lifetime; - $cached->processed = false; - if ($_template->smarty->cache_locking) { - $cached->handler->releaseLock($_template->smarty, $cached); - } - return true; - } - $cached->content = null; - $cached->timestamp = false; - $cached->exists = false; - $cached->valid = false; - $cached->processed = false; - } - return false; - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_updatescope.php b/libs/sysplugins/smarty_internal_runtime_updatescope.php deleted file mode 100644 index 2240f97c..00000000 --- a/libs/sysplugins/smarty_internal_runtime_updatescope.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/** - * Runtime Extension updateScope - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - **/ -class Smarty_Internal_Runtime_UpdateScope -{ - /** - * Update new assigned template or config variable in other effected scopes - * - * @param Smarty_Internal_Template $tpl data object - * @param string|null $varName variable name - * @param int $tagScope tag scope to which bubble up variable value - */ - public function _updateScope(Smarty_Internal_Template $tpl, $varName, $tagScope = 0) - { - if ($tagScope) { - $this->_updateVarStack($tpl, $varName); - $tagScope = $tagScope & ~Smarty::SCOPE_LOCAL; - if (!$tpl->scope && !$tagScope) { - return; - } - } - $mergedScope = $tagScope | $tpl->scope; - if ($mergedScope) { - if ($mergedScope & Smarty::SCOPE_GLOBAL && $varName) { - Smarty::$global_tpl_vars[ $varName ] = $tpl->tpl_vars[ $varName ]; - } - // update scopes - foreach ($this->_getAffectedScopes($tpl, $mergedScope) as $ptr) { - $this->_updateVariableInOtherScope($ptr->tpl_vars, $tpl, $varName); - if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) { - $this->_updateVarStack($ptr, $varName); - } - } - } - } - - /** - * Get array of objects which needs to be updated by given scope value - * - * @param Smarty_Internal_Template $tpl - * @param int $mergedScope merged tag and template scope to which bubble up variable value - * - * @return array - */ - public function _getAffectedScopes(Smarty_Internal_Template $tpl, $mergedScope) - { - $_stack = array(); - $ptr = $tpl->parent; - if ($mergedScope && isset($ptr) && $ptr->_isTplObj()) { - $_stack[] = $ptr; - $mergedScope = $mergedScope & ~Smarty::SCOPE_PARENT; - if (!$mergedScope) { - // only parent was set, we are done - return $_stack; - } - $ptr = $ptr->parent; - } - while (isset($ptr) && $ptr->_isTplObj()) { - $_stack[] = $ptr; - $ptr = $ptr->parent; - } - if ($mergedScope & Smarty::SCOPE_SMARTY) { - if (isset($tpl->smarty)) { - $_stack[] = $tpl->smarty; - } - } elseif ($mergedScope & Smarty::SCOPE_ROOT) { - while (isset($ptr)) { - if (!$ptr->_isTplObj()) { - $_stack[] = $ptr; - break; - } - $ptr = $ptr->parent; - } - } - return $_stack; - } - - /** - * Update variable in other scope - * - * @param array $tpl_vars template variable array - * @param \Smarty_Internal_Template $from - * @param string $varName variable name - */ - public function _updateVariableInOtherScope(&$tpl_vars, Smarty_Internal_Template $from, $varName) - { - if (!isset($tpl_vars[ $varName ])) { - $tpl_vars[ $varName ] = clone $from->tpl_vars[ $varName ]; - } else { - $tpl_vars[ $varName ] = clone $tpl_vars[ $varName ]; - $tpl_vars[ $varName ]->value = $from->tpl_vars[ $varName ]->value; - } - } - - /** - * Update variable in template local variable stack - * - * @param \Smarty_Internal_Template $tpl - * @param string|null $varName variable name or null for config variables - */ - public function _updateVarStack(Smarty_Internal_Template $tpl, $varName) - { - $i = 0; - while (isset($tpl->_cache[ 'varStack' ][ $i ])) { - $this->_updateVariableInOtherScope($tpl->_cache[ 'varStack' ][ $i ][ 'tpl' ], $tpl, $varName); - $i++; - } - } -} diff --git a/libs/sysplugins/smarty_internal_runtime_writefile.php b/libs/sysplugins/smarty_internal_runtime_writefile.php deleted file mode 100644 index 492d5eb2..00000000 --- a/libs/sysplugins/smarty_internal_runtime_writefile.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php -/** - * Smarty write file plugin - * - * @package Smarty - * @subpackage PluginsInternal - * @author Monte Ohrt - */ - -/** - * Smarty Internal Write File Class - * - * @package Smarty - * @subpackage PluginsInternal - */ -class Smarty_Internal_Runtime_WriteFile -{ - /** - * Writes file in a safe way to disk - * - * @param string $_filepath complete filepath - * @param string $_contents file content - * @param Smarty $smarty smarty instance - * - * @throws SmartyException - * @return boolean true - */ - public function writeFile($_filepath, $_contents, Smarty $smarty) - { - $_error_reporting = error_reporting(); - error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING); - $_dirpath = dirname($_filepath); - // if subdirs, create dir structure - if ($_dirpath !== '.') { - $i = 0; - // loop if concurrency problem occurs - // see https://bugs.php.net/bug.php?id=35326 - while (!is_dir($_dirpath)) { - if (@mkdir($_dirpath, 0777, true)) { - break; - } - clearstatcache(); - if (++$i === 3) { - error_reporting($_error_reporting); - throw new SmartyException("unable to create directory {$_dirpath}"); - } - sleep(1); - } - } - // write to tmp file, then move to overt file lock race condition - $_tmp_file = $_dirpath . DIRECTORY_SEPARATOR . str_replace(array('.', ','), '_', uniqid('wrt', true)); - if (!file_put_contents($_tmp_file, $_contents)) { - error_reporting($_error_reporting); - throw new SmartyException("unable to write file {$_tmp_file}"); - } - /* - * Windows' rename() fails if the destination exists, - * Linux' rename() properly handles the overwrite. - * Simply unlink()ing a file might cause other processes - * currently reading that file to fail, but linux' rename() - * seems to be smart enough to handle that for us. - */ - if (Smarty::$_IS_WINDOWS) { - // remove original file - if (is_file($_filepath)) { - @unlink($_filepath); - } - // rename tmp file - $success = @rename($_tmp_file, $_filepath); - } else { - // rename tmp file - $success = @rename($_tmp_file, $_filepath); - if (!$success) { - // remove original file - if (is_file($_filepath)) { - @unlink($_filepath); - } - // rename tmp file - $success = @rename($_tmp_file, $_filepath); - } - } - if (!$success) { - error_reporting($_error_reporting); - throw new SmartyException("unable to write file {$_filepath}"); - } - // set file permissions - @chmod($_filepath, 0666 & ~umask()); - error_reporting($_error_reporting); - return true; - } -} diff --git a/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/libs/sysplugins/smarty_internal_smartytemplatecompiler.php deleted file mode 100644 index 21f4e3fd..00000000 --- a/libs/sysplugins/smarty_internal_smartytemplatecompiler.php +++ /dev/null @@ -1,184 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Smarty Template Compiler Base - * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Class SmartyTemplateCompiler - * - * @package Smarty - * @subpackage Compiler - */ -class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase -{ - /** - * Lexer class name - * - * @var string - */ - public $lexer_class; - - /** - * Parser class name - * - * @var string - */ - public $parser_class; - - /** - * array of vars which can be compiled in local scope - * - * @var array - */ - public $local_var = array(); - - /** - * array of callbacks called when the normal compile process of template is finished - * - * @var array - */ - public $postCompileCallbacks = array(); - - /** - * prefix code - * - * @var string - */ - public $prefixCompiledCode = ''; - - /** - * postfix code - * - * @var string - */ - public $postfixCompiledCode = ''; - - /** - * Initialize compiler - * - * @param string $lexer_class class name - * @param string $parser_class class name - * @param Smarty $smarty global instance - */ - public function __construct($lexer_class, $parser_class, Smarty $smarty) - { - parent::__construct($smarty); - // get required plugins - $this->lexer_class = $lexer_class; - $this->parser_class = $parser_class; - } - - /** - * method to compile a Smarty template - * - * @param mixed $_content template source - * @param bool $isTemplateSource - * - * @return bool true if compiling succeeded, false if it failed - * @throws \SmartyCompilerException - */ - protected function doCompile($_content, $isTemplateSource = false) - { - /* here is where the compiling takes place. Smarty - tags in the templates are replaces with PHP code, - then written to compiled files. */ - // init the lexer/parser to compile the template - $this->parser = - new $this->parser_class( - new $this->lexer_class( - str_replace( - array( - "\r\n", - "\r" - ), - "\n", - $_content - ), - $this - ), - $this - ); - if ($isTemplateSource && $this->template->caching) { - $this->parser->insertPhpCode("<?php\n\$_smarty_tpl->compiled->nocache_hash = '{$this->nocache_hash}';\n?>\n"); - } - if (function_exists('mb_internal_encoding') - && function_exists('ini_get') - && ((int)ini_get('mbstring.func_overload')) & 2 - ) { - $mbEncoding = mb_internal_encoding(); - mb_internal_encoding('ASCII'); - } else { - $mbEncoding = null; - } - if ($this->smarty->_parserdebug) { - $this->parser->PrintTrace(); - $this->parser->lex->PrintTrace(); - } - // get tokens from lexer and parse them - while ($this->parser->lex->yylex()) { - if ($this->smarty->_parserdebug) { - echo "<pre>Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " . - htmlentities($this->parser->lex->value) . "</pre>"; - } - $this->parser->doParse($this->parser->lex->token, $this->parser->lex->value); - } - // finish parsing process - $this->parser->doParse(0, 0); - if ($mbEncoding) { - mb_internal_encoding($mbEncoding); - } - // check for unclosed tags - if (count($this->_tag_stack) > 0) { - // get stacked info - list($openTag, $_data) = array_pop($this->_tag_stack); - $this->trigger_template_error( - "unclosed {$this->smarty->left_delimiter}" . $openTag . - "{$this->smarty->right_delimiter} tag" - ); - } - // call post compile callbacks - foreach ($this->postCompileCallbacks as $cb) { - $parameter = $cb; - $parameter[ 0 ] = $this; - call_user_func_array($cb[ 0 ], $parameter); - } - // return compiled code - return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode; - } - - /** - * Register a post compile callback - * - when the callback is called after template compiling the compiler object will be inserted as first parameter - * - * @param callback $callback - * @param array $parameter optional parameter array - * @param string $key optional key for callback - * @param bool $replace if true replace existing keyed callback - */ - public function registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false) - { - array_unshift($parameter, $callback); - if (isset($key)) { - if ($replace || !isset($this->postCompileCallbacks[ $key ])) { - $this->postCompileCallbacks[ $key ] = $parameter; - } - } else { - $this->postCompileCallbacks[] = $parameter; - } - } - - /** - * Remove a post compile callback - * - * @param string $key callback key - */ - public function unregisterPostCompileCallback($key) - { - unset($this->postCompileCallbacks[ $key ]); - } -} diff --git a/libs/sysplugins/smarty_internal_template.php b/libs/sysplugins/smarty_internal_template.php deleted file mode 100644 index 72d1d52e..00000000 --- a/libs/sysplugins/smarty_internal_template.php +++ /dev/null @@ -1,741 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Template - * This file contains the Smarty template engine - * - * @package Smarty - * @subpackage Template - * @author Uwe Tews - */ - -/** - * Main class with template data structures and methods - * - * @package Smarty - * @subpackage Template - * - * @property Smarty_Template_Compiled $compiled - * @property Smarty_Template_Cached $cached - * @property Smarty_Internal_TemplateCompilerBase $compiler - * @property mixed|\Smarty_Template_Cached registered_plugins - * - * The following methods will be dynamically loaded by the extension handler when they are called. - * They are located in a corresponding Smarty_Internal_Method_xxxx class - * - * @method bool mustCompile() - */ -#[\AllowDynamicProperties] -class Smarty_Internal_Template extends Smarty_Internal_TemplateBase -{ - /** - * Template object cache - * - * @var Smarty_Internal_Template[] - */ - public static $tplObjCache = array(); - - /** - * Template object cache for Smarty::isCached() === true - * - * @var Smarty_Internal_Template[] - */ - public static $isCacheTplObj = array(); - - /** - * Sub template Info Cache - * - index name - * - value use count - * - * @var int[] - */ - public static $subTplInfo = array(); - - /** - * This object type (Smarty = 1, template = 2, data = 4) - * - * @var int - */ - public $_objType = 2; - - /** - * Global smarty instance - * - * @var Smarty - */ - public $smarty = null; - - /** - * Source instance - * - * @var Smarty_Template_Source|Smarty_Template_Config - */ - public $source = null; - - /** - * Inheritance runtime extension - * - * @var Smarty_Internal_Runtime_Inheritance - */ - public $inheritance = null; - - /** - * Template resource - * - * @var string - */ - public $template_resource = null; - - /** - * flag if compiled template is invalid and must be (re)compiled - * - * @var bool - */ - public $mustCompile = null; - - /** - * Template Id - * - * @var null|string - */ - public $templateId = null; - - /** - * Scope in which variables shall be assigned - * - * @var int - */ - public $scope = 0; - - /** - * Flag which is set while rending a cache file - * - * @var bool - */ - public $isRenderingCache = false; - - /** - * Callbacks called before rendering template - * - * @var callback[] - */ - public $startRenderCallbacks = array(); - - /** - * Callbacks called after rendering template - * - * @var callback[] - */ - public $endRenderCallbacks = array(); - - /** - * Create template data object - * Some of the global Smarty settings copied to template scope - * It load the required template resources and caching plugins - * - * @param string $template_resource template resource string - * @param Smarty $smarty Smarty instance - * @param null|\Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent - * object with variables or - * null - * @param mixed $_cache_id cache id or null - * @param mixed $_compile_id compile id or null - * @param bool|int|null $_caching use caching? - * @param int|null $_cache_lifetime cache life-time in - * seconds - * @param bool $_isConfig - * - * @throws \SmartyException - */ - public function __construct( - $template_resource, - Smarty $smarty, - Smarty_Internal_Data $_parent = null, - $_cache_id = null, - $_compile_id = null, - $_caching = null, - $_cache_lifetime = null, - $_isConfig = false - ) { - $this->smarty = $smarty; - // Smarty parameter - $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id; - $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id; - $this->caching = (int)($_caching === null ? $this->smarty->caching : $_caching); - $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime; - $this->compile_check = (int)$smarty->compile_check; - $this->parent = $_parent; - // Template resource - $this->template_resource = $template_resource; - $this->source = $_isConfig ? Smarty_Template_Config::load($this) : Smarty_Template_Source::load($this); - parent::__construct(); - if ($smarty->security_policy && method_exists($smarty->security_policy, 'registerCallBacks')) { - $smarty->security_policy->registerCallBacks($this); - } - } - - /** - * render template - * - * @param bool $no_output_filter if true do not run output filter - * @param null|bool $display true: display, false: fetch null: sub-template - * - * @return string - * @throws \Exception - * @throws \SmartyException - */ - public function render($no_output_filter = true, $display = null) - { - if ($this->smarty->debugging) { - if (!isset($this->smarty->_debug)) { - $this->smarty->_debug = new Smarty_Internal_Debug(); - } - $this->smarty->_debug->start_template($this, $display); - } - // checks if template exists - if (!$this->source->exists) { - throw new SmartyException( - "Unable to load template '{$this->source->type}:{$this->source->name}'" . - ($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : '') - ); - } - // disable caching for evaluated code - if ($this->source->handler->recompiled) { - $this->caching = Smarty::CACHING_OFF; - } - // read from cache or render - if ($this->caching === Smarty::CACHING_LIFETIME_CURRENT || $this->caching === Smarty::CACHING_LIFETIME_SAVED) { - if (!isset($this->cached) || $this->cached->cache_id !== $this->cache_id - || $this->cached->compile_id !== $this->compile_id - ) { - $this->loadCached(true); - } - $this->cached->render($this, $no_output_filter); - } else { - if (!isset($this->compiled) || $this->compiled->compile_id !== $this->compile_id) { - $this->loadCompiled(true); - } - $this->compiled->render($this); - } - // display or fetch - if ($display) { - if ($this->caching && $this->smarty->cache_modified_check) { - $this->smarty->ext->_cacheModify->cacheModifiedCheck( - $this->cached, - $this, - isset($content) ? $content : ob_get_clean() - ); - } else { - if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) - && !$no_output_filter && (isset($this->smarty->autoload_filters[ 'output' ]) - || isset($this->smarty->registered_filters[ 'output' ])) - ) { - echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this); - } else { - echo ob_get_clean(); - } - } - if ($this->smarty->debugging) { - $this->smarty->_debug->end_template($this); - // debug output - $this->smarty->_debug->display_debug($this, true); - } - return ''; - } else { - if ($this->smarty->debugging) { - $this->smarty->_debug->end_template($this); - if ($this->smarty->debugging === 2 && $display === false) { - $this->smarty->_debug->display_debug($this, true); - } - } - if (!$no_output_filter - && (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) - && (isset($this->smarty->autoload_filters[ 'output' ]) - || isset($this->smarty->registered_filters[ 'output' ])) - ) { - return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this); - } - // return cache content - return null; - } - } - - /** - * Runtime function to render sub-template - * - * @param string $template template name - * @param mixed $cache_id cache id - * @param mixed $compile_id compile id - * @param integer $caching cache mode - * @param integer $cache_lifetime life time of cache data - * @param array $data passed parameter template variables - * @param int $scope scope in which {include} should execute - * @param bool $forceTplCache cache template object - * @param string $uid file dependency uid - * @param string $content_func function name - * - * @throws \Exception - * @throws \SmartyException - */ - public function _subTemplateRender( - $template, - $cache_id, - $compile_id, - $caching, - $cache_lifetime, - $data, - $scope, - $forceTplCache, - $uid = null, - $content_func = null - ) { - $tpl = clone $this; - $tpl->parent = $this; - $smarty = &$this->smarty; - $_templateId = $smarty->_getTemplateId($template, $cache_id, $compile_id, $caching, $tpl); - // recursive call ? - if ((isset($tpl->templateId) ? $tpl->templateId : $tpl->_getTemplateId()) !== $_templateId) { - // already in template cache? - if (isset(self::$tplObjCache[ $_templateId ])) { - // copy data from cached object - $cachedTpl = &self::$tplObjCache[ $_templateId ]; - $tpl->templateId = $cachedTpl->templateId; - $tpl->template_resource = $cachedTpl->template_resource; - $tpl->cache_id = $cachedTpl->cache_id; - $tpl->compile_id = $cachedTpl->compile_id; - $tpl->source = $cachedTpl->source; - if (isset($cachedTpl->compiled)) { - $tpl->compiled = $cachedTpl->compiled; - } else { - unset($tpl->compiled); - } - if ($caching !== 9999 && isset($cachedTpl->cached)) { - $tpl->cached = $cachedTpl->cached; - } else { - unset($tpl->cached); - } - } else { - $tpl->templateId = $_templateId; - $tpl->template_resource = $template; - $tpl->cache_id = $cache_id; - $tpl->compile_id = $compile_id; - if (isset($uid)) { - // for inline templates we can get all resource information from file dependency - list($filepath, $timestamp, $type) = $tpl->compiled->file_dependency[ $uid ]; - $tpl->source = new Smarty_Template_Source($smarty, $filepath, $type, $filepath); - $tpl->source->filepath = $filepath; - $tpl->source->timestamp = $timestamp; - $tpl->source->exists = true; - $tpl->source->uid = $uid; - } else { - $tpl->source = Smarty_Template_Source::load($tpl); - unset($tpl->compiled); - } - if ($caching !== 9999) { - unset($tpl->cached); - } - } - } else { - // on recursive calls force caching - $forceTplCache = true; - } - $tpl->caching = $caching; - $tpl->cache_lifetime = $cache_lifetime; - // set template scope - $tpl->scope = $scope; - if (!isset(self::$tplObjCache[ $tpl->templateId ]) && !$tpl->source->handler->recompiled) { - // check if template object should be cached - if ($forceTplCache || (isset(self::$subTplInfo[ $tpl->template_resource ]) - && self::$subTplInfo[ $tpl->template_resource ] > 1) - || ($tpl->_isSubTpl() && isset(self::$tplObjCache[ $tpl->parent->templateId ])) - ) { - self::$tplObjCache[ $tpl->templateId ] = $tpl; - } - } - if (!empty($data)) { - // set up variable values - foreach ($data as $_key => $_val) { - $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val, $this->isRenderingCache); - } - } - if ($tpl->caching === 9999) { - if (!isset($tpl->compiled)) { - $tpl->loadCompiled(true); - } - if ($tpl->compiled->has_nocache_code) { - $this->cached->hashes[ $tpl->compiled->nocache_hash ] = true; - } - } - $tpl->_cache = array(); - if (isset($uid)) { - if ($smarty->debugging) { - if (!isset($smarty->_debug)) { - $smarty->_debug = new Smarty_Internal_Debug(); - } - $smarty->_debug->start_template($tpl); - $smarty->_debug->start_render($tpl); - } - $tpl->compiled->getRenderedTemplateCode($tpl, $content_func); - if ($smarty->debugging) { - $smarty->_debug->end_template($tpl); - $smarty->_debug->end_render($tpl); - } - } else { - if (isset($tpl->compiled)) { - $tpl->compiled->render($tpl); - } else { - $tpl->render(); - } - } - } - - /** - * Get called sub-templates and save call count - */ - public function _subTemplateRegister() - { - foreach ($this->compiled->includes as $name => $count) { - if (isset(self::$subTplInfo[ $name ])) { - self::$subTplInfo[ $name ] += $count; - } else { - self::$subTplInfo[ $name ] = $count; - } - } - } - - /** - * Check if this is a sub template - * - * @return bool true is sub template - */ - public function _isSubTpl() - { - return isset($this->parent) && $this->parent->_isTplObj(); - } - - /** - * Assign variable in scope - * - * @param string $varName variable name - * @param mixed $value value - * @param bool $nocache nocache flag - * @param int $scope scope into which variable shall be assigned - */ - public function _assignInScope($varName, $value, $nocache = false, $scope = 0) - { - if (isset($this->tpl_vars[ $varName ])) { - $this->tpl_vars[ $varName ] = clone $this->tpl_vars[ $varName ]; - $this->tpl_vars[ $varName ]->value = $value; - if ($nocache || $this->isRenderingCache) { - $this->tpl_vars[ $varName ]->nocache = true; - } - } else { - $this->tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache || $this->isRenderingCache); - } - if ($scope >= 0) { - if ($scope > 0 || $this->scope > 0) { - $this->smarty->ext->_updateScope->_updateScope($this, $varName, $scope); - } - } - } - - /** - * Check if plugins are callable require file otherwise - * - * @param array $plugins required plugins - * - * @throws \SmartyException - */ - public function _checkPlugins($plugins) - { - static $checked = array(); - foreach ($plugins as $plugin) { - $name = join('::', (array)$plugin[ 'function' ]); - if (!isset($checked[ $name ])) { - if (!is_callable($plugin[ 'function' ])) { - if (is_file($plugin[ 'file' ])) { - include_once $plugin[ 'file' ]; - if (is_callable($plugin[ 'function' ])) { - $checked[ $name ] = true; - } - } - } else { - $checked[ $name ] = true; - } - } - if (!isset($checked[ $name ])) { - if (false !== $this->smarty->loadPlugin($name)) { - $checked[ $name ] = true; - } else { - throw new SmartyException("Plugin '{$name}' not callable"); - } - } - } - } - - /** - * This function is executed automatically when a compiled or cached template file is included - * - Decode saved properties from compiled template and cache files - * - Check if compiled or cache file is valid - * - * @param \Smarty_Internal_Template $tpl - * @param array $properties special template properties - * @param bool $cache flag if called from cache file - * - * @return bool flag if compiled or cache file is valid - * @throws \SmartyException - */ - public function _decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false) - { - // on cache resources other than file check version stored in cache code - if (!isset($properties[ 'version' ]) || Smarty::SMARTY_VERSION !== $properties[ 'version' ]) { - if ($cache) { - $tpl->smarty->clearAllCache(); - } else { - $tpl->smarty->clearCompiledTemplate(); - } - return false; - } - $is_valid = true; - if (!empty($properties[ 'file_dependency' ]) - && ((!$cache && $tpl->compile_check) || $tpl->compile_check === Smarty::COMPILECHECK_ON) - ) { - // check file dependencies at compiled code - foreach ($properties[ 'file_dependency' ] as $_file_to_check) { - if ($_file_to_check[ 2 ] === 'file' || $_file_to_check[ 2 ] === 'php') { - if ($tpl->source->filepath === $_file_to_check[ 0 ]) { - // do not recheck current template - continue; - //$mtime = $tpl->source->getTimeStamp(); - } else { - // file and php types can be checked without loading the respective resource handlers - $mtime = is_file($_file_to_check[ 0 ]) ? filemtime($_file_to_check[ 0 ]) : false; - } - } else { - $handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[ 2 ]); - if ($handler->checkTimestamps()) { - $source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]); - $mtime = $source->getTimeStamp(); - } else { - continue; - } - } - if ($mtime === false || $mtime > $_file_to_check[ 1 ]) { - $is_valid = false; - break; - } - } - } - if ($cache) { - // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc - if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties[ 'cache_lifetime' ] >= 0 - && (time() > ($tpl->cached->timestamp + $properties[ 'cache_lifetime' ])) - ) { - $is_valid = false; - } - $tpl->cached->cache_lifetime = $properties[ 'cache_lifetime' ]; - $tpl->cached->valid = $is_valid; - $resource = $tpl->cached; - } else { - $tpl->mustCompile = !$is_valid; - $resource = $tpl->compiled; - $resource->includes = isset($properties[ 'includes' ]) ? $properties[ 'includes' ] : array(); - } - if ($is_valid) { - $resource->unifunc = $properties[ 'unifunc' ]; - $resource->has_nocache_code = $properties[ 'has_nocache_code' ]; - // $tpl->compiled->nocache_hash = $properties['nocache_hash']; - $resource->file_dependency = $properties[ 'file_dependency' ]; - } - return $is_valid && !function_exists($properties[ 'unifunc' ]); - } - - /** - * Compiles the template - * If the template is not evaluated the compiled template is saved on disk - * - * @throws \Exception - */ - public function compileTemplateSource() - { - return $this->compiled->compileTemplateSource($this); - } - - /** - * Writes the content to cache resource - * - * @param string $content - * - * @return bool - */ - public function writeCachedContent($content) - { - return $this->smarty->ext->_updateCache->writeCachedContent($this, $content); - } - - /** - * Get unique template id - * - * @return string - * @throws \SmartyException - */ - public function _getTemplateId() - { - return isset($this->templateId) ? $this->templateId : $this->templateId = - $this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id); - } - - /** - * runtime error not matching capture tags - * - * @throws \SmartyException - */ - public function capture_error() - { - throw new SmartyException("Not matching {capture} open/close in '{$this->template_resource}'"); - } - - /** - * Load compiled object - * - * @param bool $force force new compiled object - */ - public function loadCompiled($force = false) - { - if ($force || !isset($this->compiled)) { - $this->compiled = Smarty_Template_Compiled::load($this); - } - } - - /** - * Load cached object - * - * @param bool $force force new cached object - */ - public function loadCached($force = false) - { - if ($force || !isset($this->cached)) { - $this->cached = Smarty_Template_Cached::load($this); - } - } - - /** - * Load inheritance object - */ - public function _loadInheritance() - { - if (!isset($this->inheritance)) { - $this->inheritance = new Smarty_Internal_Runtime_Inheritance(); - } - } - - /** - * Unload inheritance object - */ - public function _cleanUp() - { - $this->startRenderCallbacks = array(); - $this->endRenderCallbacks = array(); - $this->inheritance = null; - } - - /** - * Load compiler object - * - * @throws \SmartyException - */ - public function loadCompiler() - { - if (!class_exists($this->source->compiler_class)) { - $this->smarty->loadPlugin($this->source->compiler_class); - } - $this->compiler = - new $this->source->compiler_class( - $this->source->template_lexer_class, - $this->source->template_parser_class, - $this->smarty - ); - } - - /** - * Handle unknown class methods - * - * @param string $name unknown method-name - * @param array $args argument array - * - * @return mixed - */ - public function __call($name, $args) - { - // method of Smarty object? - if (method_exists($this->smarty, $name)) { - return call_user_func_array(array($this->smarty, $name), $args); - } - // parent - return parent::__call($name, $args); - } - - /** - * get Smarty property in template context - * - * @param string $property_name property name - * - * @return mixed|Smarty_Template_Cached - * @throws SmartyException - */ - public function __get($property_name) - { - switch ($property_name) { - case 'compiled': - $this->loadCompiled(); - return $this->compiled; - case 'cached': - $this->loadCached(); - return $this->cached; - case 'compiler': - $this->loadCompiler(); - return $this->compiler; - default: - // Smarty property ? - if (property_exists($this->smarty, $property_name)) { - return $this->smarty->$property_name; - } - } - throw new SmartyException("template property '$property_name' does not exist."); - } - - /** - * set Smarty property in template context - * - * @param string $property_name property name - * @param mixed $value value - * - * @throws SmartyException - */ - public function __set($property_name, $value) - { - switch ($property_name) { - case 'compiled': - case 'cached': - case 'compiler': - $this->$property_name = $value; - return; - default: - // Smarty property ? - if (property_exists($this->smarty, $property_name)) { - $this->smarty->$property_name = $value; - return; - } - } - throw new SmartyException("invalid template property '$property_name'."); - } - - /** - * Template data object destructor - */ - public function __destruct() - { - if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) { - $this->cached->handler->releaseLock($this->smarty, $this->cached); - } - } -} diff --git a/libs/sysplugins/smarty_internal_templatebase.php b/libs/sysplugins/smarty_internal_templatebase.php deleted file mode 100644 index 918362e9..00000000 --- a/libs/sysplugins/smarty_internal_templatebase.php +++ /dev/null @@ -1,401 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Smarty Template Base - * This file contains the basic shared methods for template handling - * - * @package Smarty - * @subpackage Template - * @author Uwe Tews - */ - -/** - * Class with shared smarty/template methods - * - * @package Smarty - * @subpackage Template - * - * @property int $_objType - * - * The following methods will be dynamically loaded by the extension handler when they are called. - * They are located in a corresponding Smarty_Internal_Method_xxxx class - * - * @method Smarty_Internal_TemplateBase addAutoloadFilters(mixed $filters, string $type = null) - * @method Smarty_Internal_TemplateBase addDefaultModifiers(mixed $modifiers) - * @method Smarty_Internal_TemplateBase addLiterals(mixed $literals) - * @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null) - * @method array getAutoloadFilters(string $type = null) - * @method string getDebugTemplate() - * @method array getDefaultModifier() - * @method array getLiterals() - * @method array getTags(mixed $template = null) - * @method object getRegisteredObject(string $object_name) - * @method Smarty_Internal_TemplateBase registerCacheResource(string $name, Smarty_CacheResource $resource_handler) - * @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl) - * @method Smarty_Internal_TemplateBase registerDefaultConfigHandler(callback $callback) - * @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback) - * @method Smarty_Internal_TemplateBase registerDefaultTemplateHandler(callback $callback) - * @method Smarty_Internal_TemplateBase registerResource(string $name, mixed $resource_handler) - * @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null) - * @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name) - * @method Smarty_Internal_TemplateBase setDefaultModifiers(mixed $modifiers) - * @method Smarty_Internal_TemplateBase setLiterals(mixed $literals) - * @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name) - * @method Smarty_Internal_TemplateBase unregisterCacheResource(string $name) - * @method Smarty_Internal_TemplateBase unregisterObject(string $object_name) - * @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name) - * @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback) - * @method Smarty_Internal_TemplateBase unregisterResource(string $name) - */ -abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data -{ - /** - * Set this if you want different sets of cache files for the same - * templates. - * - * @var string - */ - public $cache_id = null; - - /** - * Set this if you want different sets of compiled files for the same - * templates. - * - * @var string - */ - public $compile_id = null; - - /** - * caching enabled - * - * @var int - */ - public $caching = Smarty::CACHING_OFF; - - /** - * check template for modifications? - * - * @var int - */ - public $compile_check = Smarty::COMPILECHECK_ON; - - /** - * cache lifetime in seconds - * - * @var integer - */ - public $cache_lifetime = 3600; - - /** - * Array of source information for known template functions - * - * @var array - */ - public $tplFunctions = array(); - - /** - * universal cache - * - * @var array() - */ - public $_cache = array(); - - /** - * fetches a rendered Smarty template - * - * @param string $template the resource handle of the template file or template object - * @param mixed $cache_id cache 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 - * - * @throws Exception - * @throws SmartyException - * @return string rendered template output - */ - public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null) - { - $result = $this->_execute($template, $cache_id, $compile_id, $parent, 0); - return $result === null ? ob_get_clean() : $result; - } - - /** - * displays a Smarty template - * - * @param string $template the resource handle of the template file or template object - * @param mixed $cache_id cache 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 - * - * @throws \Exception - * @throws \SmartyException - */ - public function display($template = null, $cache_id = null, $compile_id = null, $parent = null) - { - // display template - $this->_execute($template, $cache_id, $compile_id, $parent, 1); - } - - /** - * test if cache is valid - * - * @api Smarty::isCached() - * @link https://www.smarty.net/docs/en/api.is.cached.tpl - * - * @param null|string|\Smarty_Internal_Template $template the resource handle of the template file or template - * object - * @param mixed $cache_id cache 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 - * - * @return bool cache status - * @throws \Exception - * @throws \SmartyException - */ - public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null) - { - return $this->_execute($template, $cache_id, $compile_id, $parent, 2); - } - - /** - * fetches a rendered Smarty template - * - * @param string $template the resource handle of the template file or template object - * @param mixed $cache_id cache 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 string $function function type 0 = fetch, 1 = display, 2 = isCache - * - * @return mixed - * @throws \Exception - * @throws \SmartyException - */ - private function _execute($template, $cache_id, $compile_id, $parent, $function) - { - $smarty = $this->_getSmartyObj(); - $saveVars = true; - if ($template === null) { - if (!$this->_isTplObj()) { - throw new SmartyException($function . '():Missing \'$template\' parameter'); - } else { - $template = $this; - } - } elseif (is_object($template)) { - /* @var Smarty_Internal_Template $template */ - if (!isset($template->_objType) || !$template->_isTplObj()) { - throw new SmartyException($function . '():Template object expected'); - } - } else { - // get template object - $saveVars = false; - $template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent ? $parent : $this, false); - if ($this->_objType === 1) { - // set caching in template object - $template->caching = $this->caching; - } - } - // make sure we have integer values - $template->caching = (int)$template->caching; - // fetch template content - $level = ob_get_level(); - try { - $_smarty_old_error_level = - isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null; - - if ($smarty->isMutingUndefinedOrNullWarnings()) { - $errorHandler = new Smarty_Internal_ErrorHandler(); - $errorHandler->activate(); - } - - if ($this->_objType === 2) { - /* @var Smarty_Internal_Template $this */ - $template->tplFunctions = $this->tplFunctions; - $template->inheritance = $this->inheritance; - } - /* @var Smarty_Internal_Template $parent */ - if (isset($parent->_objType) && ($parent->_objType === 2) && !empty($parent->tplFunctions)) { - $template->tplFunctions = array_merge($parent->tplFunctions, $template->tplFunctions); - } - if ($function === 2) { - if ($template->caching) { - // return cache status of template - if (!isset($template->cached)) { - $template->loadCached(); - } - $result = $template->cached->isCached($template); - Smarty_Internal_Template::$isCacheTplObj[ $template->_getTemplateId() ] = $template; - } else { - return false; - } - } else { - if ($saveVars) { - $savedTplVars = $template->tpl_vars; - $savedConfigVars = $template->config_vars; - } - ob_start(); - $template->_mergeVars(); - if (!empty(Smarty::$global_tpl_vars)) { - $template->tpl_vars = array_merge(Smarty::$global_tpl_vars, $template->tpl_vars); - } - $result = $template->render(false, $function); - $template->_cleanUp(); - if ($saveVars) { - $template->tpl_vars = $savedTplVars; - $template->config_vars = $savedConfigVars; - } else { - if (!$function && !isset(Smarty_Internal_Template::$tplObjCache[ $template->templateId ])) { - $template->parent = null; - $template->tpl_vars = $template->config_vars = array(); - Smarty_Internal_Template::$tplObjCache[ $template->templateId ] = $template; - } - } - } - - if (isset($errorHandler)) { - $errorHandler->deactivate(); - } - - if (isset($_smarty_old_error_level)) { - error_reporting($_smarty_old_error_level); - } - return $result; - } catch (Throwable $e) { - while (ob_get_level() > $level) { - ob_end_clean(); - } - if (isset($errorHandler)) { - $errorHandler->deactivate(); - } - - if (isset($_smarty_old_error_level)) { - error_reporting($_smarty_old_error_level); - } - throw $e; - } - } - - /** - * Registers plugin to be used in templates - * - * @api Smarty::registerPlugin() - * @link https://www.smarty.net/docs/en/api.register.plugin.tpl - * - * @param string $type plugin type - * @param string $name name of template tag - * @param callable $callback PHP callback to register - * @param bool $cacheable if true (default) this function is cache able - * @param mixed $cache_attr caching attributes if any - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function registerPlugin($type, $name, $callback, $cacheable = true, $cache_attr = null) - { - return $this->ext->registerPlugin->registerPlugin($this, $type, $name, $callback, $cacheable, $cache_attr); - } - - /** - * load a filter of specified type and name - * - * @api Smarty::loadFilter() - * @link https://www.smarty.net/docs/en/api.load.filter.tpl - * - * @param string $type filter type - * @param string $name filter name - * - * @return bool - * @throws \SmartyException - */ - public function loadFilter($type, $name) - { - return $this->ext->loadFilter->loadFilter($this, $type, $name); - } - - /** - * Registers a filter function - * - * @api Smarty::registerFilter() - * @link https://www.smarty.net/docs/en/api.register.filter.tpl - * - * @param string $type filter type - * @param callable $callback - * @param string|null $name optional filter name - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function registerFilter($type, $callback, $name = null) - { - return $this->ext->registerFilter->registerFilter($this, $type, $callback, $name); - } - - /** - * Registers object to be used in templates - * - * @api Smarty::registerObject() - * @link https://www.smarty.net/docs/en/api.register.object.tpl - * - * @param string $object_name - * @param object $object the referenced PHP object to register - * @param array $allowed_methods_properties list of allowed methods (empty = all) - * @param bool $format smarty argument format, else traditional - * @param array $block_methods list of block-methods - * - * @return \Smarty|\Smarty_Internal_Template - * @throws \SmartyException - */ - public function registerObject( - $object_name, - $object, - $allowed_methods_properties = array(), - $format = true, - $block_methods = array() - ) { - return $this->ext->registerObject->registerObject( - $this, - $object_name, - $object, - $allowed_methods_properties, - $format, - $block_methods - ); - } - - /** - * @param int $compile_check - */ - public function setCompileCheck($compile_check) - { - $this->compile_check = (int)$compile_check; - } - - /** - * @param int $caching - */ - public function setCaching($caching) - { - $this->caching = (int)$caching; - } - - /** - * @param int $cache_lifetime - */ - public function setCacheLifetime($cache_lifetime) - { - $this->cache_lifetime = $cache_lifetime; - } - - /** - * @param string $compile_id - */ - public function setCompileId($compile_id) - { - $this->compile_id = $compile_id; - } - - /** - * @param string $cache_id - */ - public function setCacheId($cache_id) - { - $this->cache_id = $cache_id; - } -} diff --git a/libs/sysplugins/smarty_internal_templatecompilerbase.php b/libs/sysplugins/smarty_internal_templatecompilerbase.php deleted file mode 100644 index d5c18d31..00000000 --- a/libs/sysplugins/smarty_internal_templatecompilerbase.php +++ /dev/null @@ -1,1749 +0,0 @@ -<?php -/** - * Smarty Internal Plugin Smarty Template Compiler Base - * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ - -/** - * Main abstract compiler class - * - * @package Smarty - * @subpackage Compiler - * - * @property Smarty_Internal_SmartyTemplateCompiler $prefixCompiledCode = '' - * @property Smarty_Internal_SmartyTemplateCompiler $postfixCompiledCode = '' - * @method registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false) - * @method unregisterPostCompileCallback($key) - */ -abstract class Smarty_Internal_TemplateCompilerBase -{ - /** - * compile tag objects cache - * - * @var array - */ - public static $_tag_objects = array(); - - /** - * counter for prefix variable number - * - * @var int - */ - public static $prefixVariableNumber = 0; - - /** - * Smarty object - * - * @var Smarty - */ - public $smarty = null; - - /** - * Parser object - * - * @var Smarty_Internal_Templateparser - */ - public $parser = null; - - /** - * hash for nocache sections - * - * @var mixed - */ - public $nocache_hash = null; - - /** - * suppress generation of nocache code - * - * @var bool - */ - public $suppressNocacheProcessing = false; - - /** - * caching enabled (copied from template object) - * - * @var int - */ - public $caching = 0; - - /** - * tag stack - * - * @var array - */ - public $_tag_stack = array(); - - /** - * tag stack count - * - * @var array - */ - public $_tag_stack_count = array(); - - /** - * Plugins used by template - * - * @var array - */ - public $required_plugins = array('compiled' => array(), 'nocache' => array()); - - /** - * Required plugins stack - * - * @var array - */ - public $required_plugins_stack = array(); - - /** - * current template - * - * @var Smarty_Internal_Template - */ - public $template = null; - - /** - * merged included sub template data - * - * @var array - */ - public $mergedSubTemplatesData = array(); - - /** - * merged sub template code - * - * @var array - */ - public $mergedSubTemplatesCode = array(); - - /** - * collected template properties during compilation - * - * @var array - */ - public $templateProperties = array(); - - /** - * source line offset for error messages - * - * @var int - */ - public $trace_line_offset = 0; - - /** - * trace uid - * - * @var string - */ - public $trace_uid = ''; - - /** - * trace file path - * - * @var string - */ - public $trace_filepath = ''; - - /** - * stack for tracing file and line of nested {block} tags - * - * @var array - */ - public $trace_stack = array(); - - /** - * plugins loaded by default plugin handler - * - * @var array - */ - public $default_handler_plugins = array(); - - /** - * saved preprocessed modifier list - * - * @var mixed - */ - public $default_modifier_list = null; - - /** - * force compilation of complete template as nocache - * - * @var boolean - */ - public $forceNocache = false; - - /** - * flag if compiled template file shall we written - * - * @var bool - */ - public $write_compiled_code = true; - - /** - * Template functions - * - * @var array - */ - public $tpl_function = array(); - - /** - * called sub functions from template function - * - * @var array - */ - public $called_functions = array(); - - /** - * compiled template or block function code - * - * @var string - */ - public $blockOrFunctionCode = ''; - - /** - * flags for used modifier plugins - * - * @var array - */ - public $modifier_plugins = array(); - - /** - * type of already compiled modifier - * - * @var array - */ - public $known_modifier_type = array(); - - /** - * parent compiler object for merged subtemplates and template functions - * - * @var Smarty_Internal_TemplateCompilerBase - */ - public $parent_compiler = null; - - /** - * Flag true when compiling nocache section - * - * @var bool - */ - public $nocache = false; - - /** - * Flag true when tag is compiled as nocache - * - * @var bool - */ - public $tag_nocache = false; - - /** - * Compiled tag prefix code - * - * @var array - */ - public $prefix_code = array(); - - /** - * used prefix variables by current compiled tag - * - * @var array - */ - public $usedPrefixVariables = array(); - - /** - * Prefix code stack - * - * @var array - */ - public $prefixCodeStack = array(); - - /** - * Tag has compiled code - * - * @var bool - */ - public $has_code = false; - - /** - * A variable string was compiled - * - * @var bool - */ - public $has_variable_string = false; - - /** - * Stack for {setfilter} {/setfilter} - * - * @var array - */ - public $variable_filter_stack = array(); - - /** - * variable filters for {setfilter} {/setfilter} - * - * @var array - */ - public $variable_filters = array(); - - /** - * Nesting count of looping tags like {foreach}, {for}, {section}, {while} - * - * @var int - */ - public $loopNesting = 0; - - /** - * Strip preg pattern - * - * @var string - */ - public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!'; - - /** - * plugin search order - * - * @var array - */ - public $plugin_search_order = array( - 'function', - 'block', - 'compiler', - 'class' - ); - - /** - * General storage area for tag compiler plugins - * - * @var array - */ - public $_cache = array(); - - /** - * Lexer preg pattern for left delimiter - * - * @var string - */ - private $ldelPreg = '[{]'; - - /** - * Lexer preg pattern for right delimiter - * - * @var string - */ - private $rdelPreg = '[}]'; - - /** - * Length of right delimiter - * - * @var int - */ - private $rdelLength = 0; - - /** - * Length of left delimiter - * - * @var int - */ - private $ldelLength = 0; - - /** - * Lexer preg pattern for user literals - * - * @var string - */ - private $literalPreg = ''; - - /** - * Initialize compiler - * - * @param Smarty $smarty global instance - */ - public function __construct(Smarty $smarty) - { - $this->smarty = $smarty; - $this->nocache_hash = str_replace( - array( - '.', - ',' - ), - '_', - uniqid(mt_rand(), true) - ); - } - - /** - * Method to compile a Smarty template - * - * @param Smarty_Internal_Template $template template object to compile - * @param bool $nocache true is shall be compiled in nocache mode - * @param null|Smarty_Internal_TemplateCompilerBase $parent_compiler - * - * @return bool true if compiling succeeded, false if it failed - * @throws \Exception - */ - public function compileTemplate( - Smarty_Internal_Template $template, - $nocache = null, - Smarty_Internal_TemplateCompilerBase $parent_compiler = null - ) { - // get code frame of compiled template - $_compiled_code = $template->smarty->ext->_codeFrame->create( - $template, - $this->compileTemplateSource( - $template, - $nocache, - $parent_compiler - ), - $this->postFilter($this->blockOrFunctionCode) . - join('', $this->mergedSubTemplatesCode), - false, - $this - ); - return $_compiled_code; - } - - /** - * Compile template source and run optional post filter - * - * @param \Smarty_Internal_Template $template - * @param null|bool $nocache flag if template must be compiled in nocache mode - * @param \Smarty_Internal_TemplateCompilerBase $parent_compiler - * - * @return string - * @throws \Exception - */ - public function compileTemplateSource( - Smarty_Internal_Template $template, - $nocache = null, - Smarty_Internal_TemplateCompilerBase $parent_compiler = null - ) { - try { - // save template object in compiler class - $this->template = $template; - if ($this->smarty->debugging) { - if (!isset($this->smarty->_debug)) { - $this->smarty->_debug = new Smarty_Internal_Debug(); - } - $this->smarty->_debug->start_compile($this->template); - } - $this->parent_compiler = $parent_compiler ? $parent_compiler : $this; - $nocache = isset($nocache) ? $nocache : false; - if (empty($template->compiled->nocache_hash)) { - $template->compiled->nocache_hash = $this->nocache_hash; - } else { - $this->nocache_hash = $template->compiled->nocache_hash; - } - $this->caching = $template->caching; - // flag for nocache sections - $this->nocache = $nocache; - $this->tag_nocache = false; - // reset has nocache code flag - $this->template->compiled->has_nocache_code = false; - $this->has_variable_string = false; - $this->prefix_code = array(); - // add file dependency - if ($this->smarty->merge_compiled_includes || $this->template->source->handler->checkTimestamps()) { - $this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] = - array( - $this->template->source->filepath, - $this->template->source->getTimeStamp(), - $this->template->source->type, - ); - } - $this->smarty->_current_file = $this->template->source->filepath; - // get template source - if (!empty($this->template->source->components)) { - // we have array of inheritance templates by extends: resource - // generate corresponding source code sequence - $_content = - Smarty_Internal_Compile_Extends::extendsSourceArrayCode($this->template); - } else { - // get template source - $_content = $this->template->source->getContent(); - } - $_compiled_code = $this->postFilter($this->doCompile($this->preFilter($_content), true)); - if (!empty($this->required_plugins[ 'compiled' ]) || !empty($this->required_plugins[ 'nocache' ])) { - $_compiled_code = '<?php ' . $this->compileRequiredPlugins() . "?>\n" . $_compiled_code; - } - } catch (Exception $e) { - if ($this->smarty->debugging) { - $this->smarty->_debug->end_compile($this->template); - } - $this->_tag_stack = array(); - // free memory - $this->parent_compiler = null; - $this->template = null; - $this->parser = null; - throw $e; - } - if ($this->smarty->debugging) { - $this->smarty->_debug->end_compile($this->template); - } - $this->parent_compiler = null; - $this->parser = null; - return $_compiled_code; - } - - /** - * Optionally process compiled code by post filter - * - * @param string $code compiled code - * - * @return string - * @throws \SmartyException - */ - public function postFilter($code) - { - // run post filter if on code - if (!empty($code) - && (isset($this->smarty->autoload_filters[ 'post' ]) || isset($this->smarty->registered_filters[ 'post' ])) - ) { - return $this->smarty->ext->_filterHandler->runFilter('post', $code, $this->template); - } else { - return $code; - } - } - - /** - * Run optional prefilter - * - * @param string $_content template source - * - * @return string - * @throws \SmartyException - */ - public function preFilter($_content) - { - // run pre filter if required - if ($_content !== '' - && ((isset($this->smarty->autoload_filters[ 'pre' ]) || isset($this->smarty->registered_filters[ 'pre' ]))) - ) { - return $this->smarty->ext->_filterHandler->runFilter('pre', $_content, $this->template); - } else { - return $_content; - } - } - - /** - * Compile Tag - * This is a call back from the lexer/parser - * - * Save current prefix code - * Compile tag - * Merge tag prefix code with saved one - * (required nested tags in attributes) - * - * @param string $tag tag name - * @param array $args array with tag attributes - * @param array $parameter array with compilation parameter - * - * @throws SmartyCompilerException - * @throws SmartyException - * @return string compiled code - */ - public function compileTag($tag, $args, $parameter = array()) - { - $this->prefixCodeStack[] = $this->prefix_code; - $this->prefix_code = array(); - $result = $this->compileTag2($tag, $args, $parameter); - $this->prefix_code = array_merge($this->prefix_code, array_pop($this->prefixCodeStack)); - return $result; - } - - /** - * compile variable - * - * @param string $variable - * - * @return string - */ - public function compileVariable($variable) - { - if (!strpos($variable, '(')) { - // not a variable variable - $var = trim($variable, '\''); - $this->tag_nocache = $this->tag_nocache | - $this->template->ext->getTemplateVars->_getVariable( - $this->template, - $var, - null, - true, - false - )->nocache; - // todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache; - } - return '$_smarty_tpl->tpl_vars[' . $variable . ']->value'; - } - - /** - * compile config variable - * - * @param string $variable - * - * @return string - */ - public function compileConfigVariable($variable) - { - // return '$_smarty_tpl->config_vars[' . $variable . ']'; - return '$_smarty_tpl->smarty->ext->configLoad->_getConfigVariable($_smarty_tpl, ' . $variable . ')'; - } - - /** - * compile PHP function call - * - * @param string $name - * @param array $parameter - * - * @return string - * @throws \SmartyCompilerException - */ - public function compilePHPFunctionCall($name, $parameter) - { - if (!$this->smarty->security_policy || $this->smarty->security_policy->isTrustedPhpFunction($name, $this)) { - if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0 - || strcasecmp($name, 'array') === 0 || is_callable($name) - ) { - $func_name = smarty_strtolower_ascii($name); - - if ($func_name === 'isset') { - if (count($parameter) === 0) { - $this->trigger_template_error('Illegal number of parameter in "isset()"'); - } - - $pa = array(); - foreach ($parameter as $p) { - $pa[] = $this->syntaxMatchesVariable($p) ? 'isset(' . $p . ')' : '(' . $p . ' !== null )'; - } - return '(' . implode(' && ', $pa) . ')'; - - } elseif (in_array( - $func_name, - array( - 'empty', - 'reset', - 'current', - 'end', - 'prev', - 'next' - ) - ) - ) { - if (count($parameter) !== 1) { - $this->trigger_template_error("Illegal number of parameter in '{$func_name()}'"); - } - if ($func_name === 'empty') { - return $func_name . '(' . - str_replace("')->value", "',null,true,false)->value", $parameter[ 0 ]) . ')'; - } else { - return $func_name . '(' . $parameter[ 0 ] . ')'; - } - } else { - return $name . '(' . implode(',', $parameter) . ')'; - } - } else { - $this->trigger_template_error("unknown function '{$name}'"); - } - } - } - - /** - * Determines whether the passed string represents a valid (PHP) variable. - * This is important, because `isset()` only works on variables and `empty()` can only be passed - * a variable prior to php5.5 - * @param $string - * @return bool - */ - private function syntaxMatchesVariable($string) { - static $regex_pattern = '/^\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*((->)[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*|\[.*]*\])*$/'; - return 1 === preg_match($regex_pattern, trim($string)); - } - - /** - * This method is called from parser to process a text content section if strip is enabled - * - remove text from inheritance child templates as they may generate output - * - * @param string $text - * - * @return string - */ - public function processText($text) - { - - if (strpos($text, '<') === false) { - return preg_replace($this->stripRegEx, '', $text); - } - - $store = array(); - $_store = 0; - - // capture html elements not to be messed with - $_offset = 0; - if (preg_match_all( - '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', - $text, - $matches, - PREG_OFFSET_CAPTURE | PREG_SET_ORDER - ) - ) { - foreach ($matches as $match) { - $store[] = $match[ 0 ][ 0 ]; - $_length = strlen($match[ 0 ][ 0 ]); - $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; - $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); - $_offset += $_length - strlen($replace); - $_store++; - } - } - $expressions = array(// replace multiple spaces between tags by a single space - '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2', - // remove newline between tags - '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2', - // remove multiple spaces between attributes (but not in attribute values!) - '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', - '#>[\040\011]+$#Ss' => '> ', - '#>[\040\011]*[\n]\s*$#Ss' => '>', - $this->stripRegEx => '', - ); - $text = preg_replace(array_keys($expressions), array_values($expressions), $text); - $_offset = 0; - if (preg_match_all( - '#@!@SMARTY:([0-9]+):SMARTY@!@#is', - $text, - $matches, - PREG_OFFSET_CAPTURE | PREG_SET_ORDER - ) - ) { - foreach ($matches as $match) { - $_length = strlen($match[ 0 ][ 0 ]); - $replace = $store[ $match[ 1 ][ 0 ] ]; - $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length); - $_offset += strlen($replace) - $_length; - $_store++; - } - } - return $text; - } - - /** - * lazy loads internal compile plugin for tag and calls the compile method - * compile objects cached for reuse. - * class name format: Smarty_Internal_Compile_TagName - * plugin filename format: Smarty_Internal_TagName.php - * - * @param string $tag tag name - * @param array $args list of tag attributes - * @param mixed $param1 optional parameter - * @param mixed $param2 optional parameter - * @param mixed $param3 optional parameter - * - * @return bool|string compiled code or false - * @throws \SmartyCompilerException - */ - public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null) - { - /* @var Smarty_Internal_CompileBase $tagCompiler */ - $tagCompiler = $this->getTagCompiler($tag); - // compile this tag - return $tagCompiler === false ? false : $tagCompiler->compile($args, $this, $param1, $param2, $param3); - } - - /** - * lazy loads internal compile plugin for tag compile objects cached for reuse. - * - * class name format: Smarty_Internal_Compile_TagName - * plugin filename format: Smarty_Internal_TagName.php - * - * @param string $tag tag name - * - * @return bool|\Smarty_Internal_CompileBase tag compiler object or false if not found - */ - public function getTagCompiler($tag) - { - // re-use object if already exists - if (!isset(self::$_tag_objects[ $tag ])) { - // lazy load internal compiler plugin - $_tag = explode('_', $tag); - $_tag = array_map('smarty_ucfirst_ascii', $_tag); - $class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag); - if (class_exists($class_name) - && (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) - ) { - self::$_tag_objects[ $tag ] = new $class_name; - } else { - self::$_tag_objects[ $tag ] = false; - } - } - return self::$_tag_objects[ $tag ]; - } - - /** - * Check for plugins and return function name - * - * @param $plugin_name - * @param string $plugin_type type of plugin - * - * @return string call name of function - * @throws \SmartyException - */ - public function getPlugin($plugin_name, $plugin_type) - { - $function = null; - if ($this->caching && ($this->nocache || $this->tag_nocache)) { - if (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) { - $function = - $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ]; - } elseif (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) { - $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ] = - $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ]; - $function = - $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ]; - } - } else { - if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) { - $function = - $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ]; - } elseif (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) { - $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ] = - $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ]; - $function = - $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ]; - } - } - if (isset($function)) { - if ($plugin_type === 'modifier') { - $this->modifier_plugins[ $plugin_name ] = true; - } - return $function; - } - // loop through plugin dirs and find the plugin - $function = 'smarty_' . $plugin_type . '_' . $plugin_name; - $file = $this->smarty->loadPlugin($function, false); - if (is_string($file)) { - if ($this->caching && ($this->nocache || $this->tag_nocache)) { - $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'file' ] = - $file; - $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ] = - $function; - } else { - $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'file' ] = - $file; - $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ] = - $function; - } - if ($plugin_type === 'modifier') { - $this->modifier_plugins[ $plugin_name ] = true; - } - return $function; - } - if (is_callable($function)) { - // plugin function is defined in the script - return $function; - } - return false; - } - - /** - * Check for plugins by default plugin handler - * - * @param string $tag name of tag - * @param string $plugin_type type of plugin - * - * @return bool true if found - * @throws \SmartyCompilerException - */ - public function getPluginFromDefaultHandler($tag, $plugin_type) - { - $callback = null; - $script = null; - $cacheable = true; - $result = call_user_func_array( - $this->smarty->default_plugin_handler_func, - array( - $tag, - $plugin_type, - $this->template, - &$callback, - &$script, - &$cacheable, - ) - ); - if ($result) { - $this->tag_nocache = $this->tag_nocache || !$cacheable; - if ($script !== null) { - if (is_file($script)) { - if ($this->caching && ($this->nocache || $this->tag_nocache)) { - $this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'file' ] = - $script; - $this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'function' ] = - $callback; - } else { - $this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'file' ] = - $script; - $this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'function' ] = - $callback; - } - include_once $script; - } else { - $this->trigger_template_error("Default plugin handler: Returned script file '{$script}' for '{$tag}' not found"); - } - } - if (is_callable($callback)) { - $this->default_handler_plugins[ $plugin_type ][ $tag ] = array( - $callback, - true, - array() - ); - return true; - } else { - $this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable"); - } - } - return false; - } - - /** - * Append code segments and remove unneeded ?> <?php transitions - * - * @param string $left - * @param string $right - * - * @return string - */ - public function appendCode($left, $right) - { - if (preg_match('/\s*\?>\s?$/D', $left) && preg_match('/^<\?php\s+/', $right)) { - $left = preg_replace('/\s*\?>\s?$/D', "\n", $left); - $left .= preg_replace('/^<\?php\s+/', '', $right); - } else { - $left .= $right; - } - return $left; - } - - /** - * Inject inline code for nocache template sections - * This method gets the content of each template element from the parser. - * If the content is compiled code and it should be not cached the code is injected - * into the rendered output. - * - * @param string $content content of template element - * @param boolean $is_code true if content is compiled code - * - * @return string content - */ - public function processNocacheCode($content, $is_code) - { - // If the template is not evaluated and we have a nocache section and or a nocache tag - if ($is_code && !empty($content)) { - // generate replacement code - if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->caching - && !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache) - ) { - $this->template->compiled->has_nocache_code = true; - $_output = addcslashes($content, '\'\\'); - $_output = str_replace('^#^', '\'', $_output); - $_output = - "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n"; - // make sure we include modifier plugins for nocache code - foreach ($this->modifier_plugins as $plugin_name => $dummy) { - if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) { - $this->required_plugins[ 'nocache' ][ $plugin_name ][ 'modifier' ] = - $this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ]; - } - } - } else { - $_output = $content; - } - } else { - $_output = $content; - } - $this->modifier_plugins = array(); - $this->suppressNocacheProcessing = false; - $this->tag_nocache = false; - return $_output; - } - - /** - * Get Id - * - * @param string $input - * - * @return bool|string - */ - public function getId($input) - { - if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) { - return $match[ 2 ]; - } - return false; - } - - /** - * Get variable name from string - * - * @param string $input - * - * @return bool|string - */ - public function getVariableName($input) - { - if (preg_match('~^[$]_smarty_tpl->tpl_vars\[[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]->value$~', $input, $match)) { - return $match[ 1 ]; - } - return false; - } - - /** - * Set nocache flag in variable or create new variable - * - * @param string $varName - */ - public function setNocacheInVariable($varName) - { - // create nocache var to make it know for further compiling - if ($_var = $this->getId($varName)) { - if (isset($this->template->tpl_vars[ $_var ])) { - $this->template->tpl_vars[ $_var ] = clone $this->template->tpl_vars[ $_var ]; - $this->template->tpl_vars[ $_var ]->nocache = true; - } else { - $this->template->tpl_vars[ $_var ] = new Smarty_Variable(null, true); - } - } - } - - /** - * @param array $_attr tag attributes - * @param array $validScopes - * - * @return int|string - * @throws \SmartyCompilerException - */ - public function convertScope($_attr, $validScopes) - { - $_scope = 0; - if (isset($_attr[ 'scope' ])) { - $_scopeName = trim($_attr[ 'scope' ], '\'"'); - if (is_numeric($_scopeName) && in_array($_scopeName, $validScopes)) { - $_scope = $_scopeName; - } elseif (is_string($_scopeName)) { - $_scopeName = trim($_scopeName, '\'"'); - $_scope = isset($validScopes[ $_scopeName ]) ? $validScopes[ $_scopeName ] : false; - } else { - $_scope = false; - } - if ($_scope === false) { - $err = var_export($_scopeName, true); - $this->trigger_template_error("illegal value '{$err}' for \"scope\" attribute", null, true); - } - } - return $_scope; - } - - /** - * Generate nocache code string - * - * @param string $code PHP code - * - * @return string - */ - public function makeNocacheCode($code) - { - return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/<?php " . - str_replace('^#^', '\'', addcslashes($code, '\'\\')) . - "?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n"; - } - - /** - * display compiler error messages without dying - * If parameter $args is empty it is a parser detected syntax error. - * In this case the parser is called to obtain information about expected tokens. - * If parameter $args contains a string this is used as error message - * - * @param string $args individual error message or null - * @param string $line line-number - * @param null|bool $tagline if true the line number of last tag - * - * @throws \SmartyCompilerException when an unexpected token is found - */ - public function trigger_template_error($args = null, $line = null, $tagline = null) - { - $lex = $this->parser->lex; - if ($tagline === true) { - // get line number of Tag - $line = $lex->taglineno; - } elseif (!isset($line)) { - // get template source line which has error - $line = $lex->line; - } else { - $line = (int)$line; - } - if (in_array( - $this->template->source->type, - array( - 'eval', - 'string' - ) - ) - ) { - $templateName = $this->template->source->type . ':' . trim( - preg_replace( - '![\t\r\n]+!', - ' ', - strlen($lex->data) > 40 ? - substr($lex->data, 0, 40) . - '...' : $lex->data - ) - ); - } else { - $templateName = $this->template->source->type . ':' . $this->template->source->filepath; - } - // $line += $this->trace_line_offset; - $match = preg_split("/\n/", $lex->data); - $error_text = - 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) . - '" on line ' . ($line + $this->trace_line_offset) . ' "' . - trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])) . '" '; - if (isset($args)) { - // individual error message - $error_text .= $args; - } else { - $expect = array(); - // expected token from parser - $error_text .= ' - Unexpected "' . $lex->value . '"'; - if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) { - foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) { - $exp_token = $this->parser->yyTokenName[ $token ]; - if (isset($lex->smarty_token_names[ $exp_token ])) { - // token type from lexer - $expect[] = '"' . $lex->smarty_token_names[ $exp_token ] . '"'; - } else { - // otherwise internal token name - $expect[] = $this->parser->yyTokenName[ $token ]; - } - } - $error_text .= ', expected one of: ' . implode(' , ', $expect); - } - } - if ($this->smarty->_parserdebug) { - $this->parser->errorRunDown(); - echo ob_get_clean(); - flush(); - } - $e = new SmartyCompilerException( - $error_text, - 0, - $this->template->source->filepath, - $line - ); - $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])); - $e->desc = $args; - $e->template = $this->template->source->filepath; - throw $e; - } - - /** - * Return var_export() value with all white spaces removed - * - * @param mixed $value - * - * @return string - */ - public function getVarExport($value) - { - return preg_replace('/\s/', '', var_export($value, true)); - } - - /** - * enter double quoted string - * - save tag stack count - */ - public function enterDoubleQuote() - { - array_push($this->_tag_stack_count, $this->getTagStackCount()); - } - - /** - * Return tag stack count - * - * @return int - */ - public function getTagStackCount() - { - return count($this->_tag_stack); - } - - /** - * @param $lexerPreg - * - * @return mixed - */ - public function replaceDelimiter($lexerPreg) - { - return str_replace( - array('SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'), - array( - $this->ldelPreg, $this->literalPreg, $this->rdelPreg, - $this->smarty->getAutoLiteral() ? '{1,}' : '{9}', - $this->smarty->getAutoLiteral() ? '' : '\\s*' - ), - $lexerPreg - ); - } - - /** - * Build lexer regular expressions for left and right delimiter and user defined literals - */ - public function initDelimiterPreg() - { - $ldel = $this->smarty->getLeftDelimiter(); - $this->ldelLength = strlen($ldel); - $this->ldelPreg = ''; - foreach (str_split($ldel, 1) as $chr) { - $this->ldelPreg .= '[' . preg_quote($chr,'/') . ']'; - } - $rdel = $this->smarty->getRightDelimiter(); - $this->rdelLength = strlen($rdel); - $this->rdelPreg = ''; - foreach (str_split($rdel, 1) as $chr) { - $this->rdelPreg .= '[' . preg_quote($chr,'/') . ']'; - } - $literals = $this->smarty->getLiterals(); - if (!empty($literals)) { - foreach ($literals as $key => $literal) { - $literalPreg = ''; - foreach (str_split($literal, 1) as $chr) { - $literalPreg .= '[' . preg_quote($chr,'/') . ']'; - } - $literals[ $key ] = $literalPreg; - } - $this->literalPreg = '|' . implode('|', $literals); - } else { - $this->literalPreg = ''; - } - } - - /** - * leave double quoted string - * - throw exception if block in string was not closed - * - * @throws \SmartyCompilerException - */ - public function leaveDoubleQuote() - { - if (array_pop($this->_tag_stack_count) !== $this->getTagStackCount()) { - $tag = $this->getOpenBlockTag(); - $this->trigger_template_error( - "unclosed '{{$tag}}' in doubled quoted string", - null, - true - ); - } - } - - /** - * Get left delimiter preg - * - * @return string - */ - public function getLdelPreg() - { - return $this->ldelPreg; - } - - /** - * Get right delimiter preg - * - * @return string - */ - public function getRdelPreg() - { - return $this->rdelPreg; - } - - /** - * Get length of left delimiter - * - * @return int - */ - public function getLdelLength() - { - return $this->ldelLength; - } - - /** - * Get length of right delimiter - * - * @return int - */ - public function getRdelLength() - { - return $this->rdelLength; - } - - /** - * Get name of current open block tag - * - * @return string|boolean - */ - public function getOpenBlockTag() - { - $tagCount = $this->getTagStackCount(); - if ($tagCount) { - return $this->_tag_stack[ $tagCount - 1 ][ 0 ]; - } else { - return false; - } - } - - /** - * Check if $value contains variable elements - * - * @param mixed $value - * - * @return bool|int - */ - public function isVariable($value) - { - if (is_string($value)) { - return preg_match('/[$(]/', $value); - } - if (is_bool($value) || is_numeric($value)) { - return false; - } - if (is_array($value)) { - foreach ($value as $k => $v) { - if ($this->isVariable($k) || $this->isVariable($v)) { - return true; - } - } - return false; - } - return false; - } - - /** - * Get new prefix variable name - * - * @return string - */ - public function getNewPrefixVariable() - { - ++self::$prefixVariableNumber; - return $this->getPrefixVariable(); - } - - /** - * Get current prefix variable name - * - * @return string - */ - public function getPrefixVariable() - { - return '$_prefixVariable' . self::$prefixVariableNumber; - } - - /** - * append code to prefix buffer - * - * @param string $code - */ - public function appendPrefixCode($code) - { - $this->prefix_code[] = $code; - } - - /** - * get prefix code string - * - * @return string - */ - public function getPrefixCode() - { - $code = ''; - $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack)); - $this->prefixCodeStack[] = array(); - foreach ($prefixArray as $c) { - $code = $this->appendCode($code, $c); - } - $this->prefix_code = array(); - return $code; - } - - /** - * Save current required plugins - * - * @param bool $init if true init required plugins - */ - public function saveRequiredPlugins($init = false) - { - $this->required_plugins_stack[] = $this->required_plugins; - if ($init) { - $this->required_plugins = array('compiled' => array(), 'nocache' => array()); - } - } - - /** - * Restore required plugins - */ - public function restoreRequiredPlugins() - { - $this->required_plugins = array_pop($this->required_plugins_stack); - } - - /** - * Compile code to call Smarty_Internal_Template::_checkPlugins() - * for required plugins - * - * @return string - */ - public function compileRequiredPlugins() - { - $code = $this->compileCheckPlugins($this->required_plugins[ 'compiled' ]); - if ($this->caching && !empty($this->required_plugins[ 'nocache' ])) { - $code .= $this->makeNocacheCode($this->compileCheckPlugins($this->required_plugins[ 'nocache' ])); - } - return $code; - } - - /** - * Compile code to call Smarty_Internal_Template::_checkPlugins - * - checks if plugin is callable require otherwise - * - * @param $requiredPlugins - * - * @return string - */ - public function compileCheckPlugins($requiredPlugins) - { - if (!empty($requiredPlugins)) { - $plugins = array(); - foreach ($requiredPlugins as $plugin) { - foreach ($plugin as $data) { - $plugins[] = $data; - } - } - return '$_smarty_tpl->_checkPlugins(' . $this->getVarExport($plugins) . ');' . "\n"; - } else { - return ''; - } - } - - /** - * method to compile a Smarty template - * - * @param mixed $_content template source - * @param bool $isTemplateSource - * - * @return bool true if compiling succeeded, false if it failed - */ - abstract protected function doCompile($_content, $isTemplateSource = false); - - public function cStyleComment($string) { - return '/*' . str_replace('*/', '* /' , $string) . '*/'; - } - - /** - * Compile Tag - * - * @param string $tag tag name - * @param array $args array with tag attributes - * @param array $parameter array with compilation parameter - * - * @throws SmartyCompilerException - * @throws SmartyException - * @return string compiled code - */ - private function compileTag2($tag, $args, $parameter) - { - $plugin_type = ''; - // $args contains the attributes parsed and compiled by the lexer/parser - // assume that tag does compile into code, but creates no HTML output - $this->has_code = true; - // log tag/attributes - if (isset($this->smarty->_cache[ 'get_used_tags' ])) { - $this->template->_cache[ 'used_tags' ][] = array( - $tag, - $args - ); - } - // check nocache option flag - foreach ($args as $arg) { - if (!is_array($arg)) { - if ($arg === "'nocache'" || $arg === 'nocache') { - $this->tag_nocache = true; - } - } else { - foreach ($arg as $k => $v) { - if (($k === "'nocache'" || $k === 'nocache') && (trim($v, "'\" ") === 'true')) { - $this->tag_nocache = true; - } - } - } - } - // compile the smarty tag (required compile classes to compile the tag are auto loaded) - if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) { - if (isset($this->parent_compiler->tpl_function[ $tag ]) - || (isset($this->template->smarty->ext->_tplFunction) - && $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false) - ) { - // template defined by {template} tag - $args[ '_attr' ][ 'name' ] = "'{$tag}'"; - $_output = $this->callTagCompiler('call', $args, $parameter); - } - } - if ($_output !== false) { - if ($_output !== true) { - // did we get compiled code - if ($this->has_code) { - // return compiled code - return $_output; - } - } - // tag did not produce compiled code - return null; - } else { - // map_named attributes - if (isset($args[ '_attr' ])) { - foreach ($args[ '_attr' ] as $key => $attribute) { - if (is_array($attribute)) { - $args = array_merge($args, $attribute); - } - } - } - // not an internal compiler tag - if (strlen($tag) < 6 || substr($tag, -5) !== 'close') { - // check if tag is a registered object - if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) { - $method = $parameter[ 'object_method' ]; - if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ]) - && (empty($this->smarty->registered_objects[ $tag ][ 1 ]) - || in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ])) - ) { - return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method); - } elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) { - return $this->callTagCompiler( - 'private_object_block_function', - $args, - $parameter, - $tag, - $method - ); - } else { - // throw exception - $this->trigger_template_error( - 'not allowed method "' . $method . '" in registered object "' . - $tag . '"', - null, - true - ); - } - } - // check if tag is registered - foreach (array( - Smarty::PLUGIN_COMPILER, - Smarty::PLUGIN_FUNCTION, - Smarty::PLUGIN_BLOCK, - ) as $plugin_type) { - if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) { - // if compiler function plugin call it now - if ($plugin_type === Smarty::PLUGIN_COMPILER) { - $new_args = array(); - foreach ($args as $key => $mixed) { - if (is_array($mixed)) { - $new_args = array_merge($new_args, $mixed); - } else { - $new_args[ $key ] = $mixed; - } - } - if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) { - $this->tag_nocache = true; - } - return call_user_func_array( - $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ], - array( - $new_args, - $this - ) - ); - } - // compile registered function or block function - if ($plugin_type === Smarty::PLUGIN_FUNCTION || $plugin_type === Smarty::PLUGIN_BLOCK) { - return $this->callTagCompiler( - 'private_registered_' . $plugin_type, - $args, - $parameter, - $tag - ); - } - } - } - // check plugins from plugins folder - foreach ($this->plugin_search_order as $plugin_type) { - if ($plugin_type === Smarty::PLUGIN_COMPILER - && $this->smarty->loadPlugin('smarty_compiler_' . $tag) - && (!isset($this->smarty->security_policy) - || $this->smarty->security_policy->isTrustedTag($tag, $this)) - ) { - $plugin = 'smarty_compiler_' . $tag; - if (is_callable($plugin)) { - // convert arguments format for old compiler plugins - $new_args = array(); - foreach ($args as $key => $mixed) { - if (is_array($mixed)) { - $new_args = array_merge($new_args, $mixed); - } else { - $new_args[ $key ] = $mixed; - } - } - return $plugin($new_args, $this->smarty); - } - if (class_exists($plugin, false)) { - $plugin_object = new $plugin; - if (method_exists($plugin_object, 'compile')) { - return $plugin_object->compile($args, $this); - } - } - throw new SmartyException("Plugin '{$tag}' not callable"); - } else { - if ($function = $this->getPlugin($tag, $plugin_type)) { - if (!isset($this->smarty->security_policy) - || $this->smarty->security_policy->isTrustedTag($tag, $this) - ) { - return $this->callTagCompiler( - 'private_' . $plugin_type . '_plugin', - $args, - $parameter, - $tag, - $function - ); - } - } - } - } - if (is_callable($this->smarty->default_plugin_handler_func)) { - $found = false; - // look for already resolved tags - foreach ($this->plugin_search_order as $plugin_type) { - if (isset($this->default_handler_plugins[ $plugin_type ][ $tag ])) { - $found = true; - break; - } - } - if (!$found) { - // call default handler - foreach ($this->plugin_search_order as $plugin_type) { - if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) { - $found = true; - break; - } - } - } - if ($found) { - // if compiler function plugin call it now - if ($plugin_type === Smarty::PLUGIN_COMPILER) { - $new_args = array(); - foreach ($args as $key => $mixed) { - if (is_array($mixed)) { - $new_args = array_merge($new_args, $mixed); - } else { - $new_args[ $key ] = $mixed; - } - } - return call_user_func_array( - $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ], - array( - $new_args, - $this - ) - ); - } else { - return $this->callTagCompiler( - 'private_registered_' . $plugin_type, - $args, - $parameter, - $tag - ); - } - } - } - } else { - // compile closing tag of block function - $base_tag = substr($tag, 0, -5); - // check if closing tag is a registered object - if (isset($this->smarty->registered_objects[ $base_tag ]) && isset($parameter[ 'object_method' ])) { - $method = $parameter[ 'object_method' ]; - if (in_array($method, $this->smarty->registered_objects[ $base_tag ][ 3 ])) { - return $this->callTagCompiler( - 'private_object_block_function', - $args, - $parameter, - $tag, - $method - ); - } else { - // throw exception - $this->trigger_template_error( - 'not allowed closing tag method "' . $method . - '" in registered object "' . $base_tag . '"', - null, - true - ); - } - } - // registered block tag ? - if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ]) - || isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ]) - ) { - return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag); - } - // registered function tag ? - if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) { - return $this->callTagCompiler('private_registered_function', $args, $parameter, $tag); - } - // block plugin? - if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) { - return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function); - } - // function plugin? - if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) { - if (!isset($this->smarty->security_policy) - || $this->smarty->security_policy->isTrustedTag($tag, $this) - ) { - return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function); - } - } - // registered compiler plugin ? - if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ])) { - // if compiler function plugin call it now - $args = array(); - if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) { - $this->tag_nocache = true; - } - return call_user_func_array( - $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ], - array( - $args, - $this - ) - ); - } - if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) { - $plugin = 'smarty_compiler_' . $tag; - if (is_callable($plugin)) { - return $plugin($args, $this->smarty); - } - if (class_exists($plugin, false)) { - $plugin_object = new $plugin; - if (method_exists($plugin_object, 'compile')) { - return $plugin_object->compile($args, $this); - } - } - throw new SmartyException("Plugin '{$tag}' not callable"); - } - } - $this->trigger_template_error("unknown tag '{$tag}'", null, true); - } - } -} diff --git a/libs/sysplugins/smarty_internal_templatelexer.php b/libs/sysplugins/smarty_internal_templatelexer.php deleted file mode 100644 index 5ca48205..00000000 --- a/libs/sysplugins/smarty_internal_templatelexer.php +++ /dev/null @@ -1,1095 +0,0 @@ -<?php -/* - * This file is part of Smarty. - * - * (c) 2015 Uwe Tews - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Smarty_Internal_Templatelexer - * This is the template file lexer. - * It is generated from the smarty_internal_templatelexer.plex file - * - * - * @author Uwe Tews <uwe.tews@googlemail.com> - */ -class Smarty_Internal_Templatelexer -{ - /** - * Source - * - * @var string - */ - public $data; - - /** - * Source length - * - * @var int - */ - public $dataLength = null; - - /** - * byte counter - * - * @var int - */ - public $counter; - - /** - * token number - * - * @var int - */ - public $token; - - /** - * token value - * - * @var string - */ - public $value; - - /** - * current line - * - * @var int - */ - public $line; - - /** - * tag start line - * - * @var - */ - public $taglineno; - - /** - * php code type - * - * @var string - */ - public $phpType = ''; - - /** - * state number - * - * @var int - */ - public $state = 1; - - /** - * Smarty object - * - * @var Smarty - */ - public $smarty = null; - - /** - * compiler object - * - * @var Smarty_Internal_TemplateCompilerBase - */ - public $compiler = null; - - /** - * trace file - * - * @var resource - */ - public $yyTraceFILE; - - /** - * trace prompt - * - * @var string - */ - public $yyTracePrompt; - - /** - * XML flag true while processing xml - * - * @var bool - */ - public $is_xml = false; - - /** - * state names - * - * @var array - */ - public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',); - - /** - * token names - * - * @var array - */ - public $smarty_token_names = array( // Text for parser error messages - 'NOT' => '(!,not)', - 'OPENP' => '(', - 'CLOSEP' => ')', - 'OPENB' => '[', - 'CLOSEB' => ']', - 'PTR' => '->', - 'APTR' => '=>', - 'EQUAL' => '=', - 'NUMBER' => 'number', - 'UNIMATH' => '+" , "-', - 'MATH' => '*" , "/" , "%', - 'INCDEC' => '++" , "--', - 'SPACE' => ' ', - 'DOLLAR' => '$', - 'SEMICOLON' => ';', - 'COLON' => ':', - 'DOUBLECOLON' => '::', - 'AT' => '@', - 'HATCH' => '#', - 'QUOTE' => '"', - 'BACKTICK' => '`', - 'VERT' => '"|" modifier', - 'DOT' => '.', - 'COMMA' => '","', - 'QMARK' => '"?"', - 'ID' => 'id, name', - 'TEXT' => 'text', - 'LDELSLASH' => '{/..} closing tag', - 'LDEL' => '{...} Smarty tag', - 'COMMENT' => 'comment', - 'AS' => 'as', - 'TO' => 'to', - 'PHP' => '"<?php", "<%", "{php}" tag', - 'LOGOP' => '"<", "==" ... logical operator', - 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition', - 'SCOND' => '"is even" ... if condition', - ); - - /** - * literal tag nesting level - * - * @var int - */ - private $literal_cnt = 0; - - /** - * preg token pattern for state TEXT - * - * @var string - */ - private $yy_global_pattern1 = null; - - /** - * preg token pattern for state TAG - * - * @var string - */ - private $yy_global_pattern2 = null; - - /** - * preg token pattern for state TAGBODY - * - * @var string - */ - private $yy_global_pattern3 = null; - - /** - * preg token pattern for state LITERAL - * - * @var string - */ - private $yy_global_pattern4 = null; - - /** - * preg token pattern for state DOUBLEQUOTEDSTRING - * - * @var null - */ - private $yy_global_pattern5 = null; - - /** - * preg token pattern for text - * - * @var null - */ - private $yy_global_text = null; - - /** - * preg token pattern for literal - * - * @var null - */ - private $yy_global_literal = null; - - /** - * constructor - * - * @param string $source template source - * @param Smarty_Internal_TemplateCompilerBase $compiler - */ - public function __construct($source, Smarty_Internal_TemplateCompilerBase $compiler) - { - $this->data = $source; - $this->dataLength = strlen($this->data); - $this->counter = 0; - if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) { - $this->counter += strlen($match[0]); - } - $this->line = 1; - $this->smarty = $compiler->template->smarty; - $this->compiler = $compiler; - $this->compiler->initDelimiterPreg(); - $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter(); - $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter(); - } - - /** - * open lexer/parser trace file - * - */ - public function PrintTrace() - { - $this->yyTraceFILE = fopen('php://output', 'w'); - $this->yyTracePrompt = '<br>'; - } - - /** - * replace placeholders with runtime preg code - * - * @param string $preg - * - * @return string - */ - public function replace($preg) - { - return $this->compiler->replaceDelimiter($preg); - } - - /** - * check if current value is an autoliteral left delimiter - * - * @return bool - */ - public function isAutoLiteral() - { - return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ? - strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false; - } - - - private $_yy_state = 1; - private $_yy_stack = array(); - - public function yylex() - { - return $this->{'yylex' . $this->_yy_state}(); - } - - public function yypushstate($state) - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state); - } - array_push($this->_yy_stack, $this->_yy_state); - $this->_yy_state = $state; - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state); - } - } - - public function yypopstate() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state); - } - $this->_yy_state = array_pop($this->_yy_stack); - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state); - } - - } - - public function yybegin($state) - { - $this->_yy_state = $state; - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state); - } - } - - - - public function yylex1() - { - if (!isset($this->yy_global_pattern1)) { - $this->yy_global_pattern1 = $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\S\s])/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - - do { - if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][1])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr($this->data, - $this->counter, 5) . '... state TEXT'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r1_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[$this->counter]); - } - break; - } while (true); - - } // end function - - - const TEXT = 1; - public function yy_r1_1() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r1_2() - { - - $to = $this->dataLength; - preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter); - if (isset($match[0][1])) { - $to = $match[0][1] + strlen($match[0][0]); - } else { - $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'"); - } - $this->value = substr($this->data,$this->counter,$to-$this->counter); - return false; - } - public function yy_r1_4() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r1_6() - { - - $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART; - $this->yypushstate(self::LITERAL); - } - public function yy_r1_8() - { - - $this->token = Smarty_Internal_Templateparser::TP_LITERALEND; - $this->yypushstate(self::LITERAL); - } - public function yy_r1_10() - { - - $this->yypushstate(self::TAG); - return true; - } - public function yy_r1_12() - { - - if (!isset($this->yy_global_text)) { - $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS'); - } - $to = $this->dataLength; - preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter); - if (isset($match[0][1])) { - $to = $match[0][1]; - } - $this->value = substr($this->data,$this->counter,$to-$this->counter); - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - - - public function yylex2() - { - if (!isset($this->yy_global_pattern2)) { - $this->yy_global_pattern2 = $this->replace("/\G((SMARTYldel)SMARTYal(if|elseif|else if|while)\\s+)|\G((SMARTYldel)SMARTYalfor\\s+)|\G((SMARTYldel)SMARTYalforeach(?![^\s]))|\G((SMARTYldel)SMARTYalsetfilter\\s+)|\G((SMARTYldel)SMARTYalmake_nocache\\s+)|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$]smarty\\.block\\.(child|parent)\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/][0-9]*[a-zA-Z_]\\w*\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal)/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - - do { - if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][1])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr($this->data, - $this->counter, 5) . '... state TAG'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r2_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[$this->counter]); - } - break; - } while (true); - - } // end function - - - const TAG = 2; - public function yy_r2_1() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDELIF; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r2_4() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDELFOR; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r2_6() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r2_8() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r2_10() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r2_12() - { - - $this->yypopstate(); - $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG; - $this->taglineno = $this->line; - } - public function yy_r2_15() - { - - $this->yypopstate(); - $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT; - $this->taglineno = $this->line; - } - public function yy_r2_18() - { - - $this->yypopstate(); - $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG; - $this->taglineno = $this->line; - } - public function yy_r2_20() - { - - if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) { - $this->yypopstate(); - $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT; - $this->taglineno = $this->line; - } else { - $this->value = $this->smarty->getLeftDelimiter(); - $this->token = Smarty_Internal_Templateparser::TP_LDEL; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - } - public function yy_r2_23() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r2_25() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDEL; - $this->yybegin(self::TAGBODY); - $this->taglineno = $this->line; - } - - - public function yylex3() - { - if (!isset($this->yy_global_pattern3)) { - $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - - do { - if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][1])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr($this->data, - $this->counter, 5) . '... state TAGBODY'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r3_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[$this->counter]); - } - break; - } while (true); - - } // end function - - - const TAGBODY = 3; - public function yy_r3_1() - { - - $this->token = Smarty_Internal_Templateparser::TP_RDEL; - $this->yypopstate(); - } - public function yy_r3_2() - { - - $this->yypushstate(self::TAG); - return true; - } - public function yy_r3_4() - { - - $this->token = Smarty_Internal_Templateparser::TP_QUOTE; - $this->yypushstate(self::DOUBLEQUOTEDSTRING); - $this->compiler->enterDoubleQuote(); - } - public function yy_r3_5() - { - - $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING; - } - public function yy_r3_6() - { - - $this->token = Smarty_Internal_Templateparser::TP_DOLLARID; - } - public function yy_r3_7() - { - - $this->token = Smarty_Internal_Templateparser::TP_DOLLAR; - } - public function yy_r3_8() - { - - $this->token = Smarty_Internal_Templateparser::TP_ISIN; - } - public function yy_r3_9() - { - - $this->token = Smarty_Internal_Templateparser::TP_AS; - } - public function yy_r3_10() - { - - $this->token = Smarty_Internal_Templateparser::TP_TO; - } - public function yy_r3_11() - { - - $this->token = Smarty_Internal_Templateparser::TP_STEP; - } - public function yy_r3_12() - { - - $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF; - } - public function yy_r3_13() - { - - $this->token = Smarty_Internal_Templateparser::TP_LOGOP; - } - public function yy_r3_15() - { - - $this->token = Smarty_Internal_Templateparser::TP_SLOGOP; - } - public function yy_r3_17() - { - - $this->token = Smarty_Internal_Templateparser::TP_TLOGOP; - } - public function yy_r3_20() - { - - $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND; - } - public function yy_r3_23() - { - - $this->token = Smarty_Internal_Templateparser::TP_NOT; - } - public function yy_r3_24() - { - - $this->token = Smarty_Internal_Templateparser::TP_TYPECAST; - } - public function yy_r3_28() - { - - $this->token = Smarty_Internal_Templateparser::TP_OPENP; - } - public function yy_r3_29() - { - - $this->token = Smarty_Internal_Templateparser::TP_CLOSEP; - } - public function yy_r3_30() - { - - $this->token = Smarty_Internal_Templateparser::TP_OPENB; - } - public function yy_r3_31() - { - - $this->token = Smarty_Internal_Templateparser::TP_CLOSEB; - } - public function yy_r3_32() - { - - $this->token = Smarty_Internal_Templateparser::TP_PTR; - } - public function yy_r3_33() - { - - $this->token = Smarty_Internal_Templateparser::TP_APTR; - } - public function yy_r3_34() - { - - $this->token = Smarty_Internal_Templateparser::TP_EQUAL; - } - public function yy_r3_35() - { - - $this->token = Smarty_Internal_Templateparser::TP_INCDEC; - } - public function yy_r3_37() - { - - $this->token = Smarty_Internal_Templateparser::TP_UNIMATH; - } - public function yy_r3_39() - { - - $this->token = Smarty_Internal_Templateparser::TP_MATH; - } - public function yy_r3_41() - { - - $this->token = Smarty_Internal_Templateparser::TP_AT; - } - public function yy_r3_42() - { - - $this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN; - } - public function yy_r3_43() - { - - $this->token = Smarty_Internal_Templateparser::TP_HATCH; - } - public function yy_r3_44() - { - - // resolve conflicts with shorttag and right_delimiter starting with '=' - if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) { - preg_match('/\s+/',$this->value,$match); - $this->value = $match[0]; - $this->token = Smarty_Internal_Templateparser::TP_SPACE; - } else { - $this->token = Smarty_Internal_Templateparser::TP_ATTR; - } - } - public function yy_r3_45() - { - - $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE; - } - public function yy_r3_48() - { - - $this->token = Smarty_Internal_Templateparser::TP_ID; - } - public function yy_r3_49() - { - - $this->token = Smarty_Internal_Templateparser::TP_INTEGER; - } - public function yy_r3_50() - { - - $this->token = Smarty_Internal_Templateparser::TP_BACKTICK; - $this->yypopstate(); - } - public function yy_r3_51() - { - - $this->token = Smarty_Internal_Templateparser::TP_VERT; - } - public function yy_r3_52() - { - - $this->token = Smarty_Internal_Templateparser::TP_DOT; - } - public function yy_r3_53() - { - - $this->token = Smarty_Internal_Templateparser::TP_COMMA; - } - public function yy_r3_54() - { - - $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON; - } - public function yy_r3_55() - { - - $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON; - } - public function yy_r3_56() - { - - $this->token = Smarty_Internal_Templateparser::TP_COLON; - } - public function yy_r3_57() - { - - $this->token = Smarty_Internal_Templateparser::TP_QMARK; - } - public function yy_r3_58() - { - - $this->token = Smarty_Internal_Templateparser::TP_HEX; - } - public function yy_r3_59() - { - - $this->token = Smarty_Internal_Templateparser::TP_SPACE; - } - public function yy_r3_60() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - - - - public function yylex4() - { - if (!isset($this->yy_global_pattern4)) { - $this->yy_global_pattern4 = $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - - do { - if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][1])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr($this->data, - $this->counter, 5) . '... state LITERAL'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r4_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[$this->counter]); - } - break; - } while (true); - - } // end function - - - const LITERAL = 4; - public function yy_r4_1() - { - - $this->literal_cnt++; - $this->token = Smarty_Internal_Templateparser::TP_LITERAL; - } - public function yy_r4_3() - { - - if ($this->literal_cnt) { - $this->literal_cnt--; - $this->token = Smarty_Internal_Templateparser::TP_LITERAL; - } else { - $this->token = Smarty_Internal_Templateparser::TP_LITERALEND; - $this->yypopstate(); - } - } - public function yy_r4_5() - { - - if (!isset($this->yy_global_literal)) { - $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS'); - } - $to = $this->dataLength; - preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter); - if (isset($match[0][1])) { - $to = $match[0][1]; - } else { - $this->compiler->trigger_template_error ("missing or misspelled literal closing tag"); - } - $this->value = substr($this->data,$this->counter,$to-$this->counter); - $this->token = Smarty_Internal_Templateparser::TP_LITERAL; - } - - - public function yylex5() - { - if (!isset($this->yy_global_pattern5)) { - $this->yy_global_pattern5 = $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS"); - } - if (!isset($this->dataLength)) { - $this->dataLength = strlen($this->data); - } - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - - do { - if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) { - if (!isset($yymatches[ 0 ][1])) { - $yymatches = preg_grep("/(.|\s)+/", $yymatches); - } else { - $yymatches = array_filter($yymatches); - } - if (empty($yymatches)) { - throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr($this->data, - $this->counter, 5) . '... state DOUBLEQUOTEDSTRING'); - } - next($yymatches); // skip global match - $this->token = key($yymatches); // token number - $this->value = current($yymatches); // token value - $r = $this->{'yy_r5_' . $this->token}(); - if ($r === null) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - // accept this token - return true; - } elseif ($r === true) { - // we have changed state - // process this token in the new state - return $this->yylex(); - } elseif ($r === false) { - $this->counter += strlen($this->value); - $this->line += substr_count($this->value, "\n"); - if ($this->counter >= $this->dataLength) { - return false; // end of input - } - // skip this token - continue; - } } else { - throw new Exception('Unexpected input at line' . $this->line . - ': ' . $this->data[$this->counter]); - } - break; - } while (true); - - } // end function - - - const DOUBLEQUOTEDSTRING = 5; - public function yy_r5_1() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r5_3() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r5_5() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r5_7() - { - - $this->yypushstate(self::TAG); - return true; - } - public function yy_r5_9() - { - - $this->yypushstate(self::TAG); - return true; - } - public function yy_r5_11() - { - - $this->token = Smarty_Internal_Templateparser::TP_LDEL; - $this->taglineno = $this->line; - $this->yypushstate(self::TAGBODY); - } - public function yy_r5_13() - { - - $this->token = Smarty_Internal_Templateparser::TP_QUOTE; - $this->yypopstate(); - } - public function yy_r5_14() - { - - $this->token = Smarty_Internal_Templateparser::TP_BACKTICK; - $this->value = substr($this->value,0,-1); - $this->yypushstate(self::TAGBODY); - $this->taglineno = $this->line; - } - public function yy_r5_15() - { - - $this->token = Smarty_Internal_Templateparser::TP_DOLLARID; - } - public function yy_r5_16() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r5_17() - { - - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - public function yy_r5_22() - { - - $to = $this->dataLength; - $this->value = substr($this->data,$this->counter,$to-$this->counter); - $this->token = Smarty_Internal_Templateparser::TP_TEXT; - } - - } - -
\ No newline at end of file diff --git a/libs/sysplugins/smarty_internal_templateparser.php b/libs/sysplugins/smarty_internal_templateparser.php deleted file mode 100644 index a2dd0d6f..00000000 --- a/libs/sysplugins/smarty_internal_templateparser.php +++ /dev/null @@ -1,2926 +0,0 @@ -<?php - -class TP_yyStackEntry -{ - public $stateno; /* The state-number */ - public $major; /* The major token value. This is the code - ** number for the token at this stack level */ - public $minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; - - -// line 11 "../smarty/lexer/smarty_internal_templateparser.y" - -/** -* Smarty Template Parser Class -* -* This is the template parser. -* It is generated from the smarty_internal_templateparser.y file -* -* @author Uwe Tews <uwe.tews@googlemail.com> -*/ -class Smarty_Internal_Templateparser -{ -// line 23 "../smarty/lexer/smarty_internal_templateparser.y" - - const ERR1 = 'Security error: Call to private object member not allowed'; - const ERR2 = 'Security error: Call to dynamic object member not allowed'; - - /** - * result status - * - * @var bool - */ - public $successful = true; - - /** - * return value - * - * @var mixed - */ - public $retvalue = 0; - - /** - * @var - */ - public $yymajor; - - /** - * last index of array variable - * - * @var mixed - */ - public $last_index; - - /** - * last variable name - * - * @var string - */ - public $last_variable; - - /** - * root parse tree buffer - * - * @var Smarty_Internal_ParseTree_Template - */ - public $root_buffer; - - /** - * current parse tree object - * - * @var Smarty_Internal_ParseTree - */ - public $current_buffer; - - /** - * lexer object - * - * @var Smarty_Internal_Templatelexer - */ - public $lex; - - /** - * internal error flag - * - * @var bool - */ - private $internalError = false; - - /** - * {strip} status - * - * @var bool - */ - public $strip = false; - /** - * compiler object - * - * @var Smarty_Internal_TemplateCompilerBase - */ - public $compiler = null; - - /** - * smarty object - * - * @var Smarty - */ - public $smarty = null; - - /** - * template object - * - * @var Smarty_Internal_Template - */ - public $template = null; - - /** - * block nesting level - * - * @var int - */ - public $block_nesting_level = 0; - - /** - * security object - * - * @var Smarty_Security - */ - public $security = null; - - /** - * template prefix array - * - * @var \Smarty_Internal_ParseTree[] - */ - public $template_prefix = array(); - - /** - * template prefix array - * - * @var \Smarty_Internal_ParseTree[] - */ - public $template_postfix = array(); - - /** - * constructor - * - * @param Smarty_Internal_Templatelexer $lex - * @param Smarty_Internal_TemplateCompilerBase $compiler - */ - public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler) - { - $this->lex = $lex; - $this->compiler = $compiler; - $this->template = $this->compiler->template; - $this->smarty = $this->template->smarty; - $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false; - $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template(); - } - - /** - * insert PHP code in current buffer - * - * @param string $code - */ - public function insertPhpCode($code) - { - $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code)); - } - - /** - * error rundown - * - */ - public function errorRunDown() - { - while ($this->yystack !== array()) { - $this->yy_pop_parser_stack(); - } - if (is_resource($this->yyTraceFILE)) { - fclose($this->yyTraceFILE); - } - } - - /** - * merge PHP code with prefix code and return parse tree tag object - * - * @param string $code - * - * @return Smarty_Internal_ParseTree_Tag - */ - public function mergePrefixCode($code) - { - $tmp = ''; - foreach ($this->compiler->prefix_code as $preCode) { - $tmp .= $preCode; - } - $this->compiler->prefix_code = array(); - $tmp .= $code; - return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true)); - } - - - const TP_VERT = 1; - const TP_COLON = 2; - const TP_TEXT = 3; - const TP_STRIPON = 4; - const TP_STRIPOFF = 5; - const TP_LITERALSTART = 6; - const TP_LITERALEND = 7; - const TP_LITERAL = 8; - const TP_SIMPELOUTPUT = 9; - const TP_SIMPLETAG = 10; - const TP_SMARTYBLOCKCHILDPARENT = 11; - const TP_LDEL = 12; - const TP_RDEL = 13; - const TP_DOLLARID = 14; - const TP_EQUAL = 15; - const TP_ID = 16; - const TP_PTR = 17; - const TP_LDELMAKENOCACHE = 18; - const TP_LDELIF = 19; - const TP_LDELFOR = 20; - const TP_SEMICOLON = 21; - const TP_INCDEC = 22; - const TP_TO = 23; - const TP_STEP = 24; - const TP_LDELFOREACH = 25; - const TP_SPACE = 26; - const TP_AS = 27; - const TP_APTR = 28; - const TP_LDELSETFILTER = 29; - const TP_CLOSETAG = 30; - const TP_LDELSLASH = 31; - const TP_ATTR = 32; - const TP_INTEGER = 33; - const TP_COMMA = 34; - const TP_OPENP = 35; - const TP_CLOSEP = 36; - const TP_MATH = 37; - const TP_UNIMATH = 38; - const TP_ISIN = 39; - const TP_QMARK = 40; - const TP_NOT = 41; - const TP_TYPECAST = 42; - const TP_HEX = 43; - const TP_DOT = 44; - const TP_INSTANCEOF = 45; - const TP_SINGLEQUOTESTRING = 46; - const TP_DOUBLECOLON = 47; - const TP_NAMESPACE = 48; - const TP_AT = 49; - const TP_HATCH = 50; - const TP_OPENB = 51; - const TP_CLOSEB = 52; - const TP_DOLLAR = 53; - const TP_LOGOP = 54; - const TP_SLOGOP = 55; - const TP_TLOGOP = 56; - const TP_SINGLECOND = 57; - const TP_ARRAYOPEN = 58; - const TP_QUOTE = 59; - const TP_BACKTICK = 60; - const YY_NO_ACTION = 514; - const YY_ACCEPT_ACTION = 513; - const YY_ERROR_ACTION = 512; - - const YY_SZ_ACTTAB = 1997; -public static $yy_action = array( - 249, 250, 239, 1, 27, 127, 220, 184, 160, 213, - 11, 54, 278, 10, 173, 34, 108, 387, 282, 279, - 223, 321, 221, 8, 194, 387, 18, 387, 85, 41, - 387, 285, 42, 44, 264, 222, 387, 209, 387, 198, - 387, 52, 5, 307, 288, 288, 164, 283, 224, 4, - 50, 249, 250, 239, 1, 232, 131, 381, 189, 205, - 213, 11, 54, 39, 35, 243, 31, 108, 94, 17, - 381, 223, 321, 221, 439, 226, 381, 33, 49, 426, - 41, 439, 89, 42, 44, 264, 222, 9, 235, 163, - 198, 426, 52, 5, 131, 288, 212, 284, 102, 106, - 4, 50, 249, 250, 239, 1, 232, 129, 426, 189, - 347, 213, 11, 54, 175, 324, 347, 208, 108, 22, - 426, 301, 223, 321, 221, 302, 226, 135, 18, 49, - 52, 41, 26, 288, 42, 44, 264, 222, 16, 235, - 294, 198, 204, 52, 5, 170, 288, 32, 90, 267, - 268, 4, 50, 249, 250, 239, 1, 20, 129, 185, - 179, 255, 213, 11, 54, 455, 288, 192, 455, 108, - 175, 167, 455, 223, 321, 221, 439, 226, 256, 18, - 55, 292, 41, 439, 132, 42, 44, 264, 222, 427, - 235, 12, 198, 165, 52, 5, 232, 288, 288, 347, - 153, 427, 4, 50, 249, 250, 239, 1, 232, 129, - 286, 181, 347, 213, 11, 54, 24, 13, 347, 49, - 108, 232, 320, 426, 223, 321, 221, 195, 201, 173, - 18, 49, 139, 41, 296, 426, 42, 44, 264, 222, - 7, 235, 286, 198, 49, 52, 5, 147, 288, 117, - 150, 317, 263, 4, 50, 249, 250, 239, 1, 95, - 130, 173, 189, 155, 213, 11, 54, 22, 244, 271, - 192, 108, 323, 286, 101, 223, 321, 221, 294, 226, - 204, 18, 348, 257, 41, 166, 283, 42, 44, 264, - 222, 28, 235, 300, 198, 348, 52, 5, 247, 288, - 117, 348, 94, 206, 4, 50, 249, 250, 239, 1, - 95, 129, 22, 189, 277, 213, 11, 54, 91, 274, - 224, 426, 108, 323, 216, 156, 223, 321, 221, 132, - 180, 262, 18, 426, 100, 41, 12, 288, 42, 44, - 264, 222, 15, 235, 216, 198, 254, 52, 5, 233, - 288, 210, 190, 192, 100, 4, 50, 249, 250, 239, - 1, 3, 131, 94, 189, 192, 213, 11, 54, 269, - 10, 204, 290, 108, 325, 216, 224, 223, 321, 221, - 23, 226, 211, 33, 315, 100, 45, 513, 92, 42, - 44, 264, 222, 102, 235, 178, 198, 268, 52, 5, - 275, 288, 161, 192, 37, 25, 4, 50, 249, 250, - 239, 1, 286, 129, 172, 187, 305, 213, 11, 54, - 164, 283, 310, 141, 108, 281, 281, 236, 223, 321, - 221, 169, 226, 230, 18, 122, 171, 41, 225, 175, - 42, 44, 264, 222, 144, 235, 303, 198, 134, 52, - 5, 265, 288, 151, 286, 192, 175, 4, 50, 249, - 250, 239, 1, 286, 128, 94, 189, 143, 213, 11, - 54, 219, 152, 207, 193, 108, 149, 281, 31, 223, - 321, 221, 100, 226, 21, 6, 286, 288, 41, 158, - 16, 42, 44, 264, 222, 102, 235, 238, 198, 286, - 52, 5, 157, 288, 281, 122, 168, 283, 4, 50, - 249, 250, 239, 1, 30, 93, 308, 51, 215, 213, - 11, 54, 53, 251, 140, 248, 108, 245, 304, 116, - 223, 321, 221, 111, 226, 176, 18, 270, 266, 41, - 224, 322, 42, 44, 264, 222, 7, 235, 259, 198, - 147, 52, 5, 257, 288, 43, 40, 38, 83, 4, - 50, 241, 214, 204, 319, 280, 88, 107, 138, 182, - 97, 64, 311, 312, 313, 316, 95, 281, 298, 258, - 142, 234, 94, 105, 272, 197, 231, 482, 237, 323, - 37, 133, 324, 241, 214, 204, 319, 314, 88, 107, - 296, 183, 97, 82, 84, 43, 40, 38, 95, 296, - 296, 258, 296, 296, 296, 159, 272, 197, 231, 296, - 237, 323, 311, 312, 313, 316, 241, 296, 204, 296, - 296, 103, 296, 296, 199, 104, 77, 296, 296, 110, - 296, 95, 296, 296, 258, 278, 296, 296, 34, 272, - 197, 231, 279, 237, 323, 43, 40, 38, 296, 296, - 296, 241, 26, 204, 196, 276, 103, 296, 16, 199, - 104, 77, 311, 312, 313, 316, 95, 192, 296, 258, - 146, 296, 296, 296, 272, 197, 231, 296, 237, 323, - 286, 393, 39, 35, 243, 296, 296, 296, 296, 191, - 276, 296, 26, 318, 252, 253, 126, 296, 16, 249, - 250, 239, 1, 296, 296, 131, 296, 261, 213, 11, - 54, 296, 296, 296, 426, 108, 393, 393, 393, 223, - 321, 221, 241, 296, 204, 299, 426, 103, 107, 296, - 183, 97, 82, 393, 393, 393, 393, 95, 296, 260, - 258, 52, 296, 296, 288, 272, 197, 231, 296, 237, - 323, 293, 296, 296, 296, 296, 296, 249, 250, 239, - 2, 296, 295, 296, 296, 296, 213, 11, 54, 296, - 296, 177, 296, 108, 136, 296, 296, 223, 321, 221, - 296, 296, 296, 293, 43, 40, 38, 296, 296, 249, - 250, 239, 2, 296, 295, 43, 40, 38, 213, 11, - 54, 311, 312, 313, 316, 108, 296, 291, 14, 223, - 321, 221, 311, 312, 313, 316, 296, 296, 241, 296, - 204, 296, 192, 103, 296, 296, 199, 104, 77, 296, - 296, 296, 296, 95, 383, 296, 258, 296, 296, 297, - 14, 272, 197, 231, 296, 237, 323, 383, 296, 296, - 241, 296, 204, 383, 296, 99, 296, 287, 199, 120, - 48, 241, 112, 204, 296, 95, 103, 296, 258, 199, - 120, 74, 296, 272, 197, 231, 95, 237, 323, 258, - 455, 296, 296, 455, 272, 197, 231, 455, 237, 323, - 241, 296, 204, 296, 296, 103, 200, 296, 199, 120, - 74, 296, 296, 296, 296, 95, 296, 296, 258, 278, - 296, 296, 34, 272, 197, 231, 279, 237, 323, 241, - 455, 204, 296, 296, 99, 202, 296, 199, 120, 56, - 241, 211, 204, 296, 95, 103, 296, 258, 199, 120, - 74, 296, 272, 197, 231, 95, 237, 323, 258, 227, - 296, 296, 296, 272, 197, 231, 296, 237, 323, 241, - 296, 204, 148, 296, 103, 203, 86, 199, 120, 73, - 296, 296, 286, 296, 95, 296, 296, 258, 278, 296, - 296, 34, 272, 197, 231, 279, 237, 323, 241, 296, - 204, 175, 296, 103, 296, 296, 199, 120, 75, 241, - 296, 204, 296, 95, 103, 296, 258, 199, 120, 63, - 296, 272, 197, 231, 95, 237, 323, 258, 229, 192, - 296, 296, 272, 197, 231, 296, 237, 323, 241, 296, - 204, 380, 296, 103, 296, 296, 199, 120, 58, 296, - 296, 296, 296, 95, 380, 296, 258, 296, 296, 296, - 380, 272, 197, 231, 296, 237, 323, 241, 296, 204, - 296, 296, 103, 296, 296, 199, 120, 71, 241, 296, - 204, 296, 95, 103, 296, 258, 199, 120, 79, 296, - 272, 197, 231, 95, 237, 323, 258, 296, 296, 296, - 154, 272, 197, 231, 87, 237, 323, 241, 296, 204, - 286, 296, 103, 296, 296, 199, 120, 70, 296, 296, - 296, 296, 95, 296, 296, 258, 296, 296, 296, 175, - 272, 197, 231, 296, 237, 323, 241, 296, 204, 296, - 296, 103, 296, 296, 199, 120, 56, 241, 296, 204, - 296, 95, 103, 296, 258, 199, 120, 46, 296, 272, - 197, 231, 95, 237, 323, 258, 296, 296, 296, 296, - 272, 197, 231, 296, 237, 323, 241, 296, 204, 296, - 296, 103, 296, 296, 199, 120, 78, 296, 296, 296, - 296, 95, 296, 296, 258, 296, 296, 296, 296, 272, - 197, 231, 296, 237, 323, 241, 296, 204, 296, 296, - 103, 296, 296, 199, 120, 66, 241, 296, 204, 296, - 95, 103, 296, 258, 199, 120, 59, 296, 272, 197, - 231, 95, 237, 323, 258, 296, 296, 296, 296, 272, - 197, 231, 296, 237, 323, 241, 296, 204, 296, 296, - 103, 296, 296, 186, 109, 57, 296, 296, 296, 296, - 95, 296, 296, 258, 296, 296, 296, 296, 272, 197, - 231, 296, 237, 323, 241, 296, 204, 296, 296, 103, - 296, 296, 188, 120, 67, 241, 296, 204, 296, 95, - 103, 296, 258, 199, 96, 62, 296, 272, 197, 231, - 95, 237, 323, 258, 296, 296, 296, 296, 272, 197, - 231, 296, 237, 323, 241, 296, 204, 296, 296, 103, - 296, 296, 199, 120, 80, 296, 296, 296, 296, 95, - 296, 296, 258, 296, 296, 296, 296, 272, 197, 231, - 296, 237, 323, 241, 296, 204, 296, 296, 103, 296, - 296, 199, 120, 76, 241, 296, 204, 296, 95, 103, - 296, 258, 199, 120, 81, 296, 272, 197, 231, 95, - 237, 323, 258, 296, 296, 296, 296, 272, 197, 231, - 296, 237, 323, 241, 296, 204, 296, 296, 103, 296, - 296, 199, 120, 65, 296, 296, 296, 296, 95, 296, - 296, 258, 296, 296, 296, 296, 272, 197, 231, 296, - 237, 323, 241, 296, 204, 296, 296, 103, 296, 296, - 199, 96, 68, 241, 296, 204, 296, 95, 103, 296, - 258, 199, 120, 61, 296, 272, 197, 231, 95, 237, - 323, 258, 296, 296, 296, 296, 272, 197, 231, 296, - 237, 323, 241, 296, 204, 296, 296, 103, 296, 296, - 199, 98, 69, 296, 296, 296, 296, 95, 296, 296, - 258, 296, 296, 296, 296, 272, 197, 231, 296, 237, - 323, 241, 296, 204, 296, 296, 103, 296, 296, 199, - 120, 72, 241, 296, 204, 296, 95, 103, 296, 258, - 199, 120, 47, 296, 272, 197, 231, 95, 237, 323, - 258, 296, 296, 296, 296, 272, 197, 231, 296, 237, - 323, 241, 192, 204, 296, 296, 103, 296, 296, 199, - 120, 60, 296, 296, 351, 296, 95, 296, 217, 258, - 296, 296, 296, 296, 272, 197, 231, 26, 237, 323, - 241, 296, 204, 16, 296, 103, 426, 296, 199, 125, - 296, 241, 296, 204, 296, 95, 103, 296, 426, 199, - 118, 296, 242, 272, 197, 231, 95, 237, 323, 296, - 296, 296, 296, 246, 272, 197, 231, 296, 237, 323, - 241, 296, 204, 278, 296, 103, 34, 296, 199, 121, - 279, 296, 296, 296, 296, 95, 296, 296, 296, 296, - 26, 296, 162, 272, 197, 231, 16, 237, 323, 241, - 296, 204, 296, 296, 103, 296, 296, 199, 123, 296, - 241, 296, 204, 296, 95, 103, 296, 296, 199, 114, - 296, 296, 272, 197, 231, 95, 237, 323, 296, 296, - 296, 296, 296, 272, 197, 231, 296, 237, 323, 241, - 296, 204, 296, 145, 103, 296, 296, 199, 124, 296, - 296, 296, 296, 286, 95, 39, 35, 243, 296, 296, - 296, 296, 272, 197, 231, 296, 237, 323, 241, 296, - 204, 296, 296, 103, 296, 296, 199, 115, 296, 241, - 296, 204, 296, 95, 103, 296, 296, 199, 113, 296, - 296, 272, 197, 231, 95, 237, 323, 296, 296, 296, - 296, 296, 272, 197, 231, 228, 237, 323, 241, 296, - 204, 296, 455, 103, 296, 455, 199, 119, 3, 455, - 439, 296, 296, 95, 296, 296, 296, 296, 296, 296, - 296, 272, 197, 231, 228, 237, 323, 296, 296, 296, - 296, 455, 296, 296, 455, 296, 296, 439, 455, 439, - 439, 228, 455, 296, 439, 296, 296, 137, 455, 296, - 296, 455, 296, 296, 32, 455, 439, 286, 296, 39, - 35, 243, 29, 296, 26, 296, 439, 296, 296, 439, - 16, 455, 296, 439, 306, 43, 40, 38, 296, 296, - 296, 296, 296, 439, 296, 296, 439, 296, 455, 296, - 439, 26, 311, 312, 313, 316, 296, 16, 228, 296, - 296, 296, 43, 40, 38, 455, 296, 296, 455, 296, - 296, 296, 455, 439, 296, 296, 19, 296, 296, 311, - 312, 313, 316, 455, 296, 296, 455, 296, 296, 296, - 455, 439, 296, 296, 296, 43, 40, 38, 296, 296, - 439, 296, 296, 439, 174, 455, 296, 439, 296, 240, - 309, 296, 311, 312, 313, 316, 296, 289, 439, 296, - 36, 439, 296, 455, 296, 439, 296, 296, 43, 40, - 38, 296, 296, 43, 40, 38, 296, 296, 296, 296, - 296, 43, 40, 38, 296, 311, 312, 313, 316, 296, - 311, 312, 313, 316, 296, 43, 40, 38, 311, 312, - 313, 316, 273, 43, 40, 38, 296, 296, 296, 296, - 296, 296, 311, 312, 313, 316, 296, 296, 296, 296, - 311, 312, 313, 316, 455, 296, 296, 455, 43, 40, - 38, 455, 439, 218, 43, 40, 38, 296, 296, 296, - 296, 296, 296, 296, 296, 311, 312, 313, 316, 296, - 296, 311, 312, 313, 316, 296, 296, 296, 296, 439, - 296, 296, 439, 296, 455, 296, 439, - ); - public static $yy_lookahead = array( - 9, 10, 11, 12, 12, 14, 14, 16, 16, 18, - 19, 20, 9, 34, 102, 12, 25, 13, 70, 16, - 29, 30, 31, 35, 33, 21, 35, 23, 95, 38, - 26, 52, 41, 42, 43, 44, 32, 46, 34, 48, - 36, 50, 51, 52, 53, 53, 98, 99, 44, 58, - 59, 9, 10, 11, 12, 22, 14, 13, 16, 15, - 18, 19, 20, 85, 86, 87, 15, 25, 17, 21, - 26, 29, 30, 31, 44, 33, 32, 35, 45, 35, - 38, 51, 34, 41, 42, 43, 44, 35, 46, 77, - 48, 47, 50, 51, 14, 53, 16, 13, 47, 47, - 58, 59, 9, 10, 11, 12, 22, 14, 35, 16, - 26, 18, 19, 20, 102, 103, 32, 44, 25, 34, - 47, 36, 29, 30, 31, 52, 33, 14, 35, 45, - 50, 38, 26, 53, 41, 42, 43, 44, 32, 46, - 66, 48, 68, 50, 51, 77, 53, 15, 35, 7, - 8, 58, 59, 9, 10, 11, 12, 12, 14, 14, - 16, 16, 18, 19, 20, 9, 53, 1, 12, 25, - 102, 82, 16, 29, 30, 31, 44, 33, 33, 35, - 106, 107, 38, 51, 44, 41, 42, 43, 44, 35, - 46, 51, 48, 82, 50, 51, 22, 53, 53, 13, - 73, 47, 58, 59, 9, 10, 11, 12, 22, 14, - 83, 16, 26, 18, 19, 20, 28, 12, 32, 45, - 25, 22, 70, 35, 29, 30, 31, 65, 33, 102, - 35, 45, 73, 38, 60, 47, 41, 42, 43, 44, - 35, 46, 83, 48, 45, 50, 51, 95, 53, 71, - 95, 52, 74, 58, 59, 9, 10, 11, 12, 81, - 14, 102, 16, 73, 18, 19, 20, 34, 90, 36, - 1, 25, 94, 83, 81, 29, 30, 31, 66, 33, - 68, 35, 13, 96, 38, 98, 99, 41, 42, 43, - 44, 15, 46, 100, 48, 26, 50, 51, 14, 53, - 71, 32, 17, 74, 58, 59, 9, 10, 11, 12, - 81, 14, 34, 16, 36, 18, 19, 20, 82, 107, - 44, 35, 25, 94, 71, 95, 29, 30, 31, 44, - 33, 78, 35, 47, 81, 38, 51, 53, 41, 42, - 43, 44, 15, 46, 71, 48, 16, 50, 51, 22, - 53, 78, 79, 1, 81, 58, 59, 9, 10, 11, - 12, 15, 14, 17, 16, 1, 18, 19, 20, 66, - 34, 68, 36, 25, 16, 71, 44, 29, 30, 31, - 28, 33, 78, 35, 52, 81, 38, 62, 63, 41, - 42, 43, 44, 47, 46, 6, 48, 8, 50, 51, - 16, 53, 73, 1, 2, 40, 58, 59, 9, 10, - 11, 12, 83, 14, 77, 16, 52, 18, 19, 20, - 98, 99, 52, 95, 25, 97, 97, 92, 29, 30, - 31, 77, 33, 49, 35, 100, 14, 38, 16, 102, - 41, 42, 43, 44, 73, 46, 14, 48, 14, 50, - 51, 36, 53, 73, 83, 1, 102, 58, 59, 9, - 10, 11, 12, 83, 14, 17, 16, 50, 18, 19, - 20, 17, 71, 64, 65, 25, 73, 97, 15, 29, - 30, 31, 81, 33, 26, 35, 83, 53, 38, 73, - 32, 41, 42, 43, 44, 47, 46, 92, 48, 83, - 50, 51, 95, 53, 97, 100, 98, 99, 58, 59, - 9, 10, 11, 12, 23, 14, 52, 16, 16, 18, - 19, 20, 16, 7, 50, 16, 25, 13, 13, 16, - 29, 30, 31, 16, 33, 16, 35, 33, 33, 38, - 44, 16, 41, 42, 43, 44, 35, 46, 16, 48, - 95, 50, 51, 96, 53, 37, 38, 39, 81, 58, - 59, 66, 67, 68, 69, 83, 71, 72, 95, 74, - 75, 76, 54, 55, 56, 57, 81, 97, 60, 84, - 95, 13, 17, 80, 89, 90, 91, 1, 93, 94, - 2, 81, 103, 66, 67, 68, 69, 99, 71, 72, - 108, 74, 75, 76, 81, 37, 38, 39, 81, 108, - 108, 84, 108, 108, 108, 95, 89, 90, 91, 108, - 93, 94, 54, 55, 56, 57, 66, 108, 68, 108, - 108, 71, 108, 108, 74, 75, 76, 108, 108, 21, - 108, 81, 108, 108, 84, 9, 108, 108, 12, 89, - 90, 91, 16, 93, 94, 37, 38, 39, 108, 108, - 108, 66, 26, 68, 104, 105, 71, 108, 32, 74, - 75, 76, 54, 55, 56, 57, 81, 1, 108, 84, - 73, 108, 108, 108, 89, 90, 91, 108, 93, 94, - 83, 2, 85, 86, 87, 108, 108, 108, 108, 104, - 105, 108, 26, 3, 4, 5, 6, 108, 32, 9, - 10, 11, 12, 108, 108, 14, 108, 16, 18, 19, - 20, 108, 108, 108, 35, 25, 37, 38, 39, 29, - 30, 31, 66, 108, 68, 69, 47, 71, 72, 108, - 74, 75, 76, 54, 55, 56, 57, 81, 108, 48, - 84, 50, 108, 108, 53, 89, 90, 91, 108, 93, - 94, 3, 108, 108, 108, 108, 108, 9, 10, 11, - 12, 108, 14, 108, 108, 108, 18, 19, 20, 108, - 108, 13, 108, 25, 27, 108, 108, 29, 30, 31, - 108, 108, 108, 3, 37, 38, 39, 108, 108, 9, - 10, 11, 12, 108, 14, 37, 38, 39, 18, 19, - 20, 54, 55, 56, 57, 25, 108, 59, 60, 29, - 30, 31, 54, 55, 56, 57, 108, 108, 66, 108, - 68, 108, 1, 71, 108, 108, 74, 75, 76, 108, - 108, 108, 108, 81, 13, 108, 84, 108, 108, 59, - 60, 89, 90, 91, 108, 93, 94, 26, 108, 108, - 66, 108, 68, 32, 108, 71, 108, 105, 74, 75, - 76, 66, 78, 68, 108, 81, 71, 108, 84, 74, - 75, 76, 108, 89, 90, 91, 81, 93, 94, 84, - 9, 108, 108, 12, 89, 90, 91, 16, 93, 94, - 66, 108, 68, 108, 108, 71, 101, 108, 74, 75, - 76, 108, 108, 108, 108, 81, 108, 108, 84, 9, - 108, 108, 12, 89, 90, 91, 16, 93, 94, 66, - 49, 68, 108, 108, 71, 101, 108, 74, 75, 76, - 66, 78, 68, 108, 81, 71, 108, 84, 74, 75, - 76, 108, 89, 90, 91, 81, 93, 94, 84, 49, - 108, 108, 108, 89, 90, 91, 108, 93, 94, 66, - 108, 68, 73, 108, 71, 101, 77, 74, 75, 76, - 108, 108, 83, 108, 81, 108, 108, 84, 9, 108, - 108, 12, 89, 90, 91, 16, 93, 94, 66, 108, - 68, 102, 108, 71, 108, 108, 74, 75, 76, 66, - 108, 68, 108, 81, 71, 108, 84, 74, 75, 76, - 108, 89, 90, 91, 81, 93, 94, 84, 49, 1, - 108, 108, 89, 90, 91, 108, 93, 94, 66, 108, - 68, 13, 108, 71, 108, 108, 74, 75, 76, 108, - 108, 108, 108, 81, 26, 108, 84, 108, 108, 108, - 32, 89, 90, 91, 108, 93, 94, 66, 108, 68, - 108, 108, 71, 108, 108, 74, 75, 76, 66, 108, - 68, 108, 81, 71, 108, 84, 74, 75, 76, 108, - 89, 90, 91, 81, 93, 94, 84, 108, 108, 108, - 73, 89, 90, 91, 77, 93, 94, 66, 108, 68, - 83, 108, 71, 108, 108, 74, 75, 76, 108, 108, - 108, 108, 81, 108, 108, 84, 108, 108, 108, 102, - 89, 90, 91, 108, 93, 94, 66, 108, 68, 108, - 108, 71, 108, 108, 74, 75, 76, 66, 108, 68, - 108, 81, 71, 108, 84, 74, 75, 76, 108, 89, - 90, 91, 81, 93, 94, 84, 108, 108, 108, 108, - 89, 90, 91, 108, 93, 94, 66, 108, 68, 108, - 108, 71, 108, 108, 74, 75, 76, 108, 108, 108, - 108, 81, 108, 108, 84, 108, 108, 108, 108, 89, - 90, 91, 108, 93, 94, 66, 108, 68, 108, 108, - 71, 108, 108, 74, 75, 76, 66, 108, 68, 108, - 81, 71, 108, 84, 74, 75, 76, 108, 89, 90, - 91, 81, 93, 94, 84, 108, 108, 108, 108, 89, - 90, 91, 108, 93, 94, 66, 108, 68, 108, 108, - 71, 108, 108, 74, 75, 76, 108, 108, 108, 108, - 81, 108, 108, 84, 108, 108, 108, 108, 89, 90, - 91, 108, 93, 94, 66, 108, 68, 108, 108, 71, - 108, 108, 74, 75, 76, 66, 108, 68, 108, 81, - 71, 108, 84, 74, 75, 76, 108, 89, 90, 91, - 81, 93, 94, 84, 108, 108, 108, 108, 89, 90, - 91, 108, 93, 94, 66, 108, 68, 108, 108, 71, - 108, 108, 74, 75, 76, 108, 108, 108, 108, 81, - 108, 108, 84, 108, 108, 108, 108, 89, 90, 91, - 108, 93, 94, 66, 108, 68, 108, 108, 71, 108, - 108, 74, 75, 76, 66, 108, 68, 108, 81, 71, - 108, 84, 74, 75, 76, 108, 89, 90, 91, 81, - 93, 94, 84, 108, 108, 108, 108, 89, 90, 91, - 108, 93, 94, 66, 108, 68, 108, 108, 71, 108, - 108, 74, 75, 76, 108, 108, 108, 108, 81, 108, - 108, 84, 108, 108, 108, 108, 89, 90, 91, 108, - 93, 94, 66, 108, 68, 108, 108, 71, 108, 108, - 74, 75, 76, 66, 108, 68, 108, 81, 71, 108, - 84, 74, 75, 76, 108, 89, 90, 91, 81, 93, - 94, 84, 108, 108, 108, 108, 89, 90, 91, 108, - 93, 94, 66, 108, 68, 108, 108, 71, 108, 108, - 74, 75, 76, 108, 108, 108, 108, 81, 108, 108, - 84, 108, 108, 108, 108, 89, 90, 91, 108, 93, - 94, 66, 108, 68, 108, 108, 71, 108, 108, 74, - 75, 76, 66, 108, 68, 108, 81, 71, 108, 84, - 74, 75, 76, 108, 89, 90, 91, 81, 93, 94, - 84, 108, 108, 108, 108, 89, 90, 91, 108, 93, - 94, 66, 1, 68, 108, 108, 71, 108, 108, 74, - 75, 76, 108, 108, 13, 108, 81, 108, 17, 84, - 108, 108, 108, 108, 89, 90, 91, 26, 93, 94, - 66, 108, 68, 32, 108, 71, 35, 108, 74, 75, - 108, 66, 108, 68, 108, 81, 71, 108, 47, 74, - 75, 108, 88, 89, 90, 91, 81, 93, 94, 108, - 108, 108, 108, 88, 89, 90, 91, 108, 93, 94, - 66, 108, 68, 9, 108, 71, 12, 108, 74, 75, - 16, 108, 108, 108, 108, 81, 108, 108, 108, 108, - 26, 108, 28, 89, 90, 91, 32, 93, 94, 66, - 108, 68, 108, 108, 71, 108, 108, 74, 75, 108, - 66, 108, 68, 108, 81, 71, 108, 108, 74, 75, - 108, 108, 89, 90, 91, 81, 93, 94, 108, 108, - 108, 108, 108, 89, 90, 91, 108, 93, 94, 66, - 108, 68, 108, 73, 71, 108, 108, 74, 75, 108, - 108, 108, 108, 83, 81, 85, 86, 87, 108, 108, - 108, 108, 89, 90, 91, 108, 93, 94, 66, 108, - 68, 108, 108, 71, 108, 108, 74, 75, 108, 66, - 108, 68, 108, 81, 71, 108, 108, 74, 75, 108, - 108, 89, 90, 91, 81, 93, 94, 108, 108, 108, - 108, 108, 89, 90, 91, 2, 93, 94, 66, 108, - 68, 108, 9, 71, 108, 12, 74, 75, 15, 16, - 17, 108, 108, 81, 108, 108, 108, 108, 108, 108, - 108, 89, 90, 91, 2, 93, 94, 108, 108, 108, - 108, 9, 108, 108, 12, 108, 108, 44, 16, 17, - 47, 2, 49, 108, 51, 108, 108, 73, 9, 108, - 108, 12, 108, 108, 15, 16, 17, 83, 108, 85, - 86, 87, 24, 108, 26, 108, 44, 108, 108, 47, - 32, 49, 108, 51, 52, 37, 38, 39, 108, 108, - 108, 108, 108, 44, 108, 108, 47, 108, 49, 108, - 51, 26, 54, 55, 56, 57, 108, 32, 2, 108, - 108, 108, 37, 38, 39, 9, 108, 108, 12, 108, - 108, 108, 16, 17, 108, 108, 2, 108, 108, 54, - 55, 56, 57, 9, 108, 108, 12, 108, 108, 108, - 16, 17, 108, 108, 108, 37, 38, 39, 108, 108, - 44, 108, 108, 47, 13, 49, 108, 51, 108, 13, - 52, 108, 54, 55, 56, 57, 108, 13, 44, 108, - 2, 47, 108, 49, 108, 51, 108, 108, 37, 38, - 39, 108, 108, 37, 38, 39, 108, 108, 108, 108, - 108, 37, 38, 39, 108, 54, 55, 56, 57, 108, - 54, 55, 56, 57, 108, 37, 38, 39, 54, 55, - 56, 57, 36, 37, 38, 39, 108, 108, 108, 108, - 108, 108, 54, 55, 56, 57, 108, 108, 108, 108, - 54, 55, 56, 57, 9, 108, 108, 12, 37, 38, - 39, 16, 17, 36, 37, 38, 39, 108, 108, 108, - 108, 108, 108, 108, 108, 54, 55, 56, 57, 108, - 108, 54, 55, 56, 57, 108, 108, 108, 108, 44, - 108, 108, 47, 108, 49, 108, 51, -); - const YY_SHIFT_USE_DFLT = -22; - const YY_SHIFT_MAX = 230; - public static $yy_shift_ofst = array( - -22, 501, 501, 93, 399, 399, 450, 93, 93, 93, - 399, 450, -9, 93, 93, 93, 93, 93, 93, 144, - 93, 195, 93, 93, 93, 246, 195, 93, 93, 93, - 93, 93, 297, 93, 93, 93, 93, 348, 42, 42, - 42, 42, 42, 42, 42, 42, 1768, 1795, 1795, 701, - 758, 1521, 80, 676, 113, 790, 1927, 1828, 1896, 568, - 768, 1861, 757, 1866, 1874, 1888, 618, 518, 1921, 1921, - 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, - 1921, 1921, 1921, 1584, 636, 285, 676, 676, 346, 113, - 113, 402, 700, 1723, -8, 910, 831, 269, 1028, 51, - 3, 3, 422, 448, 352, 106, 422, 106, 458, 364, - 434, 454, 106, 166, 166, 166, 166, 565, 166, 166, - 166, 586, 565, 166, 166, -22, -22, 1752, 1769, 1826, - 1844, 1945, 145, 979, 156, 132, 284, 106, 140, 106, - 30, 140, 140, 30, 106, 106, 106, 140, 106, 106, - 140, 106, 327, 106, 106, 106, 140, 140, 106, 140, - 205, 106, 284, 166, 565, 588, 565, 588, 565, 166, - 166, -12, 166, -22, -22, -22, -22, -22, -22, 689, - 4, 44, 84, 186, 73, 881, 199, 188, 174, 286, - 48, 336, 384, 389, 332, 142, -21, 52, 154, 33, - 85, 276, 278, 233, 515, 509, 474, 516, 502, 464, - 491, 415, 417, 432, 514, 370, 463, 506, 365, 513, - -12, 517, 504, 519, 505, 511, 496, 525, 532, 330, - 358, -); - const YY_REDUCE_USE_DFLT = -89; - const YY_REDUCE_MAX = 178; - public static $yy_reduce_ofst = array( - 325, 527, 495, 666, 595, 560, 863, 874, 834, 805, - 762, 794, 1179, 1455, 1208, 1012, 1386, 1139, 1070, 1110, - 1150, 1219, 1248, 1277, 1288, 1317, 1346, 1357, 1415, 1426, - 1081, 1041, 1001, 972, 943, 932, 903, 1484, 1495, 1622, - 1633, 1662, 1593, 1564, 1553, 1524, 1704, 607, 1590, 178, - 74, 1027, 229, 899, 273, 212, -22, -22, -22, -22, - -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, - -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, - -22, -22, -22, 380, 329, 187, 159, 127, -52, 253, - 304, 12, 303, 152, 193, 328, 68, 68, 68, 322, - 328, 407, 405, 322, 68, 190, 335, 416, 403, 68, - 401, 354, 371, 68, 68, 68, 337, 322, 68, 68, - 68, 68, 408, 68, 68, 68, 409, 455, 455, 455, - 455, 455, 510, 480, 455, 455, 477, 482, 457, 482, - 473, 457, 457, 485, 482, 482, 482, 457, 482, 482, - 457, 482, 503, 482, 482, 482, 457, 457, 482, 457, - 520, 482, 523, -88, 498, 489, 498, 489, 498, -88, - -88, -67, -88, 111, 155, 89, 236, 230, 162, -); - public static $yyExpectedTokens = array( - array(), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 52, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ), - array(24, 26, 32, 37, 38, 39, 54, 55, 56, 57, ), - array(26, 32, 37, 38, 39, 54, 55, 56, 57, ), - array(26, 32, 37, 38, 39, 54, 55, 56, 57, ), - array(14, 16, 48, 50, 53, ), - array(3, 9, 10, 11, 12, 14, 18, 19, 20, 25, 29, 30, 31, 59, 60, ), - array(1, 13, 17, 26, 32, 35, 47, ), - array(14, 16, 50, 53, ), - array(1, 26, 32, ), - array(14, 35, 53, ), - array(3, 9, 10, 11, 12, 14, 18, 19, 20, 25, 29, 30, 31, 59, 60, ), - array(36, 37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 52, 54, 55, 56, 57, ), - array(36, 37, 38, 39, 54, 55, 56, 57, ), - array(13, 37, 38, 39, 54, 55, 56, 57, ), - array(13, 37, 38, 39, 54, 55, 56, 57, ), - array(13, 37, 38, 39, 54, 55, 56, 57, ), - array(27, 37, 38, 39, 54, 55, 56, 57, ), - array(13, 37, 38, 39, 54, 55, 56, 57, ), - array(13, 37, 38, 39, 54, 55, 56, 57, ), - array(2, 37, 38, 39, 54, 55, 56, 57, ), - array(21, 37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, 60, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(37, 38, 39, 54, 55, 56, 57, ), - array(9, 12, 16, 26, 28, 32, ), - array(9, 12, 16, 26, 32, ), - array(17, 44, 51, ), - array(1, 26, 32, ), - array(1, 26, 32, ), - array(15, 17, 47, ), - array(14, 35, 53, ), - array(14, 35, 53, ), - array(1, 2, ), - array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 20, 25, 29, 30, 31, ), - array(2, 9, 12, 15, 16, 17, 44, 47, 49, 51, ), - array(12, 14, 16, 53, ), - array(9, 12, 16, 49, ), - array(1, 13, 26, 32, ), - array(1, 13, 26, 32, ), - array(1, 13, 26, 32, ), - array(15, 17, 47, ), - array(9, 12, 16, ), - array(9, 12, 16, ), - array(14, 16, ), - array(17, 47, ), - array(1, 28, ), - array(26, 32, ), - array(14, 16, ), - array(26, 32, ), - array(26, 32, ), - array(1, 52, ), - array(14, 53, ), - array(1, 17, ), - array(26, 32, ), - array(1, ), - array(1, ), - array(1, ), - array(1, ), - array(17, ), - array(1, ), - array(1, ), - array(1, ), - array(1, ), - array(17, ), - array(1, ), - array(1, ), - array(), - array(), - array(2, 9, 12, 16, 17, 44, 47, 49, 51, 52, ), - array(2, 9, 12, 15, 16, 17, 44, 47, 49, 51, ), - array(2, 9, 12, 16, 17, 44, 47, 49, 51, ), - array(2, 9, 12, 16, 17, 44, 47, 49, 51, ), - array(9, 12, 16, 17, 44, 47, 49, 51, ), - array(12, 14, 16, 33, 53, ), - array(9, 12, 16, 49, ), - array(9, 12, 16, ), - array(15, 44, 51, ), - array(14, 53, ), - array(26, 32, ), - array(44, 51, ), - array(26, 32, ), - array(44, 51, ), - array(44, 51, ), - array(44, 51, ), - array(44, 51, ), - array(26, 32, ), - array(26, 32, ), - array(26, 32, ), - array(44, 51, ), - array(26, 32, ), - array(26, 32, ), - array(44, 51, ), - array(26, 32, ), - array(15, 22, ), - array(26, 32, ), - array(26, 32, ), - array(26, 32, ), - array(44, 51, ), - array(44, 51, ), - array(26, 32, ), - array(44, 51, ), - array(12, 35, ), - array(26, 32, ), - array(14, 53, ), - array(1, ), - array(17, ), - array(2, ), - array(17, ), - array(2, ), - array(17, ), - array(1, ), - array(1, ), - array(35, ), - array(1, ), - array(), - array(), - array(), - array(), - array(), - array(), - array(2, 35, 37, 38, 39, 47, 54, 55, 56, 57, ), - array(13, 21, 23, 26, 32, 34, 36, 44, ), - array(13, 15, 26, 32, 35, 47, ), - array(13, 22, 26, 32, 45, ), - array(13, 22, 26, 32, 45, ), - array(35, 44, 47, 52, ), - array(9, 12, 16, 49, ), - array(22, 45, 52, ), - array(28, 35, 47, ), - array(22, 45, 60, ), - array(35, 47, ), - array(21, 34, ), - array(34, 36, ), - array(16, 49, ), - array(6, 8, ), - array(44, 52, ), - array(7, 8, ), - array(34, 52, ), - array(35, 47, ), - array(35, 47, ), - array(22, 45, ), - array(34, 36, ), - array(15, 44, ), - array(34, 36, ), - array(34, 36, ), - array(13, ), - array(16, ), - array(50, ), - array(7, ), - array(16, ), - array(52, ), - array(23, ), - array(36, ), - array(50, ), - array(14, ), - array(13, ), - array(52, ), - array(15, ), - array(16, ), - array(40, ), - array(16, ), - array(35, ), - array(16, ), - array(33, ), - array(16, ), - array(33, ), - array(35, ), - array(44, ), - array(16, ), - array(16, ), - array(16, ), - array(16, ), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), -); - public static $yy_default = array( - 336, 512, 512, 512, 497, 497, 512, 474, 474, 474, - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 377, 377, 356, 512, - 512, 413, 512, 377, 512, 512, 512, 512, 512, 512, - 512, 512, 382, 512, 349, 512, 512, 512, 382, 379, - 389, 388, 384, 402, 473, 397, 498, 500, 401, 361, - 472, 499, 349, 377, 377, 487, 377, 377, 429, 512, - 512, 368, 326, 428, 512, 439, 391, 391, 391, 429, - 439, 439, 512, 429, 391, 377, 512, 377, 377, 391, - 512, 371, 358, 395, 394, 396, 373, 429, 400, 404, - 391, 404, 484, 406, 405, 481, 334, 428, 428, 428, - 428, 428, 512, 441, 439, 455, 512, 363, 435, 354, - 434, 437, 433, 432, 359, 357, 364, 436, 353, 367, - 466, 365, 512, 352, 350, 360, 467, 465, 346, 464, - 439, 366, 512, 369, 461, 475, 488, 476, 485, 372, - 422, 439, 374, 480, 439, 480, 480, 439, 334, 413, - 409, 413, 403, 403, 413, 440, 403, 413, 403, 413, - 512, 512, 512, 332, 409, 512, 512, 512, 423, 403, - 512, 409, 512, 512, 512, 512, 512, 512, 512, 418, - 385, 512, 512, 512, 512, 512, 512, 512, 415, 512, - 455, 512, 512, 512, 411, 486, 409, 512, 512, 512, - 512, 419, 407, 362, 445, 418, 425, 424, 420, 339, - 460, 421, 483, 398, 416, 340, 399, 455, 378, 337, - 338, 330, 328, 329, 442, 443, 444, 438, 392, 393, - 427, 426, 386, 417, 408, 390, 410, 331, 333, 335, - 412, 470, 414, 415, 503, 478, 495, 471, 459, 458, - 375, 457, 344, 462, 508, 493, 376, 496, 456, 509, - 494, 501, 504, 511, 510, 507, 505, 502, 506, 345, - 468, 469, 446, 355, 341, 452, 450, 454, 448, 453, - 447, 489, 490, 491, 463, 449, 492, 451, 327, 342, - 343, 370, 430, 431, 479, 477, -); - const YYNOCODE = 109; - const YYSTACKDEPTH = 500; - const YYNSTATE = 326; - const YYNRULE = 186; - const YYERRORSYMBOL = 61; - const YYERRSYMDT = 'yy0'; - const YYFALLBACK = 0; - public static $yyFallback = array( - ); - public function Trace($TraceFILE, $zTracePrompt) - { - if (!$TraceFILE) { - $zTracePrompt = 0; - } elseif (!$zTracePrompt) { - $TraceFILE = 0; - } - $this->yyTraceFILE = $TraceFILE; - $this->yyTracePrompt = $zTracePrompt; - } - - public function PrintTrace() - { - $this->yyTraceFILE = fopen('php://output', 'w'); - $this->yyTracePrompt = '<br>'; - } - - public $yyTraceFILE; - public $yyTracePrompt; - public $yyidx; /* Index of top element in stack */ - public $yyerrcnt; /* Shifts left before out of the error */ - public $yystack = array(); /* The parser's stack */ - - public $yyTokenName = array( - '$', 'VERT', 'COLON', 'TEXT', - 'STRIPON', 'STRIPOFF', 'LITERALSTART', 'LITERALEND', - 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT', - 'LDEL', 'RDEL', 'DOLLARID', 'EQUAL', - 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', - 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', - 'STEP', 'LDELFOREACH', 'SPACE', 'AS', - 'APTR', 'LDELSETFILTER', 'CLOSETAG', 'LDELSLASH', - 'ATTR', 'INTEGER', 'COMMA', 'OPENP', - 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', - 'QMARK', 'NOT', 'TYPECAST', 'HEX', - 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', - 'NAMESPACE', 'AT', 'HATCH', 'OPENB', - 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', - 'TLOGOP', 'SINGLECOND', 'ARRAYOPEN', 'QUOTE', - 'BACKTICK', 'error', 'start', 'template', - 'literal_e2', 'literal_e1', 'smartytag', 'tagbody', - 'tag', 'outattr', 'eqoutattr', 'varindexed', - 'output', 'attributes', 'variable', 'value', - 'expr', 'modifierlist', 'statement', 'statements', - 'foraction', 'varvar', 'modparameters', 'attribute', - 'ternary', 'tlop', 'lop', 'scond', - 'array', 'function', 'ns1', 'doublequoted_with_quotes', - 'static_class_access', 'arraydef', 'object', 'arrayindex', - 'indexdef', 'varvarele', 'objectchain', 'objectelement', - 'method', 'params', 'modifier', 'modparameter', - 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent', - ); - - public static $yyRuleName = array( - 'start ::= template', - 'template ::= template TEXT', - 'template ::= template STRIPON', - 'template ::= template STRIPOFF', - 'template ::= template LITERALSTART literal_e2 LITERALEND', - 'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND', - 'literal_e2 ::= literal_e1', - 'literal_e1 ::= literal_e1 LITERAL', - 'literal_e1 ::=', - 'template ::= template smartytag', - 'template ::=', - 'smartytag ::= SIMPELOUTPUT', - 'smartytag ::= SIMPLETAG', - 'smartytag ::= SMARTYBLOCKCHILDPARENT', - 'smartytag ::= LDEL tagbody RDEL', - 'smartytag ::= tag RDEL', - 'tagbody ::= outattr', - 'tagbody ::= DOLLARID eqoutattr', - 'tagbody ::= varindexed eqoutattr', - 'eqoutattr ::= EQUAL outattr', - 'outattr ::= output attributes', - 'output ::= variable', - 'output ::= value', - 'output ::= expr', - 'tag ::= LDEL ID attributes', - 'tag ::= LDEL ID', - 'tag ::= LDEL ID modifierlist attributes', - 'tag ::= LDEL ID PTR ID attributes', - 'tag ::= LDEL ID PTR ID modifierlist attributes', - 'tag ::= LDELMAKENOCACHE DOLLARID', - 'tag ::= LDELIF expr', - 'tag ::= LDELIF expr attributes', - 'tag ::= LDELIF statement', - 'tag ::= LDELIF statement attributes', - 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes', - 'foraction ::= EQUAL expr', - 'foraction ::= INCDEC', - 'tag ::= LDELFOR statement TO expr attributes', - 'tag ::= LDELFOR statement TO expr STEP expr attributes', - 'tag ::= LDELFOREACH SPACE expr AS varvar attributes', - 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes', - 'tag ::= LDELFOREACH attributes', - 'tag ::= LDELSETFILTER ID modparameters', - 'tag ::= LDELSETFILTER ID modparameters modifierlist', - 'smartytag ::= CLOSETAG', - 'tag ::= LDELSLASH ID', - 'tag ::= LDELSLASH ID modifierlist', - 'tag ::= LDELSLASH ID PTR ID', - 'tag ::= LDELSLASH ID PTR ID modifierlist', - 'attributes ::= attributes attribute', - 'attributes ::= attribute', - 'attributes ::=', - 'attribute ::= SPACE ID EQUAL ID', - 'attribute ::= ATTR expr', - 'attribute ::= ATTR value', - 'attribute ::= SPACE ID', - 'attribute ::= SPACE expr', - 'attribute ::= SPACE value', - 'attribute ::= SPACE INTEGER EQUAL expr', - 'statements ::= statement', - 'statements ::= statements COMMA statement', - 'statement ::= DOLLARID EQUAL INTEGER', - 'statement ::= DOLLARID EQUAL expr', - 'statement ::= varindexed EQUAL expr', - 'statement ::= OPENP statement CLOSEP', - 'expr ::= value', - 'expr ::= ternary', - 'expr ::= DOLLARID COLON ID', - 'expr ::= expr MATH value', - 'expr ::= expr UNIMATH value', - 'expr ::= expr tlop value', - 'expr ::= expr lop expr', - 'expr ::= expr scond', - 'expr ::= expr ISIN array', - 'expr ::= expr ISIN value', - 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr', - 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', - 'value ::= variable', - 'value ::= UNIMATH value', - 'value ::= NOT value', - 'value ::= TYPECAST value', - 'value ::= variable INCDEC', - 'value ::= HEX', - 'value ::= INTEGER', - 'value ::= INTEGER DOT INTEGER', - 'value ::= INTEGER DOT', - 'value ::= DOT INTEGER', - 'value ::= ID', - 'value ::= function', - 'value ::= OPENP expr CLOSEP', - 'value ::= variable INSTANCEOF ns1', - 'value ::= variable INSTANCEOF variable', - 'value ::= SINGLEQUOTESTRING', - 'value ::= doublequoted_with_quotes', - 'value ::= varindexed DOUBLECOLON static_class_access', - 'value ::= smartytag', - 'value ::= value modifierlist', - 'value ::= NAMESPACE', - 'value ::= arraydef', - 'value ::= ns1 DOUBLECOLON static_class_access', - 'ns1 ::= ID', - 'ns1 ::= NAMESPACE', - 'variable ::= DOLLARID', - 'variable ::= varindexed', - 'variable ::= varvar AT ID', - 'variable ::= object', - 'variable ::= HATCH ID HATCH', - 'variable ::= HATCH ID HATCH arrayindex', - 'variable ::= HATCH variable HATCH', - 'variable ::= HATCH variable HATCH arrayindex', - 'varindexed ::= DOLLARID arrayindex', - 'varindexed ::= varvar arrayindex', - 'arrayindex ::= arrayindex indexdef', - 'arrayindex ::=', - 'indexdef ::= DOT DOLLARID', - 'indexdef ::= DOT varvar', - 'indexdef ::= DOT varvar AT ID', - 'indexdef ::= DOT ID', - 'indexdef ::= DOT INTEGER', - 'indexdef ::= DOT LDEL expr RDEL', - 'indexdef ::= OPENB ID CLOSEB', - 'indexdef ::= OPENB ID DOT ID CLOSEB', - 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB', - 'indexdef ::= OPENB INTEGER CLOSEB', - 'indexdef ::= OPENB DOLLARID CLOSEB', - 'indexdef ::= OPENB variable CLOSEB', - 'indexdef ::= OPENB value CLOSEB', - 'indexdef ::= OPENB expr CLOSEB', - 'indexdef ::= OPENB CLOSEB', - 'varvar ::= DOLLARID', - 'varvar ::= DOLLAR', - 'varvar ::= varvar varvarele', - 'varvarele ::= ID', - 'varvarele ::= SIMPELOUTPUT', - 'varvarele ::= LDEL expr RDEL', - 'object ::= varindexed objectchain', - 'objectchain ::= objectelement', - 'objectchain ::= objectchain objectelement', - 'objectelement ::= PTR ID arrayindex', - 'objectelement ::= PTR varvar arrayindex', - 'objectelement ::= PTR LDEL expr RDEL arrayindex', - 'objectelement ::= PTR ID LDEL expr RDEL arrayindex', - 'objectelement ::= PTR method', - 'function ::= ns1 OPENP params CLOSEP', - 'method ::= ID OPENP params CLOSEP', - 'method ::= DOLLARID OPENP params CLOSEP', - 'params ::= params COMMA expr', - 'params ::= expr', - 'params ::=', - 'modifierlist ::= modifierlist modifier modparameters', - 'modifierlist ::= modifier modparameters', - 'modifier ::= VERT AT ID', - 'modifier ::= VERT ID', - 'modparameters ::= modparameters modparameter', - 'modparameters ::=', - 'modparameter ::= COLON value', - 'modparameter ::= COLON UNIMATH value', - 'modparameter ::= COLON array', - 'static_class_access ::= method', - 'static_class_access ::= method objectchain', - 'static_class_access ::= ID', - 'static_class_access ::= DOLLARID arrayindex', - 'static_class_access ::= DOLLARID arrayindex objectchain', - 'lop ::= LOGOP', - 'lop ::= SLOGOP', - 'tlop ::= TLOGOP', - 'scond ::= SINGLECOND', - 'arraydef ::= OPENB arrayelements CLOSEB', - 'arraydef ::= ARRAYOPEN arrayelements CLOSEP', - 'arrayelements ::= arrayelement', - 'arrayelements ::= arrayelements COMMA arrayelement', - 'arrayelements ::=', - 'arrayelement ::= value APTR expr', - 'arrayelement ::= ID APTR expr', - 'arrayelement ::= expr', - 'doublequoted_with_quotes ::= QUOTE QUOTE', - 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE', - 'doublequoted ::= doublequoted doublequotedcontent', - 'doublequoted ::= doublequotedcontent', - 'doublequotedcontent ::= BACKTICK variable BACKTICK', - 'doublequotedcontent ::= BACKTICK expr BACKTICK', - 'doublequotedcontent ::= DOLLARID', - 'doublequotedcontent ::= LDEL variable RDEL', - 'doublequotedcontent ::= LDEL expr RDEL', - 'doublequotedcontent ::= smartytag', - 'doublequotedcontent ::= TEXT', - ); - - public function tokenName($tokenType) - { - if ($tokenType === 0) { - return 'End of Input'; - } - if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) { - return $this->yyTokenName[$tokenType]; - } else { - return 'Unknown'; - } - } - - public static function yy_destructor($yymajor, $yypminor) - { - switch ($yymajor) { - default: break; /* If no destructor action specified: do nothing */ - } - } - - public function yy_pop_parser_stack() - { - if (empty($this->yystack)) { - return; - } - $yytos = array_pop($this->yystack); - if ($this->yyTraceFILE && $this->yyidx >= 0) { - fwrite($this->yyTraceFILE, - $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . - "\n"); - } - $yymajor = $yytos->major; - self::yy_destructor($yymajor, $yytos->minor); - $this->yyidx--; - - return $yymajor; - } - - public function __destruct() - { - while ($this->yystack !== Array()) { - $this->yy_pop_parser_stack(); - } - if (is_resource($this->yyTraceFILE)) { - fclose($this->yyTraceFILE); - } - } - - public function yy_get_expected_tokens($token) - { - static $res3 = array(); - static $res4 = array(); - $state = $this->yystack[$this->yyidx]->stateno; - $expected = self::$yyExpectedTokens[$state]; - if (isset($res3[$state][$token])) { - if ($res3[$state][$token]) { - return $expected; - } - } else { - if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) { - return $expected; - } - } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ === 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return array_unique($expected); - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[$yyruleno][1]; - $nextstate = $this->yy_find_reduce_action( - $this->yystack[$this->yyidx]->stateno, - self::$yyRuleInfo[$yyruleno][0]); - if (isset(self::$yyExpectedTokens[$nextstate])) { - $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]); - if (isset($res4[$nextstate][$token])) { - if ($res4[$nextstate][$token]) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return array_unique($expected); - } - } else { - if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return array_unique($expected); - } - } - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new TP_yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[$yyruleno][0]; - $this->yystack[$this->yyidx] = $x; - continue 2; - } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return array_unique($expected); - } elseif ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return $expected; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; - - return array_unique($expected); - } - - public function yy_is_expected_token($token) - { - static $res = array(); - static $res2 = array(); - if ($token === 0) { - return true; // 0 is not part of this - } - $state = $this->yystack[$this->yyidx]->stateno; - if (isset($res[$state][$token])) { - if ($res[$state][$token]) { - return true; - } - } else { - if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) { - return true; - } - } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ === 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return true; - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[$yyruleno][1]; - $nextstate = $this->yy_find_reduce_action( - $this->yystack[$this->yyidx]->stateno, - self::$yyRuleInfo[$yyruleno][0]); - if (isset($res2[$nextstate][$token])) { - if ($res2[$nextstate][$token]) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - } else { - if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new TP_yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[$yyruleno][0]; - $this->yystack[$this->yyidx] = $x; - continue 2; - } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - if (!$token) { - // end of input: this is valid - return true; - } - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return false; - } elseif ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return true; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; - - return true; - } - - public function yy_find_shift_action($iLookAhead) - { - $stateno = $this->yystack[$this->yyidx]->stateno; - - /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ - if (!isset(self::$yy_shift_ofst[$stateno])) { - // no shift actions - return self::$yy_default[$stateno]; - } - $i = self::$yy_shift_ofst[$stateno]; - if ($i === self::YY_SHIFT_USE_DFLT) { - return self::$yy_default[$stateno]; - } - if ($iLookAhead === self::YYNOCODE) { - return self::YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[$i] != $iLookAhead) { - if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) - && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) { - if ($this->yyTraceFILE) { - fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' . - $this->yyTokenName[$iLookAhead] . ' => ' . - $this->yyTokenName[$iFallback] . "\n"); - } - - return $this->yy_find_shift_action($iFallback); - } - - return self::$yy_default[$stateno]; - } else { - return self::$yy_action[$i]; - } - } - - public function yy_find_reduce_action($stateno, $iLookAhead) - { - /* $stateno = $this->yystack[$this->yyidx]->stateno; */ - - if (!isset(self::$yy_reduce_ofst[$stateno])) { - return self::$yy_default[$stateno]; - } - $i = self::$yy_reduce_ofst[$stateno]; - if ($i === self::YY_REDUCE_USE_DFLT) { - return self::$yy_default[$stateno]; - } - if ($iLookAhead === self::YYNOCODE) { - return self::YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[$i] != $iLookAhead) { - return self::$yy_default[$stateno]; - } else { - return self::$yy_action[$i]; - } - } - - public function yy_shift($yyNewState, $yyMajor, $yypMinor) - { - $this->yyidx++; - if ($this->yyidx >= self::YYSTACKDEPTH) { - $this->yyidx--; - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } -// line 220 "../smarty/lexer/smarty_internal_templateparser.y" - - $this->internalError = true; - $this->compiler->trigger_template_error('Stack overflow in template parser'); - - return; - } - $yytos = new TP_yyStackEntry; - $yytos->stateno = $yyNewState; - $yytos->major = $yyMajor; - $yytos->minor = $yypMinor; - $this->yystack[] = $yytos; - if ($this->yyTraceFILE && $this->yyidx > 0) { - fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, - $yyNewState); - fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); - for ($i = 1; $i <= $this->yyidx; $i++) { - fprintf($this->yyTraceFILE, " %s", - $this->yyTokenName[$this->yystack[$i]->major]); - } - fwrite($this->yyTraceFILE,"\n"); - } - } - - public static $yyRuleInfo = array( - array( 0 => 62, 1 => 1 ), - array( 0 => 63, 1 => 2 ), - array( 0 => 63, 1 => 2 ), - array( 0 => 63, 1 => 2 ), - array( 0 => 63, 1 => 4 ), - array( 0 => 64, 1 => 4 ), - array( 0 => 64, 1 => 1 ), - array( 0 => 65, 1 => 2 ), - array( 0 => 65, 1 => 0 ), - array( 0 => 63, 1 => 2 ), - array( 0 => 63, 1 => 0 ), - array( 0 => 66, 1 => 1 ), - array( 0 => 66, 1 => 1 ), - array( 0 => 66, 1 => 1 ), - array( 0 => 66, 1 => 3 ), - array( 0 => 66, 1 => 2 ), - array( 0 => 67, 1 => 1 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 70, 1 => 2 ), - array( 0 => 69, 1 => 2 ), - array( 0 => 72, 1 => 1 ), - array( 0 => 72, 1 => 1 ), - array( 0 => 72, 1 => 1 ), - array( 0 => 68, 1 => 3 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 68, 1 => 4 ), - array( 0 => 68, 1 => 5 ), - array( 0 => 68, 1 => 6 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 68, 1 => 3 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 68, 1 => 3 ), - array( 0 => 68, 1 => 8 ), - array( 0 => 80, 1 => 2 ), - array( 0 => 80, 1 => 1 ), - array( 0 => 68, 1 => 5 ), - array( 0 => 68, 1 => 7 ), - array( 0 => 68, 1 => 6 ), - array( 0 => 68, 1 => 8 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 68, 1 => 3 ), - array( 0 => 68, 1 => 4 ), - array( 0 => 66, 1 => 1 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 68, 1 => 3 ), - array( 0 => 68, 1 => 4 ), - array( 0 => 68, 1 => 5 ), - array( 0 => 73, 1 => 2 ), - array( 0 => 73, 1 => 1 ), - array( 0 => 73, 1 => 0 ), - array( 0 => 83, 1 => 4 ), - array( 0 => 83, 1 => 2 ), - array( 0 => 83, 1 => 2 ), - array( 0 => 83, 1 => 2 ), - array( 0 => 83, 1 => 2 ), - array( 0 => 83, 1 => 2 ), - array( 0 => 83, 1 => 4 ), - array( 0 => 79, 1 => 1 ), - array( 0 => 79, 1 => 3 ), - array( 0 => 78, 1 => 3 ), - array( 0 => 78, 1 => 3 ), - array( 0 => 78, 1 => 3 ), - array( 0 => 78, 1 => 3 ), - array( 0 => 76, 1 => 1 ), - array( 0 => 76, 1 => 1 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 76, 1 => 2 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 76, 1 => 3 ), - array( 0 => 84, 1 => 7 ), - array( 0 => 84, 1 => 7 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 90, 1 => 1 ), - array( 0 => 90, 1 => 1 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 4 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 4 ), - array( 0 => 71, 1 => 2 ), - array( 0 => 71, 1 => 2 ), - array( 0 => 95, 1 => 2 ), - array( 0 => 95, 1 => 0 ), - array( 0 => 96, 1 => 2 ), - array( 0 => 96, 1 => 2 ), - array( 0 => 96, 1 => 4 ), - array( 0 => 96, 1 => 2 ), - array( 0 => 96, 1 => 2 ), - array( 0 => 96, 1 => 4 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 5 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 2 ), - array( 0 => 81, 1 => 1 ), - array( 0 => 81, 1 => 1 ), - array( 0 => 81, 1 => 2 ), - array( 0 => 97, 1 => 1 ), - array( 0 => 97, 1 => 1 ), - array( 0 => 97, 1 => 3 ), - array( 0 => 94, 1 => 2 ), - array( 0 => 98, 1 => 1 ), - array( 0 => 98, 1 => 2 ), - array( 0 => 99, 1 => 3 ), - array( 0 => 99, 1 => 3 ), - array( 0 => 99, 1 => 5 ), - array( 0 => 99, 1 => 6 ), - array( 0 => 99, 1 => 2 ), - array( 0 => 89, 1 => 4 ), - array( 0 => 100, 1 => 4 ), - array( 0 => 100, 1 => 4 ), - array( 0 => 101, 1 => 3 ), - array( 0 => 101, 1 => 1 ), - array( 0 => 101, 1 => 0 ), - array( 0 => 77, 1 => 3 ), - array( 0 => 77, 1 => 2 ), - array( 0 => 102, 1 => 3 ), - array( 0 => 102, 1 => 2 ), - array( 0 => 82, 1 => 2 ), - array( 0 => 82, 1 => 0 ), - array( 0 => 103, 1 => 2 ), - array( 0 => 103, 1 => 3 ), - array( 0 => 103, 1 => 2 ), - array( 0 => 92, 1 => 1 ), - array( 0 => 92, 1 => 2 ), - array( 0 => 92, 1 => 1 ), - array( 0 => 92, 1 => 2 ), - array( 0 => 92, 1 => 3 ), - array( 0 => 86, 1 => 1 ), - array( 0 => 86, 1 => 1 ), - array( 0 => 85, 1 => 1 ), - array( 0 => 87, 1 => 1 ), - array( 0 => 93, 1 => 3 ), - array( 0 => 93, 1 => 3 ), - array( 0 => 104, 1 => 1 ), - array( 0 => 104, 1 => 3 ), - array( 0 => 104, 1 => 0 ), - array( 0 => 105, 1 => 3 ), - array( 0 => 105, 1 => 3 ), - array( 0 => 105, 1 => 1 ), - array( 0 => 91, 1 => 2 ), - array( 0 => 91, 1 => 3 ), - array( 0 => 106, 1 => 2 ), - array( 0 => 106, 1 => 1 ), - array( 0 => 107, 1 => 3 ), - array( 0 => 107, 1 => 3 ), - array( 0 => 107, 1 => 1 ), - array( 0 => 107, 1 => 3 ), - array( 0 => 107, 1 => 3 ), - array( 0 => 107, 1 => 1 ), - array( 0 => 107, 1 => 1 ), - ); - - public static $yyReduceMap = array( - 0 => 0, - 1 => 1, - 2 => 2, - 3 => 3, - 4 => 4, - 5 => 5, - 6 => 6, - 21 => 6, - 22 => 6, - 23 => 6, - 36 => 6, - 56 => 6, - 57 => 6, - 65 => 6, - 66 => 6, - 77 => 6, - 82 => 6, - 83 => 6, - 88 => 6, - 92 => 6, - 93 => 6, - 97 => 6, - 98 => 6, - 100 => 6, - 105 => 6, - 169 => 6, - 174 => 6, - 7 => 7, - 8 => 8, - 9 => 9, - 11 => 11, - 12 => 12, - 13 => 13, - 14 => 14, - 15 => 15, - 16 => 16, - 17 => 17, - 18 => 18, - 19 => 19, - 20 => 20, - 24 => 24, - 25 => 25, - 26 => 26, - 27 => 27, - 28 => 28, - 29 => 29, - 30 => 30, - 31 => 31, - 33 => 31, - 32 => 32, - 34 => 34, - 35 => 35, - 37 => 37, - 38 => 38, - 39 => 39, - 40 => 40, - 41 => 41, - 42 => 42, - 43 => 43, - 44 => 44, - 45 => 45, - 46 => 46, - 47 => 47, - 48 => 48, - 49 => 49, - 50 => 50, - 59 => 50, - 147 => 50, - 151 => 50, - 155 => 50, - 157 => 50, - 51 => 51, - 148 => 51, - 154 => 51, - 52 => 52, - 53 => 53, - 54 => 53, - 55 => 55, - 132 => 55, - 58 => 58, - 60 => 60, - 61 => 61, - 62 => 61, - 63 => 63, - 64 => 64, - 67 => 67, - 68 => 68, - 69 => 68, - 70 => 70, - 71 => 71, - 72 => 72, - 73 => 73, - 74 => 74, - 75 => 75, - 76 => 76, - 78 => 78, - 80 => 78, - 81 => 78, - 112 => 78, - 79 => 79, - 84 => 84, - 85 => 85, - 86 => 86, - 87 => 87, - 89 => 89, - 90 => 90, - 91 => 90, - 94 => 94, - 95 => 95, - 96 => 96, - 99 => 99, - 101 => 101, - 102 => 102, - 103 => 103, - 104 => 104, - 106 => 106, - 107 => 107, - 108 => 108, - 109 => 109, - 110 => 110, - 111 => 111, - 113 => 113, - 171 => 113, - 114 => 114, - 115 => 115, - 116 => 116, - 117 => 117, - 118 => 118, - 119 => 119, - 127 => 119, - 120 => 120, - 121 => 121, - 122 => 122, - 123 => 122, - 125 => 122, - 126 => 122, - 124 => 124, - 128 => 128, - 129 => 129, - 130 => 130, - 175 => 130, - 131 => 131, - 133 => 133, - 134 => 134, - 135 => 135, - 136 => 136, - 137 => 137, - 138 => 138, - 139 => 139, - 140 => 140, - 141 => 141, - 142 => 142, - 143 => 143, - 144 => 144, - 145 => 145, - 146 => 146, - 149 => 149, - 150 => 150, - 152 => 152, - 153 => 153, - 156 => 156, - 158 => 158, - 159 => 159, - 160 => 160, - 161 => 161, - 162 => 162, - 163 => 163, - 164 => 164, - 165 => 165, - 166 => 166, - 167 => 167, - 168 => 167, - 170 => 170, - 172 => 172, - 173 => 173, - 176 => 176, - 177 => 177, - 178 => 178, - 179 => 179, - 182 => 179, - 180 => 180, - 183 => 180, - 181 => 181, - 184 => 184, - 185 => 185, - ); -// line 233 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r0(){ - $this->root_buffer->prepend_array($this, $this->template_prefix); - $this->root_buffer->append_array($this, $this->template_postfix); - $this->_retvalue = $this->root_buffer->to_smarty_php($this); - } -// line 240 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r1(){ - $text = $this->yystack[ $this->yyidx + 0 ]->minor; - - if ((string)$text == '') { - $this->current_buffer->append_subtree($this, null); - } - - $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip)); - } -// line 250 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r2(){ - $this->strip = true; - } -// line 254 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r3(){ - $this->strip = false; - } -// line 259 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r4(){ - $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($this->yystack[$this->yyidx + -1]->minor)); - } -// line 264 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r5(){ - $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.$this->yystack[$this->yyidx + -1]->minor; - } -// line 267 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r6(){ - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } -// line 271 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r7(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - - } -// line 276 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r8(){ - $this->_retvalue = ''; - } -// line 280 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r9(){ - if ($this->compiler->has_code) { - $this->current_buffer->append_subtree($this, $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor)); - } - $this->compiler->has_variable_string = false; - $this->block_nesting_level = count($this->compiler->_tag_stack); - } -// line 292 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r11(){ - $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $'); - if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) { - $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\''))); - } else { - $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\''))); - } - } -// line 302 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r12(){ - $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength())); - if ($tag == 'strip') { - $this->strip = true; - $this->_retvalue = null; - } else { - if (defined($tag)) { - if ($this->security) { - $this->security->isTrustedConstant($tag, $this->compiler); - } - $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag)); - } else { - if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) { - $this->_retvalue = $this->compiler->compileTag($match[1],array('\'nocache\'')); - } else { - $this->_retvalue = $this->compiler->compileTag($tag,array()); - } - } - } - } -// line 323 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r13(){ - $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.'); - if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') { - // {$smarty.block.child} - $this->_retvalue = $this->compiler->compileTag('child',array(),array($this->yystack[$this->yyidx + 0]->minor)); - } else { - // {$smarty.block.parent} - $this->_retvalue = $this->compiler->compileTag('parent',array(),array($this->yystack[$this->yyidx + 0]->minor)); - } - } -// line 334 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r14(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; - } -// line 338 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r15(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; - } -// line 342 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r16(){ - $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor[1],array('value'=>$this->yystack[$this->yyidx + 0]->minor[0])); - } -// line 351 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r17(){ - $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1])); - } -// line 355 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r18(){ - $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'])); - } -// line 359 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r19(){ - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } -// line 363 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r20(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); - } -// line 378 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r24(){ - if (defined($this->yystack[$this->yyidx + -1]->minor)) { - if ($this->security) { - $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler); - } - $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -1]->minor)); - } else { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); - } - } -// line 388 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r25(){ - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - if ($this->security) { - $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler); - } - $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + 0]->minor)); - } else { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array()); - } - } -// line 401 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r26(){ - if (defined($this->yystack[$this->yyidx + -2]->minor)) { - if ($this->security) { - $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler); - } - $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -1]->minor)); - } else { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor)); - } - } -// line 413 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r27(){ - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor)); - } -// line 418 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r28(){ - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor)); - } -// line 423 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r29(){ - $this->_retvalue = $this->compiler->compileTag('make_nocache',array(array('var'=>'\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\''))); - } -// line 428 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r30(){ - $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength())); - $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); - } -// line 433 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r31(){ - $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength())); - $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); - } -// line 438 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r32(){ - $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength())); - $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); - } -// line 449 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r34(){ - $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1); - } -// line 453 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r35(){ - $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; - } -// line 461 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r37(){ - $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0); - } -// line 465 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r38(){ - $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0); - } -// line 470 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r39(){ - $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor)))); - } -// line 474 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r40(){ - $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor)))); - } -// line 477 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r41(){ - $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor); - } -// line 482 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r42(){ - $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor)))); - } -// line 486 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r43(){ - $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor))); - } -// line 492 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r44(){ - $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /'); - if ($tag === 'strip') { - $this->strip = false; - $this->_retvalue = null; - } else { - $this->_retvalue = $this->compiler->compileTag($tag.'close',array()); - } - } -// line 501 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r45(){ - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array()); - } -// line 505 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r46(){ - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor)); - } -// line 510 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r47(){ - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor)); - } -// line 514 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r48(){ - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor)); - } -// line 522 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r49(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; - $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; - } -// line 528 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r50(){ - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); - } -// line 533 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r51(){ - $this->_retvalue = array(); - } -// line 538 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r52(){ - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - if ($this->security) { - $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler); - } - $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); - } else { - $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\''); - } - } -// line 549 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r53(){ - $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor); - } -// line 557 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r55(){ - $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; - } -// line 569 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r58(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); - } -// line 582 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r60(){ - $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; - } -// line 587 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r61(){ - $this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor); - } -// line 594 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r63(){ - $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); - } -// line 598 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r64(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; - } -// line 618 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r67(){ - $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')'; - } -// line 623 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r68(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor; - } -// line 633 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r70(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor['pre']. $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor['op'].$this->yystack[$this->yyidx + 0]->minor .')'; - } -// line 637 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r71(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - } -// line 641 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r72(){ - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')'; - } -// line 645 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r73(){ - $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; - } -// line 649 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r74(){ - $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; - } -// line 657 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r75(){ - $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '. $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'') . ' : '.$this->yystack[$this->yyidx + 0]->minor; - } -// line 661 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r76(){ - $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; - } -// line 671 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r78(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - } -// line 676 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r79(){ - $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 697 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r84(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 701 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r85(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'; - } -// line 705 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r86(){ - $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 710 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r87(){ - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - if ($this->security) { - $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler); - } - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } else { - $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; - } - } -// line 727 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r89(){ - $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')'; - } -// line 731 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r90(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - } -// line 749 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r94(){ - if ($this->security && $this->security->static_classes !== array()) { - $this->compiler->trigger_template_error('dynamic static class not allowed by security setting'); - } - $prefixVar = $this->compiler->getNewPrefixVariable(); - if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') { - $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>'); - } else { - $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>'); - } - $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; - } -// line 760 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r95(){ - $prefixVar = $this->compiler->getNewPrefixVariable(); - $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[$this->yyidx + 0]->minor); - $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>")); - $this->_retvalue = $prefixVar; - } -// line 767 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r96(){ - $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor)); - } -// line 780 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r99(){ - if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) { - if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) { - $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; - } else { - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; - } - } else { - $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting'); - } - } -// line 799 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r101(){ - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } -// line 810 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r102(){ - $this->_retvalue = $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\''); - } -// line 813 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r103(){ - if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') { - $smarty_var = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']); - $this->_retvalue = $smarty_var; - } else { - // used for array reset,next,prev,end,current - $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var']; - $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; - $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; - } - } -// line 826 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r104(){ - $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 836 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r106(){ - $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\''); - } -// line 840 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r107(){ - $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)'; - } -// line 844 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r108(){ - $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor); - } -// line 848 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r109(){ - $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)'; - } -// line 852 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r110(){ - $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); - } -// line 855 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r111(){ - $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); - } -// line 868 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r113(){ - return; - } -// line 874 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r114(){ - $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'').']'; - } -// line 877 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r115(){ - $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor).']'; - } -// line 881 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r116(){ - $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']'; - } -// line 885 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r117(){ - $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']'; - } -// line 889 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r118(){ - $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']'; - } -// line 894 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r119(){ - $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']'; - } -// line 899 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r120(){ - $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; - } -// line 903 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r121(){ - $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; - } -// line 906 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r122(){ - $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']'; - } -// line 912 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r124(){ - $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'').']'; - } -// line 928 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r128(){ - $this->_retvalue = '[]'; - } -// line 938 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r129(){ - $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\''; - } -// line 942 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r130(){ - $this->_retvalue = '\'\''; - } -// line 947 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r131(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 955 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r133(){ - $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $'); - $this->_retvalue = $this->compiler->compileVariable('\''.$var.'\''); - } -// line 961 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r134(){ - $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; - } -// line 968 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r135(){ - if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') { - $this->_retvalue = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor; - } else { - $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor; - } - } -// line 977 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r136(){ - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } -// line 982 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r137(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - } -// line 987 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r138(){ - if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') { - $this->compiler->trigger_template_error (self::ERR1); - } - $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - } -// line 994 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r139(){ - if ($this->security) { - $this->compiler->trigger_template_error (self::ERR2); - } - $this->_retvalue = '->{'.$this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}'; - } -// line 1001 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r140(){ - if ($this->security) { - $this->compiler->trigger_template_error (self::ERR2); - } - $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; - } -// line 1008 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r141(){ - if ($this->security) { - $this->compiler->trigger_template_error (self::ERR2); - } - $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; - } -// line 1016 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r142(){ - $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 1024 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r143(){ - $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); - } -// line 1032 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r144(){ - if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') { - $this->compiler->trigger_template_error (self::ERR1); - } - $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')'; - } -// line 1039 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r145(){ - if ($this->security) { - $this->compiler->trigger_template_error (self::ERR2); - } - $prefixVar = $this->compiler->getNewPrefixVariable(); - $this->compiler->appendPrefixCode("<?php {$prefixVar} = ".$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -3]->minor,1).'\'').';?>'); - $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')'; - } -// line 1050 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r146(){ - $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor)); - } -// line 1067 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r149(){ - $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor))); - } -// line 1071 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r150(){ - $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)); - } -// line 1079 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r152(){ - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); - } -// line 1087 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r153(){ - $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); - } -// line 1100 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r156(){ - $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor); - } -// line 1109 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r158(){ - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method'); - } -// line 1114 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r159(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method'); - } -// line 1119 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r160(){ - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, ''); - } -// line 1124 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r161(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property'); - } -// line 1129 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r162(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property'); - } -// line 1135 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r163(){ - $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' '; - } -// line 1139 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r164(){ - static $lops = array( - 'eq' => ' == ', - 'ne' => ' != ', - 'neq' => ' != ', - 'gt' => ' > ', - 'ge' => ' >= ', - 'gte' => ' >= ', - 'lt' => ' < ', - 'le' => ' <= ', - 'lte' => ' <= ', - 'mod' => ' % ', - 'and' => ' && ', - 'or' => ' || ', - 'xor' => ' xor ', - ); - $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor)); - $this->_retvalue = $lops[$op]; - } -// line 1158 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r165(){ - static $tlops = array( - 'isdivby' => array('op' => ' % ', 'pre' => '!('), - 'isnotdivby' => array('op' => ' % ', 'pre' => '('), - 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '), - 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '), - 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '), - 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '), - ); - $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor)); - $this->_retvalue = $tlops[$op]; - } -// line 1171 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r166(){ - static $scond = array ( - 'iseven' => '!(1 & ', - 'isnoteven' => '(1 & ', - 'isodd' => '(1 & ', - 'isnotodd' => '!(1 & ', - ); - $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor)); - $this->_retvalue = $scond[$op]; - } -// line 1185 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r167(){ - $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; - } -// line 1196 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r170(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; - } -// line 1204 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r172(){ - $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 1208 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r173(){ - $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; - } -// line 1224 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r176(){ - $this->compiler->leaveDoubleQuote(); - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this); - } -// line 1230 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r177(){ - $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor); - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; - } -// line 1235 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r178(){ - $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor); - } -// line 1239 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r179(){ - $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)'.$this->yystack[$this->yyidx + -1]->minor); - } -// line 1243 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r180(){ - $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')'); - } -// line 1247 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r181(){ - $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value'); - } -// line 1259 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r184(){ - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + 0]->minor); - } -// line 1263 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r185(){ - $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[$this->yyidx + 0]->minor); - } - - private $_retvalue; - - public function yy_reduce($yyruleno) - { - if ($this->yyTraceFILE && $yyruleno >= 0 - && $yyruleno < count(self::$yyRuleName)) { - fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", - $this->yyTracePrompt, $yyruleno, - self::$yyRuleName[$yyruleno]); - } - - $this->_retvalue = $yy_lefthand_side = null; - if (isset(self::$yyReduceMap[$yyruleno])) { - // call the action - $this->_retvalue = null; - $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}(); - $yy_lefthand_side = $this->_retvalue; - } - $yygoto = self::$yyRuleInfo[$yyruleno][0]; - $yysize = self::$yyRuleInfo[$yyruleno][1]; - $this->yyidx -= $yysize; - for ($i = $yysize; $i; $i--) { - // pop all of the right-hand side parameters - array_pop($this->yystack); - } - $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto); - if ($yyact < self::YYNSTATE) { - if (!$this->yyTraceFILE && $yysize) { - $this->yyidx++; - $x = new TP_yyStackEntry; - $x->stateno = $yyact; - $x->major = $yygoto; - $x->minor = $yy_lefthand_side; - $this->yystack[$this->yyidx] = $x; - } else { - $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); - } - } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) { - $this->yy_accept(); - } - } - - public function yy_parse_failed() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); - } while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - } - - public function yy_syntax_error($yymajor, $TOKEN) - { -// line 213 "../smarty/lexer/smarty_internal_templateparser.y" - - $this->internalError = true; - $this->yymajor = $yymajor; - $this->compiler->trigger_template_error(); - } - - public function yy_accept() - { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); - } while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } -// line 206 "../smarty/lexer/smarty_internal_templateparser.y" - - $this->successful = !$this->internalError; - $this->internalError = false; - $this->retvalue = $this->_retvalue; - } - - public function doParse($yymajor, $yytokenvalue) - { - $yyerrorhit = 0; /* True if yymajor has invoked an error */ - - if ($this->yyidx === null || $this->yyidx < 0) { - $this->yyidx = 0; - $this->yyerrcnt = -1; - $x = new TP_yyStackEntry; - $x->stateno = 0; - $x->major = 0; - $this->yystack = array(); - $this->yystack[] = $x; - } - $yyendofinput = ($yymajor==0); - - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sInput %s\n", - $this->yyTracePrompt, $this->yyTokenName[$yymajor]); - } - - do { - $yyact = $this->yy_find_shift_action($yymajor); - if ($yymajor < self::YYERRORSYMBOL && - !$this->yy_is_expected_token($yymajor)) { - // force a syntax error - $yyact = self::YY_ERROR_ACTION; - } - if ($yyact < self::YYNSTATE) { - $this->yy_shift($yyact, $yymajor, $yytokenvalue); - $this->yyerrcnt--; - if ($yyendofinput && $this->yyidx >= 0) { - $yymajor = 0; - } else { - $yymajor = self::YYNOCODE; - } - } elseif ($yyact < self::YYNSTATE + self::YYNRULE) { - $this->yy_reduce($yyact - self::YYNSTATE); - } elseif ($yyact === self::YY_ERROR_ACTION) { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sSyntax Error!\n", - $this->yyTracePrompt); - } - if (self::YYERRORSYMBOL) { - if ($this->yyerrcnt < 0) { - $this->yy_syntax_error($yymajor, $yytokenvalue); - } - $yymx = $this->yystack[$this->yyidx]->major; - if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { - if ($this->yyTraceFILE) { - fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", - $this->yyTracePrompt, $this->yyTokenName[$yymajor]); - } - $this->yy_destructor($yymajor, $yytokenvalue); - $yymajor = self::YYNOCODE; - } else { - while ($this->yyidx >= 0 && - $yymx !== self::YYERRORSYMBOL && - ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE - ){ - $this->yy_pop_parser_stack(); - } - if ($this->yyidx < 0 || $yymajor==0) { - $this->yy_destructor($yymajor, $yytokenvalue); - $this->yy_parse_failed(); - $yymajor = self::YYNOCODE; - } elseif ($yymx !== self::YYERRORSYMBOL) { - $u2 = 0; - $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); - } - } - $this->yyerrcnt = 3; - $yyerrorhit = 1; - } else { - if ($this->yyerrcnt <= 0) { - $this->yy_syntax_error($yymajor, $yytokenvalue); - } - $this->yyerrcnt = 3; - $this->yy_destructor($yymajor, $yytokenvalue); - if ($yyendofinput) { - $this->yy_parse_failed(); - } - $yymajor = self::YYNOCODE; - } - } else { - $this->yy_accept(); - $yymajor = self::YYNOCODE; - } - } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); - } -} - diff --git a/libs/sysplugins/smarty_internal_testinstall.php b/libs/sysplugins/smarty_internal_testinstall.php deleted file mode 100644 index c8ffd4cc..00000000 --- a/libs/sysplugins/smarty_internal_testinstall.php +++ /dev/null @@ -1,605 +0,0 @@ -<?php -/** - * Smarty Internal TestInstall - * Test Smarty installation - * - * @package Smarty - * @subpackage Utilities - * @author Uwe Tews - */ - -/** - * TestInstall class - * - * @package Smarty - * @subpackage Utilities - */ -class Smarty_Internal_TestInstall -{ - /** - * diagnose Smarty setup - * If $errors is secified, the diagnostic report will be appended to the array, rather than being output. - * - * @param \Smarty $smarty - * @param array $errors array to push results into rather than outputting them - * - * @return bool status, true if everything is fine, false else - */ - public static function testInstall(Smarty $smarty, &$errors = null) - { - $status = true; - if ($errors === null) { - echo "<PRE>\n"; - echo "Smarty Installation test...\n"; - echo "Testing template directory...\n"; - } - $_stream_resolve_include_path = function_exists('stream_resolve_include_path'); - // test if all registered template_dir are accessible - foreach ($smarty->getTemplateDir() as $template_dir) { - $_template_dir = $template_dir; - $template_dir = realpath($template_dir); - // resolve include_path or fail existence - if (!$template_dir) { - if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) { - // try PHP include_path - if ($_stream_resolve_include_path) { - $template_dir = stream_resolve_include_path($_template_dir); - } else { - $template_dir = $smarty->ext->_getIncludePath->getIncludePath($_template_dir, null, $smarty); - } - if ($template_dir !== false) { - if ($errors === null) { - echo "$template_dir is OK.\n"; - } - continue; - } else { - $status = false; - $message = - "FAILED: $_template_dir does not exist (and couldn't be found in include_path either)"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'template_dir' ] = $message; - } - continue; - } - } else { - $status = false; - $message = "FAILED: $_template_dir does not exist"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'template_dir' ] = $message; - } - continue; - } - } - if (!is_dir($template_dir)) { - $status = false; - $message = "FAILED: $template_dir is not a directory"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'template_dir' ] = $message; - } - } elseif (!is_readable($template_dir)) { - $status = false; - $message = "FAILED: $template_dir is not readable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'template_dir' ] = $message; - } - } else { - if ($errors === null) { - echo "$template_dir is OK.\n"; - } - } - } - if ($errors === null) { - echo "Testing compile directory...\n"; - } - // test if registered compile_dir is accessible - $__compile_dir = $smarty->getCompileDir(); - $_compile_dir = realpath($__compile_dir); - if (!$_compile_dir) { - $status = false; - $message = "FAILED: {$__compile_dir} does not exist"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'compile_dir' ] = $message; - } - } elseif (!is_dir($_compile_dir)) { - $status = false; - $message = "FAILED: {$_compile_dir} is not a directory"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'compile_dir' ] = $message; - } - } elseif (!is_readable($_compile_dir)) { - $status = false; - $message = "FAILED: {$_compile_dir} is not readable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'compile_dir' ] = $message; - } - } elseif (!is_writable($_compile_dir)) { - $status = false; - $message = "FAILED: {$_compile_dir} is not writable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'compile_dir' ] = $message; - } - } else { - if ($errors === null) { - echo "{$_compile_dir} is OK.\n"; - } - } - if ($errors === null) { - echo "Testing plugins directory...\n"; - } - // test if all registered plugins_dir are accessible - // and if core plugins directory is still registered - $_core_plugins_dir = realpath(__DIR__ . '/../plugins'); - $_core_plugins_available = false; - foreach ($smarty->getPluginsDir() as $plugin_dir) { - $_plugin_dir = $plugin_dir; - $plugin_dir = realpath($plugin_dir); - // resolve include_path or fail existence - if (!$plugin_dir) { - if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) { - // try PHP include_path - if ($_stream_resolve_include_path) { - $plugin_dir = stream_resolve_include_path($_plugin_dir); - } else { - $plugin_dir = $smarty->ext->_getIncludePath->getIncludePath($_plugin_dir, null, $smarty); - } - if ($plugin_dir !== false) { - if ($errors === null) { - echo "$plugin_dir is OK.\n"; - } - continue; - } else { - $status = false; - $message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'plugins_dir' ] = $message; - } - continue; - } - } else { - $status = false; - $message = "FAILED: $_plugin_dir does not exist"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'plugins_dir' ] = $message; - } - continue; - } - } - if (!is_dir($plugin_dir)) { - $status = false; - $message = "FAILED: $plugin_dir is not a directory"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'plugins_dir' ] = $message; - } - } elseif (!is_readable($plugin_dir)) { - $status = false; - $message = "FAILED: $plugin_dir is not readable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'plugins_dir' ] = $message; - } - } elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) { - $_core_plugins_available = true; - if ($errors === null) { - echo "$plugin_dir is OK.\n"; - } - } else { - if ($errors === null) { - echo "$plugin_dir is OK.\n"; - } - } - } - if (!$_core_plugins_available) { - $status = false; - $message = "WARNING: Smarty's own libs/plugins is not available"; - if ($errors === null) { - echo $message . ".\n"; - } elseif (!isset($errors[ 'plugins_dir' ])) { - $errors[ 'plugins_dir' ] = $message; - } - } - if ($errors === null) { - echo "Testing cache directory...\n"; - } - // test if all registered cache_dir is accessible - $__cache_dir = $smarty->getCacheDir(); - $_cache_dir = realpath($__cache_dir); - if (!$_cache_dir) { - $status = false; - $message = "FAILED: {$__cache_dir} does not exist"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'cache_dir' ] = $message; - } - } elseif (!is_dir($_cache_dir)) { - $status = false; - $message = "FAILED: {$_cache_dir} is not a directory"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'cache_dir' ] = $message; - } - } elseif (!is_readable($_cache_dir)) { - $status = false; - $message = "FAILED: {$_cache_dir} is not readable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'cache_dir' ] = $message; - } - } elseif (!is_writable($_cache_dir)) { - $status = false; - $message = "FAILED: {$_cache_dir} is not writable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'cache_dir' ] = $message; - } - } else { - if ($errors === null) { - echo "{$_cache_dir} is OK.\n"; - } - } - if ($errors === null) { - echo "Testing configs directory...\n"; - } - // test if all registered config_dir are accessible - foreach ($smarty->getConfigDir() as $config_dir) { - $_config_dir = $config_dir; - // resolve include_path or fail existence - if (!$config_dir) { - if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) { - // try PHP include_path - if ($_stream_resolve_include_path) { - $config_dir = stream_resolve_include_path($_config_dir); - } else { - $config_dir = $smarty->ext->_getIncludePath->getIncludePath($_config_dir, null, $smarty); - } - if ($config_dir !== false) { - if ($errors === null) { - echo "$config_dir is OK.\n"; - } - continue; - } else { - $status = false; - $message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'config_dir' ] = $message; - } - continue; - } - } else { - $status = false; - $message = "FAILED: $_config_dir does not exist"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'config_dir' ] = $message; - } - continue; - } - } - if (!is_dir($config_dir)) { - $status = false; - $message = "FAILED: $config_dir is not a directory"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'config_dir' ] = $message; - } - } elseif (!is_readable($config_dir)) { - $status = false; - $message = "FAILED: $config_dir is not readable"; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'config_dir' ] = $message; - } - } else { - if ($errors === null) { - echo "$config_dir is OK.\n"; - } - } - } - if ($errors === null) { - echo "Testing sysplugin files...\n"; - } - // test if sysplugins are available - $source = SMARTY_SYSPLUGINS_DIR; - if (is_dir($source)) { - $expectedSysplugins = array( - 'smartycompilerexception.php' => true, - 'smartyexception.php' => true, - 'smarty_cacheresource.php' => true, - 'smarty_cacheresource_custom.php' => true, - 'smarty_cacheresource_keyvaluestore.php' => true, - 'smarty_data.php' => true, - 'smarty_internal_block.php' => true, - 'smarty_internal_cacheresource_file.php' => true, - 'smarty_internal_compilebase.php' => true, - 'smarty_internal_compile_append.php' => true, - 'smarty_internal_compile_assign.php' => true, - 'smarty_internal_compile_block.php' => true, - 'smarty_internal_compile_block_child.php' => true, - 'smarty_internal_compile_block_parent.php' => true, - 'smarty_internal_compile_child.php' => true, - 'smarty_internal_compile_parent.php' => true, - 'smarty_internal_compile_break.php' => true, - 'smarty_internal_compile_call.php' => true, - 'smarty_internal_compile_capture.php' => true, - 'smarty_internal_compile_config_load.php' => true, - 'smarty_internal_compile_continue.php' => true, - 'smarty_internal_compile_debug.php' => true, - 'smarty_internal_compile_eval.php' => true, - 'smarty_internal_compile_extends.php' => true, - 'smarty_internal_compile_for.php' => true, - 'smarty_internal_compile_foreach.php' => true, - 'smarty_internal_compile_function.php' => true, - 'smarty_internal_compile_if.php' => true, - 'smarty_internal_compile_include.php' => true, - 'smarty_internal_compile_insert.php' => true, - 'smarty_internal_compile_ldelim.php' => true, - 'smarty_internal_compile_make_nocache.php' => true, - 'smarty_internal_compile_nocache.php' => true, - 'smarty_internal_compile_private_block_plugin.php' => true, - 'smarty_internal_compile_private_foreachsection.php' => true, - 'smarty_internal_compile_private_function_plugin.php' => true, - 'smarty_internal_compile_private_modifier.php' => true, - 'smarty_internal_compile_private_object_block_function.php' => true, - 'smarty_internal_compile_private_object_function.php' => true, - 'smarty_internal_compile_private_print_expression.php' => true, - 'smarty_internal_compile_private_registered_block.php' => true, - 'smarty_internal_compile_private_registered_function.php' => true, - 'smarty_internal_compile_private_special_variable.php' => true, - 'smarty_internal_compile_rdelim.php' => true, - 'smarty_internal_compile_section.php' => true, - 'smarty_internal_compile_setfilter.php' => true, - 'smarty_internal_compile_shared_inheritance.php' => true, - 'smarty_internal_compile_while.php' => true, - 'smarty_internal_configfilelexer.php' => true, - 'smarty_internal_configfileparser.php' => true, - 'smarty_internal_config_file_compiler.php' => true, - 'smarty_internal_data.php' => true, - 'smarty_internal_debug.php' => true, - 'smarty_internal_extension_handler.php' => true, - 'smarty_internal_method_addautoloadfilters.php' => true, - 'smarty_internal_method_adddefaultmodifiers.php' => true, - 'smarty_internal_method_append.php' => true, - 'smarty_internal_method_appendbyref.php' => true, - 'smarty_internal_method_assignbyref.php' => true, - 'smarty_internal_method_assignglobal.php' => true, - 'smarty_internal_method_clearallassign.php' => true, - 'smarty_internal_method_clearallcache.php' => true, - 'smarty_internal_method_clearassign.php' => true, - 'smarty_internal_method_clearcache.php' => true, - 'smarty_internal_method_clearcompiledtemplate.php' => true, - 'smarty_internal_method_clearconfig.php' => true, - 'smarty_internal_method_compileallconfig.php' => true, - 'smarty_internal_method_compilealltemplates.php' => true, - 'smarty_internal_method_configload.php' => true, - 'smarty_internal_method_createdata.php' => true, - 'smarty_internal_method_getautoloadfilters.php' => true, - 'smarty_internal_method_getconfigvariable.php' => true, - 'smarty_internal_method_getconfigvars.php' => true, - 'smarty_internal_method_getdebugtemplate.php' => true, - 'smarty_internal_method_getdefaultmodifiers.php' => true, - 'smarty_internal_method_getglobal.php' => true, - 'smarty_internal_method_getregisteredobject.php' => true, - 'smarty_internal_method_getstreamvariable.php' => true, - 'smarty_internal_method_gettags.php' => true, - 'smarty_internal_method_gettemplatevars.php' => true, - 'smarty_internal_method_literals.php' => true, - 'smarty_internal_method_loadfilter.php' => true, - 'smarty_internal_method_loadplugin.php' => true, - 'smarty_internal_method_mustcompile.php' => true, - 'smarty_internal_method_registercacheresource.php' => true, - 'smarty_internal_method_registerclass.php' => true, - 'smarty_internal_method_registerdefaultconfighandler.php' => true, - 'smarty_internal_method_registerdefaultpluginhandler.php' => true, - 'smarty_internal_method_registerdefaulttemplatehandler.php' => true, - 'smarty_internal_method_registerfilter.php' => true, - 'smarty_internal_method_registerobject.php' => true, - 'smarty_internal_method_registerplugin.php' => true, - 'smarty_internal_method_registerresource.php' => true, - 'smarty_internal_method_setautoloadfilters.php' => true, - 'smarty_internal_method_setdebugtemplate.php' => true, - 'smarty_internal_method_setdefaultmodifiers.php' => true, - 'smarty_internal_method_unloadfilter.php' => true, - 'smarty_internal_method_unregistercacheresource.php' => true, - 'smarty_internal_method_unregisterfilter.php' => true, - 'smarty_internal_method_unregisterobject.php' => true, - 'smarty_internal_method_unregisterplugin.php' => true, - 'smarty_internal_method_unregisterresource.php' => true, - 'smarty_internal_nocache_insert.php' => true, - 'smarty_internal_parsetree.php' => true, - 'smarty_internal_parsetree_code.php' => true, - 'smarty_internal_parsetree_dq.php' => true, - 'smarty_internal_parsetree_dqcontent.php' => true, - 'smarty_internal_parsetree_tag.php' => true, - 'smarty_internal_parsetree_template.php' => true, - 'smarty_internal_parsetree_text.php' => true, - 'smarty_internal_resource_eval.php' => true, - 'smarty_internal_resource_extends.php' => true, - 'smarty_internal_resource_file.php' => true, - 'smarty_internal_resource_php.php' => true, - 'smarty_internal_resource_stream.php' => true, - 'smarty_internal_resource_string.php' => true, - 'smarty_internal_runtime_cachemodify.php' => true, - 'smarty_internal_runtime_cacheresourcefile.php' => true, - 'smarty_internal_runtime_capture.php' => true, - 'smarty_internal_runtime_codeframe.php' => true, - 'smarty_internal_runtime_filterhandler.php' => true, - 'smarty_internal_runtime_foreach.php' => true, - 'smarty_internal_runtime_getincludepath.php' => true, - 'smarty_internal_runtime_inheritance.php' => true, - 'smarty_internal_runtime_make_nocache.php' => true, - 'smarty_internal_runtime_tplfunction.php' => true, - 'smarty_internal_runtime_updatecache.php' => true, - 'smarty_internal_runtime_updatescope.php' => true, - 'smarty_internal_runtime_writefile.php' => true, - 'smarty_internal_smartytemplatecompiler.php' => true, - 'smarty_internal_template.php' => true, - 'smarty_internal_templatebase.php' => true, - 'smarty_internal_templatecompilerbase.php' => true, - 'smarty_internal_templatelexer.php' => true, - 'smarty_internal_templateparser.php' => true, - 'smarty_internal_testinstall.php' => true, - 'smarty_internal_undefined.php' => true, - 'smarty_resource.php' => true, - 'smarty_resource_custom.php' => true, - 'smarty_resource_recompiled.php' => true, - 'smarty_resource_uncompiled.php' => true, - 'smarty_security.php' => true, - 'smarty_template_cached.php' => true, - 'smarty_template_compiled.php' => true, - 'smarty_template_config.php' => true, - 'smarty_template_resource_base.php' => true, - 'smarty_template_source.php' => true, - 'smarty_undefined_variable.php' => true, - 'smarty_variable.php' => true, - ); - $iterator = new DirectoryIterator($source); - foreach ($iterator as $file) { - if (!$file->isDot()) { - $filename = $file->getFilename(); - if (isset($expectedSysplugins[ $filename ])) { - unset($expectedSysplugins[ $filename ]); - } - } - } - if ($expectedSysplugins) { - $status = false; - $message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expectedSysplugins)); - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'sysplugins' ] = $message; - } - } elseif ($errors === null) { - echo "... OK\n"; - } - } else { - $status = false; - $message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory'; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'sysplugins_dir_constant' ] = $message; - } - } - if ($errors === null) { - echo "Testing plugin files...\n"; - } - // test if core plugins are available - $source = SMARTY_PLUGINS_DIR; - if (is_dir($source)) { - $expectedPlugins = array( - 'block.textformat.php' => true, - 'function.counter.php' => true, - 'function.cycle.php' => true, - 'function.fetch.php' => true, - 'function.html_checkboxes.php' => true, - 'function.html_image.php' => true, - 'function.html_options.php' => true, - 'function.html_radios.php' => true, - 'function.html_select_date.php' => true, - 'function.html_select_time.php' => true, - 'function.html_table.php' => true, - 'function.mailto.php' => true, - 'function.math.php' => true, - 'modifier.capitalize.php' => true, - 'modifier.date_format.php' => true, - 'modifier.debug_print_var.php' => true, - 'modifier.escape.php' => true, - 'modifier.mb_wordwrap.php' => true, - 'modifier.regex_replace.php' => true, - 'modifier.replace.php' => true, - 'modifier.spacify.php' => true, - 'modifier.truncate.php' => true, - 'modifiercompiler.cat.php' => true, - 'modifiercompiler.count_characters.php' => true, - 'modifiercompiler.count_paragraphs.php' => true, - 'modifiercompiler.count_sentences.php' => true, - 'modifiercompiler.count_words.php' => true, - 'modifiercompiler.default.php' => true, - 'modifiercompiler.escape.php' => true, - 'modifiercompiler.from_charset.php' => true, - 'modifiercompiler.indent.php' => true, - 'modifiercompiler.lower.php' => true, - 'modifiercompiler.noprint.php' => true, - 'modifiercompiler.string_format.php' => true, - 'modifiercompiler.strip.php' => true, - 'modifiercompiler.strip_tags.php' => true, - 'modifiercompiler.to_charset.php' => true, - 'modifiercompiler.unescape.php' => true, - 'modifiercompiler.upper.php' => true, - 'modifiercompiler.wordwrap.php' => true, - 'outputfilter.trimwhitespace.php' => true, - 'shared.escape_special_chars.php' => true, - 'shared.literal_compiler_param.php' => true, - 'shared.make_timestamp.php' => true, - 'shared.mb_str_replace.php' => true, - 'shared.mb_unicode.php' => true, - 'variablefilter.htmlspecialchars.php' => true, - ); - $iterator = new DirectoryIterator($source); - foreach ($iterator as $file) { - if (!$file->isDot()) { - $filename = $file->getFilename(); - if (isset($expectedPlugins[ $filename ])) { - unset($expectedPlugins[ $filename ]); - } - } - } - if ($expectedPlugins) { - $status = false; - $message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expectedPlugins)); - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'plugins' ] = $message; - } - } elseif ($errors === null) { - echo "... OK\n"; - } - } else { - $status = false; - $message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory'; - if ($errors === null) { - echo $message . ".\n"; - } else { - $errors[ 'plugins_dir_constant' ] = $message; - } - } - if ($errors === null) { - echo "Tests complete.\n"; - echo "</PRE>\n"; - } - return $status; - } -} diff --git a/libs/sysplugins/smarty_internal_undefined.php b/libs/sysplugins/smarty_internal_undefined.php deleted file mode 100644 index 7df0acc2..00000000 --- a/libs/sysplugins/smarty_internal_undefined.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -/** - * Smarty Internal Undefined - * - * Class to handle undefined method calls or calls to obsolete runtime extensions - * - * @package Smarty - * @subpackage PluginsInternal - * @author Uwe Tews - */ -class Smarty_Internal_Undefined -{ - /** - * Name of undefined extension class - * - * @var string|null - */ - public $class = null; - - /** - * Smarty_Internal_Undefined constructor. - * - * @param null|string $class name of undefined extension class - */ - public function __construct($class = null) - { - $this->class = $class; - } - - /** - * Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled - * - * @param \Smarty_Internal_Template $tpl - * @param array $properties special template properties - * @param bool $cache flag if called from cache file - * - * @return bool false - */ - public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false) - { - if ($cache) { - $tpl->cached->valid = false; - } else { - $tpl->mustCompile = true; - } - return false; - } - - /** - * Call error handler for undefined method - * - * @param string $name unknown method-name - * @param array $args argument array - * - * @return mixed - * @throws SmartyException - */ - public function __call($name, $args) - { - if (isset($this->class)) { - throw new SmartyException("undefined extension class '{$this->class}'"); - } else { - throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method"); - } - } -} diff --git a/libs/sysplugins/smarty_resource.php b/libs/sysplugins/smarty_resource.php deleted file mode 100644 index 3c43a9f4..00000000 --- a/libs/sysplugins/smarty_resource.php +++ /dev/null @@ -1,260 +0,0 @@ -<?php -/** - * Smarty Resource Plugin - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ - -/** - * Smarty Resource Plugin - * Base implementation for resource plugins - * - * @package Smarty - * @subpackage TemplateResources - * - * @method renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template) - * @method populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) - * @method process(Smarty_Internal_Template $_smarty_tpl) - */ -abstract class Smarty_Resource -{ - /** - * resource types provided by the core - * - * @var array - */ - public static $sysplugins = array( - 'file' => 'smarty_internal_resource_file.php', - 'string' => 'smarty_internal_resource_string.php', - 'extends' => 'smarty_internal_resource_extends.php', - 'stream' => 'smarty_internal_resource_stream.php', - 'eval' => 'smarty_internal_resource_eval.php', - 'php' => 'smarty_internal_resource_php.php' - ); - - /** - * Source is bypassing compiler - * - * @var boolean - */ - public $uncompiled = false; - - /** - * Source must be recompiled on every occasion - * - * @var boolean - */ - public $recompiled = false; - - /** - * Flag if resource does implement populateCompiledFilepath() method - * - * @var bool - */ - public $hasCompiledHandler = false; - - /** - * Load Resource Handler - * - * @param Smarty $smarty smarty object - * @param string $type name of the resource - * - * @throws SmartyException - * @return Smarty_Resource Resource Handler - */ - public static function load(Smarty $smarty, $type) - { - // try smarty's cache - if (isset($smarty->_cache[ 'resource_handlers' ][ $type ])) { - return $smarty->_cache[ 'resource_handlers' ][ $type ]; - } - // try registered resource - if (isset($smarty->registered_resources[ $type ])) { - return $smarty->_cache[ 'resource_handlers' ][ $type ] = $smarty->registered_resources[ $type ]; - } - // try sysplugins dir - if (isset(self::$sysplugins[ $type ])) { - $_resource_class = 'Smarty_Internal_Resource_' . smarty_ucfirst_ascii($type); - return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class(); - } - // try plugins dir - $_resource_class = 'Smarty_Resource_' . smarty_ucfirst_ascii($type); - if ($smarty->loadPlugin($_resource_class)) { - if (class_exists($_resource_class, false)) { - return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class(); - } else { - $smarty->registerResource( - $type, - array( - "smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp", - "smarty_resource_{$type}_secure", "smarty_resource_{$type}_trusted" - ) - ); - // give it another try, now that the resource is registered properly - return self::load($smarty, $type); - } - } - // try streams - $_known_stream = stream_get_wrappers(); - if (in_array($type, $_known_stream)) { - // is known stream - if (is_object($smarty->security_policy)) { - $smarty->security_policy->isTrustedStream($type); - } - return $smarty->_cache[ 'resource_handlers' ][ $type ] = new Smarty_Internal_Resource_Stream(); - } - // TODO: try default_(template|config)_handler - // give up - throw new SmartyException("Unknown resource type '{$type}'"); - } - - /** - * extract resource_type and resource_name from template_resource and config_resource - * - * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including). - * - * @param string $resource_name template_resource or config_resource to parse - * @param string $default_resource the default resource_type defined in $smarty - * - * @return array with parsed resource name and type - */ - public static function parseResourceName($resource_name, $default_resource) - { - if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) { - $type = $match[ 1 ]; - $name = substr($resource_name, strlen($match[ 0 ])); - } else { - // no resource given, use default - // or single character before the colon is not a resource type, but part of the filepath - $type = $default_resource; - $name = $resource_name; - } - return array($name, $type); - } - - /** - * modify template_resource according to resource handlers specifications - * - * @param \Smarty_Internal_Template|\Smarty $obj Smarty instance - * @param string $template_resource template_resource to extract resource handler and - * name of - * - * @return string unique resource name - * @throws \SmartyException - */ - public static function getUniqueTemplateName($obj, $template_resource) - { - $smarty = $obj->_getSmartyObj(); - list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type); - // TODO: optimize for Smarty's internal resource types - $resource = Smarty_Resource::load($smarty, $type); - // go relative to a given template? - $_file_is_dotted = $name[ 0 ] === '.' && ($name[ 1 ] === '.' || $name[ 1 ] === '/'); - if ($obj->_isTplObj() && $_file_is_dotted - && ($obj->source->type === 'file' || $obj->parent->source->type === 'extends') - ) { - $name = $smarty->_realpath(dirname($obj->parent->source->filepath) . DIRECTORY_SEPARATOR . $name); - } - return $resource->buildUniqueResourceName($smarty, $name); - } - - /** - * initialize Source Object for given resource - * wrapper for backward compatibility to versions < 3.1.22 - * Either [$_template] or [$smarty, $template_resource] must be specified - * - * @param Smarty_Internal_Template $_template template object - * @param Smarty $smarty smarty object - * @param string $template_resource resource identifier - * - * @return \Smarty_Template_Source Source Object - * @throws \SmartyException - */ - public static function source( - Smarty_Internal_Template $_template = null, - Smarty $smarty = null, - $template_resource = null - ) { - return Smarty_Template_Source::load($_template, $smarty, $template_resource); - } - - /** - * Load template's source into current template object - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - * @throws SmartyException if source cannot be loaded - */ - abstract public function getContent(Smarty_Template_Source $source); - - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - */ - abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null); - - /** - * populate Source Object with timestamp and exists from Resource - * - * @param Smarty_Template_Source $source source object - */ - public function populateTimestamp(Smarty_Template_Source $source) - { - // intentionally left blank - } - - /** - * modify resource_name according to resource handlers specifications - * - * @param Smarty $smarty Smarty instance - * @param string $resource_name resource_name to make unique - * @param boolean $isConfig flag for config resource - * - * @return string unique resource name - */ - public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) - { - if ($isConfig) { - if (!isset($smarty->_joined_config_dir)) { - $smarty->getTemplateDir(null, true); - } - return get_class($this) . '#' . $smarty->_joined_config_dir . '#' . $resource_name; - } else { - if (!isset($smarty->_joined_template_dir)) { - $smarty->getTemplateDir(); - } - return get_class($this) . '#' . $smarty->_joined_template_dir . '#' . $resource_name; - } - } - - /* - * Check if resource must check time stamps when when loading complied or cached templates. - * Resources like 'extends' which use source components my disable timestamp checks on own resource. - * - * @return bool - */ - /** - * Determine basename for compiled filename - * - * @param Smarty_Template_Source $source source object - * - * @return string resource's basename - */ - public function getBasename(Smarty_Template_Source $source) - { - return basename(preg_replace('![^\w]+!', '_', $source->name)); - } - - /** - * @return bool - */ - public function checkTimestamps() - { - return true; - } -} diff --git a/libs/sysplugins/smarty_resource_custom.php b/libs/sysplugins/smarty_resource_custom.php deleted file mode 100644 index 191fa7c9..00000000 --- a/libs/sysplugins/smarty_resource_custom.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -/** - * Smarty Resource Plugin - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ - -/** - * Smarty Resource Plugin - * Wrapper Implementation for custom resource plugins - * - * @package Smarty - * @subpackage TemplateResources - */ -abstract class Smarty_Resource_Custom extends Smarty_Resource -{ - /** - * fetch template and its modification time from data source - * - * @param string $name template name - * @param string &$source template source - * @param integer &$mtime template modification timestamp (epoch) - */ - abstract protected function fetch($name, &$source, &$mtime); - - /** - * Fetch template's modification timestamp from data source - * {@internal implementing this method is optional. - * Only implement it if modification times can be accessed faster than loading the complete template source.}} - * - * @param string $name template name - * - * @return integer|boolean timestamp (epoch) the template was modified, or false if not found - */ - protected function fetchTimestamp($name) - { - return null; - } - - /** - * populate Source Object with meta data from Resource - * - * @param Smarty_Template_Source $source source object - * @param Smarty_Internal_Template $_template template object - */ - public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) - { - $source->filepath = $source->type . ':' . $this->generateSafeName($source->name); - $source->uid = sha1($source->type . ':' . $source->name); - $mtime = $this->fetchTimestamp($source->name); - if ($mtime !== null) { - $source->timestamp = $mtime; - } else { - $this->fetch($source->name, $content, $timestamp); - $source->timestamp = isset($timestamp) ? $timestamp : false; - if (isset($content)) { - $source->content = $content; - } - } - $source->exists = !!$source->timestamp; - } - - /** - * Load template's source into current template object - * - * @param Smarty_Template_Source $source source object - * - * @return string template source - * @throws SmartyException if source cannot be loaded - */ - public function getContent(Smarty_Template_Source $source) - { - $this->fetch($source->name, $content, $timestamp); - if (isset($content)) { - return $content; - } - throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); - } - - /** - * Determine basename for compiled filename - * - * @param Smarty_Template_Source $source source object - * - * @return string resource's basename - */ - public function getBasename(Smarty_Template_Source $source) - { - return basename($this->generateSafeName($source->name)); - } - - /** - * Removes special characters from $name and limits its length to 127 characters. - * - * @param $name - * - * @return string - */ - private function generateSafeName($name): string { - return substr(preg_replace('/[^A-Za-z0-9._]/', '', (string) $name), 0, 127); - } -} diff --git a/libs/sysplugins/smarty_resource_recompiled.php b/libs/sysplugins/smarty_resource_recompiled.php deleted file mode 100644 index 760c4dd3..00000000 --- a/libs/sysplugins/smarty_resource_recompiled.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * Smarty Resource Plugin - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ - -/** - * Smarty Resource Plugin - * Base implementation for resource plugins that don't compile cache - * - * @package Smarty - * @subpackage TemplateResources - */ -abstract class Smarty_Resource_Recompiled extends Smarty_Resource -{ - /** - * Flag that it's an recompiled resource - * - * @var bool - */ - public $recompiled = true; - - /** - * Resource does implement populateCompiledFilepath() method - * - * @var bool - */ - public $hasCompiledHandler = true; - - /** - * compile template from source - * - * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template - * - * @throws Exception - */ - public function process(Smarty_Internal_Template $_smarty_tpl) - { - $compiled = &$_smarty_tpl->compiled; - $compiled->file_dependency = array(); - $compiled->includes = array(); - $compiled->nocache_hash = null; - $compiled->unifunc = null; - $level = ob_get_level(); - ob_start(); - $_smarty_tpl->loadCompiler(); - // call compiler - try { - eval('?>' . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl)); - } catch (Exception $e) { - unset($_smarty_tpl->compiler); - while (ob_get_level() > $level) { - ob_end_clean(); - } - throw $e; - } - // release compiler object to free memory - unset($_smarty_tpl->compiler); - ob_get_clean(); - $compiled->timestamp = time(); - $compiled->exists = true; - } - - /** - * populate Compiled Object with compiled filepath - * - * @param Smarty_Template_Compiled $compiled compiled object - * @param Smarty_Internal_Template $_template template object - * - * @return void - */ - public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) - { - $compiled->filepath = false; - $compiled->timestamp = false; - $compiled->exists = false; - } - - /* - * Disable timestamp checks for recompiled resource. - * - * @return bool - */ - /** - * @return bool - */ - public function checkTimestamps() - { - return false; - } -} diff --git a/libs/sysplugins/smarty_resource_uncompiled.php b/libs/sysplugins/smarty_resource_uncompiled.php deleted file mode 100644 index a11e2c14..00000000 --- a/libs/sysplugins/smarty_resource_uncompiled.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -/** - * Smarty Resource Plugin - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ - -/** - * Smarty Resource Plugin - * Base implementation for resource plugins that don't use the compiler - * - * @package Smarty - * @subpackage TemplateResources - */ -abstract class Smarty_Resource_Uncompiled extends Smarty_Resource -{ - /** - * Flag that it's an uncompiled resource - * - * @var bool - */ - public $uncompiled = true; - - /** - * Resource does implement populateCompiledFilepath() method - * - * @var bool - */ - public $hasCompiledHandler = true; - - /** - * populate compiled object with compiled filepath - * - * @param Smarty_Template_Compiled $compiled compiled object - * @param Smarty_Internal_Template $_template template object - */ - public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) - { - $compiled->filepath = $_template->source->filepath; - $compiled->timestamp = $_template->source->timestamp; - $compiled->exists = $_template->source->exists; - if ($_template->smarty->merge_compiled_includes || $_template->source->handler->checkTimestamps()) { - $compiled->file_dependency[ $_template->source->uid ] = - array($compiled->filepath, $compiled->timestamp, $_template->source->type,); - } - } -} diff --git a/libs/sysplugins/smarty_security.php b/libs/sysplugins/smarty_security.php deleted file mode 100644 index 97cd0521..00000000 --- a/libs/sysplugins/smarty_security.php +++ /dev/null @@ -1,680 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage Security - * @author Uwe Tews - */ -/** - * FIXME: Smarty_Security API - * - getter and setter instead of public properties would allow cultivating an internal cache properly - * - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir - * are immutable the cache is killed every time either of the variables change. That means that two distinct - * Smarty objects with differing - * $template_dir or $config_dir should NOT share the same Smarty_Security instance, - * as this would lead to (severe) performance penalty! how should this be handled? - */ - -/** - * This class does contain the security settings - */ -#[\AllowDynamicProperties] -class Smarty_Security -{ - - /** - * This is the list of template directories that are considered secure. - * $template_dir is in this list implicitly. - * - * @var array - */ - public $secure_dir = array(); - - /** - * This is an array of directories where trusted php scripts reside. - * {@link $security} is disabled during their inclusion/execution. - * - * @var array - */ - public $trusted_dir = array(); - - /** - * List of regular expressions (PCRE) that include trusted URIs - * - * @var array - */ - public $trusted_uri = array(); - - /** - * List of trusted constants names - * - * @var array - */ - public $trusted_constants = array(); - - /** - * This is an array of trusted static classes. - * If empty access to all static classes is allowed. - * If set to 'none' none is allowed. - * - * @var array - */ - public $static_classes = array(); - - /** - * This is an nested array of trusted classes and static methods. - * If empty access to all static classes and methods is allowed. - * Format: - * array ( - * 'class_1' => array('method_1', 'method_2'), // allowed methods listed - * 'class_2' => array(), // all methods of class allowed - * ) - * If set to null none is allowed. - * - * @var array - */ - public $trusted_static_methods = array(); - - /** - * This is an array of trusted static properties. - * If empty access to all static classes and properties is allowed. - * Format: - * array ( - * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed - * 'class_2' => array(), // all properties of class allowed - * ) - * If set to null none is allowed. - * - * @var array - */ - public $trusted_static_properties = array(); - - /** - * This is an array of trusted PHP functions. - * If empty all functions are allowed. - * To disable all PHP functions set $php_functions = null. - * - * @var array - */ - public $php_functions = array('isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array', 'time',); - - /** - * This is an array of trusted PHP modifiers. - * If empty all modifiers are allowed. - * To disable all modifier set $php_modifiers = null. - * - * @var array - */ - public $php_modifiers = array('escape', 'count', 'sizeof', 'nl2br',); - - /** - * This is an array of allowed tags. - * If empty no restriction by allowed_tags. - * - * @var array - */ - public $allowed_tags = array(); - - /** - * This is an array of disabled tags. - * If empty no restriction by disabled_tags. - * - * @var array - */ - public $disabled_tags = array(); - - /** - * This is an array of allowed modifier plugins. - * If empty no restriction by allowed_modifiers. - * - * @var array - */ - public $allowed_modifiers = array(); - - /** - * This is an array of disabled modifier plugins. - * If empty no restriction by disabled_modifiers. - * - * @var array - */ - public $disabled_modifiers = array(); - - /** - * This is an array of disabled special $smarty variables. - * - * @var array - */ - public $disabled_special_smarty_vars = array(); - - /** - * This is an array of trusted streams. - * If empty all streams are allowed. - * To disable all streams set $streams = null. - * - * @var array - */ - public $streams = array('file'); - - /** - * + flag if constants can be accessed from template - * - * @var boolean - */ - public $allow_constants = true; - - /** - * + flag if super globals can be accessed from template - * - * @var boolean - */ - public $allow_super_globals = true; - - /** - * max template nesting level - * - * @var int - */ - public $max_template_nesting = 0; - - /** - * current template nesting level - * - * @var int - */ - private $_current_template_nesting = 0; - - /** - * Cache for $resource_dir lookup - * - * @var array - */ - protected $_resource_dir = array(); - - /** - * Cache for $template_dir lookup - * - * @var array - */ - protected $_template_dir = array(); - - /** - * Cache for $config_dir lookup - * - * @var array - */ - protected $_config_dir = array(); - - /** - * Cache for $secure_dir lookup - * - * @var array - */ - protected $_secure_dir = array(); - - /** - * Cache for $php_resource_dir lookup - * - * @var array - */ - protected $_php_resource_dir = null; - - /** - * Cache for $trusted_dir lookup - * - * @var array - */ - protected $_trusted_dir = null; - - /** - * Cache for include path status - * - * @var bool - */ - protected $_include_path_status = false; - - /** - * Cache for $_include_array lookup - * - * @var array - */ - protected $_include_dir = array(); - - /** - * @param Smarty $smarty - */ - public function __construct($smarty) - { - $this->smarty = $smarty; - } - - /** - * Check if PHP function is trusted. - * - * @param string $function_name - * @param object $compiler compiler object - * - * @return boolean true if function is trusted - */ - public function isTrustedPhpFunction($function_name, $compiler) - { - if (isset($this->php_functions) - && (empty($this->php_functions) || in_array($function_name, $this->php_functions)) - ) { - return true; - } - $compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting"); - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if static class is trusted. - * - * @param string $class_name - * @param object $compiler compiler object - * - * @return boolean true if class is trusted - */ - public function isTrustedStaticClass($class_name, $compiler) - { - if (isset($this->static_classes) - && (empty($this->static_classes) || in_array($class_name, $this->static_classes)) - ) { - return true; - } - $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting"); - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if static class method/property is trusted. - * - * @param string $class_name - * @param string $params - * @param object $compiler compiler object - * - * @return boolean true if class method is trusted - */ - public function isTrustedStaticClassAccess($class_name, $params, $compiler) - { - if (!isset($params[ 2 ])) { - // fall back - return $this->isTrustedStaticClass($class_name, $compiler); - } - if ($params[ 2 ] === 'method') { - $allowed = $this->trusted_static_methods; - $name = substr($params[ 0 ], 0, strpos($params[ 0 ], '(')); - } else { - $allowed = $this->trusted_static_properties; - // strip '$' - $name = substr($params[ 0 ], 1); - } - if (isset($allowed)) { - if (empty($allowed)) { - // fall back - return $this->isTrustedStaticClass($class_name, $compiler); - } - if (isset($allowed[ $class_name ]) - && (empty($allowed[ $class_name ]) || in_array($name, $allowed[ $class_name ])) - ) { - return true; - } - } - $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting"); - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if PHP modifier is trusted. - * - * @param string $modifier_name - * @param object $compiler compiler object - * @deprecated - * @return boolean true if modifier is trusted - */ - public function isTrustedPhpModifier($modifier_name, $compiler) - { - if (isset($this->php_modifiers) - && (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers)) - ) { - return true; - } - $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting"); - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if tag is trusted. - * - * @param string $tag_name - * @param object $compiler compiler object - * - * @return boolean true if tag is trusted - */ - public function isTrustedTag($tag_name, $compiler) - { - // check for internal always required tags - if (in_array( - $tag_name, - array( - 'assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin', - 'private_object_block_function', 'private_object_function', 'private_registered_function', - 'private_registered_block', 'private_special_variable', 'private_print_expression', - 'private_modifier' - ) - ) - ) { - return true; - } - // check security settings - if (empty($this->allowed_tags)) { - if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) { - return true; - } else { - $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true); - } - } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) { - return true; - } else { - $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true); - } - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if special $smarty variable is trusted. - * - * @param string $var_name - * @param object $compiler compiler object - * - * @return boolean true if tag is trusted - */ - public function isTrustedSpecialSmartyVar($var_name, $compiler) - { - if (!in_array($var_name, $this->disabled_special_smarty_vars)) { - return true; - } else { - $compiler->trigger_template_error( - "special variable '\$smarty.{$var_name}' not allowed by security setting", - null, - true - ); - } - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if modifier plugin is trusted. - * - * @param string $modifier_name - * @param object $compiler compiler object - * - * @return boolean true if tag is trusted - */ - public function isTrustedModifier($modifier_name, $compiler) - { - // check for internal always allowed modifier - if (in_array($modifier_name, array('default'))) { - return true; - } - // check security settings - if (empty($this->allowed_modifiers)) { - if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) { - return true; - } else { - $compiler->trigger_template_error( - "modifier '{$modifier_name}' disabled by security setting", - null, - true - ); - } - } elseif (in_array($modifier_name, $this->allowed_modifiers) - && !in_array($modifier_name, $this->disabled_modifiers) - ) { - return true; - } else { - $compiler->trigger_template_error( - "modifier '{$modifier_name}' not allowed by security setting", - null, - true - ); - } - return false; // should not, but who knows what happens to the compiler in the future? - } - - /** - * Check if constants are enabled or trusted - * - * @param string $const constant name - * @param object $compiler compiler object - * - * @return bool - */ - public function isTrustedConstant($const, $compiler) - { - if (in_array($const, array('true', 'false', 'null'))) { - return true; - } - if (!empty($this->trusted_constants)) { - if (!in_array(strtolower($const), $this->trusted_constants)) { - $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted"); - return false; - } - return true; - } - if ($this->allow_constants) { - return true; - } - $compiler->trigger_template_error("Security: access to constants not permitted"); - return false; - } - - /** - * Check if stream is trusted. - * - * @param string $stream_name - * - * @return boolean true if stream is trusted - * @throws SmartyException if stream is not trusted - */ - public function isTrustedStream($stream_name) - { - if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) { - return true; - } - throw new SmartyException("stream '{$stream_name}' not allowed by security setting"); - } - - /** - * Check if directory of file resource is trusted. - * - * @param string $filepath - * @param null|bool $isConfig - * - * @return bool true if directory is trusted - * @throws \SmartyException if directory is not trusted - */ - public function isTrustedResourceDir($filepath, $isConfig = null) - { - if ($this->_include_path_status !== $this->smarty->use_include_path) { - $_dir = - $this->smarty->use_include_path ? $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty) : array(); - if ($this->_include_dir !== $_dir) { - $this->_updateResourceDir($this->_include_dir, $_dir); - $this->_include_dir = $_dir; - } - $this->_include_path_status = $this->smarty->use_include_path; - } - $_dir = $this->smarty->getTemplateDir(); - if ($this->_template_dir !== $_dir) { - $this->_updateResourceDir($this->_template_dir, $_dir); - $this->_template_dir = $_dir; - } - $_dir = $this->smarty->getConfigDir(); - if ($this->_config_dir !== $_dir) { - $this->_updateResourceDir($this->_config_dir, $_dir); - $this->_config_dir = $_dir; - } - if ($this->_secure_dir !== $this->secure_dir) { - $this->secure_dir = (array)$this->secure_dir; - foreach ($this->secure_dir as $k => $d) { - $this->secure_dir[ $k ] = $this->smarty->_realpath($d . DIRECTORY_SEPARATOR, true); - } - $this->_updateResourceDir($this->_secure_dir, $this->secure_dir); - $this->_secure_dir = $this->secure_dir; - } - $addPath = $this->_checkDir($filepath, $this->_resource_dir); - if ($addPath !== false) { - $this->_resource_dir = array_merge($this->_resource_dir, $addPath); - } - return true; - } - - /** - * Check if URI (e.g. {fetch} or {html_image}) is trusted - * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}". - * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string" - * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}. - * - * @param string $uri - * - * @return boolean true if URI is trusted - * @throws SmartyException if URI is not trusted - * @uses $trusted_uri for list of patterns to match against $uri - */ - public function isTrustedUri($uri) - { - $_uri = parse_url($uri); - if (!empty($_uri[ 'scheme' ]) && !empty($_uri[ 'host' ])) { - $_uri = $_uri[ 'scheme' ] . '://' . $_uri[ 'host' ]; - foreach ($this->trusted_uri as $pattern) { - if (preg_match($pattern, $_uri)) { - return true; - } - } - } - throw new SmartyException("URI '{$uri}' not allowed by security setting"); - } - - /** - * Remove old directories and its sub folders, add new directories - * - * @param array $oldDir - * @param array $newDir - */ - private function _updateResourceDir($oldDir, $newDir) - { - foreach ($oldDir as $directory) { - // $directory = $this->smarty->_realpath($directory, true); - $length = strlen($directory); - foreach ($this->_resource_dir as $dir) { - if (substr($dir, 0, $length) === $directory) { - unset($this->_resource_dir[ $dir ]); - } - } - } - foreach ($newDir as $directory) { - // $directory = $this->smarty->_realpath($directory, true); - $this->_resource_dir[ $directory ] = true; - } - } - - /** - * Check if file is inside a valid directory - * - * @param string $filepath - * @param array $dirs valid directories - * - * @return array|bool - * @throws \SmartyException - */ - private function _checkDir($filepath, $dirs) - { - $directory = dirname($this->smarty->_realpath($filepath, true)) . DIRECTORY_SEPARATOR; - $_directory = array(); - if (!preg_match('#[\\\\/][.][.][\\\\/]#', $directory)) { - while (true) { - // test if the directory is trusted - if (isset($dirs[ $directory ])) { - return $_directory; - } - // abort if we've reached root - if (!preg_match('#[\\\\/][^\\\\/]+[\\\\/]$#', $directory)) { - // give up - break; - } - // remember the directory to add it to _resource_dir in case we're successful - $_directory[ $directory ] = true; - // bubble up one level - $directory = preg_replace('#[\\\\/][^\\\\/]+[\\\\/]$#', DIRECTORY_SEPARATOR, $directory); - } - } - // give up - throw new SmartyException(sprintf('Smarty Security: not trusted file path \'%s\' ', $filepath)); - } - - /** - * Loads security class and enables security - * - * @param \Smarty $smarty - * @param string|Smarty_Security $security_class if a string is used, it must be class-name - * - * @return \Smarty current Smarty instance for chaining - * @throws \SmartyException when an invalid class name is provided - */ - public static function enableSecurity(Smarty $smarty, $security_class) - { - if ($security_class instanceof Smarty_Security) { - $smarty->security_policy = $security_class; - return $smarty; - } elseif (is_object($security_class)) { - throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security."); - } - if ($security_class === null) { - $security_class = $smarty->security_class; - } - if (!class_exists($security_class)) { - throw new SmartyException("Security class '$security_class' is not defined"); - } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) { - throw new SmartyException("Class '$security_class' must extend Smarty_Security."); - } else { - $smarty->security_policy = new $security_class($smarty); - } - return $smarty; - } - - /** - * Start template processing - * - * @param $template - * - * @throws SmartyException - */ - public function startTemplate($template) - { - if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) { - throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'"); - } - } - - /** - * Exit template processing - */ - public function endTemplate() - { - if ($this->max_template_nesting > 0) { - $this->_current_template_nesting--; - } - } - - /** - * Register callback functions call at start/end of template rendering - * - * @param \Smarty_Internal_Template $template - */ - public function registerCallBacks(Smarty_Internal_Template $template) - { - $template->startRenderCallbacks[] = array($this, 'startTemplate'); - $template->endRenderCallbacks[] = array($this, 'endTemplate'); - } -} diff --git a/libs/sysplugins/smarty_template_cached.php b/libs/sysplugins/smarty_template_cached.php deleted file mode 100644 index 508d27f3..00000000 --- a/libs/sysplugins/smarty_template_cached.php +++ /dev/null @@ -1,257 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Uwe Tews - * Date: 04.12.2014 - * Time: 06:08 - */ - -/** - * Smarty Resource Data Object - * Cache Data Container for Template Files - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ -class Smarty_Template_Cached extends Smarty_Template_Resource_Base -{ - /** - * Cache Is Valid - * - * @var boolean - */ - public $valid = null; - - /** - * CacheResource Handler - * - * @var Smarty_CacheResource - */ - public $handler = null; - - /** - * Template Cache Id (Smarty_Internal_Template::$cache_id) - * - * @var string - */ - public $cache_id = null; - - /** - * saved cache lifetime in seconds - * - * @var integer - */ - public $cache_lifetime = 0; - - /** - * Id for cache locking - * - * @var string - */ - public $lock_id = null; - - /** - * flag that cache is locked by this instance - * - * @var bool - */ - public $is_locked = false; - - /** - * Source Object - * - * @var Smarty_Template_Source - */ - public $source = null; - - /** - * Nocache hash codes of processed compiled templates - * - * @var array - */ - public $hashes = array(); - - /** - * Flag if this is a cache resource - * - * @var bool - */ - public $isCache = true; - - /** - * create Cached Object container - * - * @param Smarty_Internal_Template $_template template object - * - * @throws \SmartyException - */ - public function __construct(Smarty_Internal_Template $_template) - { - $this->compile_id = $_template->compile_id; - $this->cache_id = $_template->cache_id; - $this->source = $_template->source; - if (!class_exists('Smarty_CacheResource', false)) { - include SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php'; - } - $this->handler = Smarty_CacheResource::load($_template->smarty); - } - - /** - * @param Smarty_Internal_Template $_template - * - * @return Smarty_Template_Cached - */ - public static function load(Smarty_Internal_Template $_template) - { - $_template->cached = new Smarty_Template_Cached($_template); - $_template->cached->handler->populate($_template->cached, $_template); - // caching enabled ? - if (!$_template->caching || $_template->source->handler->recompiled - ) { - $_template->cached->valid = false; - } - return $_template->cached; - } - - /** - * Render cache template - * - * @param \Smarty_Internal_Template $_template - * @param bool $no_output_filter - * - * @throws \Exception - */ - public function render(Smarty_Internal_Template $_template, $no_output_filter = true) - { - if ($this->isCached($_template)) { - if ($_template->smarty->debugging) { - if (!isset($_template->smarty->_debug)) { - $_template->smarty->_debug = new Smarty_Internal_Debug(); - } - $_template->smarty->_debug->start_cache($_template); - } - if (!$this->processed) { - $this->process($_template); - } - $this->getRenderedTemplateCode($_template); - if ($_template->smarty->debugging) { - $_template->smarty->_debug->end_cache($_template); - } - return; - } else { - $_template->smarty->ext->_updateCache->updateCache($this, $_template, $no_output_filter); - } - } - - /** - * Check if cache is valid, lock cache if required - * - * @param \Smarty_Internal_Template $_template - * - * @return bool flag true if cache is valid - */ - public function isCached(Smarty_Internal_Template $_template) - { - if ($this->valid !== null) { - return $this->valid; - } - while (true) { - while (true) { - if ($this->exists === false || $_template->smarty->force_compile || $_template->smarty->force_cache) { - $this->valid = false; - } else { - $this->valid = true; - } - if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_CURRENT - && $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime) - ) { - // lifetime expired - $this->valid = false; - } - if ($this->valid && $_template->compile_check === Smarty::COMPILECHECK_ON - && $_template->source->getTimeStamp() > $this->timestamp - ) { - $this->valid = false; - } - if ($this->valid || !$_template->smarty->cache_locking) { - break; - } - if (!$this->handler->locked($_template->smarty, $this)) { - $this->handler->acquireLock($_template->smarty, $this); - break 2; - } - $this->handler->populate($this, $_template); - } - if ($this->valid) { - if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) { - // load cache file for the following checks - if ($_template->smarty->debugging) { - $_template->smarty->_debug->start_cache($_template); - } - if ($this->handler->process($_template, $this) === false) { - $this->valid = false; - } else { - $this->processed = true; - } - if ($_template->smarty->debugging) { - $_template->smarty->_debug->end_cache($_template); - } - } else { - $this->is_locked = true; - continue; - } - } else { - return $this->valid; - } - if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED - && $_template->cached->cache_lifetime >= 0 - && (time() > ($_template->cached->timestamp + $_template->cached->cache_lifetime)) - ) { - $this->valid = false; - } - if ($_template->smarty->cache_locking) { - if (!$this->valid) { - $this->handler->acquireLock($_template->smarty, $this); - } elseif ($this->is_locked) { - $this->handler->releaseLock($_template->smarty, $this); - } - } - return $this->valid; - } - return $this->valid; - } - - /** - * Process cached template - * - * @param Smarty_Internal_Template $_template template object - * @param bool $update flag if called because cache update - */ - public function process(Smarty_Internal_Template $_template, $update = false) - { - if ($this->handler->process($_template, $this, $update) === false) { - $this->valid = false; - } - if ($this->valid) { - $this->processed = true; - } else { - $this->processed = false; - } - } - - /** - * Read cache content from handler - * - * @param Smarty_Internal_Template $_template template object - * - * @return string|false content - */ - public function read(Smarty_Internal_Template $_template) - { - if (!$_template->source->handler->recompiled) { - return $this->handler->readCachedContent($_template); - } - return false; - } -} diff --git a/libs/sysplugins/smarty_template_compiled.php b/libs/sysplugins/smarty_template_compiled.php deleted file mode 100644 index 37d8f0a9..00000000 --- a/libs/sysplugins/smarty_template_compiled.php +++ /dev/null @@ -1,257 +0,0 @@ -<?php - -/** - * Smarty Resource Data Object - * Meta Data Container for Template Files - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - * @property string $content compiled content - */ -class Smarty_Template_Compiled extends Smarty_Template_Resource_Base -{ - /** - * nocache hash - * - * @var string|null - */ - public $nocache_hash = null; - - /** - * get a Compiled Object of this source - * - * @param Smarty_Internal_Template $_template template object - * - * @return Smarty_Template_Compiled compiled object - */ - public static function load($_template) - { - $compiled = new Smarty_Template_Compiled(); - if ($_template->source->handler->hasCompiledHandler) { - $_template->source->handler->populateCompiledFilepath($compiled, $_template); - } else { - $compiled->populateCompiledFilepath($_template); - } - return $compiled; - } - - /** - * populate Compiled Object with compiled filepath - * - * @param Smarty_Internal_Template $_template template object - **/ - public function populateCompiledFilepath(Smarty_Internal_Template $_template) - { - $source = &$_template->source; - $smarty = &$_template->smarty; - $this->filepath = $smarty->getCompileDir(); - if (isset($_template->compile_id)) { - $this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . - ($smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'); - } - // if use_sub_dirs, break file into directories - if ($smarty->use_sub_dirs) { - $this->filepath .= $source->uid[ 0 ] . $source->uid[ 1 ] . DIRECTORY_SEPARATOR . $source->uid[ 2 ] . - $source->uid[ 3 ] . DIRECTORY_SEPARATOR . $source->uid[ 4 ] . $source->uid[ 5 ] . - DIRECTORY_SEPARATOR; - } - $this->filepath .= $source->uid . '_'; - if ($source->isConfig) { - $this->filepath .= (int)$smarty->config_read_hidden + (int)$smarty->config_booleanize * 2 + - (int)$smarty->config_overwrite * 4; - } else { - $this->filepath .= (int)$smarty->merge_compiled_includes + (int)$smarty->escape_html * 2 + - (($smarty->merge_compiled_includes && $source->type === 'extends') ? - (int)$smarty->extends_recursion * 4 : 0); - } - $this->filepath .= '.' . $source->type; - $basename = $source->handler->getBasename($source); - if (!empty($basename)) { - $this->filepath .= '.' . $basename; - } - if ($_template->caching) { - $this->filepath .= '.cache'; - } - $this->filepath .= '.php'; - $this->timestamp = $this->exists = is_file($this->filepath); - if ($this->exists) { - $this->timestamp = filemtime($this->filepath); - } - } - - /** - * render compiled template code - * - * @param Smarty_Internal_Template $_template - * - * @return string - * @throws Exception - */ - public function render(Smarty_Internal_Template $_template) - { - // checks if template exists - if (!$_template->source->exists) { - $type = $_template->source->isConfig ? 'config' : 'template'; - throw new SmartyException("Unable to load {$type} '{$_template->source->type}:{$_template->source->name}'"); - } - if ($_template->smarty->debugging) { - if (!isset($_template->smarty->_debug)) { - $_template->smarty->_debug = new Smarty_Internal_Debug(); - } - $_template->smarty->_debug->start_render($_template); - } - if (!$this->processed) { - $this->process($_template); - } - if (isset($_template->cached)) { - $_template->cached->file_dependency = - array_merge($_template->cached->file_dependency, $this->file_dependency); - } - if ($_template->source->handler->uncompiled) { - $_template->source->handler->renderUncompiled($_template->source, $_template); - } else { - $this->getRenderedTemplateCode($_template); - } - if ($_template->caching && $this->has_nocache_code) { - $_template->cached->hashes[ $this->nocache_hash ] = true; - } - if ($_template->smarty->debugging) { - $_template->smarty->_debug->end_render($_template); - } - } - - /** - * load compiled template or compile from source - * - * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template - * - * @throws Exception - */ - public function process(Smarty_Internal_Template $_smarty_tpl) - { - $source = &$_smarty_tpl->source; - $smarty = &$_smarty_tpl->smarty; - if ($source->handler->recompiled) { - $source->handler->process($_smarty_tpl); - } elseif (!$source->handler->uncompiled) { - if (!$this->exists || $smarty->force_compile - || ($_smarty_tpl->compile_check && $source->getTimeStamp() > $this->getTimeStamp()) - ) { - $this->compileTemplateSource($_smarty_tpl); - $compileCheck = $_smarty_tpl->compile_check; - $_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF; - $this->loadCompiledTemplate($_smarty_tpl); - $_smarty_tpl->compile_check = $compileCheck; - } else { - $_smarty_tpl->mustCompile = true; - @include $this->filepath; - if ($_smarty_tpl->mustCompile) { - $this->compileTemplateSource($_smarty_tpl); - $compileCheck = $_smarty_tpl->compile_check; - $_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF; - $this->loadCompiledTemplate($_smarty_tpl); - $_smarty_tpl->compile_check = $compileCheck; - } - } - $_smarty_tpl->_subTemplateRegister(); - $this->processed = true; - } - } - - /** - * compile template from source - * - * @param Smarty_Internal_Template $_template - * - * @throws Exception - */ - public function compileTemplateSource(Smarty_Internal_Template $_template) - { - $this->file_dependency = array(); - $this->includes = array(); - $this->nocache_hash = null; - $this->unifunc = null; - // compile locking - if ($saved_timestamp = (!$_template->source->handler->recompiled && is_file($this->filepath))) { - $saved_timestamp = $this->getTimeStamp(); - touch($this->filepath); - } - // compile locking - try { - // call compiler - $_template->loadCompiler(); - $this->write($_template, $_template->compiler->compileTemplate($_template)); - } catch (Exception $e) { - // restore old timestamp in case of error - if ($saved_timestamp && is_file($this->filepath)) { - touch($this->filepath, $saved_timestamp); - } - unset($_template->compiler); - throw $e; - } - // release compiler object to free memory - unset($_template->compiler); - } - - /** - * Write compiled code by handler - * - * @param Smarty_Internal_Template $_template template object - * @param string $code compiled code - * - * @return bool success - * @throws \SmartyException - */ - public function write(Smarty_Internal_Template $_template, $code) - { - if (!$_template->source->handler->recompiled) { - if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) { - $this->timestamp = $this->exists = is_file($this->filepath); - if ($this->exists) { - $this->timestamp = filemtime($this->filepath); - return true; - } - } - return false; - } - return true; - } - - /** - * Read compiled content from handler - * - * @param Smarty_Internal_Template $_template template object - * - * @return string content - */ - public function read(Smarty_Internal_Template $_template) - { - if (!$_template->source->handler->recompiled) { - return file_get_contents($this->filepath); - } - return isset($this->content) ? $this->content : false; - } - - /** - * Load fresh compiled template by including the PHP file - * HHVM requires a work around because of a PHP incompatibility - * - * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template - */ - private function loadCompiledTemplate(Smarty_Internal_Template $_smarty_tpl) - { - if (function_exists('opcache_invalidate') - && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1) - ) { - opcache_invalidate($this->filepath, true); - } elseif (function_exists('apc_compile_file')) { - apc_compile_file($this->filepath); - } - if (defined('HHVM_VERSION')) { - eval('?>' . file_get_contents($this->filepath)); - } else { - include $this->filepath; - } - } -} diff --git a/libs/sysplugins/smarty_template_config.php b/libs/sysplugins/smarty_template_config.php deleted file mode 100644 index 850ae32e..00000000 --- a/libs/sysplugins/smarty_template_config.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php -/** - * Smarty Config Source Plugin - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - */ - -/** - * Smarty Config Resource Data Object - * Meta Data Container for Template Files - * - * @package Smarty - * @subpackage TemplateResources - * @author Uwe Tews - */ -class Smarty_Template_Config extends Smarty_Template_Source -{ - /** - * array of section names, single section or null - * - * @var null|string|array - */ - public $config_sections = null; - - /** - * scope into which the config variables shall be loaded - * - * @var int - */ - public $scope = 0; - - /** - * Flag that source is a config file - * - * @var bool - */ - public $isConfig = true; - - /** - * Name of the Class to compile this resource's contents with - * - * @var string - */ - public $compiler_class = 'Smarty_Internal_Config_File_Compiler'; - - /** - * Name of the Class to tokenize this resource's contents with - * - * @var string - */ - public $template_lexer_class = 'Smarty_Internal_Configfilelexer'; - - /** - * Name of the Class to parse this resource's contents with - * - * @var string - */ - public $template_parser_class = 'Smarty_Internal_Configfileparser'; - - /** - * initialize Source Object for given resource - * Either [$_template] or [$smarty, $template_resource] must be specified - * - * @param Smarty_Internal_Template $_template template object - * @param Smarty $smarty smarty object - * @param string $template_resource resource identifier - * - * @return Smarty_Template_Config Source Object - * @throws SmartyException - */ - public static function load( - Smarty_Internal_Template $_template = null, - Smarty $smarty = null, - $template_resource = null - ) { - static $_incompatible_resources = array('extends' => true, 'php' => true); - if ($_template) { - $smarty = $_template->smarty; - $template_resource = $_template->template_resource; - } - if (empty($template_resource)) { - throw new SmartyException('Source: Missing name'); - } - // parse resource_name, load resource handler - list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type); - // make sure configs are not loaded via anything smarty can't handle - if (isset($_incompatible_resources[ $type ])) { - throw new SmartyException("Unable to use resource '{$type}' for config"); - } - $source = new Smarty_Template_Config($smarty, $template_resource, $type, $name); - $source->handler->populate($source, $_template); - if (!$source->exists && isset($smarty->default_config_handler_func)) { - Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source); - $source->handler->populate($source, $_template); - } - return $source; - } -} diff --git a/libs/sysplugins/smarty_template_resource_base.php b/libs/sysplugins/smarty_template_resource_base.php deleted file mode 100644 index 52bfba25..00000000 --- a/libs/sysplugins/smarty_template_resource_base.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php - -/** - * Smarty Template Resource Base Object - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ -abstract class Smarty_Template_Resource_Base -{ - /** - * Compiled Filepath - * - * @var string - */ - public $filepath = null; - - /** - * Compiled Timestamp - * - * @var integer|bool - */ - public $timestamp = false; - - /** - * Compiled Existence - * - * @var boolean - */ - public $exists = false; - - /** - * Template Compile Id (Smarty_Internal_Template::$compile_id) - * - * @var string - */ - public $compile_id = null; - - /** - * Compiled Content Loaded - * - * @var boolean - */ - public $processed = false; - - /** - * unique function name for compiled template code - * - * @var string - */ - public $unifunc = ''; - - /** - * flag if template does contain nocache code sections - * - * @var bool - */ - public $has_nocache_code = false; - - /** - * resource file dependency - * - * @var array - */ - public $file_dependency = array(); - - /** - * Content buffer - * - * @var string - */ - public $content = null; - - /** - * Included sub templates - * - index name - * - value use count - * - * @var int[] - */ - public $includes = array(); - - /** - * Flag if this is a cache resource - * - * @var bool - */ - public $isCache = false; - - /** - * Process resource - * - * @param Smarty_Internal_Template $_template template object - */ - abstract public function process(Smarty_Internal_Template $_template); - - /** - * get rendered template content by calling compiled or cached template code - * - * @param \Smarty_Internal_Template $_template - * @param string $unifunc function with template code - * - * @throws \Exception - */ - public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null) - { - $smarty = &$_template->smarty; - $_template->isRenderingCache = $this->isCache; - $level = ob_get_level(); - try { - if (!isset($unifunc)) { - $unifunc = $this->unifunc; - } - if (empty($unifunc) || !function_exists($unifunc)) { - throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'"); - } - if ($_template->startRenderCallbacks) { - foreach ($_template->startRenderCallbacks as $callback) { - call_user_func($callback, $_template); - } - } - $unifunc($_template); - foreach ($_template->endRenderCallbacks as $callback) { - call_user_func($callback, $_template); - } - $_template->isRenderingCache = false; - } catch (Exception $e) { - $_template->isRenderingCache = false; - while (ob_get_level() > $level) { - ob_end_clean(); - } - if (isset($smarty->security_policy)) { - $smarty->security_policy->endTemplate(); - } - throw $e; - } - } - - /** - * Get compiled time stamp - * - * @return int - */ - public function getTimeStamp() - { - if ($this->exists && !$this->timestamp) { - $this->timestamp = filemtime($this->filepath); - } - return $this->timestamp; - } -} diff --git a/libs/sysplugins/smarty_template_source.php b/libs/sysplugins/smarty_template_source.php deleted file mode 100644 index 16b47f23..00000000 --- a/libs/sysplugins/smarty_template_source.php +++ /dev/null @@ -1,213 +0,0 @@ -<?php - -/** - * Smarty Resource Data Object - * Meta Data Container for Template Files - * - * @package Smarty - * @subpackage TemplateResources - * @author Rodney Rehm - */ -class Smarty_Template_Source -{ - /** - * Unique Template ID - * - * @var string - */ - public $uid = null; - - /** - * Template Resource (Smarty_Internal_Template::$template_resource) - * - * @var string - */ - public $resource = null; - - /** - * Resource Type - * - * @var string - */ - public $type = null; - - /** - * Resource Name - * - * @var string - */ - public $name = null; - - /** - * Source Filepath - * - * @var string - */ - public $filepath = null; - - /** - * Source Timestamp - * - * @var integer - */ - public $timestamp = null; - - /** - * Source Existence - * - * @var boolean - */ - public $exists = false; - - /** - * Source File Base name - * - * @var string - */ - public $basename = null; - - /** - * The Components an extended template is made of - * - * @var \Smarty_Template_Source[] - */ - public $components = null; - - /** - * Resource Handler - * - * @var \Smarty_Resource - */ - public $handler = null; - - /** - * Smarty instance - * - * @var Smarty - */ - public $smarty = null; - - /** - * Resource is source - * - * @var bool - */ - public $isConfig = false; - - /** - * Template source content eventually set by default handler - * - * @var string - */ - public $content = null; - - /** - * Name of the Class to compile this resource's contents with - * - * @var string - */ - public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; - - /** - * Name of the Class to tokenize this resource's contents with - * - * @var string - */ - public $template_lexer_class = 'Smarty_Internal_Templatelexer'; - - /** - * Name of the Class to parse this resource's contents with - * - * @var string - */ - public $template_parser_class = 'Smarty_Internal_Templateparser'; - - /** - * create Source Object container - * - * @param Smarty $smarty Smarty instance this source object belongs to - * @param string $resource full template_resource - * @param string $type type of resource - * @param string $name resource name - * - * @throws \SmartyException - * @internal param \Smarty_Resource $handler Resource Handler this source object communicates with - */ - public function __construct(Smarty $smarty, $resource, $type, $name) - { - $this->handler = - isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] : - Smarty_Resource::load($smarty, $type); - $this->smarty = $smarty; - $this->resource = $resource; - $this->type = $type; - $this->name = $name; - } - - /** - * initialize Source Object for given resource - * Either [$_template] or [$smarty, $template_resource] must be specified - * - * @param Smarty_Internal_Template $_template template object - * @param Smarty $smarty smarty object - * @param string $template_resource resource identifier - * - * @return Smarty_Template_Source Source Object - * @throws SmartyException - */ - public static function load( - Smarty_Internal_Template $_template = null, - Smarty $smarty = null, - $template_resource = null - ) { - if ($_template) { - $smarty = $_template->smarty; - $template_resource = $_template->template_resource; - } - if (empty($template_resource)) { - throw new SmartyException('Source: Missing name'); - } - // parse resource_name, load resource handler, identify unique resource name - if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) { - $type = $match[ 1 ]; - $name = $match[ 2 ]; - } else { - // no resource given, use default - // or single character before the colon is not a resource type, but part of the filepath - $type = $smarty->default_resource_type; - $name = $template_resource; - } - // create new source object - $source = new Smarty_Template_Source($smarty, $template_resource, $type, $name); - $source->handler->populate($source, $_template); - if (!$source->exists && isset($_template->smarty->default_template_handler_func)) { - Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source); - $source->handler->populate($source, $_template); - } - return $source; - } - - /** - * Get source time stamp - * - * @return int - */ - public function getTimeStamp() - { - if (!isset($this->timestamp)) { - $this->handler->populateTimestamp($this); - } - return $this->timestamp; - } - - /** - * Get source content - * - * @return string - * @throws \SmartyException - */ - public function getContent() - { - return isset($this->content) ? $this->content : $this->handler->getContent($this); - } -} diff --git a/libs/sysplugins/smarty_undefined_variable.php b/libs/sysplugins/smarty_undefined_variable.php deleted file mode 100644 index 6d31a8a0..00000000 --- a/libs/sysplugins/smarty_undefined_variable.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/** - * class for undefined variable object - * This class defines an object for undefined variable handling - * - * @package Smarty - * @subpackage Template - */ -class Smarty_Undefined_Variable extends Smarty_Variable -{ - /** - * Returns null for not existing properties - * - * @param string $name - * - * @return null - */ - public function __get($name) - { - return null; - } - - /** - * Always returns an empty string. - * - * @return string - */ - public function __toString() - { - return ''; - } -} diff --git a/libs/sysplugins/smarty_variable.php b/libs/sysplugins/smarty_variable.php deleted file mode 100644 index 6a534228..00000000 --- a/libs/sysplugins/smarty_variable.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -/** - * class for the Smarty variable object - * This class defines the Smarty variable object - * - * @package Smarty - * @subpackage Template - */ -#[\AllowDynamicProperties] -class Smarty_Variable -{ - /** - * template variable - * - * @var mixed - */ - public $value = null; - - /** - * if true any output of this variable will be not cached - * - * @var boolean - */ - public $nocache = false; - - /** - * create Smarty variable object - * - * @param mixed $value the value to assign - * @param boolean $nocache if true any output of this variable will be not cached - */ - public function __construct($value = null, $nocache = false) - { - $this->value = $value; - $this->nocache = $nocache; - } - - /** - * <<magic>> String conversion - * - * @return string - */ - public function __toString() - { - return (string)$this->value; - } -} diff --git a/libs/sysplugins/smartycompilerexception.php b/libs/sysplugins/smartycompilerexception.php deleted file mode 100644 index 0a0a3235..00000000 --- a/libs/sysplugins/smartycompilerexception.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * Smarty compiler exception class - * - * @package Smarty - */ -class SmartyCompilerException extends SmartyException -{ - /** - * The constructor of the exception - * - * @param string $message The Exception message to throw. - * @param int $code The Exception code. - * @param string|null $filename The filename where the exception is thrown. - * @param int|null $line The line number where the exception is thrown. - * @param Throwable|null $previous The previous exception used for the exception chaining. - */ - public function __construct( - string $message = "", - int $code = 0, - ?string $filename = null, - ?int $line = null, - Throwable $previous = null - ) { - parent::__construct($message, $code, $previous); - - // These are optional parameters, should be be overridden only when present! - if ($filename) { - $this->file = $filename; - } - if ($line) { - $this->line = $line; - } - } - - /** - * @return string - */ - public function __toString() - { - return ' --> Smarty Compiler: ' . $this->message . ' <-- '; - } - - /** - * @param int $line - */ - public function setLine($line) - { - $this->line = $line; - } - - /** - * The template source snippet relating to the error - * - * @type string|null - */ - public $source = null; - - /** - * The raw text of the error message - * - * @type string|null - */ - public $desc = null; - - /** - * The resource identifier or template name - * - * @type string|null - */ - public $template = null; -} diff --git a/libs/sysplugins/smartyexception.php b/libs/sysplugins/smartyexception.php deleted file mode 100644 index 7f7b9aa4..00000000 --- a/libs/sysplugins/smartyexception.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -/** - * Smarty exception class - * - * @package Smarty - */ -class SmartyException extends Exception -{ - public static $escape = false; - - /** - * @return string - */ - public function __toString() - { - return ' --> Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- '; - } -} |
