MDL-36963 Improve mdeploy worker::remove_directory() method

The additional parameter allows to use this method without actual
removing the root of the path. That is, it is now possible to remove
the content of a folder only.
This commit is contained in:
David Mudrák 2012-12-06 02:31:36 +01:00 committed by Dan Poltawski
parent b68bbc5ae1
commit 75879a9e74

View file

@ -1207,11 +1207,15 @@ class worker extends singleton_pattern {
* Deletes the given directory recursively * Deletes the given directory recursively
* *
* @param string $path full path to the directory * @param string $path full path to the directory
* @param bool $keeppathroot should the root of the $path be kept (i.e. remove the content only) or removed too
* @return bool
*/ */
protected function remove_directory($path) { protected function remove_directory($path, $keeppathroot = false) {
$result = true;
if (!file_exists($path)) { if (!file_exists($path)) {
return; return $result;
} }
if (is_dir($path)) { if (is_dir($path)) {
@ -1228,15 +1232,22 @@ class worker extends singleton_pattern {
} }
if (is_dir($filepath)) { if (is_dir($filepath)) {
$this->remove_directory($filepath); $result = $result && $this->remove_directory($filepath, false);
} else { } else {
unlink($filepath); $result = $result && unlink($filepath);
} }
} }
closedir($handle); closedir($handle);
return rmdir($path);
if (!$keeppathroot) {
$result = $result && rmdir($path);
}
clearstatcache();
return $result;
} }
/** /**