/** * * * @param ContentDataObject $object * @param $additional_attributes array * @param $go_deep bool copy all subtasks or if is a milestone copy all tasks * @return int Template Object id */ function addObject($object, $additional_attributes = array(), $go_deep = true) { //if ($this->hasObject($object)) return; //if object is a ProjectTask if ($object instanceof ProjectTask) { if ($go_deep) { $object = TemplateTask::copyFromProjectTaskIncludeSubTasks($object, $this->getId()); } else { $object = TemplateTask::copyFromProjectTask($object, $this->getId()); } //if object is a ProjectMilestone } else { if ($object instanceof ProjectMilestone) { $object = TemplateMilestone::copyFromProjectMilestone($object, $this->getId(), $go_deep); //if object is a TemplateTask } else { if ($object instanceof TemplateTask) { $object->setColumnValue('template_id', $this->getId()); $object->setColumnValue('session_id', null); if (isset($additional_attributes['milestone'])) { $object->setMilestoneId($additional_attributes['milestone']); } $object->save(); //if object is a TemplateMilestone } else { if ($object instanceof TemplateMilestone) { $object->setColumnValue('template_id', $this->getId()); $object->setColumnValue('session_id', null); $object->save(); } } } } // the object is already a template or can't be one, use it as it is $template = $object; //create a TemplateObject $to = new TemplateObject(); $to->setObject($template); $to->setTemplate($this); $to->save(); return $template->getObjectId(); }
/** * Copies tasks from milestoneFrom to milestoneTo. * * @param TemplateMilestone $milestoneFrom * @param TemplateMilestone $milestoneTo */ function copyTasks(TemplateMilestone $milestoneFrom, TemplateMilestone $milestoneTo, $as_template = false) { //FIXME foreach ($milestoneFrom->getTasks($as_template) as $sub) { if ($sub->getParentId() != 0) { continue; } $new = TemplateTasks::createTaskCopy($sub); $new->setMilestoneId($milestoneTo->getId()); $new->save(); $object_controller = new ObjectController(); $members = $milestoneFrom->getMemberIds(); if (count($members)) { $object_controller->add_to_members($new, $members); } /* foreach ($sub->getWorkspaces() as $workspace) { if (TemplateTask::canAdd(logged_user(), $workspace)) { $new->addToWorkspace($workspace); } } if (!$as_template && active_project() instanceof Project && TemplateTask::canAdd(logged_user(), active_project())) { $new->removeFromAllWorkspaces(); $new->addToWorkspace(active_project()); } */ $new->copyCustomPropertiesFrom($sub); $new->copyLinkedObjectsFrom($sub); TemplateTasks::copySubTasks($sub, $new, $as_template); } }