function mkdir($dir, $perm = 0777, $parents = true) { $dir = dir::clean_path($dir); if (!$parents) { return dir::_do_mkdir($dir, $perm); } $separator = dir::separator(); $dir_elements = dir::explode_path($dir); if (count($dir_elements) == 0) { return true; } if (!$dir_elements[0]) { array_shift($dir_elements); $current_dir .= array_shift($dir_elements); } else { $current_dir = array_shift($dir_elements); } if (!dir::_do_mkdir($current_dir, $perm)) { return false; } for ($i = 0; $i < count($dir_elements); $i++) { $current_dir .= $separator . $dir_elements[$i]; if (!dir::_do_mkdir($current_dir, $perm)) { return false; } } return true; }
function mkdir($dir, $perm, $parents = true) { $dir = dir::clean_path($dir); if (!$parents) { return dir::_do_mkdir($dir, $perm); } $separator = dir::separator(); $dir_elements = dir::explode_path($dir); if (count($dir_elements) == 0) { return true; } $current_dir = $dir_elements[0]; if (!dir::_do_mkdir($current_dir, $perm)) { return false; } for ($i = 1; $i < count($dir_elements); ++$i) { $dir_element = $dir_elements[$i]; $current_dir .= $separator . $dir_element; if (!dir::_do_mkdir($current_dir, $perm)) { return false; } } return true; }
function test_explode_relative_path() { $path = dir :: explode_path('tmp\../tmp/wow////hey/'); $this->assertEqual(sizeof($path), 3); $this->assertEqual($path[0], 'tmp'); $this->assertEqual($path[1], 'wow'); $this->assertEqual($path[2], 'hey'); $path = dir :: explode_path('tmp\../tmp/wow////hey'); // no trailing slash $this->assertEqual(sizeof($path), 3); $this->assertEqual($path[0], 'tmp'); $this->assertEqual($path[1], 'wow'); $this->assertEqual($path[2], 'hey'); }