public function Test_is_dir() { $path = 'invalid path'; $this->assertFalse(AkFtp::is_dir($path)); $path = 'this_is_a_file.txt'; Ak::file_put_contents('this_is_a_file.txt', ''); $this->assertFalse(AkFtp::is_dir($path)); AkFtp::make_dir('tmp_test_dir'); Ak::file_put_contents('tmp_test_dir/file_inside.txt', ''); $path = 'tmp_test_dir/file_inside.txt'; $this->assertFalse(AkFtp::is_dir($path)); AkFtp::make_dir('real_dir/another/dir'); $path = 'real_dir'; $this->assertTrue(AkFtp::is_dir($path)); $path = 'real_dir/another/dir'; $this->assertTrue(AkFtp::is_dir($path)); AkFtp::delete('real_dir'); AkFtp::delete('this_is_a_file.txt'); AkFtp::delete('tmp_test_dir'); }
function directory_delete($dir_name, $options = array()) { $default_options = array('ftp' => defined('AK_DELETE_FILES_USING_FTP') && AK_DELETE_FILES_USING_FTP, 'base_path' => AK_BASE_DIR); $options = array_merge($default_options, $options); $sucess = true; $dir_name = Ak::_getRestrictedPath($dir_name, $options); if (empty($dir_name)) { return false; } if ($options['ftp']) { require_once AK_LIB_DIR . DS . 'AkFtp.php'; return AkFtp::delete($dir_name); } else { $items = glob($options['base_path'] . DS . $dir_name . "/*"); $hidden_items = glob($options['base_path'] . DS . $dir_name . "/.*"); $fs_items = $items || $hidden_items ? array_merge((array) $items, (array) $hidden_items) : false; if ($fs_items) { $items_to_delete = array('directories' => array(), 'files' => array()); foreach ($fs_items as $fs_item) { if ($fs_item[strlen($fs_item) - 1] != '.') { $items_to_delete[is_dir($fs_item) ? 'directories' : 'files'][] = $fs_item; } } foreach ($items_to_delete['files'] as $file) { Ak::file_delete($file, $options); } foreach ($items_to_delete['directories'] as $directory) { $sucess = $sucess ? Ak::directory_delete($directory, $options) : $sucess; } } return $sucess ? @rmdir($options['base_path'] . DS . $dir_name) : $sucess; } }
static function directory_delete($dir_name, $options = array()) { $default_options = array('ftp' => defined('AK_DELETE_FILES_USING_FTP') && AK_DELETE_FILES_USING_FTP, 'base_path' => self::getDefaultBasePath($dir_name)); $options = array_merge($default_options, $options); $sucess = true; $dir_name = self::getRestrictedPath($dir_name, $options); if (empty($dir_name)) { return false; } if ($options['ftp']) { return AkFtp::delete($dir_name); } else { $base_path = self::getNormalizedBasePath($options); $items = glob($base_path . $dir_name . "/*"); $hidden_items = glob($base_path . $dir_name . "/.*"); $fs_items = $items || $hidden_items ? array_merge((array) $items, (array) $hidden_items) : false; if ($fs_items) { $items_to_delete = array('directories' => array(), 'files' => array()); foreach ($fs_items as $fs_item) { if ($fs_item[strlen($fs_item) - 1] != '.') { $items_to_delete[is_dir($fs_item) ? 'directories' : 'files'][] = $fs_item; } } foreach ($items_to_delete['files'] as $file) { self::file_delete($file, $options); } foreach ($items_to_delete['directories'] as $directory) { $sucess = $sucess ? self::directory_delete($directory, $options) : $sucess; } } return $sucess ? is_dir($base_path . $dir_name) ? rmdir($base_path . $dir_name) : $sucess : $sucess; } }
function directory_delete($dir_name, $options = array()) { $default_options = array('ftp' => defined('AK_DELETE_FILES_USING_FTP') && AK_DELETE_FILES_USING_FTP, 'base_path' => AK_BASE_DIR); $options = array_merge($default_options, $options); $sucess = true; $dir_name = str_replace('..', '', rtrim($dir_name, '\\/. ')); if ($dir_name == '') { return false; } $dir_name = trim(str_replace($options['base_path'], '', $dir_name), DS); if ($options['ftp']) { require_once AK_LIB_DIR . DS . 'AkFtp.php'; $dir_name = trim(str_replace(array(DS, '//'), array('/', '/'), $dir_name), '/'); return AkFtp::delete($dir_name); } else { if ($fs_items = glob($options['base_path'] . DS . $dir_name . "/*")) { $items_to_delete = array('directories' => array(), 'files' => array()); foreach ($fs_items as $fs_item) { $items_to_delete[is_dir($fs_item) ? 'directories' : 'files'][] = $fs_item; } foreach ($items_to_delete['files'] as $file) { Ak::file_delete($file, $options); } foreach ($items_to_delete['directories'] as $directory) { $sucess = $sucess ? Ak::directory_delete($directory, $options) : $sucess; } return $sucess; } return rmdir($options['base_path'] . DS . $dir_name); } }
public function test_is_dir() { if (!RUN_FTP_TESTS) { return; } $path = 'invalid path'; $this->assertFalse(AkFtp::is_dir($path)); $path = 'this_is_a_file.txt'; AkFileSystem::file_put_contents('this_is_a_file.txt', ''); $this->assertFalse(AkFtp::is_dir($path)); AkFtp::make_dir('tmp_test_dir'); AkFileSystem::file_put_contents('tmp_test_dir/file_inside.txt', ''); $path = 'tmp_test_dir/file_inside.txt'; $this->assertFalse(AkFtp::is_dir($path)); AkFtp::make_dir('real_dir/another/dir'); $path = 'real_dir'; $this->assertTrue(AkFtp::is_dir($path)); $path = 'real_dir/another/dir'; $this->assertTrue(AkFtp::is_dir($path)); AkFtp::delete('real_dir'); AkFtp::delete('this_is_a_file.txt'); AkFtp::delete('tmp_test_dir'); AkFtp::delete('cache'); }