/** * Copy a project task to a template task and all subtasks (go deep) * * @access public * @param $project_task ProjectTask project task * @param $template_id int the template id * @param $parent_id int the parent id if is a subtask * @return TemplateTask */ function copyFromProjectTaskIncludeSubTasks($project_task, $template_id, $parent_id = 0, $milestone_id = 0) { //Copy task $tmp_task = TemplateTask::copyFromProjectTask($project_task, $template_id, $parent_id, $milestone_id); // Copy Subtasks $tmp_sub_tasks = $project_task->getSubTasks(false, false); foreach ($tmp_sub_tasks as $c) { if ($c instanceof ProjectTask) { $sub = TemplateTask::copyFromProjectTaskIncludeSubTasks($c, $template_id, $tmp_task->getId(), $milestone_id); //create a TemplateObject $to = new TemplateObject(); $to->setObject($sub); $to->setTemplateId($template_id); $to->save(); } } return $tmp_task; }