/[cvs]/nfo/php/libs/net.php.smarty/core/core.create_dir_structure.php
ViewVC logotype

Annotation of /nfo/php/libs/net.php.smarty/core/core.create_dir_structure.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Wed Jun 16 21:58:12 2004 UTC (20 years, 1 month ago) by joko
Branch: MAIN
CVS Tags: HEAD
updated to smarty-2.6.3

1 joko 1.1 <?php
2     /**
3     * Smarty plugin
4     * @package Smarty
5     * @subpackage plugins
6     */
7    
8     /**
9     * create full directory structure
10     *
11     * @param string $dir
12     */
13    
14     // $dir
15    
16     function smarty_core_create_dir_structure($params, &$smarty)
17     {
18     if (!file_exists($params['dir'])) {
19     $_open_basedir_ini = ini_get('open_basedir');
20    
21     if (DIRECTORY_SEPARATOR=='/') {
22     /* unix-style paths */
23     $_dir = $params['dir'];
24     $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
25     $_new_dir = ($_dir{0}=='/') ? '/' : getcwd().'/';
26     if($_use_open_basedir = !empty($_open_basedir_ini)) {
27     $_open_basedirs = explode(':', $_open_basedir_ini);
28     }
29    
30     } else {
31     /* other-style paths */
32     $_dir = str_replace('\\','/', $params['dir']);
33     $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
34     if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) {
35     /* leading "//" for network volume, or "[letter]:/" for full path */
36     $_new_dir = $_root_dir[1];
37     /* remove drive-letter from _dir_parts */
38     if (isset($_root_dir[3])) array_shift($_dir_parts);
39    
40     } else {
41     $_new_dir = str_replace('\\', '/', getcwd()).'/';
42    
43     }
44    
45     if($_use_open_basedir = !empty($_open_basedir_ini)) {
46     $_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini));
47     }
48    
49     }
50    
51     /* all paths use "/" only from here */
52     foreach ($_dir_parts as $_dir_part) {
53     $_new_dir .= $_dir_part;
54    
55     if ($_use_open_basedir) {
56     // do not attempt to test or make directories outside of open_basedir
57     $_make_new_dir = false;
58     foreach ($_open_basedirs as $_open_basedir) {
59     if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) {
60     $_make_new_dir = true;
61     break;
62     }
63     }
64     } else {
65     $_make_new_dir = true;
66     }
67    
68     if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) {
69     $smarty->trigger_error("problem creating directory '" . $_new_dir . "'");
70     return false;
71     }
72     $_new_dir .= '/';
73     }
74     }
75     }
76    
77     /* vim: set expandtab: */
78    
79     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed