1: <?php
2: 3: 4: 5: 6:
7:
8: 9: 10: 11: 12: 13: 14: 15: 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: 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:
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: 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:
79:
80: ?>
81: