]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/Smarty/internals/core.assemble_plugin_filepath.php
Release 6.5.0
[Github/sugarcrm.git] / include / Smarty / internals / core.assemble_plugin_filepath.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  * assemble filepath of requested plugin
35  *
36  * @param string $type
37  * @param string $name
38  * @return string|false
39  */
40 function smarty_core_assemble_plugin_filepath($params, &$smarty)
41 {
42     static $_filepaths_cache = array();
43
44     $_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';
45     if (isset($_filepaths_cache[$_plugin_filename])) {
46         return $_filepaths_cache[$_plugin_filename];
47     }
48     $_return = false;
49
50     foreach ((array)$smarty->plugins_dir as $_plugin_dir) {
51
52         $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
53
54         // see if path is relative
55         if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {
56             $_relative_paths[] = $_plugin_dir;
57             // relative path, see if it is in the SMARTY_DIR
58             if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {
59                 $_return = SMARTY_DIR . $_plugin_filepath;
60                 break;
61             }
62         }
63         // try relative to cwd (or absolute)
64         if (@is_readable($_plugin_filepath)) {
65             $_return = $_plugin_filepath;
66             break;
67         }
68     }
69
70     if($_return === false) {
71         // still not found, try PHP include_path
72         if(isset($_relative_paths)) {
73             foreach ((array)$_relative_paths as $_plugin_dir) {
74
75                 $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
76
77                 $_params = array('file_path' => $_plugin_filepath);
78                 require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
79                 if(smarty_core_get_include_path($_params, $smarty)) {
80                     $_return = $_params['new_file_path'];
81                     break;
82                 }
83             }
84         }
85     }
86     $_filepaths_cache[$_plugin_filename] = $_return;
87     return $_return;
88 }
89
90 /* vim: set expandtab: */
91
92 ?>