mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-27 18:31:36 +01:00
abstract more private functions to plugin directory
This commit is contained in:
68
libs/plugins/core.parse_file_path.php
Normal file
68
libs/plugins/core.parse_file_path.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* parse out the type and name from the template resource
|
||||
*
|
||||
* @param string $file_base_path
|
||||
* @param string $file_path
|
||||
* @param string $resource_type
|
||||
* @param string $resource_name
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $file_base_path, $file_path, &$resource_type, &$resource_name
|
||||
|
||||
function smarty_core_parse_file_path(&$params, &$this)
|
||||
{
|
||||
|
||||
// split tpl_path by the first colon
|
||||
$_file_path_parts = explode(':', $params['file_path'], 2);
|
||||
|
||||
if (count($_file_path_parts) == 1) {
|
||||
// no resource type, treat as type "file"
|
||||
$params['resource_type'] = 'file';
|
||||
$params['resource_name'] = $_file_path_parts[0];
|
||||
} else {
|
||||
$params['resource_type'] = $_file_path_parts[0];
|
||||
$params['resource_name'] = $_file_path_parts[1];
|
||||
if ($params['resource_type'] != 'file') {
|
||||
$_params = array('type' => $params['resource_type']);
|
||||
$this->_execute_core_function('load_resource_plugin', $_params);
|
||||
}
|
||||
}
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $params['resource_name'])) {
|
||||
// relative pathname to $params['file_base_path']
|
||||
// use the first directory where the file is found
|
||||
$_file_base_path = $params['file_base_path'];
|
||||
settype($_file_base_path, 'array');
|
||||
foreach ($_file_base_path as $_curr_path) {
|
||||
$_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
|
||||
if (file_exists($_fullpath) && is_file($_fullpath)) {
|
||||
$params['resource_name'] = $_fullpath;
|
||||
return true;
|
||||
}
|
||||
// didn't find the file, try include_path
|
||||
$_params = array('file_path' => $_fullpath);
|
||||
if($this->_execute_core_function('get_include_path', $_params)) {
|
||||
$params['resource_name'] = $_params['new_file_path'];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// resource type != file
|
||||
return true;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user