Redbean + Smarty update

This commit is contained in:
Robin Kloppe 2014-10-13 11:24:53 +02:00
parent c1b8226466
commit eb0835ff74
122 changed files with 12653 additions and 11637 deletions

View file

@ -2,73 +2,79 @@
/**
* Smarty Resource Plugin
*
* @package Smarty
* @package Smarty
* @subpackage TemplateResources
* @author Rodney Rehm
* @author Rodney Rehm
*/
/**
* Smarty Resource Plugin
*
* Base implementation for resource plugins
*
* @package Smarty
* @package Smarty
* @subpackage TemplateResources
*/
abstract class Smarty_Resource
{
/**
* cache for Smarty_Template_Source instances
*
* @var array
*/
public static $sources = array();
/**
* cache for Smarty_Template_Compiled instances
*
* @var array
*/
public static $compileds = array();
/**
* cache for Smarty_Resource instances
*
* @var array
*/
public static $resources = array();
/**
* resource types provided by the core
*
* @var array
*/
protected static $sysplugins = array(
'file' => true,
'string' => true,
'file' => true,
'string' => true,
'extends' => true,
'stream' => true,
'eval' => true,
'php' => true
'stream' => true,
'eval' => true,
'php' => true
);
/**
* Name of the Class to compile this resource's contents with
*
* @var string
*/
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
/**
* Name of the Class to tokenize this resource's contents with
*
* @var string
*/
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
/**
* Name of the Class to parse this resource's contents with
*
* @var string
*/
public $template_parser_class = 'Smarty_Internal_Templateparser';
/**
* Load template's source into current template object
*
* {@internal The loaded source is assigned to $_template->source->content directly.}}
*
* @param Smarty_Template_Source $source source object
*
* @return string template source
* @throws SmartyException if source cannot be loaded
*/
@ -80,7 +86,7 @@ abstract class Smarty_Resource
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
*/
abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null);
abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
/**
* populate Source Object with timestamp and exists from Resource
@ -95,9 +101,10 @@ abstract class Smarty_Resource
/**
* modify resource_name according to resource handlers specifications
*
* @param Smarty $smarty Smarty instance
* @param string $resource_name resource_name to make unique
* @param boolean $is_config flag for config resource
* @param Smarty $smarty Smarty instance
* @param string $resource_name resource_name to make unique
* @param boolean $is_config flag for config resource
*
* @return string unique resource name
*/
protected function buildUniqueResourceName(Smarty $smarty, $resource_name, $is_config = false)
@ -122,9 +129,9 @@ abstract class Smarty_Resource
// if use_sub_dirs, break file into directories
if ($_template->smarty->use_sub_dirs) {
$_filepath = substr($_filepath, 0, 2) . DS
. substr($_filepath, 2, 2) . DS
. substr($_filepath, 4, 2) . DS
. $_filepath;
. substr($_filepath, 2, 2) . DS
. substr($_filepath, 4, 2) . DS
. $_filepath;
}
$_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
if (isset($_compile_id)) {
@ -140,7 +147,7 @@ abstract class Smarty_Resource
// set basename if not specified
$_basename = $this->getBasename($compiled->source);
if ($_basename === null) {
$_basename = basename( preg_replace('![^\w\/]+!', '_', $compiled->source->name) );
$_basename = basename(preg_replace('![^\w\/]+!', '_', $compiled->source->name));
}
// separate (optional) basename by dot
if ($_basename) {
@ -155,9 +162,10 @@ abstract class Smarty_Resource
*
* @param string $_path path to normalize
* @param boolean $ds respect windows directory separator
*
* @return string normalized path
*/
protected function normalizePath($_path, $ds=true)
protected function normalizePath($_path, $ds = true)
{
if ($ds) {
// don't we all just love windows?
@ -200,10 +208,11 @@ abstract class Smarty_Resource
*
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
*
* @return string fully qualified filepath
* @throws SmartyException if default template handler is registered but not callable
*/
protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$file = $source->name;
if ($source instanceof Smarty_Config_Source) {
@ -232,7 +241,6 @@ abstract class Smarty_Resource
// resolve relative path
if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $file)) {
// don't we all just love windows?
$_path = str_replace('\\', '/', $file);
$_path = DS . trim($file, '/');
$_was_relative = true;
} else {
@ -325,7 +333,7 @@ abstract class Smarty_Resource
}
}
$_return = call_user_func_array($_default_handler,
array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
if (is_string($_return)) {
$source->timestamp = @filemtime($_return);
$source->exists = !!$source->timestamp;
@ -349,6 +357,7 @@ abstract class Smarty_Resource
*
* @param Smarty_Template_Source $source source object
* @param string $file file name
*
* @return bool true if file exists
*/
protected function fileExists(Smarty_Template_Source $source, $file)
@ -356,13 +365,13 @@ abstract class Smarty_Resource
$source->timestamp = is_file($file) ? @filemtime($file) : false;
return $source->exists = !!$source->timestamp;
}
/**
* Determine basename for compiled filename
*
* @param Smarty_Template_Source $source source object
*
* @return string resource's basename
*/
protected function getBasename(Smarty_Template_Source $source)
@ -373,8 +382,10 @@ abstract class Smarty_Resource
/**
* Load Resource Handler
*
* @param Smarty $smarty smarty object
* @param string $type name of the resource
* @param Smarty $smarty smarty object
* @param string $type name of the resource
*
* @throws SmartyException
* @return Smarty_Resource Resource Handler
*/
public static function load(Smarty $smarty, $type)
@ -453,17 +464,18 @@ abstract class Smarty_Resource
// TODO: try default_(template|config)_handler
// give up
throw new SmartyException("Unkown resource type '{$type}'");
throw new SmartyException("Unknown resource type '{$type}'");
}
/**
* extract resource_type and resource_name from template_resource and config_resource
*
* @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
*
* @param string $resource_name template_resource or config_resource to parse
* @param string $default_resource the default resource_type defined in $smarty
* @param string &$name the parsed resource name
* @param string &$type the parsed resource type
*
* @return void
*/
protected static function parseResourceName($resource_name, $default_resource, &$name, &$type)
@ -485,14 +497,16 @@ abstract class Smarty_Resource
*
* @param Smarty $smarty Smarty instance
* @param string $resource_name resource_name to make unique
*
* @return string unique resource name
*/
/**
* modify template_resource according to resource handlers specifications
*
* @param Smarty_Internal_template $template Smarty instance
* @param string $template_resource template_resource to extracate resource handler and name of
* @param Smarty_Internal_template $template Smarty instance
* @param string $template_resource template_resource to extract resource handler and name of
*
* @return string unique resource name
*/
public static function getUniqueTemplateName($template, $template_resource)
@ -510,15 +524,15 @@ abstract class Smarty_Resource
/**
* initialize Source Object for given resource
*
* Either [$_template] or [$smarty, $template_resource] must be specified
*
* @param Smarty_Internal_Template $_template template object
* @param Smarty $smarty smarty object
* @param string $template_resource resource identifier
*
* @return Smarty_Template_Source Source Object
*/
public static function source(Smarty_Internal_Template $_template=null, Smarty $smarty=null, $template_resource=null)
public static function source(Smarty_Internal_Template $_template = null, Smarty $smarty = null, $template_resource = null)
{
if ($_template) {
$smarty = $_template->smarty;
@ -540,7 +554,7 @@ abstract class Smarty_Resource
// check runtime cache
$_cache_key = 'template|' . $unique_resource_name;
if ($smarty->compile_id) {
$_cache_key .= '|'.$smarty->compile_id;
$_cache_key .= '|' . $smarty->compile_id;
}
if (isset(self::$sources[$_cache_key])) {
return self::$sources[$_cache_key];
@ -560,6 +574,8 @@ abstract class Smarty_Resource
* initialize Config Source Object for given resource
*
* @param Smarty_Internal_Config $_config config object
*
* @throws SmartyException
* @return Smarty_Config_Source Source Object
*/
public static function config(Smarty_Internal_Config $_config)
@ -595,18 +611,15 @@ abstract class Smarty_Resource
return $source;
}
}
/**
* Smarty Resource Data Object
*
* Meta Data Container for Template Files
*
* @package Smarty
* @package Smarty
* @subpackage TemplateResources
* @author Rodney Rehm
*
* @author Rodney Rehm
* @property integer $timestamp Source Timestamp
* @property boolean $exists Source Existence
* @property boolean $template Extended Template reference
@ -616,84 +629,98 @@ class Smarty_Template_Source
{
/**
* Name of the Class to compile this resource's contents with
*
* @var string
*/
public $compiler_class = null;
/**
* Name of the Class to tokenize this resource's contents with
*
* @var string
*/
public $template_lexer_class = null;
/**
* Name of the Class to parse this resource's contents with
*
* @var string
*/
public $template_parser_class = null;
/**
* Unique Template ID
*
* @var string
*/
public $uid = null;
/**
* Template Resource (Smarty_Internal_Template::$template_resource)
*
* @var string
*/
public $resource = null;
/**
* Resource Type
*
* @var string
*/
public $type = null;
/**
* Resource Name
*
* @var string
*/
public $name = null;
/**
* Unique Resource Name
*
* @var string
*/
public $unique_resource = null;
/**
* Source Filepath
*
* @var string
*/
public $filepath = null;
/**
* Source is bypassing compiler
*
* @var boolean
*/
public $uncompiled = null;
/**
* Source must be recompiled on every occasion
*
* @var boolean
*/
public $recompiled = null;
/**
* The Components an extended template is made of
*
* @var array
*/
public $components = null;
/**
* Resource Handler
*
* @var Smarty_Resource
*/
public $handler = null;
/**
* Smarty instance
*
* @var Smarty
*/
public $smarty = null;
@ -706,7 +733,7 @@ class Smarty_Template_Source
* @param string $resource full template_resource
* @param string $type type of resource
* @param string $name resource name
* @param string $unique_resource unqiue resource name
* @param string $unique_resource unique resource name
*/
public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name, $unique_resource)
{
@ -728,10 +755,11 @@ class Smarty_Template_Source
/**
* get a Compiled Object of this source
*
* @param Smarty_Internal_Template $_template template objet
* @param Smarty_Internal_Template|Smarty_Internal_Config $_template template object
*
* @return Smarty_Template_Compiled compiled object
*/
public function getCompiled(Smarty_Internal_Template $_template)
public function getCompiled($_template)
{
// check runtime cache
$_cache_key = $this->unique_resource . '#' . $_template->compile_id;
@ -763,8 +791,9 @@ class Smarty_Template_Source
/**
* <<magic>> Generic Setter.
*
* @param string $property_name valid: timestamp, exists, content, template
* @param mixed $value new value (is not checked)
* @param string $property_name valid: timestamp, exists, content, template
* @param mixed $value new value (is not checked)
*
* @throws SmartyException if $property_name is not valid
*/
public function __set($property_name, $value)
@ -774,7 +803,7 @@ class Smarty_Template_Source
case 'timestamp':
case 'exists':
case 'content':
// required for extends: only
// required for extends: only
case 'template':
$this->$property_name = $value;
break;
@ -787,7 +816,8 @@ class Smarty_Template_Source
/**
* <<magic>> Generic getter.
*
* @param string $property_name valid: timestamp, exists, content
* @param string $property_name valid: timestamp, exists, content
*
* @return mixed
* @throws SmartyException if $property_name is not valid
*/
@ -807,62 +837,65 @@ class Smarty_Template_Source
throw new SmartyException("source property '$property_name' does not exist.");
}
}
}
/**
* Smarty Resource Data Object
*
* Meta Data Container for Template Files
*
* @package Smarty
* @package Smarty
* @subpackage TemplateResources
* @author Rodney Rehm
*
* @author Rodney Rehm
* @property string $content compiled content
*/
class Smarty_Template_Compiled
{
/**
* Compiled Filepath
*
* @var string
*/
public $filepath = null;
/**
* Compiled Timestamp
*
* @var integer
*/
public $timestamp = null;
/**
* Compiled Existence
*
* @var boolean
*/
public $exists = false;
/**
* Compiled Content Loaded
*
* @var boolean
*/
public $loaded = false;
/**
* Template was compiled
*
* @var boolean
*/
public $isCompiled = false;
/**
* Source Object
*
* @var Smarty_Template_Source
*/
public $source = null;
/**
* Metadata properties
*
* populated by Smarty_Internal_Template::decodeProperties()
*
* @var array
*/
public $_properties = null;
@ -876,5 +909,4 @@ class Smarty_Template_Compiled
{
$this->source = $source;
}
}