Хранилища Subversion ant

Редакция

Редакция 2 | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
2 alex-w 1
<?php
2
/**
3
 * Smarty plugin
4
 * @package Smarty
5
 * @subpackage plugins
6
 */
7
 
8
/**
9
 * Retrieves PHP script resource
10
 *
11
 * sets $php_resource to the returned resource
12
 * @param string $resource
13
 * @param string $resource_type
14
 * @param  $php_resource
15
 * @return boolean
16
 */
17
 
18
function smarty_core_get_php_resource(&$params, &$smarty)
19
{
20
 
21
    $params['resource_base_path'] = $smarty->trusted_dir;
22
    $smarty->_parse_resource_name($params, $smarty);
23
 
24
    /*
25
     * Find out if the resource exists.
26
     */
27
 
28
    if ($params['resource_type'] == 'file') {
29
        $_readable = false;
30
        if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
31
            $_readable = true;
32
        } else {
33
            // test for file in include_path
34
            $_params = array('file_path' => $params['resource_name']);
35
            require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
36
            if(smarty_core_get_include_path($_params, $smarty)) {
37
                $_include_path = $_params['new_file_path'];
38
                $_readable = true;
39
            }
40
        }
41
    } else if ($params['resource_type'] != 'file') {
42
        $_template_source = null;
43
        $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
44
            && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
45
                                    array($params['resource_name'], &$_template_source, &$smarty));
46
    }
47
 
48
    /*
49
     * Set the error function, depending on which class calls us.
50
     */
51
    if (method_exists($smarty, '_syntax_error')) {
52
        $_error_funcc = '_syntax_error';
53
    } else {
54
        $_error_funcc = 'trigger_error';
55
    }
56
 
57
    if ($_readable) {
58
        if ($smarty->security) {
59
            require_once(SMARTY_CORE_DIR . 'core.is_trusted.php');
60
            if (!smarty_core_is_trusted($params, $smarty)) {
61
                $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
62
                return false;
63
            }
64
        }
65
    } else {
66
        $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
67
        return false;
68
    }
69
 
70
    if ($params['resource_type'] == 'file') {
71
        $params['php_resource'] = $params['resource_name'];
72
    } else {
73
        $params['php_resource'] = $_template_source;
74
    }
75
    return true;
76
}
77
 
78
/* vim: set expandtab: */
79
 
80
?>