. */ namespace Fisharebest\Webtrees; /** * File manipulation utilities. */ class File { /** * Recursively delete a folder or file * * @param string $path * * @return bool Was the file deleted */ public static function delete($path) { if (is_dir($path)) { $dir = opendir($path); while ($dir !== false && (($file = readdir($dir)) !== false)) { if ($file !== '.' && $file !== '..') { self::delete($path . DIRECTORY_SEPARATOR . $file); } } closedir($dir); try { rmdir($path); } catch (\ErrorException $ex) { // Continue, in case there are other files/folders that we can delete. } } else { try { unlink($path); } catch (\ErrorException $ex) { // Continue, in case there are other files/folders that we can delete. } } return !file_exists($path); } /** * Create a folder, and sub-folders, if it does not already exist * * @param string $path * * @return bool Does the folder now exist */ public static function mkdir($path) { if (is_dir($path)) { return true; } else { if (dirname($path) && !is_dir(dirname($path))) { self::mkdir(dirname($path)); } try { mkdir($path); return true; } catch (\ErrorException $ex) { return false; } } } }