diff options
| author | Uwe.Tews <uwe.tews@localhost> | 2009-12-27 15:06:49 +0000 |
|---|---|---|
| committer | Uwe.Tews <uwe.tews@localhost> | 2009-12-27 15:06:49 +0000 |
| commit | 44dd7830ddef97f8a87f5637d191d805c7a61f51 (patch) | |
| tree | 3d9872233d250af86ef2e8fb9cde4b94a2b384cf /libs | |
| parent | 5f02276a2a0b9237c7801e5541ddf90ae5e5ed4f (diff) | |
| download | smarty-44dd7830ddef97f8a87f5637d191d805c7a61f51.tar.gz smarty-44dd7830ddef97f8a87f5637d191d805c7a61f51.tar.bz2 smarty-44dd7830ddef97f8a87f5637d191d805c7a61f51.zip | |
--- this is a major update with a couple of internal changes ---
- new config file lexer/parser (thanks to Thue Jnaus Kristensen)
- template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen)
- fix on registered plugins with different type but same name
- rewrite of plugin handling (optimized execution speed)
- closed a security hole regarding PHP code injection into cache files
- fixed bug in clear cache handling
- Renamed a couple of internal classes
- code cleanup for merging compiled templates
- couple of runtime optimizations (still not all done)
Diffstat (limited to 'libs')
42 files changed, 2982 insertions, 2763 deletions
diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php index a3a360c6..5a23d848 100644 --- a/libs/Smarty.class.php +++ b/libs/Smarty.class.php @@ -106,9 +106,9 @@ if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR /** * This is the main Smarty class */ -class Smarty extends Smarty_Internal_TemplateBase { +class Smarty extends Smarty_Internal_Data { // smarty version - public static $_version = 'Smarty3-SVN$Rev: 3286 $'; + const SMARTY_VERSION = 'Smarty3-SVN$Rev: 3286 $'; // auto literal on delimiters with whitspace public $auto_literal = true; // display error on not assigned variables @@ -167,7 +167,7 @@ class Smarty extends Smarty_Internal_TemplateBase { // config var settings public $config_overwrite = true; //Controls whether variables with the same name overwrite each other. public $config_booleanize = true; //Controls whether config values of on/true/yes and off/false/no get converted to boolean - public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file. + public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file. // config vars public $config_vars = array(); // assigned tpl vars @@ -186,30 +186,20 @@ class Smarty extends Smarty_Internal_TemplateBase { public $cache_resource_types = array('file'); // config type public $default_config_type = 'file'; - // class used for cacher - public $cacher_class = 'Smarty_Internal_Cacher_InlineCode'; // exception handler: array('ExceptionClass','ExceptionMethod'); public $exception_handler = null; // cached template objects public $template_objects = null; // check If-Modified-Since headers public $cache_modified_check = false; - // cached objects - public $resource_objects = array(); // registered plugins public $registered_plugins = array(); // plugin search order public $plugin_search_order = array('function', 'block', 'compiler', 'class'); - // plugin handler object - public $plugin_handler = null; - // default plugin handler - public $default_plugin_handler_func = null; // registered objects public $registered_objects = array(); // registered filters public $registered_filters = array(); - // filter handler - public $filter_handler = null; // autoload filter public $autoload_filters = array(); // status of filter on variable output @@ -228,8 +218,7 @@ class Smarty extends Smarty_Internal_TemplateBase { /** * Class constructor, initializes basic smarty properties */ - public function __construct() - { + public function __construct() { // self reference needed by other classes methods $this->smarty = $this; @@ -239,7 +228,7 @@ class Smarty extends Smarty_Internal_TemplateBase { $this->start_time = $this->_get_time(); // set exception handler if (!empty($this->exception_handler)) - set_exception_handler($this->exception_handler); + set_exception_handler($this->exception_handler); // set default dirs $this->template_dir = array('.' . DS . 'templates' . DS); $this->compile_dir = '.' . DS . 'templates_c' . DS; @@ -247,12 +236,11 @@ class Smarty extends Smarty_Internal_TemplateBase { $this->cache_dir = '.' . DS . 'cache' . DS; $this->config_dir = '.' . DS . 'configs' . DS; $this->debug_tpl = SMARTY_DIR . 'debug.tpl'; - $this->plugin_handler = new Smarty_Internal_Plugin_Handler($this); - $this->filter_handler = new Smarty_Internal_Run_Filter($this); if (!$this->debugging && $this->debugging_ctrl == 'URL') { if (isset($_SERVER['QUERY_STRING'])) { $_query_string = $_SERVER['QUERY_STRING']; - } else { + } + else { $_query_string = ''; } if (false !== strpos($_query_string, $this->smarty_debug_id)) { @@ -260,15 +248,18 @@ class Smarty extends Smarty_Internal_TemplateBase { // enable debugging for this browser session setcookie('SMARTY_DEBUG', true); $this->debugging = true; - } elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) { + } + elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) { // disable debugging for this browser session setcookie('SMARTY_DEBUG', false); $this->debugging = false; - } else { + } + else { // enable debugging for this page $this->debugging = true; } - } else { + } + else { if (isset($_COOKIE['SMARTY_DEBUG'])) { $this->debugging = true; } @@ -280,11 +271,10 @@ class Smarty extends Smarty_Internal_TemplateBase { /** * Class destructor */ - public function __destruct() - { + public function __destruct() { // restore to previous exception handler, if any if (!empty($this->exception_handler)) - restore_exception_handler(); + restore_exception_handler(); } /** @@ -296,8 +286,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * @param object $ |null $parent next higher level of Smarty variables * @return string rendered template output */ - public function fetch($template, $cache_id = null, $compile_id = null, $parent = null) - { + public function fetch($template, $cache_id = null, $compile_id = null, $parent = null) { if (is_object($cache_id)) { $parent = $cache_id; $cache_id = null; @@ -313,8 +302,9 @@ class Smarty extends Smarty_Internal_TemplateBase { ? $this->error_reporting : error_reporting() &~E_NOTICE); // return redered template if (isset($this->autoload_filters['output']) || isset($this->registered_filters['output'])) { - $_output = $this->filter_handler->execute('output', $_template->getRenderedTemplate()); - } else { + $_output = Smarty_Internal_Filter_Handler::runFilter('output', $_template->getRenderedTemplate(), $this); + } + else { $_output = $_template->getRenderedTemplate(); } $_template->rendered_content = null; @@ -330,8 +320,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * @param mixed $compile_id compile id to be used with this template * @param object $parent next higher level of Smarty variables */ - public function display($template, $cache_id = null, $compile_id = null, $parent = null) - { + public function display($template, $cache_id = null, $compile_id = null, $parent = null) { // display template echo $this->fetch ($template, $cache_id, $compile_id, $parent); // debug output @@ -349,8 +338,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * @param mixed $compile_id compile id to be used with this template * @return boolean cache status */ - public function is_cached($template, $cache_id = null, $compile_id = null) - { + public function is_cached($template, $cache_id = null, $compile_id = null) { if (!($template instanceof $this->template_class)) { $template = $this->createTemplate ($template, $cache_id, $compile_id, $this); } @@ -361,13 +349,13 @@ class Smarty extends Smarty_Internal_TemplateBase { /** * Loads security class and enables security */ - public function enableSecurity() - { + public function enableSecurity() { if (isset($this->security_class)) { $this->security_policy = new $this->security_class; $this->security_handler = new Smarty_Internal_Security_Handler($this); $this->security = true; - } else { + } + else { throw new Exception('Property security_class is not defined'); } } @@ -377,8 +365,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * * @param string $ |array $template_dir folder(s) of template sorces */ - public function setTemplateDir($template_dir) - { + public function setTemplateDir($template_dir) { $this->template_dir = (array)$template_dir; return; } @@ -387,8 +374,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * * @param string $ |array $template_dir folder(s) of template sources */ - public function addTemplateDir($template_dir) - { + public function addTemplateDir($template_dir) { $this->template_dir = array_merge((array)$this->template_dir, (array)$template_dir); $this->template_dir = array_unique($this->template_dir); return; @@ -398,8 +384,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * * @param string $compile_dir folder of compiled template sources */ - public function setCompileDir($compile_dir) - { + public function setCompileDir($compile_dir) { $this->compile_dir = $compile_dir; return; } @@ -408,16 +393,14 @@ class Smarty extends Smarty_Internal_TemplateBase { * * @param string $cache_dir folder of cache files */ - public function setCacheDir($cache_dir) - { + public function setCacheDir($cache_dir) { $this->cache_dir = $cache_dir; return; } /** * Enable Caching */ - public function enableCaching() - { + public function enableCaching() { $this->caching = SMARTY_CACHING_LIFETIME_CURRENT; return; } @@ -426,8 +409,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * * @param integer $lifetime lifetime of cached file in seconds */ - public function setCacheLifetime($lifetime) - { + public function setCacheLifetime($lifetime) { $this->cache_lifetime = $lifetime; return; } @@ -437,16 +419,12 @@ class Smarty extends Smarty_Internal_TemplateBase { * plugin filename format: plugintype.pluginname.php * * @param string $plugin_name class plugin name to load - * @return boolean + * @return string|boolean filepath of loaded file or false */ - public function loadPlugin($plugin_name) - { - // if class exists, exit silently (already loaded) - if (class_exists($plugin_name, false)) - return true; - // if callable as function, exit silently (already loaded) - if (is_callable($plugin_name)) - return true; + public function loadPlugin($plugin_name, $check = true) { + // if function or class exists, exit silently (already loaded) + if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) + return true; // Plugin name is expected to be: Smarty_[Type]_[Name] $_plugin_name = strtolower($plugin_name); $_name_parts = explode('_', $_plugin_name, 3); @@ -457,10 +435,12 @@ class Smarty extends Smarty_Internal_TemplateBase { } // if type is "internal", get plugin from sysplugins if ($_name_parts[1] == 'internal') { - if (file_exists(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php')) { - require_once(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php'); - return true; - } else { + $file = SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php'; + if (file_exists($file)) { + require_once($file); + return $file; + } + else { return false; } } @@ -471,10 +451,10 @@ class Smarty extends Smarty_Internal_TemplateBase { if (strpos('/\\', substr($_plugin_dir, -1)) === false) { $_plugin_dir .= DS; } - - if (file_exists($_plugin_dir . $_plugin_filename)) { - require_once($_plugin_dir . $_plugin_filename); - return true; + $file = $_plugin_dir . $_plugin_filename; + if (file_exists($file)) { + require_once($file); + return $file; } } // no plugin loaded @@ -487,8 +467,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * @param mixed $handler function name or array with object/method names * @return string previous exception handler */ - public function setExceptionHandler($handler) - { + public function setExceptionHandler($handler) { $this->exception_handler = $handler; return set_exception_handler($handler); } @@ -498,8 +477,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * * @return object of cache resource */ - public function loadCacheResource($type = null) - { + public function loadCacheResource($type = null) { if (!isset($type)) { $type = $this->caching_type; } @@ -510,12 +488,14 @@ class Smarty extends Smarty_Internal_TemplateBase { if (in_array($type, $this->cache_resource_types)) { $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); return $this->cache_resource_objects[$type] = new $cache_resource_class($this); - } else { + } + else { // try plugins dir $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type); if ($this->loadPlugin($cache_resource_class)) { return $this->cache_resource_objects[$type] = new $cache_resource_class($this); - } else { + } + else { throw new Exception("Unable to load cache resource '{$type}'"); } } @@ -527,8 +507,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * @param string $error_msg * @param integer $error_type */ - public function trigger_error($error_msg, $error_type = E_USER_WARNING) - { + public function trigger_error($error_msg, $error_type = E_USER_WARNING) { throw new Exception("Smarty error: $error_msg"); } @@ -540,8 +519,7 @@ class Smarty extends Smarty_Internal_TemplateBase { * @param string $name unknown methode name * @param array $args aurgument array */ - public function __call($name, $args) - { + public function __call($name, $args) { $name = strtolower($name); if ($name == 'smarty') { throw new Exception('Please use parent::__construct() to call parent constuctor'); @@ -557,8 +535,7 @@ class Smarty extends Smarty_Internal_TemplateBase { } } -function smartyAutoload($class) -{ +function smartyAutoload($class) { $_class = strtolower($class); if (substr($_class, 0, 16) === 'smarty_internal_' || $_class == 'smarty_security') { include SMARTY_SYSPLUGINS_DIR . $_class . '.php'; diff --git a/libs/plugins/modifier.debug_print_var.php b/libs/plugins/modifier.debug_print_var.php index e976d12f..f0f83d27 100644 --- a/libs/plugins/modifier.debug_print_var.php +++ b/libs/plugins/modifier.debug_print_var.php @@ -20,70 +20,68 @@ * @param integer $ * @return string */ -class Smarty_Modifier_Debug_Print_Var { - static function execute ($var, $depth = 0, $length = 40) - { - $_replace = array("\n" => '<i>\n</i>', - "\r" => '<i>\r</i>', - "\t" => '<i>\t</i>' - ); +function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40) +{ + $_replace = array("\n" => '<i>\n</i>', + "\r" => '<i>\r</i>', + "\t" => '<i>\t</i>' + ); - switch (gettype($var)) { - case 'array' : - $results = '<b>Array (' . count($var) . ')</b>'; - foreach ($var as $curr_key => $curr_val) { - $results .= '<br>' . str_repeat(' ', $depth * 2) - . '<b>' . strtr($curr_key, $_replace) . '</b> => ' - . self::execute($curr_val, ++$depth, $length); - $depth--; - } - break; - case 'object' : - $object_vars = get_object_vars($var); - $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; - foreach ($object_vars as $curr_key => $curr_val) { - $results .= '<br>' . str_repeat(' ', $depth * 2) - . '<b> ->' . strtr($curr_key, $_replace) . '</b> = ' - . self::execute($curr_val, ++$depth, $length); - $depth--; - } - break; - case 'boolean' : - case 'NULL' : - case 'resource' : - if (true === $var) { - $results = 'true'; - } elseif (false === $var) { - $results = 'false'; - } elseif (null === $var) { - $results = 'null'; - } else { - $results = htmlspecialchars((string) $var); - } - $results = '<i>' . $results . '</i>'; - break; - case 'integer' : - case 'float' : + switch (gettype($var)) { + case 'array' : + $results = '<b>Array (' . count($var) . ')</b>'; + foreach ($var as $curr_key => $curr_val) { + $results .= '<br>' . str_repeat(' ', $depth * 2) + . '<b>' . strtr($curr_key, $_replace) . '</b> => ' + . smarty_modifier_debug_print_var($curr_val, ++$depth, $length); + $depth--; + } + break; + case 'object' : + $object_vars = get_object_vars($var); + $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; + foreach ($object_vars as $curr_key => $curr_val) { + $results .= '<br>' . str_repeat(' ', $depth * 2) + . '<b> ->' . strtr($curr_key, $_replace) . '</b> = ' + . smarty_modifier_debug_print_var($curr_val, ++$depth, $length); + $depth--; + } + break; + case 'boolean' : + case 'NULL' : + case 'resource' : + if (true === $var) { + $results = 'true'; + } elseif (false === $var) { + $results = 'false'; + } elseif (null === $var) { + $results = 'null'; + } else { $results = htmlspecialchars((string) $var); - break; - case 'string' : - $results = strtr($var, $_replace); - if (strlen($var) > $length) { - $results = substr($var, 0, $length - 3) . '...'; - } - $results = htmlspecialchars('"' . $results . '"'); - break; - case 'unknown type' : - default : - $results = strtr((string) $var, $_replace); - if (strlen($results) > $length) { - $results = substr($results, 0, $length - 3) . '...'; - } - $results = htmlspecialchars($results); - } - - return $results; + } + $results = '<i>' . $results . '</i>'; + break; + case 'integer' : + case 'float' : + $results = htmlspecialchars((string) $var); + break; + case 'string' : + $results = strtr($var, $_replace); + if (strlen($var) > $length) { + $results = substr($var, 0, $length - 3) . '...'; + } + $results = htmlspecialchars('"' . $results . '"'); + break; + case 'unknown type' : + default : + $results = strtr((string) $var, $_replace); + if (strlen($results) > $length) { + $results = substr($results, 0, $length - 3) . '...'; + } + $results = htmlspecialchars($results); } + + return $results; } ?> diff --git a/libs/sysplugins/smarty_internal_cacher_inlinecode.php b/libs/sysplugins/smarty_internal_cacher_inlinecode.php deleted file mode 100644 index eb943fed..00000000 --- a/libs/sysplugins/smarty_internal_cacher_inlinecode.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** -* Smarty Internal Plugin Cacher InlineCode -* -* Process nocached code. -* Version to inject nocache code directly into cache file -* if caching is disabled at render time the code is being evaluated -* -* @package Smarty -* @subpackage Cacher -* @author Uwe Tews -*/ - -/** -* Smarty Internal Plugin Cacher InlineCode Class -*/ -class Smarty_Internal_Cacher_InlineCode { - function __construct($smarty) - { - $this->smarty = $smarty; - } - - /** - * 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 object $compiler intance of compiler class - * @param boolean $tag_nocache true if the parser detected a nocache situation - * @param boolean $is_code true if content is compiled code - * @return string content - */ - public function processNocacheCode ($content, $compiler, $is_code) - { - // If the template is not evaluated and we have a nocache section and or a nocache tag - if ($is_code) { - // generate replacement code - if ((!$compiler->template->isEvaluated() || $compiler->template->forceNocache) && $compiler->template->caching && - ($compiler->nocache || $compiler->tag_nocache)) { - $compiler->tag_nocache = false; - $_output = str_replace("'", "\'", $content); - $_output = '<?php echo \'' . $_output . '\';?>'; - } else { - $_output = $content; - } - } else { - $_output = $content; - } - // if compiled code shall be grabbed - if ($compiler->template->extract_code == false) { - // return output - return $_output; - } else { - // store code in extract buffer - $compiler->template->extracted_compiled_code .= $_output; - return ''; - } - } - - /** - * Initialize cacher - * - * Is a noop in current implementation - * - * @param object $compiler intance of compiler class - */ - public function initCacher ($compiler) - { - return; - } - - /** - * Close cacher - * - * Hook to perform any post processing on the final compiled template - * Is a noop in current implementation - * - * @param object $compiler intance of compiler class - * @param string $template_code complete compiled template - * @return string compiled template output - */ - public function closeCacher ($compiler, $template_code) - { - return $template_code; - } - -} - -?> diff --git a/libs/sysplugins/smarty_internal_cacheresource_file.php b/libs/sysplugins/smarty_internal_cacheresource_file.php index f3a1329c..d4d9baf7 100644 --- a/libs/sysplugins/smarty_internal_cacheresource_file.php +++ b/libs/sysplugins/smarty_internal_cacheresource_file.php @@ -38,7 +38,8 @@ class Smarty_Internal_CacheResource_File { */ public function getCachedTimestamp($template) { - return ($template->getCachedFilepath() && file_exists($template->getCachedFilepath())) ? filemtime($template->getCachedFilepath()) : false ; + return @filemtime($template->getCachedFilepath()); + // return ($template->getCachedFilepath() && file_exists($template->getCachedFilepath())) ? filemtime($template->getCachedFilepath()) : false ; } /** @@ -63,7 +64,7 @@ class Smarty_Internal_CacheResource_File { */ public function writeCachedContent($template, $content) { - if (!$template->isEvaluated()) { + if (!$template->resource_object->isEvaluated) { return Smarty_Internal_Write_File::writeFile($template->getCachedFilepath(), $content, $this->smarty); } else { return false; @@ -91,51 +92,61 @@ class Smarty_Internal_CacheResource_File { */ public function clear($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 = $this->smarty->use_sub_dirs ? DS : '^'; - if (isset($resource_name)) { - $_resource_part = (string)abs(crc32($resource_name)) . '.' . $resource_name . '.php'; - } else { - $_resource_part = null; - } - $_dir = $this->smarty->cache_dir; - if (strpos('/\\', substr($_dir, -1)) === false) { - $_dir .= DS; - } - if ($this->smarty->use_sub_dirs && isset($_cache_id)) { - $_dir .= str_replace('|', $_dir_sep, $_cache_id) . $_dir_sep; + $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null; + $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null; + $_dir_sep = $this->smarty->use_sub_dirs ? '/' : '^'; + $_compile_id_offset = $this->smarty->use_sub_dirs ? 3 : 0; + $_dir = rtrim($this->smarty->cache_dir, '/\\') . DS; + $_dir_length = strlen($_dir); + if (isset($_cache_id)) { + $_cache_id_parts = explode('|', $_cache_id); + $_cache_id_parts_count = count($_cache_id_parts); } - $_compile_pos = $this->smarty->use_sub_dirs ? 5 : 2; $_count = 0; $_cacheDirs = new RecursiveDirectoryIterator($_dir); $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST); foreach ($_cache as $_file) { - if (strpos($_file, '.svn') !== false) continue; + if (strpos($_file, '.svn') !== false) continue; + // directory ? if ($_file->isDir()) { if (!$_cache->isDot()) { // delete folder if empty @rmdir($_file->getPathname()); } } else { - $_parts = explode($_dir_sep, $_file); - $_parts_count = count($_parts); - $_parts_compile_pos = $_parts_count - $_compile_pos; - if ($_parts_compile_pos < 0) { - $_parts_compile_pos = 0; + $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string)$_file, $_dir_length))); + $_parts_count = count($_parts); + // check name + if (isset($resource_name)) { + $_filename_parts = explode('.', $_parts[$_parts_count-1]); + $_resourcename_parts = explode('.', $resource_name . '.php'); + if (count($_filename_parts)-1 != count($_resourcename_parts)) { + continue; + } + for ($i = 0; $i < count($_resourcename_parts); $i++) { + if ($_filename_parts[$i + 1] != $_resourcename_parts[$i]) continue 2; + } } - if ((substr_compare((string)$_file, $_dir, 0, strlen($_dir)) == 0 && - (!isset($resource_name) || $_parts[$_parts_count-1] == $_resource_part) && - (!isset($_compile_id) || $_parts[$_parts_compile_pos] == $_compile_id)) || - (isset($resource_name) && (string)$_file == $_dir . $_resource_part)) { - if (isset($exp_time)) { - if (time() - @filemtime($_file) >= $exp_time) { - $_count += @unlink((string) $_file) ? 1 : 0; - } - } else { - $_count += @unlink((string) $_file) ? 1 : 0; + // check compile id + if (isset($_compile_id) && $_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; } } + // expired ? + if (isset($exp_time) && time() - @filemtime($_file) < $exp_time) { + continue; + } + $_count += @unlink((string) $_file) ? 1 : 0; } } return $_count; @@ -143,17 +154,16 @@ class Smarty_Internal_CacheResource_File { /** * Get system filepath to cached file * - * @param string $resource_name template name + * @param string $source_file_path template source file path * @param string $cache_id cache id * @param string $compile_id compile id * @return string filepath of cache file */ - private function buildCachedFilepath ($resource_name, $cache_id, $compile_id) + private function buildCachedFilepath ($source_file_path, $cache_id, $compile_id) { - $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!','_',$cache_id) : null; - $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!','_',$compile_id) : null; - $_files = explode('|', $resource_name); - $_filepath = (string)abs(crc32($resource_name)); + $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null; + $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null; + $_filepath = (string)abs(crc32($source_file_path)); // if use_sub_dirs, break file into directories if ($this->smarty->use_sub_dirs) { $_filepath = substr($_filepath, 0, 2) . DS @@ -176,8 +186,7 @@ class Smarty_Internal_CacheResource_File { if (strpos('/\\', substr($_cache_dir, -1)) === false) { $_cache_dir .= DS; } - - return $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_files[count($_files)-1]) . '.php'; + return $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($source_file_path) . '.php'; } } diff --git a/libs/sysplugins/smarty_internal_compile_function.php b/libs/sysplugins/smarty_internal_compile_function.php index 56f451b7..e5cee180 100644 --- a/libs/sysplugins/smarty_internal_compile_function.php +++ b/libs/sysplugins/smarty_internal_compile_function.php @@ -29,6 +29,7 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase { $save = array($_attr, $compiler->template->extracted_compiled_code, $compiler->template->extract_code); $this->_open_tag('function', $save); $_name = trim($_attr['name'], "'"); + unset($_attr['name']); foreach ($_attr as $_key => $_data) { $compiler->template->properties['function'][$_name]['parameter'][$_key] = $_data; } @@ -56,20 +57,13 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase { $this->compiler = $compiler; $this->compiler->has_code = false; - // turn off block code extraction - $compiler->template->extract_code = false; - // check and get attributes - $this->optional_attributes = array('name'); $_attr = $this->_get_attributes($args); $saved_data = $this->_close_tag(array('function')); - // if name does match to opening tag - if (isset($_attr['name']) && $saved_data[0]['name'] != $_attr['name']) { - $this->compiler->trigger_template_error('mismatching name attributes "' . $saved_data[0]['name'] . '" and "' . $_attr['name'] . '"'); - } $_name = trim($saved_data[0]['name'], "'"); - $compiler->template->properties['function'][$_name]['compiled'] = str_replace("\n",'_%n',$compiler->template->extracted_compiled_code); + $compiler->template->properties['function'][$_name]['compiled'] = $compiler->template->extracted_compiled_code; $this->compiler->smarty->template_functions[$_name]['compiled'] = $compiler->template->extracted_compiled_code; $this->compiler->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter']; + // restore old code extraction status $compiler->template->extracted_compiled_code = $saved_data[1]; $compiler->template->extract_code = $saved_data[2]; return true; diff --git a/libs/sysplugins/smarty_internal_compile_include.php b/libs/sysplugins/smarty_internal_compile_include.php index c0a8fd92..933d719a 100644 --- a/libs/sysplugins/smarty_internal_compile_include.php +++ b/libs/sysplugins/smarty_internal_compile_include.php @@ -36,49 +36,17 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase { eval("\$tmp = $include_file;"); if ($this->compiler->template->template_resource != $tmp) { $tpl = $compiler->smarty->createTemplate ($tmp, $compiler->template->cache_id, $compiler->template->compile_id, $compiler->template); - if ($tpl->usesCompiler() && $tpl->isExisting()) { - do { - $must_compile = false; - $prop = array(); - $compiled_tpl = $tpl->getCompiledTemplate(); - preg_match('/(\<\?php \$_smarty_tpl-\>decodeProperties\(\')(.*)(\'.*\?\>)/', $compiled_tpl, $matches); - $compiled_tpl = preg_replace(array('/(\<\?php \$_smarty_tpl-\>decodeProperties\(\')(.*)(\'.*\?\>.*\n)/', '/(\<\?php if\(\!defined\(\'SMARTY_DIR\'\)\))(.*)(\?\>.*\n)/'), '', $compiled_tpl); - // var_dump($matches, $compiled_tpl); - if (isset($matches[2])) { - $prop = unserialize($matches[2]); - foreach ($prop['file_dependency'] as $_file_to_check) { - If (is_file($_file_to_check[0])) { - $mtime = filemtime($_file_to_check[0]); - } else { - $tpl->parseResourceName($_file_to_check[0], $resource_type, $resource_name, $resource_handler); - if ($resource_type == 'file') { - $must_compile = true; // subtemplate no longer existing - break; - } - $mtime = $resource_handler->getTemplateTimestampTypeName($resource_type, $resource_name); - } - // If ($mtime != $_file_to_check[1]) { - If ($mtime > $_file_to_check[1]) { - $must_compile = true; - break; - } - } - if ($must_compile) { - // recompile - $tpl->compileTemplateSource(); - } - } - } while ($must_compile); - if (isset($prop['file_dependency'])) { - $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $prop['file_dependency']); - } - if (isset($prop['function'])) { - if (isset($compiler->template->properties['function'])) { - $compiler->template->properties['function'] = array_merge((array)$compiler->template->properties['function'], $prop['function']); - } else { - $compiler->template->properties['function'] = $prop['function']; - } - } + if ($this->compiler->template->caching) { + // needs code for cached page but no cache file + $tpl->caching = 9999; + } + if ($tpl->resource_object->usesCompiler && $tpl->isExisting()) { + // make sure that template is up to date and merge template properties + $tpl->renderTemplate(); + // get compiled code + $compiled_tpl = $tpl->getCompiledTemplate(); + // remove header code + $compiled_tpl = preg_replace('/(<\?php \/\*%%SmartyHeaderCode%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s', '', $compiled_tpl); $has_compiled_template = true; } } @@ -163,6 +131,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase { } $_output .= "<?php unset(\$_template);?>"; return $_output; - } -} + } +} + ?> diff --git a/libs/sysplugins/smarty_internal_compile_block_plugin.php b/libs/sysplugins/smarty_internal_compile_private_block_plugin.php index 0d668239..030f3a2f 100644 --- a/libs/sysplugins/smarty_internal_compile_block_plugin.php +++ b/libs/sysplugins/smarty_internal_compile_private_block_plugin.php @@ -11,7 +11,7 @@ /** * Smarty Internal Plugin Compile Block Plugin Class */ -class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase { /** * Compiles code for the execution of block plugin * @@ -20,7 +20,7 @@ class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase { * @param object $compiler compiler object * @return string compiled code */ - public function compile($args, $compiler, $tag) + public function compile($args, $compiler, $tag, $function) { $this->compiler = $compiler; if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) { @@ -41,14 +41,14 @@ class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase { $_params = 'array(' . implode(",", $_paramsArray) . ')'; $this->_open_tag($tag, array($_params, $this->compiler->nocache)); - // not cachable? - if (isset($this->compiler->smarty->registered_plugins[$tag]) && !$this->compiler->smarty->registered_plugins[$tag][2]) { - $this->compiler->nocache = true; - } - // maybe nocache because of nocache variables + // maybe nocache because of nocache variables or nocache plugin $this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache; // compile code - $output = '<?php $_block_repeat=true; $_smarty_tpl->smarty->plugin_handler->' . $tag . '(array(' . $_params . ', null, $_smarty_tpl->smarty, &$_block_repeat, $_smarty_tpl),\'block\');while ($_block_repeat) { ob_start();?>'; + if (is_array($function)) { + $output = '<?php $_block_repeat=true; call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),(array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>'; + } else { + $output = '<?php $_block_repeat=true; ' . $function . '(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>'; + } } else { // must endblock be nocache? if ($this->compiler->nocache) { @@ -59,7 +59,12 @@ class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase { // This tag does create output $this->compiler->has_output = true; // compile code - $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo $_smarty_tpl->smarty->plugin_handler->' . substr($tag, 0, -5) . '(array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, &$_block_repeat, $_smarty_tpl),\'block\'); }?>'; + if (is_array($function)) { + var_dump('error'); + $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),(array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>'; + } else { + $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo ' . $function . '(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl); }?>'; + } } return $output; } diff --git a/libs/sysplugins/smarty_internal_compile_function_call.php b/libs/sysplugins/smarty_internal_compile_private_function_call.php index 157842bc..05f613fc 100644 --- a/libs/sysplugins/smarty_internal_compile_function_call.php +++ b/libs/sysplugins/smarty_internal_compile_private_function_call.php @@ -12,7 +12,7 @@ /** * Smarty Internal Plugin Compile Function_Call Class */ -class Smarty_Internal_Compile_Function_Call extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Function_Call extends Smarty_Internal_CompileBase { /** * Compiles the calls of user defined tags defined by {function} * diff --git a/libs/sysplugins/smarty_internal_compile_function_plugin.php b/libs/sysplugins/smarty_internal_compile_private_function_plugin.php index 8d9ffab4..129b5d75 100644 --- a/libs/sysplugins/smarty_internal_compile_function_plugin.php +++ b/libs/sysplugins/smarty_internal_compile_private_function_plugin.php @@ -11,7 +11,7 @@ /** * Smarty Internal Plugin Compile Function Plugin Class */ -class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase { /** * Compiles code for the execution of function plugin * @@ -20,7 +20,7 @@ class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBas * @param object $compiler compiler object * @return string compiled code */ - public function compile($args, $compiler, $tag) + public function compile($args, $compiler, $tag, $function) { $this->compiler = $compiler; // This tag does create output @@ -30,10 +30,6 @@ class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBas $this->optional_attributes = array('_any'); // check and get attributes $_attr = $this->_get_attributes($args); - // not cachable? - if (isset($this->compiler->smarty->registered_plugins[$tag]) && !$this->compiler->smarty->registered_plugins[$tag][2]) { - $this->compiler->tag_nocache = true; - } // convert attributes into parameter array string $_paramsArray = array(); foreach ($_attr as $_key => $_value) { @@ -45,8 +41,11 @@ class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBas } $_params = 'array(' . implode(",", $_paramsArray) . ')'; // compile code - $output = '<?php echo $_smarty_tpl->smarty->plugin_handler->' . $tag . '(array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl),\'function\');?>'; - + if (is_array($function)) { + $output = '<?php echo call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),(array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl));?>'; + } else { + $output = '<?php echo ' . $function . '(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl);?>'; + } return $output; } } diff --git a/libs/sysplugins/smarty_internal_compile_private_modifier.php b/libs/sysplugins/smarty_internal_compile_private_modifier.php new file mode 100644 index 00000000..a559b759 --- /dev/null +++ b/libs/sysplugins/smarty_internal_compile_private_modifier.php @@ -0,0 +1,58 @@ +<?php
+/**
+* Smarty Internal Plugin Compile Modifier
+*
+* Compiles code for modifier execution
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+/**
+* Smarty Internal Plugin Compile Modifier Class
+*/
+class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase {
+ /**
+ * Compiles code for modifier execution
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @return string compiled code
+ */
+ public function compile($args, $compiler)
+ {
+ $this->compiler = $compiler;
+ $this->smarty = $this->compiler->smarty;
+ $this->required_attributes = array('modifier', 'params');
+ // check and get attributes
+ $_attr = $this->_get_attributes($args);
+ // check if modifier allowed
+ if (!$this->compiler->template->security || $this->smarty->security_handler->isTrustedModifier($_attr['modifier'], $this->compiler)) {
+ // check for registered or plugin modifier
+ if (isset($compiler->smarty->registered_plugins['modifier'][$_attr['modifier']])) {
+ $function = $compiler->smarty->registered_plugins['modifier'][$_attr['modifier']][0];
+ if (!is_array($function)) {
+ $output = "{$function}({$_attr['params']})";
+ } else if (is_object($function[0])) {
+ $output = 'call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'modifier\'][\'' . $_attr['modifier'] . '\'][0],array(' . $_attr['params'] . '))';
+ } else {
+ $output = 'call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_attr['params'] . '))';
+ }
+ } else if ($function = $this->compiler->getPlugin($_attr['modifier'], 'modifier')) {
+ if (!is_array($function)) {
+ $output = "{$function}({$_attr['params']})";
+ } else {
+ $output = 'call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_attr['params'] . '))';
+ }
+ // check if trusted PHP function
+ } else if (is_callable($_attr['modifier'])) {
+ $output = "{$_attr['modifier']}({$_attr['params']})";
+ } else {
+ $this->compiler->trigger_template_error ("unknown modifier \"" . $_attr['modifier'] . "\"");
+ }
+ return $output;
+ }
+ }
+}
+
+?>
diff --git a/libs/sysplugins/smarty_internal_compile_object_block_function.php b/libs/sysplugins/smarty_internal_compile_private_object_block_function.php index 75a1a7d0..03c2d340 100644 --- a/libs/sysplugins/smarty_internal_compile_object_block_function.php +++ b/libs/sysplugins/smarty_internal_compile_private_object_block_function.php @@ -11,7 +11,7 @@ /** * Smarty Internal Plugin Compile Object Block Function Class */ -class Smarty_Internal_Compile_Object_Block_Function extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase { /** * Compiles code for the execution of block plugin * diff --git a/libs/sysplugins/smarty_internal_compile_object_function.php b/libs/sysplugins/smarty_internal_compile_private_object_function.php index e0962ca3..d147949a 100644 --- a/libs/sysplugins/smarty_internal_compile_object_function.php +++ b/libs/sysplugins/smarty_internal_compile_private_object_function.php @@ -11,7 +11,7 @@ /** * Smarty Internal Plugin Compile Object Function Class */ -class Smarty_Internal_Compile_Object_Function extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase { /** * Compiles code for the execution of function plugin * diff --git a/libs/sysplugins/smarty_internal_compile_print_expression.php b/libs/sysplugins/smarty_internal_compile_private_print_expression.php index 57ed85df..5fb7912a 100644 --- a/libs/sysplugins/smarty_internal_compile_print_expression.php +++ b/libs/sysplugins/smarty_internal_compile_private_print_expression.php @@ -11,7 +11,7 @@ /** * Smarty Internal Plugin Compile Print Expression Class */ -class Smarty_Internal_Compile_Print_Expression extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase { /** * Compiles code for gererting output from any expression * @@ -49,7 +49,7 @@ class Smarty_Internal_Compile_Print_Expression extends Smarty_Internal_CompileBa // display value $this->compiler->has_output = true; if (isset($this->compiler->smarty->registered_filters['variable'])) { - $output = '<?php echo $this->smarty->filter_handler->execute(\'variable\', ' . $_attr['value'] . ',' . $_attr['filter'] . ');?>'; + $output = '<?php echo Smarty_Internal_Filter_Handler::runFilter(\'variable\', ' . $_attr['value'] . ',$this->smarty);?>'; } else { $output = '<?php echo ' . $_attr['value'] . ';?>'; } diff --git a/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/libs/sysplugins/smarty_internal_compile_private_registered_block.php new file mode 100644 index 00000000..218ec0e6 --- /dev/null +++ b/libs/sysplugins/smarty_internal_compile_private_registered_block.php @@ -0,0 +1,79 @@ +<?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
+*/
+class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase {
+ /**
+ * Compiles code for the execution of a block function
+ *
+ * @param array $args array with attributes from parser
+ * @param string $tag name of block function
+ * @param object $compiler compiler object
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $tag)
+ {
+ $this->compiler = $compiler;
+ if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
+ // opening tag of block plugin
+ $this->required_attributes = array();
+ $this->optional_attributes = array('_any');
+ // check and get attributes
+ $_attr = $this->_get_attributes($args);
+ // 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) . ')';
+
+ $this->_open_tag($tag, array($_params, $this->compiler->nocache));
+ // maybe nocache because of nocache variables or nocache plugin
+ $this->compiler->nocache = !$compiler->smarty->registered_plugins['block'][$tag][1] | $this->compiler->nocache | $this->compiler->tag_nocache;
+ $function = $compiler->smarty->registered_plugins['block'][$tag][0];
+ // compile code
+ if (!is_array($function)) {
+ $output = '<?php $_block_repeat=true; ' . $function . '(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>';
+ } else if (is_object($function[0])) {
+ $output = '<?php $_block_repeat=true; call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'block\'][\'' . $tag . '\'][0],array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>';
+ } else {
+ $output = '<?php $_block_repeat=true; call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>';
+ }
+ } else {
+ // must endblock be nocache?
+ if ($this->compiler->nocache) {
+ $this->compiler->tag_nocache = true;
+ }
+ $base_tag = substr($tag, 0, -5);
+ // closing tag of block plugin, restore nocache
+ list($_params, $this->compiler->nocache) = $this->_close_tag($base_tag);
+ // This tag does create output
+ $this->compiler->has_output = true;
+ $function = $compiler->smarty->registered_plugins['block'][$base_tag][0];
+ // compile code
+ if (!is_array($function)) {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo ' . $function . '(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl); }?>';
+ } else if (is_object($function[0])) {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'block\'][\'' . $base_tag . '\'][0],array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>';
+ } else {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>';
+ }
+ }
+ return $output;
+ }
+}
+
+?>
diff --git a/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/libs/sysplugins/smarty_internal_compile_private_registered_function.php new file mode 100644 index 00000000..e38ee4b8 --- /dev/null +++ b/libs/sysplugins/smarty_internal_compile_private_registered_function.php @@ -0,0 +1,51 @@ +<?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
+*/
+class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase {
+ /**
+ * Compiles code for the execution of a registered function
+ *
+ * @param array $args array with attributes from parser
+ * @param string $tag name of function
+ * @param object $compiler compiler object
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $tag)
+ {
+ $this->compiler = $compiler;
+ // This tag does create output
+ $this->compiler->has_output = true;
+
+ $this->required_attributes = array();
+ $this->optional_attributes = array('_any');
+ // check and get attributes
+ $_attr = $this->_get_attributes($args);
+ // not cachable?
+ $this->compiler->tag_nocache = !$compiler->smarty->registered_plugins['function'][$tag][1];
+ // 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 = '<?php echo call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'function\'][\'' . $tag . '\'][0],array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl));?>';
+ return $output;
+ }
+}
+
+?>
diff --git a/libs/sysplugins/smarty_internal_compile_special_smarty_variable.php b/libs/sysplugins/smarty_internal_compile_private_special_variable.php index 2405385d..9e261625 100644 --- a/libs/sysplugins/smarty_internal_compile_special_smarty_variable.php +++ b/libs/sysplugins/smarty_internal_compile_private_special_variable.php @@ -11,7 +11,7 @@ /** * Smarty Internal Plugin Compile special Smarty Variable Class */ -class Smarty_Internal_Compile_Special_Smarty_Variable extends Smarty_Internal_CompileBase { +class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase { /** * Compiles code for the speical $smarty variables * @@ -57,7 +57,7 @@ class Smarty_Internal_Compile_Special_Smarty_Variable extends Smarty_Internal_Co return "'$_template_dir_name'"; case 'version': - $_version = Smarty::$_version; + $_version = Smarty::SMARTY_VERSION; return "'$_version'"; case 'const': @@ -78,7 +78,7 @@ class Smarty_Internal_Compile_Special_Smarty_Variable extends Smarty_Internal_Co return "'$_rdelim'"; default: - $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is an unknown reference'); + $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is invalid'); break; } if (isset($_index[1])) { diff --git a/libs/sysplugins/smarty_internal_compilebase.php b/libs/sysplugins/smarty_internal_compilebase.php index 61096420..7a398f53 100644 --- a/libs/sysplugins/smarty_internal_compilebase.php +++ b/libs/sysplugins/smarty_internal_compilebase.php @@ -8,12 +8,6 @@ * @author Uwe Tews */ -/* -interface TagCompilerInterface { - public function compile($args, $compiler); -} -*/ - /** * This class does extend all internal compile plugins */ diff --git a/libs/sysplugins/smarty_internal_configfilelexer.php b/libs/sysplugins/smarty_internal_configfilelexer.php index 5034002f..d7e14164 100644 --- a/libs/sysplugins/smarty_internal_configfilelexer.php +++ b/libs/sysplugins/smarty_internal_configfilelexer.php @@ -28,7 +28,7 @@ class Smarty_Internal_Configfilelexer { // set instance object self::instance($this); - $this->data = $data; + $this->data = $data . "\n"; //now all lines are \n-terminated $this->counter = 0; $this->line = 1; $this->smarty = $smarty; @@ -69,6 +69,7 @@ class Smarty_Internal_Configfilelexer + function yylex1() { $tokenMap = array ( @@ -79,16 +80,12 @@ class Smarty_Internal_Configfilelexer 5 => 0, 6 => 0, 7 => 0, - 8 => 1, - 10 => 0, - 11 => 0, - 12 => 0, - 13 => 0, + 8 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(\\s*#)|^('[^'\\\\\\\\]*(?:\\\\\\\\.[^'\\\\\\\\]*)*')|^(\"\"\"[^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*\"\"\")|^(\"[^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*\")|^(\\[)|^(])|^(\\s*=\\s*)|^((\n|\r\n))|^([\s]+)|^(\\.)|^([0-9]*[a-zA-Z_]\\w*)|^(.)/"; + $yy_global_pattern = "/^(#)|^(\\[)|^(\\])|^(=)|^([ \t\r]+)|^(\n)|^(\\.)|^(\\w+)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { @@ -141,63 +138,321 @@ class Smarty_Internal_Configfilelexer function yy_r1_1($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; + $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; + $this->yypushstate(self::COMMENT); } function yy_r1_2($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_SI_QSTR; + $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; } function yy_r1_3($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_ML_QSTR; + $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; } function yy_r1_4($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_DO_QSTR; + $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; + $this->yypushstate(self::VALUE); } function yy_r1_5($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; + return false; } function yy_r1_6($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; + $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; } function yy_r1_7($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; + $this->token = Smarty_Internal_Configfileparser::TPC_DOT; } function yy_r1_8($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_EOL; + $this->token = Smarty_Internal_Configfileparser::TPC_ID; } - function yy_r1_10($yy_subpatterns) + + + + function yylex2() + { + $tokenMap = array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + ); + if ($this->counter >= strlen($this->data)) { + return false; // end of input + } + $yy_global_pattern = "/^([ \t\r]+)|^(\\d+\\.\\d+(?=[ \t\r]*[\n#]))|^(\\d+(?=[ \t\r]*[\n#]))|^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#]))|^(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#]))|^(\"\"\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"\"\"(?=[ \t\r]*[\n#]))|^([a-zA-Z]+(?=[ \t\r]*[\n#]))|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/"; + + do { + if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { + $yysubmatches = $yymatches; + $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns + if (!count($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 + if ($tokenMap[$this->token]) { + // extract sub-patterns for passing to lex function + $yysubmatches = array_slice($yysubmatches, $this->token + 1, + $tokenMap[$this->token]); + } else { + $yysubmatches = array(); + } + $this->value = current($yymatches); // token value + $r = $this->{'yy_r2_' . $this->token}($yysubmatches); + 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 >= strlen($this->data)) { + 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 VALUE = 2; + function yy_r2_1($yy_subpatterns) + { + + return false; + } + function yy_r2_2($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT; + $this->yypopstate(); + } + function yy_r2_3($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_INT; + $this->yypopstate(); + } + function yy_r2_4($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING; + $this->yypopstate(); + } + function yy_r2_5($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING; + $this->yypopstate(); + } + function yy_r2_6($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_DOUBLE_QUOTED_STRING; + $this->yypopstate(); + } + function yy_r2_7($yy_subpatterns) + { + + if (!$this->smarty->config_booleanize || !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(); + } + } + function yy_r2_8($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; + $this->yypopstate(); + } + function yy_r2_9($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; + $this->value = ""; + $this->yypopstate(); + } + + + + function yylex3() + { + $tokenMap = array ( + 1 => 0, + ); + if ($this->counter >= strlen($this->data)) { + return false; // end of input + } + $yy_global_pattern = "/^([^\n]+?(?=[ \t\r]*\n))/"; + + do { + if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { + $yysubmatches = $yymatches; + $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns + if (!count($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 + if ($tokenMap[$this->token]) { + // extract sub-patterns for passing to lex function + $yysubmatches = array_slice($yysubmatches, $this->token + 1, + $tokenMap[$this->token]); + } else { + $yysubmatches = array(); + } + $this->value = current($yymatches); // token value + $r = $this->{'yy_r3_' . $this->token}($yysubmatches); + 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 >= strlen($this->data)) { + 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 NAKED_STRING_VALUE = 3; + function yy_r3_1($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_SPACE; + $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; + $this->yypopstate(); } - function yy_r1_11($yy_subpatterns) + + + + function yylex4() { + $tokenMap = array ( + 1 => 0, + 2 => 0, + 3 => 0, + ); + if ($this->counter >= strlen($this->data)) { + return false; // end of input + } + $yy_global_pattern = "/^([ \t\r]+)|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/"; - $this->token = Smarty_Internal_Configfileparser::TPC_DOT; + do { + if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { + $yysubmatches = $yymatches; + $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns + if (!count($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 + if ($tokenMap[$this->token]) { + // extract sub-patterns for passing to lex function + $yysubmatches = array_slice($yysubmatches, $this->token + 1, + $tokenMap[$this->token]); + } else { + $yysubmatches = array(); + } + $this->value = current($yymatches); // token value + $r = $this->{'yy_r4_' . $this->token}($yysubmatches); + 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 >= strlen($this->data)) { + 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 COMMENT = 4; + function yy_r4_1($yy_subpatterns) + { + + return false; } - function yy_r1_12($yy_subpatterns) + function yy_r4_2($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_ID; + $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; } - function yy_r1_13($yy_subpatterns) + function yy_r4_3($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_OTHER; + $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; + $this->yypopstate(); } + } ?> diff --git a/libs/sysplugins/smarty_internal_configfileparser.php b/libs/sysplugins/smarty_internal_configfileparser.php index 299cdbd7..68fe97a0 100644 --- a/libs/sysplugins/smarty_internal_configfileparser.php +++ b/libs/sysplugins/smarty_internal_configfileparser.php @@ -100,8 +100,6 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser $this->lex = $lex; $this->smarty = $compiler->smarty; $this->compiler = $compiler; - $this->current_section = null; - $this->hidden_section = false; } public static function &instance($new_instance = null) { @@ -110,70 +108,145 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser $instance = $new_instance; return $instance; } - -#line 107 "smarty_internal_configfileparser.php" - const TPC_OTHER = 1; - const TPC_OPENB = 2; + private function parse_bool($str) { + if (in_array(strtolower($str) ,array('on','yes','true'))) { + $res = true; + } else { + assert(in_array(strtolower($str), array('off','no','false'))); + $res = false; + } + return $res; + } + + private static $escapes_single = Array('\\' => '\\', + '\'' => '\''); + 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; + } + + private static function parse_double_quoted_string($qstr) { + $inner_str = substr($qstr, 1, strlen($qstr)-2); + return stripcslashes($inner_str); + } + + private static function parse_tripple_double_quoted_string($qstr) { + $inner_str = substr($qstr, 3, strlen($qstr)-6); + return stripcslashes($inner_str); + } + + private function set_var(Array $var, Array &$target_array) { + $key = $var["key"]; + $value = $var["value"]; + + if ($this->smarty->config_overwrite || !isset($target_array['vars'][$key])) { + $target_array['vars'][$key] = $value; + } else { + settype($target_array['vars'][$key], 'array'); + $target_array['vars'][$key][] = $value; + } + } + + 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); + } + } + + 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]); + } + } +#line 175 "smarty_internal_configfileparser.php" + + const TPC_OPENB = 1; + const TPC_ID = 2; const TPC_CLOSEB = 3; const TPC_DOT = 4; - const TPC_BOOLEANTRUE = 5; - const TPC_BOOLEANFALSE = 6; - const TPC_SI_QSTR = 7; - const TPC_DO_QSTR = 8; - const TPC_EQUAL = 9; - const TPC_SPACE = 10; - const TPC_ID = 11; - const TPC_EOL = 12; - const TPC_COMMENTSTART = 13; - const TPC_ML_QSTR = 14; - const YY_NO_ACTION = 49; - const YY_ACCEPT_ACTION = 48; - const YY_ERROR_ACTION = 47; + const TPC_EQUAL = 5; + const TPC_FLOAT = 6; + const TPC_INT = 7; + const TPC_BOOL = 8; + const TPC_SINGLE_QUOTED_STRING = 9; + const TPC_DOUBLE_QUOTED_STRING = 10; + const TPC_TRIPPLE_DOUBLE_QUOTED_STRING = 11; + const TPC_NAKED_STRING = 12; + const TPC_NEWLINE = 13; + const TPC_COMMENTSTART = 14; + const YY_NO_ACTION = 58; + const YY_ACCEPT_ACTION = 57; + const YY_ERROR_ACTION = 56; - const YY_SZ_ACTTAB = 37; + const YY_SZ_ACTTAB = 53; static public $yy_action = array( - /* 0 */ 9, 21, 20, 18, 3, 14, 27, 26, 28, 12, - /* 10 */ 15, 2, 21, 6, 16, 7, 5, 14, 48, 4, - /* 20 */ 17, 11, 24, 23, 1, 8, 23, 10, 13, 21, - /* 30 */ 27, 25, 22, 43, 43, 43, 19, + /* 0 */ 24, 34, 33, 32, 31, 35, 21, 57, 6, 14, + /* 10 */ 22, 7, 2, 9, 29, 8, 2, 9, 19, 11, + /* 20 */ 19, 11, 26, 23, 2, 9, 15, 20, 46, 2, + /* 30 */ 9, 12, 25, 46, 2, 9, 10, 17, 18, 27, + /* 40 */ 16, 5, 13, 30, 28, 46, 5, 46, 3, 4, + /* 50 */ 46, 46, 1, ); static public $yy_lookahead = array( - /* 0 */ 2, 1, 19, 19, 21, 22, 22, 7, 8, 11, - /* 10 */ 12, 13, 1, 3, 14, 20, 21, 22, 16, 17, - /* 20 */ 18, 4, 19, 12, 9, 3, 12, 11, 11, 1, - /* 30 */ 22, 19, 19, 23, 23, 23, 18, + /* 0 */ 6, 7, 8, 9, 10, 11, 12, 16, 17, 2, + /* 10 */ 19, 5, 21, 22, 19, 3, 21, 22, 13, 14, + /* 20 */ 13, 14, 19, 13, 21, 22, 2, 19, 24, 21, + /* 30 */ 22, 1, 19, 24, 21, 22, 3, 12, 13, 18, + /* 40 */ 2, 20, 4, 23, 18, 24, 20, 24, 21, 21, + /* 50 */ 24, 24, 21, ); - const YY_SHIFT_USE_DFLT = -3; - const YY_SHIFT_MAX = 13; + const YY_SHIFT_USE_DFLT = -7; + const YY_SHIFT_MAX = 17; static public $yy_shift_ofst = array( - /* 0 */ -2, 0, 11, 11, -2, 28, 14, 14, 14, 17, - /* 10 */ 10, 16, 15, 22, + /* 0 */ 7, 7, 7, 7, 7, 30, 30, -6, 5, 5, + /* 10 */ 5, 25, 38, 24, 6, 12, 33, 10, ); - const YY_REDUCE_USE_DFLT = -18; - const YY_REDUCE_MAX = 8; + const YY_REDUCE_USE_DFLT = -10; + const YY_REDUCE_MAX = 10; static public $yy_reduce_ofst = array( - /* 0 */ 2, -5, -17, -16, 18, 8, 13, 12, 3, + /* 0 */ -9, 8, 13, 3, -5, 21, 26, 20, 31, 28, + /* 10 */ 27, ); static public $yyExpectedTokens = array( - /* 0 */ array(2, 11, 12, 13, ), - /* 1 */ array(1, 7, 8, 14, ), - /* 2 */ array(1, 12, ), - /* 3 */ array(1, 12, ), - /* 4 */ array(2, 11, 12, 13, ), + /* 0 */ array(2, 13, 14, ), + /* 1 */ array(2, 13, 14, ), + /* 2 */ array(2, 13, 14, ), + /* 3 */ array(2, 13, 14, ), + /* 4 */ array(2, 13, 14, ), /* 5 */ array(1, ), - /* 6 */ array(12, ), - /* 7 */ array(12, ), - /* 8 */ array(12, ), - /* 9 */ array(4, 11, ), - /* 10 */ array(3, ), - /* 11 */ array(11, ), - /* 12 */ array(9, ), - /* 13 */ array(3, ), - /* 14 */ array(), - /* 15 */ array(), - /* 16 */ array(), - /* 17 */ array(), + /* 6 */ array(1, ), + /* 7 */ array(6, 7, 8, 9, 10, 11, 12, ), + /* 8 */ array(13, 14, ), + /* 9 */ array(13, 14, ), + /* 10 */ array(13, 14, ), + /* 11 */ array(12, 13, ), + /* 12 */ array(2, 4, ), + /* 13 */ array(2, ), + /* 14 */ array(5, ), + /* 15 */ array(3, ), + /* 16 */ array(3, ), + /* 17 */ array(13, ), /* 18 */ array(), /* 19 */ array(), /* 20 */ array(), @@ -185,35 +258,28 @@ static public $yy_action = array( /* 26 */ array(), /* 27 */ array(), /* 28 */ array(), + /* 29 */ array(), + /* 30 */ array(), + /* 31 */ array(), + /* 32 */ array(), + /* 33 */ array(), + /* 34 */ array(), + /* 35 */ array(), ); static public $yy_default = array( - /* 0 */ 47, 47, 43, 43, 29, 38, 43, 43, 43, 47, - /* 10 */ 47, 47, 47, 47, 45, 35, 41, 30, 37, 31, - /* 20 */ 36, 46, 33, 42, 32, 34, 39, 44, 40, + /* 0 */ 44, 44, 44, 44, 44, 39, 39, 56, 56, 56, + /* 10 */ 56, 56, 56, 56, 56, 56, 56, 56, 54, 53, + /* 20 */ 41, 52, 37, 55, 46, 42, 40, 38, 36, 43, + /* 30 */ 45, 50, 49, 48, 47, 51, ); - const YYNOCODE = 24; + const YYNOCODE = 25; const YYSTACKDEPTH = 100; - const YYNSTATE = 29; - const YYNRULE = 18; + const YYNSTATE = 36; + const YYNRULE = 20; const YYERRORSYMBOL = 15; const YYERRSYMDT = 'yy0'; - const YYFALLBACK = 1; + const YYFALLBACK = 0; static public $yyFallback = array( - 0, /* $ => nothing */ - 0, /* OTHER => nothing */ - 1, /* OPENB => OTHER */ - 1, /* CLOSEB => OTHER */ - 1, /* DOT => OTHER */ - 1, /* BOOLEANTRUE => OTHER */ - 1, /* BOOLEANFALSE => OTHER */ - 1, /* SI_QSTR => OTHER */ - 1, /* DO_QSTR => OTHER */ - 1, /* EQUAL => OTHER */ - 1, /* SPACE => OTHER */ - 1, /* ID => OTHER */ - 0, /* EOL => nothing */ - 0, /* COMMENTSTART => nothing */ - 0, /* ML_QSTR => nothing */ ); static function Trace($TraceFILE, $zTracePrompt) { @@ -239,33 +305,35 @@ static public $yy_action = array( public $yystack = array(); /* The parser's stack */ public $yyTokenName = array( - '$', 'OTHER', 'OPENB', 'CLOSEB', - 'DOT', 'BOOLEANTRUE', 'BOOLEANFALSE', 'SI_QSTR', - 'DO_QSTR', 'EQUAL', 'SPACE', 'ID', - 'EOL', 'COMMENTSTART', 'ML_QSTR', 'error', - 'start', 'config', 'config_element', 'opteol', - 'value', 'text', 'textelement', + '$', 'OPENB', 'ID', 'CLOSEB', + 'DOT', 'EQUAL', 'FLOAT', 'INT', + 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_DOUBLE_QUOTED_STRING', + 'NAKED_STRING', 'NEWLINE', 'COMMENTSTART', 'error', + 'start', 'global_vars', 'sections', 'var_list', + 'section', 'newline', 'var', 'value', ); static public $yyRuleName = array( - /* 0 */ "start ::= config", - /* 1 */ "config ::= config_element", - /* 2 */ "config ::= config config_element", - /* 3 */ "config_element ::= OPENB ID CLOSEB opteol", - /* 4 */ "config_element ::= OPENB DOT ID CLOSEB opteol", - /* 5 */ "config_element ::= ID EQUAL value opteol", - /* 6 */ "config_element ::= EOL", - /* 7 */ "config_element ::= COMMENTSTART opteol", - /* 8 */ "config_element ::= COMMENTSTART text opteol", - /* 9 */ "value ::= text", - /* 10 */ "value ::= SI_QSTR", - /* 11 */ "value ::= DO_QSTR", - /* 12 */ "value ::= ML_QSTR", - /* 13 */ "opteol ::= EOL", - /* 14 */ "opteol ::=", - /* 15 */ "text ::= text textelement", - /* 16 */ "text ::= textelement", - /* 17 */ "textelement ::= OTHER", + /* 0 */ "start ::= global_vars sections", + /* 1 */ "global_vars ::= var_list", + /* 2 */ "sections ::= section sections", + /* 3 */ "sections ::=", + /* 4 */ "section ::= OPENB ID CLOSEB newline var_list", + /* 5 */ "section ::= OPENB DOT ID CLOSEB newline var_list", + /* 6 */ "var_list ::= newline var_list", + /* 7 */ "var_list ::= var newline var_list", + /* 8 */ "var_list ::=", + /* 9 */ "var ::= ID EQUAL value", + /* 10 */ "value ::= FLOAT", + /* 11 */ "value ::= INT", + /* 12 */ "value ::= BOOL", + /* 13 */ "value ::= SINGLE_QUOTED_STRING", + /* 14 */ "value ::= DOUBLE_QUOTED_STRING", + /* 15 */ "value ::= TRIPPLE_DOUBLE_QUOTED_STRING", + /* 16 */ "value ::= NAKED_STRING", + /* 17 */ "newline ::= NEWLINE", + /* 18 */ "newline ::= COMMENTSTART NEWLINE", + /* 19 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE", ); function tokenName($tokenType) @@ -539,95 +607,92 @@ static public $yy_action = array( } static public $yyRuleInfo = array( - array( 'lhs' => 16, 'rhs' => 1 ), + array( 'lhs' => 16, 'rhs' => 2 ), array( 'lhs' => 17, 'rhs' => 1 ), - array( 'lhs' => 17, 'rhs' => 2 ), - array( 'lhs' => 18, 'rhs' => 4 ), - array( 'lhs' => 18, 'rhs' => 5 ), - array( 'lhs' => 18, 'rhs' => 4 ), - array( 'lhs' => 18, 'rhs' => 1 ), array( 'lhs' => 18, 'rhs' => 2 ), - array( 'lhs' => 18, 'rhs' => 3 ), - array( 'lhs' => 20, 'rhs' => 1 ), - array( 'lhs' => 20, 'rhs' => 1 ), - array( 'lhs' => 20, 'rhs' => 1 ), - array( 'lhs' => 20, 'rhs' => 1 ), - array( 'lhs' => 19, 'rhs' => 1 ), + array( 'lhs' => 18, 'rhs' => 0 ), + array( 'lhs' => 20, 'rhs' => 5 ), + array( 'lhs' => 20, 'rhs' => 6 ), + array( 'lhs' => 19, 'rhs' => 2 ), + array( 'lhs' => 19, 'rhs' => 3 ), array( 'lhs' => 19, 'rhs' => 0 ), - array( 'lhs' => 21, 'rhs' => 2 ), + array( 'lhs' => 22, 'rhs' => 3 ), + array( 'lhs' => 23, 'rhs' => 1 ), + array( 'lhs' => 23, 'rhs' => 1 ), + array( 'lhs' => 23, 'rhs' => 1 ), + array( 'lhs' => 23, 'rhs' => 1 ), + array( 'lhs' => 23, 'rhs' => 1 ), + array( 'lhs' => 23, 'rhs' => 1 ), + array( 'lhs' => 23, 'rhs' => 1 ), array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 22, 'rhs' => 1 ), + array( 'lhs' => 21, 'rhs' => 2 ), + array( 'lhs' => 21, 'rhs' => 3 ), ); static public $yyReduceMap = array( 0 => 0, + 2 => 0, + 3 => 0, + 17 => 0, + 18 => 0, + 19 => 0, 1 => 1, - 9 => 1, - 16 => 1, - 17 => 1, - 2 => 2, - 15 => 2, - 3 => 3, 4 => 4, 5 => 5, 6 => 6, - 7 => 6, - 8 => 6, + 16 => 6, + 7 => 7, + 8 => 8, + 9 => 9, 10 => 10, 11 => 11, - 12 => 11, + 12 => 12, + 13 => 13, + 14 => 14, + 15 => 15, ); -#line 67 "smarty_internal_configfileparser.y" - function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 577 "smarty_internal_configfileparser.php" -#line 73 "smarty_internal_configfileparser.y" - function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 580 "smarty_internal_configfileparser.php" -#line 75 "smarty_internal_configfileparser.y" - function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 583 "smarty_internal_configfileparser.php" -#line 81 "smarty_internal_configfileparser.y" - function yy_r3(){ $this->hidden_section = false; $this->current_section = $this->yystack[$this->yyidx + -2]->minor; $this->_retvalue =''; } -#line 586 "smarty_internal_configfileparser.php" -#line 83 "smarty_internal_configfileparser.y" - function yy_r4(){ if ($this->smarty->config_read_hidden) { - $this->hidden_section = false; $this->current_section = $this->yystack[$this->yyidx + -2]->minor; - } else {$this->hidden_section = true; } $this->_retvalue =''; } -#line 591 "smarty_internal_configfileparser.php" -#line 87 "smarty_internal_configfileparser.y" - function yy_r5(){if (!$this->hidden_section) { - $value=$this->yystack[$this->yyidx + -1]->minor; - if ($this->smarty->config_booleanize) { - if (in_array(strtolower($value),array('on','yes','true'))) - $value = true; - else if (in_array(strtolower($value),array('off','no','false'))) - $value = false; - } - if ($this->current_section == null) { - if ($this->smarty->config_overwrite || !isset($this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor])) { - $this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor]=$value; - } else { - settype($this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor], 'array'); - $this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor][]=$value; - } - } else { - if ($this->smarty->config_overwrite || !isset($this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor])) { - $this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor]=$value; - } else { - settype($this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor], 'array'); - $this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor][]=$value; - } - }} $this->_retvalue =''; } -#line 616 "smarty_internal_configfileparser.php" -#line 111 "smarty_internal_configfileparser.y" - function yy_r6(){ $this->_retvalue =''; } -#line 619 "smarty_internal_configfileparser.php" -#line 116 "smarty_internal_configfileparser.y" - function yy_r10(){$this->_retvalue = trim($this->yystack[$this->yyidx + 0]->minor,"'"); } -#line 622 "smarty_internal_configfileparser.php" -#line 117 "smarty_internal_configfileparser.y" - function yy_r11(){$this->_retvalue = trim($this->yystack[$this->yyidx + 0]->minor,'"'); } -#line 625 "smarty_internal_configfileparser.php" +#line 127 "smarty_internal_configfileparser.y" + function yy_r0(){ $this->_retvalue = null; } +#line 651 "smarty_internal_configfileparser.php" +#line 130 "smarty_internal_configfileparser.y" + function yy_r1(){ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null; } +#line 654 "smarty_internal_configfileparser.php" +#line 136 "smarty_internal_configfileparser.y" + function yy_r4(){ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null; } +#line 657 "smarty_internal_configfileparser.php" +#line 137 "smarty_internal_configfileparser.y" + function yy_r5(){ if ($this->smarty->config_read_hidden) { $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); } $this->_retvalue = null; } +#line 660 "smarty_internal_configfileparser.php" +#line 141 "smarty_internal_configfileparser.y" + function yy_r6(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 663 "smarty_internal_configfileparser.php" +#line 142 "smarty_internal_configfileparser.y" + function yy_r7(){ $this->_retvalue = array_merge(Array($this->yystack[$this->yyidx + -2]->minor), $this->yystack[$this->yyidx + 0]->minor); } +#line 666 "smarty_internal_configfileparser.php" +#line 143 "smarty_internal_configfileparser.y" + function yy_r8(){ $this->_retvalue = Array(); } +#line 669 "smarty_internal_configfileparser.php" +#line 147 "smarty_internal_configfileparser.y" + function yy_r9(){ $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor); } +#line 672 "smarty_internal_configfileparser.php" +#line 149 "smarty_internal_configfileparser.y" + function yy_r10(){ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor; } +#line 675 "smarty_internal_configfileparser.php" +#line 150 "smarty_internal_configfileparser.y" + function yy_r11(){ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor; } +#line 678 "smarty_internal_configfileparser.php" +#line 151 "smarty_internal_configfileparser.y" + function yy_r12(){ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor); } +#line 681 "smarty_internal_configfileparser.php" +#line 152 "smarty_internal_configfileparser.y" + function yy_r13(){ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 684 "smarty_internal_configfileparser.php" +#line 153 "smarty_internal_configfileparser.y" + function yy_r14(){ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 687 "smarty_internal_configfileparser.php" +#line 154 "smarty_internal_configfileparser.y" + function yy_r15(){ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 690 "smarty_internal_configfileparser.php" private $_retvalue; @@ -684,12 +749,12 @@ static public $yy_action = array( function yy_syntax_error($yymajor, $TOKEN) { -#line 52 "smarty_internal_configfileparser.y" +#line 120 "smarty_internal_configfileparser.y" $this->internalError = true; $this->yymajor = $yymajor; $this->compiler->trigger_config_file_error(); -#line 688 "smarty_internal_configfileparser.php" +#line 753 "smarty_internal_configfileparser.php" } function yy_accept() @@ -700,13 +765,13 @@ static public $yy_action = array( while ($this->yyidx >= 0) { $stack = $this->yy_pop_parser_stack(); } -#line 44 "smarty_internal_configfileparser.y" +#line 112 "smarty_internal_configfileparser.y" $this->successful = !$this->internalError; $this->internalError = false; $this->retvalue = $this->_retvalue; //echo $this->retvalue."\n\n"; -#line 706 "smarty_internal_configfileparser.php" +#line 771 "smarty_internal_configfileparser.php" } function doParse($yymajor, $yytokenvalue) diff --git a/libs/sysplugins/smarty_internal_templatebase.php b/libs/sysplugins/smarty_internal_data.php index b523a296..61b9b52b 100644 --- a/libs/sysplugins/smarty_internal_templatebase.php +++ b/libs/sysplugins/smarty_internal_data.php @@ -1,7 +1,7 @@ <?php /** -* Smarty Internal Plugin TemplateBase +* Smarty Internal Plugin Data * * This file contains the basic classes and methodes for template and variable creation * @@ -13,7 +13,7 @@ /** * Base class with template and variable methodes */ -class Smarty_Internal_TemplateBase { +class Smarty_Internal_Data { // class used for templates public $template_class = 'Smarty_Internal_Template'; @@ -300,8 +300,8 @@ class Smarty_Internal_TemplateBase { } if (!is_object($template)) { // we got a template resource - $_templateId = $this->buildTemplateId ($template, $cache_id, $compile_id); // already in template cache? + $_templateId = crc32($template . $cache_id . $compile_id); if (isset($this->smarty->template_objects[$_templateId]) && $this->smarty->caching) { // return cached template object $tpl = $this->smarty->template_objects[$_templateId]; @@ -324,21 +324,6 @@ class Smarty_Internal_TemplateBase { } /** - * generates a template id - * - * @param string $_resource the resource handle of the template file - * @param mixed $_cache_id cache id to be used with this template - * @param mixed $_compile_id compile id to be used with this template - * @returns string a unique template id - */ - function buildTemplateId ($_resource, $_cache_id, $_compile_id) - { - $_cache_id = isset($_cache_id) ? preg_replace('![^\w\|]+!','_',$_cache_id) : null; - $_compile_id = isset($_compile_id) ? preg_replace('![^\w\|]+!','_',$_compile_id) : null; - return crc32($_resource . $_cache_id . $_compile_id); - } - - /** * return current time * * @returns double current time @@ -358,7 +343,7 @@ class Smarty_Internal_TemplateBase { * * @param object $parent tpl_vars next higher level of Smarty variables */ -class Smarty_Data extends Smarty_Internal_TemplateBase { +class Smarty_Data extends Smarty_Internal_Data { // array of variable objects public $tpl_vars = array(); // back pointer to parent object diff --git a/libs/sysplugins/smarty_internal_debug.php b/libs/sysplugins/smarty_internal_debug.php index 6f5d1424..831cabe6 100644 --- a/libs/sysplugins/smarty_internal_debug.php +++ b/libs/sysplugins/smarty_internal_debug.php @@ -12,7 +12,7 @@ /** * Smarty Internal Plugin Debug Class */ -class Smarty_Internal_Debug extends Smarty_Internal_TemplateBase { +class Smarty_Internal_Debug extends Smarty_Internal_Data { // template data static $template_data = array(); diff --git a/libs/sysplugins/smarty_internal_run_filter.php b/libs/sysplugins/smarty_internal_filter_handler.php index f62cbe75..1d81636e 100644 --- a/libs/sysplugins/smarty_internal_run_filter.php +++ b/libs/sysplugins/smarty_internal_filter_handler.php @@ -1,9 +1,9 @@ <?php /** -* Smarty Internal Plugin Run Filter +* Smarty Internal Plugin Filter Handler * -* Smarty run filter class +* Smarty filter handler class * * @package Smarty * @subpackage PluginsInternal @@ -13,11 +13,7 @@ /** * Class for filter processing */ -class Smarty_Internal_Run_Filter { - function __construct($smarty) - { - $this->smarty = $smarty; - } +class Smarty_Internal_Filter_Handler { /** * Run filters over content * @@ -30,22 +26,22 @@ class Smarty_Internal_Run_Filter { * @param string $content the content which shall be processed by the filters * @return string the filtered content */ - public function execute($type, $content, $flag = null) + static function runFilter($type, $content, $smarty, $flag = null) { $output = $content; - if ($type != 'variable' || ($this->smarty->variable_filter && $flag !== false) || $flag === true) { + if ($type != 'variable' || ($smarty->variable_filter && $flag !== false) || $flag === true) { // loop over autoload filters of specified type - if (!empty($this->smarty->autoload_filters[$type])) { - foreach ((array)$this->smarty->autoload_filters[$type] as $name) { + if (!empty($smarty->autoload_filters[$type])) { + foreach ((array)$smarty->autoload_filters[$type] as $name) { $plugin_name = "Smarty_{$type}filter_{$name}"; - if ($this->smarty->loadPlugin($plugin_name)) { + if ($smarty->loadPlugin($plugin_name)) { // use class plugin if found if (class_exists($plugin_name, false)) { // loaded class of filter plugin - $output = call_user_func_array(array($plugin_name, 'execute'), array($output, $this->smarty)); + $output = call_user_func_array(array($plugin_name, 'execute'), array($output, $smarty)); } elseif (function_exists($plugin_name)) { // use loaded Smarty2 style plugin - $output = call_user_func_array($plugin_name, array($output, $this->smarty)); + $output = call_user_func_array($plugin_name, array($output, $smarty)); } } else { // nothing found, throw exception @@ -54,9 +50,9 @@ class Smarty_Internal_Run_Filter { } } // loop over registerd filters of specified type - if (!empty($this->smarty->registered_filters[$type])) { - foreach ($this->smarty->registered_filters[$type] as $key => $name) { - $output = call_user_func_array($this->smarty->registered_filters[$type][$key], array($output, $this->smarty)); + if (!empty($smarty->registered_filters[$type])) { + foreach ($smarty->registered_filters[$type] as $key => $name) { + $output = call_user_func_array($smarty->registered_filters[$type][$key], array($output, $smarty)); } } } diff --git a/libs/sysplugins/smarty_internal_plugin_handler.php b/libs/sysplugins/smarty_internal_plugin_handler.php deleted file mode 100644 index 367382c0..00000000 --- a/libs/sysplugins/smarty_internal_plugin_handler.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/** -* Smarty Internal Plugin Handler -* -* @package Smarty -* @subpackage PluginsInternal -* @author Uwe Tews -*/ -/** -* Smarty Internal Plugin Handler Class -*/ -class Smarty_Internal_Plugin_Handler { - function __construct($smarty) - { - $this->smarty = $smarty; - } - /** - * Call a Smarty plugin - * - * @param string $name block function name - * @param array $args $args[0] = array of plugin attributes and $args[1] = plugin types to search for - */ - public function __call($name, $args) - { - if ($this->loadSmartyPlugin($name, $args[1])) { - // call plugin - return call_user_func_array($this->smarty->registered_plugins[$name][1], $args[0]); - } else { - // plugin not found - throw new Exception("Unable to load plugin {$name}"); - } - } - public function executeModifier($name, $args, $check_array) - { - if ($this->loadSmartyPlugin($name, 'modifier')) { - // call plugin - if (!$check_array || !is_array($args[0])) { - return call_user_func_array($this->smarty->registered_plugins[$name][1], $args); - } else { - $args0 = $args[0]; - foreach ($args0 as $key => $arg0) { - $args[0] = $arg0; - $result[$key] = call_user_func_array($this->smarty->registered_plugins[$name][1], $args); - } - return $result; - } - } elseif (is_callable($name)) { - if (!$check_array || !is_array($args[0])) { - return call_user_func_array($name, $args); - } else { - $args0 = $args[0]; - foreach ($args0 as $key => $arg0) { - $args[0] = $arg0; - $result[$key] = call_user_func_array($name, $args); - } - return $result; - } - } else { - // plugin not found - throw new Exception("Unable to load plugin {$name}"); - } - } - /** - * Lazy loads plugin files - * class name format: Smarty_PluginType_FuncName - * plugin filename format: plugintype.funcname.php - * - * @param string $name plugin name - * @param array $type array of plugin types to search for - */ - public function loadSmartyPlugin($name, $type) - { - // load plugin if missing - if (isset($this->smarty->registered_plugins[$name])) { - return true; - } else { - foreach ((array)$type as $plugin_type) { - $plugin = 'smarty_' . $plugin_type . '_' . $name; - if ($this->smarty->loadPlugin($plugin)) { - if (class_exists($plugin, false)) { - $plugin = array(new $plugin, 'execute'); - } - if (is_callable($plugin)) { - $this->smarty->registered_plugins[$name] = array($plugin_type, $plugin, true); - return true; - } else { - throw new Exception("Plugin \"{$name}\" not callable"); - } - } - } - } - if (!empty($this->smarty->default_plugin_handler_func)) { - if (!is_callable($this->smarty->default_plugin_handler_func)) { - throw new Exception("Default template handler not callable"); - } else { - return call_user_func_array($this->smarty->default_plugin_handler_func, array($name, $type, &$this)); - } - } - return false; - } -} - -?> diff --git a/libs/sysplugins/smarty_internal_resource_extends.php b/libs/sysplugins/smarty_internal_resource_extends.php index 81f0e78b..4a045767 100644 --- a/libs/sysplugins/smarty_internal_resource_extends.php +++ b/libs/sysplugins/smarty_internal_resource_extends.php @@ -21,6 +21,9 @@ class Smarty_Internal_Resource_Extends { public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; public $template_lexer_class = 'Smarty_Internal_Templatelexer'; public $template_parser_class = 'Smarty_Internal_Templateparser'; + // properties + public $usesCompiler = true; + public $isEvaluated = false; /** * Return flag if template source is existing @@ -136,27 +139,6 @@ class Smarty_Internal_Resource_Extends { } /** - * Return flag that this resource uses the compiler - * - * @return boolean true - */ - public function usesCompiler() - { - // template has tags, uses compiler - return true; - } - - /** - * Return flag that this is not evaluated - * - * @return boolean false - */ - public function isEvaluated() - { - // save the compiled file to disk, do not evaluate - return false; - } - /** * Get filepath to compiled template * * @param object $template template object diff --git a/libs/sysplugins/smarty_internal_resource_file.php b/libs/sysplugins/smarty_internal_resource_file.php index db876e5e..b0a5163c 100644 --- a/libs/sysplugins/smarty_internal_resource_file.php +++ b/libs/sysplugins/smarty_internal_resource_file.php @@ -21,6 +21,9 @@ class Smarty_Internal_Resource_File { public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; public $template_lexer_class = 'Smarty_Internal_Templatelexer'; public $template_parser_class = 'Smarty_Internal_Templateparser'; + // properties + public $usesCompiler = true; + public $isEvaluated = false; /** * Return flag if template source is existing @@ -83,27 +86,6 @@ class Smarty_Internal_Resource_File { } /** - * Return flag that this resource uses the compiler - * - * @return boolean true - */ - public function usesCompiler() - { - // template has tags, uses compiler - return true; - } - - /** - * Return flag that this is not evaluated - * - * @return boolean false - */ - public function isEvaluated() - { - // save the compiled file to disk, do not evaluate - return false; - } - /** * Get filepath to compiled template * * @param object $_template template object diff --git a/libs/sysplugins/smarty_internal_resource_php.php b/libs/sysplugins/smarty_internal_resource_php.php index f3ed97db..7dee7ec7 100644 --- a/libs/sysplugins/smarty_internal_resource_php.php +++ b/libs/sysplugins/smarty_internal_resource_php.php @@ -21,6 +21,9 @@ class Smarty_Internal_Resource_PHP { $this->smarty = $smarty; ini_set('short_open_tag', '1'); } + // properties + public $usesCompiler = false; + public $isEvaluated = false; /** * Return flag if template source is existing @@ -80,27 +83,6 @@ class Smarty_Internal_Resource_PHP { } } - /** - * Return flag that this resource not use the compiler - * - * @return boolean false - */ - public function usesCompiler() - { - // does not use compiler, template is PHP - return false; - } - - /** - * Return flag that this is not evaluated - * - * @return boolean false - */ - public function isEvaluated() - { - // does not use compiler, must be false - return false; - } /** * Get filepath to compiled template diff --git a/libs/sysplugins/smarty_internal_resource_registered.php b/libs/sysplugins/smarty_internal_resource_registered.php index e24b5e3d..33868450 100644 --- a/libs/sysplugins/smarty_internal_resource_registered.php +++ b/libs/sysplugins/smarty_internal_resource_registered.php @@ -22,6 +22,9 @@ class Smarty_Internal_Resource_Registered { public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; public $template_lexer_class = 'Smarty_Internal_Templatelexer'; public $template_parser_class = 'Smarty_Internal_Templateparser'; + // properties + public $usesCompiler = true; + public $isEvaluated = false; /** * Return flag if template source is existing @@ -94,28 +97,6 @@ class Smarty_Internal_Resource_Registered { } /** - * Return flag that this resource uses the compiler - * - * @return boolean true - */ - public function usesCompiler() - { - // resource string is template, needs compiler - return true; - } - - /** - * Return flag that this resource is evaluated - * - * @return boolean true - */ - public function isEvaluated() - { - // compiled template is evaluated instead of saved to disk - return false; - } - - /** * Get filepath to compiled template * * @param object $_template template object diff --git a/libs/sysplugins/smarty_internal_resource_stream.php b/libs/sysplugins/smarty_internal_resource_stream.php index 16e5a417..2024a3a7 100644 --- a/libs/sysplugins/smarty_internal_resource_stream.php +++ b/libs/sysplugins/smarty_internal_resource_stream.php @@ -22,6 +22,9 @@ class Smarty_Internal_Resource_Stream { public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; public $template_lexer_class = 'Smarty_Internal_Templatelexer'; public $template_parser_class = 'Smarty_Internal_Templateparser'; + // properties + public $usesCompiler = true; + public $isEvaluated = true; /** * Return flag if template source is existing @@ -81,28 +84,6 @@ class Smarty_Internal_Resource_Stream { } /** - * Return flag that this resource uses the compiler - * - * @return boolean true - */ - public function usesCompiler() - { - // resource string is template, needs compiler - return true; - } - - /** - * Return flag that this resource is evaluated - * - * @return boolean true - */ - public function isEvaluated() - { - // compiled template is evaluated instead of saved to disk - return true; - } - - /** * Get filepath to compiled template * * @param object $_template template object diff --git a/libs/sysplugins/smarty_internal_resource_string.php b/libs/sysplugins/smarty_internal_resource_string.php index f7b7b853..ad519b38 100644 --- a/libs/sysplugins/smarty_internal_resource_string.php +++ b/libs/sysplugins/smarty_internal_resource_string.php @@ -22,6 +22,9 @@ class Smarty_Internal_Resource_String { public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; public $template_lexer_class = 'Smarty_Internal_Templatelexer'; public $template_parser_class = 'Smarty_Internal_Templateparser'; + // properties + public $usesCompiler = true; + public $isEvaluated = true; /** * Return flag if template source is existing @@ -72,28 +75,6 @@ class Smarty_Internal_Resource_String { } /** - * Return flag that this resource uses the compiler - * - * @return boolean true - */ - public function usesCompiler() - { - // resource string is template, needs compiler - return true; - } - - /** - * Return flag that this resource is evaluated - * - * @return boolean true - */ - public function isEvaluated() - { - // compiled template is evaluated instead of saved to disk - return true; - } - - /** * Get filepath to compiled template * * @param object $_template template object diff --git a/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/libs/sysplugins/smarty_internal_smartytemplatecompiler.php index c627cc19..04799b0c 100644 --- a/libs/sysplugins/smarty_internal_smartytemplatecompiler.php +++ b/libs/sysplugins/smarty_internal_smartytemplatecompiler.php @@ -37,12 +37,12 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom tags in the templates are replaces with PHP code, then written to compiled files. */ // init the lexer/parser to compile the template - $this->lex = new $this->lexer_class($_content,$this->smarty); + $this->lex = new $this->lexer_class($_content, $this); $this->parser = new $this->parser_class($this->lex, $this); - //$this->parser->PrintTrace(); + // $this->parser->PrintTrace(); // get tokens from lexer and parse them while ($this->lex->yylex() && !$this->abort_and_recompile) { - //echo "<pre>Line {$this->lex->line} Parsing {$this->parser->yyTokenName[$this->lex->token]} Token ".htmlentities($this->lex->value)."</pre>"; + // echo "<pre>Line {$this->lex->line} Parsing {$this->parser->yyTokenName[$this->lex->token]} Token ".htmlentities($this->lex->value)."</pre>"; $this->parser->doParse($this->lex->token, $this->lex->value); } @@ -61,7 +61,8 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom if (!$this->compile_error) { // return compiled code - return str_replace(array("?>\n<?php","?><?php"), array('',''), $this->parser->retvalue); + // return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue); + return $this->parser->retvalue; } else { // compilation error return false; diff --git a/libs/sysplugins/smarty_internal_template.php b/libs/sysplugins/smarty_internal_template.php index 82fa24bd..33be8d83 100644 --- a/libs/sysplugins/smarty_internal_template.php +++ b/libs/sysplugins/smarty_internal_template.php @@ -13,7 +13,7 @@ /** * Main class with template data structures and methods */ -class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { +class Smarty_Internal_Template extends Smarty_Internal_Data { // object cache public $compiler_object = null; public $cacher_object = null; @@ -30,9 +30,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { public $template_resource = null; public $resource_type = null; public $resource_name = null; - private $resource_object = null; - private $usesCompiler = null; - private $isEvaluated = null; + public $resource_object = null; private $isExisting = null; // Template source public $template_filepath = null; @@ -65,7 +63,9 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { // special properties public $properties = array(); // storage for block data - public $block_data = array(); + public $block_data = array(); + // required plugins + public $required_plugins = array(); /** * Create template data object @@ -89,7 +89,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { if ($this->caching === true) $this->caching = SMARTY_CACHING_LIFETIME_CURRENT; $this->cache_lifetime = $_cache_lifetime === null ?$this->smarty->cache_lifetime : $_cache_lifetime; $this->force_cache = $this->smarty->force_cache; - $this->cacher_class = $this->smarty->cacher_class; $this->security = $this->smarty->security; $this->parent = $_parent; $this->properties['file_dependency'] = array(); @@ -102,7 +101,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { throw new Exception ("Unable to parse resource name \"{$template_resource}\""); } // load cache resource - if (!$this->isEvaluated() && ($this->caching == 1 || $this->caching == 2)) { + if (!$this->resource_object->isEvaluated && ($this->caching == 1 || $this->caching == 2)) { $this->cache_resource_object = $this->smarty->loadCacheResource(); } } @@ -169,33 +168,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { } return $this->isExisting; } - /** - * Returns if the template resource uses the Smarty compiler - * - * The status is determined by the actual resource handler - * - * @return boolean true if the template will use the compiler - */ - public function usesCompiler () - { - return $this->usesCompiler === null ? - $this->usesCompiler = $this->resource_object->usesCompiler() : - $this->usesCompiler; - } - - /** - * Returns if the compiled template is stored or just evaluated in memory - * - * The status is determined by the actual resource handler - * - * @return boolean true if the compiled template has to be evaluated - */ - public function isEvaluated () - { - return $this->isEvaluated === null ? - $this->isEvaluated = $this->resource_object->isEvaluated() : - $this->isEvaluated; - } /** * Returns if the current template must be compiled by the Smarty compiler @@ -208,7 +180,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { { $this->isExisting(true); if ($this->mustCompile === null) { - $this->mustCompile = ($this->usesCompiler() && ($this->force_compile || $this->isEvaluated() || $this->getCompiledTimestamp () === false || + $this->mustCompile = ($this->resource_object->usesCompiler && ($this->force_compile || $this->resource_object->isEvaluated || $this->getCompiledTimestamp () === false || // ($this->smarty->compile_check && $this->getCompiledTimestamp () !== $this->getTemplateTimestamp ()))); ($this->smarty->compile_check && $this->getCompiledTimestamp () < $this->getTemplateTimestamp ()))); } @@ -223,7 +195,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { public function getCompiledFilepath () { return $this->compiled_filepath === null ? - ($this->compiled_filepath = !$this->isEvaluated() ? $this->resource_object->getCompiledFilepath($this) : false) : + ($this->compiled_filepath = !$this->resource_object->isEvaluated ? $this->resource_object->getCompiledFilepath($this) : false) : $this->compiled_filepath; } @@ -235,7 +207,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { public function getCompiledTimestamp () { return $this->compiled_timestamp === null ? - ($this->compiled_timestamp = (!$this->isEvaluated() && file_exists($this->getCompiledFilepath())) ? filemtime($this->getCompiledFilepath()) : false) : + ($this->compiled_timestamp = (!$this->resource_object->isEvaluated && file_exists($this->getCompiledFilepath())) ? filemtime($this->getCompiledFilepath()) : false) : $this->compiled_timestamp; } @@ -254,7 +226,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { $this->compileTemplateSource(); } else { if ($this->compiled_template === null) { - $this->compiled_template = !$this->isEvaluated() && $this->usesCompiler() ? file_get_contents($this->getCompiledFilepath()) : false; + $this->compiled_template = !$this->resource_object->isEvaluated && $this->resource_object->usesCompiler ? file_get_contents($this->getCompiledFilepath()) : false; } } } @@ -268,7 +240,8 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { */ public function compileTemplateSource () { - if (!$this->isEvaluated) { + if (!$this->resource_object->isEvaluated) { + $this->properties['file_dependency'] = array(); $this->properties['file_dependency']['F' . abs(crc32($this->getTemplateFilepath()))] = array($this->getTemplateFilepath(), $this->getTemplateTimestamp()); } if ($this->smarty->debugging) { @@ -278,17 +251,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { if (!is_object($this->compiler_object)) { // load compiler $this->smarty->loadPlugin($this->resource_object->compiler_class); - $this->compiler_object = new $this->resource_object->compiler_class($this->resource_object->template_lexer_class, $this->resource_object->template_parser_class, $this->smarty); - // load cacher - if ($this->caching) { - $this->smarty->loadPlugin($this->cacher_class); - $this->cacher_object = new $this->cacher_class($this->smarty); - } + $this->compiler_object = new $this->resource_object->compiler_class($this->resource_object->template_lexer_class, $this->resource_object->template_parser_class, $this->smarty); } // call compiler if ($this->compiler_object->compileTemplate($this)) { // compiling succeded - if (!$this->isEvaluated()) { + if (!$this->resource_object->isEvaluated) { // write compiled template Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->compiled_template, $this->smarty); // make template and compiled file timestamp match @@ -314,28 +282,28 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { /** * Returns the filepath of the cached template output * - * The filepath is determined by the actual resource handler of the cacher + * The filepath is determined by the actual cache resource * * @return string the cache filepath */ public function getCachedFilepath () { return $this->cached_filepath === null ? - $this->cached_filepath = ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedFilepath($this) : + $this->cached_filepath = ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedFilepath($this) : $this->cached_filepath; } /** * Returns the timpestamp of the cached template output * - * The timestamp is determined by the actual resource handler of the cacher + * The timestamp is determined by the actual cache resource * * @return integer the template timestamp */ public function getCachedTimestamp () { return $this->cached_timestamp === null ? - $this->cached_timestamp = ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedTimestamp($this) : + $this->cached_timestamp = ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedTimestamp($this) : $this->cached_timestamp; } @@ -347,7 +315,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { public function getCachedContent () { return $this->rendered_content === null ? - $this->rendered_content = ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedContents($this) : + $this->rendered_content = ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedContents($this) : $this->rendered_content; } @@ -355,10 +323,17 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { * Writes the cached template output */ public function writeCachedContent () - { + { + if ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) { + // don't write cache file + return false; + } // build file dependency string $this->properties['cache_lifetime'] = $this->cache_lifetime; - return ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->writeCachedContent($this, $this->createPropertyHeader() . $this->rendered_content); + $this->dynamicId = uniqid(); + $output = preg_replace('/(<%|%>|<\?php|<\?|\?>)/', '<?php /*' . $this->dynamicId . '*/ echo \'$1\'; ?>', $this->rendered_content); + $output = preg_replace_callback('/\/\*%%SmartyNocache%%\*\/(.+?)\/\*\/%%SmartyNocache%%\*\//s', array($this, 'unescapePhp'), $output); + return $this->cache_resource_object->writeCachedContent($this, $this->createPropertyHeader(true) . $output); } /** @@ -372,11 +347,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { { if ($this->isCached === null) { $this->isCached = false; - if (($this->caching == 1 || $this->caching == 2) && !$this->isEvaluated() && !$this->force_compile && !$this->force_cache) { - if ($this->getCachedTimestamp() === false) { + if (($this->caching == 1 || $this->caching == 2) && !$this->resource_object->isEvaluated && !$this->force_compile && !$this->force_cache) { + $cachedTimestamp = $this->getCachedTimestamp(); + if ($cachedTimestamp === false) { return $this->isCached; } - if ($this->caching === SMARTY_CACHING_LIFETIME_SAVED || ($this->caching == SMARTY_CACHING_LIFETIME_CURRENT && (time() <= ($this->getCachedTimestamp() + $this->cache_lifetime) || $this->cache_lifetime < 0))) { + if ($this->caching === SMARTY_CACHING_LIFETIME_SAVED || ($this->caching == SMARTY_CACHING_LIFETIME_CURRENT && (time() <= ($cachedTimestamp + $this->cache_lifetime) || $this->cache_lifetime < 0))) { if ($this->smarty->debugging) { Smarty_Internal_Debug::start_cache($this); } @@ -405,7 +381,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { // If ($mtime > $this->getCachedTimestamp()) { If ($mtime > $_file_to_check[1]) { $this->rendered_content = null; - $this->properties['file_dependency'] = array(); return $this->isCached; } } @@ -426,7 +401,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { */ public function renderTemplate () { - if ($this->usesCompiler()) { + if ($this->resource_object->usesCompiler) { if ($this->mustCompile() && $this->compiled_template === null) { $this->compileTemplateSource(); } @@ -435,7 +410,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { } $_smarty_tpl = $this; ob_start(); - if ($this->isEvaluated()) { + if ($this->resource_object->isEvaluated) { eval("?>" . $this->compiled_template); } else { include($this->getCompiledFilepath ()); @@ -453,7 +428,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { } // If ($mtime != $_file_to_check[1]) { If ($mtime > $_file_to_check[1]) { - $this->properties['file_dependency'] = array(); $this->mustCompile = true; break; } @@ -480,18 +454,19 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { } } $this->rendered_content = ob_get_clean(); - if (!$this->isEvaluated) { + if (!$this->resource_object->isEvaluated) { $this->properties['file_dependency']['F' . abs(crc32($this->getTemplateFilepath()))] = array($this->getTemplateFilepath(), $this->getTemplateTimestamp()); } if ($this->parent instanceof Smarty_Template or $this->parent instanceof Smarty_Internal_Template) { // var_dump('merge ', $this->parent->getTemplateFilepath(), $this->parent->properties['file_dependency'], $this->getTemplateFilepath(), $this->properties['file_dependency']); $this->parent->properties['file_dependency'] = array_merge($this->parent->properties['file_dependency'], $this->properties['file_dependency']); + $this->parent->required_plugins = array_merge_recursive($this->parent->required_plugins, $this->required_plugins); } if ($this->smarty->debugging) { Smarty_Internal_Debug::end_render($this); } // write to cache when nessecary - if (!$this->isEvaluated() && ($this->caching == SMARTY_CACHING_LIFETIME_SAVED || $this->caching == SMARTY_CACHING_LIFETIME_CURRENT)) { + if (!$this->resource_object->isEvaluated && ($this->caching == SMARTY_CACHING_LIFETIME_SAVED || $this->caching == SMARTY_CACHING_LIFETIME_CURRENT)) { if ($this->smarty->debugging) { Smarty_Internal_Debug::start_cache($this); } @@ -519,7 +494,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { public function getRenderedTemplate () { // disable caching for evaluated code - if ($this->isEvaluated()) { + if ($this->resource_object->isEvaluated) { $this->caching = false; } // checks if template exists @@ -553,7 +528,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { // do not cache string resources // ***** if ($resource_type != 'string' && $this->smarty->caching) { if ($resource_type != 'string') { - $this->smarty->template_objects[$this->buildTemplateId ($this->template_resource, $this->cache_id, $this->compile_id)] = $this; + $this->smarty->template_objects[crc32($this->template_resource . $this->cache_id . $this->compile_id)] = $this; } return true; } @@ -595,34 +570,17 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { } /** - * Decode saved properties from compiled template and cache files - */ - public function decodeProperties ($properties) - { - $prop = unserialize($properties); - if (isset($prop['cache_lifetime'])) { - $this->properties['cache_lifetime'] = $prop['cache_lifetime']; - } - if (isset($prop['file_dependency'])) { - $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $prop['file_dependency']); - // $this->properties['file_dependency'] = array_unique($this->properties['file_dependency']); - } - if (!empty($prop['function'])) { - foreach ($prop['function'] as $_name => $_data) { - $this->smarty->template_functions[$_name]['compiled'] = str_replace('_%n', "\n", $_data['compiled']); - $this->smarty->template_functions[$_name]['parameter'] = $_data['parameter']; - } - } - } - - /** - * Update Smarty variables in parent variable object + * Update Smarty variables in other scopes */ public function updateParentVariables ($scope = SMARTY_LOCAL_SCOPE) { + $has_root = false; foreach ($this->tpl_vars as $_key => $_variable) { - // copy global vars back to parent - if (isset($this->parent) && ($scope == SMARTY_PARENT_SCOPE || $this->tpl_vars[$_key]->scope == SMARTY_PARENT_SCOPE)) { + $_variable_scope = $this->tpl_vars[$_key]->scope; + if ($scope == SMARTY_LOCAL_SCOPE && $_variable_scope == SMARTY_LOCAL_SCOPE) { + continue; + } + if (isset($this->parent) && ($scope == SMARTY_PARENT_SCOPE || $_variable_scope == SMARTY_PARENT_SCOPE)) { if (isset($this->parent->tpl_vars[$_key])) { // variable is already defined in parent, copy value $this->parent->tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value; @@ -632,22 +590,28 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { $this->parent->tpl_vars[$_key]->scope = SMARTY_LOCAL_SCOPE; } } - if ($scope == SMARTY_ROOT_SCOPE || $this->tpl_vars[$_key]->scope == SMARTY_ROOT_SCOPE) { - $_ptr = $this; - // find root - while ($_ptr->parent != null) { - $_ptr = $_ptr->parent; + if ($scope == SMARTY_ROOT_SCOPE || $_variable_scope == SMARTY_ROOT_SCOPE) { + if ($this->parent == null) { + continue; + } + if (!$has_root) { + // find root + $root_ptr = $this; + while ($root_ptr->parent != null) { + $root_ptr = $root_ptr->parent; + $has_root = true; + } } - if (isset($_ptr->tpl_vars[$_key])) { + if (isset($root_ptr->tpl_vars[$_key])) { // variable is already defined in root, copy value - $_ptr->tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value; + $root_ptr->tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value; } else { // create variable in root - $_ptr->tpl_vars[$_key] = clone $_variable; - $_ptr->tpl_vars[$_key]->scope = SMARTY_LOCAL_SCOPE; + $root_ptr->tpl_vars[$_key] = clone $_variable; + $root_ptr->tpl_vars[$_key]->scope = SMARTY_LOCAL_SCOPE; } } - if ($scope == SMARTY_GLOBAL_SCOPE || $this->tpl_vars[$_key]->scope == SMARTY_GLOBAL_SCOPE) { + if ($scope == SMARTY_GLOBAL_SCOPE || $_variable_scope == SMARTY_GLOBAL_SCOPE) { if (isset($this->smarty->global_tpl_vars[$_key])) { // variable is already defined in root, copy value $this->smarty->global_tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value; @@ -694,58 +658,99 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase { */ private function loadTemplateResourceHandler ($resource_type) { - // load resource handler if required - if (!isset($this->smarty->resource_objects[$resource_type])) { - // try registered resource - if (isset($this->smarty->_plugins['resource'][$resource_type])) { - return $this->smarty->resource_objects[$resource_type] = new Smarty_Internal_Resource_Registered($this->smarty); - } else { - // try sysplugins dir + // try registered resource + if (isset($this->smarty->_plugins['resource'][$resource_type])) { + return new Smarty_Internal_Resource_Registered($this->smarty); + } else { + // try sysplugins dir + if (in_array($resource_type, array('file', 'string', 'extends', 'php', 'registered', 'stream'))) { $_resource_class = 'Smarty_Internal_Resource_' . $resource_type; + return new $_resource_class($this->smarty); + } else { + // try plugins dir + $_resource_class = 'Smarty_Resource_' . $resource_type; if ($this->smarty->loadPlugin($_resource_class)) { - return $this->smarty->resource_objects[$resource_type] = new $_resource_class($this->smarty); + if (class_exists($_resource_class, false)) { + return new $_resource_class($this->smarty); + } else { + $this->smarty->register_resource($resource_type, + array("smarty_resource_{$resource_type}_source", + "smarty_resource_{$resource_type}_timestamp", + "smarty_resource_{$resource_type}_secure", + "smarty_resource_{$resource_type}_trusted")); + return new Smarty_Internal_Resource_Registered($this->smarty); + } } else { - // try plugins dir - $_resource_class = 'Smarty_Resource_' . $resource_type; - if ($this->smarty->loadPlugin($_resource_class)) { - if (class_exists($_resource_class, false)) { - return $this->smarty->resource_objects[$resource_type] = new $_resource_class($this->smarty); - } else { - $this->smarty->register_resource($resource_type, - array("smarty_resource_{$resource_type}_source", - "smarty_resource_{$resource_type}_timestamp", - "smarty_resource_{$resource_type}_secure", - "smarty_resource_{$resource_type}_trusted")); - return $this->smarty->resource_objects[$resource_type] = new Smarty_Internal_Resource_Registered($this->smarty); + // try streams + $_known_stream = stream_get_wrappers(); + if (in_array($resource_type, $_known_stream)) { + // is known stream + if ($this->smarty->security) { + $this->smarty->security_handler->isTrustedStream($resource_type); } + return new Smarty_Internal_Resource_Stream($this->smarty); } else { - // try streams - $_known_stream = stream_get_wrappers(); - if (in_array($resource_type, $_known_stream)) { - // is known stream - if ($this->smarty->security) { - $this->smarty->security_handler->isTrustedStream($resource_type); - } - return $this->smarty->resource_objects[$resource_type] = new Smarty_Internal_Resource_Stream($this->smarty); - } else { - throw new Exception('Unkown resource type \'' . $resource_type . '\''); - } + throw new Exception('Unkown resource type \'' . $resource_type . '\''); } } } - } else { - return $this->smarty->resource_objects[$resource_type]; } } /** * Create property header */ - public function createPropertyHeader () + public function createPropertyHeader ($cache = false) + { + $directory_security = $this->smarty->direct_access_security ? "<?php /*%%SmartyHeaderCode%%*/ if(!defined('SMARTY_DIR')) exit('no direct access allowed'); /*/%%SmartyHeaderCode%%*/?>\n" : ''; + // $properties_string = "<?php \$_smarty_tpl->decodeProperties(" . preg_replace('/\s*/', '',var_export($this->properties, true)) . "); ? >\n"; + $properties_string = "<?php /*%%SmartyHeaderCode%%*/ \$_smarty_tpl->decodeProperties(" . var_export($this->properties, true) . "); /*/%%SmartyHeaderCode%%*/?>\n"; + $plugins_string = ''; + if (!$cache) { + if (!empty($this->required_plugins['compiled'])) { + $plugins_string = '<?php '; + foreach($this->required_plugins['compiled'] as $plugin_name => $data) { + $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name; + $plugins_string .= "if (!is_callable('{$plugin}')) include '{$data['file']}';\n"; + } + $plugins_string .= '?>'; + } + if (!empty($this->required_plugins['cache'])) { + $plugins_string .= '<?php echo \'/*%%SmartyNocache%%*/<?php '; + foreach($this->required_plugins['cache'] as $plugin_name => $data) { + $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name; + $plugins_string .= "if (!is_callable(\'{$plugin}\')) include \'{$data['file']}\';\n"; + } + $plugins_string .= "?>/*/%%SmartyNocache%%*/';?>\n"; + } + } + return $directory_security . $properties_string . $plugins_string; + } + + /** + * Decode saved properties from compiled template and cache files + */ + public function decodeProperties ($properties) + { + if (isset($properties['cache_lifetime'])) { + $this->properties['cache_lifetime'] = $properties['cache_lifetime']; + } + if (isset($properties['file_dependency'])) { + $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $properties['file_dependency']); + } + if (!empty($properties['function'])) { + foreach ($properties['function'] as $_name => $_data) { + $this->smarty->template_functions[$_name]['compiled'] = $_data['compiled']; + $this->smarty->template_functions[$_name]['parameter'] = $_data['parameter']; + } + } + } + /** + * callback to unescap PHP + */ + public function unescapePhp($match) { - $directory_security = $this->smarty->direct_access_security ? "<?php if(!defined('SMARTY_DIR')) exit('no direct access allowed'); ?>\n" : ''; - $properties_string = "<?php \$_smarty_tpl->decodeProperties('" . str_replace("'", "\\'", (serialize($this->properties))) . "'); ?>\n"; - return $directory_security . $properties_string; + return preg_replace('{<\?php /\*' . $this->dynamicId . '\*/ echo \'(.+?)\'; \?>}s', '$1', $match[1]); } /** diff --git a/libs/sysplugins/smarty_internal_templatecompilerbase.php b/libs/sysplugins/smarty_internal_templatecompilerbase.php index 8d7859bd..af1352ed 100644 --- a/libs/sysplugins/smarty_internal_templatecompilerbase.php +++ b/libs/sysplugins/smarty_internal_templatecompilerbase.php @@ -17,7 +17,9 @@ class Smarty_Internal_TemplateCompilerBase { // tag stack public $_tag_stack = array(); // current template - public $template = null; + public $template = null; + // required plugins + public $required_plugins_call = array(); /** * Initialize compiler @@ -36,11 +38,7 @@ class Smarty_Internal_TemplateCompilerBase { { /* here is where the compiling takes place. Smarty tags in the templates are replaces with PHP code, - then written to compiled files. */ - if (!is_object($template->cacher_object)) { - $this->smarty->loadPlugin($template->cacher_class); - $template->cacher_object = new $template->cacher_class($this->smarty); - } + then written to compiled files. */ // flag for nochache sections $this->nocache = false; $this->tag_nocache = false; @@ -52,7 +50,7 @@ class Smarty_Internal_TemplateCompilerBase { // template header code $template_header = ''; if (!$template->suppressHeader) { - $template_header .= "<?php /* Smarty version " . Smarty::$_version . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n"; + $template_header .= "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n"; $template_header .= " compiled from \"" . $this->template->getTemplateFilepath() . "\" */ ?>\n"; } @@ -63,33 +61,31 @@ class Smarty_Internal_TemplateCompilerBase { $_content = $template->getTemplateSource(); // run prefilter if required if (isset($this->smarty->autoload_filters['pre']) || isset($this->smarty->registered_filters['pre'])) { - $_content = $this->smarty->filter_handler->execute('pre', $_content); + $_content = Smarty_Internal_Filter_Handler::runFilter('pre', $_content, $this->smarty); } // on empty template just return header if ($_content == '') { if ($template->suppressFileDependency) { $template->compiled_template = ''; } else { - $template->compiled_template = $template->createPropertyHeader() . $template_header; + $template->compiled_template = $template_header . $template->createPropertyHeader(); } return true; } - // init cacher plugin - $template->cacher_object->initCacher($this); // call compiler $_compiled_code = $this->doCompile($_content); } while ($this->abort_and_recompile); if (!$this->compile_error) { - // close cacher and return compiled template + // return compiled code to template object if ($template->suppressFileDependency) { - $template->compiled_template = $template->cacher_object->closeCacher($this, $_compiled_code); + $template->compiled_template = $_compiled_code; } else { - $template->compiled_template = $template->createPropertyHeader() . $template_header . $template->cacher_object->closeCacher($this, $_compiled_code); + $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code; } // run postfilter if required if (isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) { - $template->compiled_template = $this->smarty->filter_handler->execute('post', $template->compiled_template); + $template->compiled_template = Smarty_Internal_Filter_Handler::runFilter('post', $template->compiled_template, $this->smarty); } return true; } else { @@ -115,12 +111,11 @@ class Smarty_Internal_TemplateCompilerBase { $this->has_code = true; $this->has_output = false; // compile the smarty tag (required compile classes to compile the tag are autoloaded) - if (($_output = $this->generateCode($tag, $args)) === false) { + if (($_output = $this->callTagCompiler($tag, $args)) === false) { if (isset($this->smarty->template_functions[$tag])) { // template defined by {template} tag $args['name'] = $tag; - $tag = 'function_call'; - $_output = $this->generateCode($tag, $args); + $_output = $this->callTagCompiler('private_function_call', $args); } } if ($_output !== false) { @@ -139,49 +134,85 @@ class Smarty_Internal_TemplateCompilerBase { return ''; } else { // not an internal compiler tag - // check if tag is a registered object - if (isset($this->smarty->registered_objects[$tag]) && isset($args['object_methode'])) { - $methode = $args['object_methode']; - unset ($args['object_methode']); - if (!in_array($methode, $this->smarty->registered_objects[$tag][3]) && - (empty($this->smarty->registered_objects[$tag][1]) || in_array($methode, $this->smarty->registered_objects[$tag][1]))) { - return $this->generateCode('object_function',$args, $tag, $methode); - } elseif (in_array($methode, $this->smarty->registered_objects[$tag][3])) { - return $this->generateCode('object_block_function',$args, $tag, $methode); - } else { - return $this->trigger_template_error ('unallowed methode "' . $methode . '" in registered object "' . $tag . '"', $this->lex->taglineno); + if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) { + // check if tag is a registered object + if (isset($this->smarty->registered_objects[$tag]) && isset($args['object_methode'])) { + $methode = $args['object_methode']; + unset ($args['object_methode']); + if (!in_array($methode, $this->smarty->registered_objects[$tag][3]) && + (empty($this->smarty->registered_objects[$tag][1]) || in_array($methode, $this->smarty->registered_objects[$tag][1]))) { + return $this->callTagCompiler('private_object_function', $args, $tag, $methode); + } elseif (in_array($methode, $this->smarty->registered_objects[$tag][3])) { + return $this->callTagCompiler('private_object_block_function', $args, $tag, $methode); + } else { + return $this->trigger_template_error ('unallowed methode "' . $methode . '" in registered object "' . $tag . '"', $this->lex->taglineno); + } } - } - // check if tag is registered or is Smarty plugin - $this->smarty->plugin_handler->loadSmartyPlugin($tag, $this->smarty->plugin_search_order); - if (isset($this->smarty->registered_plugins[$tag])) { - // if compiler function plugin call it now - if ($this->smarty->registered_plugins[$tag][0] == 'compiler') { - if (!$this->smarty->registered_plugins[$tag][2]) { - $this->tag_nocache = true; + // check if tag is registered + foreach (array('compiler', 'function', 'block') as $type) { + if (isset($this->smarty->registered_plugins[$type][$tag])) { + // if compiler function plugin call it now + if ($type == 'compiler') { + if (!$this->smarty->registered_plugins[$type][$tag][1]) { + $this->tag_nocache = true; + } + return call_user_func_array($this->smarty->registered_plugins[$type][$tag][0], array($args, $this)); + } + // compile registered function or block function + if ($type == 'function' || $type == 'block') { + return $this->callTagCompiler('private_registered_' . $type, $args, $tag); + } } - return call_user_func($this->smarty->registered_plugins[$tag][1], $args, $this); } - // compile function or block plugin - $plugin_type = $this->smarty->registered_plugins[$tag][0] . '_plugin'; - return $this->generateCode($plugin_type, $args, $tag); - } - // compile closing tag of block function - if (strlen($tag) > 5 && substr_compare($tag, 'close', -5, 5) == 0) { + // check plugins from plugins folder + foreach ($this->smarty->plugin_search_order as $plugin_type) { + if ($plugin_type == 'compiler' && $this->smarty->loadPlugin('smarty_compiler_' . $tag)) { + $plugin = 'smarty_compiler_' . $tag; + if (class_exists($plugin, false)) { + $plugin = array(new $plugin, 'compile'); + } + if (is_callable($plugin)) { + return call_user_func_array($plugin, array($args, $this)); + } else { + throw new Exception("Plugin \"{$tag}\" not callable"); + } + } else { + if ($function = $this->getPlugin($tag, $plugin_type)) { + return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $tag, $function); + } + } + } + } 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($args['object_methode'])) { $methode = $args['object_methode']; unset ($args['object_methode']); if (in_array($methode, $this->smarty->registered_objects[$base_tag][3])) { - return $this->generateCode('object_block_function', $args, $tag, $methode); + return $this->callTagCompiler('private_object_block_function', $args, $tag, $methode); } else { return $this->trigger_template_error ('unallowed closing tag methode "' . $methode . '" in registered object "' . $base_tag . '"', $this->lex->taglineno); } } - // plugin ? - if (isset($this->smarty->registered_plugins[$base_tag]) && $this->smarty->registered_plugins[$base_tag][0] == 'block') { - return $this->generateCode('block_plugin',$args, $tag); + // registered block tag ? + if (isset($this->smarty->registered_plugins['block'][$base_tag])) { + return $this->callTagCompiler('private_registered_block', $args, $tag); + } + // block plugin? + if ($function = $this->getPlugin($base_tag, 'block')) { + return $this->callTagCompiler('private_block_plugin', $args, $tag, $function); + } + if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) { + $plugin = 'smarty_compiler_' . $tag; + if (class_exists($plugin, false)) { + $plugin = array(new $plugin, 'compile'); + } + if (is_callable($plugin)) { + return call_user_func_array($plugin, array($args, $this)); + } else { + throw new Exception("Plugin \"{$tag}\" not callable"); + } } } $this->trigger_template_error ("unknown tag \"" . $tag . "\"", $this->lex->taglineno); @@ -197,16 +228,17 @@ class Smarty_Internal_TemplateCompilerBase { * * @param $tag string tag name * @param $args array with tag attributes - * @param $subtag optional tag name at plugins - * @param $method string optional method on object tags + * @param $param1 optional parameter + * @param $param2 optional parameter + * @param $param3 optional parameter * @return string compiled code */ - public function generateCode($tag, $args, $subtag = null, $method = null) + public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null) { // re-use object if already exists if (isset(self::$_tag_objects[$tag])) { // compile this tag - return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $subtag, $method); + return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $param1, $param2, $param3); } // lazy load internal compiler plugin $class_name = 'Smarty_Internal_Compile_' . $tag; @@ -214,13 +246,88 @@ class Smarty_Internal_TemplateCompilerBase { // use plugin if found self::$_tag_objects[$tag] = new $class_name; // compile this tag - return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $subtag, $method); + return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $param1, $param2, $param3); } // no internal compile plugin for this tag return false; } /** + * Check for plugins and return function name + * + * @param $pugin_name string name of plugin or function + * @param $type string type of plugin + * @return string call name of function + */ + public function getPlugin($plugin_name, $type) + { + if (isset($this->template->required_plugins_call[$plugin_name][$type])) { + if ($this->template->caching && ($this->nocache || $this->tag_nocache)) { + if (isset($this->template->required_plugins['compiled'][$plugin_name])) { + $this->template->required_plugins['cache'][$plugin_name] = $this->template->required_plugins['compiled'][$plugin_name]; + } + } + return $this->template->required_plugins_call[$plugin_name][$type]; + } + // loop through plugin dirs and find the plugin + $plugin = 'smarty_' . $type . '_' . $plugin_name; + $found = false; + foreach((array)$this->smarty->plugins_dir as $_plugin_dir) { + $file = rtrim($_plugin_dir, '/\\') . DS . $type . '.' . $plugin_name . '.php'; + if (file_exists($file)) { + require_once($file); + $found = true; + break; + } + } + if ($found) { + if (is_callable($plugin)) { + $this->template->required_plugins_call[$plugin_name][$type] = $plugin; + if ($this->template->caching && ($this->nocache || $this->tag_nocache)) { + $this->template->required_plugins['cache'][$plugin_name]['file'] = $file; + $this->template->required_plugins['cache'][$plugin_name]['type'] = $type; + } else { + $this->template->required_plugins['compiled'][$plugin_name]['file'] = $file; + $this->template->required_plugins['compiled'][$plugin_name]['type'] = $type; + } + return $plugin; + } else { + throw new Exception("Plugin {$type} \"{$plugin_name}\" not callable"); + } + } + return false; + } + /** + * 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 $tag_nocache true if the parser detected a nocache situation + * @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) { + // generate replacement code + if ((!$this->template->resource_object->isEvaluated || $this->template->forceNocache) && $this->template->caching && + ($this->nocache || $this->tag_nocache)) { + $this->tag_nocache = false; + $_output = str_replace("'", "\'", $content); + $_output = "<?php echo '/*%%SmartyNocache%%*/" . $_output . "/*/%%SmartyNocache%%*/';?>\n"; + } else { + $_output = $content; + } + } else { + $_output = $content; + } + return $_output; + } + /** * display compiler error messages without dying * * If parameter $args is empty it is a parser detected syntax error. @@ -228,18 +335,16 @@ class Smarty_Internal_TemplateCompilerBase { * * If parameter $args contains a string this is used as error message * - * @todo output exact position of parse error in source line * @param $args string individual error message or null */ - public function trigger_template_error($args = null, $line= null) - { + public function trigger_template_error($args = null, $line = null) + { // get template source line which has error if (!isset($line)) { $line = $this->lex->line; } $match = preg_split("/\n/", $this->lex->data); $error_text = 'Syntax Error in template "' . $this->template->getTemplateFilepath() . '" on line ' . $line . ' "' . $match[$line-1] . '" '; - if (isset($args)) { // individual error message $error_text .= $args; diff --git a/libs/sysplugins/smarty_internal_templatelexer.php b/libs/sysplugins/smarty_internal_templatelexer.php index 47d9d95f..a54c356f 100644 --- a/libs/sysplugins/smarty_internal_templatelexer.php +++ b/libs/sysplugins/smarty_internal_templatelexer.php @@ -63,7 +63,11 @@ class Smarty_Internal_Templatelexer 'QMARK' => '"?"', 'ID' => 'identifier', 'OTHER' => 'text', - 'PHP' => 'PHP code', + 'FAKEPHPSTARTTAG' => 'Fake PHP start tag', + 'PHPSTARTTAG' => 'PHP start tag', + 'PHPENDTAG' => 'PHP end tag', + 'LITERALSTART' => 'Literal start', + 'LITERALEND' => 'Literal end', 'LDELSLASH' => 'closing tag', 'COMMENT' => 'comment', 'LITERALEND' => 'literal close', @@ -74,14 +78,15 @@ class Smarty_Internal_Templatelexer ); - function __construct($data,$smarty) + function __construct($data,$compiler) { // set instance object self::instance($this); $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data); $this->counter = 0; $this->line = 1; - $this->smarty = $smarty; + $this->smarty = $compiler->smarty; + $this->compiler = $compiler; $this->ldel = preg_quote($this->smarty->left_delimiter,'/'); $this->rdel = preg_quote($this->smarty->right_delimiter,'/'); $this->smarty_token_names['LDEL'] = $this->smarty->left_delimiter; @@ -137,16 +142,13 @@ class Smarty_Internal_Templatelexer 10 => 0, 11 => 0, 12 => 0, - 13 => 0, - 14 => 0, - 15 => 0, - 16 => 2, - 19 => 0, + 13 => 2, + 16 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(\\{\\})|^(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|^(<\\?xml)|^(<\\?php)|^(<\\?=)|^([\t ]*[\r\n]+[\t ]*)|^(".$this->ldel."strip".$this->rdel.")|^(".$this->ldel."\/strip".$this->rdel.")|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(([\S\s]*?)([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?))|^([\S\s]+)/"; + $yy_global_pattern = "/^(\\{\\})|^(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^([\t ]*[\r\n]+[\t ]*)|^(".$this->ldel."strip".$this->rdel.")|^(".$this->ldel."\/strip".$this->rdel.")|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(([\S\s]*?)([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?))|^([\S\s]+)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { @@ -209,54 +211,42 @@ class Smarty_Internal_Templatelexer function yy_r1_4($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_XML; - $this->yypushstate(self::PHP); - } + if (in_array($this->value, Array('<?', '<?=', '<?php'))) { + $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG; + $this->yypushstate(self::PHP); + } else { + $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG; + $this->value = substr($this->value, 0, 2); + } + } function yy_r1_5($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_PHP; - $this->yypushstate(self::PHP); - } - function yy_r1_6($yy_subpatterns) - { - - $this->token = Smarty_Internal_Templateparser::TP_SHORTTAGSTART; - $this->yypushstate(self::PHP); - } - function yy_r1_7($yy_subpatterns) - { - if ($this->strip) { return false; } else { $this->token = Smarty_Internal_Templateparser::TP_OTHER; } } - function yy_r1_8($yy_subpatterns) + function yy_r1_6($yy_subpatterns) { $this->strip = true; return false; } - function yy_r1_9($yy_subpatterns) + function yy_r1_7($yy_subpatterns) { $this->strip = false; return false; } - function yy_r1_10($yy_subpatterns) - { - - $this->yypushstate(self::LITERAL); - return true; - } - function yy_r1_11($yy_subpatterns) + function yy_r1_8($yy_subpatterns) { - return false; // unexspected here just ignore + $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART; + $this->yypushstate(self::LITERAL); } - function yy_r1_12($yy_subpatterns) + function yy_r1_9($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -267,7 +257,7 @@ class Smarty_Internal_Templatelexer $this->taglineno = $this->line; } } - function yy_r1_13($yy_subpatterns) + function yy_r1_10($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -278,21 +268,21 @@ class Smarty_Internal_Templatelexer $this->taglineno = $this->line; } } - function yy_r1_14($yy_subpatterns) + function yy_r1_11($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH; $this->yypushstate(self::SMARTY); $this->taglineno = $this->line; } - function yy_r1_15($yy_subpatterns) + function yy_r1_12($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LDEL; $this->yypushstate(self::SMARTY); $this->taglineno = $this->line; } - function yy_r1_16($yy_subpatterns) + function yy_r1_13($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_OTHER; @@ -307,7 +297,7 @@ class Smarty_Internal_Templatelexer return true; // rescan } } - function yy_r1_19($yy_subpatterns) + function yy_r1_16($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_OTHER; @@ -318,34 +308,35 @@ class Smarty_Internal_Templatelexer { $tokenMap = array ( 1 => 1, - 3 => 1, + 3 => 0, + 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, 9 => 0, 10 => 0, - 11 => 0, - 12 => 0, - 13 => 0, - 14 => 1, - 16 => 1, + 11 => 1, + 13 => 1, + 15 => 0, + 16 => 0, + 17 => 0, 18 => 0, 19 => 0, - 20 => 0, - 21 => 0, - 22 => 0, - 23 => 1, - 25 => 1, - 27 => 1, - 29 => 1, - 31 => 1, - 33 => 1, - 35 => 1, - 37 => 1, - 39 => 1, - 41 => 1, - 43 => 1, + 20 => 1, + 22 => 1, + 24 => 1, + 26 => 1, + 28 => 1, + 30 => 1, + 32 => 1, + 34 => 1, + 36 => 1, + 38 => 1, + 40 => 1, + 42 => 0, + 43 => 0, + 44 => 0, 45 => 0, 46 => 0, 47 => 0, @@ -353,20 +344,20 @@ class Smarty_Internal_Templatelexer 49 => 0, 50 => 0, 51 => 0, - 52 => 0, - 53 => 0, - 54 => 0, - 55 => 3, + 52 => 3, + 56 => 0, + 57 => 0, + 58 => 0, 59 => 0, 60 => 0, 61 => 0, 62 => 0, - 63 => 0, - 64 => 0, - 65 => 0, - 66 => 1, - 68 => 1, - 70 => 1, + 63 => 1, + 65 => 1, + 67 => 1, + 69 => 0, + 70 => 0, + 71 => 0, 72 => 0, 73 => 0, 74 => 0, @@ -377,21 +368,18 @@ class Smarty_Internal_Templatelexer 79 => 0, 80 => 0, 81 => 0, - 82 => 0, - 83 => 0, + 82 => 1, 84 => 0, - 85 => 1, + 85 => 0, + 86 => 0, 87 => 0, 88 => 0, 89 => 0, - 90 => 0, - 91 => 0, - 92 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^((\\\\\"|\\\\'))|^(''|'([\S\s]*?)[^\\\\]')|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(\\s{1,}".$this->rdel.")|^(".$this->ldel."\/)|^(".$this->ldel.")|^(".$this->rdel.")|^(\\s+is\\s+in\\s+)|^(\\s+(AS|as)\\s+)|^(\\s+(to)\\s+)|^(\\s+instanceof\\s+)|^(true|TRUE|True|false|FALSE|False)|^(null|NULL|Null)|^(\\s*===\\s*)|^(\\s*!==\\s*)|^(\\s*==\\s*|\\s+(EQ|eq)\\s+)|^(\\s*!=\\s*|\\s*<>\\s*|\\s+(NE|NEQ|ne|neq)\\s+)|^(\\s*>=\\s*|\\s+(GE|GTE|ge|gte)\\s+)|^(\\s*<=\\s*|\\s+(LE|LTE|le|lte)\\s+)|^(\\s*>\\s*|\\s+(GT|gt)\\s+)|^(\\s*<\\s*|\\s+(LT|lt)\\s+)|^(\\s+(MOD|mod)\\s+)|^(!\\s*|(NOT|not)\\s+)|^(\\s*&&\\s*|\\s*(AND|and)\\s+)|^(\\s*\\|\\|\\s*|\\s*(OR|or)\\s+)|^(\\s*(XOR|xor)\\s+)|^(\\s+is\\s+odd\\s+by\\s+)|^(\\s+is\\s+not\\s+odd\\s+by\\s+)|^(\\s+is\\s+odd)|^(\\s+is\\s+not\\s+odd)|^(\\s+is\\s+even\\s+by\\s+)|^(\\s+is\\s+not\\s+even\\s+by\\s+)|^(\\s+is\\s+even)|^(\\s+is\\s+not\\s+even)|^(\\s+is\\s+div\\s+by\\s+)|^(\\s+is\\s+not\\s+div\\s+by\\s+)|^(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\))|^(\\(\\s*)|^(\\s*\\))|^(\\[\\s*)|^(\\s*\\])|^(\\s*->\\s*)|^(\\s*=>\\s*)|^(\\s*=\\s*)|^((\\+\\+|--)\\s*)|^(\\s*(\\+|-)\\s*)|^(\\s*(\\*|\/|%)\\s*)|^(\\$)|^(\\s*;)|^(::)|^(\\s*:\\s*)|^(@)|^(#)|^(\")|^(`)|^(\\|)|^(\\.)|^(\\s*,\\s*)|^(\\s*&\\s*)|^(\\s*\\?\\s*)|^((if|elseif|while)(?![^\s]))|^(foreach(?![^\s]))|^(for(?![^\s]))|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/"; + $yy_global_pattern = "/^((\\\\\"|\\\\'))|^('[^'\\\\]*(?:\\\\['\\\\][^'\\\\]*)*')|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(\\s{1,}".$this->rdel.")|^(".$this->ldel."\/)|^(".$this->ldel.")|^(".$this->rdel.")|^(\\s+is\\s+in\\s+)|^(\\s+(AS|as)\\s+)|^(\\s+(to)\\s+)|^(\\s+instanceof\\s+)|^(true|TRUE|True|false|FALSE|False)|^(null|NULL|Null)|^(\\s*===\\s*)|^(\\s*!==\\s*)|^(\\s*==\\s*|\\s+(EQ|eq)\\s+)|^(\\s*!=\\s*|\\s*<>\\s*|\\s+(NE|NEQ|ne|neq)\\s+)|^(\\s*>=\\s*|\\s+(GE|GTE|ge|gte)\\s+)|^(\\s*<=\\s*|\\s+(LE|LTE|le|lte)\\s+)|^(\\s*>\\s*|\\s+(GT|gt)\\s+)|^(\\s*<\\s*|\\s+(LT|lt)\\s+)|^(\\s+(MOD|mod)\\s+)|^(!\\s*|(NOT|not)\\s+)|^(\\s*&&\\s*|\\s*(AND|and)\\s+)|^(\\s*\\|\\|\\s*|\\s*(OR|or)\\s+)|^(\\s*(XOR|xor)\\s+)|^(\\s+is\\s+odd\\s+by\\s+)|^(\\s+is\\s+not\\s+odd\\s+by\\s+)|^(\\s+is\\s+odd)|^(\\s+is\\s+not\\s+odd)|^(\\s+is\\s+even\\s+by\\s+)|^(\\s+is\\s+not\\s+even\\s+by\\s+)|^(\\s+is\\s+even)|^(\\s+is\\s+not\\s+even)|^(\\s+is\\s+div\\s+by\\s+)|^(\\s+is\\s+not\\s+div\\s+by\\s+)|^(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\))|^(\\(\\s*)|^(\\s*\\))|^(\\[\\s*)|^(\\s*\\])|^(\\s*->\\s*)|^(\\s*=>\\s*)|^(\\s*=\\s*)|^((\\+\\+|--)\\s*)|^(\\s*(\\+|-)\\s*)|^(\\s*(\\*|\/|%)\\s*)|^(\\$)|^(\\s*;)|^(::)|^(\\s*:\\s*)|^(@)|^(#)|^(\")|^(`)|^(\\|)|^(\\.)|^(\\s*,\\s*)|^(\\s*&\\s*)|^(\\s*\\?\\s*)|^((if|elseif|else if|while)(?![^\s]))|^(foreach(?![^\s]))|^(for(?![^\s]))|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { @@ -451,18 +439,7 @@ class Smarty_Internal_Templatelexer $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING; } - function yy_r2_5($yy_subpatterns) - { - - $this->yypushstate(self::LITERAL); - return true; - } - function yy_r2_6($yy_subpatterns) - { - - return false; // unexspected here just ignore - } - function yy_r2_7($yy_subpatterns) + function yy_r2_4($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -473,7 +450,7 @@ class Smarty_Internal_Templatelexer $this->taglineno = $this->line; } } - function yy_r2_8($yy_subpatterns) + function yy_r2_5($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -484,7 +461,7 @@ class Smarty_Internal_Templatelexer $this->taglineno = $this->line; } } - function yy_r2_9($yy_subpatterns) + function yy_r2_6($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -494,324 +471,324 @@ class Smarty_Internal_Templatelexer $this->yypopstate(); } } - function yy_r2_10($yy_subpatterns) + function yy_r2_7($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH; $this->yypushstate(self::SMARTY); $this->taglineno = $this->line; } - function yy_r2_11($yy_subpatterns) + function yy_r2_8($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LDEL; $this->yypushstate(self::SMARTY); $this->taglineno = $this->line; } - function yy_r2_12($yy_subpatterns) + function yy_r2_9($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_RDEL; $this->yypopstate(); } - function yy_r2_13($yy_subpatterns) + function yy_r2_10($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISIN; } - function yy_r2_14($yy_subpatterns) + function yy_r2_11($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_AS; } - function yy_r2_16($yy_subpatterns) + function yy_r2_13($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_TO; } - function yy_r2_18($yy_subpatterns) + function yy_r2_15($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF; } - function yy_r2_19($yy_subpatterns) + function yy_r2_16($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_BOOLEAN; } - function yy_r2_20($yy_subpatterns) + function yy_r2_17($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_NULL; } - function yy_r2_21($yy_subpatterns) + function yy_r2_18($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_IDENTITY; } - function yy_r2_22($yy_subpatterns) + function yy_r2_19($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY; } - function yy_r2_23($yy_subpatterns) + function yy_r2_20($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_EQUALS; } - function yy_r2_25($yy_subpatterns) + function yy_r2_22($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS; } - function yy_r2_27($yy_subpatterns) + function yy_r2_24($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL; } - function yy_r2_29($yy_subpatterns) + function yy_r2_26($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL; } - function yy_r2_31($yy_subpatterns) + function yy_r2_28($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN; } - function yy_r2_33($yy_subpatterns) + function yy_r2_30($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LESSTHAN; } - function yy_r2_35($yy_subpatterns) + function yy_r2_32($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_MOD; } - function yy_r2_37($yy_subpatterns) + function yy_r2_34($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_NOT; } - function yy_r2_39($yy_subpatterns) + function yy_r2_36($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LAND; } - function yy_r2_41($yy_subpatterns) + function yy_r2_38($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LOR; } - function yy_r2_43($yy_subpatterns) + function yy_r2_40($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LXOR; } - function yy_r2_45($yy_subpatterns) + function yy_r2_42($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISODDBY; } - function yy_r2_46($yy_subpatterns) + function yy_r2_43($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY; } - function yy_r2_47($yy_subpatterns) + function yy_r2_44($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISODD; } - function yy_r2_48($yy_subpatterns) + function yy_r2_45($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISNOTODD; } - function yy_r2_49($yy_subpatterns) + function yy_r2_46($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISEVENBY; } - function yy_r2_50($yy_subpatterns) + function yy_r2_47($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY; } - function yy_r2_51($yy_subpatterns) + function yy_r2_48($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISEVEN; } - function yy_r2_52($yy_subpatterns) + function yy_r2_49($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN; } - function yy_r2_53($yy_subpatterns) + function yy_r2_50($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISDIVBY; } - function yy_r2_54($yy_subpatterns) + function yy_r2_51($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY; } - function yy_r2_55($yy_subpatterns) + function yy_r2_52($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_TYPECAST; } - function yy_r2_59($yy_subpatterns) + function yy_r2_56($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_OPENP; } - function yy_r2_60($yy_subpatterns) + function yy_r2_57($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_CLOSEP; } - function yy_r2_61($yy_subpatterns) + function yy_r2_58($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_OPENB; } - function yy_r2_62($yy_subpatterns) + function yy_r2_59($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_CLOSEB; } - function yy_r2_63($yy_subpatterns) + function yy_r2_60($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_PTR; } - function yy_r2_64($yy_subpatterns) + function yy_r2_61($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_APTR; } - function yy_r2_65($yy_subpatterns) + function yy_r2_62($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_EQUAL; } - function yy_r2_66($yy_subpatterns) + function yy_r2_63($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_INCDEC; } - function yy_r2_68($yy_subpatterns) + function yy_r2_65($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_UNIMATH; } - function yy_r2_70($yy_subpatterns) + function yy_r2_67($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_MATH; } - function yy_r2_72($yy_subpatterns) + function yy_r2_69($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_DOLLAR; } - function yy_r2_73($yy_subpatterns) + function yy_r2_70($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON; } - function yy_r2_74($yy_subpatterns) + function yy_r2_71($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON; } - function yy_r2_75($yy_subpatterns) + function yy_r2_72($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_COLON; } - function yy_r2_76($yy_subpatterns) + function yy_r2_73($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_AT; } - function yy_r2_77($yy_subpatterns) + function yy_r2_74($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_HATCH; } - function yy_r2_78($yy_subpatterns) + function yy_r2_75($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_QUOTE; $this->yypushstate(self::DOUBLEQUOTEDSTRING); } - function yy_r2_79($yy_subpatterns) + function yy_r2_76($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_BACKTICK; $this->yypopstate(); } - function yy_r2_80($yy_subpatterns) + function yy_r2_77($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_VERT; } - function yy_r2_81($yy_subpatterns) + function yy_r2_78($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_DOT; } - function yy_r2_82($yy_subpatterns) + function yy_r2_79($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_COMMA; } - function yy_r2_83($yy_subpatterns) + function yy_r2_80($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ANDSYM; } - function yy_r2_84($yy_subpatterns) + function yy_r2_81($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_QMARK; } - function yy_r2_85($yy_subpatterns) + function yy_r2_82($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_IF; } - function yy_r2_87($yy_subpatterns) + function yy_r2_84($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_FOREACH; } - function yy_r2_88($yy_subpatterns) + function yy_r2_85($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_FOR; } - function yy_r2_89($yy_subpatterns) + function yy_r2_86($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ID; } - function yy_r2_90($yy_subpatterns) + function yy_r2_87($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_INTEGER; } - function yy_r2_91($yy_subpatterns) + function yy_r2_88($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_SPACE; } - function yy_r2_92($yy_subpatterns) + function yy_r2_89($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_OTHER; @@ -881,9 +858,9 @@ class Smarty_Internal_Templatelexer function yy_r3_1($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_SHORTTAGEND; - $this->yypopstate(); - } + $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG; + $this->yypopstate(); + } function yy_r3_2($yy_subpatterns) { @@ -893,7 +870,7 @@ class Smarty_Internal_Templatelexer function yy_r3_4($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_OTHER; + $this->compiler->trigger_template_error ("missing PHP end tag"); } @@ -902,13 +879,15 @@ class Smarty_Internal_Templatelexer $tokenMap = array ( 1 => 0, 2 => 0, - 3 => 1, - 5 => 0, + 3 => 0, + 4 => 0, + 5 => 1, + 7 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(([\S\s]*?)".$this->ldel."\/literal".$this->rdel.")|^([\S\s]+)/"; + $yy_global_pattern = "/^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^([\S\s]+?(".$this->ldel."\/?literal".$this->rdel."|<\\?))|^([\S\s]+)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { @@ -961,30 +940,50 @@ class Smarty_Internal_Templatelexer function yy_r4_1($yy_subpatterns) { - return false; + $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART; + $this->yypushstate(self::LITERAL); } function yy_r4_2($yy_subpatterns) { + $this->token = Smarty_Internal_Templateparser::TP_LITERALEND; $this->yypopstate(); - return false; } function yy_r4_3($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_OTHER; - $this->value = substr($this->value,0,-strlen($this->smarty->left_delimiter)-strlen($this->smarty->right_delimiter)-8); - $this->yypopstate(); - if (strlen($this->value) == 0) { - return false; // change state directly + if (in_array($this->value, Array('<?', '<?=', '<?php'))) { + $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG; + } else { + $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG; + $this->value = substr($this->value, 0, 2); + } + } + function yy_r4_4($yy_subpatterns) + { + + $this->token = Smarty_Internal_Templateparser::TP_LITERAL; + } + function yy_r4_5($yy_subpatterns) + { + + $lenght_literal = strlen($this->smarty->left_delimiter.$this->smarty->right_delimiter)+7; + if (substr($this->value,-2,2) === '<?') { + $this->token = Smarty_Internal_Templateparser::TP_LITERAL; + $this->value = substr($this->value,0,-2); + } else if (substr($this->value,-$lenght_literal,$lenght_literal) === $this->smarty->left_delimiter.'literal'.$this->smarty->right_delimiter) { + $this->token = Smarty_Internal_Templateparser::TP_LITERAL; + $this->value = substr($this->value,0,-$lenght_literal); } else { - return; // change state after processiing token + assert(substr($this->value,-$lenght_literal-1,$lenght_literal+1) === $this->smarty->left_delimiter.'/literal'.$this->smarty->right_delimiter); + $this->token = Smarty_Internal_Templateparser::TP_LITERAL; + $this->value = substr($this->value,0,-$lenght_literal-1); } } - function yy_r4_5($yy_subpatterns) + function yy_r4_7($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_OTHER; + $this->compiler->trigger_template_error ("missing or misspelled literal closing tag"); } diff --git a/libs/sysplugins/smarty_internal_templateparser.php b/libs/sysplugins/smarty_internal_templateparser.php index 5f31e66b..4977916a 100644 --- a/libs/sysplugins/smarty_internal_templateparser.php +++ b/libs/sysplugins/smarty_internal_templateparser.php @@ -106,7 +106,6 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php } else {
$this->sec_obj = $this->smarty;
}
- $this->cacher = $this->template->cacher_object;
$this->compiler->has_variable_string = false;
$this->compiler->prefix_code = array();
$this->prefix_number = 0;
@@ -118,658 +117,640 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php $instance = $new_instance;
return $instance;
}
+
+ public static function escape_start_tag($tag_text) {
+ $tag = preg_replace('/\A<\?(.*)\z/', '<<?php ?>?\1', $tag_text, -1 , $count); //Escape tag
+ assert($tag !== false && $count === 1);
+ return $tag;
+ }
+
+ public static function escape_end_tag($tag_text) {
+ assert($tag_text === '?>');
+ return '?<?php ?>>';
+ }
+
-#line 115 "smarty_internal_templateparser.php"
+#line 126 "smarty_internal_templateparser.php"
const TP_COMMENT = 1;
- const TP_PHP = 2;
+ const TP_PHPSTARTTAG = 2;
const TP_OTHER = 3;
- const TP_SHORTTAGEND = 4;
- const TP_SHORTTAGSTART = 5;
- const TP_XML = 6;
- const TP_LDEL = 7;
- const TP_RDEL = 8;
- const TP_DOLLAR = 9;
- const TP_ID = 10;
- const TP_EQUAL = 11;
- const TP_FOREACH = 12;
- const TP_PTR = 13;
- const TP_IF = 14;
- const TP_SPACE = 15;
- const TP_FOR = 16;
- const TP_SEMICOLON = 17;
- const TP_INCDEC = 18;
- const TP_TO = 19;
- const TP_AS = 20;
- const TP_APTR = 21;
- const TP_LDELSLASH = 22;
- const TP_INTEGER = 23;
- const TP_COMMA = 24;
- const TP_COLON = 25;
- const TP_UNIMATH = 26;
- const TP_OPENP = 27;
- const TP_CLOSEP = 28;
- const TP_QMARK = 29;
- const TP_MATH = 30;
- const TP_ANDSYM = 31;
- const TP_NOT = 32;
- const TP_TYPECAST = 33;
- const TP_DOT = 34;
- const TP_BOOLEAN = 35;
- const TP_NULL = 36;
- const TP_SINGLEQUOTESTRING = 37;
- const TP_QUOTE = 38;
- const TP_DOUBLECOLON = 39;
- const TP_AT = 40;
- const TP_HATCH = 41;
- const TP_OPENB = 42;
- const TP_CLOSEB = 43;
- const TP_VERT = 44;
- const TP_ISIN = 45;
- const TP_ISDIVBY = 46;
- const TP_ISNOTDIVBY = 47;
- const TP_ISEVEN = 48;
- const TP_ISNOTEVEN = 49;
- const TP_ISEVENBY = 50;
- const TP_ISNOTEVENBY = 51;
- const TP_ISODD = 52;
- const TP_ISNOTODD = 53;
- const TP_ISODDBY = 54;
- const TP_ISNOTODDBY = 55;
- const TP_INSTANCEOF = 56;
- const TP_EQUALS = 57;
- const TP_NOTEQUALS = 58;
- const TP_GREATERTHAN = 59;
- const TP_LESSTHAN = 60;
- const TP_GREATEREQUAL = 61;
- const TP_LESSEQUAL = 62;
- const TP_IDENTITY = 63;
- const TP_NONEIDENTITY = 64;
- const TP_MOD = 65;
- const TP_LAND = 66;
- const TP_LOR = 67;
- const TP_LXOR = 68;
- const TP_BACKTICK = 69;
- const TP_DOLLARID = 70;
- const YY_NO_ACTION = 549;
- const YY_ACCEPT_ACTION = 548;
- const YY_ERROR_ACTION = 547;
+ const TP_PHPENDTAG = 4;
+ const TP_FAKEPHPSTARTTAG = 5;
+ const TP_LITERALSTART = 6;
+ const TP_LITERALEND = 7;
+ const TP_LITERAL = 8;
+ const TP_LDEL = 9;
+ const TP_RDEL = 10;
+ const TP_DOLLAR = 11;
+ const TP_ID = 12;
+ const TP_EQUAL = 13;
+ const TP_FOREACH = 14;
+ const TP_PTR = 15;
+ const TP_IF = 16;
+ const TP_SPACE = 17;
+ const TP_UNIMATH = 18;
+ const TP_FOR = 19;
+ const TP_SEMICOLON = 20;
+ const TP_INCDEC = 21;
+ const TP_TO = 22;
+ const TP_AS = 23;
+ const TP_APTR = 24;
+ const TP_LDELSLASH = 25;
+ const TP_INTEGER = 26;
+ const TP_COMMA = 27;
+ const TP_COLON = 28;
+ const TP_MATH = 29;
+ const TP_ANDSYM = 30;
+ const TP_OPENP = 31;
+ const TP_CLOSEP = 32;
+ const TP_QMARK = 33;
+ const TP_NOT = 34;
+ const TP_TYPECAST = 35;
+ const TP_DOT = 36;
+ const TP_BOOLEAN = 37;
+ const TP_NULL = 38;
+ const TP_SINGLEQUOTESTRING = 39;
+ const TP_QUOTE = 40;
+ const TP_DOUBLECOLON = 41;
+ const TP_AT = 42;
+ const TP_HATCH = 43;
+ const TP_OPENB = 44;
+ const TP_CLOSEB = 45;
+ const TP_VERT = 46;
+ const TP_ISIN = 47;
+ const TP_ISDIVBY = 48;
+ const TP_ISNOTDIVBY = 49;
+ const TP_ISEVEN = 50;
+ const TP_ISNOTEVEN = 51;
+ const TP_ISEVENBY = 52;
+ const TP_ISNOTEVENBY = 53;
+ const TP_ISODD = 54;
+ const TP_ISNOTODD = 55;
+ const TP_ISODDBY = 56;
+ const TP_ISNOTODDBY = 57;
+ const TP_INSTANCEOF = 58;
+ const TP_EQUALS = 59;
+ const TP_NOTEQUALS = 60;
+ const TP_GREATERTHAN = 61;
+ const TP_LESSTHAN = 62;
+ const TP_GREATEREQUAL = 63;
+ const TP_LESSEQUAL = 64;
+ const TP_IDENTITY = 65;
+ const TP_NONEIDENTITY = 66;
+ const TP_MOD = 67;
+ const TP_LAND = 68;
+ const TP_LOR = 69;
+ const TP_LXOR = 70;
+ const TP_BACKTICK = 71;
+ const TP_DOLLARID = 72;
+ const YY_NO_ACTION = 561;
+ const YY_ACCEPT_ACTION = 560;
+ const YY_ERROR_ACTION = 559;
- const YY_SZ_ACTTAB = 1406;
+ const YY_SZ_ACTTAB = 1246;
static public $yy_action = array(
- /* 0 */ 14, 332, 77, 49, 50, 88, 264, 209, 270, 211,
- /* 10 */ 265, 31, 297, 252, 290, 109, 231, 15, 122, 45,
- /* 20 */ 11, 363, 293, 174, 221, 57, 58, 94, 240, 247,
- /* 30 */ 345, 48, 109, 276, 51, 6, 14, 161, 75, 176,
- /* 40 */ 271, 250, 289, 363, 330, 175, 221, 285, 342, 94,
- /* 50 */ 283, 109, 231, 39, 18, 45, 30, 24, 354, 75,
- /* 60 */ 135, 57, 58, 250, 240, 247, 345, 48, 226, 285,
- /* 70 */ 51, 6, 243, 14, 230, 78, 187, 94, 248, 61,
- /* 80 */ 254, 31, 299, 198, 290, 188, 190, 169, 109, 231,
- /* 90 */ 94, 51, 45, 30, 210, 206, 252, 285, 57, 58,
- /* 100 */ 15, 240, 247, 345, 48, 170, 277, 51, 6, 14,
- /* 110 */ 285, 78, 178, 28, 190, 109, 31, 311, 173, 290,
- /* 120 */ 548, 68, 253, 353, 109, 231, 333, 190, 45, 30,
- /* 130 */ 208, 257, 190, 188, 57, 58, 273, 240, 247, 345,
- /* 140 */ 48, 190, 22, 51, 6, 14, 31, 78, 187, 290,
- /* 150 */ 29, 268, 363, 213, 133, 221, 295, 331, 94, 422,
- /* 160 */ 109, 231, 61, 254, 45, 11, 40, 205, 81, 281,
- /* 170 */ 57, 58, 250, 240, 247, 345, 48, 22, 285, 51,
- /* 180 */ 6, 14, 288, 75, 180, 284, 227, 263, 94, 133,
- /* 190 */ 31, 262, 261, 290, 282, 287, 109, 231, 263, 172,
- /* 200 */ 45, 30, 262, 261, 237, 251, 57, 58, 285, 240,
- /* 210 */ 247, 345, 48, 142, 328, 51, 6, 14, 173, 75,
- /* 220 */ 182, 188, 22, 218, 363, 296, 69, 221, 276, 195,
- /* 230 */ 94, 47, 109, 231, 133, 190, 45, 30, 249, 75,
- /* 240 */ 217, 258, 57, 58, 250, 240, 247, 345, 48, 55,
- /* 250 */ 285, 51, 6, 14, 31, 78, 179, 290, 25, 73,
- /* 260 */ 363, 274, 38, 221, 31, 306, 94, 290, 109, 231,
- /* 270 */ 321, 51, 45, 11, 292, 291, 173, 188, 57, 58,
- /* 280 */ 250, 240, 247, 345, 48, 229, 285, 51, 6, 14,
- /* 290 */ 236, 78, 187, 263, 23, 348, 31, 262, 261, 290,
- /* 300 */ 25, 37, 188, 199, 109, 231, 144, 188, 45, 13,
- /* 310 */ 22, 173, 192, 31, 3, 58, 290, 240, 247, 345,
- /* 320 */ 48, 276, 133, 51, 6, 14, 280, 85, 187, 218,
- /* 330 */ 272, 190, 412, 123, 233, 193, 190, 188, 171, 188,
- /* 340 */ 109, 231, 273, 312, 45, 13, 215, 188, 276, 31,
- /* 350 */ 3, 58, 225, 240, 247, 345, 48, 41, 47, 51,
- /* 360 */ 6, 2, 5, 324, 325, 12, 7, 327, 322, 10,
- /* 370 */ 9, 146, 222, 124, 75, 31, 173, 335, 290, 175,
- /* 380 */ 56, 315, 314, 320, 188, 17, 276, 39, 276, 33,
- /* 390 */ 2, 5, 324, 325, 12, 7, 327, 322, 10, 9,
- /* 400 */ 14, 294, 75, 177, 267, 190, 51, 94, 164, 19,
- /* 410 */ 315, 314, 320, 190, 246, 109, 184, 317, 129, 145,
- /* 420 */ 30, 188, 191, 173, 188, 57, 58, 285, 240, 247,
- /* 430 */ 345, 48, 158, 276, 51, 6, 22, 2, 5, 324,
- /* 440 */ 325, 12, 7, 327, 322, 10, 9, 14, 133, 75,
- /* 450 */ 182, 349, 341, 190, 113, 21, 139, 315, 314, 320,
- /* 460 */ 34, 202, 109, 231, 94, 26, 92, 30, 190, 292,
- /* 470 */ 224, 22, 57, 58, 350, 240, 247, 345, 48, 190,
- /* 480 */ 121, 51, 6, 133, 285, 31, 190, 42, 189, 2,
- /* 490 */ 5, 324, 325, 12, 7, 327, 322, 10, 9, 329,
- /* 500 */ 307, 305, 308, 309, 310, 304, 303, 298, 63, 315,
- /* 510 */ 314, 320, 273, 119, 2, 5, 324, 325, 12, 7,
- /* 520 */ 327, 322, 10, 9, 14, 156, 75, 182, 276, 36,
- /* 530 */ 344, 319, 154, 70, 315, 314, 320, 188, 188, 109,
- /* 540 */ 231, 294, 356, 16, 30, 47, 157, 35, 292, 57,
- /* 550 */ 58, 289, 240, 247, 345, 48, 132, 14, 51, 75,
- /* 560 */ 185, 137, 415, 341, 27, 159, 168, 334, 358, 415,
- /* 570 */ 289, 276, 109, 231, 188, 188, 276, 30, 279, 190,
- /* 580 */ 42, 44, 57, 58, 294, 240, 247, 345, 48, 71,
- /* 590 */ 244, 51, 329, 307, 305, 308, 309, 310, 304, 303,
- /* 600 */ 298, 269, 363, 219, 292, 221, 67, 323, 94, 340,
- /* 610 */ 141, 97, 212, 280, 188, 226, 188, 346, 313, 140,
- /* 620 */ 118, 255, 250, 203, 183, 188, 363, 219, 285, 221,
- /* 630 */ 65, 339, 94, 301, 276, 96, 363, 219, 188, 221,
- /* 640 */ 67, 346, 94, 259, 118, 105, 250, 160, 359, 138,
- /* 650 */ 188, 346, 285, 260, 118, 188, 250, 301, 360, 353,
- /* 660 */ 188, 326, 285, 318, 276, 117, 336, 301, 363, 219,
- /* 670 */ 188, 221, 67, 188, 94, 363, 219, 101, 221, 67,
- /* 680 */ 292, 94, 108, 346, 102, 112, 118, 162, 250, 251,
- /* 690 */ 346, 234, 289, 118, 285, 250, 23, 292, 229, 301,
- /* 700 */ 292, 285, 343, 114, 363, 219, 301, 221, 67, 347,
- /* 710 */ 94, 363, 219, 99, 221, 67, 4, 94, 292, 346,
- /* 720 */ 106, 116, 118, 128, 250, 364, 346, 239, 143, 118,
- /* 730 */ 285, 250, 242, 190, 42, 301, 292, 285, 276, 232,
- /* 740 */ 207, 201, 301, 276, 38, 136, 329, 307, 305, 308,
- /* 750 */ 309, 310, 304, 303, 298, 363, 219, 266, 221, 67,
- /* 760 */ 276, 94, 363, 219, 104, 221, 67, 286, 94, 278,
- /* 770 */ 346, 107, 147, 118, 52, 250, 337, 346, 19, 194,
- /* 780 */ 118, 285, 250, 245, 256, 32, 301, 276, 285, 1,
- /* 790 */ 83, 363, 219, 301, 220, 67, 76, 94, 363, 219,
- /* 800 */ 103, 221, 67, 90, 94, 79, 346, 100, 351, 118,
- /* 810 */ 80, 250, 204, 346, 84, 302, 118, 285, 250, 62,
- /* 820 */ 271, 241, 301, 188, 285, 280, 46, 363, 219, 301,
- /* 830 */ 221, 66, 43, 94, 363, 216, 98, 221, 166, 91,
- /* 840 */ 94, 130, 346, 20, 82, 118, 200, 250, 41, 346,
- /* 850 */ 294, 8, 118, 285, 250, 338, 296, 296, 301, 296,
- /* 860 */ 285, 296, 296, 296, 296, 296, 296, 296, 181, 355,
- /* 870 */ 363, 275, 296, 221, 127, 296, 94, 363, 275, 296,
- /* 880 */ 221, 59, 89, 94, 296, 346, 296, 296, 118, 296,
- /* 890 */ 250, 296, 346, 196, 296, 118, 285, 250, 296, 296,
- /* 900 */ 296, 296, 296, 285, 363, 86, 296, 72, 53, 93,
- /* 910 */ 87, 363, 86, 296, 74, 60, 93, 87, 296, 346,
- /* 920 */ 296, 296, 118, 296, 250, 296, 346, 296, 296, 118,
- /* 930 */ 285, 250, 296, 296, 296, 296, 296, 285, 296, 296,
- /* 940 */ 296, 296, 296, 296, 363, 275, 296, 221, 127, 296,
- /* 950 */ 94, 296, 296, 296, 296, 296, 296, 296, 296, 346,
- /* 960 */ 296, 296, 118, 296, 250, 296, 296, 357, 363, 228,
- /* 970 */ 285, 221, 54, 95, 94, 296, 296, 296, 296, 296,
- /* 980 */ 296, 363, 275, 346, 221, 127, 118, 94, 250, 296,
- /* 990 */ 296, 296, 296, 296, 285, 296, 346, 296, 296, 118,
- /* 1000 */ 296, 250, 363, 216, 223, 221, 166, 285, 94, 316,
- /* 1010 */ 235, 361, 362, 214, 300, 14, 296, 346, 296, 296,
- /* 1020 */ 118, 296, 250, 363, 275, 296, 221, 127, 285, 94,
- /* 1030 */ 109, 296, 296, 296, 296, 296, 296, 352, 346, 296,
- /* 1040 */ 296, 118, 296, 250, 296, 296, 197, 363, 186, 285,
- /* 1050 */ 221, 151, 238, 94, 296, 296, 296, 363, 275, 296,
- /* 1060 */ 221, 167, 346, 94, 296, 118, 296, 250, 296, 296,
- /* 1070 */ 296, 296, 346, 285, 296, 118, 296, 250, 363, 275,
- /* 1080 */ 296, 221, 134, 285, 94, 296, 296, 296, 296, 296,
- /* 1090 */ 296, 296, 296, 346, 296, 296, 118, 296, 250, 363,
- /* 1100 */ 275, 296, 221, 126, 285, 94, 296, 296, 296, 296,
- /* 1110 */ 296, 296, 296, 296, 346, 296, 296, 118, 296, 250,
- /* 1120 */ 296, 296, 296, 363, 275, 285, 221, 131, 296, 94,
- /* 1130 */ 296, 296, 296, 363, 275, 296, 221, 155, 346, 94,
- /* 1140 */ 296, 118, 296, 250, 296, 296, 296, 296, 346, 285,
- /* 1150 */ 296, 118, 296, 250, 363, 275, 296, 221, 153, 285,
- /* 1160 */ 94, 296, 296, 296, 296, 296, 296, 296, 296, 346,
- /* 1170 */ 296, 296, 118, 296, 250, 363, 275, 296, 221, 125,
- /* 1180 */ 285, 94, 296, 296, 296, 296, 296, 296, 296, 296,
- /* 1190 */ 346, 296, 296, 118, 296, 250, 296, 296, 296, 363,
- /* 1200 */ 275, 285, 221, 163, 296, 94, 296, 296, 296, 363,
- /* 1210 */ 275, 296, 221, 165, 346, 94, 296, 118, 296, 250,
- /* 1220 */ 296, 296, 296, 296, 346, 285, 296, 118, 296, 250,
- /* 1230 */ 363, 275, 296, 221, 150, 285, 94, 296, 296, 296,
- /* 1240 */ 296, 296, 296, 296, 296, 346, 296, 296, 118, 296,
- /* 1250 */ 250, 363, 275, 296, 221, 64, 285, 94, 296, 296,
- /* 1260 */ 296, 296, 296, 296, 296, 296, 346, 296, 296, 118,
- /* 1270 */ 296, 250, 296, 296, 296, 363, 275, 285, 221, 120,
- /* 1280 */ 296, 94, 296, 296, 296, 363, 275, 296, 221, 152,
- /* 1290 */ 346, 94, 296, 118, 296, 250, 296, 296, 296, 296,
- /* 1300 */ 346, 285, 296, 118, 296, 250, 363, 275, 296, 221,
- /* 1310 */ 149, 285, 94, 296, 296, 296, 296, 296, 296, 296,
- /* 1320 */ 296, 346, 296, 296, 118, 296, 250, 363, 275, 296,
- /* 1330 */ 221, 148, 285, 94, 296, 296, 296, 296, 296, 296,
- /* 1340 */ 296, 296, 346, 296, 296, 118, 296, 250, 296, 296,
- /* 1350 */ 296, 363, 275, 285, 221, 363, 275, 94, 221, 296,
- /* 1360 */ 296, 94, 296, 296, 296, 296, 346, 296, 296, 115,
- /* 1370 */ 346, 250, 296, 110, 296, 250, 296, 285, 296, 363,
- /* 1380 */ 275, 285, 221, 296, 296, 94, 296, 296, 296, 296,
- /* 1390 */ 296, 296, 296, 296, 346, 296, 296, 111, 296, 250,
- /* 1400 */ 296, 296, 296, 296, 296, 285,
+ /* 0 */ 4, 11, 83, 53, 247, 99, 220, 180, 345, 43,
+ /* 10 */ 231, 131, 47, 7, 363, 244, 103, 191, 254, 253,
+ /* 20 */ 263, 185, 15, 49, 45, 42, 63, 226, 326, 323,
+ /* 30 */ 292, 52, 184, 95, 60, 2, 560, 51, 257, 253,
+ /* 40 */ 263, 184, 40, 17, 16, 352, 353, 24, 28, 360,
+ /* 50 */ 361, 25, 34, 269, 268, 265, 266, 267, 273, 274,
+ /* 60 */ 280, 281, 282, 279, 278, 18, 169, 301, 310, 98,
+ /* 70 */ 289, 217, 47, 233, 101, 23, 98, 185, 31, 209,
+ /* 80 */ 208, 349, 11, 49, 45, 291, 260, 8, 72, 50,
+ /* 90 */ 300, 322, 131, 18, 331, 251, 310, 300, 200, 275,
+ /* 100 */ 13, 184, 40, 17, 16, 352, 353, 24, 28, 360,
+ /* 110 */ 361, 25, 34, 269, 268, 265, 266, 267, 273, 274,
+ /* 120 */ 280, 281, 282, 279, 278, 4, 18, 87, 172, 310,
+ /* 130 */ 26, 184, 18, 329, 43, 310, 18, 184, 340, 310,
+ /* 140 */ 27, 103, 191, 132, 246, 229, 235, 19, 236, 54,
+ /* 150 */ 42, 63, 4, 326, 323, 292, 52, 304, 288, 60,
+ /* 160 */ 2, 264, 237, 4, 185, 84, 176, 185, 103, 201,
+ /* 170 */ 239, 365, 43, 369, 366, 54, 344, 334, 39, 103,
+ /* 180 */ 191, 18, 333, 18, 310, 19, 310, 27, 42, 63,
+ /* 190 */ 11, 326, 323, 292, 52, 73, 204, 60, 2, 4,
+ /* 200 */ 131, 87, 187, 118, 328, 350, 364, 243, 43, 196,
+ /* 210 */ 227, 185, 185, 185, 155, 103, 191, 307, 288, 317,
+ /* 220 */ 30, 19, 87, 137, 42, 63, 11, 326, 323, 292,
+ /* 230 */ 52, 166, 293, 60, 2, 4, 131, 84, 176, 349,
+ /* 240 */ 184, 184, 321, 56, 43, 255, 18, 259, 427, 310,
+ /* 250 */ 258, 103, 191, 121, 60, 185, 184, 15, 168, 349,
+ /* 260 */ 42, 63, 32, 326, 323, 292, 52, 135, 288, 60,
+ /* 270 */ 2, 4, 166, 87, 178, 38, 230, 86, 252, 201,
+ /* 280 */ 43, 165, 288, 18, 330, 190, 310, 103, 191, 241,
+ /* 290 */ 50, 309, 245, 19, 9, 21, 42, 63, 202, 326,
+ /* 300 */ 323, 292, 52, 249, 248, 60, 2, 4, 296, 84,
+ /* 310 */ 174, 171, 11, 184, 362, 47, 43, 184, 295, 37,
+ /* 320 */ 341, 185, 131, 103, 191, 185, 49, 45, 315, 19,
+ /* 330 */ 11, 98, 42, 63, 116, 326, 323, 292, 52, 166,
+ /* 340 */ 131, 60, 2, 294, 365, 437, 369, 366, 54, 288,
+ /* 350 */ 334, 164, 300, 184, 184, 218, 269, 268, 265, 266,
+ /* 360 */ 267, 273, 274, 280, 281, 282, 279, 278, 4, 210,
+ /* 370 */ 90, 176, 286, 111, 36, 305, 130, 43, 170, 185,
+ /* 380 */ 348, 166, 87, 232, 103, 191, 14, 184, 288, 250,
+ /* 390 */ 19, 288, 184, 42, 63, 109, 326, 323, 292, 52,
+ /* 400 */ 166, 194, 60, 2, 4, 193, 84, 175, 184, 87,
+ /* 410 */ 288, 22, 234, 43, 60, 98, 123, 332, 338, 55,
+ /* 420 */ 103, 191, 113, 332, 219, 55, 15, 167, 349, 42,
+ /* 430 */ 63, 288, 326, 323, 292, 52, 300, 288, 60, 2,
+ /* 440 */ 4, 60, 87, 173, 335, 293, 298, 303, 134, 43,
+ /* 450 */ 64, 185, 18, 185, 185, 310, 103, 183, 197, 214,
+ /* 460 */ 302, 18, 19, 288, 181, 42, 63, 185, 326, 323,
+ /* 470 */ 292, 52, 10, 284, 60, 2, 4, 293, 87, 177,
+ /* 480 */ 185, 354, 430, 46, 44, 43, 1, 5, 185, 430,
+ /* 490 */ 357, 301, 103, 191, 145, 318, 287, 233, 19, 317,
+ /* 500 */ 98, 42, 63, 185, 326, 323, 292, 52, 41, 291,
+ /* 510 */ 60, 4, 70, 87, 187, 322, 149, 290, 343, 106,
+ /* 520 */ 43, 300, 337, 157, 185, 185, 171, 103, 191, 185,
+ /* 530 */ 133, 285, 239, 19, 37, 320, 42, 63, 185, 326,
+ /* 540 */ 323, 292, 52, 301, 12, 60, 185, 216, 336, 233,
+ /* 550 */ 150, 367, 98, 301, 105, 185, 203, 318, 185, 233,
+ /* 560 */ 112, 291, 98, 18, 72, 59, 195, 322, 75, 276,
+ /* 570 */ 320, 291, 50, 300, 72, 184, 128, 322, 182, 359,
+ /* 580 */ 224, 78, 301, 300, 320, 156, 88, 68, 76, 67,
+ /* 590 */ 94, 81, 301, 115, 207, 179, 217, 320, 233, 101,
+ /* 600 */ 291, 98, 312, 72, 222, 65, 322, 108, 288, 138,
+ /* 610 */ 291, 301, 300, 72, 66, 228, 322, 233, 57, 92,
+ /* 620 */ 98, 301, 300, 320, 288, 318, 126, 233, 112, 291,
+ /* 630 */ 98, 129, 72, 277, 309, 322, 297, 223, 139, 291,
+ /* 640 */ 301, 300, 72, 104, 217, 322, 233, 100, 212, 98,
+ /* 650 */ 13, 300, 211, 288, 110, 79, 301, 120, 291, 320,
+ /* 660 */ 318, 72, 233, 112, 322, 98, 270, 301, 311, 288,
+ /* 670 */ 300, 271, 288, 233, 291, 198, 98, 72, 74, 161,
+ /* 680 */ 322, 301, 107, 215, 317, 186, 300, 233, 141, 256,
+ /* 690 */ 98, 322, 308, 35, 320, 91, 143, 300, 320, 291,
+ /* 700 */ 301, 317, 72, 346, 318, 322, 233, 62, 93, 98,
+ /* 710 */ 301, 300, 339, 102, 318, 213, 233, 112, 291, 98,
+ /* 720 */ 33, 72, 85, 206, 322, 89, 96, 327, 291, 320,
+ /* 730 */ 300, 72, 190, 221, 322, 306, 325, 299, 301, 32,
+ /* 740 */ 300, 262, 88, 347, 77, 58, 94, 81, 301, 160,
+ /* 750 */ 319, 162, 216, 192, 233, 150, 291, 98, 20, 72,
+ /* 760 */ 9, 48, 322, 80, 261, 194, 291, 301, 300, 72,
+ /* 770 */ 351, 217, 322, 233, 101, 307, 98, 97, 300, 225,
+ /* 780 */ 82, 136, 189, 301, 358, 291, 309, 318, 72, 233,
+ /* 790 */ 163, 322, 98, 185, 342, 305, 301, 300, 39, 6,
+ /* 800 */ 318, 291, 233, 158, 72, 98, 305, 322, 293, 305,
+ /* 810 */ 305, 305, 301, 300, 291, 305, 318, 72, 233, 114,
+ /* 820 */ 322, 98, 305, 305, 305, 301, 300, 305, 305, 318,
+ /* 830 */ 291, 188, 125, 72, 98, 305, 322, 305, 305, 305,
+ /* 840 */ 305, 305, 300, 291, 301, 305, 72, 305, 318, 322,
+ /* 850 */ 233, 119, 301, 98, 305, 300, 318, 305, 233, 124,
+ /* 860 */ 305, 98, 291, 301, 305, 72, 305, 318, 322, 233,
+ /* 870 */ 291, 305, 98, 72, 300, 305, 322, 305, 305, 301,
+ /* 880 */ 305, 291, 300, 318, 71, 233, 153, 322, 98, 305,
+ /* 890 */ 305, 305, 301, 300, 305, 305, 318, 291, 233, 152,
+ /* 900 */ 72, 98, 305, 322, 305, 305, 305, 305, 301, 300,
+ /* 910 */ 291, 305, 318, 72, 233, 140, 322, 98, 305, 305,
+ /* 920 */ 305, 301, 300, 305, 305, 318, 291, 233, 159, 72,
+ /* 930 */ 98, 305, 322, 305, 305, 305, 305, 301, 300, 291,
+ /* 940 */ 305, 318, 72, 233, 147, 322, 98, 240, 305, 305,
+ /* 950 */ 240, 300, 305, 3, 305, 291, 3, 305, 72, 305,
+ /* 960 */ 305, 322, 305, 305, 301, 305, 305, 300, 318, 103,
+ /* 970 */ 233, 154, 103, 98, 301, 305, 305, 305, 318, 305,
+ /* 980 */ 233, 122, 291, 98, 242, 72, 305, 370, 322, 305,
+ /* 990 */ 305, 305, 291, 301, 300, 72, 305, 318, 322, 233,
+ /* 1000 */ 117, 305, 98, 301, 300, 305, 305, 318, 305, 233,
+ /* 1010 */ 144, 291, 98, 305, 72, 29, 238, 322, 29, 238,
+ /* 1020 */ 305, 291, 301, 300, 72, 305, 318, 322, 233, 151,
+ /* 1030 */ 305, 98, 305, 300, 305, 305, 305, 305, 305, 305,
+ /* 1040 */ 291, 305, 305, 72, 305, 305, 322, 305, 305, 301,
+ /* 1050 */ 305, 305, 300, 318, 305, 233, 61, 305, 98, 301,
+ /* 1060 */ 305, 305, 305, 318, 305, 233, 127, 291, 98, 305,
+ /* 1070 */ 72, 305, 305, 322, 305, 305, 305, 291, 301, 300,
+ /* 1080 */ 72, 305, 318, 322, 233, 142, 305, 98, 301, 300,
+ /* 1090 */ 305, 305, 318, 305, 233, 146, 291, 98, 305, 72,
+ /* 1100 */ 305, 305, 322, 305, 305, 305, 291, 301, 300, 72,
+ /* 1110 */ 305, 318, 322, 233, 148, 305, 98, 305, 300, 305,
+ /* 1120 */ 305, 305, 305, 305, 305, 291, 305, 305, 72, 305,
+ /* 1130 */ 301, 322, 305, 305, 318, 305, 233, 300, 305, 98,
+ /* 1140 */ 305, 301, 305, 305, 305, 355, 305, 233, 291, 305,
+ /* 1150 */ 98, 69, 305, 305, 322, 305, 305, 301, 301, 356,
+ /* 1160 */ 300, 205, 368, 233, 233, 322, 98, 98, 305, 305,
+ /* 1170 */ 301, 300, 305, 305, 324, 199, 233, 305, 305, 98,
+ /* 1180 */ 301, 322, 322, 305, 316, 305, 233, 300, 300, 98,
+ /* 1190 */ 305, 305, 301, 305, 322, 305, 272, 305, 233, 305,
+ /* 1200 */ 300, 98, 305, 301, 322, 305, 305, 314, 305, 233,
+ /* 1210 */ 300, 305, 98, 305, 301, 301, 322, 305, 313, 283,
+ /* 1220 */ 233, 233, 300, 98, 98, 305, 305, 322, 305, 305,
+ /* 1230 */ 305, 305, 305, 300, 305, 305, 305, 305, 322, 322,
+ /* 1240 */ 305, 305, 305, 305, 300, 300,
);
static public $yy_lookahead = array(
- /* 0 */ 7, 15, 9, 10, 10, 12, 12, 14, 14, 16,
- /* 10 */ 16, 7, 8, 3, 10, 22, 23, 7, 77, 26,
- /* 20 */ 27, 75, 76, 82, 78, 32, 33, 81, 35, 36,
- /* 30 */ 37, 38, 22, 92, 41, 42, 7, 99, 9, 10,
- /* 40 */ 102, 95, 104, 75, 76, 34, 78, 101, 38, 81,
- /* 50 */ 8, 22, 23, 42, 11, 26, 27, 7, 90, 9,
- /* 60 */ 10, 32, 33, 95, 35, 36, 37, 38, 25, 101,
- /* 70 */ 41, 42, 43, 7, 78, 9, 10, 81, 8, 69,
- /* 80 */ 70, 7, 8, 13, 10, 15, 44, 78, 22, 23,
- /* 90 */ 81, 41, 26, 27, 87, 21, 3, 101, 32, 33,
- /* 100 */ 7, 35, 36, 37, 38, 8, 97, 41, 42, 7,
- /* 110 */ 101, 9, 10, 25, 44, 22, 7, 8, 82, 10,
- /* 120 */ 72, 73, 74, 75, 22, 23, 8, 44, 26, 27,
- /* 130 */ 21, 38, 44, 15, 32, 33, 18, 35, 36, 37,
- /* 140 */ 38, 44, 27, 41, 42, 7, 7, 9, 10, 10,
- /* 150 */ 11, 104, 75, 76, 39, 78, 10, 18, 81, 44,
- /* 160 */ 22, 23, 69, 70, 26, 27, 7, 90, 9, 10,
- /* 170 */ 32, 33, 95, 35, 36, 37, 38, 27, 101, 41,
- /* 180 */ 42, 7, 23, 9, 10, 78, 40, 26, 81, 39,
- /* 190 */ 7, 30, 31, 10, 35, 36, 22, 23, 26, 8,
- /* 200 */ 26, 27, 30, 31, 43, 75, 32, 33, 101, 35,
- /* 210 */ 36, 37, 38, 77, 8, 41, 42, 7, 82, 9,
- /* 220 */ 10, 15, 27, 40, 75, 76, 96, 78, 92, 34,
- /* 230 */ 81, 13, 22, 23, 39, 44, 26, 27, 43, 9,
- /* 240 */ 10, 111, 32, 33, 95, 35, 36, 37, 38, 83,
- /* 250 */ 101, 41, 42, 7, 7, 9, 10, 10, 11, 88,
- /* 260 */ 75, 76, 11, 78, 7, 8, 81, 10, 22, 23,
- /* 270 */ 8, 41, 26, 27, 103, 8, 82, 15, 32, 33,
- /* 280 */ 95, 35, 36, 37, 38, 34, 101, 41, 42, 7,
- /* 290 */ 10, 9, 10, 26, 11, 8, 7, 30, 31, 10,
- /* 300 */ 11, 107, 15, 23, 22, 23, 77, 15, 26, 27,
- /* 310 */ 27, 82, 89, 7, 32, 33, 10, 35, 36, 37,
- /* 320 */ 38, 92, 39, 41, 42, 7, 103, 9, 10, 40,
- /* 330 */ 8, 44, 8, 77, 9, 10, 44, 15, 82, 15,
- /* 340 */ 22, 23, 18, 28, 26, 27, 40, 15, 92, 7,
- /* 350 */ 32, 33, 10, 35, 36, 37, 38, 25, 13, 41,
- /* 360 */ 42, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 370 */ 55, 77, 28, 77, 9, 7, 82, 8, 10, 34,
- /* 380 */ 83, 66, 67, 68, 15, 24, 92, 42, 92, 7,
- /* 390 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- /* 400 */ 7, 105, 9, 10, 78, 44, 41, 81, 17, 27,
- /* 410 */ 66, 67, 68, 44, 8, 22, 23, 8, 77, 100,
- /* 420 */ 27, 15, 13, 82, 15, 32, 33, 101, 35, 36,
- /* 430 */ 37, 38, 83, 92, 41, 42, 27, 46, 47, 48,
- /* 440 */ 49, 50, 51, 52, 53, 54, 55, 7, 39, 9,
- /* 450 */ 10, 8, 28, 44, 88, 24, 100, 66, 67, 68,
- /* 460 */ 25, 78, 22, 23, 81, 21, 28, 27, 44, 103,
- /* 470 */ 28, 27, 32, 33, 43, 35, 36, 37, 38, 44,
- /* 480 */ 100, 41, 42, 39, 101, 7, 44, 45, 10, 46,
- /* 490 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 57,
- /* 500 */ 58, 59, 60, 61, 62, 63, 64, 65, 83, 66,
- /* 510 */ 67, 68, 18, 77, 46, 47, 48, 49, 50, 51,
- /* 520 */ 52, 53, 54, 55, 7, 17, 9, 10, 92, 29,
- /* 530 */ 8, 8, 24, 88, 66, 67, 68, 15, 15, 22,
- /* 540 */ 23, 105, 28, 11, 27, 13, 99, 29, 103, 32,
- /* 550 */ 33, 104, 35, 36, 37, 38, 77, 7, 41, 9,
- /* 560 */ 10, 77, 8, 28, 21, 99, 82, 8, 8, 15,
- /* 570 */ 104, 92, 22, 23, 15, 15, 92, 27, 10, 44,
- /* 580 */ 45, 56, 32, 33, 105, 35, 36, 37, 38, 88,
- /* 590 */ 41, 41, 57, 58, 59, 60, 61, 62, 63, 64,
- /* 600 */ 65, 10, 75, 76, 103, 78, 79, 8, 81, 8,
- /* 610 */ 100, 84, 85, 103, 15, 25, 15, 90, 8, 77,
- /* 620 */ 93, 10, 95, 85, 86, 15, 75, 76, 101, 78,
- /* 630 */ 79, 8, 81, 106, 92, 84, 75, 76, 15, 78,
- /* 640 */ 79, 90, 81, 8, 93, 84, 95, 10, 8, 77,
- /* 650 */ 15, 90, 101, 8, 93, 15, 95, 106, 74, 75,
- /* 660 */ 15, 4, 101, 8, 92, 88, 8, 106, 75, 76,
- /* 670 */ 15, 78, 79, 15, 81, 75, 76, 84, 78, 79,
- /* 680 */ 103, 81, 88, 90, 84, 88, 93, 99, 95, 75,
- /* 690 */ 90, 3, 104, 93, 101, 95, 11, 103, 34, 106,
- /* 700 */ 103, 101, 10, 88, 75, 76, 106, 78, 79, 8,
- /* 710 */ 81, 75, 76, 84, 78, 79, 108, 81, 103, 90,
- /* 720 */ 84, 88, 93, 77, 95, 111, 90, 23, 77, 93,
- /* 730 */ 101, 95, 41, 44, 45, 106, 103, 101, 92, 3,
- /* 740 */ 20, 10, 106, 92, 11, 77, 57, 58, 59, 60,
- /* 750 */ 61, 62, 63, 64, 65, 75, 76, 8, 78, 79,
- /* 760 */ 92, 81, 75, 76, 84, 78, 79, 28, 81, 8,
- /* 770 */ 90, 84, 77, 93, 100, 95, 8, 90, 27, 10,
- /* 780 */ 93, 101, 95, 43, 69, 19, 106, 92, 101, 15,
- /* 790 */ 9, 75, 76, 106, 78, 79, 9, 81, 75, 76,
- /* 800 */ 84, 78, 79, 15, 81, 9, 90, 84, 8, 93,
- /* 810 */ 9, 95, 20, 90, 9, 4, 93, 101, 95, 10,
- /* 820 */ 102, 92, 106, 15, 101, 103, 94, 75, 76, 106,
- /* 830 */ 78, 79, 15, 81, 75, 76, 84, 78, 79, 97,
- /* 840 */ 81, 100, 90, 27, 9, 93, 91, 95, 25, 90,
- /* 850 */ 105, 87, 93, 101, 95, 85, 112, 112, 106, 112,
- /* 860 */ 101, 112, 112, 112, 112, 112, 112, 112, 109, 110,
- /* 870 */ 75, 76, 112, 78, 79, 112, 81, 75, 76, 112,
- /* 880 */ 78, 79, 80, 81, 112, 90, 112, 112, 93, 112,
- /* 890 */ 95, 112, 90, 98, 112, 93, 101, 95, 112, 112,
- /* 900 */ 112, 112, 112, 101, 75, 76, 112, 78, 79, 80,
- /* 910 */ 81, 75, 76, 112, 78, 79, 80, 81, 112, 90,
- /* 920 */ 112, 112, 93, 112, 95, 112, 90, 112, 112, 93,
- /* 930 */ 101, 95, 112, 112, 112, 112, 112, 101, 112, 112,
- /* 940 */ 112, 112, 112, 112, 75, 76, 112, 78, 79, 112,
- /* 950 */ 81, 112, 112, 112, 112, 112, 112, 112, 112, 90,
- /* 960 */ 112, 112, 93, 112, 95, 112, 112, 98, 75, 76,
- /* 970 */ 101, 78, 79, 80, 81, 112, 112, 112, 112, 112,
- /* 980 */ 112, 75, 76, 90, 78, 79, 93, 81, 95, 112,
- /* 990 */ 112, 112, 112, 112, 101, 112, 90, 112, 112, 93,
- /* 1000 */ 112, 95, 75, 76, 98, 78, 79, 101, 81, 1,
- /* 1010 */ 2, 3, 4, 5, 6, 7, 112, 90, 112, 112,
- /* 1020 */ 93, 112, 95, 75, 76, 112, 78, 79, 101, 81,
- /* 1030 */ 22, 112, 112, 112, 112, 112, 112, 110, 90, 112,
- /* 1040 */ 112, 93, 112, 95, 112, 112, 98, 75, 76, 101,
- /* 1050 */ 78, 79, 80, 81, 112, 112, 112, 75, 76, 112,
- /* 1060 */ 78, 79, 90, 81, 112, 93, 112, 95, 112, 112,
- /* 1070 */ 112, 112, 90, 101, 112, 93, 112, 95, 75, 76,
- /* 1080 */ 112, 78, 79, 101, 81, 112, 112, 112, 112, 112,
- /* 1090 */ 112, 112, 112, 90, 112, 112, 93, 112, 95, 75,
- /* 1100 */ 76, 112, 78, 79, 101, 81, 112, 112, 112, 112,
- /* 1110 */ 112, 112, 112, 112, 90, 112, 112, 93, 112, 95,
- /* 1120 */ 112, 112, 112, 75, 76, 101, 78, 79, 112, 81,
- /* 1130 */ 112, 112, 112, 75, 76, 112, 78, 79, 90, 81,
- /* 1140 */ 112, 93, 112, 95, 112, 112, 112, 112, 90, 101,
- /* 1150 */ 112, 93, 112, 95, 75, 76, 112, 78, 79, 101,
- /* 1160 */ 81, 112, 112, 112, 112, 112, 112, 112, 112, 90,
- /* 1170 */ 112, 112, 93, 112, 95, 75, 76, 112, 78, 79,
- /* 1180 */ 101, 81, 112, 112, 112, 112, 112, 112, 112, 112,
- /* 1190 */ 90, 112, 112, 93, 112, 95, 112, 112, 112, 75,
- /* 1200 */ 76, 101, 78, 79, 112, 81, 112, 112, 112, 75,
- /* 1210 */ 76, 112, 78, 79, 90, 81, 112, 93, 112, 95,
- /* 1220 */ 112, 112, 112, 112, 90, 101, 112, 93, 112, 95,
- /* 1230 */ 75, 76, 112, 78, 79, 101, 81, 112, 112, 112,
- /* 1240 */ 112, 112, 112, 112, 112, 90, 112, 112, 93, 112,
- /* 1250 */ 95, 75, 76, 112, 78, 79, 101, 81, 112, 112,
- /* 1260 */ 112, 112, 112, 112, 112, 112, 90, 112, 112, 93,
- /* 1270 */ 112, 95, 112, 112, 112, 75, 76, 101, 78, 79,
- /* 1280 */ 112, 81, 112, 112, 112, 75, 76, 112, 78, 79,
- /* 1290 */ 90, 81, 112, 93, 112, 95, 112, 112, 112, 112,
- /* 1300 */ 90, 101, 112, 93, 112, 95, 75, 76, 112, 78,
- /* 1310 */ 79, 101, 81, 112, 112, 112, 112, 112, 112, 112,
- /* 1320 */ 112, 90, 112, 112, 93, 112, 95, 75, 76, 112,
- /* 1330 */ 78, 79, 101, 81, 112, 112, 112, 112, 112, 112,
- /* 1340 */ 112, 112, 90, 112, 112, 93, 112, 95, 112, 112,
- /* 1350 */ 112, 75, 76, 101, 78, 75, 76, 81, 78, 112,
- /* 1360 */ 112, 81, 112, 112, 112, 112, 90, 112, 112, 93,
- /* 1370 */ 90, 95, 112, 93, 112, 95, 112, 101, 112, 75,
- /* 1380 */ 76, 101, 78, 112, 112, 81, 112, 112, 112, 112,
- /* 1390 */ 112, 112, 112, 112, 90, 112, 112, 93, 112, 95,
- /* 1400 */ 112, 112, 112, 112, 112, 101,
+ /* 0 */ 9, 31, 11, 12, 10, 14, 36, 16, 10, 18,
+ /* 10 */ 19, 41, 18, 27, 10, 45, 25, 26, 76, 77,
+ /* 20 */ 78, 17, 31, 29, 30, 34, 35, 32, 37, 38,
+ /* 30 */ 39, 40, 46, 17, 43, 44, 74, 75, 76, 77,
+ /* 40 */ 78, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 50 */ 55, 56, 57, 59, 60, 61, 62, 63, 64, 65,
+ /* 60 */ 66, 67, 68, 69, 70, 9, 83, 77, 12, 86,
+ /* 70 */ 10, 81, 18, 83, 84, 24, 86, 17, 9, 89,
+ /* 80 */ 90, 21, 31, 29, 30, 95, 103, 13, 98, 15,
+ /* 90 */ 107, 101, 41, 9, 10, 10, 12, 107, 42, 45,
+ /* 100 */ 31, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 110 */ 55, 56, 57, 59, 60, 61, 62, 63, 64, 65,
+ /* 120 */ 66, 67, 68, 69, 70, 9, 9, 11, 12, 12,
+ /* 130 */ 13, 46, 9, 10, 18, 12, 9, 46, 21, 12,
+ /* 140 */ 13, 25, 26, 82, 1, 2, 3, 31, 5, 6,
+ /* 150 */ 34, 35, 9, 37, 38, 39, 40, 10, 97, 43,
+ /* 160 */ 44, 45, 71, 9, 17, 11, 12, 17, 25, 42,
+ /* 170 */ 77, 2, 18, 4, 5, 6, 7, 8, 28, 25,
+ /* 180 */ 26, 9, 10, 9, 12, 31, 12, 13, 34, 35,
+ /* 190 */ 31, 37, 38, 39, 40, 102, 24, 43, 44, 9,
+ /* 200 */ 41, 11, 12, 82, 10, 10, 10, 114, 18, 15,
+ /* 210 */ 15, 17, 17, 17, 105, 25, 26, 108, 97, 110,
+ /* 220 */ 9, 31, 11, 12, 34, 35, 31, 37, 38, 39,
+ /* 230 */ 40, 87, 111, 43, 44, 9, 41, 11, 12, 21,
+ /* 240 */ 46, 46, 32, 12, 18, 14, 9, 16, 10, 12,
+ /* 250 */ 19, 25, 26, 82, 43, 17, 46, 31, 87, 21,
+ /* 260 */ 34, 35, 13, 37, 38, 39, 40, 82, 97, 43,
+ /* 270 */ 44, 9, 87, 11, 12, 9, 94, 11, 12, 42,
+ /* 280 */ 18, 10, 97, 9, 10, 36, 12, 25, 26, 71,
+ /* 290 */ 15, 109, 26, 31, 13, 28, 34, 35, 24, 37,
+ /* 300 */ 38, 39, 40, 37, 38, 43, 44, 9, 43, 11,
+ /* 310 */ 12, 36, 31, 46, 10, 18, 18, 46, 10, 44,
+ /* 320 */ 17, 17, 41, 25, 26, 17, 29, 30, 83, 31,
+ /* 330 */ 31, 86, 34, 35, 82, 37, 38, 39, 40, 87,
+ /* 340 */ 41, 43, 44, 10, 2, 46, 4, 5, 6, 97,
+ /* 350 */ 8, 10, 107, 46, 46, 12, 59, 60, 61, 62,
+ /* 360 */ 63, 64, 65, 66, 67, 68, 69, 70, 9, 26,
+ /* 370 */ 11, 12, 10, 82, 28, 12, 82, 18, 87, 17,
+ /* 380 */ 10, 87, 11, 12, 25, 26, 13, 46, 97, 32,
+ /* 390 */ 31, 97, 46, 34, 35, 82, 37, 38, 39, 40,
+ /* 400 */ 87, 28, 43, 44, 9, 42, 11, 12, 46, 11,
+ /* 410 */ 97, 33, 83, 18, 43, 86, 82, 78, 79, 80,
+ /* 420 */ 25, 26, 82, 78, 79, 80, 31, 87, 21, 34,
+ /* 430 */ 35, 97, 37, 38, 39, 40, 107, 97, 43, 44,
+ /* 440 */ 9, 43, 11, 12, 10, 111, 10, 10, 82, 18,
+ /* 450 */ 12, 17, 9, 17, 17, 12, 25, 26, 11, 12,
+ /* 460 */ 10, 9, 31, 97, 12, 34, 35, 17, 37, 38,
+ /* 470 */ 39, 40, 27, 10, 43, 44, 9, 111, 11, 12,
+ /* 480 */ 17, 10, 10, 99, 100, 18, 17, 18, 17, 17,
+ /* 490 */ 45, 77, 25, 26, 105, 81, 10, 83, 31, 110,
+ /* 500 */ 86, 34, 35, 17, 37, 38, 39, 40, 17, 95,
+ /* 510 */ 43, 9, 98, 11, 12, 101, 20, 10, 10, 93,
+ /* 520 */ 18, 107, 10, 27, 17, 17, 36, 25, 26, 17,
+ /* 530 */ 106, 10, 77, 31, 44, 109, 34, 35, 17, 37,
+ /* 540 */ 38, 39, 40, 77, 31, 43, 17, 81, 10, 83,
+ /* 550 */ 84, 10, 86, 77, 93, 17, 3, 81, 17, 83,
+ /* 560 */ 84, 95, 86, 9, 98, 106, 12, 101, 93, 114,
+ /* 570 */ 109, 95, 15, 107, 98, 46, 106, 101, 112, 113,
+ /* 580 */ 104, 93, 77, 107, 109, 88, 81, 88, 83, 84,
+ /* 590 */ 85, 86, 77, 82, 90, 91, 81, 109, 83, 84,
+ /* 600 */ 95, 86, 110, 98, 89, 88, 101, 93, 97, 82,
+ /* 610 */ 95, 77, 107, 98, 88, 81, 101, 83, 84, 85,
+ /* 620 */ 86, 77, 107, 109, 97, 81, 106, 83, 84, 95,
+ /* 630 */ 86, 106, 98, 45, 109, 101, 43, 92, 82, 95,
+ /* 640 */ 77, 107, 98, 93, 81, 101, 83, 84, 104, 86,
+ /* 650 */ 31, 107, 89, 97, 82, 11, 77, 82, 95, 109,
+ /* 660 */ 81, 98, 83, 84, 101, 86, 4, 77, 12, 97,
+ /* 670 */ 107, 81, 97, 83, 95, 23, 86, 98, 93, 105,
+ /* 680 */ 101, 77, 93, 104, 110, 81, 107, 83, 84, 85,
+ /* 690 */ 86, 101, 12, 33, 109, 11, 105, 107, 109, 95,
+ /* 700 */ 77, 110, 98, 10, 81, 101, 83, 84, 85, 86,
+ /* 710 */ 77, 107, 10, 93, 81, 32, 83, 84, 95, 86,
+ /* 720 */ 22, 98, 11, 23, 101, 11, 32, 32, 95, 109,
+ /* 730 */ 107, 98, 36, 12, 101, 12, 26, 104, 77, 13,
+ /* 740 */ 107, 10, 81, 7, 83, 84, 85, 86, 77, 20,
+ /* 750 */ 12, 12, 81, 12, 83, 84, 95, 86, 24, 98,
+ /* 760 */ 13, 58, 101, 11, 10, 28, 95, 77, 107, 98,
+ /* 770 */ 97, 81, 101, 83, 84, 108, 86, 103, 107, 89,
+ /* 780 */ 11, 106, 96, 77, 113, 95, 109, 81, 98, 83,
+ /* 790 */ 84, 101, 86, 17, 90, 115, 77, 107, 28, 92,
+ /* 800 */ 81, 95, 83, 84, 98, 86, 115, 101, 111, 115,
+ /* 810 */ 115, 115, 77, 107, 95, 115, 81, 98, 83, 84,
+ /* 820 */ 101, 86, 115, 115, 115, 77, 107, 115, 115, 81,
+ /* 830 */ 95, 83, 84, 98, 86, 115, 101, 115, 115, 115,
+ /* 840 */ 115, 115, 107, 95, 77, 115, 98, 115, 81, 101,
+ /* 850 */ 83, 84, 77, 86, 115, 107, 81, 115, 83, 84,
+ /* 860 */ 115, 86, 95, 77, 115, 98, 115, 81, 101, 83,
+ /* 870 */ 95, 115, 86, 98, 107, 115, 101, 115, 115, 77,
+ /* 880 */ 115, 95, 107, 81, 98, 83, 84, 101, 86, 115,
+ /* 890 */ 115, 115, 77, 107, 115, 115, 81, 95, 83, 84,
+ /* 900 */ 98, 86, 115, 101, 115, 115, 115, 115, 77, 107,
+ /* 910 */ 95, 115, 81, 98, 83, 84, 101, 86, 115, 115,
+ /* 920 */ 115, 77, 107, 115, 115, 81, 95, 83, 84, 98,
+ /* 930 */ 86, 115, 101, 115, 115, 115, 115, 77, 107, 95,
+ /* 940 */ 115, 81, 98, 83, 84, 101, 86, 3, 115, 115,
+ /* 950 */ 3, 107, 115, 9, 115, 95, 9, 115, 98, 115,
+ /* 960 */ 115, 101, 115, 115, 77, 115, 115, 107, 81, 25,
+ /* 970 */ 83, 84, 25, 86, 77, 115, 115, 115, 81, 115,
+ /* 980 */ 83, 84, 95, 86, 40, 98, 115, 40, 101, 115,
+ /* 990 */ 115, 115, 95, 77, 107, 98, 115, 81, 101, 83,
+ /* 1000 */ 84, 115, 86, 77, 107, 115, 115, 81, 115, 83,
+ /* 1010 */ 84, 95, 86, 115, 98, 71, 72, 101, 71, 72,
+ /* 1020 */ 115, 95, 77, 107, 98, 115, 81, 101, 83, 84,
+ /* 1030 */ 115, 86, 115, 107, 115, 115, 115, 115, 115, 115,
+ /* 1040 */ 95, 115, 115, 98, 115, 115, 101, 115, 115, 77,
+ /* 1050 */ 115, 115, 107, 81, 115, 83, 84, 115, 86, 77,
+ /* 1060 */ 115, 115, 115, 81, 115, 83, 84, 95, 86, 115,
+ /* 1070 */ 98, 115, 115, 101, 115, 115, 115, 95, 77, 107,
+ /* 1080 */ 98, 115, 81, 101, 83, 84, 115, 86, 77, 107,
+ /* 1090 */ 115, 115, 81, 115, 83, 84, 95, 86, 115, 98,
+ /* 1100 */ 115, 115, 101, 115, 115, 115, 95, 77, 107, 98,
+ /* 1110 */ 115, 81, 101, 83, 84, 115, 86, 115, 107, 115,
+ /* 1120 */ 115, 115, 115, 115, 115, 95, 115, 115, 98, 115,
+ /* 1130 */ 77, 101, 115, 115, 81, 115, 83, 107, 115, 86,
+ /* 1140 */ 115, 77, 115, 115, 115, 81, 115, 83, 95, 115,
+ /* 1150 */ 86, 98, 115, 115, 101, 115, 115, 77, 77, 95,
+ /* 1160 */ 107, 81, 81, 83, 83, 101, 86, 86, 115, 115,
+ /* 1170 */ 77, 107, 115, 115, 81, 95, 83, 115, 115, 86,
+ /* 1180 */ 77, 101, 101, 115, 81, 115, 83, 107, 107, 86,
+ /* 1190 */ 115, 115, 77, 115, 101, 115, 81, 115, 83, 115,
+ /* 1200 */ 107, 86, 115, 77, 101, 115, 115, 81, 115, 83,
+ /* 1210 */ 107, 115, 86, 115, 77, 77, 101, 115, 81, 81,
+ /* 1220 */ 83, 83, 107, 86, 86, 115, 115, 101, 115, 115,
+ /* 1230 */ 115, 115, 115, 107, 115, 115, 115, 115, 101, 101,
+ /* 1240 */ 115, 115, 115, 115, 107, 107,
);
- const YY_SHIFT_USE_DFLT = -15;
- const YY_SHIFT_MAX = 236;
+ const YY_SHIFT_USE_DFLT = -31;
+ const YY_SHIFT_MAX = 234;
static public $yy_shift_ofst = array(
- /* 0 */ 1008, 318, 282, 282, 282, 282, 102, 282, 282, 282,
- /* 10 */ 282, 282, 282, 282, -7, -7, 138, 66, 138, 66,
- /* 20 */ 66, 102, 66, 246, 66, 66, 66, 66, 66, 66,
- /* 30 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 29,
- /* 40 */ 210, 174, 440, 393, 550, 517, 517, 50, 93, 409,
- /* 50 */ 70, 230, 345, 369, 287, 332, 332, 365, 365, 292,
- /* 60 */ 292, 365, 292, 332, 292, 442, 535, 689, 1008, 10,
- /* 70 */ 139, 289, 118, 183, 324, 368, 368, 478, 342, 368,
- /* 80 */ 368, 368, 368, 368, 368, 342, 635, 532, 817, 808,
- /* 90 */ 835, 218, 218, 808, 218, 808, 344, 443, 315, 391,
- /* 100 */ 468, 468, 468, 468, 468, 468, 468, 468, 109, -6,
- /* 110 */ 267, 161, 74, 4, 247, 172, 306, 257, 172, 322,
- /* 120 */ 88, 11, 406, 262, 206, 97, 42, 361, 658, 601,
- /* 130 */ 11, 191, 599, 325, 424, 382, 610, 655, 645, 11,
- /* 140 */ 623, 11, 640, 560, 559, 11, 523, 522, 435, 83,
- /* 150 */ 83, 83, 83, 83, 835, 83, -14, 218, 823, 218,
- /* 160 */ 816, 218, 218, 83, -14, 83, 83, 83, -15, -15,
- /* 170 */ -15, -15, -15, -15, -15, 159, 195, 283, 444, 115,
- /* 180 */ 150, 431, 150, 508, 251, 150, 554, 150, 280, 43,
- /* 190 */ 146, 809, 768, 751, 740, 769, 438, 739, 731, 733,
- /* 200 */ 749, 761, 715, 766, 801, 792, 805, 796, 787, 774,
- /* 210 */ 781, 788, 800, 720, 736, 568, 543, 549, 591, 525,
- /* 220 */ 494, 494, 500, 514, 518, 590, 611, 692, 701, 704,
- /* 230 */ 691, 664, 811, 637, 657, 688, 685,
+ /* 0 */ 143, 359, 298, -9, -9, 154, 154, 154, 226, 395,
+ /* 10 */ 298, 154, 154, 154, 226, 154, 154, 154, 154, 154,
+ /* 20 */ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ /* 30 */ 154, 154, 154, 154, 154, 154, 154, 116, 190, 262,
+ /* 40 */ 190, 431, 502, 502, 502, 502, 502, 502, 467, 502,
+ /* 50 */ 211, 143, 944, 195, 169, 342, 194, 308, 362, 275,
+ /* 60 */ 371, 529, 529, 398, 529, 150, 150, 529, 150, 54,
+ /* 70 */ -6, 297, 297, 947, 127, 117, 238, 60, 237, 443,
+ /* 80 */ 443, 74, 443, 452, 554, 443, 443, 443, 541, 443,
+ /* 90 */ 554, 443, 776, 776, 776, 769, 557, 557, 557, 491,
+ /* 100 */ -5, 55, 274, 231, 172, 84, 174, 123, 56, 450,
+ /* 110 */ 437, 436, -14, 463, 346, 471, 304, 85, 147, 267,
+ /* 120 */ 4, 196, 341, 434, 271, 91, 490, 210, 490, 490,
+ /* 130 */ 508, 447, 512, 490, 538, 521, 490, 69, 507, 486,
+ /* 140 */ 307, 307, 307, 557, 307, 557, 307, 307, 307, 303,
+ /* 150 */ 307, 307, 307, 307, 307, 557, 770, 769, 307, 307,
+ /* 160 */ 303, 557, 513, 307, -31, -31, -31, -31, -31, -31,
+ /* 170 */ -31, 266, -30, 281, 51, 299, 159, 159, 159, 496,
+ /* 180 */ 469, 373, 445, 249, 363, 343, 472, 159, 218, 731,
+ /* 190 */ 710, 696, 754, 723, 738, 737, 741, 739, 714, 652,
+ /* 200 */ 680, 656, 644, 662, 684, 700, 711, 698, 693, 702,
+ /* 210 */ 726, 683, 694, 660, 619, 695, 734, 703, 747, 736,
+ /* 220 */ 721, 588, 729, 752, 357, 370, 378, 438, 333, 553,
+ /* 230 */ -2, 16, 265, 407, 593,
);
- const YY_REDUCE_USE_DFLT = -63;
- const YY_REDUCE_MAX = 174;
+ const YY_REDUCE_USE_DFLT = -59;
+ const YY_REDUCE_MAX = 170;
static public $yy_reduce_ofst = array(
- /* 0 */ 48, 527, 636, 716, 680, 687, 759, 593, 629, 561,
- /* 10 */ 600, 551, 723, 752, 836, 829, 802, 869, 893, 948,
- /* 20 */ 795, 927, 906, 972, 1100, 1124, 982, 1134, 1079, 1058,
- /* 30 */ 1003, 1024, 1176, 1048, 1155, 1200, 1252, 1231, 1210, 1304,
- /* 40 */ 1280, 1276, -32, 77, 149, 185, -54, 9, 130, 484,
- /* 50 */ -59, -4, -62, 229, 136, 436, 479, 326, 107, 294,
- /* 60 */ 229, 383, 256, 296, 341, 194, 194, 194, 584, 614,
- /* 70 */ 223, 510, 542, 510, 542, 171, 577, 171, 171, 597,
- /* 80 */ 594, 633, 615, 445, 366, 501, 572, 447, 668, 695,
- /* 90 */ 538, 466, 588, 646, 447, 651, 608, 608, 608, 608,
- /* 100 */ 608, 608, 608, 608, 608, 608, 608, 608, 722, 755,
- /* 110 */ 732, 732, 722, 722, 722, 732, 722, 722, 732, 729,
- /* 120 */ 36, 718, 729, 729, 729, 36, 36, 36, 729, 729,
- /* 130 */ 718, 36, 729, 742, 36, 741, 729, 729, 729, 718,
- /* 140 */ 729, 718, 729, 729, 729, 718, 729, 729, 36, 36,
- /* 150 */ 36, 36, 36, 36, 770, 36, 764, 47, 745, 47,
- /* 160 */ 674, 47, 47, 36, 7, 36, 36, 36, 297, 356,
- /* 170 */ 380, 425, 319, 349, 166,
+ /* 0 */ -38, -10, 466, 661, 505, 690, 515, 633, 623, 604,
+ /* 10 */ 671, 579, 544, 476, 534, 563, 1030, 945, 916, 982,
+ /* 20 */ 1001, 887, 767, 802, 860, 831, 719, 844, 815, 748,
+ /* 30 */ 775, 897, 1011, 972, 926, 735, 706, 1053, 414, 786,
+ /* 40 */ 1064, 1080, 1126, 1137, 1115, 1138, 590, 1093, 1081, 1103,
+ /* 50 */ -17, -58, 93, 171, 345, 339, 291, 313, 185, 109,
+ /* 60 */ 329, 294, 252, 245, 340, 366, 334, 185, 121, 384,
+ /* 70 */ 384, 384, 384, 455, 525, 182, 527, 527, 525, 461,
+ /* 80 */ 475, 389, 426, 488, 488, 550, 514, 488, 511, 620,
+ /* 90 */ 585, 589, 572, 575, 556, 504, 591, 574, 389, 61,
+ /* 100 */ 144, 144, 677, 686, 677, 677, 677, 677, 677, 673,
+ /* 110 */ 673, 673, 144, 673, 144, 673, 673, 144, 673, 144,
+ /* 120 */ 673, 673, 144, 673, 144, 144, 667, 144, 667, 667,
+ /* 130 */ 673, 674, 673, 667, 673, 673, 667, 675, 673, 673,
+ /* 140 */ 144, 144, 144, 492, 144, 492, 144, 144, 144, 707,
+ /* 150 */ 144, 144, 144, 144, 144, 492, 697, 704, 144, 144,
+ /* 160 */ 545, 492, 459, 144, 424, 470, 497, 526, 517, 520,
+ /* 170 */ 499,
);
static public $yyExpectedTokens = array(
- /* 0 */ array(1, 2, 3, 4, 5, 6, 7, 22, ),
- /* 1 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 2 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 3 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 4 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 5 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 6 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 7 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 8 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 9 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 10 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 11 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 12 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 13 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 14 */ array(7, 9, 10, 12, 14, 16, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 15 */ array(7, 9, 10, 12, 14, 16, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 16 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 17 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 18 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 19 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 20 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 21 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 22 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 23 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 24 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 25 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 26 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 27 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 28 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 29 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 30 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 31 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 32 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 33 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 34 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 35 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 36 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 37 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 38 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 39 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, 43, ),
- /* 40 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 41 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 42 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 43 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 44 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, ),
- /* 45 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, ),
- /* 46 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, ),
- /* 47 */ array(7, 9, 10, 41, ),
- /* 48 */ array(3, 7, 22, 38, 69, 70, ),
- /* 49 */ array(8, 13, 15, 27, 39, 44, ),
- /* 50 */ array(8, 13, 15, 44, ),
- /* 51 */ array(9, 10, 41, ),
- /* 52 */ array(13, 34, 42, ),
- /* 53 */ array(8, 15, 44, ),
- /* 54 */ array(8, 15, 44, ),
- /* 55 */ array(15, 25, ),
- /* 56 */ array(15, 25, ),
- /* 57 */ array(9, 41, ),
- /* 58 */ array(9, 41, ),
- /* 59 */ array(15, 44, ),
- /* 60 */ array(15, 44, ),
- /* 61 */ array(9, 41, ),
- /* 62 */ array(15, 44, ),
- /* 63 */ array(15, 25, ),
- /* 64 */ array(15, 44, ),
- /* 65 */ array(28, 44, 45, 57, 58, 59, 60, 61, 62, 63, 64, 65, ),
- /* 66 */ array(28, 44, 45, 57, 58, 59, 60, 61, 62, 63, 64, 65, ),
- /* 67 */ array(44, 45, 57, 58, 59, 60, 61, 62, 63, 64, 65, ),
- /* 68 */ array(1, 2, 3, 4, 5, 6, 7, 22, ),
- /* 69 */ array(3, 7, 22, 38, 69, 70, ),
- /* 70 */ array(7, 10, 11, 18, ),
- /* 71 */ array(7, 10, 11, 40, ),
- /* 72 */ array(8, 15, 18, ),
- /* 73 */ array(7, 10, 40, ),
- /* 74 */ array(8, 15, 18, ),
- /* 75 */ array(7, 10, ),
- /* 76 */ array(7, 10, ),
- /* 77 */ array(7, 10, ),
- /* 78 */ array(7, 10, ),
- /* 79 */ array(7, 10, ),
- /* 80 */ array(7, 10, ),
- /* 81 */ array(7, 10, ),
- /* 82 */ array(7, 10, ),
- /* 83 */ array(7, 10, ),
- /* 84 */ array(7, 10, ),
- /* 85 */ array(7, 10, ),
- /* 86 */ array(8, 15, ),
- /* 87 */ array(11, 13, ),
- /* 88 */ array(15, ),
- /* 89 */ array(15, ),
- /* 90 */ array(9, ),
- /* 91 */ array(13, ),
- /* 92 */ array(13, ),
- /* 93 */ array(15, ),
- /* 94 */ array(13, ),
- /* 95 */ array(15, ),
- /* 96 */ array(28, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 97 */ array(8, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 98 */ array(28, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 99 */ array(17, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 100 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 101 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 102 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 103 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 104 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 105 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 106 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 107 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 108 */ array(7, 8, 10, 21, ),
- /* 109 */ array(10, 12, 14, 16, ),
- /* 110 */ array(8, 26, 30, 31, ),
- /* 111 */ array(26, 30, 31, 43, ),
- /* 112 */ array(7, 8, 10, 21, ),
- /* 113 */ array(7, 8, 10, ),
- /* 114 */ array(7, 10, 11, ),
- /* 115 */ array(26, 30, 31, ),
- /* 116 */ array(7, 10, 40, ),
- /* 117 */ array(7, 8, 10, ),
- /* 118 */ array(26, 30, 31, ),
- /* 119 */ array(8, 15, ),
- /* 120 */ array(25, 44, ),
- /* 121 */ array(34, 42, ),
- /* 122 */ array(8, 15, ),
- /* 123 */ array(8, 15, ),
- /* 124 */ array(8, 15, ),
- /* 125 */ array(8, 44, ),
- /* 126 */ array(8, 44, ),
- /* 127 */ array(24, 44, ),
- /* 128 */ array(8, 15, ),
- /* 129 */ array(8, 15, ),
- /* 130 */ array(34, 42, ),
- /* 131 */ array(8, 44, ),
- /* 132 */ array(8, 15, ),
- /* 133 */ array(9, 10, ),
- /* 134 */ array(28, 44, ),
- /* 135 */ array(7, 27, ),
- /* 136 */ array(8, 15, ),
- /* 137 */ array(8, 15, ),
- /* 138 */ array(8, 15, ),
- /* 139 */ array(34, 42, ),
- /* 140 */ array(8, 15, ),
- /* 141 */ array(34, 42, ),
- /* 142 */ array(8, 15, ),
- /* 143 */ array(8, 15, ),
- /* 144 */ array(8, 15, ),
- /* 145 */ array(34, 42, ),
- /* 146 */ array(8, 15, ),
- /* 147 */ array(8, 15, ),
- /* 148 */ array(25, 44, ),
- /* 149 */ array(44, ),
- /* 150 */ array(44, ),
- /* 151 */ array(44, ),
- /* 152 */ array(44, ),
- /* 153 */ array(44, ),
- /* 154 */ array(9, ),
- /* 155 */ array(44, ),
- /* 156 */ array(15, ),
- /* 157 */ array(13, ),
- /* 158 */ array(25, ),
- /* 159 */ array(13, ),
- /* 160 */ array(27, ),
- /* 161 */ array(13, ),
- /* 162 */ array(13, ),
- /* 163 */ array(44, ),
- /* 164 */ array(15, ),
- /* 165 */ array(44, ),
- /* 166 */ array(44, ),
- /* 167 */ array(44, ),
+ /* 0 */ array(1, 2, 3, 5, 6, 9, 25, ),
+ /* 1 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 2 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 3 */ array(9, 11, 12, 14, 16, 18, 19, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 4 */ array(9, 11, 12, 14, 16, 18, 19, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 5 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 6 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 7 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 8 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 9 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 10 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 11 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 12 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 13 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 14 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 15 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 16 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 17 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 18 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 19 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 20 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 21 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 22 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 23 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 24 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 25 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 26 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 27 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 28 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 29 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 30 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 31 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 32 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 33 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 34 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 35 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 36 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 37 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, 45, ),
+ /* 38 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 39 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 40 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 41 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 42 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 43 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 44 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 45 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 46 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 47 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 48 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 49 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 50 */ array(9, 11, 12, 43, ),
+ /* 51 */ array(1, 2, 3, 5, 6, 9, 25, ),
+ /* 52 */ array(3, 9, 25, 40, 71, 72, ),
+ /* 53 */ array(10, 15, 17, 31, 41, 46, ),
+ /* 54 */ array(2, 4, 5, 6, 7, 8, ),
+ /* 55 */ array(2, 4, 5, 6, 8, ),
+ /* 56 */ array(10, 15, 17, 46, ),
+ /* 57 */ array(10, 17, 46, ),
+ /* 58 */ array(10, 17, 46, ),
+ /* 59 */ array(15, 36, 44, ),
+ /* 60 */ array(11, 12, 43, ),
+ /* 61 */ array(17, 46, ),
+ /* 62 */ array(17, 46, ),
+ /* 63 */ array(11, 43, ),
+ /* 64 */ array(17, 46, ),
+ /* 65 */ array(17, 28, ),
+ /* 66 */ array(17, 28, ),
+ /* 67 */ array(17, 46, ),
+ /* 68 */ array(17, 28, ),
+ /* 69 */ array(18, 29, 30, 45, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 70 */ array(10, 18, 29, 30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 71 */ array(18, 29, 30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 72 */ array(18, 29, 30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 73 */ array(3, 9, 25, 40, 71, 72, ),
+ /* 74 */ array(9, 12, 13, 42, ),
+ /* 75 */ array(9, 12, 13, 21, ),
+ /* 76 */ array(10, 17, 21, ),
+ /* 77 */ array(10, 17, 21, ),
+ /* 78 */ array(9, 12, 42, ),
+ /* 79 */ array(9, 12, ),
+ /* 80 */ array(9, 12, ),
+ /* 81 */ array(13, 15, ),
+ /* 82 */ array(9, 12, ),
+ /* 83 */ array(9, 12, ),
+ /* 84 */ array(9, 12, ),
+ /* 85 */ array(9, 12, ),
+ /* 86 */ array(9, 12, ),
+ /* 87 */ array(9, 12, ),
+ /* 88 */ array(10, 17, ),
+ /* 89 */ array(9, 12, ),
+ /* 90 */ array(9, 12, ),
+ /* 91 */ array(9, 12, ),
+ /* 92 */ array(17, ),
+ /* 93 */ array(17, ),
+ /* 94 */ array(17, ),
+ /* 95 */ array(11, ),
+ /* 96 */ array(15, ),
+ /* 97 */ array(15, ),
+ /* 98 */ array(15, ),
+ /* 99 */ array(17, ),
+ /* 100 */ array(32, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ),
+ /* 101 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ),
+ /* 102 */ array(9, 10, 12, 24, ),
+ /* 103 */ array(12, 14, 16, 19, ),
+ /* 104 */ array(9, 10, 12, 24, ),
+ /* 105 */ array(9, 10, 12, ),
+ /* 106 */ array(9, 12, 13, ),
+ /* 107 */ array(9, 10, 12, ),
+ /* 108 */ array(9, 12, 42, ),
+ /* 109 */ array(10, 17, ),
+ /* 110 */ array(10, 17, ),
+ /* 111 */ array(10, 17, ),
+ /* 112 */ array(27, 46, ),
+ /* 113 */ array(10, 17, ),
+ /* 114 */ array(28, 46, ),
+ /* 115 */ array(10, 17, ),
+ /* 116 */ array(10, 17, ),
+ /* 117 */ array(10, 46, ),
+ /* 118 */ array(10, 17, ),
+ /* 119 */ array(28, 46, ),
+ /* 120 */ array(10, 17, ),
+ /* 121 */ array(10, 17, ),
+ /* 122 */ array(10, 46, ),
+ /* 123 */ array(10, 17, ),
+ /* 124 */ array(10, 46, ),
+ /* 125 */ array(46, 71, ),
+ /* 126 */ array(36, 44, ),
+ /* 127 */ array(32, 46, ),
+ /* 128 */ array(36, 44, ),
+ /* 129 */ array(36, 44, ),
+ /* 130 */ array(10, 17, ),
+ /* 131 */ array(11, 12, ),
+ /* 132 */ array(10, 17, ),
+ /* 133 */ array(36, 44, ),
+ /* 134 */ array(10, 17, ),
+ /* 135 */ array(10, 17, ),
+ /* 136 */ array(36, 44, ),
+ /* 137 */ array(9, 31, ),
+ /* 138 */ array(10, 17, ),
+ /* 139 */ array(10, 17, ),
+ /* 140 */ array(46, ),
+ /* 141 */ array(46, ),
+ /* 142 */ array(46, ),
+ /* 143 */ array(15, ),
+ /* 144 */ array(46, ),
+ /* 145 */ array(15, ),
+ /* 146 */ array(46, ),
+ /* 147 */ array(46, ),
+ /* 148 */ array(46, ),
+ /* 149 */ array(17, ),
+ /* 150 */ array(46, ),
+ /* 151 */ array(46, ),
+ /* 152 */ array(46, ),
+ /* 153 */ array(46, ),
+ /* 154 */ array(46, ),
+ /* 155 */ array(15, ),
+ /* 156 */ array(28, ),
+ /* 157 */ array(11, ),
+ /* 158 */ array(46, ),
+ /* 159 */ array(46, ),
+ /* 160 */ array(17, ),
+ /* 161 */ array(15, ),
+ /* 162 */ array(31, ),
+ /* 163 */ array(46, ),
+ /* 164 */ array(),
+ /* 165 */ array(),
+ /* 166 */ array(),
+ /* 167 */ array(),
/* 168 */ array(),
/* 169 */ array(),
/* 170 */ array(),
- /* 171 */ array(),
- /* 172 */ array(),
- /* 173 */ array(),
- /* 174 */ array(),
- /* 175 */ array(7, 9, 10, 23, 35, 36, ),
- /* 176 */ array(27, 34, 39, 43, ),
- /* 177 */ array(11, 27, 39, ),
- /* 178 */ array(21, 27, 39, ),
- /* 179 */ array(27, 39, 44, ),
- /* 180 */ array(27, 39, ),
- /* 181 */ array(24, 43, ),
- /* 182 */ array(27, 39, ),
- /* 183 */ array(17, 24, ),
- /* 184 */ array(11, 34, ),
- /* 185 */ array(27, 39, ),
- /* 186 */ array(8, 15, ),
- /* 187 */ array(27, 39, ),
- /* 188 */ array(10, 23, ),
- /* 189 */ array(11, 25, ),
- /* 190 */ array(10, 40, ),
- /* 191 */ array(10, ),
- /* 192 */ array(8, ),
- /* 193 */ array(27, ),
- /* 194 */ array(43, ),
- /* 195 */ array(10, ),
- /* 196 */ array(28, ),
- /* 197 */ array(28, ),
- /* 198 */ array(10, ),
- /* 199 */ array(11, ),
- /* 200 */ array(8, ),
- /* 201 */ array(8, ),
- /* 202 */ array(69, ),
- /* 203 */ array(19, ),
- /* 204 */ array(9, ),
- /* 205 */ array(20, ),
- /* 206 */ array(9, ),
- /* 207 */ array(9, ),
- /* 208 */ array(9, ),
- /* 209 */ array(15, ),
- /* 210 */ array(9, ),
- /* 211 */ array(15, ),
- /* 212 */ array(8, ),
- /* 213 */ array(20, ),
- /* 214 */ array(3, ),
- /* 215 */ array(10, ),
- /* 216 */ array(21, ),
- /* 217 */ array(41, ),
- /* 218 */ array(10, ),
- /* 219 */ array(56, ),
- /* 220 */ array(18, ),
- /* 221 */ array(18, ),
- /* 222 */ array(29, ),
- /* 223 */ array(28, ),
- /* 224 */ array(29, ),
- /* 225 */ array(25, ),
- /* 226 */ array(10, ),
- /* 227 */ array(10, ),
- /* 228 */ array(8, ),
- /* 229 */ array(23, ),
- /* 230 */ array(41, ),
- /* 231 */ array(34, ),
- /* 232 */ array(4, ),
- /* 233 */ array(10, ),
- /* 234 */ array(4, ),
- /* 235 */ array(3, ),
- /* 236 */ array(11, ),
+ /* 171 */ array(9, 11, 12, 26, 37, 38, ),
+ /* 172 */ array(31, 36, 41, 45, ),
+ /* 173 */ array(13, 31, 41, ),
+ /* 174 */ array(24, 31, 41, ),
+ /* 175 */ array(31, 41, 46, ),
+ /* 176 */ array(31, 41, ),
+ /* 177 */ array(31, 41, ),
+ /* 178 */ array(31, 41, ),
+ /* 179 */ array(20, 27, ),
+ /* 180 */ array(17, 18, ),
+ /* 181 */ array(13, 28, ),
+ /* 182 */ array(27, 45, ),
+ /* 183 */ array(13, 36, ),
+ /* 184 */ array(12, 42, ),
+ /* 185 */ array(12, 26, ),
+ /* 186 */ array(10, 17, ),
+ /* 187 */ array(31, 41, ),
+ /* 188 */ array(21, 71, ),
+ /* 189 */ array(10, ),
+ /* 190 */ array(26, ),
+ /* 191 */ array(36, ),
+ /* 192 */ array(10, ),
+ /* 193 */ array(12, ),
+ /* 194 */ array(12, ),
+ /* 195 */ array(28, ),
+ /* 196 */ array(12, ),
+ /* 197 */ array(12, ),
+ /* 198 */ array(11, ),
+ /* 199 */ array(23, ),
+ /* 200 */ array(12, ),
+ /* 201 */ array(12, ),
+ /* 202 */ array(11, ),
+ /* 203 */ array(4, ),
+ /* 204 */ array(11, ),
+ /* 205 */ array(23, ),
+ /* 206 */ array(11, ),
+ /* 207 */ array(22, ),
+ /* 208 */ array(10, ),
+ /* 209 */ array(10, ),
+ /* 210 */ array(13, ),
+ /* 211 */ array(32, ),
+ /* 212 */ array(32, ),
+ /* 213 */ array(33, ),
+ /* 214 */ array(31, ),
+ /* 215 */ array(32, ),
+ /* 216 */ array(24, ),
+ /* 217 */ array(58, ),
+ /* 218 */ array(13, ),
+ /* 219 */ array(7, ),
+ /* 220 */ array(12, ),
+ /* 221 */ array(45, ),
+ /* 222 */ array(20, ),
+ /* 223 */ array(11, ),
+ /* 224 */ array(32, ),
+ /* 225 */ array(10, ),
+ /* 226 */ array(33, ),
+ /* 227 */ array(12, ),
+ /* 228 */ array(10, ),
+ /* 229 */ array(3, ),
+ /* 230 */ array(10, ),
+ /* 231 */ array(17, ),
+ /* 232 */ array(43, ),
+ /* 233 */ array(21, ),
+ /* 234 */ array(43, ),
+ /* 235 */ array(),
+ /* 236 */ array(),
/* 237 */ array(),
/* 238 */ array(),
/* 239 */ array(),
@@ -898,51 +879,58 @@ static public $yy_action = array( /* 362 */ array(),
/* 363 */ array(),
/* 364 */ array(),
+ /* 365 */ array(),
+ /* 366 */ array(),
+ /* 367 */ array(),
+ /* 368 */ array(),
+ /* 369 */ array(),
+ /* 370 */ array(),
);
static public $yy_default = array(
- /* 0 */ 547, 547, 547, 547, 547, 547, 533, 547, 547, 547,
- /* 10 */ 547, 547, 547, 547, 547, 547, 547, 491, 547, 491,
- /* 20 */ 491, 547, 491, 547, 547, 547, 547, 547, 547, 547,
- /* 30 */ 547, 547, 547, 547, 547, 547, 547, 547, 547, 547,
- /* 40 */ 547, 547, 547, 547, 547, 547, 547, 547, 547, 547,
- /* 50 */ 547, 547, 453, 547, 547, 412, 412, 547, 547, 412,
- /* 60 */ 412, 547, 412, 412, 412, 501, 501, 501, 365, 547,
- /* 70 */ 547, 463, 435, 463, 435, 547, 547, 547, 547, 547,
- /* 80 */ 547, 547, 547, 547, 547, 547, 426, 456, 412, 412,
- /* 90 */ 547, 448, 449, 412, 456, 412, 547, 547, 547, 547,
- /* 100 */ 510, 511, 514, 499, 505, 515, 506, 507, 547, 547,
- /* 110 */ 547, 547, 547, 547, 547, 496, 464, 547, 423, 547,
- /* 120 */ 547, 484, 547, 547, 547, 547, 547, 490, 547, 547,
- /* 130 */ 482, 547, 547, 547, 547, 463, 547, 547, 547, 483,
- /* 140 */ 547, 461, 547, 547, 547, 485, 547, 547, 547, 502,
- /* 150 */ 430, 414, 418, 431, 547, 395, 546, 479, 425, 450,
- /* 160 */ 463, 454, 451, 421, 546, 534, 536, 535, 495, 463,
- /* 170 */ 463, 495, 463, 495, 495, 547, 547, 417, 422, 413,
- /* 180 */ 497, 547, 547, 547, 439, 516, 426, 422, 547, 477,
- /* 190 */ 547, 547, 547, 452, 547, 547, 547, 547, 547, 547,
- /* 200 */ 547, 547, 547, 419, 547, 547, 547, 547, 547, 547,
- /* 210 */ 547, 547, 547, 547, 547, 547, 426, 547, 547, 426,
- /* 220 */ 435, 435, 547, 547, 444, 477, 547, 547, 426, 547,
- /* 230 */ 547, 439, 547, 547, 547, 547, 417, 473, 416, 440,
- /* 240 */ 441, 410, 460, 474, 459, 472, 407, 442, 402, 471,
- /* 250 */ 443, 543, 544, 366, 540, 424, 539, 447, 538, 375,
- /* 260 */ 376, 434, 433, 432, 406, 405, 403, 436, 481, 457,
- /* 270 */ 404, 462, 408, 438, 427, 426, 411, 486, 409, 465,
- /* 280 */ 476, 466, 467, 478, 437, 458, 488, 468, 469, 480,
- /* 290 */ 477, 470, 475, 428, 494, 493, 517, 399, 526, 398,
- /* 300 */ 372, 498, 371, 525, 524, 520, 401, 519, 521, 522,
- /* 310 */ 523, 400, 500, 387, 528, 527, 369, 388, 386, 384,
- /* 320 */ 529, 389, 513, 390, 508, 509, 370, 512, 391, 518,
- /* 330 */ 504, 396, 545, 541, 378, 542, 379, 394, 420, 377,
- /* 340 */ 397, 444, 446, 492, 385, 445, 429, 380, 381, 392,
- /* 350 */ 530, 393, 532, 368, 503, 531, 487, 489, 383, 382,
- /* 360 */ 367, 374, 373, 455, 537,
+ /* 0 */ 559, 559, 544, 559, 559, 559, 559, 507, 559, 559,
+ /* 10 */ 559, 507, 507, 507, 559, 559, 559, 559, 559, 559,
+ /* 20 */ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ /* 30 */ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ /* 40 */ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ /* 50 */ 559, 371, 559, 559, 559, 383, 559, 559, 559, 469,
+ /* 60 */ 559, 427, 427, 559, 427, 427, 427, 427, 427, 559,
+ /* 70 */ 559, 512, 438, 559, 479, 559, 450, 450, 479, 559,
+ /* 80 */ 559, 472, 559, 559, 559, 559, 559, 559, 441, 559,
+ /* 90 */ 559, 559, 427, 427, 427, 559, 465, 464, 472, 427,
+ /* 100 */ 559, 514, 559, 559, 559, 559, 559, 559, 480, 559,
+ /* 110 */ 559, 559, 506, 559, 559, 559, 559, 559, 559, 559,
+ /* 120 */ 559, 559, 559, 559, 559, 559, 499, 559, 500, 477,
+ /* 130 */ 559, 559, 559, 501, 559, 559, 498, 479, 559, 559,
+ /* 140 */ 525, 429, 545, 467, 526, 495, 433, 521, 518, 558,
+ /* 150 */ 547, 517, 522, 546, 449, 470, 440, 559, 410, 436,
+ /* 160 */ 558, 466, 479, 448, 479, 479, 511, 511, 511, 479,
+ /* 170 */ 511, 559, 559, 432, 437, 428, 437, 527, 513, 559,
+ /* 180 */ 559, 493, 559, 455, 559, 559, 441, 559, 450, 559,
+ /* 190 */ 559, 455, 559, 559, 559, 493, 559, 559, 559, 559,
+ /* 200 */ 559, 559, 559, 559, 559, 559, 559, 434, 559, 559,
+ /* 210 */ 559, 559, 559, 559, 468, 559, 441, 441, 432, 559,
+ /* 220 */ 559, 559, 559, 559, 559, 559, 460, 559, 441, 559,
+ /* 230 */ 559, 559, 559, 450, 559, 378, 379, 551, 552, 555,
+ /* 240 */ 556, 550, 463, 549, 487, 485, 375, 486, 484, 483,
+ /* 250 */ 504, 494, 482, 374, 373, 421, 431, 372, 420, 419,
+ /* 260 */ 502, 424, 418, 376, 490, 531, 532, 533, 530, 529,
+ /* 270 */ 377, 446, 447, 534, 535, 489, 548, 488, 540, 539,
+ /* 280 */ 536, 537, 538, 444, 403, 392, 554, 393, 426, 553,
+ /* 290 */ 391, 445, 461, 510, 394, 395, 475, 476, 422, 505,
+ /* 300 */ 474, 471, 396, 397, 423, 509, 508, 478, 481, 492,
+ /* 310 */ 493, 473, 497, 451, 452, 453, 442, 496, 441, 439,
+ /* 320 */ 491, 460, 459, 458, 443, 456, 457, 503, 417, 414,
+ /* 330 */ 415, 416, 384, 413, 385, 405, 404, 401, 382, 406,
+ /* 340 */ 411, 557, 435, 412, 380, 409, 408, 381, 407, 454,
+ /* 350 */ 402, 425, 519, 520, 390, 516, 515, 541, 543, 542,
+ /* 360 */ 523, 524, 398, 399, 400, 386, 387, 389, 528, 388,
+ /* 370 */ 462,
);
- const YYNOCODE = 113;
+ const YYNOCODE = 116;
const YYSTACKDEPTH = 100;
- const YYNSTATE = 365;
- const YYNRULE = 182;
- const YYERRORSYMBOL = 71;
+ const YYNSTATE = 371;
+ const YYNRULE = 188;
+ const YYERRORSYMBOL = 73;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
static public $yyFallback = array(
@@ -971,34 +959,35 @@ static public $yy_action = array( public $yystack = array(); /* The parser's stack */
public $yyTokenName = array(
- '$', 'COMMENT', 'PHP', 'OTHER',
- 'SHORTTAGEND', 'SHORTTAGSTART', 'XML', 'LDEL',
- 'RDEL', 'DOLLAR', 'ID', 'EQUAL',
- 'FOREACH', 'PTR', 'IF', 'SPACE',
- 'FOR', 'SEMICOLON', 'INCDEC', 'TO',
- 'AS', 'APTR', 'LDELSLASH', 'INTEGER',
- 'COMMA', 'COLON', 'UNIMATH', 'OPENP',
- 'CLOSEP', 'QMARK', 'MATH', 'ANDSYM',
- 'NOT', 'TYPECAST', 'DOT', 'BOOLEAN',
- 'NULL', 'SINGLEQUOTESTRING', 'QUOTE', 'DOUBLECOLON',
- 'AT', 'HATCH', 'OPENB', 'CLOSEB',
- 'VERT', 'ISIN', 'ISDIVBY', 'ISNOTDIVBY',
- 'ISEVEN', 'ISNOTEVEN', 'ISEVENBY', 'ISNOTEVENBY',
- 'ISODD', 'ISNOTODD', 'ISODDBY', 'ISNOTODDBY',
- 'INSTANCEOF', 'EQUALS', 'NOTEQUALS', 'GREATERTHAN',
- 'LESSTHAN', 'GREATEREQUAL', 'LESSEQUAL', 'IDENTITY',
- 'NONEIDENTITY', 'MOD', 'LAND', 'LOR',
- 'LXOR', 'BACKTICK', 'DOLLARID', 'error',
- 'start', 'template', 'template_element', 'smartytag',
- 'value', 'attributes', 'variable', 'expr',
- 'ternary', 'varindexed', 'modifier', 'modparameters',
- 'ifexprs', 'statement', 'statements', 'optspace',
- 'varvar', 'foraction', 'array', 'specialclose',
- 'attribute', 'exprs', 'math', 'function',
- 'doublequoted', 'method', 'params', 'objectchain',
- 'arrayindex', 'object', 'indexdef', 'varvarele',
- 'objectelement', 'modparameter', 'ifexpr', 'ifcond',
- 'lop', 'arrayelements', 'arrayelement', 'doublequotedcontent',
+ '$', 'COMMENT', 'PHPSTARTTAG', 'OTHER',
+ 'PHPENDTAG', 'FAKEPHPSTARTTAG', 'LITERALSTART', 'LITERALEND',
+ 'LITERAL', 'LDEL', 'RDEL', 'DOLLAR',
+ 'ID', 'EQUAL', 'FOREACH', 'PTR',
+ 'IF', 'SPACE', 'UNIMATH', 'FOR',
+ 'SEMICOLON', 'INCDEC', 'TO', 'AS',
+ 'APTR', 'LDELSLASH', 'INTEGER', 'COMMA',
+ 'COLON', 'MATH', 'ANDSYM', 'OPENP',
+ 'CLOSEP', 'QMARK', 'NOT', 'TYPECAST',
+ 'DOT', 'BOOLEAN', 'NULL', 'SINGLEQUOTESTRING',
+ 'QUOTE', 'DOUBLECOLON', 'AT', 'HATCH',
+ 'OPENB', 'CLOSEB', 'VERT', 'ISIN',
+ 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN', 'ISNOTEVEN',
+ 'ISEVENBY', 'ISNOTEVENBY', 'ISODD', 'ISNOTODD',
+ 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF', 'EQUALS',
+ 'NOTEQUALS', 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL',
+ 'LESSEQUAL', 'IDENTITY', 'NONEIDENTITY', 'MOD',
+ 'LAND', 'LOR', 'LXOR', 'BACKTICK',
+ 'DOLLARID', 'error', 'start', 'template',
+ 'template_element', 'smartytag', 'literal', 'literal_elements',
+ 'literal_element', 'value', 'attributes', 'variable',
+ 'expr', 'ternary', 'varindexed', 'modifier',
+ 'modparameters', 'ifexpr', 'statement', 'statements',
+ 'optspace', 'varvar', 'foraction', 'array',
+ 'specialclose', 'attribute', 'exprs', 'ifcond',
+ 'lop', 'function', 'doublequoted', 'method',
+ 'params', 'objectchain', 'arrayindex', 'object',
+ 'indexdef', 'varvarele', 'objectelement', 'modparameter',
+ 'arrayelements', 'arrayelement', 'doublequotedcontent',
);
static public $yyRuleName = array(
@@ -1007,183 +996,189 @@ static public $yy_action = array( /* 2 */ "template ::= template template_element",
/* 3 */ "template_element ::= smartytag",
/* 4 */ "template_element ::= COMMENT",
- /* 5 */ "template_element ::= PHP OTHER SHORTTAGEND",
- /* 6 */ "template_element ::= SHORTTAGSTART OTHER SHORTTAGEND",
- /* 7 */ "template_element ::= XML",
- /* 8 */ "template_element ::= SHORTTAGEND",
- /* 9 */ "template_element ::= OTHER",
- /* 10 */ "smartytag ::= LDEL value RDEL",
- /* 11 */ "smartytag ::= LDEL value attributes RDEL",
- /* 12 */ "smartytag ::= LDEL variable attributes RDEL",
- /* 13 */ "smartytag ::= LDEL expr attributes RDEL",
- /* 14 */ "smartytag ::= LDEL ternary attributes RDEL",
- /* 15 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL",
- /* 16 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL",
- /* 17 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL",
- /* 18 */ "smartytag ::= LDEL DOLLAR ID EQUAL ternary attributes RDEL",
- /* 19 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
- /* 20 */ "smartytag ::= LDEL varindexed EQUAL ternary attributes RDEL",
- /* 21 */ "smartytag ::= LDEL ID attributes RDEL",
- /* 22 */ "smartytag ::= LDEL FOREACH attributes RDEL",
- /* 23 */ "smartytag ::= LDEL ID RDEL",
- /* 24 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
- /* 25 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
- /* 26 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL",
- /* 27 */ "smartytag ::= LDEL IF SPACE ifexprs RDEL",
- /* 28 */ "smartytag ::= LDEL IF SPACE statement RDEL",
- /* 29 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace ifexprs SEMICOLON optspace DOLLAR varvar foraction RDEL",
- /* 30 */ "foraction ::= EQUAL expr",
- /* 31 */ "foraction ::= INCDEC",
- /* 32 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL",
- /* 33 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL",
- /* 34 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL",
- /* 35 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL",
- /* 36 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL",
- /* 37 */ "smartytag ::= LDELSLASH ID RDEL",
- /* 38 */ "smartytag ::= LDELSLASH specialclose RDEL",
- /* 39 */ "specialclose ::= IF",
- /* 40 */ "specialclose ::= FOR",
- /* 41 */ "specialclose ::= FOREACH",
- /* 42 */ "smartytag ::= LDELSLASH ID attributes RDEL",
- /* 43 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL",
- /* 44 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
- /* 45 */ "attributes ::= attributes attribute",
- /* 46 */ "attributes ::= attribute",
- /* 47 */ "attributes ::=",
- /* 48 */ "attribute ::= SPACE ID EQUAL ID",
- /* 49 */ "attribute ::= SPACE ID EQUAL expr",
- /* 50 */ "attribute ::= SPACE ID EQUAL value",
- /* 51 */ "attribute ::= SPACE ID EQUAL ternary",
- /* 52 */ "attribute ::= SPACE ID",
- /* 53 */ "attribute ::= SPACE INTEGER EQUAL expr",
- /* 54 */ "statements ::= statement",
- /* 55 */ "statements ::= statements COMMA statement",
- /* 56 */ "statement ::= DOLLAR varvar EQUAL expr",
- /* 57 */ "expr ::= ID",
- /* 58 */ "expr ::= exprs",
- /* 59 */ "expr ::= DOLLAR ID COLON ID",
- /* 60 */ "expr ::= expr modifier modparameters",
- /* 61 */ "exprs ::= value",
- /* 62 */ "exprs ::= UNIMATH value",
- /* 63 */ "exprs ::= exprs math value",
- /* 64 */ "exprs ::= array",
- /* 65 */ "ternary ::= OPENP ifexprs CLOSEP QMARK expr COLON expr",
- /* 66 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
- /* 67 */ "math ::= UNIMATH",
- /* 68 */ "math ::= MATH",
- /* 69 */ "math ::= ANDSYM",
- /* 70 */ "value ::= variable",
- /* 71 */ "value ::= NOT variable",
- /* 72 */ "value ::= TYPECAST variable",
- /* 73 */ "value ::= variable INCDEC",
- /* 74 */ "value ::= INTEGER",
- /* 75 */ "value ::= INTEGER DOT INTEGER",
- /* 76 */ "value ::= BOOLEAN",
- /* 77 */ "value ::= NULL",
- /* 78 */ "value ::= function",
- /* 79 */ "value ::= OPENP expr CLOSEP",
- /* 80 */ "value ::= SINGLEQUOTESTRING",
- /* 81 */ "value ::= QUOTE doublequoted QUOTE",
- /* 82 */ "value ::= QUOTE QUOTE",
- /* 83 */ "value ::= ID DOUBLECOLON method",
- /* 84 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
- /* 85 */ "value ::= ID DOUBLECOLON method objectchain",
- /* 86 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
- /* 87 */ "value ::= ID DOUBLECOLON ID",
- /* 88 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
- /* 89 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
- /* 90 */ "value ::= smartytag",
- /* 91 */ "variable ::= varindexed",
- /* 92 */ "variable ::= DOLLAR varvar AT ID",
- /* 93 */ "variable ::= object",
- /* 94 */ "variable ::= HATCH ID HATCH",
- /* 95 */ "variable ::= HATCH variable HATCH",
- /* 96 */ "varindexed ::= DOLLAR varvar arrayindex",
- /* 97 */ "arrayindex ::= arrayindex indexdef",
- /* 98 */ "arrayindex ::=",
- /* 99 */ "indexdef ::= DOT DOLLAR varvar",
- /* 100 */ "indexdef ::= DOT DOLLAR varvar AT ID",
- /* 101 */ "indexdef ::= DOT ID",
- /* 102 */ "indexdef ::= DOT BOOLEAN",
- /* 103 */ "indexdef ::= DOT NULL",
- /* 104 */ "indexdef ::= DOT INTEGER",
- /* 105 */ "indexdef ::= DOT LDEL exprs RDEL",
- /* 106 */ "indexdef ::= OPENB ID CLOSEB",
- /* 107 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
- /* 108 */ "indexdef ::= OPENB exprs CLOSEB",
- /* 109 */ "indexdef ::= OPENB CLOSEB",
- /* 110 */ "varvar ::= varvarele",
- /* 111 */ "varvar ::= varvar varvarele",
- /* 112 */ "varvarele ::= ID",
- /* 113 */ "varvarele ::= LDEL expr RDEL",
- /* 114 */ "object ::= varindexed objectchain",
- /* 115 */ "objectchain ::= objectelement",
- /* 116 */ "objectchain ::= objectchain objectelement",
- /* 117 */ "objectelement ::= PTR ID arrayindex",
- /* 118 */ "objectelement ::= PTR variable arrayindex",
- /* 119 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
- /* 120 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
- /* 121 */ "objectelement ::= PTR method",
- /* 122 */ "function ::= ID OPENP params CLOSEP",
- /* 123 */ "method ::= ID OPENP params CLOSEP",
- /* 124 */ "params ::= expr COMMA params",
- /* 125 */ "params ::= expr",
- /* 126 */ "params ::=",
- /* 127 */ "modifier ::= VERT AT ID",
- /* 128 */ "modifier ::= VERT ID",
- /* 129 */ "modparameters ::= modparameters modparameter",
- /* 130 */ "modparameters ::=",
- /* 131 */ "modparameter ::= COLON exprs",
- /* 132 */ "modparameter ::= COLON ID",
- /* 133 */ "ifexprs ::= ifexpr",
- /* 134 */ "ifexprs ::= NOT ifexprs",
- /* 135 */ "ifexprs ::= OPENP ifexprs CLOSEP",
- /* 136 */ "ifexpr ::= expr",
- /* 137 */ "ifexpr ::= expr ifcond expr",
- /* 138 */ "ifexpr ::= expr ISIN array",
- /* 139 */ "ifexpr ::= expr ISIN value",
- /* 140 */ "ifexpr ::= ifexprs lop ifexprs",
- /* 141 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
- /* 142 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
- /* 143 */ "ifexpr ::= ifexprs ISEVEN",
- /* 144 */ "ifexpr ::= ifexprs ISNOTEVEN",
- /* 145 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
- /* 146 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
- /* 147 */ "ifexpr ::= ifexprs ISODD",
- /* 148 */ "ifexpr ::= ifexprs ISNOTODD",
- /* 149 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
- /* 150 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
- /* 151 */ "ifexpr ::= value INSTANCEOF ID",
- /* 152 */ "ifexpr ::= value INSTANCEOF value",
- /* 153 */ "ifcond ::= EQUALS",
- /* 154 */ "ifcond ::= NOTEQUALS",
- /* 155 */ "ifcond ::= GREATERTHAN",
- /* 156 */ "ifcond ::= LESSTHAN",
- /* 157 */ "ifcond ::= GREATEREQUAL",
- /* 158 */ "ifcond ::= LESSEQUAL",
- /* 159 */ "ifcond ::= IDENTITY",
- /* 160 */ "ifcond ::= NONEIDENTITY",
- /* 161 */ "ifcond ::= MOD",
- /* 162 */ "lop ::= LAND",
- /* 163 */ "lop ::= LOR",
- /* 164 */ "lop ::= LXOR",
- /* 165 */ "array ::= OPENB arrayelements CLOSEB",
- /* 166 */ "arrayelements ::= arrayelement",
- /* 167 */ "arrayelements ::= arrayelements COMMA arrayelement",
- /* 168 */ "arrayelements ::=",
- /* 169 */ "arrayelement ::= value APTR expr",
- /* 170 */ "arrayelement ::= ID APTR expr",
- /* 171 */ "arrayelement ::= expr",
- /* 172 */ "doublequoted ::= doublequoted doublequotedcontent",
- /* 173 */ "doublequoted ::= doublequotedcontent",
- /* 174 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
- /* 175 */ "doublequotedcontent ::= DOLLARID",
- /* 176 */ "doublequotedcontent ::= LDEL variable RDEL",
- /* 177 */ "doublequotedcontent ::= LDEL expr RDEL",
- /* 178 */ "doublequotedcontent ::= smartytag",
- /* 179 */ "doublequotedcontent ::= OTHER",
- /* 180 */ "optspace ::= SPACE",
- /* 181 */ "optspace ::=",
+ /* 5 */ "template_element ::= literal",
+ /* 6 */ "template_element ::= PHPSTARTTAG OTHER PHPENDTAG",
+ /* 7 */ "template_element ::= OTHER",
+ /* 8 */ "template_element ::= FAKEPHPSTARTTAG",
+ /* 9 */ "literal ::= LITERALSTART LITERALEND",
+ /* 10 */ "literal ::= LITERALSTART literal_elements LITERALEND",
+ /* 11 */ "literal_elements ::= literal_element literal_elements",
+ /* 12 */ "literal_elements ::=",
+ /* 13 */ "literal_element ::= literal",
+ /* 14 */ "literal_element ::= LITERAL",
+ /* 15 */ "literal_element ::= PHPSTARTTAG",
+ /* 16 */ "literal_element ::= FAKEPHPSTARTTAG",
+ /* 17 */ "literal_element ::= PHPENDTAG",
+ /* 18 */ "smartytag ::= LDEL value RDEL",
+ /* 19 */ "smartytag ::= LDEL value attributes RDEL",
+ /* 20 */ "smartytag ::= LDEL variable attributes RDEL",
+ /* 21 */ "smartytag ::= LDEL expr attributes RDEL",
+ /* 22 */ "smartytag ::= LDEL ternary attributes RDEL",
+ /* 23 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL",
+ /* 24 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL",
+ /* 25 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL",
+ /* 26 */ "smartytag ::= LDEL DOLLAR ID EQUAL ternary attributes RDEL",
+ /* 27 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
+ /* 28 */ "smartytag ::= LDEL varindexed EQUAL ternary attributes RDEL",
+ /* 29 */ "smartytag ::= LDEL ID attributes RDEL",
+ /* 30 */ "smartytag ::= LDEL FOREACH attributes RDEL",
+ /* 31 */ "smartytag ::= LDEL ID RDEL",
+ /* 32 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
+ /* 33 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
+ /* 34 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL",
+ /* 35 */ "smartytag ::= LDEL IF SPACE ifexpr RDEL",
+ /* 36 */ "smartytag ::= LDEL IF UNIMATH ifexpr RDEL",
+ /* 37 */ "smartytag ::= LDEL IF SPACE statement RDEL",
+ /* 38 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace ifexpr SEMICOLON optspace DOLLAR varvar foraction RDEL",
+ /* 39 */ "foraction ::= EQUAL expr",
+ /* 40 */ "foraction ::= INCDEC",
+ /* 41 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL",
+ /* 42 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL",
+ /* 43 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL",
+ /* 44 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL",
+ /* 45 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL",
+ /* 46 */ "smartytag ::= LDELSLASH ID RDEL",
+ /* 47 */ "smartytag ::= LDELSLASH specialclose RDEL",
+ /* 48 */ "specialclose ::= IF",
+ /* 49 */ "specialclose ::= FOR",
+ /* 50 */ "specialclose ::= FOREACH",
+ /* 51 */ "smartytag ::= LDELSLASH ID attributes RDEL",
+ /* 52 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL",
+ /* 53 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
+ /* 54 */ "attributes ::= attributes attribute",
+ /* 55 */ "attributes ::= attribute",
+ /* 56 */ "attributes ::=",
+ /* 57 */ "attribute ::= SPACE ID EQUAL ID",
+ /* 58 */ "attribute ::= SPACE ID EQUAL expr",
+ /* 59 */ "attribute ::= SPACE ID EQUAL value",
+ /* 60 */ "attribute ::= SPACE ID EQUAL ternary",
+ /* 61 */ "attribute ::= SPACE ID",
+ /* 62 */ "attribute ::= SPACE INTEGER EQUAL expr",
+ /* 63 */ "statements ::= statement",
+ /* 64 */ "statements ::= statements COMMA statement",
+ /* 65 */ "statement ::= DOLLAR varvar EQUAL expr",
+ /* 66 */ "expr ::= ID",
+ /* 67 */ "expr ::= exprs",
+ /* 68 */ "expr ::= DOLLAR ID COLON ID",
+ /* 69 */ "expr ::= expr modifier modparameters",
+ /* 70 */ "exprs ::= value",
+ /* 71 */ "exprs ::= exprs MATH value",
+ /* 72 */ "exprs ::= exprs UNIMATH value",
+ /* 73 */ "exprs ::= exprs ANDSYM value",
+ /* 74 */ "exprs ::= array",
+ /* 75 */ "exprs ::= exprs ifcond value",
+ /* 76 */ "exprs ::= exprs lop value",
+ /* 77 */ "ternary ::= OPENP ifexpr CLOSEP QMARK expr COLON expr",
+ /* 78 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
+ /* 79 */ "value ::= variable",
+ /* 80 */ "value ::= UNIMATH value",
+ /* 81 */ "value ::= NOT value",
+ /* 82 */ "value ::= TYPECAST variable",
+ /* 83 */ "value ::= variable INCDEC",
+ /* 84 */ "value ::= INTEGER",
+ /* 85 */ "value ::= INTEGER DOT INTEGER",
+ /* 86 */ "value ::= BOOLEAN",
+ /* 87 */ "value ::= NULL",
+ /* 88 */ "value ::= function",
+ /* 89 */ "value ::= OPENP expr CLOSEP",
+ /* 90 */ "value ::= SINGLEQUOTESTRING",
+ /* 91 */ "value ::= QUOTE doublequoted QUOTE",
+ /* 92 */ "value ::= QUOTE QUOTE",
+ /* 93 */ "value ::= ID DOUBLECOLON method",
+ /* 94 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
+ /* 95 */ "value ::= ID DOUBLECOLON method objectchain",
+ /* 96 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
+ /* 97 */ "value ::= ID DOUBLECOLON ID",
+ /* 98 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
+ /* 99 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
+ /* 100 */ "value ::= smartytag",
+ /* 101 */ "variable ::= varindexed",
+ /* 102 */ "variable ::= DOLLAR varvar AT ID",
+ /* 103 */ "variable ::= object",
+ /* 104 */ "variable ::= HATCH ID HATCH",
+ /* 105 */ "variable ::= HATCH variable HATCH",
+ /* 106 */ "varindexed ::= DOLLAR varvar arrayindex",
+ /* 107 */ "arrayindex ::= arrayindex indexdef",
+ /* 108 */ "arrayindex ::=",
+ /* 109 */ "indexdef ::= DOT DOLLAR varvar",
+ /* 110 */ "indexdef ::= DOT DOLLAR varvar AT ID",
+ /* 111 */ "indexdef ::= DOT ID",
+ /* 112 */ "indexdef ::= DOT BOOLEAN",
+ /* 113 */ "indexdef ::= DOT NULL",
+ /* 114 */ "indexdef ::= DOT INTEGER",
+ /* 115 */ "indexdef ::= DOT LDEL exprs RDEL",
+ /* 116 */ "indexdef ::= OPENB ID CLOSEB",
+ /* 117 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
+ /* 118 */ "indexdef ::= OPENB exprs CLOSEB",
+ /* 119 */ "indexdef ::= OPENB CLOSEB",
+ /* 120 */ "varvar ::= varvarele",
+ /* 121 */ "varvar ::= varvar varvarele",
+ /* 122 */ "varvarele ::= ID",
+ /* 123 */ "varvarele ::= LDEL expr RDEL",
+ /* 124 */ "object ::= varindexed objectchain",
+ /* 125 */ "objectchain ::= objectelement",
+ /* 126 */ "objectchain ::= objectchain objectelement",
+ /* 127 */ "objectelement ::= PTR ID arrayindex",
+ /* 128 */ "objectelement ::= PTR variable arrayindex",
+ /* 129 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
+ /* 130 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
+ /* 131 */ "objectelement ::= PTR method",
+ /* 132 */ "function ::= ID OPENP params CLOSEP",
+ /* 133 */ "method ::= ID OPENP params CLOSEP",
+ /* 134 */ "params ::= expr COMMA params",
+ /* 135 */ "params ::= expr",
+ /* 136 */ "params ::=",
+ /* 137 */ "modifier ::= VERT AT ID",
+ /* 138 */ "modifier ::= VERT ID",
+ /* 139 */ "modparameters ::= modparameters modparameter",
+ /* 140 */ "modparameters ::=",
+ /* 141 */ "modparameter ::= COLON exprs",
+ /* 142 */ "modparameter ::= COLON ID",
+ /* 143 */ "ifexpr ::= expr",
+ /* 144 */ "ifexpr ::= expr ISIN array",
+ /* 145 */ "ifexpr ::= expr ISIN value",
+ /* 146 */ "ifexpr ::= expr ISDIVBY expr",
+ /* 147 */ "ifexpr ::= expr ISNOTDIVBY expr",
+ /* 148 */ "ifexpr ::= expr ISEVEN",
+ /* 149 */ "ifexpr ::= expr ISNOTEVEN",
+ /* 150 */ "ifexpr ::= expr ISEVENBY expr",
+ /* 151 */ "ifexpr ::= expr ISNOTEVENBY expr",
+ /* 152 */ "ifexpr ::= expr ISODD",
+ /* 153 */ "ifexpr ::= expr ISNOTODD",
+ /* 154 */ "ifexpr ::= expr ISODDBY expr",
+ /* 155 */ "ifexpr ::= expr ISNOTODDBY expr",
+ /* 156 */ "ifexpr ::= value INSTANCEOF ID",
+ /* 157 */ "ifexpr ::= value INSTANCEOF value",
+ /* 158 */ "ifcond ::= EQUALS",
+ /* 159 */ "ifcond ::= NOTEQUALS",
+ /* 160 */ "ifcond ::= GREATERTHAN",
+ /* 161 */ "ifcond ::= LESSTHAN",
+ /* 162 */ "ifcond ::= GREATEREQUAL",
+ /* 163 */ "ifcond ::= LESSEQUAL",
+ /* 164 */ "ifcond ::= IDENTITY",
+ /* 165 */ "ifcond ::= NONEIDENTITY",
+ /* 166 */ "ifcond ::= MOD",
+ /* 167 */ "lop ::= LAND",
+ /* 168 */ "lop ::= LOR",
+ /* 169 */ "lop ::= LXOR",
+ /* 170 */ "array ::= OPENB arrayelements CLOSEB",
+ /* 171 */ "arrayelements ::= arrayelement",
+ /* 172 */ "arrayelements ::= arrayelements COMMA arrayelement",
+ /* 173 */ "arrayelements ::=",
+ /* 174 */ "arrayelement ::= value APTR expr",
+ /* 175 */ "arrayelement ::= ID APTR expr",
+ /* 176 */ "arrayelement ::= expr",
+ /* 177 */ "doublequoted ::= doublequoted doublequotedcontent",
+ /* 178 */ "doublequoted ::= doublequotedcontent",
+ /* 179 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
+ /* 180 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
+ /* 181 */ "doublequotedcontent ::= DOLLARID",
+ /* 182 */ "doublequotedcontent ::= LDEL variable RDEL",
+ /* 183 */ "doublequotedcontent ::= LDEL expr RDEL",
+ /* 184 */ "doublequotedcontent ::= smartytag",
+ /* 185 */ "doublequotedcontent ::= OTHER",
+ /* 186 */ "optspace ::= SPACE",
+ /* 187 */ "optspace ::=",
);
function tokenName($tokenType)
@@ -1457,355 +1452,361 @@ static public $yy_action = array( }
static public $yyRuleInfo = array(
- array( 'lhs' => 72, 'rhs' => 1 ),
- array( 'lhs' => 73, 'rhs' => 1 ),
- array( 'lhs' => 73, 'rhs' => 2 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 74, 'rhs' => 3 ),
- array( 'lhs' => 74, 'rhs' => 3 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 7 ),
- array( 'lhs' => 75, 'rhs' => 7 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 5 ),
- array( 'lhs' => 75, 'rhs' => 5 ),
- array( 'lhs' => 75, 'rhs' => 13 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 11 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 11 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 5 ),
- array( 'lhs' => 77, 'rhs' => 2 ),
- array( 'lhs' => 77, 'rhs' => 1 ),
- array( 'lhs' => 77, 'rhs' => 0 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 86, 'rhs' => 1 ),
- array( 'lhs' => 86, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 79, 'rhs' => 1 ),
- array( 'lhs' => 79, 'rhs' => 1 ),
- array( 'lhs' => 79, 'rhs' => 4 ),
- array( 'lhs' => 79, 'rhs' => 3 ),
- array( 'lhs' => 93, 'rhs' => 1 ),
- array( 'lhs' => 93, 'rhs' => 2 ),
- array( 'lhs' => 93, 'rhs' => 3 ),
- array( 'lhs' => 93, 'rhs' => 1 ),
- array( 'lhs' => 80, 'rhs' => 7 ),
- array( 'lhs' => 80, 'rhs' => 7 ),
- array( 'lhs' => 94, 'rhs' => 1 ),
- array( 'lhs' => 94, 'rhs' => 1 ),
- array( 'lhs' => 94, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
+ array( 'lhs' => 75, 'rhs' => 1 ),
+ array( 'lhs' => 75, 'rhs' => 2 ),
array( 'lhs' => 76, 'rhs' => 1 ),
array( 'lhs' => 76, 'rhs' => 1 ),
array( 'lhs' => 76, 'rhs' => 1 ),
array( 'lhs' => 76, 'rhs' => 3 ),
array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
- array( 'lhs' => 76, 'rhs' => 7 ),
- array( 'lhs' => 76, 'rhs' => 4 ),
- array( 'lhs' => 76, 'rhs' => 8 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
- array( 'lhs' => 76, 'rhs' => 5 ),
- array( 'lhs' => 76, 'rhs' => 6 ),
array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 78, 'rhs' => 1 ),
- array( 'lhs' => 78, 'rhs' => 4 ),
- array( 'lhs' => 78, 'rhs' => 1 ),
+ array( 'lhs' => 78, 'rhs' => 2 ),
array( 'lhs' => 78, 'rhs' => 3 ),
- array( 'lhs' => 78, 'rhs' => 3 ),
- array( 'lhs' => 81, 'rhs' => 3 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 0 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 102, 'rhs' => 5 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 4 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 102, 'rhs' => 5 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 2 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 3 ),
- array( 'lhs' => 101, 'rhs' => 2 ),
- array( 'lhs' => 99, 'rhs' => 1 ),
- array( 'lhs' => 99, 'rhs' => 2 ),
- array( 'lhs' => 104, 'rhs' => 3 ),
- array( 'lhs' => 104, 'rhs' => 3 ),
- array( 'lhs' => 104, 'rhs' => 5 ),
- array( 'lhs' => 104, 'rhs' => 6 ),
- array( 'lhs' => 104, 'rhs' => 2 ),
- array( 'lhs' => 95, 'rhs' => 4 ),
- array( 'lhs' => 97, 'rhs' => 4 ),
- array( 'lhs' => 98, 'rhs' => 3 ),
- array( 'lhs' => 98, 'rhs' => 1 ),
- array( 'lhs' => 98, 'rhs' => 0 ),
- array( 'lhs' => 82, 'rhs' => 3 ),
+ array( 'lhs' => 79, 'rhs' => 2 ),
+ array( 'lhs' => 79, 'rhs' => 0 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 7 ),
+ array( 'lhs' => 77, 'rhs' => 7 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
+ array( 'lhs' => 77, 'rhs' => 13 ),
+ array( 'lhs' => 94, 'rhs' => 2 ),
+ array( 'lhs' => 94, 'rhs' => 1 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 11 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 11 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 96, 'rhs' => 1 ),
+ array( 'lhs' => 96, 'rhs' => 1 ),
+ array( 'lhs' => 96, 'rhs' => 1 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
array( 'lhs' => 82, 'rhs' => 2 ),
- array( 'lhs' => 83, 'rhs' => 2 ),
- array( 'lhs' => 83, 'rhs' => 0 ),
- array( 'lhs' => 105, 'rhs' => 2 ),
- array( 'lhs' => 105, 'rhs' => 2 ),
+ array( 'lhs' => 82, 'rhs' => 1 ),
+ array( 'lhs' => 82, 'rhs' => 0 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 2 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 91, 'rhs' => 1 ),
+ array( 'lhs' => 91, 'rhs' => 3 ),
+ array( 'lhs' => 90, 'rhs' => 4 ),
array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 2 ),
+ array( 'lhs' => 84, 'rhs' => 1 ),
+ array( 'lhs' => 84, 'rhs' => 4 ),
array( 'lhs' => 84, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 1 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 2 ),
+ array( 'lhs' => 98, 'rhs' => 1 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 1 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 85, 'rhs' => 7 ),
+ array( 'lhs' => 85, 'rhs' => 7 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 7 ),
+ array( 'lhs' => 81, 'rhs' => 4 ),
+ array( 'lhs' => 81, 'rhs' => 8 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 5 ),
+ array( 'lhs' => 81, 'rhs' => 6 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 83, 'rhs' => 1 ),
+ array( 'lhs' => 83, 'rhs' => 4 ),
+ array( 'lhs' => 83, 'rhs' => 1 ),
+ array( 'lhs' => 83, 'rhs' => 3 ),
+ array( 'lhs' => 83, 'rhs' => 3 ),
+ array( 'lhs' => 86, 'rhs' => 3 ),
array( 'lhs' => 106, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 90, 'rhs' => 3 ),
+ array( 'lhs' => 106, 'rhs' => 0 ),
+ array( 'lhs' => 108, 'rhs' => 3 ),
+ array( 'lhs' => 108, 'rhs' => 5 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 4 ),
+ array( 'lhs' => 108, 'rhs' => 3 ),
+ array( 'lhs' => 108, 'rhs' => 5 ),
+ array( 'lhs' => 108, 'rhs' => 3 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 93, 'rhs' => 1 ),
+ array( 'lhs' => 93, 'rhs' => 2 ),
array( 'lhs' => 109, 'rhs' => 1 ),
array( 'lhs' => 109, 'rhs' => 3 ),
- array( 'lhs' => 109, 'rhs' => 0 ),
+ array( 'lhs' => 107, 'rhs' => 2 ),
+ array( 'lhs' => 105, 'rhs' => 1 ),
+ array( 'lhs' => 105, 'rhs' => 2 ),
array( 'lhs' => 110, 'rhs' => 3 ),
array( 'lhs' => 110, 'rhs' => 3 ),
- array( 'lhs' => 110, 'rhs' => 1 ),
- array( 'lhs' => 96, 'rhs' => 2 ),
- array( 'lhs' => 96, 'rhs' => 1 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 1 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 1 ),
- array( 'lhs' => 111, 'rhs' => 1 ),
- array( 'lhs' => 87, 'rhs' => 1 ),
- array( 'lhs' => 87, 'rhs' => 0 ),
+ array( 'lhs' => 110, 'rhs' => 5 ),
+ array( 'lhs' => 110, 'rhs' => 6 ),
+ array( 'lhs' => 110, 'rhs' => 2 ),
+ array( 'lhs' => 101, 'rhs' => 4 ),
+ array( 'lhs' => 103, 'rhs' => 4 ),
+ array( 'lhs' => 104, 'rhs' => 3 ),
+ array( 'lhs' => 104, 'rhs' => 1 ),
+ array( 'lhs' => 104, 'rhs' => 0 ),
+ array( 'lhs' => 87, 'rhs' => 3 ),
+ array( 'lhs' => 87, 'rhs' => 2 ),
+ array( 'lhs' => 88, 'rhs' => 2 ),
+ array( 'lhs' => 88, 'rhs' => 0 ),
+ array( 'lhs' => 111, 'rhs' => 2 ),
+ array( 'lhs' => 111, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 1 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 100, 'rhs' => 1 ),
+ array( 'lhs' => 100, 'rhs' => 1 ),
+ array( 'lhs' => 100, 'rhs' => 1 ),
+ array( 'lhs' => 95, 'rhs' => 3 ),
+ array( 'lhs' => 112, 'rhs' => 1 ),
+ array( 'lhs' => 112, 'rhs' => 3 ),
+ array( 'lhs' => 112, 'rhs' => 0 ),
+ array( 'lhs' => 113, 'rhs' => 3 ),
+ array( 'lhs' => 113, 'rhs' => 3 ),
+ array( 'lhs' => 113, 'rhs' => 1 ),
+ array( 'lhs' => 102, 'rhs' => 2 ),
+ array( 'lhs' => 102, 'rhs' => 1 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 1 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 1 ),
+ array( 'lhs' => 114, 'rhs' => 1 ),
+ array( 'lhs' => 92, 'rhs' => 1 ),
+ array( 'lhs' => 92, 'rhs' => 0 ),
);
static public $yyReduceMap = array(
0 => 0,
- 39 => 0,
- 40 => 0,
- 41 => 0,
- 61 => 0,
+ 5 => 0,
+ 13 => 0,
+ 14 => 0,
+ 48 => 0,
+ 49 => 0,
+ 50 => 0,
70 => 0,
- 74 => 0,
- 76 => 0,
- 77 => 0,
- 78 => 0,
- 80 => 0,
- 93 => 0,
- 166 => 0,
+ 79 => 0,
+ 84 => 0,
+ 86 => 0,
+ 87 => 0,
+ 88 => 0,
+ 90 => 0,
+ 103 => 0,
+ 171 => 0,
1 => 1,
- 58 => 1,
- 64 => 1,
- 67 => 1,
- 68 => 1,
- 110 => 1,
- 133 => 1,
- 173 => 1,
- 179 => 1,
- 180 => 1,
2 => 2,
- 129 => 2,
3 => 3,
4 => 4,
- 5 => 5,
6 => 6,
7 => 7,
8 => 8,
9 => 9,
+ 12 => 9,
10 => 10,
11 => 11,
- 12 => 11,
- 13 => 11,
- 14 => 11,
+ 80 => 11,
+ 82 => 11,
+ 83 => 11,
15 => 15,
16 => 15,
17 => 17,
- 18 => 17,
+ 18 => 18,
19 => 19,
20 => 19,
- 21 => 21,
- 22 => 21,
+ 21 => 19,
+ 22 => 19,
23 => 23,
- 24 => 24,
+ 24 => 23,
25 => 25,
- 26 => 26,
+ 26 => 25,
27 => 27,
28 => 27,
29 => 29,
- 30 => 30,
+ 30 => 29,
31 => 31,
- 46 => 31,
- 125 => 31,
- 171 => 31,
32 => 32,
33 => 33,
34 => 34,
35 => 35,
+ 37 => 35,
36 => 36,
- 37 => 37,
- 38 => 37,
+ 38 => 38,
+ 39 => 39,
+ 40 => 40,
+ 55 => 40,
+ 135 => 40,
+ 176 => 40,
+ 41 => 41,
42 => 42,
43 => 43,
44 => 44,
45 => 45,
- 47 => 47,
- 48 => 48,
- 49 => 49,
- 50 => 49,
- 51 => 49,
- 53 => 49,
+ 46 => 46,
+ 47 => 46,
+ 51 => 51,
52 => 52,
+ 53 => 53,
54 => 54,
- 55 => 55,
56 => 56,
57 => 57,
- 59 => 59,
- 60 => 60,
- 62 => 62,
- 72 => 62,
- 73 => 62,
+ 58 => 58,
+ 59 => 58,
+ 60 => 58,
+ 62 => 58,
+ 61 => 61,
63 => 63,
+ 64 => 64,
65 => 65,
- 66 => 65,
+ 66 => 66,
+ 67 => 67,
+ 74 => 67,
+ 120 => 67,
+ 178 => 67,
+ 185 => 67,
+ 186 => 67,
+ 68 => 68,
69 => 69,
71 => 71,
+ 72 => 71,
+ 73 => 71,
75 => 75,
- 79 => 79,
+ 76 => 75,
+ 156 => 75,
+ 77 => 77,
+ 78 => 77,
81 => 81,
- 82 => 82,
- 83 => 83,
- 84 => 84,
85 => 85,
- 86 => 86,
- 87 => 87,
- 88 => 88,
89 => 89,
- 90 => 90,
91 => 91,
92 => 92,
+ 93 => 93,
94 => 94,
95 => 95,
96 => 96,
97 => 97,
- 172 => 97,
98 => 98,
- 130 => 98,
99 => 99,
100 => 100,
101 => 101,
- 102 => 101,
- 103 => 101,
+ 102 => 102,
104 => 104,
105 => 105,
- 108 => 105,
106 => 106,
107 => 107,
+ 177 => 107,
+ 108 => 108,
+ 140 => 108,
109 => 109,
- 181 => 109,
+ 110 => 110,
111 => 111,
- 112 => 112,
- 113 => 113,
- 135 => 113,
+ 112 => 111,
+ 113 => 111,
114 => 114,
115 => 115,
+ 118 => 115,
116 => 116,
117 => 117,
- 118 => 118,
119 => 119,
- 120 => 120,
+ 187 => 119,
121 => 121,
122 => 122,
123 => 123,
124 => 124,
+ 125 => 125,
126 => 126,
127 => 127,
128 => 128,
+ 129 => 129,
+ 130 => 130,
131 => 131,
132 => 132,
+ 133 => 133,
134 => 134,
136 => 136,
137 => 137,
- 140 => 137,
- 151 => 137,
- 138 => 138,
+ 138 => 137,
139 => 139,
141 => 141,
142 => 142,
143 => 143,
- 148 => 143,
144 => 144,
- 147 => 144,
145 => 145,
- 150 => 145,
146 => 146,
- 149 => 146,
- 152 => 152,
- 153 => 153,
- 154 => 154,
- 155 => 155,
- 156 => 156,
+ 147 => 147,
+ 148 => 148,
+ 153 => 148,
+ 149 => 149,
+ 152 => 149,
+ 150 => 150,
+ 155 => 150,
+ 151 => 151,
+ 154 => 151,
157 => 157,
158 => 158,
159 => 159,
@@ -1815,495 +1816,477 @@ static public $yy_action = array( 163 => 163,
164 => 164,
165 => 165,
+ 166 => 166,
167 => 167,
168 => 168,
169 => 169,
170 => 170,
+ 172 => 172,
+ 173 => 173,
174 => 174,
- 176 => 174,
175 => 175,
- 177 => 177,
- 178 => 178,
+ 179 => 179,
+ 182 => 179,
+ 180 => 180,
+ 181 => 181,
+ 183 => 183,
+ 184 => 184,
);
-#line 78 "smarty_internal_templateparser.y"
+#line 81 "smarty_internal_templateparser.y"
function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 1825 "smarty_internal_templateparser.php"
-#line 84 "smarty_internal_templateparser.y"
- function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 1828 "smarty_internal_templateparser.php"
-#line 86 "smarty_internal_templateparser.y"
- function yy_r2(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 1831 "smarty_internal_templateparser.php"
-#line 92 "smarty_internal_templateparser.y"
+#line 1832 "smarty_internal_templateparser.php"
+#line 87 "smarty_internal_templateparser.y"
+ function yy_r1(){if ($this->template->extract_code == false) {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ // store code in extract buffer
+ $this->template->extracted_compiled_code .= $this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+#line 1841 "smarty_internal_templateparser.php"
+#line 95 "smarty_internal_templateparser.y"
+ function yy_r2(){if ($this->template->extract_code == false) {
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ // store code in extract buffer
+ $this->template->extracted_compiled_code .= $this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+ }
+#line 1851 "smarty_internal_templateparser.php"
+#line 108 "smarty_internal_templateparser.y"
function yy_r3(){
if ($this->compiler->has_code) {
$tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
- $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor, $this->compiler,true);
+ $this->_retvalue = $this->compiler->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor,true);
} else { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;} $this->compiler->has_variable_string = false; }
-#line 1838 "smarty_internal_templateparser.php"
-#line 99 "smarty_internal_templateparser.y"
- function yy_r4(){ $this->_retvalue = ''; }
-#line 1841 "smarty_internal_templateparser.php"
-#line 104 "smarty_internal_templateparser.y"
- function yy_r5(){if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
- $this->_retvalue = $this->cacher->processNocacheCode("<?php echo htmlspecialchars('<?php".str_replace("'","\'",$this->yystack[$this->yyidx + -1]->minor)."?>', ENT_QUOTES);?>\n", $this->compiler, false);
- } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
- $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false);
- }elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
- $this->_retvalue = $this->cacher->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, true);
- }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
- $this->_retvalue = '';
- }
- }
-#line 1853 "smarty_internal_templateparser.php"
+#line 1858 "smarty_internal_templateparser.php"
#line 115 "smarty_internal_templateparser.y"
- function yy_r6(){
+ function yy_r4(){ $this->_retvalue = ''; }
+#line 1861 "smarty_internal_templateparser.php"
+#line 121 "smarty_internal_templateparser.y"
+ function yy_r6(){
if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
- $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?=".$this->yystack[$this->yyidx + -1]->minor."?>'?>\n", $this->compiler, false);
+ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + -2]->minor) . $this->yystack[$this->yyidx + -1]->minor . '?<??>>';
} elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
- $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?='.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false);
+ $this->_retvalue = $this->compiler->processNocacheCode(htmlspecialchars($this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), false);
}elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
- $this->_retvalue = $this->cacher->processNocacheCode('<?='.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, true);
- }elseif ($this->sec_obj == SMARTY_PHP_REMOVE) {
+ $this->_retvalue = $this->compiler->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', true);
+ }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
$this->_retvalue = '';
}
}
-#line 1866 "smarty_internal_templateparser.php"
-#line 128 "smarty_internal_templateparser.y"
- function yy_r7(){ $this->compiler->tag_nocache = true; $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true); }
-#line 1869 "smarty_internal_templateparser.php"
-#line 129 "smarty_internal_templateparser.y"
- function yy_r8(){$this->compiler->tag_nocache = true; $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true); }
-#line 1872 "smarty_internal_templateparser.php"
-#line 131 "smarty_internal_templateparser.y"
- function yy_r9(){if ($this->lex->strip) {
- $this->_retvalue = $this->cacher->processNocacheCode(preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor), $this->compiler, false);
+#line 1874 "smarty_internal_templateparser.php"
+#line 135 "smarty_internal_templateparser.y"
+ function yy_r7(){if ($this->lex->strip) {
+ $this->_retvalue = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+#line 1882 "smarty_internal_templateparser.php"
+#line 141 "smarty_internal_templateparser.y"
+ function yy_r8(){if ($this->lex->strip) {
+ $this->_retvalue = preg_replace('![\$this->yystack[$this->yyidx + 0]->minor ]*[\r\n]+[\$this->yystack[$this->yyidx + 0]->minor ]*!', '', self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
} else {
- $this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler, false);
+ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);
}
}
-#line 1880 "smarty_internal_templateparser.php"
-#line 144 "smarty_internal_templateparser.y"
- function yy_r10(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1883 "smarty_internal_templateparser.php"
-#line 145 "smarty_internal_templateparser.y"
- function yy_r11(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1886 "smarty_internal_templateparser.php"
+#line 1890 "smarty_internal_templateparser.php"
+#line 148 "smarty_internal_templateparser.y"
+ function yy_r9(){ $this->_retvalue = ''; }
+#line 1893 "smarty_internal_templateparser.php"
+#line 149 "smarty_internal_templateparser.y"
+ function yy_r10(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; }
+#line 1896 "smarty_internal_templateparser.php"
+#line 151 "smarty_internal_templateparser.y"
+ function yy_r11(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 1899 "smarty_internal_templateparser.php"
#line 156 "smarty_internal_templateparser.y"
- function yy_r15(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")); }
-#line 1889 "smarty_internal_templateparser.php"
+ function yy_r15(){ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor); }
+#line 1902 "smarty_internal_templateparser.php"
#line 158 "smarty_internal_templateparser.y"
- function yy_r17(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor,'var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'"),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1892 "smarty_internal_templateparser.php"
-#line 160 "smarty_internal_templateparser.y"
- function yy_r19(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1895 "smarty_internal_templateparser.php"
-#line 163 "smarty_internal_templateparser.y"
- function yy_r21(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
-#line 1898 "smarty_internal_templateparser.php"
-#line 165 "smarty_internal_templateparser.y"
- function yy_r23(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array()); }
-#line 1901 "smarty_internal_templateparser.php"
+ function yy_r17(){ $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor); }
+#line 1905 "smarty_internal_templateparser.php"
+#line 166 "smarty_internal_templateparser.y"
+ function yy_r18(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1908 "smarty_internal_templateparser.php"
#line 167 "smarty_internal_templateparser.y"
- function yy_r24(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1904 "smarty_internal_templateparser.php"
-#line 169 "smarty_internal_templateparser.y"
- function yy_r25(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
- }
- }
- }
-#line 1919 "smarty_internal_templateparser.php"
-#line 183 "smarty_internal_templateparser.y"
- function yy_r26(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -4]->minor),$this->yystack[$this->yyidx + -1]->minor)).'<?php echo ';
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
- }
- }
- }
+ function yy_r19(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1911 "smarty_internal_templateparser.php"
+#line 178 "smarty_internal_templateparser.y"
+ function yy_r23(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")); }
+#line 1914 "smarty_internal_templateparser.php"
+#line 180 "smarty_internal_templateparser.y"
+ function yy_r25(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor,'var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'"),$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1917 "smarty_internal_templateparser.php"
+#line 182 "smarty_internal_templateparser.y"
+ function yy_r27(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1920 "smarty_internal_templateparser.php"
+#line 185 "smarty_internal_templateparser.y"
+ function yy_r29(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
+#line 1923 "smarty_internal_templateparser.php"
+#line 187 "smarty_internal_templateparser.y"
+ function yy_r31(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array()); }
+#line 1926 "smarty_internal_templateparser.php"
+#line 189 "smarty_internal_templateparser.y"
+ function yy_r32(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1929 "smarty_internal_templateparser.php"
+#line 191 "smarty_internal_templateparser.y"
+ function yy_r33(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
+ }
#line 1934 "smarty_internal_templateparser.php"
-#line 197 "smarty_internal_templateparser.y"
- function yy_r27(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1937 "smarty_internal_templateparser.php"
+#line 195 "smarty_internal_templateparser.y"
+ function yy_r34(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -4]->minor),$this->yystack[$this->yyidx + -1]->minor)).'<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
+ }
+#line 1939 "smarty_internal_templateparser.php"
+#line 199 "smarty_internal_templateparser.y"
+ function yy_r35(){ $this->_retvalue = $this->compiler->compileTag(($this->yystack[$this->yyidx + -3]->minor == 'else if')? 'elseif' : $this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1942 "smarty_internal_templateparser.php"
#line 200 "smarty_internal_templateparser.y"
- function yy_r29(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -11]->minor,array('start'=>$this->yystack[$this->yyidx + -9]->minor,'ifexp'=>$this->yystack[$this->yyidx + -6]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1941 "smarty_internal_templateparser.php"
-#line 202 "smarty_internal_templateparser.y"
- function yy_r30(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
-#line 1944 "smarty_internal_templateparser.php"
+ function yy_r36(){ $this->_retvalue = $this->compiler->compileTag(($this->yystack[$this->yyidx + -3]->minor == 'else if')? 'elseif' : $this->yystack[$this->yyidx + -3]->minor,array('if condition'=>trim($this->yystack[$this->yyidx + -2]->minor).$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1945 "smarty_internal_templateparser.php"
#line 203 "smarty_internal_templateparser.y"
- function yy_r31(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 1947 "smarty_internal_templateparser.php"
-#line 204 "smarty_internal_templateparser.y"
- function yy_r32(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('start'=>$this->yystack[$this->yyidx + -4]->minor,'to'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1950 "smarty_internal_templateparser.php"
+ function yy_r38(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -11]->minor,array('start'=>$this->yystack[$this->yyidx + -9]->minor,'ifexp'=>$this->yystack[$this->yyidx + -6]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1949 "smarty_internal_templateparser.php"
+#line 205 "smarty_internal_templateparser.y"
+ function yy_r39(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
+#line 1952 "smarty_internal_templateparser.php"
+#line 206 "smarty_internal_templateparser.y"
+ function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 1955 "smarty_internal_templateparser.php"
#line 207 "smarty_internal_templateparser.y"
- function yy_r33(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1954 "smarty_internal_templateparser.php"
-#line 209 "smarty_internal_templateparser.y"
- function yy_r34(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor)); }
+ function yy_r41(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('start'=>$this->yystack[$this->yyidx + -4]->minor,'to'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
#line 1958 "smarty_internal_templateparser.php"
-#line 211 "smarty_internal_templateparser.y"
- function yy_r35(){
+#line 210 "smarty_internal_templateparser.y"
+ function yy_r42(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
#line 1962 "smarty_internal_templateparser.php"
-#line 213 "smarty_internal_templateparser.y"
- function yy_r36(){
+#line 212 "smarty_internal_templateparser.y"
+ function yy_r43(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor)); }
#line 1966 "smarty_internal_templateparser.php"
-#line 217 "smarty_internal_templateparser.y"
- function yy_r37(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array()); }
-#line 1969 "smarty_internal_templateparser.php"
-#line 222 "smarty_internal_templateparser.y"
- function yy_r42(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
-#line 1972 "smarty_internal_templateparser.php"
-#line 223 "smarty_internal_templateparser.y"
- function yy_r43(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
- }
- }
- }
-#line 1987 "smarty_internal_templateparser.php"
+#line 214 "smarty_internal_templateparser.y"
+ function yy_r44(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1970 "smarty_internal_templateparser.php"
+#line 216 "smarty_internal_templateparser.y"
+ function yy_r45(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor)); }
+#line 1974 "smarty_internal_templateparser.php"
+#line 220 "smarty_internal_templateparser.y"
+ function yy_r46(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array()); }
+#line 1977 "smarty_internal_templateparser.php"
+#line 225 "smarty_internal_templateparser.y"
+ function yy_r51(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
+#line 1980 "smarty_internal_templateparser.php"
+#line 226 "smarty_internal_templateparser.y"
+ function yy_r52(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
+ }
+#line 1985 "smarty_internal_templateparser.php"
+#line 230 "smarty_internal_templateparser.y"
+ function yy_r53(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1988 "smarty_internal_templateparser.php"
#line 237 "smarty_internal_templateparser.y"
- function yy_r44(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1990 "smarty_internal_templateparser.php"
+ function yy_r54(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
+#line 1991 "smarty_internal_templateparser.php"
+#line 241 "smarty_internal_templateparser.y"
+ function yy_r56(){ $this->_retvalue = array(); }
+#line 1994 "smarty_internal_templateparser.php"
#line 244 "smarty_internal_templateparser.y"
- function yy_r45(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
-#line 1993 "smarty_internal_templateparser.php"
+ function yy_r57(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); }
+#line 1997 "smarty_internal_templateparser.php"
+#line 245 "smarty_internal_templateparser.y"
+ function yy_r58(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
+#line 2000 "smarty_internal_templateparser.php"
#line 248 "smarty_internal_templateparser.y"
- function yy_r47(){ $this->_retvalue = array(); }
-#line 1996 "smarty_internal_templateparser.php"
-#line 251 "smarty_internal_templateparser.y"
- function yy_r48(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); }
-#line 1999 "smarty_internal_templateparser.php"
-#line 252 "smarty_internal_templateparser.y"
- function yy_r49(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
-#line 2002 "smarty_internal_templateparser.php"
+ function yy_r61(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
+#line 2003 "smarty_internal_templateparser.php"
#line 255 "smarty_internal_templateparser.y"
- function yy_r52(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
-#line 2005 "smarty_internal_templateparser.php"
-#line 262 "smarty_internal_templateparser.y"
- function yy_r54(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
-#line 2008 "smarty_internal_templateparser.php"
-#line 263 "smarty_internal_templateparser.y"
- function yy_r55(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
-#line 2011 "smarty_internal_templateparser.php"
+ function yy_r63(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
+#line 2006 "smarty_internal_templateparser.php"
+#line 256 "smarty_internal_templateparser.y"
+ function yy_r64(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
+#line 2009 "smarty_internal_templateparser.php"
+#line 258 "smarty_internal_templateparser.y"
+ function yy_r65(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
+#line 2012 "smarty_internal_templateparser.php"
+#line 264 "smarty_internal_templateparser.y"
+ function yy_r66(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
+#line 2015 "smarty_internal_templateparser.php"
#line 265 "smarty_internal_templateparser.y"
- function yy_r56(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
-#line 2014 "smarty_internal_templateparser.php"
-#line 271 "smarty_internal_templateparser.y"
- function yy_r57(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
-#line 2017 "smarty_internal_templateparser.php"
-#line 274 "smarty_internal_templateparser.y"
- function yy_r59(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
-#line 2020 "smarty_internal_templateparser.php"
-#line 275 "smarty_internal_templateparser.y"
- function yy_r60(){
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
- $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
- $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
- }
- }
- }
-#line 2035 "smarty_internal_templateparser.php"
-#line 292 "smarty_internal_templateparser.y"
- function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2038 "smarty_internal_templateparser.php"
-#line 294 "smarty_internal_templateparser.y"
- function yy_r63(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
-#line 2041 "smarty_internal_templateparser.php"
-#line 301 "smarty_internal_templateparser.y"
- function yy_r65(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2044 "smarty_internal_templateparser.php"
-#line 315 "smarty_internal_templateparser.y"
- function yy_r69(){$this->_retvalue = ' & '; }
-#line 2047 "smarty_internal_templateparser.php"
-#line 319 "smarty_internal_templateparser.y"
- function yy_r71(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2050 "smarty_internal_templateparser.php"
-#line 324 "smarty_internal_templateparser.y"
- function yy_r75(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2053 "smarty_internal_templateparser.php"
-#line 334 "smarty_internal_templateparser.y"
- function yy_r79(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
-#line 2056 "smarty_internal_templateparser.php"
-#line 338 "smarty_internal_templateparser.y"
- function yy_r81(){ $_s = str_replace(array('."".','.""'),array('.',''),'"'.$this->yystack[$this->yyidx + -1]->minor.'"');
+ function yy_r67(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 2018 "smarty_internal_templateparser.php"
+#line 267 "smarty_internal_templateparser.y"
+ function yy_r68(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
+#line 2021 "smarty_internal_templateparser.php"
+#line 268 "smarty_internal_templateparser.y"
+ function yy_r69(){ $this->_retvalue = $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -1]->minor,'params'=>$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor)); }
+#line 2024 "smarty_internal_templateparser.php"
+#line 277 "smarty_internal_templateparser.y"
+ function yy_r71(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor; }
+#line 2027 "smarty_internal_templateparser.php"
+#line 283 "smarty_internal_templateparser.y"
+ function yy_r75(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2030 "smarty_internal_templateparser.php"
+#line 289 "smarty_internal_templateparser.y"
+ function yy_r77(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2033 "smarty_internal_templateparser.php"
+#line 298 "smarty_internal_templateparser.y"
+ function yy_r81(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2036 "smarty_internal_templateparser.php"
+#line 303 "smarty_internal_templateparser.y"
+ function yy_r85(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2039 "smarty_internal_templateparser.php"
+#line 313 "smarty_internal_templateparser.y"
+ function yy_r89(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
+#line 2042 "smarty_internal_templateparser.php"
+#line 317 "smarty_internal_templateparser.y"
+ function yy_r91(){ $_s = str_replace(array('."".','.""'),array('.',''),'"'.$this->yystack[$this->yyidx + -1]->minor.'"');
if (substr($_s,0,3) == '"".') {
$this->_retvalue = substr($_s,3);
} else {
$this->_retvalue = $_s;
}
}
-#line 2065 "smarty_internal_templateparser.php"
-#line 345 "smarty_internal_templateparser.y"
- function yy_r82(){ $this->_retvalue = "''"; }
-#line 2068 "smarty_internal_templateparser.php"
+#line 2051 "smarty_internal_templateparser.php"
+#line 324 "smarty_internal_templateparser.y"
+ function yy_r92(){ $this->_retvalue = "''"; }
+#line 2054 "smarty_internal_templateparser.php"
+#line 326 "smarty_internal_templateparser.y"
+ function yy_r93(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2057 "smarty_internal_templateparser.php"
+#line 327 "smarty_internal_templateparser.y"
+ function yy_r94(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
+#line 2060 "smarty_internal_templateparser.php"
+#line 329 "smarty_internal_templateparser.y"
+ function yy_r95(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2063 "smarty_internal_templateparser.php"
+#line 330 "smarty_internal_templateparser.y"
+ function yy_r96(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2066 "smarty_internal_templateparser.php"
+#line 332 "smarty_internal_templateparser.y"
+ function yy_r97(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2069 "smarty_internal_templateparser.php"
+#line 334 "smarty_internal_templateparser.y"
+ function yy_r98(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2072 "smarty_internal_templateparser.php"
+#line 336 "smarty_internal_templateparser.y"
+ function yy_r99(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2075 "smarty_internal_templateparser.php"
+#line 338 "smarty_internal_templateparser.y"
+ function yy_r100(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
+#line 2078 "smarty_internal_templateparser.php"
#line 347 "smarty_internal_templateparser.y"
- function yy_r83(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2071 "smarty_internal_templateparser.php"
-#line 348 "smarty_internal_templateparser.y"
- function yy_r84(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
-#line 2074 "smarty_internal_templateparser.php"
+ function yy_r101(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);} else {
+ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"), null, true, false)->nocache;} }
+#line 2082 "smarty_internal_templateparser.php"
#line 350 "smarty_internal_templateparser.y"
- function yy_r85(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2077 "smarty_internal_templateparser.php"
-#line 351 "smarty_internal_templateparser.y"
- function yy_r86(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2080 "smarty_internal_templateparser.php"
-#line 353 "smarty_internal_templateparser.y"
- function yy_r87(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2083 "smarty_internal_templateparser.php"
+ function yy_r102(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
+#line 2085 "smarty_internal_templateparser.php"
+#line 354 "smarty_internal_templateparser.y"
+ function yy_r104(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
+#line 2088 "smarty_internal_templateparser.php"
#line 355 "smarty_internal_templateparser.y"
- function yy_r88(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2086 "smarty_internal_templateparser.php"
-#line 357 "smarty_internal_templateparser.y"
- function yy_r89(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2089 "smarty_internal_templateparser.php"
-#line 359 "smarty_internal_templateparser.y"
- function yy_r90(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
-#line 2092 "smarty_internal_templateparser.php"
-#line 368 "smarty_internal_templateparser.y"
- function yy_r91(){ if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('special_smarty_variable',$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);} else {
- $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"), null, true, false)->nocache;} }
-#line 2096 "smarty_internal_templateparser.php"
+ function yy_r105(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
+#line 2091 "smarty_internal_templateparser.php"
+#line 358 "smarty_internal_templateparser.y"
+ function yy_r106(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); }
+#line 2094 "smarty_internal_templateparser.php"
+#line 364 "smarty_internal_templateparser.y"
+ function yy_r107(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2097 "smarty_internal_templateparser.php"
+#line 366 "smarty_internal_templateparser.y"
+ function yy_r108(){return; }
+#line 2100 "smarty_internal_templateparser.php"
+#line 370 "smarty_internal_templateparser.y"
+ function yy_r109(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor .')->value]'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable('$this->yystack[$this->yyidx + 0]->minor', null, true, false)->nocache; }
+#line 2103 "smarty_internal_templateparser.php"
#line 371 "smarty_internal_templateparser.y"
- function yy_r92(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
-#line 2099 "smarty_internal_templateparser.php"
-#line 375 "smarty_internal_templateparser.y"
- function yy_r94(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
-#line 2102 "smarty_internal_templateparser.php"
-#line 376 "smarty_internal_templateparser.y"
- function yy_r95(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
-#line 2105 "smarty_internal_templateparser.php"
+ function yy_r110(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor.']'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
+#line 2106 "smarty_internal_templateparser.php"
+#line 374 "smarty_internal_templateparser.y"
+ function yy_r111(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
+#line 2109 "smarty_internal_templateparser.php"
+#line 378 "smarty_internal_templateparser.y"
+ function yy_r114(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
+#line 2112 "smarty_internal_templateparser.php"
#line 379 "smarty_internal_templateparser.y"
- function yy_r96(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); }
-#line 2108 "smarty_internal_templateparser.php"
-#line 385 "smarty_internal_templateparser.y"
- function yy_r97(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2111 "smarty_internal_templateparser.php"
-#line 387 "smarty_internal_templateparser.y"
- function yy_r98(){return; }
-#line 2114 "smarty_internal_templateparser.php"
-#line 391 "smarty_internal_templateparser.y"
- function yy_r99(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor .')->value]'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable('$this->yystack[$this->yyidx + 0]->minor', null, true, false)->nocache; }
-#line 2117 "smarty_internal_templateparser.php"
-#line 392 "smarty_internal_templateparser.y"
- function yy_r100(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor.']'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
-#line 2120 "smarty_internal_templateparser.php"
-#line 395 "smarty_internal_templateparser.y"
- function yy_r101(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
-#line 2123 "smarty_internal_templateparser.php"
+ function yy_r115(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
+#line 2115 "smarty_internal_templateparser.php"
+#line 381 "smarty_internal_templateparser.y"
+ function yy_r116(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
+#line 2118 "smarty_internal_templateparser.php"
+#line 382 "smarty_internal_templateparser.y"
+ function yy_r117(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
+#line 2121 "smarty_internal_templateparser.php"
+#line 386 "smarty_internal_templateparser.y"
+ function yy_r119(){$this->_retvalue = ''; }
+#line 2124 "smarty_internal_templateparser.php"
+#line 394 "smarty_internal_templateparser.y"
+ function yy_r121(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2127 "smarty_internal_templateparser.php"
+#line 396 "smarty_internal_templateparser.y"
+ function yy_r122(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
+#line 2130 "smarty_internal_templateparser.php"
#line 399 "smarty_internal_templateparser.y"
- function yy_r104(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
-#line 2126 "smarty_internal_templateparser.php"
-#line 400 "smarty_internal_templateparser.y"
- function yy_r105(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
-#line 2129 "smarty_internal_templateparser.php"
-#line 402 "smarty_internal_templateparser.y"
- function yy_r106(){ $this->_retvalue = '['.$this->compiler->compileTag('special_smarty_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
-#line 2132 "smarty_internal_templateparser.php"
-#line 403 "smarty_internal_templateparser.y"
- function yy_r107(){ $this->_retvalue = '['.$this->compiler->compileTag('special_smarty_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
-#line 2135 "smarty_internal_templateparser.php"
-#line 407 "smarty_internal_templateparser.y"
- function yy_r109(){$this->_retvalue = ''; }
-#line 2138 "smarty_internal_templateparser.php"
-#line 415 "smarty_internal_templateparser.y"
- function yy_r111(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2141 "smarty_internal_templateparser.php"
-#line 417 "smarty_internal_templateparser.y"
- function yy_r112(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
-#line 2144 "smarty_internal_templateparser.php"
-#line 420 "smarty_internal_templateparser.y"
- function yy_r113(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2147 "smarty_internal_templateparser.php"
-#line 425 "smarty_internal_templateparser.y"
- function yy_r114(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('special_smarty_variable',$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;} else {
+ function yy_r123(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2133 "smarty_internal_templateparser.php"
+#line 404 "smarty_internal_templateparser.y"
+ function yy_r124(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;} else {
$this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"), null, true, false)->nocache;} }
-#line 2151 "smarty_internal_templateparser.php"
-#line 428 "smarty_internal_templateparser.y"
- function yy_r115(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 2154 "smarty_internal_templateparser.php"
-#line 430 "smarty_internal_templateparser.y"
- function yy_r116(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2157 "smarty_internal_templateparser.php"
-#line 432 "smarty_internal_templateparser.y"
- function yy_r117(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2160 "smarty_internal_templateparser.php"
-#line 433 "smarty_internal_templateparser.y"
- function yy_r118(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
-#line 2163 "smarty_internal_templateparser.php"
-#line 434 "smarty_internal_templateparser.y"
- function yy_r119(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
-#line 2166 "smarty_internal_templateparser.php"
-#line 435 "smarty_internal_templateparser.y"
- function yy_r120(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
-#line 2169 "smarty_internal_templateparser.php"
-#line 437 "smarty_internal_templateparser.y"
- function yy_r121(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2172 "smarty_internal_templateparser.php"
-#line 443 "smarty_internal_templateparser.y"
- function yy_r122(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
+#line 2137 "smarty_internal_templateparser.php"
+#line 407 "smarty_internal_templateparser.y"
+ function yy_r125(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 2140 "smarty_internal_templateparser.php"
+#line 409 "smarty_internal_templateparser.y"
+ function yy_r126(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2143 "smarty_internal_templateparser.php"
+#line 411 "smarty_internal_templateparser.y"
+ function yy_r127(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2146 "smarty_internal_templateparser.php"
+#line 412 "smarty_internal_templateparser.y"
+ function yy_r128(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
+#line 2149 "smarty_internal_templateparser.php"
+#line 413 "smarty_internal_templateparser.y"
+ function yy_r129(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
+#line 2152 "smarty_internal_templateparser.php"
+#line 414 "smarty_internal_templateparser.y"
+ function yy_r130(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
+#line 2155 "smarty_internal_templateparser.php"
+#line 416 "smarty_internal_templateparser.y"
+ function yy_r131(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2158 "smarty_internal_templateparser.php"
+#line 422 "smarty_internal_templateparser.y"
+ function yy_r132(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
$this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
} else {
$this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
}
} }
-#line 2181 "smarty_internal_templateparser.php"
-#line 454 "smarty_internal_templateparser.y"
- function yy_r123(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
-#line 2184 "smarty_internal_templateparser.php"
-#line 458 "smarty_internal_templateparser.y"
- function yy_r124(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
-#line 2187 "smarty_internal_templateparser.php"
-#line 462 "smarty_internal_templateparser.y"
- function yy_r126(){ return; }
-#line 2190 "smarty_internal_templateparser.php"
-#line 467 "smarty_internal_templateparser.y"
- function yy_r127(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'false'); }
-#line 2193 "smarty_internal_templateparser.php"
+#line 2167 "smarty_internal_templateparser.php"
+#line 433 "smarty_internal_templateparser.y"
+ function yy_r133(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
+#line 2170 "smarty_internal_templateparser.php"
+#line 437 "smarty_internal_templateparser.y"
+ function yy_r134(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
+#line 2173 "smarty_internal_templateparser.php"
+#line 441 "smarty_internal_templateparser.y"
+ function yy_r136(){ return; }
+#line 2176 "smarty_internal_templateparser.php"
+#line 446 "smarty_internal_templateparser.y"
+ function yy_r137(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 2179 "smarty_internal_templateparser.php"
+#line 459 "smarty_internal_templateparser.y"
+ function yy_r139(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2182 "smarty_internal_templateparser.php"
+#line 463 "smarty_internal_templateparser.y"
+ function yy_r141(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2185 "smarty_internal_templateparser.php"
+#line 464 "smarty_internal_templateparser.y"
+ function yy_r142(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
+#line 2188 "smarty_internal_templateparser.php"
#line 468 "smarty_internal_templateparser.y"
- function yy_r128(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'true'); }
-#line 2196 "smarty_internal_templateparser.php"
+ function yy_r143(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
+#line 2191 "smarty_internal_templateparser.php"
+#line 469 "smarty_internal_templateparser.y"
+ function yy_r144(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2194 "smarty_internal_templateparser.php"
+#line 470 "smarty_internal_templateparser.y"
+ function yy_r145(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2197 "smarty_internal_templateparser.php"
+#line 471 "smarty_internal_templateparser.y"
+ function yy_r146(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2200 "smarty_internal_templateparser.php"
+#line 472 "smarty_internal_templateparser.y"
+ function yy_r147(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2203 "smarty_internal_templateparser.php"
+#line 473 "smarty_internal_templateparser.y"
+ function yy_r148(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2206 "smarty_internal_templateparser.php"
+#line 474 "smarty_internal_templateparser.y"
+ function yy_r149(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2209 "smarty_internal_templateparser.php"
+#line 475 "smarty_internal_templateparser.y"
+ function yy_r150(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2212 "smarty_internal_templateparser.php"
+#line 476 "smarty_internal_templateparser.y"
+ function yy_r151(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2215 "smarty_internal_templateparser.php"
+#line 482 "smarty_internal_templateparser.y"
+ function yy_r157(){$this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number; }
+#line 2218 "smarty_internal_templateparser.php"
#line 484 "smarty_internal_templateparser.y"
- function yy_r131(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2199 "smarty_internal_templateparser.php"
+ function yy_r158(){$this->_retvalue = '=='; }
+#line 2221 "smarty_internal_templateparser.php"
#line 485 "smarty_internal_templateparser.y"
- function yy_r132(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
-#line 2202 "smarty_internal_templateparser.php"
+ function yy_r159(){$this->_retvalue = '!='; }
+#line 2224 "smarty_internal_templateparser.php"
+#line 486 "smarty_internal_templateparser.y"
+ function yy_r160(){$this->_retvalue = '>'; }
+#line 2227 "smarty_internal_templateparser.php"
+#line 487 "smarty_internal_templateparser.y"
+ function yy_r161(){$this->_retvalue = '<'; }
+#line 2230 "smarty_internal_templateparser.php"
+#line 488 "smarty_internal_templateparser.y"
+ function yy_r162(){$this->_retvalue = '>='; }
+#line 2233 "smarty_internal_templateparser.php"
+#line 489 "smarty_internal_templateparser.y"
+ function yy_r163(){$this->_retvalue = '<='; }
+#line 2236 "smarty_internal_templateparser.php"
+#line 490 "smarty_internal_templateparser.y"
+ function yy_r164(){$this->_retvalue = '==='; }
+#line 2239 "smarty_internal_templateparser.php"
+#line 491 "smarty_internal_templateparser.y"
+ function yy_r165(){$this->_retvalue = '!=='; }
+#line 2242 "smarty_internal_templateparser.php"
#line 492 "smarty_internal_templateparser.y"
- function yy_r134(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2205 "smarty_internal_templateparser.php"
-#line 497 "smarty_internal_templateparser.y"
- function yy_r136(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
-#line 2208 "smarty_internal_templateparser.php"
-#line 499 "smarty_internal_templateparser.y"
- function yy_r137(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2211 "smarty_internal_templateparser.php"
-#line 500 "smarty_internal_templateparser.y"
- function yy_r138(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2214 "smarty_internal_templateparser.php"
+ function yy_r166(){$this->_retvalue = '%'; }
+#line 2245 "smarty_internal_templateparser.php"
+#line 494 "smarty_internal_templateparser.y"
+ function yy_r167(){$this->_retvalue = '&&'; }
+#line 2248 "smarty_internal_templateparser.php"
+#line 495 "smarty_internal_templateparser.y"
+ function yy_r168(){$this->_retvalue = '||'; }
+#line 2251 "smarty_internal_templateparser.php"
+#line 496 "smarty_internal_templateparser.y"
+ function yy_r169(){$this->_retvalue = ' XOR '; }
+#line 2254 "smarty_internal_templateparser.php"
#line 501 "smarty_internal_templateparser.y"
- function yy_r139(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2217 "smarty_internal_templateparser.php"
+ function yy_r170(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2257 "smarty_internal_templateparser.php"
#line 503 "smarty_internal_templateparser.y"
- function yy_r141(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2220 "smarty_internal_templateparser.php"
+ function yy_r172(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2260 "smarty_internal_templateparser.php"
#line 504 "smarty_internal_templateparser.y"
- function yy_r142(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2223 "smarty_internal_templateparser.php"
+ function yy_r173(){ return; }
+#line 2263 "smarty_internal_templateparser.php"
#line 505 "smarty_internal_templateparser.y"
- function yy_r143(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2226 "smarty_internal_templateparser.php"
+ function yy_r174(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2266 "smarty_internal_templateparser.php"
#line 506 "smarty_internal_templateparser.y"
- function yy_r144(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2229 "smarty_internal_templateparser.php"
-#line 507 "smarty_internal_templateparser.y"
- function yy_r145(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2232 "smarty_internal_templateparser.php"
-#line 508 "smarty_internal_templateparser.y"
- function yy_r146(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2235 "smarty_internal_templateparser.php"
-#line 514 "smarty_internal_templateparser.y"
- function yy_r152(){$this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number; }
-#line 2238 "smarty_internal_templateparser.php"
+ function yy_r175(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2269 "smarty_internal_templateparser.php"
+#line 515 "smarty_internal_templateparser.y"
+ function yy_r179(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; $this->compiler->has_variable_string = true; }
+#line 2272 "smarty_internal_templateparser.php"
#line 516 "smarty_internal_templateparser.y"
- function yy_r153(){$this->_retvalue = '=='; }
-#line 2241 "smarty_internal_templateparser.php"
+ function yy_r180(){$this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
+#line 2275 "smarty_internal_templateparser.php"
#line 517 "smarty_internal_templateparser.y"
- function yy_r154(){$this->_retvalue = '!='; }
-#line 2244 "smarty_internal_templateparser.php"
-#line 518 "smarty_internal_templateparser.y"
- function yy_r155(){$this->_retvalue = '>'; }
-#line 2247 "smarty_internal_templateparser.php"
+ function yy_r181(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->value'.'."'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"), null, true, false)->nocache; $this->compiler->has_variable_string = true; }
+#line 2278 "smarty_internal_templateparser.php"
#line 519 "smarty_internal_templateparser.y"
- function yy_r156(){$this->_retvalue = '<'; }
-#line 2250 "smarty_internal_templateparser.php"
+ function yy_r183(){ $this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
+#line 2281 "smarty_internal_templateparser.php"
#line 520 "smarty_internal_templateparser.y"
- function yy_r157(){$this->_retvalue = '>='; }
-#line 2253 "smarty_internal_templateparser.php"
-#line 521 "smarty_internal_templateparser.y"
- function yy_r158(){$this->_retvalue = '<='; }
-#line 2256 "smarty_internal_templateparser.php"
-#line 522 "smarty_internal_templateparser.y"
- function yy_r159(){$this->_retvalue = '==='; }
-#line 2259 "smarty_internal_templateparser.php"
-#line 523 "smarty_internal_templateparser.y"
- function yy_r160(){$this->_retvalue = '!=='; }
-#line 2262 "smarty_internal_templateparser.php"
-#line 524 "smarty_internal_templateparser.y"
- function yy_r161(){$this->_retvalue = '%'; }
-#line 2265 "smarty_internal_templateparser.php"
-#line 526 "smarty_internal_templateparser.y"
- function yy_r162(){$this->_retvalue = '&&'; }
-#line 2268 "smarty_internal_templateparser.php"
-#line 527 "smarty_internal_templateparser.y"
- function yy_r163(){$this->_retvalue = '||'; }
-#line 2271 "smarty_internal_templateparser.php"
-#line 528 "smarty_internal_templateparser.y"
- function yy_r164(){$this->_retvalue = ' XOR '; }
-#line 2274 "smarty_internal_templateparser.php"
-#line 533 "smarty_internal_templateparser.y"
- function yy_r165(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2277 "smarty_internal_templateparser.php"
-#line 535 "smarty_internal_templateparser.y"
- function yy_r167(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2280 "smarty_internal_templateparser.php"
-#line 536 "smarty_internal_templateparser.y"
- function yy_r168(){ return; }
-#line 2283 "smarty_internal_templateparser.php"
-#line 537 "smarty_internal_templateparser.y"
- function yy_r169(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2286 "smarty_internal_templateparser.php"
-#line 538 "smarty_internal_templateparser.y"
- function yy_r170(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2289 "smarty_internal_templateparser.php"
-#line 547 "smarty_internal_templateparser.y"
- function yy_r174(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; $this->compiler->has_variable_string = true; }
-#line 2292 "smarty_internal_templateparser.php"
-#line 548 "smarty_internal_templateparser.y"
- function yy_r175(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->value'.'."'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"), null, true, false)->nocache; $this->compiler->has_variable_string = true; }
-#line 2295 "smarty_internal_templateparser.php"
-#line 550 "smarty_internal_templateparser.y"
- function yy_r177(){ $this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
-#line 2298 "smarty_internal_templateparser.php"
-#line 551 "smarty_internal_templateparser.y"
- function yy_r178(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; $this->compiler->has_variable_string = true; }
-#line 2301 "smarty_internal_templateparser.php"
+ function yy_r184(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; $this->compiler->has_variable_string = true; }
+#line 2284 "smarty_internal_templateparser.php"
private $_retvalue;
@@ -2360,12 +2343,12 @@ static public $yy_action = array( function yy_syntax_error($yymajor, $TOKEN)
{
-#line 60 "smarty_internal_templateparser.y"
+#line 71 "smarty_internal_templateparser.y"
$this->internalError = true;
$this->yymajor = $yymajor;
$this->compiler->trigger_template_error();
-#line 2364 "smarty_internal_templateparser.php"
+#line 2347 "smarty_internal_templateparser.php"
}
function yy_accept()
@@ -2376,13 +2359,13 @@ static public $yy_action = array( while ($this->yyidx >= 0) {
$stack = $this->yy_pop_parser_stack();
}
-#line 52 "smarty_internal_templateparser.y"
+#line 63 "smarty_internal_templateparser.y"
$this->successful = !$this->internalError;
$this->internalError = false;
$this->retvalue = $this->_retvalue;
//echo $this->retvalue."\n\n";
-#line 2382 "smarty_internal_templateparser.php"
+#line 2365 "smarty_internal_templateparser.php"
}
function doParse($yymajor, $yytokenvalue)
diff --git a/libs/sysplugins/smarty_method_register_block.php b/libs/sysplugins/smarty_method_register_block.php index c2bf1cbd..466f8c39 100644 --- a/libs/sysplugins/smarty_method_register_block.php +++ b/libs/sysplugins/smarty_method_register_block.php @@ -23,13 +23,13 @@ */ function Smarty_Method_Register_Block($smarty, $block_tag, $block_impl, $cacheable = true, $cache_attr = array()) { - if (isset($smarty->registered_plugins[$block_tag])) { + if (isset($smarty->registered_plugins['block'][$block_tag])) { throw new Exception("Plugin tag \"{$block_tag}\" already registered"); } elseif (!is_callable($block_impl)) { throw new Exception("Plugin \"{$block_tag}\" not callable"); } else { - $smarty->registered_plugins[$block_tag] = - array('block', $block_impl, $cacheable, $cache_attr); + $smarty->registered_plugins['block'][$block_tag] = + array($block_impl, $cacheable, $cache_attr); } } diff --git a/libs/sysplugins/smarty_method_register_compiler_function.php b/libs/sysplugins/smarty_method_register_compiler_function.php index 5d747441..b338504c 100644 --- a/libs/sysplugins/smarty_method_register_compiler_function.php +++ b/libs/sysplugins/smarty_method_register_compiler_function.php @@ -22,13 +22,13 @@ */ function Smarty_Method_Register_Compiler_Function($smarty, $compiler_tag, $compiler_impl, $cacheable = true) { - if (isset($smarty->registered_plugins[$compiler_tag])) { + if (isset($smarty->registered_plugins['compiler'][$compiler_tag])) { throw new Exception("Plugin tag \"{$compiler_tag}\" already registered"); } elseif (!is_callable($compiler_impl)) { throw new Exception("Plugin \"{$compiler_tag}\" not callable"); } else { - $smarty->registered_plugins[$compiler_tag] = - array('compiler', $compiler_impl, $cacheable); + $smarty->registered_plugins['compiler'][$compiler_tag] = + array($compiler_impl, $cacheable); } } diff --git a/libs/sysplugins/smarty_method_register_function.php b/libs/sysplugins/smarty_method_register_function.php index ceb80487..fbdb7815 100644 --- a/libs/sysplugins/smarty_method_register_function.php +++ b/libs/sysplugins/smarty_method_register_function.php @@ -20,13 +20,13 @@ */ function Smarty_Method_Register_Function($smarty, $function_tag, $function_impl, $cacheable = true, $cache_attr = array()) { - if (isset($smarty->registered_plugins[$function_tag])) { + if (isset($smarty->registered_plugins['function'][$function_tag])) { throw new Exception("Plugin tag \"{$function_tag}\" already registered"); } elseif (!is_callable($function_impl)) { throw new Exception("Plugin \"{$function_tag}\" not callable"); } else { - $smarty->registered_plugins[$function_tag] = - array('function', $function_impl, $cacheable, $cache_attr); + $smarty->registered_plugins['function'][$function_tag] = + array($function_impl, $cacheable, $cache_attr); } } diff --git a/libs/sysplugins/smarty_method_register_modifier.php b/libs/sysplugins/smarty_method_register_modifier.php index 7d9986c7..022f4f30 100644 --- a/libs/sysplugins/smarty_method_register_modifier.php +++ b/libs/sysplugins/smarty_method_register_modifier.php @@ -19,13 +19,13 @@ */ function Smarty_Method_Register_Modifier($smarty, $modifier, $modifier_impl) { - if (isset($smarty->registered_plugins[$modifier])) { + if (isset($smarty->registered_plugins['modifier'][$modifier])) { throw new Exception("Plugin \"{$modifier}\" already registered"); } elseif (!is_callable($modifier_impl)) { throw new Exception("Plugin \"{$modifier}\" not callable"); } else { - $smarty->registered_plugins[$modifier] = - array('modifier', $modifier_impl); + $smarty->registered_plugins['modifier'][$modifier] = + array($modifier_impl); } } ?> diff --git a/libs/sysplugins/smarty_method_unregister_block.php b/libs/sysplugins/smarty_method_unregister_block.php index 2b6867a5..d1fecb7b 100644 --- a/libs/sysplugins/smarty_method_unregister_block.php +++ b/libs/sysplugins/smarty_method_unregister_block.php @@ -21,8 +21,8 @@ */ function Smarty_Method_Unregister_Block($smarty, $block_tag) { - if (isset($smarty->registered_plugins[$block_tag]) && $smarty->registered_plugins[$block_tag][0] == 'block') { - unset($smarty->registered_plugins[$block_tag]); + if (isset($smarty->registered_plugins['block'][$block_tag])) { + unset($smarty->registered_plugins['block'][$block_tag]); } } diff --git a/libs/sysplugins/smarty_method_unregister_compiler_function.php b/libs/sysplugins/smarty_method_unregister_compiler_function.php index 3769b030..049214b4 100644 --- a/libs/sysplugins/smarty_method_unregister_compiler_function.php +++ b/libs/sysplugins/smarty_method_unregister_compiler_function.php @@ -21,8 +21,8 @@ */ function Smarty_Method_Unregister_Compiler_Function($smarty, $compiler_tag) { - if (isset($smarty->registered_plugins[$compiler_tag]) && $smarty->registered_plugins[$compiler_tag][0] == 'compiler') { - unset($smarty->registered_plugins[$compiler_tag]); + if (isset($smarty->registered_plugins['compiler'][$compiler_tag])) { + unset($smarty->registered_plugins['compiler'][$compiler_tag]); } } diff --git a/libs/sysplugins/smarty_method_unregister_function.php b/libs/sysplugins/smarty_method_unregister_function.php index 99c0d43a..f91b9bb9 100644 --- a/libs/sysplugins/smarty_method_unregister_function.php +++ b/libs/sysplugins/smarty_method_unregister_function.php @@ -21,8 +21,8 @@ */ function Smarty_Method_Unregister_Function($smarty, $function_tag) { - if (isset($smarty->registered_plugins[$function_tag]) && $smarty->registered_plugins[$function_tag][0] == 'function') { - unset($smarty->registered_plugins[$function_tag]); + if (isset($smarty->registered_plugins['function'][$function_tag])) { + unset($smarty->registered_plugins['function'][$function_tag]); } } diff --git a/libs/sysplugins/smarty_method_unregister_modifier.php b/libs/sysplugins/smarty_method_unregister_modifier.php index 84c78fca..46191c9f 100644 --- a/libs/sysplugins/smarty_method_unregister_modifier.php +++ b/libs/sysplugins/smarty_method_unregister_modifier.php @@ -21,8 +21,8 @@ */ function Smarty_Method_Unregister_Modifier($smarty, $modifier) { - if (isset($smarty->registered_plugins[$modifier]) && $smarty->registered_plugins[$modifier][0] == 'modifier') { - unset($smarty->registered_plugins[$modifier]); + if (isset($smarty->registered_plugins['modifier'][$modifier])) { + unset($smarty->registered_plugins['modifier'][$modifier]); } } |
