/**
  * 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;
 }