00001 <?php 00014 // $dir 00015 00016 function smarty_core_create_dir_structure($params, &$smarty) 00017 { 00018 if (!file_exists($params['dir'])) { 00019 $_open_basedir_ini = ini_get('open_basedir'); 00020 00021 if (DIRECTORY_SEPARATOR=='/') { 00022 /* unix-style paths */ 00023 $_dir = $params['dir']; 00024 $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY); 00025 $_new_dir = (substr($_dir, 0, 1)=='/') ? '/' : getcwd().'/'; 00026 if($_use_open_basedir = !empty($_open_basedir_ini)) { 00027 $_open_basedirs = explode(':', $_open_basedir_ini); 00028 } 00029 00030 } else { 00031 /* other-style paths */ 00032 $_dir = str_replace('\\','/', $params['dir']); 00033 $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY); 00034 if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) { 00035 /* leading "//" for network volume, or "[letter]:/" for full path */ 00036 $_new_dir = $_root_dir[1]; 00037 /* remove drive-letter from _dir_parts */ 00038 if (isset($_root_dir[3])) array_shift($_dir_parts); 00039 00040 } else { 00041 $_new_dir = str_replace('\\', '/', getcwd()).'/'; 00042 00043 } 00044 00045 if($_use_open_basedir = !empty($_open_basedir_ini)) { 00046 $_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini)); 00047 } 00048 00049 } 00050 00051 /* all paths use "/" only from here */ 00052 foreach ($_dir_parts as $_dir_part) { 00053 $_new_dir .= $_dir_part; 00054 00055 if ($_use_open_basedir) { 00056 // do not attempt to test or make directories outside of open_basedir 00057 $_make_new_dir = false; 00058 foreach ($_open_basedirs as $_open_basedir) { 00059 if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) { 00060 $_make_new_dir = true; 00061 break; 00062 } 00063 } 00064 } else { 00065 $_make_new_dir = true; 00066 } 00067 00068 if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) { 00069 $smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); 00070 return false; 00071 } 00072 $_new_dir .= '/'; 00073 } 00074 } 00075 } 00076 00077 /* vim: set expandtab: */ 00078 00079 ?>
| Copyright © 2003 - 2009 MyOOS [Shopsystem]. All rights reserved. MyOOS [Shopsystem] is Free Software released under the GNU/GPL License. Webmaster: info@r23.de (Impressum) |
|
