mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 08:55:15 +02:00
MDL-48252 scheduled tasks: file_temp_cleanup_task does full delete.
This scheduled task was previously only doing a partial delete due to the fact that the directory modification time would be updated when a child file was deleted. It would then have to wait another week before that directory could be deleted.
This commit is contained in:
parent
c106341098
commit
767d01cf39
@ -52,13 +52,28 @@ class file_temp_cleanup_task extends scheduled_task {
|
||||
// Show all child nodes prior to their parent.
|
||||
$iter = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::CHILD_FIRST);
|
||||
|
||||
// An array of the full path (key) and date last modified.
|
||||
$modifieddateobject = array();
|
||||
|
||||
// Get the time modified for each directory node. Nodes will be updated
|
||||
// once a file is deleted, so we need a list of the original values.
|
||||
for ($iter->rewind(); $iter->valid(); $iter->next()) {
|
||||
$node = $iter->getRealPath();
|
||||
if (!is_readable($node)) {
|
||||
continue;
|
||||
}
|
||||
$modifieddateobject[$node] = $iter->getMTime();
|
||||
}
|
||||
|
||||
// Now loop through again and remove old files and directories.
|
||||
for ($iter->rewind(); $iter->valid(); $iter->next()) {
|
||||
$node = $iter->getRealPath();
|
||||
if (!is_readable($node)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if file or directory is older than the given time.
|
||||
if ($iter->getMTime() < $time) {
|
||||
if ($modifieddateobject[$node] < $time) {
|
||||
if ($iter->isDir() && !$iter->isDot()) {
|
||||
// Don't attempt to delete the directory if it isn't empty.
|
||||
if (!glob($node. DIRECTORY_SEPARATOR . '*')) {
|
||||
@ -72,9 +87,11 @@ class file_temp_cleanup_task extends scheduled_task {
|
||||
mtrace("Failed removing file '$node'.");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Return the time modified to the original date.
|
||||
touch($node, $modifieddateobject[$node]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user