From: cajus Date: Wed, 17 Mar 2010 14:33:52 +0000 (+0000) Subject: Updated smarty X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=9d42eb1de3a7f948a0d0e7d753d5dae8cd9de223;p=gosa.git Updated smarty git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@16778 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-core/include/smarty/Smarty.class.php b/gosa-core/include/smarty/Smarty.class.php index 6f2885731..2d2ed357e 100644 --- a/gosa-core/include/smarty/Smarty.class.php +++ b/gosa-core/include/smarty/Smarty.class.php @@ -1,55 +1,55 @@ -* @author Uwe Tews -* @package Smarty -* @version 3-SVN$Rev: 3286 $ -*/ + * Project: Smarty: the PHP compiling template engine + * File: Smarty.class.php + * SVN: $Id: Smarty.class.php 3508 2010-02-26 12:58:36Z Uwe.Tews $ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * For questions, help, comments, discussion, etc., please join the + * Smarty mailing list. Send a blank e-mail to + * smarty-discussion-subscribe@googlegroups.com + * + * @link http://www.smarty.net/ + * @copyright 2008 New Digital Group, Inc. + * @author Monte Ohrt + * @author Uwe Tews + * @package Smarty + * @version 3-SVN$Rev: 3286 $ + */ /** -* define shorthand directory separator constant -*/ + * define shorthand directory separator constant + */ if (!defined('DS')) { define('DS', DIRECTORY_SEPARATOR); } /** -* set SMARTY_DIR to absolute path to Smarty library files. -* Sets SMARTY_DIR only if user application has not already defined it. -*/ + * set SMARTY_DIR to absolute path to Smarty library files. + * Sets SMARTY_DIR only if user application has not already defined it. + */ if (!defined('SMARTY_DIR')) { define('SMARTY_DIR', dirname(__FILE__) . DS); } /** -* set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. -* Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. -*/ + * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. + * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. + */ if (!defined('SMARTY_SYSPLUGINS_DIR')) { define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS); } @@ -64,32 +64,32 @@ if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { } /** -* define variable scopes -*/ + * define variable scopes + */ define('SMARTY_LOCAL_SCOPE', 0); define('SMARTY_PARENT_SCOPE', 1); define('SMARTY_ROOT_SCOPE', 2); define('SMARTY_GLOBAL_SCOPE', 3); /** -* define caching modes -*/ + * define caching modes + */ define('SMARTY_CACHING_OFF', 0); define('SMARTY_CACHING_LIFETIME_CURRENT', 1); define('SMARTY_CACHING_LIFETIME_SAVED', 2); /** -* This determines how Smarty handles "" tags in templates. -* possible values: -*/ + * This determines how Smarty handles "" tags in templates. + * possible values: + */ define('SMARTY_PHP_PASSTHRU', 0); //-> print tags as plain text define('SMARTY_PHP_QUOTE', 1); //-> escape tags as entities define('SMARTY_PHP_REMOVE', 2); //-> escape tags as entities define('SMARTY_PHP_ALLOW', 3); //-> escape tags as entities /** -* register the class autoloader -*/ + * register the class autoloader + */ if (!defined('SMARTY_SPL_AUTOLOAD')) { define('SMARTY_SPL_AUTOLOAD', 0); } @@ -104,11 +104,11 @@ if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR } /** -* This is the main Smarty class -*/ + * This is the main Smarty class + */ class Smarty extends Smarty_Internal_Data { // smarty version - const SMARTY_VERSION = 'Smarty3-b7'; + const SMARTY_VERSION = 'Smarty3-b8'; // 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_Data { // 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 @@ -184,6 +184,10 @@ class Smarty extends Smarty_Internal_Data { public $caching_type = 'file'; // internal cache resource types public $cache_resource_types = array('file'); + // internal cache resource objects + public $cache_resource_objects = array(); + // internal config properties + public $properties = array(); // config type public $default_config_type = 'file'; // exception handler: array('ExceptionClass','ExceptionMethod'); @@ -204,6 +208,8 @@ class Smarty extends Smarty_Internal_Data { public $autoload_filters = array(); // status of filter on variable output public $variable_filter = true; + // default modifier + public $default_modifiers = array(); // global internal smarty vars public $_smarty_vars = array(); // start time for execution time calculation @@ -213,12 +219,21 @@ class Smarty extends Smarty_Internal_Data { // default dir permissions public $_dir_perms = 0771; // smarty object reference - public $smarty = null; + public $smarty = null; + // block data at template inheritance + public $block_data = array(); + // block tag hierarchy + public $_tag_stack = array(); + // plugins + public $_plugins = array(); + // generate deprecated function call notices? + public $deprecation_notices = true; /** - * Class constructor, initializes basic smarty properties - */ - public function __construct() { + * Class constructor, initializes basic smarty properties + */ + public function __construct() + { // self reference needed by other classes methods $this->smarty = $this; @@ -228,7 +243,7 @@ class Smarty extends Smarty_Internal_Data { $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; @@ -239,8 +254,7 @@ class Smarty extends Smarty_Internal_Data { 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)) { @@ -248,45 +262,46 @@ class Smarty extends Smarty_Internal_Data { // 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; } } } - $this->assign_global('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']); + if (isset($_SERVER['SCRIPT_NAME'])) { + $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']); + } } /** - * Class destructor - */ - public function __destruct() { + * Class destructor + */ + public function __destruct() + { // restore to previous exception handler, if any if (!empty($this->exception_handler)) - restore_exception_handler(); + restore_exception_handler(); } /** - * fetches a rendered Smarty template - * - * @param string $template the resource handle of the template file or template object - * @param mixed $cache_id cache id to be used with this template - * @param mixed $compile_id compile id to be used with this template - * @param object $ |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) { + * fetches a rendered Smarty template + * + * @param string $template the resource handle of the template file or template object + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @param object $ |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, $display = false) + { if (is_object($cache_id)) { $parent = $cache_id; $cache_id = null; @@ -300,45 +315,74 @@ class Smarty extends Smarty_Internal_Data { $_template = $this->createTemplate ($template, $cache_id, $compile_id, $parent); $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) ? $this->error_reporting : error_reporting() &~E_NOTICE); + // obtain data for cache modified check + if ($this->cache_modified_check && $this->caching && $display) { + $_isCached = $_template->isCached() && !$_template->has_nocache_code; + if ($_isCached) { + $_gmt_mtime = gmdate('D, d M Y H:i:s', $_template->getCachedTimestamp()) . ' GMT'; + } else { + $_gmt_mtime = ''; + } + } // return redered template if (isset($this->autoload_filters['output']) || isset($this->registered_filters['output'])) { $_output = Smarty_Internal_Filter_Handler::runFilter('output', $_template->getRenderedTemplate(), $this); - } - else { + } else { $_output = $_template->getRenderedTemplate(); } $_template->rendered_content = null; - error_reporting($_smarty_old_error_level); - return $_output; + error_reporting($_smarty_old_error_level); + // display or fetch + if ($display) { + if ($this->caching && $this->cache_modified_check) { + $_last_modified_date = @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3); + if ($_isCached && $_gmt_mtime == $_last_modified_date) { + if (php_sapi_name() == 'cgi') + header('Status: 304 Not Modified'); + else + header('HTTP/1.1 304 Not Modified'); + } else { + header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->getCachedTimestamp()) . ' GMT'); + echo $_output; + } + } else { + echo $_output; + } + // debug output + if ($this->debugging) { + Smarty_Internal_Debug::display_debug($this); + } + return; + } else { + // return fetched content + return $_output; + } } /** - * displays a Smarty template - * - * @param string $ |object $template the resource handle of the template file or template object - * @param mixed $cache_id cache id to be used with this template - * @param mixed $compile_id compile id to be used with this template - * @param object $parent next higher level of Smarty variables - */ - public function display($template, $cache_id = null, $compile_id = null, $parent = null) { + * displays a Smarty template + * + * @param string $ |object $template the resource handle of the template file or template object + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @param object $parent next higher level of Smarty variables + */ + 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 - if ($this->debugging) { - Smarty_Internal_Debug::display_debug($this); - } - return true; + $this->fetch ($template, $cache_id, $compile_id, $parent, true); } /** - * test if cache i valid - * - * @param string $ |object $template the resource handle of the template file or template object - * @param mixed $cache_id cache id to be used with this template - * @param mixed $compile_id compile id to be used with this template - * @return boolean cache status - */ - public function is_cached($template, $cache_id = null, $compile_id = null) { + * test if cache i valid + * + * @param string $ |object $template the resource handle of the template file or template object + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @return boolean cache status + */ + public function isCached($template, $cache_id = null, $compile_id = null) + { if (!($template instanceof $this->template_class)) { $template = $this->createTemplate ($template, $cache_id, $compile_id, $this); } @@ -347,84 +391,134 @@ class Smarty extends Smarty_Internal_Data { } /** - * Loads security class and enables security - */ - public function enableSecurity() { + * creates a data object + * + * @param object $parent next higher level of Smarty variables + * @returns object data object + */ + public function createData($parent = null) + { + return new Smarty_Data($parent, $this); + } + + /** + * creates a template object + * + * @param string $template the resource handle of the template file + * @param object $parent next higher level of Smarty variables + * @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 object template object + */ + public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null) + { + if (is_object($cache_id) || is_array($cache_id)) { + $parent = $cache_id; + $cache_id = null; + } + if (is_array($parent)) { + $data = $parent; + $parent = null; + } else { + $data = null; + } + if (!is_object($template)) { + // we got a template resource + // already in template cache? + $_templateId = crc32($template . $cache_id . $compile_id); + if (isset($this->template_objects[$_templateId]) && $this->caching) { + // return cached template object + $tpl = $this->template_objects[$_templateId]; + } else { + // create new template object + $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id); + } + } else { + // just return a copy of template class + $tpl = $template; + } + // fill data if present + if (is_array($data)) { + // set up variable values + foreach ($data as $_key => $_val) { + $tpl->tpl_vars[$_key] = new Smarty_variable($_val); + } + } + return $tpl; + } + + /** + * Loads security class and enables security + */ + 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'); } } /** - * Set template directory - * - * @param string $ |array $template_dir folder(s) of template sorces - */ - public function setTemplateDir($template_dir) { + * Disable security + */ + public function disableSecurity() + { + $this->security = true; + } + + /** + * Set template directory + * + * @param string $ |array $template_dir folder(s) of template sorces + */ + public function setTemplateDir($template_dir) + { $this->template_dir = (array)$template_dir; return; } + /** - * Adds template directory(s) to existing ones - * - * @param string $ |array $template_dir folder(s) of template sources - */ - public function addTemplateDir($template_dir) { + * Adds template directory(s) to existing ones + * + * @param string $ |array $template_dir folder(s) of template sources + */ + 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; } + /** - * Set compile directory - * - * @param string $compile_dir folder of compiled template sources - */ - public function setCompileDir($compile_dir) { - $this->compile_dir = $compile_dir; - return; - } - /** - * Set cache directory - * - * @param string $cache_dir folder of cache files - */ - public function setCacheDir($cache_dir) { - $this->cache_dir = $cache_dir; - return; - } - /** - * Enable Caching - */ - public function enableCaching() { - $this->caching = SMARTY_CACHING_LIFETIME_CURRENT; - return; - } - /** - * Set caching life time - * - * @param integer $lifetime lifetime of cached file in seconds - */ - public function setCacheLifetime($lifetime) { - $this->cache_lifetime = $lifetime; - return; + * Check if a template resource exists + * + * @param string $resource_name template name + * @return boolean status + */ + function templateExists($resource_name) + { + // create template object + $tpl = new $this->template_class($resource_name, $this); + // check if it does exists + return $tpl->isExisting(); } + /** - * Takes unknown classes and loads plugin files for them - * class name format: Smarty_PluginType_PluginName - * plugin filename format: plugintype.pluginname.php - * - * @param string $plugin_name class plugin name to load - * @return string|boolean filepath of loaded file or false - */ - public function loadPlugin($plugin_name, $check = true) { + * Takes unknown classes and loads plugin files for them + * class name format: Smarty_PluginType_PluginName + * plugin filename format: plugintype.pluginname.php + * + * @param string $plugin_name class plugin name to load + * @return string |boolean filepath of loaded file or false + */ + 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; + return true; // Plugin name is expected to be: Smarty_[Type]_[Name] $_plugin_name = strtolower($plugin_name); $_name_parts = explode('_', $_plugin_name, 3); @@ -439,8 +533,7 @@ class Smarty extends Smarty_Internal_Data { if (file_exists($file)) { require_once($file); return $file; - } - else { + } else { return false; } } @@ -462,64 +555,204 @@ class Smarty extends Smarty_Internal_Data { } /** - * Sets the exception handler for Smarty. - * - * @param mixed $handler function name or array with object/method names - * @return string previous exception handler - */ - public function setExceptionHandler($handler) { + * load a filter of specified type and name + * + * @param string $type filter type + * @param string $name filter name + * @return bool + */ + function loadFilter($type, $name) + { + $_plugin = "smarty_{$type}filter_{$name}"; + $_filter_name = $_plugin; + if ($this->loadPlugin($_plugin)) { + if (class_exists($_plugin, false)) { + $_plugin = array($_plugin, 'execute'); + } + if (is_callable($_plugin)) { + return $this->registered_filters[$type][$_filter_name] = $_plugin; + } + } + throw new Exception("{$type}filter \"{$name}\" not callable"); + return false; + } + + /** + * Sets the exception handler for Smarty. + * + * @param mixed $handler function name or array with object/method names + * @return string previous exception handler + */ + public function setExceptionHandler($handler) + { $this->exception_handler = $handler; return set_exception_handler($handler); } /** - * Loads cache resource. - * - * @return object of cache resource - */ - public function loadCacheResource($type = null) { - if (!isset($type)) { - $type = $this->caching_type; - } - // already loaded? - if (isset($this->cache_resource_objects[$type])) { - return $this->cache_resource_objects[$type]; - } - 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); + * trigger Smarty error + * + * @param string $error_msg + * @param integer $error_type + */ + public function trigger_error($error_msg, $error_type = E_USER_WARNING) + { + throw new Exception("Smarty error: $error_msg"); + } + + /** + * Return internal filter name + * + * @param callback $function_name + */ + public function _get_filter_name($function_name) + { + if (is_array($function_name)) { + $_class_name = (is_object($function_name[0]) ? + get_class($function_name[0]) : $function_name[0]); + return $_class_name . '_' . $function_name[1]; + } else { + return $function_name; } - 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); + } + + /** + * Adds directory of plugin files + * + * @param object $smarty + * @param string $ |array $ plugins folder + * @return + */ + function addPluginsDir($plugins_dir) + { + $this->plugins_dir = array_merge((array)$this->plugins_dir, (array)$plugins_dir); + $this->plugins_dir = array_unique($this->plugins_dir); + return; + } + + /** + * Returns a single or all global variables + * + * @param object $smarty + * @param string $varname variable name or null + * @return string variable value or or array of variables + */ + function getGlobal($varname = null) + { + if (isset($varname)) { + if (isset($this->global_tpl_vars[$varname])) { + return $this->global_tpl_vars[$varname]->value; + } else { + return ''; } - else { - throw new Exception("Unable to load cache resource '{$type}'"); + } else { + $_result = array(); + foreach ($this->global_tpl_vars AS $key => $var) { + $_result[$key] = $var->value; } + return $_result; } } /** - * trigger Smarty error - * - * @param string $error_msg - * @param integer $error_type - */ - public function trigger_error($error_msg, $error_type = E_USER_WARNING) { - throw new Exception("Smarty error: $error_msg"); + * return a reference to a registered object + * + * @param string $name object name + * @return object + */ + function getRegisteredObject($name) + { + if (!isset($this->registered_objects[$name])) + throw new Exception("'$name' is not a registered object"); + + if (!is_object($this->registered_objects[$name][0])) + throw new Exception("registered '$name' is not an object"); + + return $this->registered_objects[$name][0]; } /** - * Takes unknown class methods and lazy loads sysplugin files for them - * class name format: Smarty_Method_MethodName - * plugin filename format: method.methodname.php - * - * @param string $name unknown methode name - * @param array $args aurgument array - */ - public function __call($name, $args) { + * return name of debugging template + * + * @return string + */ + function getDebugTemplate() + { + return $this->debug_tpl; + } + + /** + * set the debug template + * + * @param string $tpl_name + * @return bool + */ + function setDebugTemplate($tpl_name) + { + return $this->debug_tpl = $tpl_name; + } + + /** + * lazy loads (valid) property objects + * + * @param string $name property name + */ + public function __get($name) + { + if (in_array($name, array('register', 'unregister', 'utility', 'cache'))) { + $class = "Smarty_Internal_" . ucfirst($name); + $this->$name = new $class($this); + return $this->$name; + } else if ($name == '_version') { + // Smarty 2 BC + $this->_version = self::SMARTY_VERSION; + return $this->_version; + } + return null; + } + + /** + * Takes unknown class methods and lazy loads sysplugin files for them + * class name format: Smarty_Method_MethodName + * plugin filename format: method.methodname.php + * + * @param string $name unknown methode name + * @param array $args aurgument array + */ + public function __call($name, $args) + { + static $camel_func; + if (!isset($camel_func)) + $camel_func = create_function('$c', 'return "_" . strtolower($c[1]);'); + // PHP4 call to constructor? + if (strtolower($name) == 'smarty') { + throw new Exception('Please use parent::__construct() to call parent constuctor'); + return false; + } + // see if this is a set/get for a property + $first3 = strtolower(substr($name, 0, 3)); + if (in_array($first3, array('set', 'get')) && substr($name, 3, 1) !== '_') { + // try to keep case correct for future PHP 6.0 case-sensitive class methods + // lcfirst() not available < PHP 5.3.0, so improvise + $property_name = strtolower(substr($name, 3, 1)) . substr($name, 4); + // convert camel case to underscored name + $property_name = preg_replace_callback('/([A-Z])/', $camel_func, $property_name); + if (!property_exists($this, $property_name)) { + throw new Exception("property '$property_name' does not exist."); + return false; + } + if ($first3 == 'get') + return $this->$property_name; + else + return $this->$property_name = $args[0]; + } + // Smarty Backward Compatible wrapper + if (!isset($this->wrapper)) { + $this->wrapper = new Smarty_Internal_Wrapper($this); + } + return $this->wrapper->convert($name, $args); + + /* $name = strtolower($name); if ($name == 'smarty') { throw new Exception('Please use parent::__construct() to call parent constuctor'); @@ -532,10 +765,12 @@ class Smarty extends Smarty_Internal_Data { require_once(SMARTY_SYSPLUGINS_DIR . $function_name . '.php'); } return call_user_func_array($function_name, array_merge(array($this), $args)); + */ } } -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/gosa-core/include/smarty/plugins/modifier.escape.php b/gosa-core/include/smarty/plugins/modifier.escape.php index 0e58d8b21..c35e67ae0 100644 --- a/gosa-core/include/smarty/plugins/modifier.escape.php +++ b/gosa-core/include/smarty/plugins/modifier.escape.php @@ -23,6 +23,21 @@ */ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = SMARTY_RESOURCE_CHAR_SET) { + if (!function_exists('mb_str_replace') && function_exists('mb_strlen')) { + // simulate the missing PHP mb_str_replace function + function mb_str_replace($needle, $replacement, $haystack) + { + $needle_len = mb_strlen($needle); + $replacement_len = mb_strlen($replacement); + $pos = mb_strpos($haystack, $needle, 0); + while ($pos !== false) { + $haystack = mb_substr($haystack, 0, $pos) . $replacement + . mb_substr($haystack, $pos + $needle_len); + $pos = mb_strpos($haystack, $needle, $pos + $replacement_len); + } + return $haystack; + } + } switch ($esc_type) { case 'html': return htmlspecialchars($string, ENT_QUOTES, $char_set); @@ -68,7 +83,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = SMARTY_ case 'mail': // safe way to display e-mail address on a web page - if ($smarty->has_mb) { + if (function_exists('mb_str_replace')) { return mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); } else { return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); @@ -91,21 +106,6 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = SMARTY_ default: return $string; } - if (!function_exists("mb_str_replace")) { - // simulate the missing PHP mb_str_replace function - function mb_str_replace($needle, $replacement, $haystack) - { - $needle_len = mb_strlen($needle); - $replacement_len = mb_strlen($replacement); - $pos = mb_strpos($haystack, $needle, 0); - while ($pos !== false) { - $haystack = mb_substr($haystack, 0, $pos) . $replacement - . mb_substr($haystack, $pos + $needle_len); - $pos = mb_strpos($haystack, $needle, $pos + $replacement_len); - } - return $haystack; - } - } } ?> diff --git a/gosa-core/include/smarty/plugins/modifier.truncate.php b/gosa-core/include/smarty/plugins/modifier.truncate.php index 943a8ab65..0ad5f10f8 100644 --- a/gosa-core/include/smarty/plugins/modifier.truncate.php +++ b/gosa-core/include/smarty/plugins/modifier.truncate.php @@ -34,7 +34,7 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', if (mb_strlen($string) > $length) { $length -= min($length, mb_strlen($etc)); if (!$break_words && !$middle) { - $string = mb_ereg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length + 1), 'p'); + $string = preg_replace('/\s+?(\S+)?$/u', '', mb_substr($string, 0, $length + 1)); } if (!$middle) { return mb_substr($string, 0, $length) . $etc; diff --git a/gosa-core/include/smarty/plugins/variablefilter.htmlspecialchars.php b/gosa-core/include/smarty/plugins/variablefilter.htmlspecialchars.php index 08a578337..5f11b7346 100644 --- a/gosa-core/include/smarty/plugins/variablefilter.htmlspecialchars.php +++ b/gosa-core/include/smarty/plugins/variablefilter.htmlspecialchars.php @@ -13,9 +13,9 @@ * @param object $ &$smarty Smarty object * @return string filtered output */ -function smarty_variablefilter_htmlspecialchars($source, &$smarty) +function smarty_variablefilter_htmlspecialchars($source, $smarty) { return htmlspecialchars($source, ENT_QUOTES); } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_cache.php b/gosa-core/include/smarty/sysplugins/smarty_internal_cache.php new file mode 100644 index 000000000..cb7ee96e9 --- /dev/null +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_cache.php @@ -0,0 +1,102 @@ + +* @author Uwe Tews +* @package Smarty +* @subpackage PluginsInternal +* @version 3-SVN$Rev: 3286 $ +*/ + +class Smarty_Internal_Cache { + + protected $smarty; + + function __construct($smarty) { + $this->smarty = $smarty; + } + + /** + * Loads cache resource. + * + * @return object of cache resource + */ + public function loadResource($type = null) { + if (!isset($type)) { + $type = $this->smarty->caching_type; + } + // already loaded? + if (isset($this->smarty->cache_resource_objects[$type])) { + return $this->smarty->cache_resource_objects[$type]; + } + if (in_array($type, $this->smarty->cache_resource_types)) { + $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); + return $this->smarty->cache_resource_objects[$type] = new $cache_resource_class($this->smarty); + } + else { + // try plugins dir + $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type); + if ($this->smarty->loadPlugin($cache_resource_class)) { + return $this->smarty->cache_resource_objects[$type] = new $cache_resource_class($this->smarty); + } + else { + throw new Exception("Unable to load cache resource '{$type}'"); + } + } + } + + /** + * Empty cache folder + * + * @param integer $exp_time expiration time + * @param string $type resource type + * @return integer number of cache files deleted + */ + function clearAll($exp_time = null, $type = null) + { + return $this->loadResource($type)->clearAll($exp_time); + } + + /** + * Empty cache for a specific template + * + * @param string $template_name template name + * @param string $cache_id cache id + * @param string $compile_id compile id + * @param integer $exp_time expiration time + * @param string $type resource type + * @return integer number of cache files deleted + */ + function clear($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null) + { + // load cache resource + $cacheResource = $this->loadResource($type); + + return $cacheResource->clear($template_name, $cache_id, $compile_id, $exp_time); + } + +} diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_cacheresource_file.php b/gosa-core/include/smarty/sysplugins/smarty_internal_cacheresource_file.php index c2614c3cf..57dcc00f6 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_cacheresource_file.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_cacheresource_file.php @@ -29,7 +29,7 @@ class Smarty_Internal_CacheResource_File { { $_source_file_path = str_replace(':', '.', $_template->getTemplateFilepath()); $_cache_id = isset($_template->cache_id) ? preg_replace('![^\w\|]+!', '_', $_template->cache_id) : null; - $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null; + $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null; $_filepath = $_template->templateUid; // if use_sub_dirs, break file into directories if ($this->smarty->use_sub_dirs) { @@ -130,6 +130,14 @@ class Smarty_Internal_CacheResource_File { $_cache_id_parts = explode('|', $_cache_id); $_cache_id_parts_count = count($_cache_id_parts); } + if (isset($resource_name)) { + $tpl = $this->smarty->createTemplate($resource_name); + if ($tpl->isExisting()) { + $_resourcename_parts = basename(str_replace('^','/',$tpl->getCachedFilepath())); + } else { + return 0; + } + } $_count = 0; $_cacheDirs = new RecursiveDirectoryIterator($_dir); $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST); @@ -146,17 +154,12 @@ class Smarty_Internal_CacheResource_File { $_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)) { + if ($_parts[$_parts_count-1] != $_resourcename_parts) { continue; } - for ($i = 0; $i < count($_resourcename_parts); $i++) { - if ($_filename_parts[$i + 1] != $_resourcename_parts[$i]) continue 2; - } - } + } // check compile id - if (isset($_compile_id) && $_parts[$_parts_count-2 - $_compile_id_offset] != $_compile_id) { + if (isset($_compile_id) && (!isset($_parts[$_parts_count-2 - $_compile_id_offset]) || $_parts[$_parts_count-2 - $_compile_id_offset] != $_compile_id)) { continue; } // check cache id @@ -173,7 +176,7 @@ class Smarty_Internal_CacheResource_File { // expired ? if (isset($exp_time) && time() - @filemtime($_file) < $exp_time) { continue; - } + } $_count += @unlink((string) $_file) ? 1 : 0; } } diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_block.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_block.php index 45bca2044..0ccce92e2 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_block.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_block.php @@ -1,29 +1,29 @@ compiler = $compiler; $this->required_attributes = array('name'); - $this->optional_attributes = array('assign','nocache'); + $this->optional_attributes = array('assign', 'nocache'); // check and get attributes $_attr = $this->_get_attributes($args); $save = array($_attr, $compiler->template->extracted_compiled_code, $compiler->template->extract_code, $this->compiler->nocache); @@ -42,16 +42,16 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase { } /** -* Smarty Internal Plugin Compile BlockClose Class -*/ + * Smarty Internal Plugin Compile BlockClose Class + */ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase { /** - * Compiles code for the {/block} tag - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @return string compiled code - */ + * Compiles code for the {/block} tag + * + * @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; @@ -90,8 +90,16 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase { } $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $_tpl->properties['file_dependency']); $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $_tpl->properties['function']); - $compiler->template->required_plugins['compiled'] = array_merge($compiler->template->required_plugins['compiled'], $_tpl->required_plugins['compiled']); - $compiler->template->required_plugins['cache'] = array_merge($compiler->template->required_plugins['cache'], $_tpl->required_plugins['cache']); + if ($_tpl->has_nocache_code) { + $compiler->template->has_nocache_code = true; + } + foreach($_tpl->required_plugins as $code => $tmp1) { + foreach($tmp1 as $name => $tmp) { + foreach($tmp as $type => $data) { + $compiler->template->required_plugins[$code][$name][$type] = $data; + } + } + } unset($_tpl); } else { $_output = $compiler->template->extracted_compiled_code; @@ -105,4 +113,4 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase { } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php index cf4a18704..ed6ab4f1f 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_extends.php @@ -1,25 +1,25 @@ compiler = $compiler; @@ -36,16 +36,29 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase { $_template = new $compiler->smarty->template_class($include_file, $this->smarty, $compiler->template); // save file dependency $compiler->template->properties['file_dependency'][sha1($_template->getTemplateFilepath())] = array($_template->getTemplateFilepath(), $_template->getTemplateTimestamp()); - $_old_source = $compiler->template->template_source; - if (preg_match_all("!({$this->_ldl}block(.+?){$this->_rdl})!", $_old_source, $s, PREG_OFFSET_CAPTURE) != - preg_match_all("!({$this->_ldl}/block(.*?){$this->_rdl})!", $_old_source, $c, PREG_OFFSET_CAPTURE)) { + $_content = $compiler->template->template_source; + if (preg_match_all("!({$this->_ldl}block(.+?){$this->_rdl})!", $_content, $s) != + preg_match_all("!({$this->_ldl}/block(.*?){$this->_rdl})!", $_content, $c)) { $this->compiler->trigger_template_error('unmatched {block} {/block} pairs'); } - $block_count = count($s[0]); - for ($i = 0; $i < $block_count; $i++) { - $block_content = str_replace($this->smarty->left_delimiter . '$smarty.parent' . $this->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%', - substr($_old_source, $s[0][$i][1] + strlen($s[0][$i][0]), $c[0][$i][1] - $s[0][$i][1] - strlen($s[0][$i][0]))); - $this->saveBlockData($block_content, $s[0][$i][0], $compiler->template); + preg_match_all("!{$this->_ldl}block(.+?){$this->_rdl}|{$this->_ldl}/block.*{$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE); + $_result_count = count($_result[0]); + $_start = 0; + while ($_start < $_result_count) { + $_end = 0; + $_level = 1; + while ($_level != 0) { + $_end++; + if (!strpos($_result[0][$_start + $_end][0], '/')) { + $_level++; + } else { + $_level--; + } + } + $_block_content = str_replace($this->smarty->left_delimiter . '$smarty.block.parent' . $this->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%', + substr($_content, $_result[0][$_start][1] + strlen($_result[0][$_start][0]), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + strlen($_result[0][$_start][0]))); + $this->saveBlockData($_block_content, $_result[0][$_start][0], $compiler->template); + $_start = $_start + $_end + 1; } $compiler->template->template_source = $_template->getTemplateSource(); $compiler->template->template_filepath = $_template->getTemplateFilepath(); @@ -59,6 +72,17 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase { $this->compiler->trigger_template_error("\"" . $block_tag . "\" missing name attribute"); } else { $_name = trim($_match[3], '\'"'); + // replace {$smarty.block.child} + if (strpos($block_content, $this->smarty->left_delimiter . '$smarty.block.child' . $this->smarty->right_delimiter) !== false) { + if (isset($this->smarty->block_data[$_name])) { + $block_content = str_replace($this->smarty->left_delimiter . '$smarty.block.child' . $this->smarty->right_delimiter, + $this->smarty->block_data[$_name]['source'], $block_content); + unset($this->smarty->block_data[$_name]); + } else { + $block_content = str_replace($this->smarty->left_delimiter . '$smarty.block.child' . $this->smarty->right_delimiter, + '', $block_content); + } + } if (isset($this->smarty->block_data[$_name])) { if (strpos($this->smarty->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) { $this->smarty->block_data[$_name]['source'] = @@ -83,4 +107,4 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase { } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php index 23fc27d68..56c586480 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_function.php @@ -68,25 +68,26 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase $plugins_string = ''; if (!empty($compiler->template->required_plugins['compiled'])) { $plugins_string = 'template->required_plugins['compiled'] as $plugin_name => $data) { - $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name; - $plugins_string .= "if (!is_callable('{$plugin}')) include '{$data['file']}';\n"; + foreach($compiler->template->required_plugins['compiled'] as $tmp) { + foreach($tmp as $data) { + $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$data['file']}';\n"; + } } $plugins_string .= '?>'; } if (!empty($compiler->template->required_plugins['cache'])) { $plugins_string .= "template->properties['nocache_hash']}%%*/template->required_plugins['cache'] as $plugin_name => $data) { - $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name; - $plugins_string .= "if (!is_callable(\'{$plugin}\')) include \'{$data['file']}\';\n"; + foreach($compiler->template->required_plugins['nocache'] as $tmp) { + foreach($tmp as $data) { + $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$data['file']}';\n"; + } } $plugins_string .= "?>/*/%%SmartyNocache:{$compiler->template->properties['nocache_hash']}%%*/';?>\n"; } $compiler->template->properties['function'][$_name]['compiled'] = $plugins_string . $compiler->template->extracted_compiled_code; $compiler->template->properties['function'][$_name]['nocache_hash'] = $compiler->template->properties['nocache_hash']; - $compiler->template->properties['function'][$_name]['has_nocache_code'] = $compiler->template->has_nocache_code; -// $compiler->template->properties['function'][$_name]['plugins'] = $compiler->template->required_plugins; - $this->compiler->smarty->template_functions[$_name] = $compiler->template->properties['function'][$_name]; + $compiler->template->properties['function'][$_name]['has_nocache_code'] = $compiler->template->has_nocache_code; + $this->compiler->smarty->template_functions[$_name] = $compiler->template->properties['function'][$_name]; // restore old compiler status $compiler->template->extracted_compiled_code = $saved_data[1]; $compiler->template->extract_code = $saved_data[2]; diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php index 030f3a2f0..0656b77b6 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php @@ -45,9 +45,9 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi $this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache; // compile code if (is_array($function)) { - $output = 'smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>'; + $output = "smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; call_user_func(array('{$function[0]}','{$function[1]}'),{$_params}, null, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl);while (\$_block_repeat) { ob_start();?>"; } else { - $output = 'smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>'; + $output = "smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; {$function}({$_params}, null, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl);while (\$_block_repeat) { ob_start();?>"; } } else { // must endblock be nocache? @@ -60,14 +60,13 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi $this->compiler->has_output = true; // compile code if (is_array($function)) { - var_dump('error'); - $output = 'smarty, $_block_repeat, $_smarty_tpl)); }?>'; + $output = "smarty, \$_block_repeat, \$_smarty_tpl); } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>"; } else { - $output = 'smarty, $_block_repeat, $_smarty_tpl); }?>'; + $output = "smarty, \$_block_repeat, \$_smarty_tpl); } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>"; } } - return $output; + return $output."\n"; } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php index 129b5d752..80cb1bfa1 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php @@ -42,12 +42,12 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co $_params = 'array(' . implode(",", $_paramsArray) . ')'; // compile code if (is_array($function)) { - $output = 'smarty,$_smarty_tpl));?>'; + $output = "smarty,\$_smarty_tpl);?>\n"; } else { - $output = 'smarty,$_smarty_tpl);?>'; + $output = "smarty,\$_smarty_tpl);?>\n"; } return $output; } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php index 03c2d3401..69d105011 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php @@ -43,16 +43,17 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter $this->_open_tag($tag . '->' . $methode, $_params); // compile code - $output = 'smarty->registered_objects[\'' . $tag . '\'][0]->' . $methode . '(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>'; + $output = "smarty->_tag_stack[] = array('{$tag}->{$methode}', {$_params}); \$_block_repeat=true; \$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$methode}({$_params}, null, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl);while (\$_block_repeat) { ob_start();?>"; } else { + $base_tag = substr($tag, 0, -5); // closing tag of block plugin - $_params = $this->_close_tag(substr($tag, 0, -5) . '->' . $methode); + $_params = $this->_close_tag($base_tag . '->' . $methode); // This tag does create output $this->compiler->has_output = true; // compile code - $output = 'smarty->registered_objects[\'' . substr($tag, 0, -5) . '\'][0]->' . $methode . '(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl); }?>'; + $output = "smarty->registered_objects['{$base_tag}'][0]->{$methode}({$_params}, \$_block_content, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl); } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>"; } - return $output; + return $output."\n"; } } diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_function.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_function.php index 573f6040e..8e8ff9448 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_function.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_object_function.php @@ -42,10 +42,10 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co } } $_params = 'array(' . implode(",", $_paramsArray) . ')'; - $output = "smarty->registered_objects['{$tag}'][0]->{$methode}({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl);?>"; + $output = "smarty->registered_objects['{$tag}'][0]->{$methode}({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl);?>\n"; } else { $_params = implode(",", $_attr); - $output = "smarty->registered_objects['{$tag}'][0]->{$methode}({$_params});?>"; + $output = "smarty->registered_objects['{$tag}'][0]->{$methode}({$_params});?>\n"; } return $output; } diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php index 218ec0e6b..300764d9c 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_block.php @@ -46,11 +46,11 @@ class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_C $function = $compiler->smarty->registered_plugins['block'][$tag][0]; // compile code if (!is_array($function)) { - $output = 'smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>'; + $output = "smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_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 = 'smarty->registered_plugins[\'block\'][\'' . $tag . '\'][0],array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>'; + $output = "smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; call_user_func(\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0],{$_params}, null, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl);while (\$_block_repeat) { ob_start();?>"; } else { - $output = 'smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>'; + $output = "smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; call_user_func(array('{$function[0]}','{$function[1]}'),{$_params}, null, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl);while (\$_block_repeat) { ob_start();?>"; } } else { // must endblock be nocache? @@ -65,15 +65,15 @@ class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_C $function = $compiler->smarty->registered_plugins['block'][$base_tag][0]; // compile code if (!is_array($function)) { - $output = 'smarty, $_block_repeat, $_smarty_tpl); }?>'; + $output = "smarty, \$_block_repeat, \$_smarty_tpl); } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>"; } else if (is_object($function[0])) { - $output = 'smarty->registered_plugins[\'block\'][\'' . $base_tag . '\'][0],array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>'; + $output = "smarty->registered_plugins['block']['{$base_tag}'][0],{$_params}, \$_block_content, \$_smarty_tpl->smarty, \$_block_repeat, \$_smarty_tpl); } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>"; } else { - $output = 'smarty, $_block_repeat, $_smarty_tpl)); }?>'; + $output = "smarty, \$_block_repeat, \$_smarty_tpl); } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>"; } } - return $output; + return $output."\n"; } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_function.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_function.php index e38ee4b8b..e7d2cd6b6 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_function.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_private_registered_function.php @@ -1,25 +1,25 @@ compiler = $compiler; @@ -43,9 +43,17 @@ class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Interna } $_params = 'array(' . implode(",", $_paramsArray) . ')'; // compile code - $output = 'smarty->registered_plugins[\'function\'][\'' . $tag . '\'][0],array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl));?>'; + $function = $compiler->smarty->registered_plugins['function'][$tag][0]; + // compile code + if (!is_array($function)) { + $output = "smarty,\$_smarty_tpl);?>\n"; + } else if (is_object($function[0])) { + $output = "smarty->registered_plugins['function']['{$tag}'][0],{$_params},\$_smarty_tpl->smarty,\$_smarty_tpl);?>\n"; + } else { + $output = "smarty,\$_smarty_tpl);?>\n"; + } return $output; } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_data.php b/gosa-core/include/smarty/sysplugins/smarty_internal_data.php index 61b9b52bd..63f98a1d3 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_data.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_data.php @@ -46,7 +46,7 @@ class Smarty_Internal_Data { * @param mixed $value the value to assign * @param boolean $nocache if true any output of this variable will be not cached */ - public function assign_global($varname, $value = null, $nocache = false) + public function assignGlobal($varname, $value = null, $nocache = false) { if ($varname != '') { $this->smarty->global_tpl_vars[$varname] = new Smarty_variable($value, $nocache); @@ -60,7 +60,7 @@ class Smarty_Internal_Data { * @param boolean $nocache if true any output of this variable will be not cached * @param boolean $scope the scope the variable will have (local,parent or root) */ - public function assign_by_ref($tpl_var, &$value, $nocache = false, $scope = SMARTY_LOCAL_SCOPE) + public function assignByRef($tpl_var, &$value, $nocache = false, $scope = SMARTY_LOCAL_SCOPE) { if ($tpl_var != '') { $this->tpl_vars[$tpl_var] = new Smarty_variable(null, $nocache, $scope); @@ -139,7 +139,7 @@ class Smarty_Internal_Data { * @param mixed $ &$value the referenced value to append * @param boolean $merge flag if array elements shall be merged */ - public function append_by_ref($tpl_var, &$value, $merge = false) + public function appendByRef($tpl_var, &$value, $merge = false) { if ($tpl_var != '' && isset($value)) { if (!isset($this->tpl_vars[$tpl_var])) { @@ -158,13 +158,51 @@ class Smarty_Internal_Data { } } - + /** + * Returns a single or all template variables + * + * @param string $varname variable name or null + * @return string variable value or or array of variables + */ + function getTemplateVars($varname = null, $_ptr = null, $search_parents = true) + { + if (isset($varname)) { + $_var = $this->getVariable($varname, $_ptr, $search_parents); + if (is_object($_var)) { + return $_var->value; + } else { + return null; + } + } else { + $_result = array(); + if ($_ptr === null) { + $_ptr = $this; + } while ($_ptr !== null) { + foreach ($_ptr->tpl_vars AS $key => $var) { + $_result[$key] = $var->value; + } + // not found, try at parent + if ($search_parents) { + $_ptr = $_ptr->parent; + } else { + $_ptr = null; + } + } + if ($search_parents) { + foreach ($this->global_tpl_vars AS $key => $var) { + $_result[$key] = $var->value; + } + } + return $_result; + } + } + /** * clear the given assigned template variable. * * @param string $ |array $tpl_var the template variable(s) to clear */ - public function clear_assign($tpl_var) + public function clearAssign($tpl_var) { if (is_array($tpl_var)) { foreach ($tpl_var as $curr_var) { @@ -178,7 +216,7 @@ class Smarty_Internal_Data { /** * clear all the assigned template variables. */ - public function clear_all_assign() + public function clearAllAssign() { $this->tpl_vars = array(); } @@ -189,7 +227,7 @@ class Smarty_Internal_Data { * @param string $config_file filename * @param mixed $sections array of section names, single section or null */ - public function config_load($config_file, $sections = null) + public function configLoad($config_file, $sections = null) { // load Config class $config = new Smarty_Internal_Config($config_file, $this->smarty); @@ -278,49 +316,38 @@ class Smarty_Internal_Data { } /** - * creates a template object + * Returns a single or all config variables * - * @param string $template the resource handle of the template file - * @param object $parent next higher level of Smarty variables - * @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 object template object + * @param string $varname variable name or null + * @return string variable value or or array of variables */ - public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null) + function getConfigVars($varname = null) { - if (is_object($cache_id) || is_array($cache_id)) { - $parent = $cache_id; - $cache_id = null; - } - if (is_array($parent)) { - $data = $parent; - $parent = null; - } else { - $data = null; - } - if (!is_object($template)) { - // we got a template resource - // 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]; + if (isset($varname)) { + if (isset($this->config_vars[$varname])) { + return $this->config_vars[$varname]; } else { - // create new template object - $tpl = new $this->template_class($template, $this->smarty, $parent, $cache_id, $compile_id); + return ''; } } else { - // just return a copy of template class - $tpl = $template; + return $this->config_vars; } - // fill data if present - if (is_array($data)) { - // set up variable values - foreach ($data as $_key => $_val) { - $tpl->tpl_vars[$_key] = new Smarty_variable($_val); - } + } + + /** + * Deassigns a single or all config variables + * + * @param string $varname variable name or null + */ + function clearConfig($varname = null) + { + if (isset($varname)) { + unset($this->config_vars[$varname]); + return; + } else { + $this->config_vars = array(); + return; } - return $tpl; } /** @@ -349,12 +376,15 @@ class Smarty_Data extends Smarty_Internal_Data { // back pointer to parent object public $parent = null; // config vars - public $config_vars = array(); + public $config_vars = array(); + // Smarty object + public $smarty = null; /** * create Smarty data object */ - public function __construct ($_parent = null) + public function __construct ($_parent = null, $smarty = null) { + $this->smarty = $smarty; if (is_object($_parent)) { // when object set up back pointer $this->parent = $_parent; @@ -363,7 +393,7 @@ class Smarty_Data extends Smarty_Internal_Data { foreach ($_parent as $_key => $_val) { $this->tpl_vars[$_key] = new Smarty_variable($_val); } - } else { + } elseif ($_parent != null) { throw new Exception("Wrong type for template variables"); } } diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_filter_handler.php b/gosa-core/include/smarty/sysplugins/smarty_internal_filter_handler.php index 1d81636e6..a8a43d48d 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_filter_handler.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_filter_handler.php @@ -1,31 +1,31 @@ autoload_filters[$type] as $name) { $plugin_name = "Smarty_{$type}filter_{$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, $smarty)); - } elseif (function_exists($plugin_name)) { + if (function_exists($plugin_name)) { // use loaded Smarty2 style plugin - $output = call_user_func_array($plugin_name, array($output, $smarty)); + $output = $plugin_name($output, $smarty); + } elseif (class_exists($plugin_name, false)) { + // loaded class of filter plugin + $output = call_user_func(array($plugin_name, 'execute'), $output, $smarty); } } else { // nothing found, throw exception @@ -52,7 +51,11 @@ class Smarty_Internal_Filter_Handler { // loop over registerd filters of specified type 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)); + if (is_array($smarty->registered_filters[$type][$key])) { + $output = call_user_func($smarty->registered_filters[$type][$key], $output, $smarty); + } else { + $output = $smarty->registered_filters[$type][$key]($output, $smarty); + } } } } @@ -61,4 +64,4 @@ class Smarty_Internal_Filter_Handler { } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php b/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php index cdbd3fae9..c9b2948dc 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_function_call_handler.php @@ -3,7 +3,7 @@ * Smarty Internal Plugin Function Call Handler * * @package Smarty -* @subpackage Security +* @subpackage PluginsInternal * @author Uwe Tews */ /** diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_parsetree.php b/gosa-core/include/smarty/sysplugins/smarty_internal_parsetree.php new file mode 100644 index 000000000..bba83dbad --- /dev/null +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_parsetree.php @@ -0,0 +1,121 @@ +parser = $parser; + $this->data = $data; + $this->saved_block_nesting = $parser->block_nesting_level; + } + + public function to_smarty_php() + { + return $this->data; + } + + public function assign_to_var() + { + $var = sprintf('$_tmp%d', ++$this->parser->prefix_number); + $this->parser->compiler->prefix_code[] = sprintf('%s', + $this->data, $var); + return $var; + } +} + +/* Code fragment inside a tag. */ +class _smarty_code extends _smarty_parsetree { + public $parser; + public $data; + function __construct($parser, $data) + { + $this->parser = $parser; + $this->data = $data; + } + + public function to_smarty_php() + { + return sprintf("(%s)", $this->data); + } +} + +/* Double quoted string inside a tag. */ +class _smarty_doublequoted extends _smarty_parsetree { + public $parser; + public $subtrees = Array(); + function __construct($parser, _smarty_parsetree $subtree) + { + $this->parser = $parser; + $this->subtrees[] = $subtree; + if ($subtree instanceof _smarty_tag) { + $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack); + } + } + + function append_subtree(_smarty_parsetree $subtree) + { + $last_subtree = count($this->subtrees)-1; + if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof _smarty_tag && $this->subtrees[$last_subtree]->saved_block_nesting < $this->parser->block_nesting_level) { + if ($subtree instanceof _smarty_code) { + $this->subtrees[$last_subtree]->data .= 'data . ';?>'; + } else { + $this->subtrees[$last_subtree]->data .= $subtree->data; + } + } else { + $this->subtrees[] = $subtree; + } + if ($subtree instanceof _smarty_tag) { + $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack); + } + } + + public function to_smarty_php() + { + $code = ''; + foreach ($this->subtrees as $subtree) { + if ($code !== "") { + $code .= "."; + } + if ($subtree instanceof _smarty_tag) { + $more_php = $subtree->assign_to_var(); + } else { + $more_php = $subtree->to_smarty_php(); + } + + $code .= $more_php; + + if (!$subtree instanceof _smarty_dq_content) { + $this->parser->compiler->has_variable_string = true; + } + } + +// $code = sprintf("(%s)", $code); + return $code; + } +} + +/* Raw chars as part of a double quoted string. */ +class _smarty_dq_content extends _smarty_parsetree { + public $data; + function __construct($parser, $data) + { + $this->parser = $parser; + $this->data = $data; + } + + public function to_smarty_php() + { + return '"' . $this->data . '"'; + } +} + + +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_register.php b/gosa-core/include/smarty/sysplugins/smarty_internal_register.php new file mode 100644 index 000000000..67df19181 --- /dev/null +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_register.php @@ -0,0 +1,247 @@ + +* @author Uwe Tews +* @package Smarty +* @subpackage PluginsInternal +* @version 3-SVN$Rev: 3286 $ +*/ + +class Smarty_Internal_Register { + + protected $smarty; + + function __construct($smarty) { + $this->smarty = $smarty; + } + + /** + * Registers block function to be used in templates + * + * @param string $block_tag name of template block + * @param string $block_impl PHP function to register + * @param boolean $cacheable if true (default) this fuction is cachable + * @param array $cache_attr caching attributes if any + */ + function block($block_tag, $block_impl, $cacheable = true, $cache_attr = array()) + { + if (isset($this->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 { + $this->smarty->registered_plugins['block'][$block_tag] = + array($block_impl, $cacheable, $cache_attr); + } + } + + /** + * Registers compiler function + * + * @param string $compiler_tag of template function + * @param string $compiler_impl name of PHP function to register + * @param boolean $cacheable if true (default) this fuction is cachable + */ + function compilerFunction($compiler_tag, $compiler_impl, $cacheable = true) + { + if (isset($this->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 { + $this->smarty->registered_plugins['compiler'][$compiler_tag] = + array($compiler_impl, $cacheable); + } + } + + /** + * Registers custom function to be used in templates + * + * @param string $function_tag the name of the template function + * @param string $function_impl the name of the PHP function to register + * @param boolean $cacheable if true (default) this fuction is cachable + * @param array $cache_attr caching attributes if any + */ + function templateFunction($function_tag, $function_impl, $cacheable = true, $cache_attr = array()) + { + if (isset($this->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 { + $this->smarty->registered_plugins['function'][$function_tag] = + array($function_impl, $cacheable, $cache_attr); + } + } + + /** + * Registers modifier to be used in templates + * + * @param string $modifier_name name of template modifier + * @param string $modifier_impl name of PHP function to register + */ + function modifier($modifier_name, $modifier_impl) + { + if (isset($this->smarty->registered_plugins['modifier'][$modifier_name])) { + throw new Exception("Plugin \"{$modifier}\" already registered"); + } elseif (!is_callable($modifier_impl)) { + throw new Exception("Plugin \"{$modifier}\" not callable"); + } else { + $this->smarty->registered_plugins['modifier'][$modifier_name] = + array($modifier_impl); + } + } + + /** + * Registers object to be used in templates + * + * @param string $object name of template object + * @param object $ &$object_impl the referenced PHP object to register + * @param mixed null | array $allowed list of allowed methods (empty = all) + * @param boolean $smarty_args smarty argument format, else traditional + * @param mixed null | array $block_functs list of methods that are block format + */ + function templateObject($object_name, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array()) + { + // test if allowed methodes callable + if (!empty($allowed)) { + foreach ((array)$allowed as $method) { + if (!is_callable(array($object_impl, $method))) { + throw new Exception("Undefined method '$method' in registered object"); + } + } + } + // test if block methodes callable + if (!empty($block_methods)) { + foreach ((array)$block_methods as $method) { + if (!is_callable(array($object_impl, $method))) { + throw new Exception("Undefined method '$method' in registered object"); + } + } + } + // register the object + $this->smarty->registered_objects[$object_name] = + array($object_impl, (array)$allowed, (boolean)$smarty_args, (array)$block_methods); + } + + /** + * Registers an output filter function to apply + * to a template output + * + * @param callback $function_name + */ + function outputFilter($function_name) + { + $this->smarty->registered_filters['output'][$this->smarty->_get_filter_name($function_name)] = $function_name; + } + + /** + * Registers a postfilter function to apply + * to a compiled template after compilation + * + * @param callback $function_name + */ + function postFilter($function_name) + { + $this->smarty->registered_filters['post'][$this->smarty->_get_filter_name($function_name)] = $function_name; + } + + /** + * Registers a prefilter function to apply + * to a template before compiling + * + * @param callback $function_name + */ + function preFilter($function_name) + { + $this->smarty->registered_filters['pre'][$this->smarty->_get_filter_name($function_name)] = $function_name; + } + + /** + * Registers a resource to fetch a template + * + * @param string $resource_type name of resource type + * @param array $function_names array of functions to handle resource + */ + function resource($resource_type, $function_names) + { + if (count($function_names) == 4) { + $this->smarty->_plugins['resource'][$resource_type] = + array($function_names, false); + } elseif (count($function_names) == 5) { + $this->smarty->_plugins['resource'][$resource_type] = + array(array(array(&$function_names[0], $function_names[1]), + array(&$function_names[0], $function_names[2]), + array(&$function_names[0], $function_names[3]), + array(&$function_names[0], $function_names[4])), + false); + } else { + throw new Exception("malformed function-list for '$resource_type' in register_resource"); + } + } + + /** + * Registers an output filter function which + * runs over any variable output + * + * @param callback $function_name + */ + function variableFilter($function_name) + { + $this->smarty->registered_filters['variable'][$this->smarty->_get_filter_name($function_name)] = $function_name; + } + + /** + * Registers a default plugin handler + * + * @param $function_name mixed string | array $plugin class/methode name + */ + function defaultPluginHandler($function_name) + { + if (is_callable($function_name)) { + $this->smarty->default_plugin_handler_func = $function_name; + } else { + throw new Exception("Default plugin handler '$function_name' not callable"); + } + } + + /** + * Registers a default template handler + * + * @param $function_name mixed string | array class/method name + */ + function defaultTemplateHandler($function_name) + { + if (is_callable($function_name)) { + $this->smarty->default_template_handler_func = $function_name; + } else { + throw new Exception("Default template handler '$function_name' not callable"); + } + } + +} diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php b/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php index b796de775..64526346a 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_resource_extends.php @@ -1,17 +1,17 @@ getTemplateFilepath() === false) { @@ -43,11 +43,11 @@ class Smarty_Internal_Resource_Extends { } } /** - * Get filepath to template source - * - * @param object $_template template object - * @return string filepath to template source file - */ + * Get filepath to template source + * + * @param object $_template template object + * @return string filepath to template source file + */ public function getTemplateFilepath($_template) { $sha1String = ''; @@ -67,22 +67,22 @@ class Smarty_Internal_Resource_Extends { } /** - * Get timestamp to template source - * - * @param object $_template template object - * @return integer timestamp of template source file - */ + * Get timestamp to template source + * + * @param object $_template template object + * @return integer timestamp of template source file + */ public function getTemplateTimestamp($_template) { return filemtime($_template->getTemplateFilepath()); } /** - * Read template source from file - * - * @param object $_template template object - * @return string content of template source file - */ + * Read template source from file + * + * @param object $_template template object + * @return string content of template source file + */ public function getTemplateSource($_template) { $this->template = $_template; @@ -98,15 +98,28 @@ class Smarty_Internal_Resource_Extends { $_template->template_filepath = $_filepath; $_content = file_get_contents($_filepath); if ($_filepath != $_files[count($_files)-1]) { - if (preg_match_all("!({$this->_ldl}block(.+?){$this->_rdl})!", $_content, $_open, PREG_OFFSET_CAPTURE) != - preg_match_all("!({$this->_ldl}/block(.*?){$this->_rdl})!", $_content, $_close, PREG_OFFSET_CAPTURE)) { - $this->smarty->trigger_error('unmatched {block} {/block} pairs'); + if (preg_match_all("!({$this->_ldl}block(.+?){$this->_rdl})!", $_content, $_open) != + preg_match_all("!({$this->_ldl}/block(.*?){$this->_rdl})!", $_content, $_close)) { + $this->smarty->trigger_error("unmatched {block} {/block} pairs in file '$_filepath'"); } - $_block_count = count($_open[0]); - for ($_i = 0; $_i < $_block_count; $_i++) { - $_block_content = str_replace($this->smarty->left_delimiter . '$smarty.parent' . $this->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%', - substr($_content, $_open[0][$_i][1] + strlen($_open[0][$_i][0]), $_close[0][$_i][1] - $_open[0][$_i][1] - strlen($_open[0][$_i][0]))); - $this->saveBlockData($_block_content, $_open[0][$_i][0], $_filepath); + preg_match_all("!{$this->_ldl}block(.+?){$this->_rdl}|{$this->_ldl}/block.*{$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE); + $_result_count = count($_result[0]); + $_start = 0; + while ($_start < $_result_count) { + $_end = 0; + $_level = 1; + while ($_level != 0) { + $_end++; + if (!strpos($_result[0][$_start + $_end][0], '/')) { + $_level++; + } else { + $_level--; + } + } + $_block_content = str_replace($this->smarty->left_delimiter . '$smarty.block.parent' . $this->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%', + substr($_content, $_result[0][$_start][1] + strlen($_result[0][$_start][0]), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + strlen($_result[0][$_start][0]))); + $this->saveBlockData($_block_content, $_result[0][$_start][0], $_filepath); + $_start = $_start + $_end + 1; } } else { $_template->template_source = $_content; @@ -118,9 +131,20 @@ class Smarty_Internal_Resource_Extends { protected function saveBlockData($block_content, $block_tag, $_filepath) { if (0 == preg_match("!(.?)(name=)(.*?)(?=(\s|{$this->_rdl}))!", $block_tag, $_match)) { - $this->smarty->trigger_error("'{$block_tag}' missing name attribute"); + $this->smarty->trigger_error("'{$block_tag}' missing name attribute in file '$_filepath'"); } else { $_name = trim($_match[3], '\'"'); + // replace {$smarty.block.child} + if (strpos($block_content, $this->smarty->left_delimiter . '$smarty.block.child' . $this->smarty->right_delimiter) !== false) { + if (isset($this->smarty->block_data[$_name])) { + $block_content = str_replace($this->smarty->left_delimiter . '$smarty.block.child' . $this->smarty->right_delimiter, + $this->smarty->block_data[$_name]['source'], $block_content); + unset($this->smarty->block_data[$_name]); + } else { + $block_content = str_replace($this->smarty->left_delimiter . '$smarty.block.child' . $this->smarty->right_delimiter, + '', $block_content); + } + } if (isset($this->smarty->block_data[$_name])) { if (strpos($this->smarty->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) { $this->smarty->block_data[$_name]['source'] = @@ -145,11 +169,11 @@ class Smarty_Internal_Resource_Extends { } /** - * Get filepath to compiled template - * - * @param object $_template template object - * @return string return path to compiled template - */ + * Get filepath to compiled template + * + * @param object $_template template object + * @return string return path to compiled template + */ public function getCompiledFilepath($_template) { $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null; @@ -183,4 +207,4 @@ class Smarty_Internal_Resource_Extends { } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_resource_registered.php b/gosa-core/include/smarty/sysplugins/smarty_internal_resource_registered.php index 36a09cdc0..92347a178 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_resource_registered.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_resource_registered.php @@ -33,7 +33,7 @@ class Smarty_Internal_Resource_Registered { */ public function isExisting($_template) { - if (is_integer($this->getTemplateTimestamp($_template))) { + if (is_integer($_template->getTemplateTimestamp())) { return true; } else { return false; diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_security_handler.php b/gosa-core/include/smarty/sysplugins/smarty_internal_security_handler.php index f433e9e9d..1833d4f87 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_security_handler.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_security_handler.php @@ -26,11 +26,27 @@ class Smarty_Internal_Security_Handler { if (empty($this->smarty->security_policy->php_functions) || in_array($function_name, $this->smarty->security_policy->php_functions)) { return true; } else { - $compiler->trigger_template_error ("PHP function \"" . $function_name . "\" not allowed by security setting"); + $compiler->trigger_template_error ("PHP function '{$function_name}' not allowed by security setting"); return false; } } + /** + * Check if static class is trusted. + * + * @param string $class_name + * @param object $compiler compiler object + * @return boolean true if class is trusted + */ + function isTrustedStaticClass($class_name, $compiler) + { + if (empty($this->smarty->security_policy->static_classes) || in_array($class_name, $this->smarty->security_policy->static_classes)) { + return true; + } else { + $compiler->trigger_template_error ("access to static class '{$class_name}' not allowed by security setting"); + return false; + } + } /** * Check if modifier is trusted. * @@ -43,7 +59,7 @@ class Smarty_Internal_Security_Handler { if (empty($this->smarty->security_policy->modifiers) || in_array($modifier_name, $this->smarty->security_policy->modifiers)) { return true; } else { - $compiler->trigger_template_error ("modifier \"" . $modifier_name . "\" not allowed by security setting"); + $compiler->trigger_template_error ("modifier '{$modifier_name}' not allowed by security setting"); return false; } } @@ -59,7 +75,7 @@ class Smarty_Internal_Security_Handler { if (empty($this->smarty->security_policy->streams) || in_array($stream_name, $this->smarty->security_policy->streams)) { return true; } else { - throw new Exception ("stream \"" . $stream_name . "\" not allowed by security setting"); + throw new Exception ("stream '{$stream_name}' not allowed by security setting"); return false; } } @@ -96,7 +112,7 @@ class Smarty_Internal_Security_Handler { } } - throw new Exception ("directory \"" . $_rp . "\" not allowed by security setting"); + throw new Exception ("directory '{$_rp}' not allowed by security setting"); return false; } /** @@ -122,9 +138,9 @@ class Smarty_Internal_Security_Handler { } } - throw new Exception ("directory \"" . $_rp . "\" not allowed by security setting"); + throw new Exception ("directory '{$_rp}' not allowed by security setting"); return false; } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php b/gosa-core/include/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php index 2246f035c..a6b7e7c3b 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php @@ -9,6 +9,7 @@ * @subpackage Compiler * @author Uwe Tews */ +require_once("smarty_internal_parsetree.php"); /** * Class SmartyTemplateCompiler */ @@ -70,4 +71,4 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_template.php b/gosa-core/include/smarty/sysplugins/smarty_internal_template.php index fab9d0847..60bb8a982 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_template.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_template.php @@ -32,7 +32,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { public $resource_name = null; public $resource_object = null; private $isExisting = null; - public $templateUid = ''; + public $templateUid = ''; // Template source public $template_filepath = null; public $template_source = null; @@ -68,7 +68,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { // storage for block data public $block_data = array(); // required plugins - public $required_plugins = array('compiled' => array(), 'cache' => array()); + public $required_plugins = array('compiled' => array(), 'nocache' => array()); /** * Create template data object @@ -104,7 +104,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { } // load cache resource if (!$this->resource_object->isEvaluated && ($this->caching == SMARTY_CACHING_LIFETIME_CURRENT || $this->caching == SMARTY_CACHING_LIFETIME_SAVED)) { - $this->cache_resource_object = $this->smarty->loadCacheResource(); + $this->cache_resource_object = $this->smarty->cache->loadResource(); } } @@ -260,7 +260,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { // compiling succeded if (!$this->resource_object->isEvaluated) { // write compiled template - Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->compiled_template, $this->smarty); + Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->compiled_template, $this->smarty); } } else { // error compiling template @@ -336,9 +336,12 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { { if ($this->isCached === null) { $this->isCached = false; - if (($this->caching == SMARTY_CACHING_LIFETIME_CURRENT || $this->caching == SMARTY_CACHING_LIFETIME_SAVED) && !$this->resource_object->isEvaluated && !$this->force_compile && !$this->force_cache) { + if (($this->caching == SMARTY_CACHING_LIFETIME_CURRENT || $this->caching == SMARTY_CACHING_LIFETIME_SAVED) && !$this->resource_object->isEvaluated) { + if (!isset($this->cache_resource_object)) { + $this->cache_resource_object = $this->smarty->loadCacheResource(); + } $cachedTimestamp = $this->getCachedTimestamp(); - if ($cachedTimestamp === false) { + if ($cachedTimestamp === false || $this->force_compile || $this->force_cache) { return $this->isCached; } if ($this->caching === SMARTY_CACHING_LIFETIME_SAVED || ($this->caching == SMARTY_CACHING_LIFETIME_CURRENT && (time() <= ($cachedTimestamp + $this->cache_lifetime) || $this->cache_lifetime < 0))) { @@ -448,8 +451,13 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { } if ($this->parent instanceof Smarty_Template or $this->parent instanceof Smarty_Internal_Template) { $this->parent->properties['file_dependency'] = array_merge($this->parent->properties['file_dependency'], $this->properties['file_dependency']); - $this->parent->required_plugins['compiled'] = array_merge($this->parent->required_plugins['compiled'], $this->required_plugins['compiled']); - $this->parent->required_plugins['cache'] = array_merge($this->parent->required_plugins['cache'], $this->required_plugins['cache']); + foreach($this->required_plugins as $code => $tmp1) { + foreach($tmp1 as $name => $tmp) { + foreach($tmp as $type => $data) { + $this->parent->required_plugins[$code][$name][$type] = $data; + } + } + } } if ($this->smarty->debugging) { Smarty_Internal_Debug::end_render($this); @@ -481,7 +489,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { eval("?>" . $output); $this->rendered_content = ob_get_clean(); // write cache file content - $this->writeCachedContent($output); + $this->writeCachedContent($output); if ($this->smarty->debugging) { Smarty_Internal_Debug::end_cache($this); } @@ -643,7 +651,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { * @param string $resource_type return resource type * @param string $resource_name return resource name */ - private function getResourceTypeName ($template_resource, &$resource_type, &$resource_name) + protected function getResourceTypeName ($template_resource, &$resource_type, &$resource_name) { if (strpos($template_resource, ':') === false) { // no resource given, use default @@ -657,7 +665,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { $resource_type = 'file'; $resource_name = $template_resource; } else { - $resource_type = strtolower($resource_type); + $resource_type = $resource_type; } } } @@ -668,7 +676,7 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { * @param string $resource_type template resource type * @return object resource handler object */ - private function loadTemplateResourceHandler ($resource_type) + protected function loadTemplateResourceHandler ($resource_type) { // try registered resource if (isset($this->smarty->_plugins['resource'][$resource_type])) { @@ -719,18 +727,20 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { if (!$cache) { if (!empty($this->required_plugins['compiled'])) { $plugins_string = 'required_plugins['compiled'] as $plugin_name => $data) { - $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name; - $plugins_string .= "if (!is_callable('{$plugin}')) include '{$data['file']}';\n"; + foreach($this->required_plugins['compiled'] as $tmp) { + foreach($tmp as $data) { + $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$data['file']}';\n"; + } } $plugins_string .= '?>'; } - if (!empty($this->required_plugins['cache'])) { + if (!empty($this->required_plugins['nocache'])) { $this->has_nocache_code = true; $plugins_string .= "properties['nocache_hash']}%%*/required_plugins['cache'] as $plugin_name => $data) { - $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name; - $plugins_string .= "if (!is_callable(\'{$plugin}\')) include \'{$data['file']}\';\n"; + foreach($this->required_plugins['nocache'] as $tmp) { + foreach($tmp as $data) { + $plugins_string .= "if (!is_callable(\'{$data['function']}\')) include \'{$data['file']}\';\n"; + } } $plugins_string .= "?>/*/%%SmartyNocache:{$this->properties['nocache_hash']}%%*/';?>\n"; } @@ -792,13 +802,6 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { { return $this->smarty->fetch($this); } - /** - * wrapper for is_cached - */ - public function is_cached () - { - return $this->iscached($this); - } } /** @@ -807,4 +810,4 @@ class Smarty_Internal_Template extends Smarty_Internal_Data { class Smarty_Template extends Smarty_Internal_Template { } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php b/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php index 68e3efd99..0b008903f 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_templatecompilerbase.php @@ -1,44 +1,42 @@ nocache_hash = str_replace('.', '-', uniqid(rand(), true)); } // abstract function doCompile($_content); /** - * Methode to compile a Smarty template - * - * @param $template template object to compile - * @return bool true if compiling succeeded, false if it failed - */ + * Methode to compile a Smarty template + * + * @param $template template object to compile + * @return bool true if compiling succeeded, false if it failed + */ public function compileTemplate($template) { if (empty($template->properties['nocache_hash'])) { @@ -104,15 +102,15 @@ class Smarty_Internal_TemplateCompilerBase { } /** - * Compile Tag - * - * This is a call back from the lexer/parser - * It executes the required compile plugin for the Smarty tag - * - * @param string $tag tag name - * @param array $args array with tag attributes - * @return string compiled code - */ + * Compile Tag + * + * This is a call back from the lexer/parser + * It executes the required compile plugin for the Smarty tag + * + * @param string $tag tag name + * @param array $args array with tag attributes + * @return string compiled code + */ public function compileTag($tag, $args) { // $args contains the attributes parsed and compiled by the lexer/parser @@ -177,14 +175,16 @@ class Smarty_Internal_TemplateCompilerBase { 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"); + return $plugin($args, $this->smarty); + } + if (class_exists($plugin, false)) { + $plugin_object = new $plugin; + if (method_exists($plugin_object, 'compile')) { + return $plugin_object->compile($args, $this); + } } + throw new Exception("Plugin \"{$tag}\" not callable"); } else { if ($function = $this->getPlugin($tag, $plugin_type)) { return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $tag, $function); @@ -214,14 +214,16 @@ class Smarty_Internal_TemplateCompilerBase { } 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"); + return $plugin($args, $this->smarty); } + if (class_exists($plugin, false)) { + $plugin_object = new $plugin; + if (method_exists($plugin_object, 'compile')) { + return $plugin_object->compile($args, $this); + } + } + throw new Exception("Plugin \"{$tag}\" not callable"); } } $this->trigger_template_error ("unknown tag \"" . $tag . "\"", $this->lex->taglineno); @@ -229,25 +231,25 @@ class Smarty_Internal_TemplateCompilerBase { } /** - * lazy loads internal compile plugin for tag and calls the compile methode - * - * compile objects cached for reuse. - * class name format: Smarty_Internal_Compile_TagName - * plugin filename format: Smarty_Internal_Tagname.php - * - * @param $tag string tag name - * @param $args array with tag attributes - * @param $param1 optional parameter - * @param $param2 optional parameter - * @param $param3 optional parameter - * @return string compiled code - */ + * lazy loads internal compile plugin for tag and calls the compile methode + * + * compile objects cached for reuse. + * class name format: Smarty_Internal_Compile_TagName + * plugin filename format: Smarty_Internal_Tagname.php + * + * @param $tag string tag name + * @param $args array with tag attributes + * @param $param1 optional parameter + * @param $param2 optional parameter + * @param $param3 optional parameter + * @return string compiled code + */ 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, $param1, $param2, $param3); + return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3); } // lazy load internal compiler plugin $class_name = 'Smarty_Internal_Compile_' . $tag; @@ -255,38 +257,62 @@ 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, $param1, $param2, $param3); + return 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 - */ + * 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]; - } - } else { - if (isset($this->template->required_plugins['cache'][$plugin_name])) { - $this->template->required_plugins['compiled'][$plugin_name] = $this->template->required_plugins['compiled'][$plugin_name]; - } + $function = null; + if ($this->template->caching && ($this->nocache || $this->tag_nocache)) { + if (isset($this->template->required_plugins['nocache'][$plugin_name][$type])) { + $function = $this->template->required_plugins['nocache'][$plugin_name][$type]['function']; + } else if (isset($this->template->required_plugins['compiled'][$plugin_name][$type])) { + $this->template->required_plugins['nocache'][$plugin_name][$type] = $this->template->required_plugins['compiled'][$plugin_name][$type]; + $function = $this->template->required_plugins['nocache'][$plugin_name][$type]['function']; + } + } else { + if (isset($this->template->required_plugins['compiled'][$plugin_name][$type])) { + $function = $this->template->required_plugins['compiled'][$plugin_name][$type]['function']; + } else if (isset($this->template->required_plugins['compiled'][$plugin_name][$type])) { + $this->template->required_plugins['compiled'][$plugin_name][$type] = $this->template->required_plugins['nocache'][$plugin_name][$type]; + $function = $this->template->required_plugins['compiled'][$plugin_name][$type]['function']; } + } + if (isset($function)) { if ($type == 'modifier') { $this->template->saved_modifer[$plugin_name] = true; } - return $this->template->required_plugins_call[$plugin_name][$type]; + return $function; } + /** + * 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]; + * } + * } else { + * if (isset($this->template->required_plugins['cache'][$plugin_name])) { + * $this->template->required_plugins['compiled'][$plugin_name] = $this->template->required_plugins['cache'][$plugin_name]; + * } + * } + * if ($type == 'modifier') { + * $this->template->saved_modifer[$plugin_name] = true; + * } + * return $this->template->required_plugins_call[$plugin_name][$type]; + * } + */ // loop through plugin dirs and find the plugin - $plugin = 'smarty_' . $type . '_' . $plugin_name; + $function = 'smarty_' . $type . '_' . $plugin_name; $found = false; foreach((array)$this->smarty->plugins_dir as $_plugin_dir) { $file = rtrim($_plugin_dir, '/\\') . DS . $type . '.' . $plugin_name . '.php'; @@ -298,38 +324,46 @@ class Smarty_Internal_TemplateCompilerBase { } 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; + $this->template->required_plugins['nocache'][$plugin_name][$type]['file'] = $file; + $this->template->required_plugins['nocache'][$plugin_name][$type]['function'] = $function; } else { - $this->template->required_plugins['compiled'][$plugin_name]['file'] = $file; - $this->template->required_plugins['compiled'][$plugin_name]['type'] = $type; + $this->template->required_plugins['compiled'][$plugin_name][$type]['file'] = $file; + $this->template->required_plugins['compiled'][$plugin_name][$type]['function'] = $function; } + /** + * $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; + * } + */ if ($type == 'modifier') { $this->template->saved_modifer[$plugin_name] = true; } - - return $plugin; + return $function; } - if (is_callable($plugin)) { + if (is_callable($function)) { // plugin function is defined in the script - return $plugin; + return $function; } 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 - */ + * 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 @@ -344,8 +378,8 @@ class Smarty_Internal_TemplateCompilerBase { // make sure we include modifer plugins for nocache code if (isset($this->template->saved_modifer)) { foreach ($this->template->saved_modifer as $plugin_name => $dummy) { - if (isset($this->template->required_plugins['compiled'][$plugin_name])) { - $this->template->required_plugins['cache'][$plugin_name] = $this->template->required_plugins['compiled'][$plugin_name]; + if (isset($this->template->required_plugins['compiled'][$plugin_name]['modifier'])) { + $this->template->required_plugins['nocache'][$plugin_name]['modifier'] = $this->template->required_plugins['compiled'][$plugin_name]['modifier']; } } unset($this->template->saved_modifer); @@ -360,15 +394,15 @@ class Smarty_Internal_TemplateCompilerBase { return $_output; } /** - * display compiler error messages without dying - * - * If parameter $args is empty it is a parser detected syntax error. - * In this case the parser is called to obtain information about expected tokens. - * - * If parameter $args contains a string this is used as error message - * - * @param $args string individual error message or null - */ + * display compiler error messages without dying + * + * If parameter $args is empty it is a parser detected syntax error. + * In this case the parser is called to obtain information about expected tokens. + * + * If parameter $args contains a string this is used as error message + * + * @param $args string individual error message or null + */ public function trigger_template_error($args = null, $line = null) { // get template source line which has error @@ -376,7 +410,7 @@ class Smarty_Internal_TemplateCompilerBase { $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] . '" '; + $error_text = 'Syntax Error in template "' . $this->template->getTemplateFilepath() . '" on line ' . $line . ' "' . htmlspecialchars($match[$line-1]) . '" '; if (isset($args)) { // individual error message $error_text .= $args; @@ -401,4 +435,4 @@ class Smarty_Internal_TemplateCompilerBase { } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php b/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php index fb259847f..4a9ab5788 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_templatelexer.php @@ -82,7 +82,8 @@ class Smarty_Internal_Templatelexer { // set instance object self::instance($this); - $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data); +// $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data); + $this->data = $data; $this->counter = 0; $this->line = 1; $this->smarty = $compiler->smarty; @@ -148,7 +149,7 @@ class Smarty_Internal_Templatelexer if ($this->counter >= strlen($this->data)) { return false; // end of input } - $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]+)/"; + $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)) { @@ -214,6 +215,8 @@ class Smarty_Internal_Templatelexer if (in_array($this->value, Array('token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG; $this->yypushstate(self::PHP); + } elseif ($this->value == 'token = Smarty_Internal_Templateparser::TP_XMLTAG; } else { $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG; $this->value = substr($this->value, 0, 2); @@ -286,16 +289,6 @@ class Smarty_Internal_Templatelexer { $this->token = Smarty_Internal_Templateparser::TP_OTHER; - if (substr($this->value,-2) == 'value = substr($this->value,0,-2); - } elseif (substr($this->value,-strlen($this->smarty->left_delimiter)) == $this->smarty->left_delimiter){ - $this->value = substr($this->value,0,-strlen($this->smarty->left_delimiter)); - } else { - $this->value = rtrim($this->value); - } - if (strlen($this->value) == 0) { - return true; // rescan - } } function yy_r1_16($yy_subpatterns) { @@ -307,15 +300,15 @@ class Smarty_Internal_Templatelexer function yylex2() { $tokenMap = array ( - 1 => 1, + 1 => 0, + 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, - 9 => 0, - 10 => 0, + 9 => 1, 11 => 1, 13 => 1, 15 => 0, @@ -379,7 +372,7 @@ class Smarty_Internal_Templatelexer if ($this->counter >= strlen($this->data)) { return false; // end of input } - $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+)|^(.)/"; + $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+(step)\\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)) { @@ -432,14 +425,9 @@ class Smarty_Internal_Templatelexer function yy_r2_1($yy_subpatterns) { - $this->token = Smarty_Internal_Templateparser::TP_OTHER; - } - function yy_r2_3($yy_subpatterns) - { - $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING; } - function yy_r2_4($yy_subpatterns) + function yy_r2_2($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -450,7 +438,7 @@ class Smarty_Internal_Templatelexer $this->taglineno = $this->line; } } - function yy_r2_5($yy_subpatterns) + function yy_r2_3($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -461,7 +449,7 @@ class Smarty_Internal_Templatelexer $this->taglineno = $this->line; } } - function yy_r2_6($yy_subpatterns) + function yy_r2_4($yy_subpatterns) { if ($this->smarty->auto_literal) { @@ -471,40 +459,45 @@ class Smarty_Internal_Templatelexer $this->yypopstate(); } } - function yy_r2_7($yy_subpatterns) + function yy_r2_5($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH; $this->yypushstate(self::SMARTY); $this->taglineno = $this->line; } - function yy_r2_8($yy_subpatterns) + function yy_r2_6($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_LDEL; $this->yypushstate(self::SMARTY); $this->taglineno = $this->line; } - function yy_r2_9($yy_subpatterns) + function yy_r2_7($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_RDEL; $this->yypopstate(); } - function yy_r2_10($yy_subpatterns) + function yy_r2_8($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_ISIN; } - function yy_r2_11($yy_subpatterns) + function yy_r2_9($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_AS; } - function yy_r2_13($yy_subpatterns) + function yy_r2_11($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_TO; + } + function yy_r2_13($yy_subpatterns) + { + + $this->token = Smarty_Internal_Templateparser::TP_STEP; } function yy_r2_15($yy_subpatterns) { @@ -1573,13 +1566,13 @@ class Smarty_Internal_Templatelexer 2 => 0, 3 => 0, 4 => 0, - 5 => 1, - 7 => 0, + 5 => 2, + 8 => 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.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^([\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)) { @@ -1659,20 +1652,9 @@ class Smarty_Internal_Templatelexer function yy_r12_5($yy_subpatterns) { - $lenght_literal = strlen($this->smarty->left_delimiter.$this->smarty->right_delimiter)+7; - if (substr($this->value,-2,2) === '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 { - 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); - } + $this->token = Smarty_Internal_Templateparser::TP_LITERAL; } - function yy_r12_7($yy_subpatterns) + function yy_r12_8($yy_subpatterns) { $this->compiler->trigger_template_error ("missing or misspelled literal closing tag"); @@ -1690,13 +1672,13 @@ class Smarty_Internal_Templatelexer 6 => 0, 7 => 0, 8 => 0, - 9 => 2, - 12 => 0, + 9 => 3, + 13 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(\")|^(`\\$)|^(\\$\\w+)|^(\\$)|^(([\S\s]*?)(".$this->ldel."|\\$|`\\$|\\\\\\\\|[^\\\\]\"))|^([\S\s]+)/"; + $yy_global_pattern = "/^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(\")|^(`\\$)|^(\\$[0-9]*[a-zA-Z_]\\w*)|^(\\$)|^(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(".$this->ldel."|\\$|`\\$|\")))|^([\S\s]+)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { @@ -1810,18 +1792,8 @@ class Smarty_Internal_Templatelexer { $this->token = Smarty_Internal_Templateparser::TP_OTHER; - if (substr($this->value,-strlen($this->smarty->left_delimiter)) == $this->smarty->left_delimiter) { - $this->value = substr($this->value,0,-strlen($this->smarty->left_delimiter)); - } elseif (substr($this->value,-2) == '`$') { - $this->value = substr($this->value,0,-2); - } elseif (strpbrk(substr($this->value,-1),'"$') !== false) { - $this->value = substr($this->value,0,-1); - } - if (strlen($this->value) == 0) { - return true; // rescan - } } - function yy_r13_12($yy_subpatterns) + function yy_r13_13($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_OTHER; diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php b/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php index 3ad06029e..8e1531cf3 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_templateparser.php @@ -109,6 +109,7 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php $this->compiler->has_variable_string = false; $this->compiler->prefix_code = array(); $this->prefix_number = 0; + $this->block_nesting_level = 0; } public static function &instance($new_instance = null) { @@ -130,772 +131,815 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php } -#line 126 "smarty_internal_templateparser.php" +#line 127 "smarty_internal_templateparser.php" - const TP_COMMENT = 1; - const TP_PHPSTARTTAG = 2; - const TP_PHPENDTAG = 3; - const TP_OTHER = 4; - const TP_FAKEPHPSTARTTAG = 5; - const TP_PHP_CODE = 6; - const TP_PHP_CODE_START_DOUBLEQUOTE = 7; - const TP_PHP_CODE_DOUBLEQUOTE = 8; - const TP_PHP_HEREDOC_START = 9; - const TP_PHP_HEREDOC_END = 10; - const TP_PHP_NOWDOC_START = 11; - const TP_PHP_NOWDOC_END = 12; - const TP_PHP_DQ_CONTENT = 13; - const TP_PHP_DQ_EMBED_START = 14; - const TP_PHP_DQ_EMBED_END = 15; - const TP_LITERALSTART = 16; - const TP_LITERALEND = 17; - const TP_LITERAL = 18; - const TP_LDEL = 19; - const TP_RDEL = 20; - const TP_DOLLAR = 21; - const TP_ID = 22; - const TP_EQUAL = 23; - const TP_FOREACH = 24; - const TP_PTR = 25; - const TP_IF = 26; - const TP_SPACE = 27; - const TP_UNIMATH = 28; - const TP_FOR = 29; - const TP_SEMICOLON = 30; - const TP_INCDEC = 31; - const TP_TO = 32; - const TP_AS = 33; - const TP_APTR = 34; - const TP_LDELSLASH = 35; - const TP_INTEGER = 36; - const TP_COMMA = 37; - const TP_COLON = 38; - const TP_MATH = 39; - const TP_ANDSYM = 40; - const TP_OPENP = 41; - const TP_CLOSEP = 42; - const TP_QMARK = 43; - const TP_NOT = 44; - const TP_TYPECAST = 45; - const TP_DOT = 46; - const TP_BOOLEAN = 47; - const TP_NULL = 48; - const TP_SINGLEQUOTESTRING = 49; - const TP_QUOTE = 50; - const TP_DOUBLECOLON = 51; - const TP_AT = 52; - const TP_HATCH = 53; - const TP_OPENB = 54; - const TP_CLOSEB = 55; - const TP_VERT = 56; - const TP_ISIN = 57; - const TP_ISDIVBY = 58; - const TP_ISNOTDIVBY = 59; - const TP_ISEVEN = 60; - const TP_ISNOTEVEN = 61; - const TP_ISEVENBY = 62; - const TP_ISNOTEVENBY = 63; - const TP_ISODD = 64; - const TP_ISNOTODD = 65; - const TP_ISODDBY = 66; - const TP_ISNOTODDBY = 67; - const TP_INSTANCEOF = 68; - const TP_EQUALS = 69; - const TP_NOTEQUALS = 70; - const TP_GREATERTHAN = 71; - const TP_LESSTHAN = 72; - const TP_GREATEREQUAL = 73; - const TP_LESSEQUAL = 74; - const TP_IDENTITY = 75; - const TP_NONEIDENTITY = 76; - const TP_MOD = 77; - const TP_LAND = 78; - const TP_LOR = 79; - const TP_LXOR = 80; - const TP_BACKTICK = 81; - const TP_DOLLARID = 82; - const YY_NO_ACTION = 613; - const YY_ACCEPT_ACTION = 612; - const YY_ERROR_ACTION = 611; + const TP_VERT = 1; + const TP_COLON = 2; + const TP_COMMENT = 3; + const TP_PHPSTARTTAG = 4; + const TP_PHPENDTAG = 5; + const TP_FAKEPHPSTARTTAG = 6; + const TP_XMLTAG = 7; + const TP_OTHER = 8; + const TP_PHP_CODE = 9; + const TP_PHP_CODE_START_DOUBLEQUOTE = 10; + const TP_PHP_CODE_DOUBLEQUOTE = 11; + const TP_PHP_HEREDOC_START = 12; + const TP_PHP_HEREDOC_END = 13; + const TP_PHP_NOWDOC_START = 14; + const TP_PHP_NOWDOC_END = 15; + const TP_PHP_DQ_CONTENT = 16; + const TP_PHP_DQ_EMBED_START = 17; + const TP_PHP_DQ_EMBED_END = 18; + const TP_LITERALSTART = 19; + const TP_LITERALEND = 20; + const TP_LITERAL = 21; + const TP_LDEL = 22; + const TP_RDEL = 23; + const TP_DOLLAR = 24; + const TP_ID = 25; + const TP_EQUAL = 26; + const TP_FOREACH = 27; + const TP_PTR = 28; + const TP_IF = 29; + const TP_SPACE = 30; + const TP_FOR = 31; + const TP_SEMICOLON = 32; + const TP_INCDEC = 33; + const TP_TO = 34; + const TP_STEP = 35; + const TP_AS = 36; + const TP_APTR = 37; + const TP_LDELSLASH = 38; + const TP_INTEGER = 39; + const TP_COMMA = 40; + const TP_MATH = 41; + const TP_UNIMATH = 42; + const TP_ANDSYM = 43; + const TP_ISIN = 44; + const TP_ISDIVBY = 45; + const TP_ISNOTDIVBY = 46; + const TP_ISEVEN = 47; + const TP_ISNOTEVEN = 48; + const TP_ISEVENBY = 49; + const TP_ISNOTEVENBY = 50; + const TP_ISODD = 51; + const TP_ISNOTODD = 52; + const TP_ISODDBY = 53; + const TP_ISNOTODDBY = 54; + const TP_INSTANCEOF = 55; + const TP_OPENP = 56; + const TP_CLOSEP = 57; + const TP_QMARK = 58; + const TP_NOT = 59; + const TP_TYPECAST = 60; + const TP_DOT = 61; + const TP_BOOLEAN = 62; + const TP_NULL = 63; + const TP_SINGLEQUOTESTRING = 64; + const TP_DOUBLECOLON = 65; + const TP_AT = 66; + const TP_HATCH = 67; + const TP_OPENB = 68; + const TP_CLOSEB = 69; + const TP_EQUALS = 70; + const TP_NOTEQUALS = 71; + const TP_GREATERTHAN = 72; + const TP_LESSTHAN = 73; + const TP_GREATEREQUAL = 74; + const TP_LESSEQUAL = 75; + const TP_IDENTITY = 76; + const TP_NONEIDENTITY = 77; + const TP_MOD = 78; + const TP_LAND = 79; + const TP_LOR = 80; + const TP_LXOR = 81; + const TP_QUOTE = 82; + const TP_BACKTICK = 83; + const TP_DOLLARID = 84; + const YY_NO_ACTION = 585; + const YY_ACCEPT_ACTION = 584; + const YY_ERROR_ACTION = 583; - const YY_SZ_ACTTAB = 1771; + const YY_SZ_ACTTAB = 1995; static public $yy_action = array( - /* 0 */ 19, 25, 98, 62, 192, 106, 376, 210, 202, 48, - /* 10 */ 224, 228, 42, 214, 22, 188, 129, 225, 330, 95, - /* 20 */ 202, 92, 11, 96, 143, 52, 50, 22, 300, 301, - /* 30 */ 312, 61, 97, 282, 65, 14, 19, 143, 100, 194, - /* 40 */ 344, 339, 202, 340, 141, 48, 612, 59, 273, 332, - /* 50 */ 335, 202, 129, 225, 60, 346, 345, 51, 26, 304, - /* 60 */ 28, 52, 50, 226, 300, 301, 312, 61, 47, 49, - /* 70 */ 65, 14, 264, 19, 9, 89, 209, 253, 344, 339, - /* 80 */ 328, 340, 48, 229, 267, 27, 362, 100, 157, 129, - /* 90 */ 225, 2, 60, 30, 345, 26, 317, 33, 52, 50, - /* 100 */ 202, 300, 301, 312, 61, 285, 240, 65, 14, 19, - /* 110 */ 22, 89, 209, 30, 310, 254, 317, 32, 48, 65, - /* 120 */ 143, 51, 269, 326, 266, 129, 225, 217, 258, 476, - /* 130 */ 51, 5, 47, 49, 8, 50, 476, 300, 301, 312, - /* 140 */ 61, 47, 49, 65, 14, 19, 216, 89, 199, 64, - /* 150 */ 22, 274, 324, 277, 48, 236, 275, 239, 475, 214, - /* 160 */ 143, 129, 225, 30, 368, 214, 317, 26, 187, 303, - /* 170 */ 52, 50, 351, 300, 301, 312, 61, 1, 218, 65, - /* 180 */ 14, 19, 303, 100, 203, 150, 30, 369, 202, 317, - /* 190 */ 48, 186, 100, 241, 127, 22, 30, 129, 225, 317, - /* 200 */ 304, 248, 256, 26, 202, 143, 52, 50, 391, 300, - /* 210 */ 301, 312, 61, 289, 39, 65, 14, 19, 191, 100, - /* 220 */ 213, 40, 109, 4, 65, 56, 48, 30, 22, 216, - /* 230 */ 317, 32, 287, 129, 225, 138, 270, 479, 143, 26, - /* 240 */ 386, 186, 52, 50, 479, 300, 301, 312, 61, 202, - /* 250 */ 304, 65, 14, 19, 29, 100, 200, 56, 30, 367, - /* 260 */ 30, 317, 48, 317, 39, 406, 313, 3, 10, 129, - /* 270 */ 207, 30, 370, 214, 317, 26, 23, 303, 52, 50, - /* 280 */ 156, 300, 301, 312, 61, 53, 186, 65, 14, 19, - /* 290 */ 293, 89, 193, 221, 352, 304, 388, 177, 48, 246, - /* 300 */ 320, 214, 319, 109, 350, 129, 225, 144, 56, 242, - /* 310 */ 63, 16, 303, 186, 8, 50, 147, 300, 301, 312, - /* 320 */ 61, 386, 304, 65, 14, 19, 186, 103, 209, 192, - /* 330 */ 202, 304, 281, 153, 48, 327, 83, 42, 293, 190, - /* 340 */ 41, 129, 225, 306, 53, 238, 90, 5, 304, 39, - /* 350 */ 8, 50, 164, 300, 301, 312, 61, 214, 202, 65, - /* 360 */ 14, 19, 186, 89, 209, 78, 271, 304, 43, 152, - /* 370 */ 48, 333, 332, 335, 220, 185, 350, 129, 225, 306, - /* 380 */ 262, 349, 63, 16, 304, 39, 8, 50, 146, 300, - /* 390 */ 301, 312, 61, 35, 348, 65, 14, 19, 9, 100, - /* 400 */ 213, 140, 404, 304, 261, 374, 48, 189, 360, 214, - /* 410 */ 373, 202, 214, 129, 225, 214, 304, 214, 9, 26, - /* 420 */ 202, 45, 52, 50, 245, 300, 301, 312, 61, 260, - /* 430 */ 90, 65, 31, 400, 396, 395, 397, 398, 399, 380, - /* 440 */ 379, 361, 6, 7, 296, 359, 13, 12, 358, 354, - /* 450 */ 18, 17, 342, 169, 68, 44, 202, 101, 290, 214, - /* 460 */ 168, 135, 353, 355, 356, 19, 30, 100, 208, 317, - /* 470 */ 375, 372, 268, 378, 48, 85, 304, 214, 214, 366, - /* 480 */ 214, 129, 225, 279, 278, 223, 214, 26, 306, 391, - /* 490 */ 52, 50, 66, 300, 301, 312, 61, 21, 173, 65, - /* 500 */ 133, 6, 7, 296, 359, 13, 12, 358, 354, 18, - /* 510 */ 17, 365, 389, 214, 391, 384, 186, 305, 214, 214, - /* 520 */ 181, 353, 355, 356, 214, 319, 6, 7, 296, 359, - /* 530 */ 13, 12, 358, 354, 18, 17, 364, 155, 323, 24, - /* 540 */ 322, 178, 202, 377, 357, 214, 353, 355, 356, 130, - /* 550 */ 214, 214, 6, 7, 296, 359, 13, 12, 358, 354, - /* 560 */ 18, 17, 30, 391, 252, 211, 159, 371, 314, 311, - /* 570 */ 142, 283, 353, 355, 356, 214, 214, 154, 214, 136, - /* 580 */ 6, 7, 296, 359, 13, 12, 358, 354, 18, 17, - /* 590 */ 215, 82, 304, 30, 304, 390, 247, 341, 331, 82, - /* 600 */ 353, 355, 356, 255, 214, 6, 7, 296, 359, 13, - /* 610 */ 12, 358, 354, 18, 17, 214, 70, 202, 45, 235, - /* 620 */ 90, 325, 90, 250, 82, 353, 355, 356, 128, 362, - /* 630 */ 400, 396, 395, 397, 398, 399, 380, 379, 361, 251, - /* 640 */ 205, 107, 391, 202, 45, 145, 6, 7, 296, 359, - /* 650 */ 13, 12, 358, 354, 18, 17, 400, 396, 395, 397, - /* 660 */ 398, 399, 380, 379, 361, 131, 353, 355, 356, 6, - /* 670 */ 7, 296, 359, 13, 12, 358, 354, 18, 17, 391, - /* 680 */ 334, 80, 299, 338, 347, 73, 132, 477, 257, 353, - /* 690 */ 355, 356, 175, 165, 477, 60, 475, 319, 19, 387, - /* 700 */ 391, 322, 387, 214, 151, 163, 180, 234, 304, 233, - /* 710 */ 302, 319, 233, 109, 129, 158, 109, 38, 88, 304, - /* 720 */ 304, 237, 315, 202, 45, 309, 321, 336, 309, 394, - /* 730 */ 304, 386, 202, 45, 386, 276, 400, 396, 395, 397, - /* 740 */ 398, 399, 380, 379, 361, 400, 396, 395, 397, 398, - /* 750 */ 399, 380, 379, 361, 403, 387, 34, 81, 337, 79, - /* 760 */ 318, 214, 387, 197, 183, 233, 74, 272, 124, 109, - /* 770 */ 401, 391, 233, 391, 227, 36, 109, 392, 93, 295, - /* 780 */ 201, 309, 294, 240, 405, 53, 294, 386, 309, 28, - /* 790 */ 202, 45, 363, 102, 386, 329, 71, 20, 111, 381, - /* 800 */ 229, 20, 263, 400, 396, 395, 397, 398, 399, 380, - /* 810 */ 379, 361, 387, 129, 1, 99, 23, 129, 265, 343, - /* 820 */ 204, 320, 233, 55, 105, 57, 109, 43, 280, 214, - /* 830 */ 160, 108, 292, 46, 392, 322, 219, 201, 309, 286, - /* 840 */ 387, 230, 306, 382, 386, 91, 15, 336, 249, 363, - /* 850 */ 233, 77, 284, 117, 109, 336, 336, 243, 336, 37, - /* 860 */ 288, 336, 392, 37, 288, 201, 309, 336, 387, 336, - /* 870 */ 336, 336, 386, 336, 336, 336, 249, 363, 233, 54, - /* 880 */ 110, 58, 109, 336, 336, 336, 336, 336, 336, 336, - /* 890 */ 392, 336, 336, 201, 309, 336, 387, 336, 336, 336, - /* 900 */ 386, 336, 336, 336, 249, 363, 233, 77, 336, 125, - /* 910 */ 109, 336, 336, 336, 336, 336, 336, 336, 392, 336, - /* 920 */ 336, 201, 309, 336, 336, 336, 387, 336, 386, 336, - /* 930 */ 336, 336, 336, 363, 249, 336, 233, 77, 336, 113, - /* 940 */ 109, 336, 336, 336, 336, 387, 336, 336, 392, 336, - /* 950 */ 336, 201, 309, 291, 387, 233, 336, 336, 386, 109, - /* 960 */ 336, 336, 259, 363, 233, 77, 336, 126, 109, 336, - /* 970 */ 336, 309, 336, 336, 336, 336, 392, 386, 336, 201, - /* 980 */ 309, 336, 387, 336, 336, 336, 386, 336, 336, 336, - /* 990 */ 249, 363, 233, 77, 336, 122, 109, 336, 336, 336, - /* 1000 */ 336, 336, 336, 336, 392, 336, 336, 201, 309, 336, - /* 1010 */ 387, 336, 336, 336, 386, 336, 336, 336, 249, 363, - /* 1020 */ 233, 77, 336, 115, 109, 336, 336, 336, 336, 336, - /* 1030 */ 336, 336, 392, 336, 336, 201, 309, 336, 336, 336, - /* 1040 */ 387, 336, 386, 336, 336, 336, 336, 363, 249, 336, - /* 1050 */ 233, 76, 336, 116, 109, 336, 336, 336, 336, 387, - /* 1060 */ 336, 336, 392, 336, 336, 201, 309, 297, 387, 233, - /* 1070 */ 336, 336, 386, 109, 336, 336, 249, 363, 233, 77, - /* 1080 */ 336, 120, 109, 336, 336, 309, 336, 336, 336, 336, - /* 1090 */ 392, 386, 336, 201, 309, 336, 387, 336, 336, 336, - /* 1100 */ 386, 336, 336, 336, 249, 363, 233, 77, 336, 123, - /* 1110 */ 109, 336, 336, 336, 336, 336, 336, 336, 392, 336, - /* 1120 */ 336, 201, 309, 336, 387, 336, 336, 336, 386, 336, - /* 1130 */ 336, 336, 244, 363, 233, 179, 336, 336, 109, 336, - /* 1140 */ 336, 336, 336, 336, 336, 336, 392, 336, 336, 201, - /* 1150 */ 309, 336, 336, 336, 336, 336, 386, 336, 336, 336, - /* 1160 */ 387, 336, 336, 336, 206, 393, 336, 336, 249, 336, - /* 1170 */ 233, 77, 336, 118, 109, 336, 336, 336, 336, 387, - /* 1180 */ 336, 336, 392, 336, 336, 201, 309, 316, 387, 233, - /* 1190 */ 336, 336, 386, 109, 336, 336, 249, 363, 233, 77, - /* 1200 */ 336, 121, 109, 336, 336, 309, 336, 336, 336, 336, - /* 1210 */ 392, 386, 336, 201, 309, 336, 387, 336, 336, 336, - /* 1220 */ 386, 336, 336, 336, 249, 363, 233, 76, 336, 114, - /* 1230 */ 109, 336, 336, 336, 336, 336, 336, 336, 392, 336, - /* 1240 */ 336, 201, 309, 336, 387, 336, 336, 336, 386, 336, - /* 1250 */ 336, 336, 249, 363, 233, 77, 336, 119, 109, 336, - /* 1260 */ 336, 336, 336, 336, 336, 336, 392, 336, 336, 201, - /* 1270 */ 309, 336, 336, 336, 387, 336, 386, 336, 336, 336, - /* 1280 */ 336, 363, 249, 336, 233, 75, 336, 112, 109, 336, - /* 1290 */ 336, 336, 336, 336, 336, 336, 392, 336, 336, 201, - /* 1300 */ 309, 336, 387, 336, 336, 336, 386, 336, 336, 336, - /* 1310 */ 244, 363, 233, 179, 336, 387, 109, 336, 336, 336, - /* 1320 */ 336, 336, 336, 307, 392, 233, 161, 201, 309, 109, - /* 1330 */ 336, 336, 336, 336, 386, 336, 336, 392, 336, 336, - /* 1340 */ 201, 309, 387, 385, 222, 336, 336, 386, 336, 336, - /* 1350 */ 307, 336, 233, 161, 336, 336, 109, 336, 336, 336, - /* 1360 */ 336, 336, 387, 336, 392, 336, 336, 201, 309, 336, - /* 1370 */ 307, 231, 233, 161, 386, 387, 109, 336, 336, 336, - /* 1380 */ 336, 336, 336, 307, 392, 233, 161, 201, 309, 109, - /* 1390 */ 336, 383, 336, 336, 386, 336, 336, 392, 387, 336, - /* 1400 */ 201, 309, 336, 387, 232, 336, 87, 386, 86, 67, - /* 1410 */ 104, 87, 94, 84, 72, 104, 336, 94, 336, 336, - /* 1420 */ 392, 336, 336, 201, 309, 392, 336, 336, 201, 309, - /* 1430 */ 386, 387, 336, 336, 336, 386, 336, 336, 336, 307, - /* 1440 */ 387, 212, 137, 336, 336, 109, 336, 336, 307, 336, - /* 1450 */ 233, 184, 336, 392, 109, 336, 201, 309, 336, 387, - /* 1460 */ 336, 336, 392, 386, 336, 201, 309, 307, 336, 233, - /* 1470 */ 176, 336, 386, 109, 336, 336, 336, 336, 336, 387, - /* 1480 */ 336, 392, 336, 336, 201, 309, 336, 307, 387, 233, - /* 1490 */ 134, 386, 336, 109, 336, 336, 307, 336, 233, 172, - /* 1500 */ 336, 392, 109, 336, 201, 309, 336, 336, 387, 336, - /* 1510 */ 392, 386, 336, 201, 309, 336, 307, 387, 233, 170, - /* 1520 */ 386, 336, 109, 336, 336, 307, 336, 233, 149, 336, - /* 1530 */ 392, 109, 336, 201, 309, 336, 387, 336, 336, 392, - /* 1540 */ 386, 336, 201, 309, 307, 387, 233, 174, 336, 386, - /* 1550 */ 109, 336, 336, 307, 336, 233, 166, 336, 392, 109, - /* 1560 */ 336, 201, 309, 336, 336, 336, 336, 392, 386, 336, - /* 1570 */ 201, 309, 387, 336, 336, 336, 336, 386, 336, 336, - /* 1580 */ 307, 387, 233, 167, 336, 336, 109, 336, 336, 307, - /* 1590 */ 336, 233, 171, 336, 392, 109, 336, 201, 309, 336, - /* 1600 */ 336, 387, 336, 392, 386, 336, 201, 309, 336, 307, - /* 1610 */ 387, 233, 162, 386, 336, 109, 336, 336, 307, 336, - /* 1620 */ 233, 148, 336, 392, 109, 336, 201, 309, 336, 336, - /* 1630 */ 387, 336, 392, 386, 336, 201, 309, 336, 307, 336, - /* 1640 */ 233, 69, 386, 387, 109, 336, 336, 336, 336, 336, - /* 1650 */ 387, 307, 392, 233, 182, 201, 309, 109, 298, 336, - /* 1660 */ 233, 336, 386, 336, 109, 392, 336, 336, 201, 309, - /* 1670 */ 387, 336, 336, 336, 336, 386, 309, 336, 307, 387, - /* 1680 */ 233, 139, 386, 336, 109, 336, 336, 307, 336, 233, - /* 1690 */ 336, 336, 392, 109, 336, 201, 309, 336, 387, 387, - /* 1700 */ 336, 392, 386, 336, 198, 309, 307, 308, 233, 233, - /* 1710 */ 336, 386, 109, 109, 336, 336, 336, 336, 387, 336, - /* 1720 */ 392, 336, 336, 196, 309, 309, 307, 336, 233, 336, - /* 1730 */ 386, 386, 109, 336, 336, 336, 336, 336, 387, 336, - /* 1740 */ 392, 336, 336, 195, 309, 336, 402, 336, 233, 336, - /* 1750 */ 386, 336, 109, 336, 336, 336, 336, 336, 336, 336, - /* 1760 */ 336, 336, 336, 336, 309, 336, 336, 336, 336, 336, - /* 1770 */ 386, + /* 0 */ 373, 584, 55, 252, 258, 280, 8, 196, 283, 115, + /* 10 */ 59, 107, 247, 119, 255, 112, 257, 122, 41, 43, + /* 20 */ 45, 40, 25, 27, 299, 298, 20, 28, 296, 297, + /* 30 */ 15, 14, 8, 330, 31, 17, 294, 239, 322, 35, + /* 40 */ 196, 112, 146, 294, 326, 337, 162, 312, 313, 314, + /* 50 */ 311, 310, 306, 307, 308, 309, 338, 339, 369, 196, + /* 60 */ 304, 23, 24, 202, 34, 37, 17, 360, 7, 322, + /* 70 */ 41, 43, 45, 40, 25, 27, 299, 298, 20, 28, + /* 80 */ 296, 297, 15, 14, 452, 17, 276, 17, 322, 36, + /* 90 */ 322, 452, 251, 258, 280, 2, 253, 109, 201, 312, + /* 100 */ 313, 314, 311, 310, 306, 307, 308, 309, 338, 339, + /* 110 */ 369, 133, 219, 17, 158, 42, 322, 8, 38, 213, + /* 120 */ 109, 154, 114, 365, 17, 351, 112, 322, 304, 22, + /* 130 */ 196, 227, 47, 46, 242, 315, 316, 317, 328, 243, + /* 140 */ 60, 41, 43, 45, 40, 25, 27, 299, 298, 20, + /* 150 */ 28, 296, 297, 15, 14, 56, 17, 231, 10, 322, + /* 160 */ 35, 54, 4, 60, 54, 32, 17, 117, 272, 241, + /* 170 */ 312, 313, 314, 311, 310, 306, 307, 308, 309, 338, + /* 180 */ 339, 369, 268, 41, 43, 45, 40, 25, 27, 299, + /* 190 */ 298, 20, 28, 296, 297, 15, 14, 139, 348, 282, + /* 200 */ 231, 209, 109, 218, 344, 273, 274, 185, 17, 358, + /* 210 */ 327, 322, 312, 313, 314, 311, 310, 306, 307, 308, + /* 220 */ 309, 338, 339, 369, 202, 41, 43, 45, 40, 25, + /* 230 */ 27, 299, 298, 20, 28, 296, 297, 15, 14, 97, + /* 240 */ 451, 324, 267, 180, 347, 60, 368, 196, 182, 265, + /* 250 */ 294, 207, 327, 196, 312, 313, 314, 311, 310, 306, + /* 260 */ 307, 308, 309, 338, 339, 369, 16, 41, 43, 45, + /* 270 */ 40, 25, 27, 299, 298, 20, 28, 296, 297, 15, + /* 280 */ 14, 149, 96, 261, 17, 8, 182, 199, 229, 116, + /* 290 */ 202, 54, 278, 101, 112, 304, 312, 313, 314, 311, + /* 300 */ 310, 306, 307, 308, 309, 338, 339, 369, 249, 41, + /* 310 */ 43, 45, 40, 25, 27, 299, 298, 20, 28, 296, + /* 320 */ 297, 15, 14, 156, 190, 224, 17, 321, 184, 322, + /* 330 */ 320, 13, 166, 347, 165, 347, 302, 304, 312, 313, + /* 340 */ 314, 311, 310, 306, 307, 308, 309, 338, 339, 369, + /* 350 */ 202, 287, 12, 41, 43, 45, 40, 25, 27, 299, + /* 360 */ 298, 20, 28, 296, 297, 15, 14, 202, 100, 244, + /* 370 */ 198, 362, 372, 381, 202, 19, 186, 222, 196, 114, + /* 380 */ 196, 327, 312, 313, 314, 311, 310, 306, 307, 308, + /* 390 */ 309, 338, 339, 369, 196, 328, 9, 23, 24, 240, + /* 400 */ 98, 271, 65, 21, 44, 41, 43, 45, 40, 25, + /* 410 */ 27, 299, 298, 20, 28, 296, 297, 15, 14, 145, + /* 420 */ 190, 44, 171, 64, 187, 367, 238, 13, 44, 353, + /* 430 */ 168, 5, 152, 304, 312, 313, 314, 311, 310, 306, + /* 440 */ 307, 308, 309, 338, 339, 369, 304, 41, 43, 45, + /* 450 */ 40, 25, 27, 299, 298, 20, 28, 296, 297, 15, + /* 460 */ 14, 8, 105, 236, 98, 342, 343, 380, 263, 98, + /* 470 */ 112, 183, 196, 196, 196, 327, 312, 313, 314, 311, + /* 480 */ 310, 306, 307, 308, 309, 338, 339, 369, 147, 41, + /* 490 */ 43, 45, 40, 25, 27, 299, 298, 20, 28, 296, + /* 500 */ 297, 15, 14, 332, 137, 329, 143, 281, 371, 288, + /* 510 */ 196, 267, 196, 279, 196, 196, 153, 327, 312, 313, + /* 520 */ 314, 311, 310, 306, 307, 308, 309, 338, 339, 369, + /* 530 */ 304, 41, 43, 45, 40, 25, 27, 299, 298, 20, + /* 540 */ 28, 296, 297, 15, 14, 148, 361, 293, 159, 341, + /* 550 */ 366, 6, 291, 196, 196, 270, 196, 196, 233, 304, + /* 560 */ 312, 313, 314, 311, 310, 306, 307, 308, 309, 338, + /* 570 */ 339, 369, 228, 41, 43, 45, 40, 25, 27, 299, + /* 580 */ 298, 20, 28, 296, 297, 15, 14, 349, 225, 305, + /* 590 */ 379, 174, 347, 63, 196, 26, 196, 196, 54, 110, + /* 600 */ 326, 178, 312, 313, 314, 311, 310, 306, 307, 308, + /* 610 */ 309, 338, 339, 369, 48, 41, 43, 45, 40, 25, + /* 620 */ 27, 299, 298, 20, 28, 296, 297, 15, 14, 202, + /* 630 */ 215, 333, 230, 116, 108, 209, 206, 116, 123, 221, + /* 640 */ 226, 246, 196, 262, 312, 313, 314, 311, 310, 306, + /* 650 */ 307, 308, 309, 338, 339, 369, 175, 128, 196, 303, + /* 660 */ 170, 289, 116, 250, 7, 41, 43, 45, 40, 25, + /* 670 */ 27, 299, 298, 20, 28, 296, 297, 15, 14, 144, + /* 680 */ 383, 275, 118, 26, 188, 5, 325, 113, 285, 211, + /* 690 */ 215, 334, 336, 304, 312, 313, 314, 311, 310, 306, + /* 700 */ 307, 308, 309, 338, 339, 369, 323, 41, 43, 45, + /* 710 */ 40, 25, 27, 299, 298, 20, 28, 296, 297, 15, + /* 720 */ 14, 18, 135, 245, 346, 277, 292, 62, 355, 335, + /* 730 */ 259, 126, 300, 242, 157, 327, 312, 313, 314, 311, + /* 740 */ 310, 306, 307, 308, 309, 338, 339, 369, 304, 354, + /* 750 */ 294, 382, 196, 111, 39, 217, 161, 350, 324, 295, + /* 760 */ 41, 43, 45, 40, 25, 27, 299, 298, 20, 28, + /* 770 */ 296, 297, 15, 14, 326, 131, 33, 11, 95, 61, + /* 780 */ 48, 254, 232, 256, 332, 332, 332, 332, 327, 312, + /* 790 */ 313, 314, 311, 310, 306, 307, 308, 309, 338, 339, + /* 800 */ 369, 202, 41, 43, 45, 40, 25, 27, 299, 298, + /* 810 */ 20, 28, 296, 297, 15, 14, 132, 332, 332, 332, + /* 820 */ 332, 332, 332, 378, 332, 332, 332, 332, 332, 327, + /* 830 */ 196, 312, 313, 314, 311, 310, 306, 307, 308, 309, + /* 840 */ 338, 339, 369, 332, 140, 332, 264, 332, 332, 136, + /* 850 */ 332, 332, 332, 332, 2, 44, 121, 57, 304, 125, + /* 860 */ 3, 223, 327, 235, 2, 142, 106, 191, 332, 163, + /* 870 */ 133, 219, 295, 332, 42, 332, 133, 332, 332, 304, + /* 880 */ 133, 219, 332, 304, 42, 332, 332, 332, 29, 332, + /* 890 */ 202, 47, 46, 295, 315, 316, 317, 295, 22, 60, + /* 900 */ 1, 47, 46, 332, 315, 316, 317, 332, 332, 60, + /* 910 */ 1, 269, 454, 332, 56, 2, 332, 106, 205, 454, + /* 920 */ 284, 30, 266, 332, 56, 2, 332, 109, 193, 332, + /* 930 */ 332, 133, 219, 17, 359, 42, 322, 332, 332, 332, + /* 940 */ 332, 133, 197, 332, 44, 42, 332, 332, 220, 22, + /* 950 */ 332, 332, 47, 46, 332, 315, 316, 317, 141, 22, + /* 960 */ 60, 1, 47, 46, 332, 315, 316, 317, 264, 332, + /* 970 */ 60, 1, 304, 23, 24, 56, 2, 332, 109, 201, + /* 980 */ 332, 332, 3, 332, 332, 56, 2, 332, 106, 205, + /* 990 */ 332, 332, 133, 219, 332, 332, 42, 332, 133, 332, + /* 1000 */ 332, 332, 133, 219, 332, 332, 42, 332, 332, 332, + /* 1010 */ 22, 332, 332, 47, 46, 332, 315, 316, 317, 151, + /* 1020 */ 29, 60, 1, 47, 46, 332, 315, 316, 317, 332, + /* 1030 */ 332, 60, 1, 304, 23, 24, 56, 2, 332, 106, + /* 1040 */ 194, 332, 290, 30, 266, 332, 56, 2, 332, 106, + /* 1050 */ 192, 332, 332, 133, 219, 332, 332, 42, 332, 332, + /* 1060 */ 332, 332, 332, 133, 219, 332, 332, 42, 332, 332, + /* 1070 */ 332, 22, 332, 332, 47, 46, 332, 315, 316, 317, + /* 1080 */ 332, 29, 60, 1, 47, 46, 332, 315, 316, 317, + /* 1090 */ 332, 332, 60, 1, 332, 332, 332, 56, 2, 332, + /* 1100 */ 120, 205, 332, 332, 332, 160, 332, 56, 2, 332, + /* 1110 */ 109, 204, 332, 332, 133, 219, 332, 332, 42, 304, + /* 1120 */ 23, 24, 332, 332, 133, 219, 332, 332, 42, 332, + /* 1130 */ 332, 332, 22, 332, 332, 47, 46, 332, 315, 316, + /* 1140 */ 317, 332, 22, 60, 1, 47, 46, 332, 315, 316, + /* 1150 */ 317, 332, 332, 60, 332, 332, 332, 319, 56, 2, + /* 1160 */ 332, 109, 203, 332, 332, 155, 332, 208, 56, 332, + /* 1170 */ 114, 332, 332, 332, 332, 133, 219, 332, 234, 42, + /* 1180 */ 332, 332, 332, 331, 318, 332, 328, 260, 99, 332, + /* 1190 */ 352, 356, 357, 22, 332, 332, 47, 46, 332, 315, + /* 1200 */ 316, 317, 332, 173, 60, 319, 2, 332, 332, 332, + /* 1210 */ 332, 332, 332, 138, 332, 208, 94, 332, 114, 56, + /* 1220 */ 332, 332, 133, 332, 332, 319, 370, 332, 332, 332, + /* 1230 */ 332, 331, 318, 58, 328, 104, 53, 129, 102, 332, + /* 1240 */ 332, 332, 332, 200, 364, 332, 370, 332, 319, 332, + /* 1250 */ 332, 331, 318, 332, 328, 319, 58, 332, 103, 51, + /* 1260 */ 129, 102, 332, 181, 332, 208, 332, 332, 114, 370, + /* 1270 */ 332, 332, 332, 332, 331, 318, 301, 328, 332, 332, + /* 1280 */ 332, 331, 318, 319, 328, 332, 332, 319, 332, 332, + /* 1290 */ 332, 150, 332, 208, 66, 134, 114, 208, 50, 127, + /* 1300 */ 114, 332, 332, 332, 370, 376, 374, 375, 370, 331, + /* 1310 */ 318, 332, 328, 331, 318, 319, 328, 332, 332, 210, + /* 1320 */ 173, 340, 377, 150, 332, 208, 66, 319, 114, 332, + /* 1330 */ 332, 332, 332, 332, 332, 150, 370, 208, 66, 332, + /* 1340 */ 114, 331, 318, 332, 328, 332, 332, 332, 370, 319, + /* 1350 */ 332, 216, 332, 331, 318, 332, 328, 138, 332, 208, + /* 1360 */ 94, 332, 114, 286, 332, 332, 332, 332, 332, 332, + /* 1370 */ 370, 332, 332, 319, 332, 331, 318, 332, 328, 332, + /* 1380 */ 332, 150, 332, 208, 66, 319, 114, 332, 363, 332, + /* 1390 */ 332, 332, 332, 130, 370, 208, 79, 248, 114, 331, + /* 1400 */ 318, 332, 328, 332, 332, 319, 370, 332, 332, 212, + /* 1410 */ 332, 331, 318, 150, 328, 208, 71, 319, 114, 332, + /* 1420 */ 332, 237, 332, 332, 332, 150, 370, 208, 52, 124, + /* 1430 */ 114, 331, 318, 332, 328, 332, 332, 332, 370, 319, + /* 1440 */ 332, 332, 332, 331, 318, 332, 328, 150, 332, 195, + /* 1450 */ 67, 332, 114, 332, 332, 332, 332, 332, 332, 332, + /* 1460 */ 370, 332, 332, 319, 332, 331, 318, 332, 328, 332, + /* 1470 */ 332, 150, 332, 208, 89, 319, 114, 332, 332, 332, + /* 1480 */ 332, 332, 332, 150, 370, 208, 92, 319, 114, 331, + /* 1490 */ 318, 332, 328, 332, 332, 150, 370, 208, 70, 319, + /* 1500 */ 114, 331, 318, 332, 328, 332, 332, 150, 370, 208, + /* 1510 */ 93, 319, 114, 331, 318, 332, 328, 332, 332, 150, + /* 1520 */ 370, 208, 88, 332, 114, 331, 318, 332, 328, 332, + /* 1530 */ 332, 332, 370, 319, 332, 332, 332, 331, 318, 332, + /* 1540 */ 328, 150, 319, 208, 78, 332, 114, 332, 332, 332, + /* 1550 */ 150, 332, 208, 81, 370, 114, 332, 332, 332, 331, + /* 1560 */ 318, 332, 328, 370, 319, 332, 332, 332, 331, 318, + /* 1570 */ 332, 328, 150, 319, 208, 82, 332, 114, 332, 332, + /* 1580 */ 332, 150, 332, 208, 73, 370, 114, 332, 332, 332, + /* 1590 */ 331, 318, 332, 328, 370, 332, 332, 319, 332, 331, + /* 1600 */ 318, 319, 328, 332, 332, 150, 332, 208, 86, 150, + /* 1610 */ 114, 208, 80, 332, 114, 332, 332, 332, 370, 332, + /* 1620 */ 332, 332, 370, 331, 318, 332, 328, 331, 318, 332, + /* 1630 */ 328, 319, 332, 332, 332, 332, 332, 332, 332, 150, + /* 1640 */ 319, 208, 76, 332, 114, 332, 332, 332, 150, 332, + /* 1650 */ 208, 90, 370, 114, 332, 332, 332, 331, 318, 332, + /* 1660 */ 328, 370, 319, 332, 332, 332, 331, 318, 332, 328, + /* 1670 */ 150, 319, 208, 83, 332, 114, 332, 332, 332, 150, + /* 1680 */ 332, 208, 84, 370, 114, 332, 332, 332, 331, 318, + /* 1690 */ 332, 328, 370, 332, 332, 319, 332, 331, 318, 319, + /* 1700 */ 328, 332, 332, 150, 332, 208, 75, 150, 114, 208, + /* 1710 */ 85, 332, 114, 332, 332, 332, 370, 332, 332, 332, + /* 1720 */ 370, 331, 318, 332, 328, 331, 318, 332, 328, 319, + /* 1730 */ 332, 332, 332, 332, 332, 332, 332, 150, 319, 208, + /* 1740 */ 49, 332, 114, 332, 332, 332, 150, 332, 208, 74, + /* 1750 */ 370, 114, 332, 332, 332, 331, 318, 332, 328, 370, + /* 1760 */ 319, 332, 332, 332, 331, 318, 332, 328, 150, 319, + /* 1770 */ 208, 72, 332, 114, 332, 332, 332, 150, 332, 208, + /* 1780 */ 68, 370, 114, 332, 332, 332, 331, 318, 332, 328, + /* 1790 */ 370, 332, 332, 319, 332, 331, 318, 319, 328, 332, + /* 1800 */ 332, 150, 332, 208, 91, 150, 114, 208, 77, 332, + /* 1810 */ 114, 332, 332, 332, 370, 332, 332, 332, 370, 331, + /* 1820 */ 318, 332, 328, 331, 318, 332, 328, 319, 332, 332, + /* 1830 */ 332, 332, 332, 332, 332, 150, 319, 208, 87, 332, + /* 1840 */ 114, 332, 332, 332, 150, 332, 208, 69, 370, 114, + /* 1850 */ 332, 332, 332, 331, 318, 332, 328, 370, 319, 202, + /* 1860 */ 332, 332, 331, 318, 332, 328, 172, 319, 208, 332, + /* 1870 */ 332, 114, 332, 332, 332, 177, 332, 208, 332, 332, + /* 1880 */ 114, 345, 332, 332, 331, 318, 214, 328, 196, 332, + /* 1890 */ 332, 319, 332, 331, 318, 319, 328, 332, 332, 189, + /* 1900 */ 332, 208, 332, 169, 114, 208, 332, 332, 114, 332, + /* 1910 */ 332, 332, 332, 332, 8, 332, 332, 331, 318, 332, + /* 1920 */ 328, 331, 318, 112, 328, 319, 332, 332, 332, 332, + /* 1930 */ 332, 332, 332, 179, 319, 208, 332, 332, 114, 332, + /* 1940 */ 332, 332, 176, 332, 208, 332, 332, 114, 332, 332, + /* 1950 */ 332, 331, 318, 332, 328, 332, 319, 332, 332, 332, + /* 1960 */ 331, 318, 332, 328, 167, 319, 208, 332, 332, 114, + /* 1970 */ 332, 332, 332, 164, 332, 208, 332, 332, 114, 332, + /* 1980 */ 332, 332, 331, 318, 332, 328, 332, 332, 332, 332, + /* 1990 */ 332, 331, 318, 332, 328, ); static public $yy_lookahead = array( - /* 0 */ 19, 37, 21, 22, 46, 24, 20, 26, 56, 28, - /* 10 */ 29, 25, 54, 27, 41, 20, 35, 36, 6, 7, - /* 20 */ 56, 9, 41, 11, 51, 44, 45, 41, 47, 48, - /* 30 */ 49, 50, 21, 81, 53, 54, 19, 51, 21, 22, - /* 40 */ 2, 3, 56, 5, 96, 28, 84, 85, 86, 87, - /* 50 */ 88, 56, 35, 36, 16, 17, 18, 28, 41, 111, - /* 60 */ 23, 44, 45, 22, 47, 48, 49, 50, 39, 40, - /* 70 */ 53, 54, 55, 19, 126, 21, 22, 36, 2, 3, - /* 80 */ 10, 5, 28, 46, 55, 19, 42, 21, 22, 35, - /* 90 */ 36, 23, 16, 19, 18, 41, 22, 23, 44, 45, - /* 100 */ 56, 47, 48, 49, 50, 31, 38, 53, 54, 19, - /* 110 */ 41, 21, 22, 19, 122, 46, 22, 23, 28, 53, - /* 120 */ 51, 28, 20, 8, 55, 35, 36, 21, 22, 20, - /* 130 */ 28, 41, 39, 40, 44, 45, 27, 47, 48, 49, - /* 140 */ 50, 39, 40, 53, 54, 19, 52, 21, 22, 22, - /* 150 */ 41, 24, 20, 26, 28, 33, 29, 25, 20, 27, - /* 160 */ 51, 35, 36, 19, 20, 27, 22, 41, 20, 31, - /* 170 */ 44, 45, 22, 47, 48, 49, 50, 23, 34, 53, - /* 180 */ 54, 19, 31, 21, 22, 96, 19, 20, 56, 22, - /* 190 */ 28, 102, 21, 22, 107, 41, 19, 35, 36, 22, - /* 200 */ 111, 34, 52, 41, 56, 51, 44, 45, 121, 47, - /* 210 */ 48, 49, 50, 20, 125, 53, 54, 19, 97, 21, - /* 220 */ 22, 34, 101, 23, 53, 25, 28, 19, 41, 52, - /* 230 */ 22, 23, 81, 35, 36, 96, 115, 20, 51, 41, - /* 240 */ 119, 102, 44, 45, 27, 47, 48, 49, 50, 56, - /* 250 */ 111, 53, 54, 19, 19, 21, 22, 25, 19, 20, - /* 260 */ 19, 22, 28, 22, 125, 20, 20, 27, 28, 35, - /* 270 */ 36, 19, 20, 27, 22, 41, 41, 31, 44, 45, - /* 280 */ 96, 47, 48, 49, 50, 68, 102, 53, 54, 19, - /* 290 */ 87, 21, 22, 52, 20, 111, 20, 117, 28, 97, - /* 300 */ 120, 27, 122, 101, 88, 35, 36, 96, 25, 93, - /* 310 */ 94, 41, 31, 102, 44, 45, 96, 47, 48, 49, - /* 320 */ 50, 119, 111, 53, 54, 19, 102, 21, 22, 46, - /* 330 */ 56, 111, 129, 96, 28, 13, 14, 54, 87, 102, - /* 340 */ 38, 35, 36, 123, 68, 91, 92, 41, 111, 125, - /* 350 */ 44, 45, 96, 47, 48, 49, 50, 27, 56, 53, - /* 360 */ 54, 19, 102, 21, 22, 114, 20, 111, 38, 96, - /* 370 */ 28, 86, 87, 88, 33, 102, 88, 35, 36, 123, - /* 380 */ 129, 93, 94, 41, 111, 125, 44, 45, 96, 47, - /* 390 */ 48, 49, 50, 38, 17, 53, 54, 19, 126, 21, - /* 400 */ 22, 96, 20, 111, 20, 20, 28, 102, 20, 27, - /* 410 */ 20, 56, 27, 35, 36, 27, 111, 27, 126, 41, - /* 420 */ 56, 57, 44, 45, 22, 47, 48, 49, 50, 91, - /* 430 */ 92, 53, 34, 69, 70, 71, 72, 73, 74, 75, - /* 440 */ 76, 77, 58, 59, 60, 61, 62, 63, 64, 65, - /* 450 */ 66, 67, 20, 30, 103, 19, 56, 21, 22, 27, - /* 460 */ 37, 96, 78, 79, 80, 19, 19, 21, 22, 22, - /* 470 */ 20, 20, 36, 20, 28, 107, 111, 27, 27, 20, - /* 480 */ 27, 35, 36, 47, 48, 42, 27, 41, 123, 121, - /* 490 */ 44, 45, 118, 47, 48, 49, 50, 37, 30, 53, - /* 500 */ 107, 58, 59, 60, 61, 62, 63, 64, 65, 66, - /* 510 */ 67, 20, 20, 27, 121, 55, 102, 20, 27, 27, - /* 520 */ 117, 78, 79, 80, 27, 122, 58, 59, 60, 61, - /* 530 */ 62, 63, 64, 65, 66, 67, 42, 118, 20, 41, - /* 540 */ 121, 103, 56, 20, 20, 27, 78, 79, 80, 107, - /* 550 */ 27, 27, 58, 59, 60, 61, 62, 63, 64, 65, - /* 560 */ 66, 67, 19, 121, 42, 22, 118, 20, 20, 20, - /* 570 */ 118, 20, 78, 79, 80, 27, 27, 96, 27, 96, - /* 580 */ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - /* 590 */ 89, 90, 111, 19, 111, 22, 22, 20, 89, 90, - /* 600 */ 78, 79, 80, 42, 27, 58, 59, 60, 61, 62, - /* 610 */ 63, 64, 65, 66, 67, 27, 103, 56, 57, 91, - /* 620 */ 92, 91, 92, 89, 90, 78, 79, 80, 107, 42, - /* 630 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 104, - /* 640 */ 105, 42, 121, 56, 57, 118, 58, 59, 60, 61, - /* 650 */ 62, 63, 64, 65, 66, 67, 69, 70, 71, 72, - /* 660 */ 73, 74, 75, 76, 77, 107, 78, 79, 80, 58, - /* 670 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 121, - /* 680 */ 1, 2, 36, 4, 5, 103, 107, 20, 108, 78, - /* 690 */ 79, 80, 117, 96, 27, 16, 20, 122, 19, 87, - /* 700 */ 121, 121, 87, 27, 96, 96, 117, 95, 111, 97, - /* 710 */ 95, 122, 97, 101, 35, 96, 101, 32, 21, 111, - /* 720 */ 111, 109, 22, 56, 57, 113, 22, 3, 113, 42, - /* 730 */ 111, 119, 56, 57, 119, 20, 69, 70, 71, 72, - /* 740 */ 73, 74, 75, 76, 77, 69, 70, 71, 72, 73, - /* 750 */ 74, 75, 76, 77, 20, 87, 43, 107, 15, 107, - /* 760 */ 22, 27, 87, 95, 22, 97, 98, 99, 100, 101, - /* 770 */ 95, 121, 97, 121, 22, 43, 101, 109, 21, 20, - /* 780 */ 112, 113, 4, 38, 109, 68, 4, 119, 113, 23, - /* 790 */ 56, 57, 124, 21, 119, 12, 22, 19, 27, 53, - /* 800 */ 46, 19, 55, 69, 70, 71, 72, 73, 74, 75, - /* 810 */ 76, 77, 87, 35, 23, 21, 41, 35, 42, 111, - /* 820 */ 95, 120, 97, 98, 99, 100, 101, 38, 50, 27, - /* 830 */ 118, 115, 50, 27, 109, 121, 110, 112, 113, 27, - /* 840 */ 87, 106, 123, 53, 119, 21, 106, 130, 95, 124, - /* 850 */ 97, 98, 104, 100, 101, 130, 130, 104, 130, 81, - /* 860 */ 82, 130, 109, 81, 82, 112, 113, 130, 87, 130, - /* 870 */ 130, 130, 119, 130, 130, 130, 95, 124, 97, 98, - /* 880 */ 99, 100, 101, 130, 130, 130, 130, 130, 130, 130, - /* 890 */ 109, 130, 130, 112, 113, 130, 87, 130, 130, 130, - /* 900 */ 119, 130, 130, 130, 95, 124, 97, 98, 130, 100, - /* 910 */ 101, 130, 130, 130, 130, 130, 130, 130, 109, 130, - /* 920 */ 130, 112, 113, 130, 130, 130, 87, 130, 119, 130, - /* 930 */ 130, 130, 130, 124, 95, 130, 97, 98, 130, 100, - /* 940 */ 101, 130, 130, 130, 130, 87, 130, 130, 109, 130, - /* 950 */ 130, 112, 113, 95, 87, 97, 130, 130, 119, 101, - /* 960 */ 130, 130, 95, 124, 97, 98, 130, 100, 101, 130, - /* 970 */ 130, 113, 130, 130, 130, 130, 109, 119, 130, 112, - /* 980 */ 113, 130, 87, 130, 130, 130, 119, 130, 130, 130, - /* 990 */ 95, 124, 97, 98, 130, 100, 101, 130, 130, 130, - /* 1000 */ 130, 130, 130, 130, 109, 130, 130, 112, 113, 130, - /* 1010 */ 87, 130, 130, 130, 119, 130, 130, 130, 95, 124, - /* 1020 */ 97, 98, 130, 100, 101, 130, 130, 130, 130, 130, - /* 1030 */ 130, 130, 109, 130, 130, 112, 113, 130, 130, 130, - /* 1040 */ 87, 130, 119, 130, 130, 130, 130, 124, 95, 130, - /* 1050 */ 97, 98, 130, 100, 101, 130, 130, 130, 130, 87, - /* 1060 */ 130, 130, 109, 130, 130, 112, 113, 95, 87, 97, - /* 1070 */ 130, 130, 119, 101, 130, 130, 95, 124, 97, 98, - /* 1080 */ 130, 100, 101, 130, 130, 113, 130, 130, 130, 130, - /* 1090 */ 109, 119, 130, 112, 113, 130, 87, 130, 130, 130, - /* 1100 */ 119, 130, 130, 130, 95, 124, 97, 98, 130, 100, - /* 1110 */ 101, 130, 130, 130, 130, 130, 130, 130, 109, 130, - /* 1120 */ 130, 112, 113, 130, 87, 130, 130, 130, 119, 130, - /* 1130 */ 130, 130, 95, 124, 97, 98, 130, 130, 101, 130, - /* 1140 */ 130, 130, 130, 130, 130, 130, 109, 130, 130, 112, - /* 1150 */ 113, 130, 130, 130, 130, 130, 119, 130, 130, 130, - /* 1160 */ 87, 130, 130, 130, 127, 128, 130, 130, 95, 130, - /* 1170 */ 97, 98, 130, 100, 101, 130, 130, 130, 130, 87, - /* 1180 */ 130, 130, 109, 130, 130, 112, 113, 95, 87, 97, - /* 1190 */ 130, 130, 119, 101, 130, 130, 95, 124, 97, 98, - /* 1200 */ 130, 100, 101, 130, 130, 113, 130, 130, 130, 130, - /* 1210 */ 109, 119, 130, 112, 113, 130, 87, 130, 130, 130, - /* 1220 */ 119, 130, 130, 130, 95, 124, 97, 98, 130, 100, - /* 1230 */ 101, 130, 130, 130, 130, 130, 130, 130, 109, 130, - /* 1240 */ 130, 112, 113, 130, 87, 130, 130, 130, 119, 130, - /* 1250 */ 130, 130, 95, 124, 97, 98, 130, 100, 101, 130, - /* 1260 */ 130, 130, 130, 130, 130, 130, 109, 130, 130, 112, - /* 1270 */ 113, 130, 130, 130, 87, 130, 119, 130, 130, 130, - /* 1280 */ 130, 124, 95, 130, 97, 98, 130, 100, 101, 130, - /* 1290 */ 130, 130, 130, 130, 130, 130, 109, 130, 130, 112, - /* 1300 */ 113, 130, 87, 130, 130, 130, 119, 130, 130, 130, - /* 1310 */ 95, 124, 97, 98, 130, 87, 101, 130, 130, 130, - /* 1320 */ 130, 130, 130, 95, 109, 97, 98, 112, 113, 101, - /* 1330 */ 130, 130, 130, 130, 119, 130, 130, 109, 130, 130, - /* 1340 */ 112, 113, 87, 128, 116, 130, 130, 119, 130, 130, - /* 1350 */ 95, 130, 97, 98, 130, 130, 101, 130, 130, 130, - /* 1360 */ 130, 130, 87, 130, 109, 130, 130, 112, 113, 130, - /* 1370 */ 95, 116, 97, 98, 119, 87, 101, 130, 130, 130, - /* 1380 */ 130, 130, 130, 95, 109, 97, 98, 112, 113, 101, - /* 1390 */ 130, 116, 130, 130, 119, 130, 130, 109, 87, 130, - /* 1400 */ 112, 113, 130, 87, 116, 130, 95, 119, 97, 98, - /* 1410 */ 99, 95, 101, 97, 98, 99, 130, 101, 130, 130, - /* 1420 */ 109, 130, 130, 112, 113, 109, 130, 130, 112, 113, - /* 1430 */ 119, 87, 130, 130, 130, 119, 130, 130, 130, 95, - /* 1440 */ 87, 97, 98, 130, 130, 101, 130, 130, 95, 130, - /* 1450 */ 97, 98, 130, 109, 101, 130, 112, 113, 130, 87, - /* 1460 */ 130, 130, 109, 119, 130, 112, 113, 95, 130, 97, - /* 1470 */ 98, 130, 119, 101, 130, 130, 130, 130, 130, 87, - /* 1480 */ 130, 109, 130, 130, 112, 113, 130, 95, 87, 97, - /* 1490 */ 98, 119, 130, 101, 130, 130, 95, 130, 97, 98, - /* 1500 */ 130, 109, 101, 130, 112, 113, 130, 130, 87, 130, - /* 1510 */ 109, 119, 130, 112, 113, 130, 95, 87, 97, 98, - /* 1520 */ 119, 130, 101, 130, 130, 95, 130, 97, 98, 130, - /* 1530 */ 109, 101, 130, 112, 113, 130, 87, 130, 130, 109, - /* 1540 */ 119, 130, 112, 113, 95, 87, 97, 98, 130, 119, - /* 1550 */ 101, 130, 130, 95, 130, 97, 98, 130, 109, 101, - /* 1560 */ 130, 112, 113, 130, 130, 130, 130, 109, 119, 130, - /* 1570 */ 112, 113, 87, 130, 130, 130, 130, 119, 130, 130, - /* 1580 */ 95, 87, 97, 98, 130, 130, 101, 130, 130, 95, - /* 1590 */ 130, 97, 98, 130, 109, 101, 130, 112, 113, 130, - /* 1600 */ 130, 87, 130, 109, 119, 130, 112, 113, 130, 95, - /* 1610 */ 87, 97, 98, 119, 130, 101, 130, 130, 95, 130, - /* 1620 */ 97, 98, 130, 109, 101, 130, 112, 113, 130, 130, - /* 1630 */ 87, 130, 109, 119, 130, 112, 113, 130, 95, 130, - /* 1640 */ 97, 98, 119, 87, 101, 130, 130, 130, 130, 130, - /* 1650 */ 87, 95, 109, 97, 98, 112, 113, 101, 95, 130, - /* 1660 */ 97, 130, 119, 130, 101, 109, 130, 130, 112, 113, - /* 1670 */ 87, 130, 130, 130, 130, 119, 113, 130, 95, 87, - /* 1680 */ 97, 98, 119, 130, 101, 130, 130, 95, 130, 97, - /* 1690 */ 130, 130, 109, 101, 130, 112, 113, 130, 87, 87, - /* 1700 */ 130, 109, 119, 130, 112, 113, 95, 95, 97, 97, - /* 1710 */ 130, 119, 101, 101, 130, 130, 130, 130, 87, 130, - /* 1720 */ 109, 130, 130, 112, 113, 113, 95, 130, 97, 130, - /* 1730 */ 119, 119, 101, 130, 130, 130, 130, 130, 87, 130, - /* 1740 */ 109, 130, 130, 112, 113, 130, 95, 130, 97, 130, - /* 1750 */ 119, 130, 101, 130, 130, 130, 130, 130, 130, 130, - /* 1760 */ 130, 130, 130, 130, 113, 130, 130, 130, 130, 130, - /* 1770 */ 119, + /* 0 */ 23, 86, 87, 88, 89, 90, 56, 30, 9, 10, + /* 10 */ 25, 12, 27, 14, 29, 65, 31, 24, 41, 42, + /* 20 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + /* 30 */ 53, 54, 56, 23, 22, 22, 33, 61, 25, 26, + /* 40 */ 30, 65, 119, 33, 121, 69, 98, 70, 71, 72, + /* 50 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 30, + /* 60 */ 112, 113, 114, 1, 35, 34, 22, 23, 56, 25, + /* 70 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + /* 80 */ 51, 52, 53, 54, 23, 22, 83, 22, 25, 26, + /* 90 */ 25, 30, 88, 89, 90, 22, 33, 24, 25, 70, + /* 100 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + /* 110 */ 81, 38, 39, 22, 98, 42, 25, 56, 22, 99, + /* 120 */ 24, 25, 102, 23, 22, 23, 65, 25, 112, 56, + /* 130 */ 30, 66, 59, 60, 2, 62, 63, 64, 118, 37, + /* 140 */ 67, 41, 42, 43, 44, 45, 46, 47, 48, 49, + /* 150 */ 50, 51, 52, 53, 54, 82, 22, 66, 26, 25, + /* 160 */ 26, 28, 26, 67, 28, 22, 22, 24, 25, 25, + /* 170 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + /* 180 */ 80, 81, 39, 41, 42, 43, 44, 45, 46, 47, + /* 190 */ 48, 49, 50, 51, 52, 53, 54, 108, 90, 57, + /* 200 */ 66, 65, 24, 25, 96, 62, 63, 23, 22, 23, + /* 210 */ 121, 25, 70, 71, 72, 73, 74, 75, 76, 77, + /* 220 */ 78, 79, 80, 81, 1, 41, 42, 43, 44, 45, + /* 230 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 108, + /* 240 */ 23, 120, 89, 122, 123, 67, 23, 30, 103, 23, + /* 250 */ 33, 28, 121, 30, 70, 71, 72, 73, 74, 75, + /* 260 */ 76, 77, 78, 79, 80, 81, 37, 41, 42, 43, + /* 270 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + /* 280 */ 54, 98, 129, 130, 22, 56, 103, 25, 93, 94, + /* 290 */ 1, 28, 16, 17, 65, 112, 70, 71, 72, 73, + /* 300 */ 74, 75, 76, 77, 78, 79, 80, 81, 13, 41, + /* 310 */ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + /* 320 */ 52, 53, 54, 98, 61, 36, 22, 25, 103, 25, + /* 330 */ 123, 68, 122, 123, 122, 123, 25, 112, 70, 71, + /* 340 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + /* 350 */ 1, 83, 40, 41, 42, 43, 44, 45, 46, 47, + /* 360 */ 48, 49, 50, 51, 52, 53, 54, 1, 108, 105, + /* 370 */ 106, 23, 23, 23, 1, 58, 99, 66, 30, 102, + /* 380 */ 30, 121, 70, 71, 72, 73, 74, 75, 76, 77, + /* 390 */ 78, 79, 80, 81, 30, 118, 40, 113, 114, 91, + /* 400 */ 92, 124, 104, 37, 55, 41, 42, 43, 44, 45, + /* 410 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 98, + /* 420 */ 61, 55, 32, 104, 103, 69, 25, 68, 55, 23, + /* 430 */ 40, 26, 98, 112, 70, 71, 72, 73, 74, 75, + /* 440 */ 76, 77, 78, 79, 80, 81, 112, 41, 42, 43, + /* 450 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + /* 460 */ 54, 56, 108, 91, 92, 23, 23, 23, 91, 92, + /* 470 */ 65, 23, 30, 30, 30, 121, 70, 71, 72, 73, + /* 480 */ 74, 75, 76, 77, 78, 79, 80, 81, 119, 41, + /* 490 */ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + /* 500 */ 52, 53, 54, 23, 108, 23, 119, 23, 23, 57, + /* 510 */ 30, 89, 30, 23, 30, 30, 98, 121, 70, 71, + /* 520 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + /* 530 */ 112, 41, 42, 43, 44, 45, 46, 47, 48, 49, + /* 540 */ 50, 51, 52, 53, 54, 98, 23, 23, 119, 23, + /* 550 */ 23, 30, 130, 30, 30, 23, 30, 30, 25, 112, + /* 560 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + /* 570 */ 80, 81, 39, 41, 42, 43, 44, 45, 46, 47, + /* 580 */ 48, 49, 50, 51, 52, 53, 54, 23, 109, 23, + /* 590 */ 23, 122, 123, 104, 30, 26, 30, 30, 28, 24, + /* 600 */ 121, 104, 70, 71, 72, 73, 74, 75, 76, 77, + /* 610 */ 78, 79, 80, 81, 2, 41, 42, 43, 44, 45, + /* 620 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 1, + /* 630 */ 61, 117, 93, 94, 24, 65, 93, 94, 124, 24, + /* 640 */ 25, 36, 30, 69, 70, 71, 72, 73, 74, 75, + /* 650 */ 76, 77, 78, 79, 80, 81, 32, 30, 30, 25, + /* 660 */ 25, 93, 94, 23, 56, 41, 42, 43, 44, 45, + /* 670 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 98, + /* 680 */ 15, 11, 24, 26, 103, 26, 25, 24, 57, 25, + /* 690 */ 61, 69, 67, 112, 70, 71, 72, 73, 74, 75, + /* 700 */ 76, 77, 78, 79, 80, 81, 25, 41, 42, 43, + /* 710 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + /* 720 */ 54, 2, 108, 57, 25, 5, 23, 25, 18, 67, + /* 730 */ 23, 57, 39, 2, 98, 121, 70, 71, 72, 73, + /* 740 */ 74, 75, 76, 77, 78, 79, 80, 81, 112, 23, + /* 750 */ 33, 112, 30, 24, 30, 111, 119, 20, 120, 126, + /* 760 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + /* 770 */ 51, 52, 53, 54, 121, 108, 107, 56, 95, 119, + /* 780 */ 2, 30, 107, 105, 131, 131, 131, 131, 121, 70, + /* 790 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + /* 800 */ 81, 1, 41, 42, 43, 44, 45, 46, 47, 48, + /* 810 */ 49, 50, 51, 52, 53, 54, 108, 131, 131, 131, + /* 820 */ 131, 131, 131, 23, 131, 131, 131, 131, 131, 121, + /* 830 */ 30, 70, 71, 72, 73, 74, 75, 76, 77, 78, + /* 840 */ 79, 80, 81, 131, 98, 131, 8, 131, 131, 108, + /* 850 */ 131, 131, 131, 131, 22, 55, 24, 25, 112, 27, + /* 860 */ 22, 29, 121, 31, 22, 98, 24, 25, 131, 98, + /* 870 */ 38, 39, 126, 131, 42, 131, 38, 131, 131, 112, + /* 880 */ 38, 39, 131, 112, 42, 131, 131, 131, 56, 131, + /* 890 */ 1, 59, 60, 126, 62, 63, 64, 126, 56, 67, + /* 900 */ 68, 59, 60, 131, 62, 63, 64, 131, 131, 67, + /* 910 */ 68, 69, 23, 131, 82, 22, 131, 24, 25, 30, + /* 920 */ 82, 83, 84, 131, 82, 22, 131, 24, 25, 131, + /* 930 */ 131, 38, 39, 22, 23, 42, 25, 131, 131, 131, + /* 940 */ 131, 38, 39, 131, 55, 42, 131, 131, 37, 56, + /* 950 */ 131, 131, 59, 60, 131, 62, 63, 64, 98, 56, + /* 960 */ 67, 68, 59, 60, 131, 62, 63, 64, 8, 131, + /* 970 */ 67, 68, 112, 113, 114, 82, 22, 131, 24, 25, + /* 980 */ 131, 131, 22, 131, 131, 82, 22, 131, 24, 25, + /* 990 */ 131, 131, 38, 39, 131, 131, 42, 131, 38, 131, + /* 1000 */ 131, 131, 38, 39, 131, 131, 42, 131, 131, 131, + /* 1010 */ 56, 131, 131, 59, 60, 131, 62, 63, 64, 98, + /* 1020 */ 56, 67, 68, 59, 60, 131, 62, 63, 64, 131, + /* 1030 */ 131, 67, 68, 112, 113, 114, 82, 22, 131, 24, + /* 1040 */ 25, 131, 82, 83, 84, 131, 82, 22, 131, 24, + /* 1050 */ 25, 131, 131, 38, 39, 131, 131, 42, 131, 131, + /* 1060 */ 131, 131, 131, 38, 39, 131, 131, 42, 131, 131, + /* 1070 */ 131, 56, 131, 131, 59, 60, 131, 62, 63, 64, + /* 1080 */ 131, 56, 67, 68, 59, 60, 131, 62, 63, 64, + /* 1090 */ 131, 131, 67, 68, 131, 131, 131, 82, 22, 131, + /* 1100 */ 24, 25, 131, 131, 131, 98, 131, 82, 22, 131, + /* 1110 */ 24, 25, 131, 131, 38, 39, 131, 131, 42, 112, + /* 1120 */ 113, 114, 131, 131, 38, 39, 131, 131, 42, 131, + /* 1130 */ 131, 131, 56, 131, 131, 59, 60, 131, 62, 63, + /* 1140 */ 64, 131, 56, 67, 68, 59, 60, 131, 62, 63, + /* 1150 */ 64, 131, 131, 67, 131, 131, 131, 89, 82, 22, + /* 1160 */ 131, 24, 25, 131, 131, 97, 131, 99, 82, 131, + /* 1170 */ 102, 131, 131, 131, 131, 38, 39, 131, 110, 42, + /* 1180 */ 131, 131, 131, 115, 116, 131, 118, 3, 4, 131, + /* 1190 */ 6, 7, 8, 56, 131, 131, 59, 60, 131, 62, + /* 1200 */ 63, 64, 131, 19, 67, 89, 22, 131, 131, 131, + /* 1210 */ 131, 131, 131, 97, 131, 99, 100, 131, 102, 82, + /* 1220 */ 131, 131, 38, 131, 131, 89, 110, 131, 131, 131, + /* 1230 */ 131, 115, 116, 97, 118, 99, 100, 101, 102, 131, + /* 1240 */ 131, 131, 131, 127, 128, 131, 110, 131, 89, 131, + /* 1250 */ 131, 115, 116, 131, 118, 89, 97, 131, 99, 100, + /* 1260 */ 101, 102, 131, 97, 131, 99, 131, 131, 102, 110, + /* 1270 */ 131, 131, 131, 131, 115, 116, 110, 118, 131, 131, + /* 1280 */ 131, 115, 116, 89, 118, 131, 131, 89, 131, 131, + /* 1290 */ 131, 97, 131, 99, 100, 97, 102, 99, 100, 101, + /* 1300 */ 102, 131, 131, 131, 110, 4, 5, 6, 110, 115, + /* 1310 */ 116, 131, 118, 115, 116, 89, 118, 131, 131, 125, + /* 1320 */ 19, 20, 21, 97, 131, 99, 100, 89, 102, 131, + /* 1330 */ 131, 131, 131, 131, 131, 97, 110, 99, 100, 131, + /* 1340 */ 102, 115, 116, 131, 118, 131, 131, 131, 110, 89, + /* 1350 */ 131, 125, 131, 115, 116, 131, 118, 97, 131, 99, + /* 1360 */ 100, 131, 102, 125, 131, 131, 131, 131, 131, 131, + /* 1370 */ 110, 131, 131, 89, 131, 115, 116, 131, 118, 131, + /* 1380 */ 131, 97, 131, 99, 100, 89, 102, 131, 128, 131, + /* 1390 */ 131, 131, 131, 97, 110, 99, 100, 101, 102, 115, + /* 1400 */ 116, 131, 118, 131, 131, 89, 110, 131, 131, 125, + /* 1410 */ 131, 115, 116, 97, 118, 99, 100, 89, 102, 131, + /* 1420 */ 131, 105, 131, 131, 131, 97, 110, 99, 100, 101, + /* 1430 */ 102, 115, 116, 131, 118, 131, 131, 131, 110, 89, + /* 1440 */ 131, 131, 131, 115, 116, 131, 118, 97, 131, 99, + /* 1450 */ 100, 131, 102, 131, 131, 131, 131, 131, 131, 131, + /* 1460 */ 110, 131, 131, 89, 131, 115, 116, 131, 118, 131, + /* 1470 */ 131, 97, 131, 99, 100, 89, 102, 131, 131, 131, + /* 1480 */ 131, 131, 131, 97, 110, 99, 100, 89, 102, 115, + /* 1490 */ 116, 131, 118, 131, 131, 97, 110, 99, 100, 89, + /* 1500 */ 102, 115, 116, 131, 118, 131, 131, 97, 110, 99, + /* 1510 */ 100, 89, 102, 115, 116, 131, 118, 131, 131, 97, + /* 1520 */ 110, 99, 100, 131, 102, 115, 116, 131, 118, 131, + /* 1530 */ 131, 131, 110, 89, 131, 131, 131, 115, 116, 131, + /* 1540 */ 118, 97, 89, 99, 100, 131, 102, 131, 131, 131, + /* 1550 */ 97, 131, 99, 100, 110, 102, 131, 131, 131, 115, + /* 1560 */ 116, 131, 118, 110, 89, 131, 131, 131, 115, 116, + /* 1570 */ 131, 118, 97, 89, 99, 100, 131, 102, 131, 131, + /* 1580 */ 131, 97, 131, 99, 100, 110, 102, 131, 131, 131, + /* 1590 */ 115, 116, 131, 118, 110, 131, 131, 89, 131, 115, + /* 1600 */ 116, 89, 118, 131, 131, 97, 131, 99, 100, 97, + /* 1610 */ 102, 99, 100, 131, 102, 131, 131, 131, 110, 131, + /* 1620 */ 131, 131, 110, 115, 116, 131, 118, 115, 116, 131, + /* 1630 */ 118, 89, 131, 131, 131, 131, 131, 131, 131, 97, + /* 1640 */ 89, 99, 100, 131, 102, 131, 131, 131, 97, 131, + /* 1650 */ 99, 100, 110, 102, 131, 131, 131, 115, 116, 131, + /* 1660 */ 118, 110, 89, 131, 131, 131, 115, 116, 131, 118, + /* 1670 */ 97, 89, 99, 100, 131, 102, 131, 131, 131, 97, + /* 1680 */ 131, 99, 100, 110, 102, 131, 131, 131, 115, 116, + /* 1690 */ 131, 118, 110, 131, 131, 89, 131, 115, 116, 89, + /* 1700 */ 118, 131, 131, 97, 131, 99, 100, 97, 102, 99, + /* 1710 */ 100, 131, 102, 131, 131, 131, 110, 131, 131, 131, + /* 1720 */ 110, 115, 116, 131, 118, 115, 116, 131, 118, 89, + /* 1730 */ 131, 131, 131, 131, 131, 131, 131, 97, 89, 99, + /* 1740 */ 100, 131, 102, 131, 131, 131, 97, 131, 99, 100, + /* 1750 */ 110, 102, 131, 131, 131, 115, 116, 131, 118, 110, + /* 1760 */ 89, 131, 131, 131, 115, 116, 131, 118, 97, 89, + /* 1770 */ 99, 100, 131, 102, 131, 131, 131, 97, 131, 99, + /* 1780 */ 100, 110, 102, 131, 131, 131, 115, 116, 131, 118, + /* 1790 */ 110, 131, 131, 89, 131, 115, 116, 89, 118, 131, + /* 1800 */ 131, 97, 131, 99, 100, 97, 102, 99, 100, 131, + /* 1810 */ 102, 131, 131, 131, 110, 131, 131, 131, 110, 115, + /* 1820 */ 116, 131, 118, 115, 116, 131, 118, 89, 131, 131, + /* 1830 */ 131, 131, 131, 131, 131, 97, 89, 99, 100, 131, + /* 1840 */ 102, 131, 131, 131, 97, 131, 99, 100, 110, 102, + /* 1850 */ 131, 131, 131, 115, 116, 131, 118, 110, 89, 1, + /* 1860 */ 131, 131, 115, 116, 131, 118, 97, 89, 99, 131, + /* 1870 */ 131, 102, 131, 131, 131, 97, 131, 99, 131, 131, + /* 1880 */ 102, 23, 131, 131, 115, 116, 28, 118, 30, 131, + /* 1890 */ 131, 89, 131, 115, 116, 89, 118, 131, 131, 97, + /* 1900 */ 131, 99, 131, 97, 102, 99, 131, 131, 102, 131, + /* 1910 */ 131, 131, 131, 131, 56, 131, 131, 115, 116, 131, + /* 1920 */ 118, 115, 116, 65, 118, 89, 131, 131, 131, 131, + /* 1930 */ 131, 131, 131, 97, 89, 99, 131, 131, 102, 131, + /* 1940 */ 131, 131, 97, 131, 99, 131, 131, 102, 131, 131, + /* 1950 */ 131, 115, 116, 131, 118, 131, 89, 131, 131, 131, + /* 1960 */ 115, 116, 131, 118, 97, 89, 99, 131, 131, 102, + /* 1970 */ 131, 131, 131, 97, 131, 99, 131, 131, 102, 131, + /* 1980 */ 131, 131, 115, 116, 131, 118, 131, 131, 131, 131, + /* 1990 */ 131, 115, 116, 131, 118, ); - const YY_SHIFT_USE_DFLT = -49; - const YY_SHIFT_MAX = 260; + const YY_SHIFT_USE_DFLT = -51; + const YY_SHIFT_MAX = 246; static public $yy_shift_ofst = array( - /* 0 */ 679, 270, 342, 306, 342, 90, 90, 90, 90, 90, - /* 10 */ 90, 90, 90, 90, 126, 90, 90, 90, 90, -19, - /* 20 */ -19, 126, 54, 54, 54, 54, 54, 54, 54, 54, - /* 30 */ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - /* 40 */ 54, 54, 17, 162, 198, 198, 234, 378, 378, 378, - /* 50 */ 378, 378, 378, 446, 676, 734, 66, 588, 588, 679, - /* 60 */ 38, 782, -14, 76, 132, 171, 283, 274, 330, 486, - /* 70 */ 330, 486, 486, 330, 667, 587, 561, 364, 778, 74, - /* 80 */ 12, 94, 12, 12, 138, 177, 246, 577, 447, 574, - /* 90 */ 322, 447, 322, 447, 200, 322, 322, 447, 543, 447, - /* 100 */ 447, 447, 447, 574, 802, 802, 806, 232, 232, 232, - /* 110 */ 802, 824, 494, 384, 522, 468, 443, 547, 611, 611, - /* 120 */ 611, 611, 611, 611, 611, 611, 611, 167, 144, 127, - /* 130 */ 239, 208, 241, 252, 302, 390, 432, -48, 382, -5, - /* 140 */ 385, 388, -42, 106, 551, -42, 450, 497, 193, 44, - /* 150 */ 491, 492, 518, 523, 549, -42, 548, 235, 524, -42, - /* 160 */ -42, -36, 355, 459, 453, 451, 148, 400, 824, 812, - /* 170 */ 400, 400, 400, 812, 400, 232, 400, 232, 789, 400, - /* 180 */ 232, 232, 400, 498, 400, -49, -49, -49, -49, -49, - /* 190 */ -49, -49, 436, 109, 69, 29, 102, 217, 93, 187, - /* 200 */ 154, 93, 150, -27, 276, 423, 460, 37, -27, -27, - /* 210 */ 240, 68, 151, -27, 41, 743, 738, 742, 757, 715, - /* 220 */ 697, 704, 687, 732, 771, 754, 791, 747, 774, 646, - /* 230 */ 772, 776, 599, 281, 341, 70, 11, 122, 115, 402, - /* 240 */ 573, 790, 377, 245, 398, 346, 746, 745, 794, 717, - /* 250 */ 724, 685, 732, 766, 752, 713, 700, 759, 775, 717, - /* 260 */ 783, + /* 0 */ 1184, 1015, 832, 832, 964, 1025, 1076, 893, 893, 1015, + /* 10 */ 964, 893, 893, 842, 893, 893, 893, 893, 893, 893, + /* 20 */ 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, + /* 30 */ 893, 893, 893, 893, 893, 893, 893, 893, 893, 903, + /* 40 */ 954, 73, 73, 73, 1137, 73, 73, 73, 1086, 29, + /* 50 */ -23, 100, 364, 364, 96, 1184, 838, 1858, 800, 223, + /* 60 */ 178, 263, 628, 612, 612, 612, 312, 268, 226, 184, + /* 70 */ 142, 406, 624, 574, 448, 490, 532, 666, 719, 761, + /* 80 */ 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, + /* 90 */ 761, 761, 761, 761, 761, 1301, 960, 134, -1, -1, + /* 100 */ 63, -1, 136, 10, 217, 91, 144, 276, 304, 304, + /* 110 */ 304, 304, 615, 304, 570, 276, 276, 304, 304, 276, + /* 120 */ 144, 262, 304, 133, 722, 724, 133, 722, 729, 722, + /* 130 */ 889, 911, 102, -15, 349, 44, 13, 186, 366, 65, + /* 140 */ 566, 348, 526, 359, 524, 564, 359, 359, 523, 567, + /* 150 */ 373, 444, 443, 350, 12, 289, 485, 482, 527, 359, + /* 160 */ 484, 359, 480, 442, 62, 133, 133, 62, 729, 62, + /* 170 */ 721, 751, 62, 737, 133, 751, 62, 62, 778, 62, + /* 180 */ 133, 62, -51, -51, -51, -51, -51, -51, -51, -51, + /* 190 */ 143, -24, 61, 405, 229, 3, 533, 569, 390, 132, + /* 200 */ 356, -50, 311, -50, -50, -50, 295, 401, 717, 699, + /* 210 */ 452, 622, 631, 625, 702, 693, 674, 707, 662, 629, + /* 220 */ 663, 635, 634, 521, 610, 640, 608, 661, 657, 665, + /* 230 */ 670, 681, 658, 659, 605, 627, 710, 726, 703, 664, + /* 240 */ 720, 731, 302, -7, 31, 317, 575, ); - const YY_REDUCE_USE_DFLT = -53; - const YY_REDUCE_MAX = 191; + const YY_REDUCE_USE_DFLT = -86; + const YY_REDUCE_MAX = 189; static public $yy_reduce_ofst = array( - /* 0 */ -38, 668, 725, 753, 781, 1187, 895, 1157, 867, 809, - /* 10 */ 839, 953, 981, 1101, 1037, 923, 1129, 1009, 1073, 1316, - /* 20 */ 1311, 1215, 1228, 1255, 1288, 1275, 1430, 1458, 1556, 1583, - /* 30 */ 1523, 1449, 1485, 1494, 1514, 1421, 1392, 1344, 1543, 1353, - /* 40 */ 1372, 1401, 1631, 1592, 1611, 675, 612, 1612, 615, 858, - /* 50 */ 972, 1092, 1563, 1651, 89, 139, 121, -52, 292, 285, - /* 60 */ 216, 251, 305, 288, 273, 202, 180, 184, 220, 211, - /* 70 */ 256, 237, 184, 365, 260, 224, 260, 224, 203, 580, - /* 80 */ 534, 419, 509, 501, 481, 419, 481, 483, 521, 368, - /* 90 */ 530, 558, 528, 442, 403, 254, 338, 87, 368, 393, - /* 100 */ 368, 579, 652, 650, 608, 619, 597, 575, 589, 403, - /* 110 */ 609, 535, 272, 272, 272, 272, 272, 272, 272, 272, - /* 120 */ 272, 272, 272, 272, 272, 272, 272, 714, 714, 726, - /* 130 */ 714, 714, 714, 714, 414, 708, 708, 414, 708, 414, - /* 140 */ 708, 708, 701, 716, 708, 701, 708, 708, 414, 414, - /* 150 */ 708, 708, 708, 708, 708, 701, 708, 712, 708, 701, - /* 160 */ 701, 414, 414, 708, 708, 708, 414, 414, 748, 740, - /* 170 */ 414, 414, 414, 735, 414, -8, 414, -8, 719, 414, - /* 180 */ -8, -8, 414, 374, 414, 351, 438, 448, 527, 582, - /* 190 */ 513, 452, + /* 0 */ -85, 1116, 1136, 1159, 1328, 1296, 1316, 1284, 1194, 1260, + /* 10 */ 1198, 1226, 1238, 1484, 1475, 1508, 1512, 1542, 1453, 1444, + /* 20 */ 1386, 1374, 1398, 1410, 1422, 1551, 1573, 1704, 1738, 1708, + /* 30 */ 1350, 1747, 1680, 1671, 1606, 1582, 1610, 1640, 1649, 1068, + /* 40 */ 1166, 1769, 1876, 1867, 1845, 1806, 1836, 1778, 1802, 1007, + /* 50 */ 921, -52, 860, -52, 277, 4, 153, 321, 183, 225, + /* 60 */ 20, 121, 581, 746, 767, 771, 284, 284, 284, 284, + /* 70 */ 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + /* 80 */ 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + /* 90 */ 284, 284, 284, 284, 284, 108, 422, -77, 377, 308, + /* 100 */ 479, 372, 469, 636, 636, -77, 354, 543, 708, 354, + /* 110 */ 667, 741, 514, 614, 469, 539, 568, 89, 260, 195, + /* 120 */ 131, 354, 396, 212, 447, 334, 210, 418, 264, 16, + /* 130 */ 145, 653, 653, 644, 145, 653, 653, 653, 145, 653, + /* 140 */ 639, 639, 639, 638, 639, 639, 638, 638, 639, 639, + /* 150 */ 145, 639, 639, 639, 637, 145, 639, 639, 639, 638, + /* 160 */ 639, 638, 639, 639, 145, 207, 207, 145, 678, 145, + /* 170 */ 660, 669, 145, 683, 207, 675, 145, 145, 633, 145, + /* 180 */ 207, 145, 497, 429, 489, 387, 369, 298, 319, 145, ); static public $yyExpectedTokens = array( - /* 0 */ array(1, 2, 4, 5, 16, 19, 35, ), - /* 1 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 2 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 3 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 4 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 5 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 6 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 7 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 8 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 9 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 10 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 11 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 12 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 13 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 14 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 15 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 16 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 17 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 18 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 19 */ array(19, 21, 22, 24, 26, 28, 29, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 20 */ array(19, 21, 22, 24, 26, 28, 29, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 21 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 22 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 23 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 24 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 25 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 26 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 27 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 28 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 29 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 30 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 31 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 32 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 33 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 34 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 35 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 36 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 37 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 38 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 39 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 40 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 41 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 42 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, 55, ), - /* 43 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 44 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 45 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 46 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, 54, ), - /* 47 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 48 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 49 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 50 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 51 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 52 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 53 */ array(19, 21, 22, 28, 35, 36, 41, 44, 45, 47, 48, 49, 50, 53, ), - /* 54 */ array(20, 27, 56, 57, 69, 70, 71, 72, 73, 74, 75, 76, 77, ), - /* 55 */ array(20, 27, 56, 57, 69, 70, 71, 72, 73, 74, 75, 76, 77, ), - /* 56 */ array(19, 21, 22, 53, ), - /* 57 */ array(27, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 58 */ array(27, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 59 */ array(1, 2, 4, 5, 16, 19, 35, ), - /* 60 */ array(2, 3, 5, 16, 17, 18, ), - /* 61 */ array(4, 19, 35, 50, 81, 82, ), - /* 62 */ array(20, 25, 27, 41, 51, 56, ), - /* 63 */ array(2, 3, 5, 16, 18, ), - /* 64 */ array(20, 25, 27, 56, ), - /* 65 */ array(21, 22, 53, ), - /* 66 */ array(25, 46, 54, ), - /* 67 */ array(20, 27, 56, ), - /* 68 */ array(27, 38, ), - /* 69 */ array(27, 56, ), - /* 70 */ array(27, 38, ), - /* 71 */ array(27, 56, ), - /* 72 */ array(27, 56, ), - /* 73 */ array(27, 38, ), - /* 74 */ array(20, 27, 56, 57, 69, 70, 71, 72, 73, 74, 75, 76, 77, ), - /* 75 */ array(42, 56, 57, 69, 70, 71, 72, 73, 74, 75, 76, 77, ), - /* 76 */ array(42, 56, 57, 69, 70, 71, 72, 73, 74, 75, 76, 77, ), - /* 77 */ array(56, 57, 69, 70, 71, 72, 73, 74, 75, 76, 77, ), - /* 78 */ array(4, 19, 35, 50, 81, 82, ), - /* 79 */ array(19, 22, 23, 31, ), - /* 80 */ array(6, 7, 9, 11, ), - /* 81 */ array(19, 22, 23, 52, ), - /* 82 */ array(6, 7, 9, 11, ), - /* 83 */ array(6, 7, 9, 11, ), - /* 84 */ array(20, 27, 31, ), - /* 85 */ array(19, 22, 52, ), - /* 86 */ array(20, 27, 31, ), - /* 87 */ array(20, 27, ), - /* 88 */ array(19, 22, ), - /* 89 */ array(19, 22, ), - /* 90 */ array(13, 14, ), - /* 91 */ array(19, 22, ), - /* 92 */ array(13, 14, ), - /* 93 */ array(19, 22, ), - /* 94 */ array(23, 25, ), - /* 95 */ array(13, 14, ), - /* 96 */ array(13, 14, ), - /* 97 */ array(19, 22, ), - /* 98 */ array(19, 22, ), - /* 99 */ array(19, 22, ), - /* 100 */ array(19, 22, ), - /* 101 */ array(19, 22, ), - /* 102 */ array(19, 22, ), - /* 103 */ array(19, 22, ), - /* 104 */ array(27, ), - /* 105 */ array(27, ), - /* 106 */ array(27, ), - /* 107 */ array(25, ), - /* 108 */ array(25, ), - /* 109 */ array(25, ), - /* 110 */ array(27, ), - /* 111 */ array(21, ), - /* 112 */ array(42, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 113 */ array(20, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 114 */ array(42, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 115 */ array(30, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 116 */ array(42, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 117 */ array(20, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 118 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 119 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 120 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 121 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 122 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 123 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 124 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 125 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 126 */ array(58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 78, 79, 80, ), - /* 127 */ array(19, 20, 22, 34, ), - /* 128 */ array(19, 20, 22, 34, ), - /* 129 */ array(22, 24, 26, 29, ), - /* 130 */ array(19, 20, 22, ), - /* 131 */ array(19, 22, 23, ), - /* 132 */ array(19, 22, 52, ), - /* 133 */ array(19, 20, 22, ), - /* 134 */ array(38, 56, ), - /* 135 */ array(20, 27, ), - /* 136 */ array(20, 27, ), - /* 137 */ array(56, 81, ), - /* 138 */ array(20, 27, ), - /* 139 */ array(20, 56, ), - /* 140 */ array(20, 27, ), - /* 141 */ array(20, 27, ), - /* 142 */ array(46, 54, ), - /* 143 */ array(21, 22, ), - /* 144 */ array(20, 27, ), - /* 145 */ array(46, 54, ), - /* 146 */ array(20, 27, ), - /* 147 */ array(20, 27, ), - /* 148 */ array(20, 56, ), - /* 149 */ array(42, 56, ), - /* 150 */ array(20, 27, ), - /* 151 */ array(20, 27, ), - /* 152 */ array(20, 27, ), - /* 153 */ array(20, 27, ), - /* 154 */ array(20, 27, ), - /* 155 */ array(46, 54, ), - /* 156 */ array(20, 27, ), - /* 157 */ array(19, 41, ), - /* 158 */ array(20, 27, ), - /* 159 */ array(46, 54, ), - /* 160 */ array(46, 54, ), - /* 161 */ array(37, 56, ), - /* 162 */ array(38, 56, ), - /* 163 */ array(20, 27, ), - /* 164 */ array(20, 27, ), - /* 165 */ array(20, 27, ), - /* 166 */ array(20, 56, ), - /* 167 */ array(56, ), - /* 168 */ array(21, ), - /* 169 */ array(27, ), + /* 0 */ array(3, 4, 6, 7, 8, 19, 22, 38, ), + /* 1 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 2 */ array(22, 24, 25, 27, 29, 31, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 3 */ array(22, 24, 25, 27, 29, 31, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 4 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 5 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 6 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 7 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 8 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 9 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 10 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 11 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 12 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 13 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 69, 82, ), + /* 14 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 15 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 16 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 17 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 18 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 19 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 20 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 21 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 22 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 23 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 24 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 25 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 26 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 27 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 28 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 29 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 30 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 31 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 32 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 33 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 34 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 35 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 36 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 37 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 38 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 39 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 40 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 68, 82, ), + /* 41 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 42 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 43 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 44 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 45 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 46 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 47 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 48 */ array(22, 24, 25, 38, 39, 42, 56, 59, 60, 62, 63, 64, 67, 82, ), + /* 49 */ array(30, 35, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 50 */ array(23, 30, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 51 */ array(23, 30, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 52 */ array(30, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 53 */ array(30, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 54 */ array(22, 24, 25, 67, ), + /* 55 */ array(3, 4, 6, 7, 8, 19, 22, 38, ), + /* 56 */ array(8, 22, 38, 82, 83, 84, ), + /* 57 */ array(1, 23, 28, 30, 56, 65, ), + /* 58 */ array(1, 23, 30, 55, ), + /* 59 */ array(1, 23, 28, 30, ), + /* 60 */ array(24, 25, 67, ), + /* 61 */ array(28, 61, 68, ), + /* 62 */ array(1, 30, ), + /* 63 */ array(2, 30, ), + /* 64 */ array(2, 30, ), + /* 65 */ array(2, 30, ), + /* 66 */ array(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 67 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, ), + /* 68 */ array(23, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 69 */ array(23, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 70 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 71 */ array(23, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 72 */ array(32, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 73 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 74 */ array(23, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 75 */ array(23, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 76 */ array(23, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 77 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 57, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 78 */ array(2, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 79 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 80 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 81 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 82 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 83 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 84 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 85 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 86 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 87 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 88 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 89 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 90 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 91 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 92 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 93 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 94 */ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, ), + /* 95 */ array(4, 5, 6, 19, 20, 21, ), + /* 96 */ array(8, 22, 38, 82, 83, 84, ), + /* 97 */ array(22, 25, 26, 66, ), + /* 98 */ array(9, 10, 12, 14, ), + /* 99 */ array(9, 10, 12, 14, ), + /* 100 */ array(22, 25, 26, 33, ), + /* 101 */ array(9, 10, 12, 14, ), + /* 102 */ array(26, 28, 65, ), + /* 103 */ array(23, 30, 33, ), + /* 104 */ array(23, 30, 33, ), + /* 105 */ array(22, 25, 66, ), + /* 106 */ array(22, 25, ), + /* 107 */ array(16, 17, ), + /* 108 */ array(22, 25, ), + /* 109 */ array(22, 25, ), + /* 110 */ array(22, 25, ), + /* 111 */ array(22, 25, ), + /* 112 */ array(24, 25, ), + /* 113 */ array(22, 25, ), + /* 114 */ array(28, 65, ), + /* 115 */ array(16, 17, ), + /* 116 */ array(16, 17, ), + /* 117 */ array(22, 25, ), + /* 118 */ array(22, 25, ), + /* 119 */ array(16, 17, ), + /* 120 */ array(22, 25, ), + /* 121 */ array(22, 25, ), + /* 122 */ array(22, 25, ), + /* 123 */ array(28, ), + /* 124 */ array(30, ), + /* 125 */ array(30, ), + /* 126 */ array(28, ), + /* 127 */ array(30, ), + /* 128 */ array(24, ), + /* 129 */ array(30, ), + /* 130 */ array(1, 23, 30, 55, ), + /* 131 */ array(22, 23, 25, 37, ), + /* 132 */ array(22, 23, 25, 37, ), + /* 133 */ array(25, 27, 29, 31, ), + /* 134 */ array(1, 23, 55, ), + /* 135 */ array(22, 23, 25, ), + /* 136 */ array(22, 25, 26, ), + /* 137 */ array(22, 23, 25, ), + /* 138 */ array(1, 37, 55, ), + /* 139 */ array(22, 25, 66, ), + /* 140 */ array(23, 30, ), + /* 141 */ array(23, 30, ), + /* 142 */ array(23, 30, ), + /* 143 */ array(61, 68, ), + /* 144 */ array(23, 30, ), + /* 145 */ array(23, 30, ), + /* 146 */ array(61, 68, ), + /* 147 */ array(61, 68, ), + /* 148 */ array(23, 30, ), + /* 149 */ array(23, 30, ), + /* 150 */ array(1, 55, ), + /* 151 */ array(23, 30, ), + /* 152 */ array(23, 30, ), + /* 153 */ array(23, 30, ), + /* 154 */ array(22, 56, ), + /* 155 */ array(1, 36, ), + /* 156 */ array(23, 30, ), + /* 157 */ array(23, 30, ), + /* 158 */ array(23, 30, ), + /* 159 */ array(61, 68, ), + /* 160 */ array(23, 30, ), + /* 161 */ array(61, 68, ), + /* 162 */ array(23, 30, ), + /* 163 */ array(23, 30, ), + /* 164 */ array(1, ), + /* 165 */ array(28, ), + /* 166 */ array(28, ), + /* 167 */ array(1, ), + /* 168 */ array(24, ), + /* 169 */ array(1, ), /* 170 */ array(56, ), - /* 171 */ array(56, ), - /* 172 */ array(56, ), - /* 173 */ array(27, ), - /* 174 */ array(56, ), - /* 175 */ array(25, ), - /* 176 */ array(56, ), - /* 177 */ array(25, ), - /* 178 */ array(38, ), - /* 179 */ array(56, ), - /* 180 */ array(25, ), - /* 181 */ array(25, ), - /* 182 */ array(56, ), - /* 183 */ array(41, ), - /* 184 */ array(56, ), + /* 171 */ array(30, ), + /* 172 */ array(1, ), + /* 173 */ array(20, ), + /* 174 */ array(28, ), + /* 175 */ array(30, ), + /* 176 */ array(1, ), + /* 177 */ array(1, ), + /* 178 */ array(2, ), + /* 179 */ array(1, ), + /* 180 */ array(28, ), + /* 181 */ array(1, ), + /* 182 */ array(), + /* 183 */ array(), + /* 184 */ array(), /* 185 */ array(), /* 186 */ array(), /* 187 */ array(), /* 188 */ array(), /* 189 */ array(), - /* 190 */ array(), - /* 191 */ array(), - /* 192 */ array(19, 21, 22, 36, 47, 48, ), - /* 193 */ array(20, 27, 41, 51, ), - /* 194 */ array(41, 46, 51, 55, ), - /* 195 */ array(28, 39, 40, 55, ), - /* 196 */ array(20, 28, 39, 40, ), - /* 197 */ array(20, 27, 68, ), - /* 198 */ array(28, 39, 40, ), - /* 199 */ array(34, 41, 51, ), - /* 200 */ array(23, 41, 51, ), - /* 201 */ array(28, 39, 40, ), - /* 202 */ array(22, 52, ), - /* 203 */ array(41, 51, ), - /* 204 */ array(20, 68, ), - /* 205 */ array(30, 37, ), - /* 206 */ array(37, 55, ), - /* 207 */ array(23, 46, ), - /* 208 */ array(41, 51, ), - /* 209 */ array(41, 51, ), - /* 210 */ array(27, 28, ), - /* 211 */ array(23, 38, ), - /* 212 */ array(31, 81, ), - /* 213 */ array(41, 51, ), - /* 214 */ array(22, 36, ), - /* 215 */ array(15, ), - /* 216 */ array(22, ), - /* 217 */ array(22, ), - /* 218 */ array(21, ), - /* 219 */ array(20, ), - /* 220 */ array(21, ), - /* 221 */ array(22, ), - /* 222 */ array(42, ), - /* 223 */ array(43, ), - /* 224 */ array(27, ), - /* 225 */ array(46, ), - /* 226 */ array(23, ), - /* 227 */ array(55, ), - /* 228 */ array(22, ), - /* 229 */ array(36, ), - /* 230 */ array(21, ), - /* 231 */ array(42, ), - /* 232 */ array(42, ), - /* 233 */ array(31, ), - /* 234 */ array(33, ), - /* 235 */ array(10, ), - /* 236 */ array(21, ), - /* 237 */ array(33, ), - /* 238 */ array(8, ), - /* 239 */ array(22, ), - /* 240 */ array(22, ), - /* 241 */ array(53, ), - /* 242 */ array(17, ), - /* 243 */ array(20, ), + /* 190 */ array(22, 24, 25, 39, 62, 63, ), + /* 191 */ array(56, 61, 65, 69, ), + /* 192 */ array(23, 30, 56, 65, ), + /* 193 */ array(26, 56, 65, ), + /* 194 */ array(37, 56, 65, ), + /* 195 */ array(33, 83, ), + /* 196 */ array(25, 39, ), + /* 197 */ array(26, 61, ), + /* 198 */ array(32, 40, ), + /* 199 */ array(2, 26, ), + /* 200 */ array(40, 69, ), + /* 201 */ array(56, 65, ), + /* 202 */ array(25, 66, ), + /* 203 */ array(56, 65, ), + /* 204 */ array(56, 65, ), + /* 205 */ array(56, 65, ), + /* 206 */ array(13, ), + /* 207 */ array(25, ), + /* 208 */ array(33, ), + /* 209 */ array(25, ), + /* 210 */ array(57, ), + /* 211 */ array(69, ), + /* 212 */ array(57, ), + /* 213 */ array(67, ), + /* 214 */ array(25, ), + /* 215 */ array(39, ), + /* 216 */ array(57, ), + /* 217 */ array(23, ), + /* 218 */ array(67, ), + /* 219 */ array(61, ), + /* 220 */ array(24, ), + /* 221 */ array(25, ), + /* 222 */ array(25, ), + /* 223 */ array(30, ), + /* 224 */ array(24, ), + /* 225 */ array(23, ), + /* 226 */ array(56, ), + /* 227 */ array(25, ), + /* 228 */ array(26, ), + /* 229 */ array(15, ), + /* 230 */ array(11, ), + /* 231 */ array(25, ), + /* 232 */ array(24, ), + /* 233 */ array(26, ), + /* 234 */ array(36, ), + /* 235 */ array(30, ), + /* 236 */ array(18, ), + /* 237 */ array(23, ), + /* 238 */ array(23, ), + /* 239 */ array(25, ), + /* 240 */ array(5, ), + /* 241 */ array(2, ), + /* 242 */ array(25, ), + /* 243 */ array(24, ), /* 244 */ array(34, ), - /* 245 */ array(20, ), - /* 246 */ array(53, ), - /* 247 */ array(38, ), - /* 248 */ array(21, ), - /* 249 */ array(68, ), - /* 250 */ array(3, ), - /* 251 */ array(32, ), - /* 252 */ array(43, ), - /* 253 */ array(23, ), - /* 254 */ array(22, ), - /* 255 */ array(43, ), - /* 256 */ array(22, ), - /* 257 */ array(20, ), - /* 258 */ array(41, ), - /* 259 */ array(68, ), - /* 260 */ array(12, ), + /* 245 */ array(58, ), + /* 246 */ array(24, ), + /* 247 */ array(), + /* 248 */ array(), + /* 249 */ array(), + /* 250 */ array(), + /* 251 */ array(), + /* 252 */ array(), + /* 253 */ array(), + /* 254 */ array(), + /* 255 */ array(), + /* 256 */ array(), + /* 257 */ array(), + /* 258 */ array(), + /* 259 */ array(), + /* 260 */ array(), /* 261 */ array(), /* 262 */ array(), /* 263 */ array(), @@ -1019,78 +1063,53 @@ static public $yy_action = array( /* 381 */ array(), /* 382 */ array(), /* 383 */ array(), - /* 384 */ array(), - /* 385 */ array(), - /* 386 */ array(), - /* 387 */ array(), - /* 388 */ array(), - /* 389 */ array(), - /* 390 */ array(), - /* 391 */ array(), - /* 392 */ array(), - /* 393 */ array(), - /* 394 */ array(), - /* 395 */ array(), - /* 396 */ array(), - /* 397 */ array(), - /* 398 */ array(), - /* 399 */ array(), - /* 400 */ array(), - /* 401 */ array(), - /* 402 */ array(), - /* 403 */ array(), - /* 404 */ array(), - /* 405 */ array(), - /* 406 */ array(), ); static public $yy_default = array( - /* 0 */ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - /* 10 */ 611, 611, 611, 611, 596, 611, 611, 611, 611, 611, - /* 20 */ 611, 611, 554, 554, 554, 554, 611, 611, 611, 611, - /* 30 */ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - /* 40 */ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - /* 50 */ 611, 611, 611, 611, 564, 564, 611, 475, 475, 407, - /* 60 */ 611, 611, 611, 429, 611, 611, 516, 611, 475, 475, - /* 70 */ 475, 475, 475, 475, 564, 564, 564, 564, 611, 611, - /* 80 */ 417, 526, 417, 417, 497, 526, 497, 490, 611, 611, - /* 90 */ 423, 611, 423, 611, 519, 423, 423, 611, 611, 611, - /* 100 */ 611, 611, 611, 611, 475, 475, 475, 512, 511, 519, - /* 110 */ 475, 611, 611, 611, 611, 611, 611, 611, 577, 570, - /* 120 */ 574, 573, 569, 578, 478, 568, 562, 611, 611, 611, - /* 130 */ 611, 611, 527, 611, 611, 611, 611, 611, 611, 611, - /* 140 */ 611, 611, 546, 611, 611, 548, 611, 611, 611, 611, - /* 150 */ 611, 611, 611, 611, 611, 524, 611, 526, 611, 547, - /* 160 */ 545, 553, 611, 611, 611, 611, 611, 485, 611, 610, - /* 170 */ 496, 458, 495, 610, 597, 514, 598, 517, 489, 599, - /* 180 */ 513, 542, 482, 526, 565, 558, 558, 526, 526, 558, - /* 190 */ 558, 526, 611, 486, 611, 611, 611, 490, 559, 486, - /* 200 */ 481, 487, 611, 560, 490, 611, 611, 502, 579, 486, - /* 210 */ 611, 540, 497, 611, 611, 611, 611, 611, 611, 611, - /* 220 */ 611, 611, 611, 611, 611, 502, 481, 611, 611, 611, - /* 230 */ 611, 611, 611, 497, 611, 611, 611, 611, 611, 611, - /* 240 */ 611, 611, 611, 611, 490, 611, 611, 540, 611, 490, - /* 250 */ 611, 483, 563, 611, 611, 507, 611, 611, 515, 490, - /* 260 */ 611, 455, 601, 535, 537, 551, 534, 536, 532, 533, - /* 270 */ 549, 472, 480, 408, 469, 468, 466, 467, 531, 530, - /* 280 */ 509, 600, 603, 460, 484, 459, 609, 602, 604, 541, - /* 290 */ 529, 493, 510, 607, 608, 457, 571, 500, 499, 503, - /* 300 */ 504, 505, 498, 501, 474, 471, 557, 490, 491, 506, - /* 310 */ 544, 437, 508, 605, 438, 555, 492, 540, 520, 543, - /* 320 */ 525, 528, 539, 470, 465, 422, 419, 424, 420, 421, - /* 330 */ 418, 416, 410, 409, 411, 412, 413, 425, 414, 434, - /* 340 */ 433, 435, 436, 473, 432, 431, 426, 415, 427, 428, - /* 350 */ 430, 556, 606, 590, 576, 591, 592, 444, 575, 572, - /* 360 */ 443, 589, 507, 561, 563, 445, 446, 462, 461, 463, - /* 370 */ 464, 454, 449, 452, 448, 447, 450, 451, 453, 588, - /* 380 */ 587, 523, 522, 552, 593, 595, 521, 518, 440, 439, - /* 390 */ 488, 538, 494, 594, 550, 583, 582, 584, 585, 586, - /* 400 */ 581, 567, 580, 441, 442, 566, 456, + /* 0 */ 583, 566, 583, 583, 583, 583, 583, 537, 537, 583, + /* 10 */ 583, 537, 537, 583, 583, 583, 583, 583, 583, 583, + /* 20 */ 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + /* 30 */ 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + /* 40 */ 583, 583, 583, 583, 583, 583, 583, 583, 583, 451, + /* 50 */ 583, 583, 451, 451, 583, 384, 583, 462, 461, 583, + /* 60 */ 583, 545, 451, 451, 451, 451, 536, 583, 583, 583, + /* 70 */ 583, 583, 583, 583, 583, 583, 583, 583, 583, 453, + /* 80 */ 568, 484, 481, 457, 460, 433, 480, 477, 471, 567, + /* 90 */ 472, 473, 476, 468, 569, 583, 583, 508, 395, 395, + /* 100 */ 583, 395, 501, 485, 485, 508, 583, 401, 583, 583, + /* 110 */ 583, 583, 583, 583, 501, 401, 401, 583, 583, 401, + /* 120 */ 583, 583, 583, 540, 451, 451, 541, 451, 583, 451, + /* 130 */ 461, 583, 583, 583, 461, 583, 583, 583, 461, 509, + /* 140 */ 583, 583, 583, 531, 583, 583, 506, 529, 583, 583, + /* 150 */ 461, 583, 583, 583, 508, 583, 583, 583, 583, 530, + /* 160 */ 583, 528, 583, 583, 486, 542, 543, 465, 583, 466, + /* 170 */ 508, 582, 464, 407, 524, 582, 483, 487, 500, 488, + /* 180 */ 546, 470, 548, 508, 548, 508, 508, 548, 548, 549, + /* 190 */ 583, 462, 462, 456, 462, 485, 583, 490, 583, 522, + /* 200 */ 583, 583, 583, 482, 550, 462, 583, 583, 485, 583, + /* 210 */ 583, 583, 583, 583, 583, 583, 583, 583, 583, 490, + /* 220 */ 583, 583, 583, 583, 583, 583, 544, 583, 583, 583, + /* 230 */ 583, 583, 583, 456, 583, 583, 583, 583, 583, 583, + /* 240 */ 583, 522, 583, 583, 458, 495, 583, 445, 455, 398, + /* 250 */ 432, 386, 385, 434, 581, 443, 459, 444, 387, 442, + /* 260 */ 388, 573, 518, 394, 580, 515, 576, 579, 514, 519, + /* 270 */ 523, 532, 511, 512, 513, 397, 574, 390, 402, 436, + /* 280 */ 389, 435, 495, 396, 570, 534, 535, 575, 533, 400, + /* 290 */ 571, 572, 448, 427, 489, 547, 478, 479, 475, 474, + /* 300 */ 491, 469, 539, 538, 450, 447, 556, 557, 558, 559, + /* 310 */ 555, 554, 551, 552, 553, 492, 493, 496, 497, 499, + /* 320 */ 527, 463, 522, 502, 507, 510, 521, 520, 503, 415, + /* 330 */ 577, 494, 416, 498, 517, 504, 505, 516, 560, 561, + /* 340 */ 405, 429, 428, 425, 406, 426, 525, 526, 408, 424, + /* 350 */ 404, 437, 391, 430, 431, 403, 392, 393, 438, 439, + /* 360 */ 440, 423, 422, 565, 564, 578, 417, 563, 441, 562, + /* 370 */ 467, 446, 418, 419, 412, 411, 410, 409, 413, 414, + /* 380 */ 420, 421, 449, 399, ); - const YYNOCODE = 131; + const YYNOCODE = 132; const YYSTACKDEPTH = 100; - const YYNSTATE = 407; - const YYNRULE = 204; - const YYERRORSYMBOL = 83; + const YYNSTATE = 384; + const YYNRULE = 199; + const YYERRORSYMBOL = 85; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; static public $yyFallback = array( @@ -1119,39 +1138,39 @@ static public $yy_action = array( public $yystack = array(); /* The parser's stack */ public $yyTokenName = array( - '$', 'COMMENT', 'PHPSTARTTAG', 'PHPENDTAG', - 'OTHER', 'FAKEPHPSTARTTAG', 'PHP_CODE', 'PHP_CODE_START_DOUBLEQUOTE', - 'PHP_CODE_DOUBLEQUOTE', 'PHP_HEREDOC_START', 'PHP_HEREDOC_END', 'PHP_NOWDOC_START', - 'PHP_NOWDOC_END', 'PHP_DQ_CONTENT', 'PHP_DQ_EMBED_START', 'PHP_DQ_EMBED_END', - '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', 'php_code', 'php_code_element', 'php_dq_contents', - 'php_dq_content', 'literal_elements', 'literal_element', 'value', - 'attributes', 'variable', 'expr', 'ternary', - 'ifexprs', 'varindexed', 'modifier', 'modparameters', - 'statement', 'statements', 'optspace', 'varvar', - 'foraction', 'array', 'specialclose', 'attribute', - 'exprs', 'function', 'doublequoted', 'method', - 'params', 'objectchain', 'arrayindex', 'object', - 'indexdef', 'varvarele', 'objectelement', 'modparameter', - 'ifexpr', 'ifcond', 'lop', 'arrayelements', - 'arrayelement', 'doublequotedcontent', + '$', 'VERT', 'COLON', 'COMMENT', + 'PHPSTARTTAG', 'PHPENDTAG', 'FAKEPHPSTARTTAG', 'XMLTAG', + 'OTHER', 'PHP_CODE', 'PHP_CODE_START_DOUBLEQUOTE', 'PHP_CODE_DOUBLEQUOTE', + 'PHP_HEREDOC_START', 'PHP_HEREDOC_END', 'PHP_NOWDOC_START', 'PHP_NOWDOC_END', + 'PHP_DQ_CONTENT', 'PHP_DQ_EMBED_START', 'PHP_DQ_EMBED_END', 'LITERALSTART', + 'LITERALEND', 'LITERAL', 'LDEL', 'RDEL', + 'DOLLAR', 'ID', 'EQUAL', 'FOREACH', + 'PTR', 'IF', 'SPACE', 'FOR', + 'SEMICOLON', 'INCDEC', 'TO', 'STEP', + 'AS', 'APTR', 'LDELSLASH', 'INTEGER', + 'COMMA', 'MATH', 'UNIMATH', 'ANDSYM', + 'ISIN', 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN', + 'ISNOTEVEN', 'ISEVENBY', 'ISNOTEVENBY', 'ISODD', + 'ISNOTODD', 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF', + 'OPENP', 'CLOSEP', 'QMARK', 'NOT', + 'TYPECAST', 'DOT', 'BOOLEAN', 'NULL', + 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'AT', 'HATCH', + 'OPENB', 'CLOSEB', 'EQUALS', 'NOTEQUALS', + 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL', 'LESSEQUAL', + 'IDENTITY', 'NONEIDENTITY', 'MOD', 'LAND', + 'LOR', 'LXOR', 'QUOTE', 'BACKTICK', + 'DOLLARID', 'error', 'start', 'template', + 'template_element', 'smartytag', 'literal', 'php_code', + 'php_code_element', 'php_dq_contents', 'php_dq_content', 'literal_elements', + 'literal_element', 'value', 'attributes', 'variable', + 'expr', 'ternary', 'varindexed', 'modifier', + 'modparameters', 'statement', 'statements', 'optspace', + 'varvar', 'foraction', 'array', 'specialclose', + 'attribute', 'ifcond', 'lop', 'function', + 'doublequoted_with_quotes', 'static_class_access', 'object', 'arrayindex', + 'indexdef', 'varvarele', 'objectchain', 'objectelement', + 'method', 'params', 'modparameter', 'arrayelements', + 'arrayelement', 'doublequoted', 'doublequotedcontent', ); static public $yyRuleName = array( @@ -1162,203 +1181,198 @@ static public $yy_action = array( /* 4 */ "template_element ::= COMMENT", /* 5 */ "template_element ::= literal", /* 6 */ "template_element ::= PHPSTARTTAG php_code PHPENDTAG", - /* 7 */ "template_element ::= OTHER", - /* 8 */ "template_element ::= FAKEPHPSTARTTAG", - /* 9 */ "php_code ::= php_code_element php_code", - /* 10 */ "php_code ::=", - /* 11 */ "php_code_element ::= PHP_CODE", - /* 12 */ "php_code_element ::= PHP_CODE_START_DOUBLEQUOTE php_dq_contents PHP_CODE_DOUBLEQUOTE", - /* 13 */ "php_code_element ::= PHP_HEREDOC_START php_dq_contents PHP_HEREDOC_END", - /* 14 */ "php_code_element ::= PHP_NOWDOC_START php_dq_contents PHP_NOWDOC_END", - /* 15 */ "php_dq_contents ::= php_dq_content php_dq_contents", - /* 16 */ "php_dq_contents ::=", - /* 17 */ "php_dq_content ::= PHP_DQ_CONTENT", - /* 18 */ "php_dq_content ::= PHP_DQ_EMBED_START php_code PHP_DQ_EMBED_END", - /* 19 */ "literal ::= LITERALSTART LITERALEND", - /* 20 */ "literal ::= LITERALSTART literal_elements LITERALEND", - /* 21 */ "literal_elements ::= literal_element literal_elements", - /* 22 */ "literal_elements ::=", - /* 23 */ "literal_element ::= literal", - /* 24 */ "literal_element ::= LITERAL", - /* 25 */ "literal_element ::= PHPSTARTTAG", - /* 26 */ "literal_element ::= FAKEPHPSTARTTAG", - /* 27 */ "literal_element ::= PHPENDTAG", - /* 28 */ "smartytag ::= LDEL value RDEL", - /* 29 */ "smartytag ::= LDEL value attributes RDEL", - /* 30 */ "smartytag ::= LDEL variable attributes RDEL", - /* 31 */ "smartytag ::= LDEL expr attributes RDEL", - /* 32 */ "smartytag ::= LDEL ternary attributes RDEL", - /* 33 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL", - /* 34 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL", - /* 35 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL", - /* 36 */ "smartytag ::= LDEL DOLLAR ID EQUAL ifexprs attributes RDEL", + /* 7 */ "template_element ::= FAKEPHPSTARTTAG", + /* 8 */ "template_element ::= XMLTAG", + /* 9 */ "template_element ::= OTHER", + /* 10 */ "php_code ::= php_code_element php_code", + /* 11 */ "php_code ::=", + /* 12 */ "php_code_element ::= PHP_CODE", + /* 13 */ "php_code_element ::= PHP_CODE_START_DOUBLEQUOTE php_dq_contents PHP_CODE_DOUBLEQUOTE", + /* 14 */ "php_code_element ::= PHP_HEREDOC_START php_dq_contents PHP_HEREDOC_END", + /* 15 */ "php_code_element ::= PHP_NOWDOC_START php_dq_contents PHP_NOWDOC_END", + /* 16 */ "php_dq_contents ::= php_dq_content php_dq_contents", + /* 17 */ "php_dq_contents ::=", + /* 18 */ "php_dq_content ::= PHP_DQ_CONTENT", + /* 19 */ "php_dq_content ::= PHP_DQ_EMBED_START php_code PHP_DQ_EMBED_END", + /* 20 */ "literal ::= LITERALSTART LITERALEND", + /* 21 */ "literal ::= LITERALSTART literal_elements LITERALEND", + /* 22 */ "literal_elements ::= literal_elements literal_element", + /* 23 */ "literal_elements ::=", + /* 24 */ "literal_element ::= literal", + /* 25 */ "literal_element ::= LITERAL", + /* 26 */ "literal_element ::= PHPSTARTTAG", + /* 27 */ "literal_element ::= FAKEPHPSTARTTAG", + /* 28 */ "literal_element ::= PHPENDTAG", + /* 29 */ "smartytag ::= LDEL value RDEL", + /* 30 */ "smartytag ::= LDEL value attributes RDEL", + /* 31 */ "smartytag ::= LDEL variable attributes RDEL", + /* 32 */ "smartytag ::= LDEL expr attributes RDEL", + /* 33 */ "smartytag ::= LDEL ternary attributes RDEL", + /* 34 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL", + /* 35 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL", + /* 36 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL", /* 37 */ "smartytag ::= LDEL DOLLAR ID EQUAL ternary attributes RDEL", /* 38 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL", /* 39 */ "smartytag ::= LDEL varindexed EQUAL ternary attributes RDEL", - /* 40 */ "smartytag ::= LDEL varindexed EQUAL ifexprs attributes RDEL", - /* 41 */ "smartytag ::= LDEL ID attributes RDEL", - /* 42 */ "smartytag ::= LDEL FOREACH attributes RDEL", - /* 43 */ "smartytag ::= LDEL ID RDEL", - /* 44 */ "smartytag ::= LDEL ID PTR ID attributes RDEL", - /* 45 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL", - /* 46 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL", - /* 47 */ "smartytag ::= LDEL IF SPACE ifexprs RDEL", - /* 48 */ "smartytag ::= LDEL IF UNIMATH ifexprs RDEL", - /* 49 */ "smartytag ::= LDEL IF SPACE statement RDEL", - /* 50 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace ifexprs SEMICOLON optspace DOLLAR varvar foraction RDEL", - /* 51 */ "foraction ::= EQUAL expr", - /* 52 */ "foraction ::= INCDEC", - /* 53 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL", - /* 54 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL", - /* 55 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL", - /* 56 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL", - /* 57 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL", - /* 58 */ "smartytag ::= LDELSLASH ID RDEL", - /* 59 */ "smartytag ::= LDELSLASH specialclose RDEL", - /* 60 */ "specialclose ::= IF", - /* 61 */ "specialclose ::= FOR", - /* 62 */ "specialclose ::= FOREACH", - /* 63 */ "smartytag ::= LDELSLASH ID attributes RDEL", - /* 64 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL", - /* 65 */ "smartytag ::= LDELSLASH ID PTR ID RDEL", - /* 66 */ "attributes ::= attributes attribute", - /* 67 */ "attributes ::= attribute", - /* 68 */ "attributes ::=", - /* 69 */ "attribute ::= SPACE ID EQUAL ID", - /* 70 */ "attribute ::= SPACE ID EQUAL expr", - /* 71 */ "attribute ::= SPACE ID EQUAL ifexprs", - /* 72 */ "attribute ::= SPACE ID EQUAL value", - /* 73 */ "attribute ::= SPACE ID EQUAL ternary", - /* 74 */ "attribute ::= SPACE ID", - /* 75 */ "attribute ::= SPACE INTEGER EQUAL expr", - /* 76 */ "statements ::= statement", - /* 77 */ "statements ::= statements COMMA statement", - /* 78 */ "statement ::= DOLLAR varvar EQUAL expr", - /* 79 */ "expr ::= ID", - /* 80 */ "expr ::= exprs", - /* 81 */ "expr ::= DOLLAR ID COLON ID", - /* 82 */ "expr ::= expr modifier modparameters", - /* 83 */ "exprs ::= value", - /* 84 */ "exprs ::= exprs MATH value", - /* 85 */ "exprs ::= exprs UNIMATH value", - /* 86 */ "exprs ::= exprs ANDSYM value", - /* 87 */ "exprs ::= array", - /* 88 */ "ternary ::= OPENP ifexprs CLOSEP QMARK expr COLON expr", - /* 89 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr", - /* 90 */ "value ::= variable", - /* 91 */ "value ::= UNIMATH value", - /* 92 */ "value ::= NOT value", - /* 93 */ "value ::= TYPECAST value", - /* 94 */ "value ::= variable INCDEC", - /* 95 */ "value ::= INTEGER", - /* 96 */ "value ::= INTEGER DOT INTEGER", - /* 97 */ "value ::= BOOLEAN", - /* 98 */ "value ::= NULL", - /* 99 */ "value ::= function", - /* 100 */ "value ::= OPENP expr CLOSEP", - /* 101 */ "value ::= SINGLEQUOTESTRING", - /* 102 */ "value ::= QUOTE doublequoted QUOTE", - /* 103 */ "value ::= QUOTE QUOTE", - /* 104 */ "value ::= ID DOUBLECOLON method", - /* 105 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP", - /* 106 */ "value ::= ID DOUBLECOLON method objectchain", - /* 107 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain", - /* 108 */ "value ::= ID DOUBLECOLON ID", - /* 109 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex", - /* 110 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain", - /* 111 */ "value ::= smartytag", - /* 112 */ "variable ::= varindexed", - /* 113 */ "variable ::= DOLLAR varvar AT ID", - /* 114 */ "variable ::= object", - /* 115 */ "variable ::= HATCH ID HATCH", - /* 116 */ "variable ::= HATCH variable HATCH", - /* 117 */ "varindexed ::= DOLLAR varvar arrayindex", - /* 118 */ "arrayindex ::= arrayindex indexdef", - /* 119 */ "arrayindex ::=", - /* 120 */ "indexdef ::= DOT DOLLAR varvar", - /* 121 */ "indexdef ::= DOT DOLLAR varvar AT ID", - /* 122 */ "indexdef ::= DOT ID", - /* 123 */ "indexdef ::= DOT BOOLEAN", - /* 124 */ "indexdef ::= DOT NULL", - /* 125 */ "indexdef ::= DOT INTEGER", - /* 126 */ "indexdef ::= DOT LDEL exprs RDEL", - /* 127 */ "indexdef ::= OPENB ID CLOSEB", - /* 128 */ "indexdef ::= OPENB ID DOT ID CLOSEB", - /* 129 */ "indexdef ::= OPENB exprs CLOSEB", - /* 130 */ "indexdef ::= OPENB CLOSEB", - /* 131 */ "varvar ::= varvarele", - /* 132 */ "varvar ::= varvar varvarele", - /* 133 */ "varvarele ::= ID", - /* 134 */ "varvarele ::= LDEL expr RDEL", - /* 135 */ "object ::= varindexed objectchain", - /* 136 */ "objectchain ::= objectelement", - /* 137 */ "objectchain ::= objectchain objectelement", - /* 138 */ "objectelement ::= PTR ID arrayindex", - /* 139 */ "objectelement ::= PTR variable arrayindex", - /* 140 */ "objectelement ::= PTR LDEL expr RDEL arrayindex", - /* 141 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex", - /* 142 */ "objectelement ::= PTR method", - /* 143 */ "function ::= ID OPENP params CLOSEP", - /* 144 */ "method ::= ID OPENP params CLOSEP", - /* 145 */ "params ::= expr COMMA params", - /* 146 */ "params ::= expr", - /* 147 */ "params ::=", - /* 148 */ "modifier ::= VERT AT ID", - /* 149 */ "modifier ::= VERT ID", - /* 150 */ "modparameters ::= modparameters modparameter", - /* 151 */ "modparameters ::=", - /* 152 */ "modparameter ::= COLON exprs", - /* 153 */ "modparameter ::= COLON ID", - /* 154 */ "ifexprs ::= ifexpr", - /* 155 */ "ifexprs ::= NOT ifexprs", - /* 156 */ "ifexprs ::= OPENP ifexprs CLOSEP", - /* 157 */ "ifexpr ::= expr", - /* 158 */ "ifexpr ::= expr ifcond expr", - /* 159 */ "ifexpr ::= expr ISIN array", - /* 160 */ "ifexpr ::= expr ISIN value", - /* 161 */ "ifexpr ::= ifexprs lop ifexprs", - /* 162 */ "ifexpr ::= ifexprs ISDIVBY ifexprs", - /* 163 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs", - /* 164 */ "ifexpr ::= ifexprs ISEVEN", - /* 165 */ "ifexpr ::= ifexprs ISNOTEVEN", - /* 166 */ "ifexpr ::= ifexprs ISEVENBY ifexprs", - /* 167 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs", - /* 168 */ "ifexpr ::= ifexprs ISODD", - /* 169 */ "ifexpr ::= ifexprs ISNOTODD", - /* 170 */ "ifexpr ::= ifexprs ISODDBY ifexprs", - /* 171 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs", - /* 172 */ "ifexpr ::= value INSTANCEOF ID", - /* 173 */ "ifexpr ::= value INSTANCEOF value", - /* 174 */ "ifcond ::= EQUALS", - /* 175 */ "ifcond ::= NOTEQUALS", - /* 176 */ "ifcond ::= GREATERTHAN", - /* 177 */ "ifcond ::= LESSTHAN", - /* 178 */ "ifcond ::= GREATEREQUAL", - /* 179 */ "ifcond ::= LESSEQUAL", - /* 180 */ "ifcond ::= IDENTITY", - /* 181 */ "ifcond ::= NONEIDENTITY", - /* 182 */ "ifcond ::= MOD", - /* 183 */ "lop ::= LAND", - /* 184 */ "lop ::= LOR", - /* 185 */ "lop ::= LXOR", - /* 186 */ "array ::= OPENB arrayelements CLOSEB", - /* 187 */ "arrayelements ::= arrayelement", - /* 188 */ "arrayelements ::= arrayelements COMMA arrayelement", - /* 189 */ "arrayelements ::=", - /* 190 */ "arrayelement ::= value APTR expr", - /* 191 */ "arrayelement ::= ID APTR expr", - /* 192 */ "arrayelement ::= expr", - /* 193 */ "doublequoted ::= doublequoted doublequotedcontent", - /* 194 */ "doublequoted ::= doublequotedcontent", - /* 195 */ "doublequotedcontent ::= BACKTICK variable BACKTICK", - /* 196 */ "doublequotedcontent ::= BACKTICK expr BACKTICK", - /* 197 */ "doublequotedcontent ::= DOLLARID", - /* 198 */ "doublequotedcontent ::= LDEL variable RDEL", - /* 199 */ "doublequotedcontent ::= LDEL expr RDEL", - /* 200 */ "doublequotedcontent ::= smartytag", - /* 201 */ "doublequotedcontent ::= OTHER", - /* 202 */ "optspace ::= SPACE", - /* 203 */ "optspace ::=", + /* 40 */ "smartytag ::= LDEL ID attributes RDEL", + /* 41 */ "smartytag ::= LDEL FOREACH attributes RDEL", + /* 42 */ "smartytag ::= LDEL ID RDEL", + /* 43 */ "smartytag ::= LDEL ID PTR ID attributes RDEL", + /* 44 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL", + /* 45 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL", + /* 46 */ "smartytag ::= LDEL IF SPACE expr RDEL", + /* 47 */ "smartytag ::= LDEL IF SPACE statement RDEL", + /* 48 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction RDEL", + /* 49 */ "foraction ::= EQUAL expr", + /* 50 */ "foraction ::= INCDEC", + /* 51 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL", + /* 52 */ "smartytag ::= LDEL FOR SPACE statement TO expr STEP expr RDEL", + /* 53 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL", + /* 54 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL", + /* 55 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL", + /* 56 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL", + /* 57 */ "smartytag ::= LDELSLASH ID RDEL", + /* 58 */ "smartytag ::= LDELSLASH specialclose RDEL", + /* 59 */ "specialclose ::= IF", + /* 60 */ "specialclose ::= FOR", + /* 61 */ "specialclose ::= FOREACH", + /* 62 */ "smartytag ::= LDELSLASH ID attributes RDEL", + /* 63 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL", + /* 64 */ "smartytag ::= LDELSLASH ID PTR ID RDEL", + /* 65 */ "attributes ::= attributes attribute", + /* 66 */ "attributes ::= attribute", + /* 67 */ "attributes ::=", + /* 68 */ "attribute ::= SPACE ID EQUAL ID", + /* 69 */ "attribute ::= SPACE ID EQUAL expr", + /* 70 */ "attribute ::= SPACE ID EQUAL value", + /* 71 */ "attribute ::= SPACE ID EQUAL ternary", + /* 72 */ "attribute ::= SPACE ID", + /* 73 */ "attribute ::= SPACE INTEGER EQUAL expr", + /* 74 */ "statements ::= statement", + /* 75 */ "statements ::= statements COMMA statement", + /* 76 */ "statement ::= DOLLAR varvar EQUAL expr", + /* 77 */ "expr ::= value", + /* 78 */ "expr ::= ID", + /* 79 */ "expr ::= DOLLAR ID COLON ID", + /* 80 */ "expr ::= expr MATH value", + /* 81 */ "expr ::= expr UNIMATH value", + /* 82 */ "expr ::= expr ANDSYM value", + /* 83 */ "expr ::= array", + /* 84 */ "expr ::= expr ifcond expr", + /* 85 */ "expr ::= expr ISIN array", + /* 86 */ "expr ::= expr ISIN value", + /* 87 */ "expr ::= expr lop expr", + /* 88 */ "expr ::= expr ISDIVBY expr", + /* 89 */ "expr ::= expr ISNOTDIVBY expr", + /* 90 */ "expr ::= expr ISEVEN", + /* 91 */ "expr ::= expr ISNOTEVEN", + /* 92 */ "expr ::= expr ISEVENBY expr", + /* 93 */ "expr ::= expr ISNOTEVENBY expr", + /* 94 */ "expr ::= expr ISODD", + /* 95 */ "expr ::= expr ISNOTODD", + /* 96 */ "expr ::= expr ISODDBY expr", + /* 97 */ "expr ::= expr ISNOTODDBY expr", + /* 98 */ "expr ::= value INSTANCEOF ID", + /* 99 */ "expr ::= value INSTANCEOF value", + /* 100 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr", + /* 101 */ "value ::= variable", + /* 102 */ "value ::= UNIMATH value", + /* 103 */ "value ::= NOT value", + /* 104 */ "value ::= TYPECAST value", + /* 105 */ "value ::= variable INCDEC", + /* 106 */ "value ::= INTEGER", + /* 107 */ "value ::= INTEGER DOT INTEGER", + /* 108 */ "value ::= BOOLEAN", + /* 109 */ "value ::= NULL", + /* 110 */ "value ::= function", + /* 111 */ "value ::= OPENP expr CLOSEP", + /* 112 */ "value ::= SINGLEQUOTESTRING", + /* 113 */ "value ::= doublequoted_with_quotes", + /* 114 */ "value ::= ID DOUBLECOLON static_class_access", + /* 115 */ "value ::= smartytag", + /* 116 */ "value ::= value modifier modparameters", + /* 117 */ "variable ::= varindexed", + /* 118 */ "variable ::= DOLLAR varvar AT ID", + /* 119 */ "variable ::= object", + /* 120 */ "variable ::= HATCH ID HATCH", + /* 121 */ "variable ::= HATCH variable HATCH", + /* 122 */ "varindexed ::= DOLLAR varvar arrayindex", + /* 123 */ "arrayindex ::= arrayindex indexdef", + /* 124 */ "arrayindex ::=", + /* 125 */ "indexdef ::= DOT DOLLAR varvar", + /* 126 */ "indexdef ::= DOT DOLLAR varvar AT ID", + /* 127 */ "indexdef ::= DOT ID", + /* 128 */ "indexdef ::= DOT BOOLEAN", + /* 129 */ "indexdef ::= DOT NULL", + /* 130 */ "indexdef ::= DOT INTEGER", + /* 131 */ "indexdef ::= DOT LDEL expr RDEL", + /* 132 */ "indexdef ::= OPENB ID CLOSEB", + /* 133 */ "indexdef ::= OPENB ID DOT ID CLOSEB", + /* 134 */ "indexdef ::= OPENB expr CLOSEB", + /* 135 */ "indexdef ::= OPENB CLOSEB", + /* 136 */ "varvar ::= varvarele", + /* 137 */ "varvar ::= varvar varvarele", + /* 138 */ "varvarele ::= ID", + /* 139 */ "varvarele ::= LDEL expr RDEL", + /* 140 */ "object ::= varindexed objectchain", + /* 141 */ "object ::= varindexed DOUBLECOLON ID", + /* 142 */ "objectchain ::= objectelement", + /* 143 */ "objectchain ::= objectchain objectelement", + /* 144 */ "objectelement ::= PTR ID arrayindex", + /* 145 */ "objectelement ::= PTR variable arrayindex", + /* 146 */ "objectelement ::= PTR LDEL expr RDEL arrayindex", + /* 147 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex", + /* 148 */ "objectelement ::= PTR method", + /* 149 */ "function ::= ID OPENP params CLOSEP", + /* 150 */ "method ::= ID OPENP params CLOSEP", + /* 151 */ "params ::= expr COMMA params", + /* 152 */ "params ::= expr", + /* 153 */ "params ::=", + /* 154 */ "modifier ::= VERT AT ID", + /* 155 */ "modifier ::= VERT ID", + /* 156 */ "static_class_access ::= method", + /* 157 */ "static_class_access ::= DOLLAR ID OPENP params CLOSEP", + /* 158 */ "static_class_access ::= method objectchain", + /* 159 */ "static_class_access ::= DOLLAR ID OPENP params CLOSEP objectchain", + /* 160 */ "static_class_access ::= ID", + /* 161 */ "static_class_access ::= DOLLAR ID arrayindex", + /* 162 */ "static_class_access ::= DOLLAR ID arrayindex objectchain", + /* 163 */ "modparameters ::= modparameters modparameter", + /* 164 */ "modparameters ::=", + /* 165 */ "modparameter ::= COLON value", + /* 166 */ "modparameter ::= COLON ID", + /* 167 */ "ifcond ::= EQUALS", + /* 168 */ "ifcond ::= NOTEQUALS", + /* 169 */ "ifcond ::= GREATERTHAN", + /* 170 */ "ifcond ::= LESSTHAN", + /* 171 */ "ifcond ::= GREATEREQUAL", + /* 172 */ "ifcond ::= LESSEQUAL", + /* 173 */ "ifcond ::= IDENTITY", + /* 174 */ "ifcond ::= NONEIDENTITY", + /* 175 */ "ifcond ::= MOD", + /* 176 */ "lop ::= LAND", + /* 177 */ "lop ::= LOR", + /* 178 */ "lop ::= LXOR", + /* 179 */ "array ::= OPENB arrayelements CLOSEB", + /* 180 */ "arrayelements ::= arrayelement", + /* 181 */ "arrayelements ::= arrayelements COMMA arrayelement", + /* 182 */ "arrayelements ::=", + /* 183 */ "arrayelement ::= value APTR expr", + /* 184 */ "arrayelement ::= ID APTR expr", + /* 185 */ "arrayelement ::= expr", + /* 186 */ "doublequoted_with_quotes ::= QUOTE QUOTE", + /* 187 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE", + /* 188 */ "doublequoted ::= doublequoted doublequotedcontent", + /* 189 */ "doublequoted ::= doublequotedcontent", + /* 190 */ "doublequotedcontent ::= BACKTICK variable BACKTICK", + /* 191 */ "doublequotedcontent ::= BACKTICK expr BACKTICK", + /* 192 */ "doublequotedcontent ::= DOLLARID", + /* 193 */ "doublequotedcontent ::= LDEL variable RDEL", + /* 194 */ "doublequotedcontent ::= LDEL expr RDEL", + /* 195 */ "doublequotedcontent ::= smartytag", + /* 196 */ "doublequotedcontent ::= OTHER", + /* 197 */ "optspace ::= SPACE", + /* 198 */ "optspace ::=", ); function tokenName($tokenType) @@ -1632,126 +1646,131 @@ static public $yy_action = array( } static public $yyRuleInfo = array( - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 85, 'rhs' => 1 ), - array( 'lhs' => 85, 'rhs' => 2 ), array( 'lhs' => 86, 'rhs' => 1 ), - array( 'lhs' => 86, 'rhs' => 1 ), - array( 'lhs' => 86, 'rhs' => 1 ), - array( 'lhs' => 86, 'rhs' => 3 ), - array( 'lhs' => 86, 'rhs' => 1 ), - array( 'lhs' => 86, 'rhs' => 1 ), - array( 'lhs' => 89, 'rhs' => 2 ), - array( 'lhs' => 89, 'rhs' => 0 ), - array( 'lhs' => 90, 'rhs' => 1 ), - array( 'lhs' => 90, 'rhs' => 3 ), - array( 'lhs' => 90, 'rhs' => 3 ), - array( 'lhs' => 90, 'rhs' => 3 ), + array( 'lhs' => 87, 'rhs' => 1 ), + array( 'lhs' => 87, 'rhs' => 2 ), + array( 'lhs' => 88, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 3 ), + array( 'lhs' => 88, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 1 ), array( 'lhs' => 91, 'rhs' => 2 ), array( 'lhs' => 91, 'rhs' => 0 ), array( 'lhs' => 92, 'rhs' => 1 ), array( 'lhs' => 92, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 2 ), - array( 'lhs' => 88, 'rhs' => 3 ), + array( 'lhs' => 92, 'rhs' => 3 ), + array( 'lhs' => 92, 'rhs' => 3 ), array( 'lhs' => 93, 'rhs' => 2 ), array( 'lhs' => 93, 'rhs' => 0 ), array( 'lhs' => 94, 'rhs' => 1 ), - array( 'lhs' => 94, 'rhs' => 1 ), - array( 'lhs' => 94, 'rhs' => 1 ), - array( 'lhs' => 94, 'rhs' => 1 ), - array( 'lhs' => 94, 'rhs' => 1 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 7 ), - array( 'lhs' => 87, 'rhs' => 7 ), - array( 'lhs' => 87, 'rhs' => 7 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 8 ), - array( 'lhs' => 87, 'rhs' => 5 ), - array( 'lhs' => 87, 'rhs' => 5 ), - array( 'lhs' => 87, 'rhs' => 5 ), - array( 'lhs' => 87, 'rhs' => 13 ), - array( 'lhs' => 108, 'rhs' => 2 ), - array( 'lhs' => 108, 'rhs' => 1 ), - array( 'lhs' => 87, 'rhs' => 8 ), - array( 'lhs' => 87, 'rhs' => 8 ), - array( 'lhs' => 87, 'rhs' => 11 ), - array( 'lhs' => 87, 'rhs' => 8 ), - array( 'lhs' => 87, 'rhs' => 11 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 110, 'rhs' => 1 ), - array( 'lhs' => 110, 'rhs' => 1 ), - array( 'lhs' => 110, 'rhs' => 1 ), - array( 'lhs' => 87, 'rhs' => 4 ), - array( 'lhs' => 87, 'rhs' => 6 ), - array( 'lhs' => 87, 'rhs' => 5 ), - array( 'lhs' => 96, 'rhs' => 2 ), + array( 'lhs' => 94, 'rhs' => 3 ), + array( 'lhs' => 90, 'rhs' => 2 ), + array( 'lhs' => 90, 'rhs' => 3 ), + array( 'lhs' => 95, 'rhs' => 2 ), + array( 'lhs' => 95, 'rhs' => 0 ), array( 'lhs' => 96, 'rhs' => 1 ), - array( 'lhs' => 96, 'rhs' => 0 ), - array( 'lhs' => 111, 'rhs' => 4 ), - array( 'lhs' => 111, 'rhs' => 4 ), - array( 'lhs' => 111, 'rhs' => 4 ), - array( 'lhs' => 111, 'rhs' => 4 ), - array( 'lhs' => 111, 'rhs' => 4 ), - array( 'lhs' => 111, 'rhs' => 2 ), - array( 'lhs' => 111, 'rhs' => 4 ), - array( 'lhs' => 105, 'rhs' => 1 ), - array( 'lhs' => 105, 'rhs' => 3 ), - array( 'lhs' => 104, 'rhs' => 4 ), - array( 'lhs' => 98, 'rhs' => 1 ), + array( 'lhs' => 96, 'rhs' => 1 ), + array( 'lhs' => 96, 'rhs' => 1 ), + array( 'lhs' => 96, 'rhs' => 1 ), + array( 'lhs' => 96, 'rhs' => 1 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 7 ), + array( 'lhs' => 89, 'rhs' => 7 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 8 ), + array( 'lhs' => 89, 'rhs' => 5 ), + array( 'lhs' => 89, 'rhs' => 5 ), + array( 'lhs' => 89, 'rhs' => 13 ), + array( 'lhs' => 109, 'rhs' => 2 ), + array( 'lhs' => 109, 'rhs' => 1 ), + array( 'lhs' => 89, 'rhs' => 8 ), + array( 'lhs' => 89, 'rhs' => 9 ), + array( 'lhs' => 89, 'rhs' => 8 ), + array( 'lhs' => 89, 'rhs' => 11 ), + array( 'lhs' => 89, 'rhs' => 8 ), + array( 'lhs' => 89, 'rhs' => 11 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 111, 'rhs' => 1 ), + array( 'lhs' => 111, 'rhs' => 1 ), + array( 'lhs' => 111, 'rhs' => 1 ), + array( 'lhs' => 89, 'rhs' => 4 ), + array( 'lhs' => 89, 'rhs' => 6 ), + array( 'lhs' => 89, 'rhs' => 5 ), + array( 'lhs' => 98, 'rhs' => 2 ), array( 'lhs' => 98, 'rhs' => 1 ), - array( 'lhs' => 98, 'rhs' => 4 ), - array( 'lhs' => 98, 'rhs' => 3 ), - array( 'lhs' => 112, 'rhs' => 1 ), - array( 'lhs' => 112, 'rhs' => 3 ), - array( 'lhs' => 112, 'rhs' => 3 ), - array( 'lhs' => 112, 'rhs' => 3 ), - array( 'lhs' => 112, 'rhs' => 1 ), - array( 'lhs' => 99, 'rhs' => 7 ), - array( 'lhs' => 99, 'rhs' => 7 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 95, 'rhs' => 2 ), - array( 'lhs' => 95, 'rhs' => 2 ), - array( 'lhs' => 95, 'rhs' => 2 ), - array( 'lhs' => 95, 'rhs' => 2 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 95, 'rhs' => 3 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 95, 'rhs' => 3 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 95, 'rhs' => 3 ), - array( 'lhs' => 95, 'rhs' => 2 ), - array( 'lhs' => 95, 'rhs' => 3 ), - array( 'lhs' => 95, 'rhs' => 7 ), - array( 'lhs' => 95, 'rhs' => 4 ), - array( 'lhs' => 95, 'rhs' => 8 ), - array( 'lhs' => 95, 'rhs' => 3 ), - array( 'lhs' => 95, 'rhs' => 5 ), - array( 'lhs' => 95, 'rhs' => 6 ), - array( 'lhs' => 95, 'rhs' => 1 ), + array( 'lhs' => 98, 'rhs' => 0 ), + array( 'lhs' => 112, 'rhs' => 4 ), + array( 'lhs' => 112, 'rhs' => 4 ), + array( 'lhs' => 112, 'rhs' => 4 ), + array( 'lhs' => 112, 'rhs' => 4 ), + array( 'lhs' => 112, 'rhs' => 2 ), + array( 'lhs' => 112, 'rhs' => 4 ), + array( 'lhs' => 106, 'rhs' => 1 ), + array( 'lhs' => 106, 'rhs' => 3 ), + array( 'lhs' => 105, 'rhs' => 4 ), + array( 'lhs' => 100, 'rhs' => 1 ), + array( 'lhs' => 100, 'rhs' => 1 ), + array( 'lhs' => 100, 'rhs' => 4 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 1 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 2 ), + array( 'lhs' => 100, 'rhs' => 2 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 2 ), + array( 'lhs' => 100, 'rhs' => 2 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 100, 'rhs' => 3 ), + array( 'lhs' => 101, 'rhs' => 7 ), + array( 'lhs' => 97, 'rhs' => 1 ), + array( 'lhs' => 97, 'rhs' => 2 ), + array( 'lhs' => 97, 'rhs' => 2 ), + array( 'lhs' => 97, 'rhs' => 2 ), + array( 'lhs' => 97, 'rhs' => 2 ), + array( 'lhs' => 97, 'rhs' => 1 ), + array( 'lhs' => 97, 'rhs' => 3 ), + array( 'lhs' => 97, 'rhs' => 1 ), array( 'lhs' => 97, 'rhs' => 1 ), - array( 'lhs' => 97, 'rhs' => 4 ), array( 'lhs' => 97, 'rhs' => 1 ), array( 'lhs' => 97, 'rhs' => 3 ), + array( 'lhs' => 97, 'rhs' => 1 ), + array( 'lhs' => 97, 'rhs' => 1 ), array( 'lhs' => 97, 'rhs' => 3 ), - array( 'lhs' => 101, 'rhs' => 3 ), - array( 'lhs' => 118, 'rhs' => 2 ), - array( 'lhs' => 118, 'rhs' => 0 ), + array( 'lhs' => 97, 'rhs' => 1 ), + array( 'lhs' => 97, 'rhs' => 3 ), + array( 'lhs' => 99, 'rhs' => 1 ), + array( 'lhs' => 99, 'rhs' => 4 ), + array( 'lhs' => 99, 'rhs' => 1 ), + array( 'lhs' => 99, 'rhs' => 3 ), + array( 'lhs' => 99, 'rhs' => 3 ), + array( 'lhs' => 102, 'rhs' => 3 ), + array( 'lhs' => 119, 'rhs' => 2 ), + array( 'lhs' => 119, 'rhs' => 0 ), array( 'lhs' => 120, 'rhs' => 3 ), array( 'lhs' => 120, 'rhs' => 5 ), array( 'lhs' => 120, 'rhs' => 2 ), @@ -1763,100 +1782,92 @@ static public $yy_action = array( array( 'lhs' => 120, 'rhs' => 5 ), array( 'lhs' => 120, 'rhs' => 3 ), array( 'lhs' => 120, 'rhs' => 2 ), - array( 'lhs' => 107, 'rhs' => 1 ), - array( 'lhs' => 107, 'rhs' => 2 ), + array( 'lhs' => 108, 'rhs' => 1 ), + array( 'lhs' => 108, 'rhs' => 2 ), array( 'lhs' => 121, 'rhs' => 1 ), array( 'lhs' => 121, 'rhs' => 3 ), - array( 'lhs' => 119, 'rhs' => 2 ), - array( 'lhs' => 117, 'rhs' => 1 ), - array( 'lhs' => 117, 'rhs' => 2 ), - array( 'lhs' => 122, 'rhs' => 3 ), - array( 'lhs' => 122, 'rhs' => 3 ), - array( 'lhs' => 122, 'rhs' => 5 ), - array( 'lhs' => 122, 'rhs' => 6 ), + array( 'lhs' => 118, 'rhs' => 2 ), + array( 'lhs' => 118, 'rhs' => 3 ), + array( 'lhs' => 122, 'rhs' => 1 ), array( 'lhs' => 122, 'rhs' => 2 ), - array( 'lhs' => 113, 'rhs' => 4 ), - array( 'lhs' => 115, 'rhs' => 4 ), - array( 'lhs' => 116, 'rhs' => 3 ), - array( 'lhs' => 116, 'rhs' => 1 ), - array( 'lhs' => 116, 'rhs' => 0 ), - array( 'lhs' => 102, 'rhs' => 3 ), - array( 'lhs' => 102, 'rhs' => 2 ), - array( 'lhs' => 103, 'rhs' => 2 ), - array( 'lhs' => 103, 'rhs' => 0 ), - array( 'lhs' => 123, 'rhs' => 2 ), + array( 'lhs' => 123, 'rhs' => 3 ), + array( 'lhs' => 123, 'rhs' => 3 ), + array( 'lhs' => 123, 'rhs' => 5 ), + array( 'lhs' => 123, 'rhs' => 6 ), array( 'lhs' => 123, 'rhs' => 2 ), - array( 'lhs' => 100, 'rhs' => 1 ), - array( 'lhs' => 100, 'rhs' => 2 ), - array( 'lhs' => 100, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 1 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 2 ), - array( 'lhs' => 124, 'rhs' => 2 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 2 ), - array( 'lhs' => 124, 'rhs' => 2 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 125, 'rhs' => 1 ), + array( 'lhs' => 115, 'rhs' => 4 ), + array( 'lhs' => 124, 'rhs' => 4 ), + array( 'lhs' => 125, 'rhs' => 3 ), array( 'lhs' => 125, 'rhs' => 1 ), - array( 'lhs' => 126, 'rhs' => 1 ), - array( 'lhs' => 126, 'rhs' => 1 ), - array( 'lhs' => 126, 'rhs' => 1 ), - array( 'lhs' => 109, 'rhs' => 3 ), + array( 'lhs' => 125, 'rhs' => 0 ), + array( 'lhs' => 103, 'rhs' => 3 ), + array( 'lhs' => 103, 'rhs' => 2 ), + array( 'lhs' => 117, 'rhs' => 1 ), + array( 'lhs' => 117, 'rhs' => 5 ), + array( 'lhs' => 117, 'rhs' => 2 ), + array( 'lhs' => 117, 'rhs' => 6 ), + array( 'lhs' => 117, 'rhs' => 1 ), + array( 'lhs' => 117, 'rhs' => 3 ), + array( 'lhs' => 117, 'rhs' => 4 ), + array( 'lhs' => 104, 'rhs' => 2 ), + array( 'lhs' => 104, 'rhs' => 0 ), + array( 'lhs' => 126, 'rhs' => 2 ), + array( 'lhs' => 126, 'rhs' => 2 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 113, 'rhs' => 1 ), + array( 'lhs' => 114, 'rhs' => 1 ), + array( 'lhs' => 114, 'rhs' => 1 ), + array( 'lhs' => 114, 'rhs' => 1 ), + array( 'lhs' => 110, 'rhs' => 3 ), array( 'lhs' => 127, 'rhs' => 1 ), array( 'lhs' => 127, 'rhs' => 3 ), array( 'lhs' => 127, 'rhs' => 0 ), array( 'lhs' => 128, 'rhs' => 3 ), array( 'lhs' => 128, 'rhs' => 3 ), array( 'lhs' => 128, 'rhs' => 1 ), - array( 'lhs' => 114, 'rhs' => 2 ), - array( 'lhs' => 114, 'rhs' => 1 ), - array( 'lhs' => 129, 'rhs' => 3 ), - array( 'lhs' => 129, 'rhs' => 3 ), - array( 'lhs' => 129, 'rhs' => 1 ), - array( 'lhs' => 129, 'rhs' => 3 ), - array( 'lhs' => 129, 'rhs' => 3 ), - array( 'lhs' => 129, 'rhs' => 1 ), + array( 'lhs' => 116, 'rhs' => 2 ), + array( 'lhs' => 116, 'rhs' => 3 ), + array( 'lhs' => 129, 'rhs' => 2 ), array( 'lhs' => 129, 'rhs' => 1 ), - array( 'lhs' => 106, 'rhs' => 1 ), - array( 'lhs' => 106, 'rhs' => 0 ), + array( 'lhs' => 130, 'rhs' => 3 ), + array( 'lhs' => 130, 'rhs' => 3 ), + array( 'lhs' => 130, 'rhs' => 1 ), + array( 'lhs' => 130, 'rhs' => 3 ), + array( 'lhs' => 130, 'rhs' => 3 ), + array( 'lhs' => 130, 'rhs' => 1 ), + array( 'lhs' => 130, 'rhs' => 1 ), + array( 'lhs' => 107, 'rhs' => 1 ), + array( 'lhs' => 107, 'rhs' => 0 ), ); static public $yyReduceMap = array( 0 => 0, 5 => 0, - 11 => 0, - 17 => 0, - 23 => 0, + 12 => 0, + 18 => 0, 24 => 0, + 25 => 0, + 59 => 0, 60 => 0, 61 => 0, - 62 => 0, - 83 => 0, - 90 => 0, - 95 => 0, - 97 => 0, - 98 => 0, - 99 => 0, + 77 => 0, 101 => 0, - 114 => 0, - 187 => 0, + 106 => 0, + 108 => 0, + 109 => 0, + 110 => 0, + 112 => 0, + 113 => 0, + 119 => 0, + 156 => 0, + 180 => 0, 1 => 1, 2 => 2, 3 => 3, @@ -1865,128 +1876,124 @@ static public $yy_action = array( 7 => 7, 8 => 8, 9 => 9, - 15 => 9, - 21 => 9, - 91 => 9, - 93 => 9, - 94 => 9, 10 => 10, 16 => 10, - 19 => 10, 22 => 10, - 12 => 12, - 13 => 12, - 14 => 12, - 18 => 12, - 20 => 20, - 25 => 25, - 26 => 25, - 27 => 27, + 102 => 10, + 104 => 10, + 105 => 10, + 158 => 10, + 11 => 11, + 17 => 11, + 20 => 11, + 23 => 11, + 13 => 13, + 14 => 13, + 15 => 13, + 19 => 13, + 21 => 21, + 26 => 26, + 27 => 26, 28 => 28, 29 => 29, - 30 => 29, - 31 => 29, - 32 => 29, - 33 => 33, - 34 => 33, - 35 => 35, - 36 => 35, - 37 => 35, + 30 => 30, + 31 => 30, + 32 => 30, + 33 => 30, + 34 => 34, + 35 => 34, + 36 => 36, + 37 => 36, 38 => 38, 39 => 38, - 40 => 38, - 41 => 41, - 42 => 41, + 40 => 40, + 41 => 40, + 42 => 42, 43 => 43, 44 => 44, 45 => 45, 46 => 46, - 47 => 47, - 49 => 47, + 47 => 46, 48 => 48, + 49 => 49, 50 => 50, + 66 => 50, + 152 => 50, + 160 => 50, + 185 => 50, 51 => 51, 52 => 52, - 67 => 52, - 146 => 52, - 192 => 52, 53 => 53, 54 => 54, 55 => 55, 56 => 56, 57 => 57, - 58 => 58, - 59 => 58, + 58 => 57, + 62 => 62, 63 => 63, 64 => 64, 65 => 65, - 66 => 66, + 67 => 67, 68 => 68, 69 => 69, - 70 => 70, - 71 => 70, - 72 => 70, - 73 => 70, - 75 => 70, + 70 => 69, + 71 => 69, + 73 => 69, + 72 => 72, 74 => 74, + 75 => 75, 76 => 76, - 77 => 77, 78 => 78, 79 => 79, 80 => 80, - 87 => 80, - 131 => 80, - 154 => 80, - 194 => 80, - 201 => 80, - 202 => 80, - 81 => 81, - 82 => 82, + 81 => 80, + 82 => 80, + 83 => 83, + 136 => 83, + 197 => 83, 84 => 84, - 85 => 84, - 86 => 84, + 87 => 84, + 98 => 84, + 85 => 85, + 86 => 86, 88 => 88, - 89 => 88, + 89 => 89, + 90 => 90, + 95 => 90, + 91 => 91, + 94 => 91, 92 => 92, - 96 => 96, + 97 => 92, + 93 => 93, + 96 => 93, + 99 => 99, 100 => 100, - 102 => 102, 103 => 103, - 104 => 104, - 105 => 105, - 106 => 106, 107 => 107, - 108 => 108, - 109 => 109, - 110 => 110, 111 => 111, - 112 => 112, - 113 => 113, + 114 => 114, 115 => 115, 116 => 116, 117 => 117, 118 => 118, - 193 => 118, - 119 => 119, - 151 => 119, 120 => 120, 121 => 121, 122 => 122, - 123 => 122, - 124 => 122, + 123 => 123, + 124 => 124, + 164 => 124, 125 => 125, 126 => 126, - 129 => 126, 127 => 127, - 128 => 128, + 128 => 127, + 129 => 127, 130 => 130, - 203 => 130, + 131 => 131, + 134 => 131, 132 => 132, 133 => 133, - 134 => 134, - 156 => 134, 135 => 135, - 136 => 136, + 198 => 135, 137 => 137, 138 => 138, 139 => 139, @@ -1996,29 +2003,28 @@ static public $yy_action = array( 143 => 143, 144 => 144, 145 => 145, + 146 => 146, 147 => 147, 148 => 148, - 149 => 148, + 149 => 149, 150 => 150, - 152 => 152, + 151 => 151, 153 => 153, - 155 => 155, + 154 => 154, + 155 => 154, 157 => 157, - 158 => 158, - 161 => 158, - 172 => 158, 159 => 159, - 160 => 160, + 161 => 161, 162 => 162, 163 => 163, - 164 => 164, - 169 => 164, 165 => 165, - 168 => 165, 166 => 166, - 171 => 166, 167 => 167, - 170 => 167, + 168 => 168, + 169 => 169, + 170 => 170, + 171 => 171, + 172 => 172, 173 => 173, 174 => 174, 175 => 175, @@ -2026,28 +2032,26 @@ static public $yy_action = array( 177 => 177, 178 => 178, 179 => 179, - 180 => 180, 181 => 181, 182 => 182, 183 => 183, 184 => 184, - 185 => 185, 186 => 186, + 187 => 187, 188 => 188, 189 => 189, 190 => 190, - 191 => 191, + 191 => 190, + 193 => 190, + 192 => 192, + 194 => 194, 195 => 195, - 198 => 195, 196 => 196, - 197 => 197, - 199 => 199, - 200 => 200, ); -#line 81 "smarty_internal_templateparser.y" +#line 84 "smarty_internal_templateparser.y" function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2044 "smarty_internal_templateparser.php" -#line 87 "smarty_internal_templateparser.y" +#line 2048 "smarty_internal_templateparser.php" +#line 90 "smarty_internal_templateparser.y" function yy_r1(){if ($this->template->extract_code == false) { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } else { @@ -2055,8 +2059,8 @@ static public $yy_action = array( $this->template->extracted_compiled_code .= $this->yystack[$this->yyidx + 0]->minor; } } -#line 2053 "smarty_internal_templateparser.php" -#line 95 "smarty_internal_templateparser.y" +#line 2057 "smarty_internal_templateparser.php" +#line 98 "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 { @@ -2065,18 +2069,23 @@ static public $yy_action = array( $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } } -#line 2063 "smarty_internal_templateparser.php" -#line 108 "smarty_internal_templateparser.y" +#line 2067 "smarty_internal_templateparser.php" +#line 111 "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->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 2070 "smarty_internal_templateparser.php" -#line 115 "smarty_internal_templateparser.y" + } else { + $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; + } + $this->compiler->has_variable_string = false; + $this->block_nesting_level = count($this->compiler->_tag_stack); + } +#line 2079 "smarty_internal_templateparser.php" +#line 123 "smarty_internal_templateparser.y" function yy_r4(){ $this->_retvalue = ''; } -#line 2073 "smarty_internal_templateparser.php" -#line 121 "smarty_internal_templateparser.y" +#line 2082 "smarty_internal_templateparser.php" +#line 129 "smarty_internal_templateparser.y" function yy_r6(){ if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) { $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + -2]->minor) . str_replace('yystack[$this->yyidx + -1]->minor) . '?>'; @@ -2088,428 +2097,425 @@ static public $yy_action = array( $this->_retvalue = ''; } } -#line 2086 "smarty_internal_templateparser.php" -#line 135 "smarty_internal_templateparser.y" +#line 2095 "smarty_internal_templateparser.php" +#line 141 "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); + $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->yystack[$this->yyidx + 0]->minor; + $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor); } } -#line 2094 "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)); +#line 2103 "smarty_internal_templateparser.php" +#line 149 "smarty_internal_templateparser.y" + function yy_r8(){ $this->compiler->tag_nocache = true; $this->_retvalue = $this->compiler->processNocacheCode("", $this->compiler, true); } +#line 2106 "smarty_internal_templateparser.php" +#line 152 "smarty_internal_templateparser.y" + function yy_r9(){if ($this->lex->strip) { + $this->_retvalue = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor); } else { - $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor); + $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } } -#line 2102 "smarty_internal_templateparser.php" -#line 150 "smarty_internal_templateparser.y" - function yy_r9(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 2105 "smarty_internal_templateparser.php" -#line 151 "smarty_internal_templateparser.y" - function yy_r10(){ $this->_retvalue = ''; } -#line 2108 "smarty_internal_templateparser.php" -#line 154 "smarty_internal_templateparser.y" - function yy_r12(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 2111 "smarty_internal_templateparser.php" -#line 167 "smarty_internal_templateparser.y" - function yy_r20(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } #line 2114 "smarty_internal_templateparser.php" -#line 174 "smarty_internal_templateparser.y" - function yy_r25(){ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor); } +#line 160 "smarty_internal_templateparser.y" + function yy_r10(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } #line 2117 "smarty_internal_templateparser.php" -#line 176 "smarty_internal_templateparser.y" - function yy_r27(){ $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor); } +#line 161 "smarty_internal_templateparser.y" + function yy_r11(){ $this->_retvalue = ''; } #line 2120 "smarty_internal_templateparser.php" -#line 184 "smarty_internal_templateparser.y" - function yy_r28(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)); } +#line 164 "smarty_internal_templateparser.y" + function yy_r13(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } #line 2123 "smarty_internal_templateparser.php" -#line 185 "smarty_internal_templateparser.y" - function yy_r29(){ $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 177 "smarty_internal_templateparser.y" + function yy_r21(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } #line 2126 "smarty_internal_templateparser.php" -#line 196 "smarty_internal_templateparser.y" - function yy_r33(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")); } +#line 184 "smarty_internal_templateparser.y" + function yy_r26(){ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor); } #line 2129 "smarty_internal_templateparser.php" -#line 198 "smarty_internal_templateparser.y" - function yy_r35(){ $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 186 "smarty_internal_templateparser.y" + function yy_r28(){ $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor); } #line 2132 "smarty_internal_templateparser.php" -#line 201 "smarty_internal_templateparser.y" - function yy_r38(){ $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 194 "smarty_internal_templateparser.y" + function yy_r29(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)); } #line 2135 "smarty_internal_templateparser.php" -#line 205 "smarty_internal_templateparser.y" - function yy_r41(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); } +#line 195 "smarty_internal_templateparser.y" + function yy_r30(){ $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 2138 "smarty_internal_templateparser.php" -#line 207 "smarty_internal_templateparser.y" - function yy_r43(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array()); } +#line 206 "smarty_internal_templateparser.y" + function yy_r34(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")); } #line 2141 "smarty_internal_templateparser.php" -#line 209 "smarty_internal_templateparser.y" - function yy_r44(){ $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 208 "smarty_internal_templateparser.y" + function yy_r36(){ $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 2144 "smarty_internal_templateparser.php" -#line 211 "smarty_internal_templateparser.y" - function yy_r45(){ $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'_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 2147 "smarty_internal_templateparser.php" +#line 213 "smarty_internal_templateparser.y" + function yy_r40(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); } +#line 2150 "smarty_internal_templateparser.php" +#line 215 "smarty_internal_templateparser.y" + function yy_r42(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array()); } +#line 2153 "smarty_internal_templateparser.php" +#line 217 "smarty_internal_templateparser.y" + function yy_r43(){ $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 2156 "smarty_internal_templateparser.php" +#line 219 "smarty_internal_templateparser.y" + function yy_r44(){ $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'_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 2149 "smarty_internal_templateparser.php" -#line 215 "smarty_internal_templateparser.y" - function yy_r46(){ $this->_retvalue = ''.$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)).'_retvalue = ''.$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)).'_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 2154 "smarty_internal_templateparser.php" -#line 219 "smarty_internal_templateparser.y" - function yy_r47(){ $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 2157 "smarty_internal_templateparser.php" -#line 220 "smarty_internal_templateparser.y" - function yy_r48(){ $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 2160 "smarty_internal_templateparser.php" -#line 223 "smarty_internal_templateparser.y" - function yy_r50(){ - $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 2164 "smarty_internal_templateparser.php" -#line 225 "smarty_internal_templateparser.y" - function yy_r51(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; } -#line 2167 "smarty_internal_templateparser.php" -#line 226 "smarty_internal_templateparser.y" - function yy_r52(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2170 "smarty_internal_templateparser.php" +#line 2166 "smarty_internal_templateparser.php" #line 227 "smarty_internal_templateparser.y" - function yy_r53(){ $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 2173 "smarty_internal_templateparser.php" + function yy_r46(){ $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 2169 "smarty_internal_templateparser.php" #line 230 "smarty_internal_templateparser.y" - function yy_r54(){ - $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 2177 "smarty_internal_templateparser.php" -#line 232 "smarty_internal_templateparser.y" - function yy_r55(){ - $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 2181 "smarty_internal_templateparser.php" + function yy_r48(){ + $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 2173 "smarty_internal_templateparser.php" +#line 233 "smarty_internal_templateparser.y" + function yy_r49(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; } +#line 2176 "smarty_internal_templateparser.php" #line 234 "smarty_internal_templateparser.y" - function yy_r56(){ - $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 2185 "smarty_internal_templateparser.php" + function yy_r50(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 2179 "smarty_internal_templateparser.php" +#line 235 "smarty_internal_templateparser.y" + function yy_r51(){ $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 2182 "smarty_internal_templateparser.php" #line 236 "smarty_internal_templateparser.y" - function yy_r57(){ - $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_r52(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -7]->minor,array('start'=>$this->yystack[$this->yyidx + -5]->minor,'to'=>$this->yystack[$this->yyidx + -3]->minor,'step'=>$this->yystack[$this->yyidx + -1]->minor)); } +#line 2185 "smarty_internal_templateparser.php" +#line 238 "smarty_internal_templateparser.y" + function yy_r53(){ + $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 2189 "smarty_internal_templateparser.php" #line 240 "smarty_internal_templateparser.y" - function yy_r58(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array()); } -#line 2192 "smarty_internal_templateparser.php" -#line 245 "smarty_internal_templateparser.y" - function yy_r63(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); } -#line 2195 "smarty_internal_templateparser.php" -#line 246 "smarty_internal_templateparser.y" - function yy_r64(){ $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'_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 2193 "smarty_internal_templateparser.php" +#line 242 "smarty_internal_templateparser.y" + function yy_r55(){ + $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 2197 "smarty_internal_templateparser.php" +#line 244 "smarty_internal_templateparser.y" + function yy_r56(){ + $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 2201 "smarty_internal_templateparser.php" +#line 248 "smarty_internal_templateparser.y" + function yy_r57(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array()); } +#line 2204 "smarty_internal_templateparser.php" +#line 253 "smarty_internal_templateparser.y" + function yy_r62(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); } +#line 2207 "smarty_internal_templateparser.php" +#line 254 "smarty_internal_templateparser.y" + function yy_r63(){ $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'_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 2200 "smarty_internal_templateparser.php" -#line 250 "smarty_internal_templateparser.y" - function yy_r65(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); } -#line 2203 "smarty_internal_templateparser.php" -#line 257 "smarty_internal_templateparser.y" - function yy_r66(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); } -#line 2206 "smarty_internal_templateparser.php" -#line 261 "smarty_internal_templateparser.y" - function yy_r68(){ $this->_retvalue = array(); } -#line 2209 "smarty_internal_templateparser.php" -#line 264 "smarty_internal_templateparser.y" - function yy_r69(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); } #line 2212 "smarty_internal_templateparser.php" -#line 265 "smarty_internal_templateparser.y" - function yy_r70(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); } +#line 258 "smarty_internal_templateparser.y" + function yy_r64(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); } #line 2215 "smarty_internal_templateparser.php" -#line 269 "smarty_internal_templateparser.y" - function yy_r74(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); } +#line 265 "smarty_internal_templateparser.y" + function yy_r65(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); } #line 2218 "smarty_internal_templateparser.php" -#line 276 "smarty_internal_templateparser.y" - function yy_r76(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } +#line 269 "smarty_internal_templateparser.y" + function yy_r67(){ $this->_retvalue = array(); } #line 2221 "smarty_internal_templateparser.php" -#line 277 "smarty_internal_templateparser.y" - function yy_r77(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } +#line 272 "smarty_internal_templateparser.y" + function yy_r68(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); } #line 2224 "smarty_internal_templateparser.php" -#line 279 "smarty_internal_templateparser.y" - function yy_r78(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); } +#line 273 "smarty_internal_templateparser.y" + function yy_r69(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); } #line 2227 "smarty_internal_templateparser.php" -#line 285 "smarty_internal_templateparser.y" - function yy_r79(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } +#line 276 "smarty_internal_templateparser.y" + function yy_r72(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); } #line 2230 "smarty_internal_templateparser.php" -#line 286 "smarty_internal_templateparser.y" - function yy_r80(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 283 "smarty_internal_templateparser.y" + function yy_r74(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } #line 2233 "smarty_internal_templateparser.php" -#line 288 "smarty_internal_templateparser.y" - function yy_r81(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; } +#line 284 "smarty_internal_templateparser.y" + function yy_r75(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } #line 2236 "smarty_internal_templateparser.php" -#line 289 "smarty_internal_templateparser.y" - function yy_r82(){ $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 286 "smarty_internal_templateparser.y" + function yy_r76(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); } #line 2239 "smarty_internal_templateparser.php" #line 294 "smarty_internal_templateparser.y" - function yy_r84(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor; } + function yy_r78(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'"; } #line 2242 "smarty_internal_templateparser.php" -#line 307 "smarty_internal_templateparser.y" - function yy_r88(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; } +#line 296 "smarty_internal_templateparser.y" + function yy_r79(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; } #line 2245 "smarty_internal_templateparser.php" -#line 316 "smarty_internal_templateparser.y" - function yy_r92(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; } +#line 298 "smarty_internal_templateparser.y" + function yy_r80(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor; } #line 2248 "smarty_internal_templateparser.php" -#line 321 "smarty_internal_templateparser.y" - function yy_r96(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; } +#line 304 "smarty_internal_templateparser.y" + function yy_r83(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } #line 2251 "smarty_internal_templateparser.php" -#line 331 "smarty_internal_templateparser.y" - function yy_r100(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; } +#line 308 "smarty_internal_templateparser.y" + function yy_r84(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } #line 2254 "smarty_internal_templateparser.php" -#line 335 "smarty_internal_templateparser.y" - function yy_r102(){ $_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 309 "smarty_internal_templateparser.y" + function yy_r85(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 2257 "smarty_internal_templateparser.php" +#line 310 "smarty_internal_templateparser.y" + function yy_r86(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 2260 "smarty_internal_templateparser.php" +#line 312 "smarty_internal_templateparser.y" + function yy_r88(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; } #line 2263 "smarty_internal_templateparser.php" -#line 342 "smarty_internal_templateparser.y" - function yy_r103(){ $this->_retvalue = "''"; } +#line 313 "smarty_internal_templateparser.y" + function yy_r89(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; } #line 2266 "smarty_internal_templateparser.php" -#line 344 "smarty_internal_templateparser.y" - function yy_r104(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; } +#line 314 "smarty_internal_templateparser.y" + function yy_r90(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; } #line 2269 "smarty_internal_templateparser.php" -#line 345 "smarty_internal_templateparser.y" - function yy_r105(){ $this->prefix_number++; $this->compiler->prefix_code[] = '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 315 "smarty_internal_templateparser.y" + function yy_r91(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; } #line 2272 "smarty_internal_templateparser.php" -#line 347 "smarty_internal_templateparser.y" - function yy_r106(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } +#line 316 "smarty_internal_templateparser.y" + function yy_r92(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; } #line 2275 "smarty_internal_templateparser.php" -#line 348 "smarty_internal_templateparser.y" - function yy_r107(){ $this->prefix_number++; $this->compiler->prefix_code[] = '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 317 "smarty_internal_templateparser.y" + function yy_r93(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; } #line 2278 "smarty_internal_templateparser.php" -#line 350 "smarty_internal_templateparser.y" - function yy_r108(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; } +#line 323 "smarty_internal_templateparser.y" + function yy_r99(){$this->prefix_number++; $this->compiler->prefix_code[] = '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 2281 "smarty_internal_templateparser.php" -#line 352 "smarty_internal_templateparser.y" - function yy_r109(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } +#line 329 "smarty_internal_templateparser.y" + function yy_r100(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; } #line 2284 "smarty_internal_templateparser.php" -#line 354 "smarty_internal_templateparser.y" - function yy_r110(){ $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 336 "smarty_internal_templateparser.y" + function yy_r103(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; } #line 2287 "smarty_internal_templateparser.php" -#line 356 "smarty_internal_templateparser.y" - function yy_r111(){ $this->prefix_number++; $this->compiler->prefix_code[] = ''.$this->yystack[$this->yyidx + 0]->minor.'prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; } +#line 341 "smarty_internal_templateparser.y" + function yy_r107(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; } #line 2290 "smarty_internal_templateparser.php" -#line 365 "smarty_internal_templateparser.y" - function yy_r112(){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 2294 "smarty_internal_templateparser.php" -#line 368 "smarty_internal_templateparser.y" - function yy_r113(){ $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 2297 "smarty_internal_templateparser.php" +#line 351 "smarty_internal_templateparser.y" + function yy_r111(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; } +#line 2293 "smarty_internal_templateparser.php" +#line 357 "smarty_internal_templateparser.y" + function yy_r114(){if (!$this->template->security || $this->smarty->security_handler->isTrustedStaticClass($this->yystack[$this->yyidx + -2]->minor, $this->compiler)) { + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; + } } +#line 2298 "smarty_internal_templateparser.php" +#line 361 "smarty_internal_templateparser.y" + function yy_r115(){ $this->prefix_number++; $this->compiler->prefix_code[] = ''.$this->yystack[$this->yyidx + 0]->minor.'prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; } +#line 2301 "smarty_internal_templateparser.php" +#line 363 "smarty_internal_templateparser.y" + function yy_r116(){ $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 2304 "smarty_internal_templateparser.php" #line 372 "smarty_internal_templateparser.y" - function yy_r115(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; } -#line 2300 "smarty_internal_templateparser.php" -#line 373 "smarty_internal_templateparser.y" - function yy_r116(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; } -#line 2303 "smarty_internal_templateparser.php" -#line 376 "smarty_internal_templateparser.y" - function yy_r117(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); } -#line 2306 "smarty_internal_templateparser.php" -#line 382 "smarty_internal_templateparser.y" - function yy_r118(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 2309 "smarty_internal_templateparser.php" -#line 384 "smarty_internal_templateparser.y" - function yy_r119(){return; } -#line 2312 "smarty_internal_templateparser.php" -#line 388 "smarty_internal_templateparser.y" - function yy_r120(){ $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 2315 "smarty_internal_templateparser.php" + function yy_r117(){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 2308 "smarty_internal_templateparser.php" +#line 375 "smarty_internal_templateparser.y" + function yy_r118(){ $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 2311 "smarty_internal_templateparser.php" +#line 379 "smarty_internal_templateparser.y" + function yy_r120(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; } +#line 2314 "smarty_internal_templateparser.php" +#line 380 "smarty_internal_templateparser.y" + function yy_r121(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; } +#line 2317 "smarty_internal_templateparser.php" +#line 383 "smarty_internal_templateparser.y" + function yy_r122(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); } +#line 2320 "smarty_internal_templateparser.php" #line 389 "smarty_internal_templateparser.y" - function yy_r121(){ $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 2318 "smarty_internal_templateparser.php" -#line 392 "smarty_internal_templateparser.y" - function yy_r122(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; } -#line 2321 "smarty_internal_templateparser.php" + function yy_r123(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } +#line 2323 "smarty_internal_templateparser.php" +#line 391 "smarty_internal_templateparser.y" + function yy_r124(){return; } +#line 2326 "smarty_internal_templateparser.php" +#line 395 "smarty_internal_templateparser.y" + function yy_r125(){ $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 2329 "smarty_internal_templateparser.php" #line 396 "smarty_internal_templateparser.y" - function yy_r125(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; } -#line 2324 "smarty_internal_templateparser.php" + function yy_r126(){ $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 2332 "smarty_internal_templateparser.php" #line 397 "smarty_internal_templateparser.y" - function yy_r126(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; } -#line 2327 "smarty_internal_templateparser.php" -#line 399 "smarty_internal_templateparser.y" - function yy_r127(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; } -#line 2330 "smarty_internal_templateparser.php" -#line 400 "smarty_internal_templateparser.y" - function yy_r128(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; } -#line 2333 "smarty_internal_templateparser.php" + function yy_r127(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; } +#line 2335 "smarty_internal_templateparser.php" +#line 401 "smarty_internal_templateparser.y" + function yy_r130(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; } +#line 2338 "smarty_internal_templateparser.php" +#line 402 "smarty_internal_templateparser.y" + function yy_r131(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; } +#line 2341 "smarty_internal_templateparser.php" #line 404 "smarty_internal_templateparser.y" - function yy_r130(){$this->_retvalue = ''; } -#line 2336 "smarty_internal_templateparser.php" -#line 412 "smarty_internal_templateparser.y" - function yy_r132(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; } -#line 2339 "smarty_internal_templateparser.php" -#line 414 "smarty_internal_templateparser.y" - function yy_r133(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } -#line 2342 "smarty_internal_templateparser.php" + function yy_r132(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; } +#line 2344 "smarty_internal_templateparser.php" +#line 405 "smarty_internal_templateparser.y" + function yy_r133(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; } +#line 2347 "smarty_internal_templateparser.php" +#line 409 "smarty_internal_templateparser.y" + function yy_r135(){$this->_retvalue = ''; } +#line 2350 "smarty_internal_templateparser.php" #line 417 "smarty_internal_templateparser.y" - function yy_r134(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; } -#line 2345 "smarty_internal_templateparser.php" + function yy_r137(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; } +#line 2353 "smarty_internal_templateparser.php" +#line 419 "smarty_internal_templateparser.y" + function yy_r138(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } +#line 2356 "smarty_internal_templateparser.php" #line 422 "smarty_internal_templateparser.y" - function yy_r135(){ 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 2349 "smarty_internal_templateparser.php" -#line 425 "smarty_internal_templateparser.y" - function yy_r136(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2352 "smarty_internal_templateparser.php" + function yy_r139(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; } +#line 2359 "smarty_internal_templateparser.php" #line 427 "smarty_internal_templateparser.y" - function yy_r137(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 2355 "smarty_internal_templateparser.php" + function yy_r140(){ 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 2363 "smarty_internal_templateparser.php" #line 429 "smarty_internal_templateparser.y" - function yy_r138(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 2358 "smarty_internal_templateparser.php" -#line 430 "smarty_internal_templateparser.y" - function yy_r139(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } -#line 2361 "smarty_internal_templateparser.php" -#line 431 "smarty_internal_templateparser.y" - function yy_r140(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } -#line 2364 "smarty_internal_templateparser.php" -#line 432 "smarty_internal_templateparser.y" - function yy_r141(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } + function yy_r141(){ if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).'::'.$this->yystack[$this->yyidx + 0]->minor;} else { + $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -2]->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 + -2]->minor['var'],"'"), null, true, false)->nocache;} } #line 2367 "smarty_internal_templateparser.php" -#line 434 "smarty_internal_templateparser.y" - function yy_r142(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; } +#line 432 "smarty_internal_templateparser.y" + function yy_r142(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } #line 2370 "smarty_internal_templateparser.php" -#line 440 "smarty_internal_templateparser.y" - function yy_r143(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) { +#line 434 "smarty_internal_templateparser.y" + function yy_r143(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } +#line 2373 "smarty_internal_templateparser.php" +#line 436 "smarty_internal_templateparser.y" + function yy_r144(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } +#line 2376 "smarty_internal_templateparser.php" +#line 437 "smarty_internal_templateparser.y" + function yy_r145(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } +#line 2379 "smarty_internal_templateparser.php" +#line 438 "smarty_internal_templateparser.y" + function yy_r146(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } +#line 2382 "smarty_internal_templateparser.php" +#line 439 "smarty_internal_templateparser.y" + function yy_r147(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } +#line 2385 "smarty_internal_templateparser.php" +#line 441 "smarty_internal_templateparser.y" + function yy_r148(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; } +#line 2388 "smarty_internal_templateparser.php" +#line 447 "smarty_internal_templateparser.y" + function yy_r149(){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 2379 "smarty_internal_templateparser.php" -#line 451 "smarty_internal_templateparser.y" - function yy_r144(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; } -#line 2382 "smarty_internal_templateparser.php" -#line 455 "smarty_internal_templateparser.y" - function yy_r145(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; } -#line 2385 "smarty_internal_templateparser.php" -#line 459 "smarty_internal_templateparser.y" - function yy_r147(){ return; } -#line 2388 "smarty_internal_templateparser.php" -#line 464 "smarty_internal_templateparser.y" - function yy_r148(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2391 "smarty_internal_templateparser.php" -#line 477 "smarty_internal_templateparser.y" - function yy_r150(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 2394 "smarty_internal_templateparser.php" -#line 481 "smarty_internal_templateparser.y" - function yy_r152(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; } #line 2397 "smarty_internal_templateparser.php" -#line 482 "smarty_internal_templateparser.y" - function yy_r153(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } +#line 458 "smarty_internal_templateparser.y" + function yy_r150(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; } #line 2400 "smarty_internal_templateparser.php" -#line 489 "smarty_internal_templateparser.y" - function yy_r155(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; } +#line 462 "smarty_internal_templateparser.y" + function yy_r151(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; } #line 2403 "smarty_internal_templateparser.php" -#line 494 "smarty_internal_templateparser.y" - function yy_r157(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; } +#line 466 "smarty_internal_templateparser.y" + function yy_r153(){ return; } #line 2406 "smarty_internal_templateparser.php" -#line 495 "smarty_internal_templateparser.y" - function yy_r158(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } +#line 471 "smarty_internal_templateparser.y" + function yy_r154(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } #line 2409 "smarty_internal_templateparser.php" -#line 496 "smarty_internal_templateparser.y" - function yy_r159(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 476 "smarty_internal_templateparser.y" + function yy_r157(){ $this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = '$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; } #line 2412 "smarty_internal_templateparser.php" -#line 497 "smarty_internal_templateparser.y" - function yy_r160(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 479 "smarty_internal_templateparser.y" + function yy_r159(){ $this->prefix_number++; $this->compiler->prefix_code[] = 'prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = '$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; } #line 2415 "smarty_internal_templateparser.php" -#line 499 "smarty_internal_templateparser.y" - function yy_r162(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 483 "smarty_internal_templateparser.y" + function yy_r161(){ $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } #line 2418 "smarty_internal_templateparser.php" -#line 500 "smarty_internal_templateparser.y" - function yy_r163(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 485 "smarty_internal_templateparser.y" + function yy_r162(){ $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } #line 2421 "smarty_internal_templateparser.php" -#line 501 "smarty_internal_templateparser.y" - function yy_r164(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; } +#line 496 "smarty_internal_templateparser.y" + function yy_r163(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } #line 2424 "smarty_internal_templateparser.php" -#line 502 "smarty_internal_templateparser.y" - function yy_r165(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; } +#line 500 "smarty_internal_templateparser.y" + function yy_r165(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; } #line 2427 "smarty_internal_templateparser.php" -#line 503 "smarty_internal_templateparser.y" - function yy_r166(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; } +#line 501 "smarty_internal_templateparser.y" + function yy_r166(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } #line 2430 "smarty_internal_templateparser.php" #line 504 "smarty_internal_templateparser.y" - function yy_r167(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; } + function yy_r167(){$this->_retvalue = '=='; } #line 2433 "smarty_internal_templateparser.php" -#line 510 "smarty_internal_templateparser.y" - function yy_r173(){$this->prefix_number++; $this->compiler->prefix_code[] = '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 505 "smarty_internal_templateparser.y" + function yy_r168(){$this->_retvalue = '!='; } #line 2436 "smarty_internal_templateparser.php" -#line 512 "smarty_internal_templateparser.y" - function yy_r174(){$this->_retvalue = '=='; } +#line 506 "smarty_internal_templateparser.y" + function yy_r169(){$this->_retvalue = '>'; } #line 2439 "smarty_internal_templateparser.php" -#line 513 "smarty_internal_templateparser.y" - function yy_r175(){$this->_retvalue = '!='; } +#line 507 "smarty_internal_templateparser.y" + function yy_r170(){$this->_retvalue = '<'; } #line 2442 "smarty_internal_templateparser.php" -#line 514 "smarty_internal_templateparser.y" - function yy_r176(){$this->_retvalue = '>'; } +#line 508 "smarty_internal_templateparser.y" + function yy_r171(){$this->_retvalue = '>='; } #line 2445 "smarty_internal_templateparser.php" -#line 515 "smarty_internal_templateparser.y" - function yy_r177(){$this->_retvalue = '<'; } +#line 509 "smarty_internal_templateparser.y" + function yy_r172(){$this->_retvalue = '<='; } #line 2448 "smarty_internal_templateparser.php" -#line 516 "smarty_internal_templateparser.y" - function yy_r178(){$this->_retvalue = '>='; } +#line 510 "smarty_internal_templateparser.y" + function yy_r173(){$this->_retvalue = '==='; } #line 2451 "smarty_internal_templateparser.php" -#line 517 "smarty_internal_templateparser.y" - function yy_r179(){$this->_retvalue = '<='; } +#line 511 "smarty_internal_templateparser.y" + function yy_r174(){$this->_retvalue = '!=='; } #line 2454 "smarty_internal_templateparser.php" -#line 518 "smarty_internal_templateparser.y" - function yy_r180(){$this->_retvalue = '==='; } +#line 512 "smarty_internal_templateparser.y" + function yy_r175(){$this->_retvalue = '%'; } #line 2457 "smarty_internal_templateparser.php" -#line 519 "smarty_internal_templateparser.y" - function yy_r181(){$this->_retvalue = '!=='; } +#line 514 "smarty_internal_templateparser.y" + function yy_r176(){$this->_retvalue = '&&'; } #line 2460 "smarty_internal_templateparser.php" -#line 520 "smarty_internal_templateparser.y" - function yy_r182(){$this->_retvalue = '%'; } +#line 515 "smarty_internal_templateparser.y" + function yy_r177(){$this->_retvalue = '||'; } #line 2463 "smarty_internal_templateparser.php" -#line 522 "smarty_internal_templateparser.y" - function yy_r183(){$this->_retvalue = '&&'; } +#line 516 "smarty_internal_templateparser.y" + function yy_r178(){$this->_retvalue = ' XOR '; } #line 2466 "smarty_internal_templateparser.php" -#line 523 "smarty_internal_templateparser.y" - function yy_r184(){$this->_retvalue = '||'; } +#line 521 "smarty_internal_templateparser.y" + function yy_r179(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; } #line 2469 "smarty_internal_templateparser.php" -#line 524 "smarty_internal_templateparser.y" - function yy_r185(){$this->_retvalue = ' XOR '; } +#line 523 "smarty_internal_templateparser.y" + function yy_r181(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; } #line 2472 "smarty_internal_templateparser.php" -#line 529 "smarty_internal_templateparser.y" - function yy_r186(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; } +#line 524 "smarty_internal_templateparser.y" + function yy_r182(){ return; } #line 2475 "smarty_internal_templateparser.php" -#line 531 "smarty_internal_templateparser.y" - function yy_r188(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; } +#line 525 "smarty_internal_templateparser.y" + function yy_r183(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; } #line 2478 "smarty_internal_templateparser.php" -#line 532 "smarty_internal_templateparser.y" - function yy_r189(){ return; } +#line 526 "smarty_internal_templateparser.y" + function yy_r184(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; } #line 2481 "smarty_internal_templateparser.php" #line 533 "smarty_internal_templateparser.y" - function yy_r190(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; } + function yy_r186(){ $this->_retvalue = "''"; } #line 2484 "smarty_internal_templateparser.php" #line 534 "smarty_internal_templateparser.y" - function yy_r191(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; } + function yy_r187(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php(); } #line 2487 "smarty_internal_templateparser.php" -#line 543 "smarty_internal_templateparser.y" - function yy_r195(){if (substr($this->yystack[$this->yyidx + -1]->minor,0,1) == '\'' || substr($this->yystack[$this->yyidx + -1]->minor,0,1) == '@') { - $this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; $this->compiler->has_variable_string = true; - } else { - $this->_retvalue = '{'.$this->yystack[$this->yyidx + -1]->minor.'}'; $this->compiler->has_variable_string = true; - } - } -#line 2495 "smarty_internal_templateparser.php" -#line 549 "smarty_internal_templateparser.y" - function yy_r196(){$this->_retvalue = '{'.$this->yystack[$this->yyidx + -1]->minor.'}'; $this->compiler->has_variable_string = true; } -#line 2498 "smarty_internal_templateparser.php" +#line 536 "smarty_internal_templateparser.y" + function yy_r188(){ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } +#line 2490 "smarty_internal_templateparser.php" +#line 537 "smarty_internal_templateparser.y" + function yy_r189(){ $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor); } +#line 2493 "smarty_internal_templateparser.php" +#line 539 "smarty_internal_templateparser.y" + function yy_r190(){ $this->_retvalue = new _smarty_code($this, $this->yystack[$this->yyidx + -1]->minor); } +#line 2496 "smarty_internal_templateparser.php" +#line 541 "smarty_internal_templateparser.y" + function yy_r192(){ + $this->_retvalue = new _smarty_code($this, '$_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; + } +#line 2502 "smarty_internal_templateparser.php" +#line 546 "smarty_internal_templateparser.y" + function yy_r194(){ $this->_retvalue = new _smarty_code($this, '('.$this->yystack[$this->yyidx + -1]->minor.')'); } +#line 2505 "smarty_internal_templateparser.php" +#line 547 "smarty_internal_templateparser.y" + function yy_r195(){ + $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor); + } +#line 2510 "smarty_internal_templateparser.php" #line 550 "smarty_internal_templateparser.y" - function yy_r197(){$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 2501 "smarty_internal_templateparser.php" -#line 557 "smarty_internal_templateparser.y" - function yy_r199(){ $this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; } -#line 2504 "smarty_internal_templateparser.php" -#line 558 "smarty_internal_templateparser.y" - function yy_r200(){ $this->prefix_number++; $this->compiler->prefix_code[] = ''.$this->yystack[$this->yyidx + 0]->minor.'prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '{$_tmp'.$this->prefix_number.'}'; $this->compiler->has_variable_string = true; } -#line 2507 "smarty_internal_templateparser.php" + function yy_r196(){ $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor); } +#line 2513 "smarty_internal_templateparser.php" private $_retvalue; @@ -2566,12 +2572,12 @@ static public $yy_action = array( function yy_syntax_error($yymajor, $TOKEN) { -#line 71 "smarty_internal_templateparser.y" +#line 72 "smarty_internal_templateparser.y" $this->internalError = true; $this->yymajor = $yymajor; $this->compiler->trigger_template_error(); -#line 2570 "smarty_internal_templateparser.php" +#line 2576 "smarty_internal_templateparser.php" } function yy_accept() @@ -2582,13 +2588,13 @@ static public $yy_action = array( while ($this->yyidx >= 0) { $stack = $this->yy_pop_parser_stack(); } -#line 63 "smarty_internal_templateparser.y" +#line 64 "smarty_internal_templateparser.y" $this->successful = !$this->internalError; $this->internalError = false; $this->retvalue = $this->_retvalue; //echo $this->retvalue."\n\n"; -#line 2588 "smarty_internal_templateparser.php" +#line 2594 "smarty_internal_templateparser.php" } function doParse($yymajor, $yytokenvalue) @@ -2681,4 +2687,4 @@ static public $yy_action = array( } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0); } } -?> +?> \ No newline at end of file diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_unregister.php b/gosa-core/include/smarty/sysplugins/smarty_internal_unregister.php new file mode 100644 index 000000000..5f3e2ef38 --- /dev/null +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_unregister.php @@ -0,0 +1,151 @@ + +* @author Uwe Tews +* @package Smarty +* @subpackage PluginsInternal +* @version 3-SVN$Rev: 3286 $ +*/ + +class Smarty_Internal_Unregister { + + protected $smarty; + + function __construct($smarty) { + $this->smarty = $smarty; + } + + /** + * Unregisters block function + * + * @param string $block_tag name of template function + */ + function block($block_tag) + { + if (isset($this->smarty->registered_plugins['block'][$block_tag])) { + unset($this->smarty->registered_plugins['block'][$block_tag]); + } + } + + /** + * Unregisters compiler function + * + * @param string $compiler_tag name of template function + */ + function compilerFunction($compiler_tag) + { + if (isset($this->smarty->registered_plugins['compiler'][$compiler_tag])) { + unset($this->smarty->registered_plugins['compiler'][$compiler_tag]); + } + } + + /** + * Unregisters custom function + * + * @param string $function_tag name of template function + */ + function templateFunction($function_tag) + { + if (isset($this->smarty->registered_plugins['function'][$function_tag])) { + unset($this->smarty->registered_plugins['function'][$function_tag]); + } + } + + /** + * Unregisters modifier + * + * @param string $modifier name of template modifier + */ + function modifier($modifier) + { + if (isset($this->smarty->registered_plugins['modifier'][$modifier])) { + unset($this->smarty->registered_plugins['modifier'][$modifier]); + } + } + + /** + * Unregisters template object + * + * @param string $object_name name of template object + */ + function templateObject($object_name) + { + unset($this->smarty->registered_objects[$object_name]); + } + + /** + * Unregisters an output filter + * + * @param callback $function_name + */ + function outputFilter($function_name) + { + unset($this->smarty->registered_filters['output'][$this->smarty->_get_filter_name($function_name)]); + } + + /** + * Unregisters a postfilter function + * + * @param callback $function_name + */ + function postFilter($function_name) + { + unset($this->smarty->registered_filters['post'][$this->smarty->_get_filter_name($function_name)]); + } + + /** + * Unregisters a prefilter function + * + * @param callback $function_name + */ + function preFilter($function_name) + { + unset($this->smarty->registered_filters['pre'][$this->smarty->_get_filter_name($function_name)]); + } + + /** + * Unregisters a resource + * + * @param string $resource_name name of resource + */ + function resource($resource_name) + { + unset($this->smarty->plugins['resource'][$resource_name]); + } + + /** + * Unregisters a variablefilter function + * + * @param callback $function_name + */ + function variableFilter($function_name) + { + unset($this->smarty->registered_filters['variable'][$this->smarty->_get_filter_name($function_name)]); + } + +} diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_utility.php b/gosa-core/include/smarty/sysplugins/smarty_internal_utility.php new file mode 100644 index 000000000..abf7e1b4e --- /dev/null +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_utility.php @@ -0,0 +1,223 @@ + +* @author Uwe Tews +* @package Smarty +* @subpackage PluginsInternal +* @version 3-SVN$Rev: 3286 $ +*/ + +class Smarty_Internal_Utility { + + protected $smarty; + + function __construct($smarty) { + $this->smarty = $smarty; + } + + /** + * Compile all template files + * + * @param string $extension file extension + * @param bool $force_compile force all to recompile + * @param int $time_limit + * @param int $max_errors + * @return integer number of template files recompiled + */ + function compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null) + { + function _get_time() + { + $_mtime = microtime(); + $_mtime = explode(" ", $_mtime); + return (double)($_mtime[1]) + (double)($_mtime[0]); + } + // set default directory + if ($dir_name === null) { + $dir_name = $this->smarty->template_dir; + } + // switch off time limit + if (function_exists('set_time_limit')) { + @set_time_limit($time_limit); + } + $this->smarty->force_compile = $force_compile; + $_count = 0; + $_error_count = 0; + // loop over array of template directories + foreach((array)$this->smarty->template_dir as $_dir) { + $_compileDirs = new RecursiveDirectoryIterator($_dir); + $_compile = new RecursiveIteratorIterator($_compileDirs); + foreach ($_compile as $_fileinfo) { + if (strpos($_fileinfo, '.svn') !== false) continue; + $_file = $_fileinfo->getFilename(); + if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue; + if ($_fileinfo->getPath() == substr($_dir, 0, -1)) { + $_template_file = $_file; + } else { + $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . '\\' . $_file; + } + echo '
', $_dir, '---', $_template_file; + flush(); + $_start_time = _get_time(); + try { + $_tpl = $this->smarty->createTemplate($_template_file); + $_tpl->getCompiledTemplate(); + } + catch (Exception $e) { + echo 'Error: ', $e->getMessage(), "

"; + $_error_count++; + } + echo ' done in ', _get_time() - $_start_time, ' seconds'; + if ($max_errors !== null && $_error_count == $max_errors) { + echo '

too many errors'; + exit(); + } + } + } + return $_count; + } + + /** + * Delete compiled template file + * + * @param string $resource_name template name + * @param string $compile_id compile id + * @param integer $exp_time expiration time + * @return integer number of template files deleted + */ + function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = 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_1 = $resource_name . '.php'; + $_resource_part_2 = $resource_name . '.cache' . '.php'; + } else { + $_resource_part = ''; + } + $_dir = $this->smarty->compile_dir; + if ($this->smarty->use_sub_dirs && isset($_compile_id)) { + $_dir .= $_compile_id . $_dir_sep; + } + if (isset($_compile_id)) { + $_compile_id_part = $this->smarty->compile_dir . $_compile_id . $_dir_sep; + } + $_count = 0; + $_compileDirs = new RecursiveDirectoryIterator($_dir); + $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST); + foreach ($_compile as $_file) { + if (strpos($_file, '.svn') !== false) continue; + if ($_file->isDir()) { + if (!$_compile->isDot()) { + // delete folder if empty + @rmdir($_file->getPathname()); + } + } else { + if ((!isset($_compile_id) || (strlen((string)$_file) > strlen($_compile_id_part) && substr_compare((string)$_file, $_compile_id_part, 0, strlen($_compile_id_part)) == 0)) && + (!isset($resource_name) || (strlen((string)$_file) > strlen($_resource_part_1) && substr_compare((string)$_file, $_resource_part_1, - strlen($_resource_part_1), strlen($_resource_part_1)) == 0) || + (strlen((string)$_file) > strlen($_resource_part_2) && substr_compare((string)$_file, $_resource_part_2, - strlen($_resource_part_2), strlen($_resource_part_2)) == 0))) { + if (isset($exp_time)) { + if (time() - @filemtime($_file) >= $exp_time) { + $_count += @unlink((string) $_file) ? 1 : 0; + } + } else { + $_count += @unlink((string) $_file) ? 1 : 0; + } + } + } + } + return $_count; + } + + function testInstall() + { + echo "
\n";
+    
+        echo "Smarty Installation test...\n";
+    
+        echo "Testing template directory...\n";
+    
+        foreach((array)$this->smarty->template_dir as $template_dir) {
+            if (!is_dir($template_dir))
+                echo "FAILED: $template_dir is not a directory.\n";
+            elseif (!is_readable($template_dir))
+                echo "FAILED: $template_dir is not readable.\n";
+            else
+                echo "$template_dir is OK.\n";
+        } 
+    
+        echo "Testing compile directory...\n";
+    
+        if (!is_dir($this->smarty->compile_dir))
+            echo "FAILED: $this->smarty->compile_dir is not a directory.\n";
+        elseif (!is_readable($this->smarty->compile_dir))
+            echo "FAILED: $this->smarty->compile_dir is not readable.\n";
+        elseif (!is_writable($this->smarty->compile_dir))
+            echo "FAILED: $this->smarty->compile_dir is not writable.\n";
+        else
+            echo "{$this->smarty->compile_dir} is OK.\n";
+    
+        echo "Testing plugins directory...\n";
+    
+        foreach((array)$this->smarty->plugins_dir as $plugin_dir) {
+            if (!is_dir($plugin_dir))
+                echo "FAILED: $plugin_dir is not a directory.\n";
+            elseif (!is_readable($plugin_dir))
+                echo "FAILED: $plugin_dir is not readable.\n";
+            else
+                echo "$plugin_dir is OK.\n";
+        } 
+    
+        echo "Testing cache directory...\n";
+    
+        if (!is_dir($this->smarty->cache_dir))
+            echo "FAILED: $this->smarty->cache_dir is not a directory.\n";
+        elseif (!is_readable($this->smarty->cache_dir))
+            echo "FAILED: $this->smarty->cache_dir is not readable.\n";
+        elseif (!is_writable($this->smarty->cache_dir))
+            echo "FAILED: $this->smarty->cache_dir is not writable.\n";
+        else
+            echo "{$this->smarty->cache_dir} is OK.\n";
+    
+        echo "Testing configs directory...\n";
+    
+        if (!is_dir($this->smarty->config_dir))
+            echo "FAILED: $this->smarty->config_dir is not a directory.\n";
+        elseif (!is_readable($this->smarty->config_dir))
+            echo "FAILED: $this->smarty->config_dir is not readable.\n";
+        else
+            echo "{$this->smarty->config_dir} is OK.\n";
+    
+        echo "Tests complete.\n";
+    
+        echo "
\n"; + + return true; + } + +} diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_wrapper.php b/gosa-core/include/smarty/sysplugins/smarty_internal_wrapper.php new file mode 100644 index 000000000..aa7bfb44c --- /dev/null +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_wrapper.php @@ -0,0 +1,127 @@ + +* @author Uwe Tews +* @package Smarty +* @subpackage PluginsInternal +* @version 3-SVN$Rev: 3286 $ +*/ + +/* + * Smarty Backward Compatability Wrapper + */ + +class Smarty_Internal_Wrapper { + + protected $smarty; + + function __construct($smarty) { + $this->smarty = $smarty; + } + + /** + * Converts smarty2-style function call to smarty 3-style function call + * This is expensive, be sure to port your code to Smarty 3! + * + * @param string $name Smarty 2 function name + * @param array $args Smarty 2 function args + */ + function convert($name, $args) { + // throw notice about deprecated function + if($this->smarty->deprecation_notices) + trigger_error("function call '$name' is unknown or deprecated.",E_USER_NOTICE); + // get first and last part of function name + $name_parts = explode('_',$name,2); + switch($name_parts[0]) { + case 'register': + case 'unregister': + $myobj = $name_parts[0] == 'register' ? $this->smarty->register : $this->smarty->unregister; + switch($name_parts[1]) { + case 'function': + return call_user_func_array(array($myobj,'templateFunction'),$args); + break; + case 'object': + return call_user_func_array(array($myobj,'templateObject'),$args); + break; + case 'compiler_function': + return call_user_func_array(array($myobj,'compilerFunction'),$args); + break; + default: + return call_user_func_array(array($myobj,$name_parts[1]),$args); + break; + } + break; + case 'get': + switch($name_parts[1]) { + case 'template_vars': + return call_user_func_array(array($this->smarty,'getTemplateVars'),$args); + break; + case 'config_vars': + return call_user_func_array(array($this->smarty,'getConfigVars'),$args); + break; + default: + return call_user_func_array(array($myobj,$name_parts[1]),$args); + break; + } + break; + case 'clear': + switch($name_parts[1]) { + case 'all_assign': + return call_user_func_array(array($this->smarty,'clearAllAssign'),$args); + break; + } + break; + case 'config': + switch($name_parts[1]) { + case 'load': + return call_user_func_array(array($this->smarty,'configLoad'),$args); + break; + } + break; + default: + // convert foo_bar_baz to fooBarBaz style names + $name_parts = explode('_',$name); + foreach($name_parts as $idx=>$part) { + if($idx==0) + $name_parts[$idx] = strtolower($part); + else + $name_parts[$idx] = ucfirst($part); + } + $func_name = implode('',$name_parts); + if(!method_exists($this->smarty,$func_name)) { + throw new Exception("unknown method '$name'"); + return false; + } + return call_user_func_array(array($this->smarty,$func_name),$args); + break; + } + return false; + } +} + +?> diff --git a/gosa-core/include/smarty/sysplugins/smarty_security.php b/gosa-core/include/smarty/sysplugins/smarty_security.php index 2c99fbc36..9fb85a9fc 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_security.php +++ b/gosa-core/include/smarty/sysplugins/smarty_security.php @@ -44,6 +44,15 @@ class Smarty_Security { public $trusted_dir = array(); + /** + * This is an array of trusted static classes. + * + * If empty access to all static classes is allowed. + * If set to 'none' none is allowed. + * @var array + */ + public $static_classes = array(); + /** * This is an array of trusted PHP functions. * @@ -85,4 +94,4 @@ class Smarty_Security { public $allow_php_tag = false; } -?> +?> \ No newline at end of file