source: branches/version-2_5-dev/data/module/Smarty/libs/internals/core.get_php_resource.php @ 20116

Revision 20116, 2.4 KB checked in by nanasess, 13 years ago (diff)
  • svn properties を再設定
  • 再設定用のスクリプト追加
  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
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
18function 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?>
Note: See TracBrowser for help on using the repository browser.