move default template handling into an extesion class

This commit is contained in:
Uwe Tews
2015-01-02 10:48:07 +01:00
parent 15728f6ea3
commit 75ad0b4da5
2 changed files with 85 additions and 12 deletions

View File

@@ -0,0 +1,83 @@
<?php
/**
* Smarty Resource Extension
*
* @package Smarty
* @subpackage TemplateResources
* @author Uwe Tews
*/
/**
* Smarty Resource Extension
* Default template and config file handling
*
* @package Smarty
* @subpackage TemplateResources
*/
class Smarty_Internal_Extension_DefaultTemplateHandler
{
/**
* get default content from template of config resource handler
*
* @param Smarty_Internal_Template $_template
* @param Smarty_Internal_Template_Source $source
* @param Smarty_Resource $resObj
*/
static function _getDefault(Smarty_Internal_Template $_template, &$source, &$resObj)
{
if ($source->isConfig) {
$default_handler = $_template->smarty->default_config_handler_func;
} else {
$default_handler = $_template->smarty->default_template_handler_func;
}
$_content = $_timestamp = null;
$_return = call_user_func_array($default_handler,
array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
if (is_string($_return)) {
$source->timestamp = @filemtime($_return);
$source->exists = !!$source->timestamp;
$source->filepath = $_return;
} elseif ($_return === true) {
$source->content = $_content;
$source->timestamp = $_timestamp;
$source->exists = true;
$source->recompiled = true;
$source->filepath = false;
}
}
/**
* register template default handler
*
* @param Smarty|Smarty_Internal_Template $obj
* @param mixed $callback
*
* @throws SmartyException
*/
static function registerDefaultTemplateHandler($obj, $callback)
{
if (is_callable($callback)) {
$obj->smarty->default_template_handler_func = $callback;
} else {
throw new SmartyException("Default template handler not callable");
}
}
/**
* register config default handler
*
* @param Smarty|Smarty_Internal_Template $obj
* @param mixed $callback
*
* @throws SmartyException
*/
static function registerDefaultConfigHandler($obj, $callback)
{
if (is_callable($callback)) {
$obj->smarty->default_config_handler_func = $callback;
} else {
throw new SmartyException("Default config handler not callable");
}
}
}

View File

@@ -342,12 +342,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
*/ */
public function registerDefaultTemplateHandler($callback) public function registerDefaultTemplateHandler($callback)
{ {
if (is_callable($callback)) { Smarty_Internal_Extension_DefaultTemplateHandler::registerDefaultTemplateHandler($this, $callback);
$this->smarty->default_template_handler_func = $callback;
} else {
throw new SmartyException("Default template handler '$callback' not callable");
}
return $this; return $this;
} }
@@ -361,12 +356,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
*/ */
public function registerDefaultConfigHandler($callback) public function registerDefaultConfigHandler($callback)
{ {
if (is_callable($callback)) { Smarty_Internal_Extension_DefaultTemplateHandler::registerDefaultConfigHandler($this, $callback);
$this->smarty->default_config_handler_func = $callback;
} else {
throw new SmartyException("Default config handler '$callback' not callable");
}
return $this; return $this;
} }