Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
2809 rexy 1
<?php
2
 
3
/**
4
 * Smarty Method RegisterPlugin
5
 *
6
 * Smarty::registerPlugin() method
7
 *
8
 * @package    Smarty
9
 * @subpackage PluginsInternal
10
 * @author     Uwe Tews
11
 */
12
class Smarty_Internal_Method_RegisterPlugin
13
{
14
    /**
15
     * Valid for Smarty and template object
16
     *
17
     * @var int
18
     */
19
    public $objMap = 3;
20
 
21
    /**
22
     * Registers plugin to be used in templates
23
     *
24
     * @api  Smarty::registerPlugin()
25
     * @link http://www.smarty.net/docs/en/api.register.plugin.tpl
26
     *
27
     * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
28
     * @param string                                                          $type       plugin type
29
     * @param string                                                          $name       name of template tag
30
     * @param callback                                                        $callback   PHP callback to register
31
     * @param bool                                                            $cacheable  if true (default) this
32
     *                                                                                    function is cache able
33
     * @param mixed                                                           $cache_attr caching attributes if any
34
     *
35
     * @return \Smarty|\Smarty_Internal_Template
36
     * @throws SmartyException              when the plugin tag is invalid
37
     */
38
    public function registerPlugin(
39
        Smarty_Internal_TemplateBase $obj,
40
        $type,
41
        $name,
42
        $callback,
43
        $cacheable = true,
44
        $cache_attr = null
45
    ) {
46
        $smarty = $obj->_getSmartyObj();
47
        if (isset($smarty->registered_plugins[ $type ][ $name ])) {
48
            throw new SmartyException("Plugin tag '{$name}' already registered");
49
        } elseif (!is_callable($callback)) {
50
            throw new SmartyException("Plugin '{$name}' not callable");
51
        } else {
52
            $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool)$cacheable, (array)$cache_attr);
53
        }
54
        return $obj;
55
    }
56
}