/** * Copy a project task to a template task * * @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 copyFromProjectTask($project_task, $template_id, $parent_id = 0, $milestone_id = 0) { //param $parent_subtask = 0; $new_st_date = ''; $new_due_date = ''; $new_task = new TemplateTask(); $new_task->setObjectName($project_task->getObjectName()); $new_task->setText($project_task->getText()); $new_task->setAssignedToContactId($project_task->getAssignedToContactId()); $new_task->setAssignedOn($project_task->getAssignedOn()); $new_task->setAssignedById($project_task->getAssignedById()); $new_task->setTimeEstimate($project_task->getTimeEstimate()); $new_task->setStartedOn($project_task->getStartedOn()); $new_task->setStartedById($project_task->getStartedById()); $new_task->setPriority($project_task->getPriority()); $new_task->setOrder($project_task->getOrder()); $new_task->setUseStartTime($project_task->getUseStartTime()); $new_task->setUseDueTime($project_task->getUseDueTime()); $new_task->setTypeContent($project_task->getTypeContent()); $new_task->setParentId($project_task->getParentId()); $new_task->setOriginalTaskId($project_task->getId()); $new_task->setTemplateId($template_id); $new_task->setSessionId(null); $new_task->setParentId($parent_id); $new_task->setMilestoneId($milestone_id); if ($project_task->getDueDate() instanceof DateTimeValue) { $new_task->setDueDate(new DateTimeValue($project_task->getDueDate()->getTimestamp())); } if ($project_task->getStartDate() instanceof DateTimeValue) { $new_task->setStartDate(new DateTimeValue($project_task->getStartDate()->getTimestamp())); } if ($new_st_date != "") { if ($new_task->getStartDate() instanceof DateTimeValue) { $new_task->setStartDate($new_st_date); } } if ($new_due_date != "") { if ($new_task->getDueDate() instanceof DateTimeValue) { $new_task->setDueDate($new_due_date); } } $new_task->save(); // Copy members, linked_objects, custom_properties, subscribers, reminders and comments copy_additional_object_data($project_task, $new_task); // Ensure that assigned user is subscribed if ($new_task->getAssignedTo() instanceof Contact) { $new_task->subscribeUser($new_task->getAssignedTo()); } return $new_task; }