Fix project::delete to delete children tasks before parent tasks

This commit is contained in:
atm-greg 2018-08-09 12:13:06 +02:00
parent e85ec19018
commit 4e16f64af0

View File

@ -633,9 +633,7 @@ class Project extends CommonObject
$this->getLinesArray($user);
// Delete tasks
foreach($this->lines as &$task) {
$task->delete($user);
}
$this->deleteTasks($this->lines);
// Delete project
if (! $error)
@ -711,6 +709,25 @@ class Project extends CommonObject
return -1;
}
}
/**
* Reoder tasks to delete children tasks first
*
* @param array $arr Array of tasks
*/
function deleteTasks($arr)
{
global $user;
$arrParents = array();
foreach($arr as $task)
{
if($task->hasChildren() < 0) $task->delete($user);
else $arrParents[] = $task;
}
if (count($arrParents)) $this->deleteTasks($arrParents);
}
/**
* Validate a project