public static function createProjectTask($projectTaskData) { try { $projectTask = new ProjectTask(); $projectTask->project_id = $projectTaskData['project_id']; $projectTask->parent_task_id = $projectTaskData['parent_task_id']; $projectTask->project_task_id = $projectTaskData['project_task_id']; $projectTask->percent_complete = $projectTaskData['percent_complete']; $projectTask->name = $projectTaskData['name']; $projectTask->save(); self::pushObject($projectTask); return $projectTask; } catch (Exception $ex) { die("Not all needed params were defined for new project task"); } }
public function testsave() { $projectTask = new ProjectTask(); $projectTask->name = 'test'; //$projectTask->project_id = "1"; $projectTask->assigned_user_id = '1'; $projectTask->description = 'test description'; $projectTask->parent_task_id = 1; $projectTask->save(); //test for record ID to verify that record is saved $this->assertTrue(isset($projectTask->id)); $this->assertEquals(36, strlen($projectTask->id)); //test _get_depends_on_name method $this->_get_depends_on_name($projectTask->id); //mark the record as deleted and verify that this record cannot be retrieved anymore. $projectTask->mark_deleted($projectTask->id); $result = $projectTask->retrieve($projectTask->id); $this->assertEquals(null, $result); }
function action_create_project() { global $current_user, $db, $mod_strings; $project_name = $_POST['p_name']; $template_id = $_POST['template_id']; $project_start = $_POST['start_date']; $copy_all = isset($_POST['copy_all_tasks']) ? 1 : 0; $copy_tasks = isset($_POST['tasks']) ? $_POST['tasks'] : array(); //Get project start date if ($project_start != '') { $dateformat = $current_user->getPreference('datef'); $startdate = DateTime::createFromFormat($dateformat, $project_start); $start = $startdate->format('Y-m-d'); } $duration_unit = 'Days'; //Get the project template $template = new AM_ProjectTemplates(); $template->retrieve($template_id); //create project from template $project = new Project(); $project->name = $project_name; $project->estimated_start_date = $start; $project->status = $template->status; $project->priority = strtolower($template->priority); $project->description = $template->description; $project->assigned_user_id = $template->assigned_user_id; $project->save(); //copy all resources from template to project $template->load_relationship('am_projecttemplates_users_1'); $template_users = $template->get_linked_beans('am_projecttemplates_users_1', 'User'); $template->load_relationship('am_projecttemplates_contacts_1'); $template_contacts = $template->get_linked_beans('am_projecttemplates_contacts_1', 'Contact'); $project->load_relationship('project_users_1'); foreach ($template_users as $user) { $project->project_users_1->add($user->id); } $project->load_relationship('project_contacts_1'); foreach ($template_contacts as $contact) { $project->project_contacts_1->add($contact->id); } $template->load_relationship('am_projecttemplates_project_1'); $template->am_projecttemplates_project_1->add($project->id); //Get related project template tasks. Using sql query so that the results can be ordered. $get_tasks = "SELECT * FROM am_tasktemplates\n WHERE id\n IN (\n SELECT am_tasktemplates_am_projecttemplatesam_tasktemplates_idb\n FROM am_tasktemplates_am_projecttemplates_c\n WHERE am_tasktemplates_am_projecttemplatesam_projecttemplates_ida = '" . $template_id . "'\n AND deleted =0\n )\n AND deleted =0\n ORDER BY am_tasktemplates.order_number ASC"; $tasks = $db->query($get_tasks); //Create new project tasks from the template tasks $count = 1; while ($row = $db->fetchByAssoc($tasks)) { $project_task = new ProjectTask(); $project_task->name = $row['name']; $project_task->status = $row['status']; $project_task->priority = strtolower($row['priority']); $project_task->percent_complete = $row['percent_complete']; $project_task->predecessors = $row['predecessors']; $project_task->milestone_flag = $row['milestone_flag']; $project_task->relationship_type = $row['relationship_type']; $project_task->task_number = $row['task_number']; $project_task->order_number = $row['order_number']; $project_task->estimated_effort = $row['estimated_effort']; $project_task->utilization = $row['utilization']; if ($copy_all == 0 && !in_array($row['id'], $copy_tasks)) { $project_task->assigned_user_id = NULL; } else { $project_task->assigned_user_id = $row['assigned_user_id']; } $project_task->description = $row['description']; $project_task->duration = $row['duration']; $project_task->duration_unit = $duration_unit; $project_task->project_task_id = $count; //Flag to prevent after save logichook running when project_tasks are created (see custom/modules/ProjectTask/updateProject.php) $project_task->set_project_end_date = 0; if ($count == '1') { $project_task->date_start = $start; $enddate = $startdate->modify('+' . $row['duration'] . ' ' . $duration_unit); $end = $enddate->format('Y-m-d'); $project_task->date_finish = $end; $enddate_array[$count] = $end; $GLOBALS['log']->fatal("DATE:" . $end); } else { $start_date = $count - 1; $startdate = DateTime::createFromFormat('Y-m-d', $enddate_array[$start_date]); $GLOBALS['log']->fatal("DATE:" . $enddate_array[$start_date]); $start = $startdate->format('Y-m-d'); $project_task->date_start = $start; $enddate = $startdate->modify('+' . $row['duration'] . ' ' . $duration_unit); $end = $enddate->format('Y-m-d'); $project_task->date_finish = $end; $enddate = $end; $enddate_array[$count] = $end; } $project_task->save(); //link tasks to the newly created project $project_task->load_relationship('projects'); $project_task->projects->add($project->id); //Add assinged users from each task to the project resourses subpanel $project->load_relationship('project_users_1'); $project->project_users_1->add($row['assigned_user_id']); $count++; } //set project end date to the same as end date of the last task $GLOBALS['log']->fatal("project end -- DATE:" . $end); $project->estimated_end_date = $end; $project->save(); //redirct to new project SugarApplication::appendErrorMessage($mod_strings["LBL_NEW_PROJECT_CREATED"]); $params = array('module' => 'Project', 'action' => 'DetailView', 'record' => $project->id); SugarApplication::redirect('index.php?' . http_build_query($params)); }
function quick_add_task() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $notAllowedMember = ''; if (!ProjectTask::canAdd(logged_user(), active_context(), $notAllowedMember)) { if (str_starts_with($notAllowedMember, '-- req dim --')) { flash_error(lang('must choose at least one member of', str_replace_first('-- req dim --', '', $notAllowedMember, $in))); } else { flash_error(lang('no context permissions to add', lang("tasks"), $notAllowedMember)); } ajx_current("empty"); return; } ajx_current("empty"); $task = new ProjectTask(); $task_data = array_var($_POST, 'task'); $parent_id = array_var($task_data, 'parent_id', 0); $parent = ProjectTasks::findById($parent_id); if (is_array($task_data)) { $task_data['due_date'] = getDateValue(array_var($task_data, 'task_due_date')); $task_data['start_date'] = getDateValue(array_var($task_data, 'task_start_date')); if ($task_data['due_date'] instanceof DateTimeValue) { $duetime = getTimeValue(array_var($task_data, 'task_due_time')); if (is_array($duetime)) { $task_data['due_date']->setHour(array_var($duetime, 'hours')); $task_data['due_date']->setMinute(array_var($duetime, 'mins')); } $task_data['due_date']->advance(logged_user()->getTimezone() * -3600); $task_data['use_due_time'] = is_array($duetime); } if ($task_data['start_date'] instanceof DateTimeValue) { $starttime = getTimeValue(array_var($task_data, 'task_start_time')); if (is_array($starttime)) { $task_data['start_date']->setHour(array_var($starttime, 'hours')); $task_data['start_date']->setMinute(array_var($starttime, 'mins')); } $task_data['start_date']->advance(logged_user()->getTimezone() * -3600); $task_data['use_start_time'] = is_array($starttime); } if (config_option("wysiwyg_tasks")) { $task_data['type_content'] = "html"; $task_data['text'] = preg_replace("/[\n|\r|\n\r]/", '', array_var($task_data, 'text')); } else { $task_data['type_content'] = "text"; } $task_data['object_type_id'] = $task->getObjectTypeId(); $task->setFromAttributes($task_data); if (array_var($task_data, 'is_completed', false) == 'true') { $task->setCompletedOn(DateTimeValueLib::now()); $task->setCompletedById(logged_user()->getId()); } try { DB::beginWork(); $task->save(); $totalMinutes = array_var($task_data, 'hours') * 60 + array_var($task_data, 'minutes'); $task->setTimeEstimate($totalMinutes); $task->save(); $gb_member_id = array_var($task_data, 'member_id'); $member_ids = array(); $persons_dim = Dimensions::findByCode('feng_persons'); $persons_dim_id = $persons_dim instanceof Dimension ? $persons_dim->getId() : 0; if ($parent) { if (count($parent->getMembers()) > 0) { foreach ($parent->getMembers() as $member) { if ($member->getDimensionId() != $persons_dim_id) { $member_ids[] = $member->getId(); } } } $task->setMilestoneId($parent->getMilestoneId()); $task->save(); } if (count($member_ids) == 0) { $member_ids = active_context_members(false); } if ($gb_member_id && is_numeric($gb_member_id)) { $member_ids[] = $gb_member_id; } $object_controller = new ObjectController(); $object_controller->add_to_members($task, $member_ids); //Add new work timeslot for this task // if (array_var($task_data,'hours') != '' && array_var($task_data,'hours') > 0){ // $hours = array_var($task_data, 'hours'); // $hours = - $hours; // // $timeslot = new Timeslot(); // $dt = DateTimeValueLib::now(); // $dt2 = DateTimeValueLib::now(); // $timeslot->setEndTime($dt); // $dt2 = $dt2->add('h', $hours); // $timeslot->setStartTime($dt2); // $timeslot->setContactId(logged_user()->getId()); // $timeslot->setObjectId($task->getId()); // $timeslot->save(); // } ApplicationLogs::createLog($task, ApplicationLogs::ACTION_ADD); $assignee = $task->getAssignedToContact(); if ($assignee instanceof Contact) { $task->subscribeUser($assignee); } // create default reminder $reminder = new ObjectReminder(); $reminder->setMinutesBefore(1440); $reminder->setType("reminder_email"); $reminder->setContext("due_date"); $reminder->setObject($task); $reminder->setUserId(0); $date = $task->getDueDate(); if (!isset($minutes)) { $minutes = 0; } if ($date instanceof DateTimeValue) { $rdate = new DateTimeValue($date->getTimestamp() - $minutes * 60); $reminder->setDate($rdate); } $reminder->save(); $subs = array(); if (config_option('multi_assignment') && Plugins::instance()->isActivePlugin('crpm')) { $json_subtasks = json_decode(array_var($_POST, 'multi_assignment')); $line = 0; foreach ($json_subtasks as $json_subtask) { $subtasks[$line]['assigned_to_contact_id'] = $json_subtask->assigned_to_contact_id; $subtasks[$line]['name'] = $json_subtask->name; $subtasks[$line]['time_estimate_hours'] = $json_subtask->time_estimate_hours; $subtasks[$line]['time_estimate_minutes'] = $json_subtask->time_estimate_minutes; $line++; } Hook::fire('save_subtasks', $task, $subtasks); $subtasks = ProjectTasks::findAll(array('conditions' => '`parent_id` = ' . DB::escape($task->getId()))); // findAll foreach ($subtasks as $sub) { $subs[] = $sub->getArrayInfo(); } } // subscribe $task->subscribeUser(logged_user()); DB::commit(); // notify asignee if (array_var($task_data, 'notify') == 'true') { try { Notifier::taskAssigned($task); } catch (Exception $e) { } // try } ajx_extra_data(array("task" => $task->getArrayInfo(), 'subtasks' => $subs)); flash_success(lang('success add task', $task->getObjectName())); } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); } // try } // if }
$project_task = new ProjectTask(); $project_task->assigned_user_id = 1; $project_task->name = 'Gather data from meetings'; $project_task->date_start = create_date('2007', '11', '20'); //$project_task->time_start = create_time(8,0,0); $project_task->date_finish = create_date('2007', '11', '20'); //$project_task->time_finish = create_time(8,0,0); $project_task->project_id = $audit_plan_id; $project_task->project_task_id = '5'; $project_task->description = 'Need to organize the data and put it in the right spreadsheet.'; $project_task->duration = '1'; $project_task->duration_unit = 'Days'; $project_task->parent_task_id = '2'; $project_task->predecessor = '4'; $project_task->percent_complete = 0; $project_task->save(); /* // Project: Move Mountain $project = new Project(); $project->name = 'IPO Launch Party'; $project->description = 'Need to organize the IPO party for the upcoming Tuesday.'; $project->assigned_user_id = 1; $move_mountain_id = $project->save(); $project_task = new ProjectTask(); $project_task->assigned_user_id = 1;
} if (!empty($_REQUEST['date_due']) && !empty($_REQUEST['time_due'])) { $time_due_meridiem = ""; if (isset($_REQUEST['time_due_meridiem'])) { $time_due_meridiem = $_REQUEST['time_due_meridiem']; } $project->date_due = $_REQUEST['date_due']; $project->time_due = $_REQUEST['time_due'] . $time_due_meridiem; } // lets SugarBean handle date processing $project->process_save_dates = true; $GLOBALS['check_notify'] = false; if (!empty($_POST['assigned_user_id']) && $focus->assigned_user_id != $_POST['assigned_user_id'] && $_POST['assigned_user_id'] != $current_user->id) { $GLOBALS['check_notify'] = true; } if (!$project->ACLAccess('Save')) { ACLController::displayNoAccess(true); sugar_cleanup(true); } $project->save($GLOBALS['check_notify']); if (isset($_REQUEST['form'])) { // we are doing the save from a popup window echo '<script>opener.window.location.reload();self.close();</script>'; die; } else { // need to refresh the page properly $return_module = empty($_REQUEST['return_module']) ? 'ProjectTask' : $_REQUEST['return_module']; $return_action = empty($_REQUEST['return_action']) ? 'index' : $_REQUEST['return_action']; $return_id = empty($_REQUEST['return_id']) ? $project->id : $_REQUEST['return_id']; header("Location: index.php?module={$return_module}&action={$return_action}&record={$return_id}"); }
function update_task($id, $name, $start, $end, $project_id, $milestone_flag, $status, $predecessors, $rel_type, $duration, $duration_unit, $resource, $percent_complete, $description, $actual_duration) { $task = new ProjectTask(); $task->retrieve($id); $task->name = $name; $task->date_start = $start; $task->date_finish = $end; $task->project_id = $project_id; $task->milestone_flag = $milestone_flag; $task->status = $status; // $task->parent_task_id = $parent_task_id; $task->predecessors = $predecessors; $task->relationship_type = $rel_type; $task->duration = $duration + 1; //+1 to make duration appear correct in project table $task->duration_unit = $duration_unit; $task->assigned_user_id = $resource; $task->percent_complete = $percent_complete; $task->actual_duration = $actual_duration; $task->description = $description; $task->save(); }
<?php require_once 'init.php'; use Agil\View\View; use Agil\Config\Config; use Agil\Session\Session; $request = View::route($_POST); if ($request['METHOD'] == 'POST' && !empty($request['title']) && !empty($request['color']) && !empty($request['pk']) && Session::exist('logado')) { $logado = Session::get('logado'); $title = $request['title']; $color = $request['color']; $pk = $request['pk']; $fields = array('title' => $title, 'color' => $color, 'id_project' => $pk); $model = new ProjectTask($fields); $project_task = $model->save(); if ($project_task) { ?> <script> window.parent.boss.popup("Cartão criado com sucesso."); var timePopup = setTimeout(function(){ window.parent.boss.removeClass('modal_dialog', 'active'); window.parent.boss.ajax.load('/app/task/view_task/?pk=<?php echo $pk; ?> ', '#app_pane_body'); }, 100); </script> <?php } } else {
/** * Attach task to this lists * * @param ProjectTask $task * @return null */ function attachTask(ProjectTask $task) { if ($task->getTaskListId() == $this->getId()) { return; } $task->setTaskListId($this->getId()); $task->save(); if ($this->isCompleted()) { $this->open(); } }
/// SEED DATA FOR PROJECT AND PROJECT TASK /// include_once 'modules/Project/Project.php'; include_once 'modules/ProjectTask/ProjectTask.php'; // Project: Audit Plan $project = new Project(); $project->name = $sugar_demodata['project_seed_data']['audit']['name']; $project->description = $sugar_demodata['project_seed_data']['audit']['description']; $project->assigned_user_id = 1; $project->estimated_start_date = $sugar_demodata['project_seed_data']['audit']['estimated_start_date']; $project->estimated_end_date = $sugar_demodata['project_seed_data']['audit']['estimated_end_date']; $project->status = $sugar_demodata['project_seed_data']['audit']['status']; $project->priority = $sugar_demodata['project_seed_data']['audit']['priority']; $audit_plan_id = $project->save(); $project_task_id_counter = 1; // all the project task IDs cannot be 1, so using couter foreach ($sugar_demodata['project_seed_data']['audit']['project_tasks'] as $v) { $project_task = new ProjectTask(); $project_task->assigned_user_id = 1; $project_task->name = $v['name']; $project_task->date_start = $v['date_start']; $project_task->date_finish = $v['date_finish']; $project_task->project_id = $audit_plan_id; $project_task->project_task_id = $project_task_id_counter; $project_task->description = $v['description']; $project_task->duration = $v['duration']; $project_task->duration_unit = $v['duration_unit']; $project_task->percent_complete = $v['percent_complete']; $communicate_stakeholders_id = $project_task->save(); $project_task_id_counter++; }
/** * Save subtasks added in task form, at 'subtasks' tab * @param $parent_task: ProjectTask - The parent task to set in the subtasks to save * @param $subtasks_data: array - An array with all the subtasks data * @param $member_ids: array with the member ids to classify the subtasks * @return array with the application logs to generate */ private function saveSubtasks($parent_task, $subtasks_data, $member_ids) { $to_log = array('add' => array(), 'edit' => array(), 'trash' => array(), 'assigned' => array()); $subs = $parent_task->getSubscriberIds(); $subs_array = array(); foreach ($subs as $sid) { $subs_array['user_' . $sid] = 1; } if ($parent_task instanceof ProjectTask && is_array($subtasks_data)) { foreach ($subtasks_data as $stdata) { $st = null; if ($stdata['id'] > 0) { $st = ProjectTasks::instance()->findById($stdata['id']); // subtask has been deleted, delete object and continue with next subtask if ($stdata['deleted'] == 1 && $st instanceof ProjectTask) { /*$st->trash(false); $st->save();*/ DB::execute("UPDATE " . TABLE_PREFIX . "objects SET trashed_by_id=" . logged_user()->getId() . ", trashed_on=NOW() WHERE id=" . $st->getId()); $to_log['trash'][] = $st; continue; } } $new_subtask = false; // new subtask if (!$st instanceof ProjectTask) { $st = new ProjectTask(); $new_subtask = true; } if (trim($stdata['name'] == '')) { continue; } $changed = false; if ($st->getObjectName() != $stdata['name'] || $st->getAssignedToContactId() != $stdata['assigned_to']) { $changed = true; } if ($new_subtask || $changed) { if ($stdata['assigned_to'] > 0 && $stdata['assigned_to'] != $st->getAssignedToContactId()) { $to_log['assigned'][] = $st; } $st->setParentId($parent_task->getId()); $st->setObjectName($stdata['name']); $st->setAssignedToContactId($stdata['assigned_to']); $st->setPriority(array_var($stdata, 'priority', ProjectTasks::PRIORITY_NORMAL)); $st->setTypeContent(config_option("wysiwyg_tasks") ? 'html' : 'text'); $st->save(); $object_controller = new ObjectController(); $object_controller->add_to_members($st, $member_ids); $st_subs_array = $subs_array; if ($stdata['assigned_to'] > 0 && !in_array($stdata['assigned_to'], $subs)) { $st_subs_array['user_' . $stdata['assigned_to']] = 1; } $object_controller->add_subscribers($st, $st_subs_array); if ($new_subtask) { $to_log['add'][] = $st; } else { $to_log['edit'][] = $st; } } } } return $to_log; }
/** * Copy this template task to a project task * * @access public * @param void * @return null */ function copyToProjectTask($instantiation_id = 0) { //$new_st_date='',$new_due_date='',$copy_status = false,$copy_repeat_options = true,$parent_subtask=0 //param $parent_subtask = 0; $new_st_date = ''; $new_due_date = ''; $copy_status = false; $copy_repeat_options = true; $new_task = new ProjectTask(); /*if($parent_subtask != 0){ $new_task->setParentId($parent_subtask); }else{ $new_task->setParentId($this->getParentId()); }*/ $new_task->setObjectName($this->getObjectName()); $new_task->setText($this->getText()); $new_task->setAssignedToContactId($this->getAssignedToContactId()); $new_task->setAssignedOn($this->getAssignedOn()); $new_task->setAssignedById($this->getAssignedById()); $new_task->setTimeEstimate($this->getTimeEstimate()); $new_task->setStartedOn($this->getStartedOn()); $new_task->setStartedById($this->getStartedById()); $new_task->setPriority($this->getPriority()); $new_task->setState($this->getState()); $new_task->setOrder($this->getOrder()); $new_task->setMilestoneId($this->getMilestoneId()); $new_task->setFromTemplateId($this->getTemplateId()); $new_task->setUseStartTime($this->getUseStartTime()); $new_task->setUseDueTime($this->getUseDueTime()); $new_task->setTypeContent($this->getTypeContent()); $new_task->setFromTemplateObjectId($this->getId()); $new_task->setParentId($this->getParentId()); $new_task->setOriginalTaskId(0); $new_task->setInstantiationId($instantiation_id); if ($this->getDueDate() instanceof DateTimeValue) { $new_task->setDueDate(new DateTimeValue($this->getDueDate()->getTimestamp())); } if ($this->getStartDate() instanceof DateTimeValue) { $new_task->setStartDate(new DateTimeValue($this->getStartDate()->getTimestamp())); } if ($copy_status) { $new_task->setCompletedById($this->getCompletedById()); $new_task->setCompletedOn($this->getCompletedOn()); } if ($copy_repeat_options) { $new_task->setRepeatEnd($this->getRepeatEnd()); $new_task->setRepeatForever($this->getRepeatForever()); $new_task->setRepeatNum($this->getRepeatNum()); $new_task->setRepeatBy($this->getRepeatBy()); $new_task->setRepeatD($this->getRepeatD()); $new_task->setRepeatM($this->getRepeatM()); $new_task->setRepeatY($this->getRepeatY()); } 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->setDontMakeCalculations(true); $new_task->save(); // Copy members, linked_objects, custom_properties, subscribers, reminders and comments copy_additional_object_data($this, $new_task); // Ensure that assigned user is subscribed if ($new_task->getAssignedTo() instanceof Contact) { $new_task->subscribeUser($new_task->getAssignedTo()); } return $new_task; }
function instantiate_template_task_parameters(TemplateTask $object, ProjectTask $copy, $parameterValues = array()) { $objProp = TemplateObjectProperties::getPropertiesByTemplateObject($object->getTemplateId(), $object->getId()); $manager = $copy->manager(); foreach ($objProp as $property) { $propName = $property->getProperty(); $value = $property->getValue(); if ($manager->getColumnType($propName) == DATA_TYPE_STRING || $manager->getColumnType($propName) == DATA_TYPE_INTEGER) { if (is_array($parameterValues)) { $is_present = false; foreach ($parameterValues as $param => $val) { if (strpos($value, '{' . $param . '}') !== FALSE) { $value = str_replace('{' . $param . '}', $val, $value); $is_present = true; } } // if parameter not present replace the parameter code with empty string if (!$is_present) { $value = preg_replace('/[{].*[}]/U', '', $value); } } } else { if ($manager->getColumnType($propName) == DATA_TYPE_DATE || $manager->getColumnType($propName) == DATA_TYPE_DATETIME) { $operator = '+'; if (strpos($value, '+') === false) { $operator = '-'; } $opPos = strpos($value, $operator); if ($opPos !== false) { // Is parametric $dateParam = substr($value, 1, strpos($value, '}') - 1); if ($dateParam == 'task_creation') { $date = DateTimeValueLib::now(); } else { $date = getDateValue($parameterValues[$dateParam]); if (!$date instanceof DateTimeValue) { $date = DateTimeValueLib::now(); } if ($copy instanceof ProjectTask && config_option('use_time_in_task_dates') && $propName == "due_date") { $copy->setUseDueTime(1); $hour_min = getTimeValue(user_config_option('work_day_end_time')); $hour_min['hours']; $hour_min['mins']; $date->setHour($hour_min['hours']); $date->setMinute($hour_min['mins']); $date = $date->add('s', -logged_user()->getTimezone() * 3600); } if ($copy instanceof ProjectTask && config_option('use_time_in_task_dates') && $propName == "start_date") { $copy->setUseStartTime(1); $hour_min = getTimeValue(user_config_option('work_day_start_time')); $hour_min['hours']; $hour_min['mins']; $date->setHour($hour_min['hours']); $date->setMinute($hour_min['mins']); $date = $date->add('s', -logged_user()->getTimezone() * 3600); } } $dateUnit = substr($value, strlen($value) - 1); // d, w or m (for days, weeks or months) if ($dateUnit == 'm') { $dateUnit = 'M'; // make month unit uppercase to call DateTimeValue::add with correct parameter } $dateNum = (int) substr($value, strpos($value, $operator), strlen($value) - 2); //Hook::fire('template_param_date_calculation', array('op' => $operator, 'date' => $date, 'template_id' => $object->getTemplateId(), 'original' => $object, 'copy' => $copy), $dateNum); $value = $date->add($dateUnit, $dateNum); } else { $value = DateTimeValueLib::dateFromFormatAndString(user_config_option('date_format'), $value); } } } if ($value != '') { if (!$copy->setColumnValue($propName, $value)) { $copy->object->setColumnValue($propName, $value); } if ($propName == 'text' && $copy->getTypeContent() == 'text') { $copy->setText(html_to_text($copy->getText())); } $copy->save(); } } // Ensure that assigned user is subscribed if ($copy instanceof ProjectTask && $copy->getAssignedTo() instanceof Contact) { $copy->subscribeUser($copy->getAssignedTo()); } $ret = null; Hook::fire('after_template_object_param_instantiation', array('template_id' => $object->getTemplateId(), 'original' => $object, 'copy' => $copy, 'parameter_values' => $parameterValues), $ret); }
/** * Attach subtask to thistask * * @param ProjectTask $task * @return null */ function attachTask(ProjectTask $task) { if($task->getParentId() == $this->getId()) return; $task->setParentId($this->getId()); $task->save(); if($this->isCompleted()) $this->open(); } // attachTask
$project_task->parent_id = $tradeshow_id; $project_task->priority = 'High'; $project_task->description = ""; $project_task->order_number = 11; $project_task->task_number = 101; $project_task->depends_on_id = $confirm_booth_id; $project_task->estimated_effort = 16; $project_task->actual_effort = 3; $project_task->utilization = 100; $project_task->percent_complete = 25; $project_task_id = $project_task->save(); $project_task = new ProjectTask(); $project_task->assigned_user_id = 1; $project_task->name = 'Arrange partner meetings'; $project_task->status = 'In Progress'; $project_task->date_due = create_date(); $project_task->time_due = '17:00:00'; $project_task->date_start = create_past_date(); $project_task->time_start = '10:00:00'; $project_task->parent_id = $tradeshow_id; $project_task->priority = 'Medium'; $project_task->description = "Get the usual bunch."; $project_task->order_number = 12; $project_task->task_number = 102; $project_task->depends_on_id = $project_task_id; $project_task->estimated_effort = 40; $project_task->actual_effort = 10; $project_task->utilization = 100; $project_task->percent_complete = 25; $project_task_id = $project_task->save();