4c40ae90cd183556fdc1873cfc250bbc8628b31d
[atutor.git] / mods / phpdoc2 / PhpDocumentor / phpDocumentor / Smarty-2.6.0 / libs / core / core.assemble_plugin_filepath.php
1 <?php\r
2 /**\r
3  * Smarty plugin\r
4  * @package Smarty\r
5  * @subpackage plugins\r
6  */\r
7 \r
8 /**\r
9  * assemble filepath of requested plugin\r
10  *\r
11  * @param string $type\r
12  * @param string $name\r
13  * @return string|false\r
14  */\r
15 function smarty_core_assemble_plugin_filepath($params, &$smarty)\r
16 {\r
17 \r
18     $_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';\r
19     $_return = false;\r
20 \r
21     foreach ((array)$smarty->plugins_dir as $_plugin_dir) {\r
22 \r
23         $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;\r
24 \r
25         // see if path is relative\r
26         if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {\r
27             $_relative_paths[] = $_plugin_dir;\r
28             // relative path, see if it is in the SMARTY_DIR\r
29             if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {\r
30                 $_return = SMARTY_DIR . $_plugin_filepath;\r
31                 break;\r
32             }\r
33         }\r
34         // try relative to cwd (or absolute)\r
35         if (@is_readable($_plugin_filepath)) {\r
36             $_return = $_plugin_filepath;\r
37             break;\r
38         }\r
39     }\r
40 \r
41     if($_return === false) {\r
42         // still not found, try PHP include_path\r
43         if(isset($_relative_paths)) {\r
44             foreach ((array)$_relative_paths as $_plugin_dir) {\r
45 \r
46                 $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;\r
47 \r
48                 $_params = array('file_path' => $_plugin_filepath);\r
49                 require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php');\r
50                 if(smarty_core_get_include_path($_params, $smarty)) {\r
51                     return $_params['new_file_path'];\r
52                 }\r
53             }\r
54         }\r
55     }\r
56 \r
57     return $_return;\r
58 }\r
59 \r
60 /* vim: set expandtab: */\r
61 \r
62 ?>\r