]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/Smarty/internals/core.get_php_resource.php
Release 6.5.0
[Github/sugarcrm.git] / include / Smarty / internals / core.get_php_resource.php
1 <?php
2
3 /*
4
5 Modification information for LGPL compliance
6
7 r56990 - 2010-06-16 13:05:36 -0700 (Wed, 16 Jun 2010) - kjing - snapshot "Mango" svn branch to a new one for GitHub sync
8
9 r56989 - 2010-06-16 13:01:33 -0700 (Wed, 16 Jun 2010) - kjing - defunt "Mango" svn dev branch before github cutover
10
11 r55980 - 2010-04-19 13:31:28 -0700 (Mon, 19 Apr 2010) - kjing - create Mango (6.1) based on windex
12
13 r51719 - 2009-10-22 10:18:00 -0700 (Thu, 22 Oct 2009) - mitani - Converted to Build 3  tags and updated the build system 
14
15 r51634 - 2009-10-19 13:32:22 -0700 (Mon, 19 Oct 2009) - mitani - Windex is the branch for Sugar Sales 1.0 development
16
17 r50375 - 2009-08-24 18:07:43 -0700 (Mon, 24 Aug 2009) - dwong - branch kobe2 from tokyo r50372
18
19 r42807 - 2008-12-29 11:16:59 -0800 (Mon, 29 Dec 2008) - dwong - Branch from trunk/sugarcrm r42806 to branches/tokyo/sugarcrm
20
21 r8230 - 2005-10-03 17:47:19 -0700 (Mon, 03 Oct 2005) - majed - Added Sugar_Smarty to the code tree.
22
23
24 */
25
26
27 /**
28  * Smarty plugin
29  * @package Smarty
30  * @subpackage plugins
31  */
32
33 /**
34  * Retrieves PHP script resource
35  *
36  * sets $php_resource to the returned resource
37  * @param string $resource
38  * @param string $resource_type
39  * @param  $php_resource
40  * @return boolean
41  */
42
43 function smarty_core_get_php_resource(&$params, &$smarty)
44 {
45
46     $params['resource_base_path'] = $smarty->trusted_dir;
47     $smarty->_parse_resource_name($params, $smarty);
48
49     /*
50      * Find out if the resource exists.
51      */
52
53     if ($params['resource_type'] == 'file') {
54         $_readable = false;
55         if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
56             $_readable = true;
57         } else {
58             // test for file in include_path
59             $_params = array('file_path' => $params['resource_name']);
60             require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
61             if(smarty_core_get_include_path($_params, $smarty)) {
62                 $_include_path = $_params['new_file_path'];
63                 $_readable = true;
64             }
65         }
66     } else if ($params['resource_type'] != 'file') {
67         $_template_source = null;
68         $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
69             && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
70                                     array($params['resource_name'], &$_template_source, &$smarty));
71     }
72
73     /*
74      * Set the error function, depending on which class calls us.
75      */
76     if (method_exists($smarty, '_syntax_error')) {
77         $_error_funcc = '_syntax_error';
78     } else {
79         $_error_funcc = 'trigger_error';
80     }
81
82     if ($_readable) {
83         if ($smarty->security) {
84             require_once(SMARTY_CORE_DIR . 'core.is_trusted.php');
85             if (!smarty_core_is_trusted($params, $smarty)) {
86                 $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
87                 return false;
88             }
89         }
90     } else {
91         $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
92         return false;
93     }
94
95     if ($params['resource_type'] == 'file') {
96         $params['php_resource'] = $params['resource_name'];
97     } else {
98         $params['php_resource'] = $_template_source;
99     }
100     return true;
101 }
102
103 /* vim: set expandtab: */
104
105 ?>