diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php index 9c779475..48df3556 100644 --- a/libs/Smarty.class.php +++ b/libs/Smarty.class.php @@ -23,7 +23,7 @@ * @author Uwe Tews * @author Rodney Rehm * @package Smarty - * @version 3.1.20 + * @version 3.1.21 */ /** @@ -109,7 +109,7 @@ class Smarty extends Smarty_Internal_TemplateBase /** * smarty version */ - const SMARTY_VERSION = 'Smarty-3.1.20'; + const SMARTY_VERSION = 'Smarty-3.1.21'; /** * define variable scopes @@ -661,6 +661,14 @@ class Smarty extends Smarty_Internal_TemplateBase * @var array */ public $merged_templates_func = array(); + + /** + * Cache of is_file results of loadPlugin() + * + * @var array + */ + public static $_is_file_cache= array(); + /**#@-*/ /** @@ -1371,9 +1379,8 @@ class Smarty extends Smarty_Internal_TemplateBase // if type is "internal", get plugin from sysplugins if (strtolower($_name_parts[1]) == 'internal') { $file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php'; - if (file_exists($file)) { + if (isset(self::$_is_file_cache[$file]) ? self::$_is_file_cache[$file] : self::$_is_file_cache[$file] = is_file($file)) { require_once($file); - return $file; } else { return false; @@ -1391,9 +1398,8 @@ class Smarty extends Smarty_Internal_TemplateBase $_plugin_dir . strtolower($_plugin_filename), ); foreach ($names as $file) { - if (file_exists($file)) { + if (isset(self::$_is_file_cache[$file]) ? self::$_is_file_cache[$file] : self::$_is_file_cache[$file] = is_file($file)) { require_once($file); - return $file; } if ($this->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {