phpDocumentor Smarty
plugins
[ class tree: Smarty ] [ index: Smarty ] [ all elements ]

Source for file core.create_dir_structure.php

Documentation is available at core.create_dir_structure.php

  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-1PREG_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-1PREG_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_dir0strlen($_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. ?>

Documentation generated on Tue, 24 Oct 2006 09:21:53 -0500 by phpDocumentor 1.3.1