Good old PHP 5, and the $recursive parameter to mkdir()
authorRob Church <robchurch@users.mediawiki.org>
Mon, 25 Jun 2007 12:58:00 +0000 (12:58 +0000)
committerRob Church <robchurch@users.mediawiki.org>
Mon, 25 Jun 2007 12:58:00 +0000 (12:58 +0000)
includes/GlobalFunctions.php

index 27fc28d..d1aac27 100644 (file)
@@ -1663,47 +1663,9 @@ function wfTempDir() {
  * Make directory, and make all parent directories if they don't exist
  */
 function wfMkdirParents( $fullDir, $mode = 0777 ) {
-       if ( strval( $fullDir ) === '' ) {
+       if( strval( $fullDir ) === '' )
                return true;
-       }
-       
-       # Go back through the paths to find the first directory that exists
-       $currentDir = $fullDir;
-       $createList = array();
-       while ( strval( $currentDir ) !== '' && !file_exists( $currentDir ) ) { 
-               # Strip trailing slashes
-               $currentDir = rtrim( $currentDir, '/\\' );
-
-               # Add to create list
-               $createList[] = $currentDir;
-
-               # Find next delimiter searching from the end
-               $p = max( strrpos( $currentDir, '/' ), strrpos( $currentDir, '\\' ) );
-               if ( $p === false ) {
-                       $currentDir = false;
-               } else {
-                       $currentDir = substr( $currentDir, 0, $p );
-               }
-       }
-       
-       if ( count( $createList ) == 0 ) {
-               # Directory specified already exists
-               return true;
-       } elseif ( $currentDir === false ) {
-               # Went all the way back to root and it apparently doesn't exist
-               return false;
-       }
-       
-       # Now go forward creating directories
-       $createList = array_reverse( $createList );
-       foreach ( $createList as $dir ) {
-               # use chmod to override the umask, as suggested by the PHP manual
-               if ( !mkdir( $dir, $mode ) || !chmod( $dir, $mode ) ) {
-                       wfDebugLog( 'mkdir', "Unable to create directory $dir\n" );
-                       return false;
-               } 
-       }
-       return true;
+       return mkdir( $fullDir, $mode, true );
 }
 
 /**