77 Zeilen
2.1 KiB
PHP
77 Zeilen
2.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Smarty Method LoadFilter
|
|
*
|
|
* Smarty::loadFilter() method
|
|
*
|
|
* @package Smarty
|
|
* @subpackage PluginsInternal
|
|
* @author Uwe Tews
|
|
*/
|
|
class Smarty_Internal_Method_LoadFilter
|
|
{
|
|
/**
|
|
* Valid for Smarty and template object
|
|
*
|
|
* @var int
|
|
*/
|
|
public $objMap = 3;
|
|
|
|
/**
|
|
* Valid filter types
|
|
*
|
|
* @var array
|
|
*/
|
|
private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true);
|
|
|
|
/**
|
|
* load a filter of specified type and name
|
|
*
|
|
* @api Smarty::loadFilter()
|
|
*
|
|
* @link http://www.smarty.net/docs/en/api.load.filter.tpl
|
|
*
|
|
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
|
|
* @param string $type filter type
|
|
* @param string $name filter name
|
|
*
|
|
* @return bool
|
|
* @throws SmartyException if filter could not be loaded
|
|
*/
|
|
public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
|
|
{
|
|
$smarty = $obj->_getSmartyObj();
|
|
$this->_checkFilterType($type);
|
|
$_plugin = "smarty_{$type}filter_{$name}";
|
|
$_filter_name = $_plugin;
|
|
if (is_callable($_plugin)) {
|
|
$smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
|
|
return true;
|
|
}
|
|
if ($smarty->loadPlugin($_plugin)) {
|
|
if (class_exists($_plugin, false)) {
|
|
$_plugin = array($_plugin, 'execute');
|
|
}
|
|
if (is_callable($_plugin)) {
|
|
$smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
|
|
return true;
|
|
}
|
|
}
|
|
throw new SmartyException("{$type}filter \"{$name}\" not found or callable");
|
|
}
|
|
|
|
/**
|
|
* Check if filter type is valid
|
|
*
|
|
* @param string $type
|
|
*
|
|
* @throws \SmartyException
|
|
*/
|
|
public function _checkFilterType($type)
|
|
{
|
|
if (!isset($this->filterTypes[ $type ])) {
|
|
throw new SmartyException("Illegal filter type \"{$type}\"");
|
|
}
|
|
}
|
|
} |