Редакция 2 | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | RSS
Редакция | Автор | № строки | Строка |
---|---|---|---|
2 | alex-w | 1 | <?php |
2 | /** |
||
3 | * Smarty plugin |
||
4 | * @package Smarty |
||
5 | * @subpackage plugins |
||
6 | */ |
||
7 | |||
8 | /** |
||
9 | * load a resource plugin |
||
10 | * |
||
11 | * @param string $type |
||
12 | */ |
||
13 | |||
14 | // $type |
||
15 | |||
16 | function smarty_core_load_resource_plugin($params, &$smarty) |
||
17 | { |
||
18 | /* |
||
19 | * Resource plugins are not quite like the other ones, so they are |
||
20 | * handled differently. The first element of plugin info is the array of |
||
21 | * functions provided by the plugin, the second one indicates whether |
||
22 | * all of them exist or not. |
||
23 | */ |
||
24 | |||
25 | $_plugin = &$smarty->_plugins['resource'][$params['type']]; |
||
26 | if (isset($_plugin)) { |
||
27 | if (!$_plugin[1] && count($_plugin[0])) { |
||
28 | $_plugin[1] = true; |
||
29 | foreach ($_plugin[0] as $_plugin_func) { |
||
30 | if (!is_callable($_plugin_func)) { |
||
31 | $_plugin[1] = false; |
||
32 | break; |
||
33 | } |
||
34 | } |
||
35 | } |
||
36 | |||
37 | if (!$_plugin[1]) { |
||
38 | $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); |
||
39 | } |
||
40 | |||
41 | return; |
||
42 | } |
||
43 | |||
44 | $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); |
||
45 | $_found = ($_plugin_file != false); |
||
46 | |||
47 | if ($_found) { /* |
||
48 | * If the plugin file is found, it -must- provide the properly named |
||
49 | * plugin functions. |
||
50 | */ |
||
51 | include_once($_plugin_file); |
||
52 | |||
53 | /* |
||
54 | * Locate functions that we require the plugin to provide. |
||
55 | */ |
||
56 | $_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); |
||
57 | $_resource_funcs = array(); |
||
58 | foreach ($_resource_ops as $_op) { |
||
59 | $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; |
||
60 | if (!function_exists($_plugin_func)) { |
||
61 | $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); |
||
62 | return; |
||
63 | } else { |
||
64 | $_resource_funcs[] = $_plugin_func; |
||
65 | } |
||
66 | } |
||
67 | |||
68 | $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); |
||
69 | } |
||
70 | } |
||
71 | |||
72 | /* vim: set expandtab: */ |
||
73 | |||
74 | ?> |