function getMilestone() { if ($this->getMilestoneId() > 0 && !$this->milestone) { $this->milestone = ProjectMilestones::findById($this->getMilestoneId()); } return $this->milestone; }
/** * Open specific milestone * * @access public * @param void * @return null */ function open() { $milestone = ProjectMilestones::findById(get_id()); if (!$milestone instanceof ProjectMilestone) { flash_error(lang('milestone dnx')); $this->redirectTo('milestone'); } // if if (!$milestone->canChangeStatus(logged_user())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('milestone')); } // if try { $milestone->setCompletedOn(null); $milestone->setCompletedById(0); DB::beginWork(); $milestone->save(); ApplicationLogs::createLog($milestone, active_project(), ApplicationLogs::ACTION_OPEN); DB::commit(); flash_success(lang('success open milestone', $milestone->getName())); } catch (Exception $e) { DB::rollback(); flash_error(lang('error open milestone')); } // try $this->redirectToReferer($milestone->getViewUrl()); }
function getExternalColumnValue($field, $id, $manager = null, $object = null) { $value = ''; if ($field == 'user_id' || $field == 'contact_id' || $field == 'created_by_id' || $field == 'updated_by_id' || $field == 'assigned_to_contact_id' || $field == 'assigned_by_id' || $field == 'completed_by_id' || $field == 'approved_by_id') { $contact = Contacts::findById($id); if ($contact instanceof Contact) { $value = $contact->getObjectName(); } } else { if ($field == 'milestone_id') { $milestone = ProjectMilestones::findById($id); if ($milestone instanceof ProjectMilestone) { $value = $milestone->getObjectName(); } } else { if ($field == 'company_id') { $company = Contacts::findById($id); if ($company instanceof Contact && $company->getIsCompany()) { $value = $company->getObjectName(); } } else { if ($field == 'rel_object_id') { $value = $id; } else { if ($manager instanceof ContentDataObjects) { $value = $manager->getExternalColumnValue($field, $id); } } } } } Hook::fire('custom_reports_get_external_column_value', array('field' => $field, 'external_id' => $id, 'manager' => $manager, 'object' => $object), $value); return $value; }
/** * Return milestone * * @access public * @param void * @return array */ function getMilestone() { if (is_null($this->milestone)) { $this->milestone = ProjectMilestones::findById($this->getMilestoneId()); } // if return $this->milestone; }
function change_due_date() { $milestone = ProjectMilestones::findById(get_id()); if (!$milestone->canEdit(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $year = array_var($_GET, 'year', $milestone->getDueDate()->getYear()); $month = array_var($_GET, 'month', $milestone->getDueDate()->getMonth()); $day = array_var($_GET, 'day', $milestone->getDueDate()->getDay()); try { DB::beginWork(); $milestone->setDueDate(new DateTimeValue(mktime(0, 0, 0, $month, $day, $year))); $milestone->save(); DB::commit(); } catch (Exception $e) { DB::rollback(); flash_error(lang('error change due date milestone')); } // try ajx_current("empty"); }
function quick_edit_task() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } ajx_current("empty"); $task = ProjectTasks::findById(get_id()); if (!$task instanceof ProjectTask) { flash_error(lang('task list dnx')); return; } // if if (!$task->canEdit(logged_user())) { flash_error(lang('no access permissions')); return; } // if $task_data = array_var($_POST, 'task'); 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')); $old_milestone_id = $task->getMilestoneId(); $task->setFromAttributes($task_data); $project = Projects::findById(array_var($task_data, 'project_id', 0)); //$task->setOrder(ProjectTasks::maxOrder(array_var($task_data, "parent_id", 0), array_var($task_data, "milestone_id", 0))); // Set assigned to $assigned_to = explode(':', array_var($task_data, 'assigned_to', '')); $company_id = array_var($assigned_to, 0, 0); $user_id = array_var($assigned_to, 1, 0); $can_assign = can_assign_task_to_company_user(logged_user(), $task, $company_id, $user_id); if ($can_assign !== true) { flash_error($can_assign); return; } $task->setAssignedToCompanyId($company_id); $task->setAssignedToUserId($user_id); //$task->setIsPrivate(false); // Not used, but defined as not null. /*if (array_var($task_data,'is_completed',false) == 'true'){ $task->setCompletedOn(DateTimeValueLib::now()); $task->setCompletedById(logged_user()->getId()); }*/ if (array_var($_GET, 'dont_mark_as_read')) { $is_read = $task->getIsRead(logged_user()->getId()); } try { DB::beginWork(); $task->save(); if (array_var($_GET, 'dont_mark_as_read') && !$is_read) { $task->setIsRead(logged_user()->getId(), false); } if ($project instanceof Project && $task->canAdd(logged_user(), $project)) { $task->setProject($project); } $task->setTagsFromCSV(array_var($task_data, 'tags')); // apply values to subtasks $subtasks = $task->getAllSubTasks(); $project = $task->getProject(); $milestone_id = $task->getMilestoneId(); //Check for milestone workspace restrictions, update the task's workspace if milestone changed if ($milestone_id > 0 && $old_milestone_id != $milestone_id) { $milestone = ProjectMilestones::findById($milestone_id); $milestoneWs = $milestone->getProject(); if ($milestoneWs->getId() != $project->getId() && !$milestoneWs->isParentOf($project)) { $project = $milestoneWs; if ($task->canAdd(logged_user(), $project)) { $task->setProject($project); } else { throw new Exception(lang('no access permissions')); } } } $apply_ws = array_var($task_data, 'apply_ws_subtasks', '') == "checked"; $apply_ms = array_var($task_data, 'apply_milestone_subtasks', '') == "checked"; $apply_at = array_var($task_data, 'apply_assignee_subtasks', '') == "checked"; $modified_subtasks = array(); foreach ($subtasks as $sub) { $modified = false; if ($apply_at || !$sub->getAssignedTo() instanceof ApplicationDataObject) { $sub->setAssignedToCompanyId($company_id); $sub->setAssignedToUserId($user_id); $modified = true; } if ($apply_ws) { $sub->setProject($project); $modified = true; } if ($apply_ms) { $sub->setMilestoneId($milestone_id); $modified = true; } if ($modified) { $sub->save(); $modified_subtasks[] = $sub; } } //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'); if (strpos($hours, ',') && !strpos($hours, '.')) { $hours = str_replace(',', '.', $hours); } $timeslot = new Timeslot(); $dt = DateTimeValueLib::now(); $dt2 = DateTimeValueLib::now(); $timeslot->setEndTime($dt); $dt2 = $dt2->add('h', -$hours); $timeslot->setStartTime($dt2); $timeslot->setUserId(logged_user()->getId()); $timeslot->setObjectManager("ProjectTasks"); $timeslot->setObjectId($task->getId()); $timeslot->save(); } ApplicationLogs::createLog($task, $task->getWorkspaces(), ApplicationLogs::ACTION_EDIT); $assignee = $task->getAssignedToUser(); if ($assignee instanceof User) { $task->subscribeUser($assignee); } DB::commit(); // notify asignee if (array_var($task_data, 'notify') == 'true') { try { Notifier::taskAssigned($task); } catch (Exception $e) { } // try } $task->getTagNames(true); //Forces reload of task tags to update changes $subt_info = array(); foreach ($modified_subtasks as $sub) { $subt_info[] = $sub->getArrayInfo(); } ajx_extra_data(array("task" => $task->getArrayInfo(), 'subtasks' => $subt_info)); flash_success(lang('success edit task', $task->getTitle())); } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); } // try } // if }
private function getMilestoneGroups($conditions, $show_more_conditions, $list_subtasks_cond) { $milestone_field = "`milestone_id`"; $groupId = $show_more_conditions['groupId']; $start = $show_more_conditions['start']; $limit = $show_more_conditions['limit']; $groups = ProjectTasks::instance()->listing(array("select_columns" => array($milestone_field . " AS group_id ", $milestone_field . " AS group_name ", "COUNT(o.id) AS total"), "extra_conditions" => $conditions . $list_subtasks_cond, "group_by" => " `group_name`", "count_results" => false, "raw_data" => true))->objects; $more_group_ret = array(); foreach ($groups as $key => $group) { if (!is_null($groupId) && $group['group_id'] != $groupId) { continue; } $group_conditions = " AND " . $milestone_field . " = '" . $group['group_id'] . "'"; $tasks_in_group = $this->getTasksInGroup($conditions . $group_conditions . $list_subtasks_cond, $start, $limit); $groups[$key]['root_total'] = $tasks_in_group['total_roots_tasks']; $groups[$key]['group_tasks'] = $tasks_in_group['tasks']; if ($group['group_id'] > 0) { $milestone = ProjectMilestones::findById($group['group_id']); $groups[$key]['group_name'] = $milestone->getName(); } else { $groups[$key]['group_name'] = lang('unclassified'); } $groups[$key]['group_icon'] = 'ico-milestone'; //group totals $totals = $this->getGroupTotals($conditions . $group_conditions); foreach ($totals as $total_key => $total) { $groups[$key][$total_key] = $total; } if (!is_null($groupId)) { $more_group_ret[] = $groups[$key]; } } if (user_config_option('tasksShowEmptyMilestones')) { //group totals $join_params['join_type'] = "LEFT "; $join_params['table'] = TABLE_PREFIX . "project_tasks"; $join_params['jt_field'] = "milestone_id"; $join_params['e_field'] = "object_id"; $empty_milestones = ProjectMilestones::instance()->listing(array("select_columns" => array("`e`.`object_id` AS group_id ", "`name` AS group_name "), "extra_conditions" => " AND `jt`.`object_id` IS NULL", "join_params" => $join_params, "count_results" => false, "raw_data" => true))->objects; foreach ($empty_milestones as $keym => $empty_milestone) { $empty_group = array(); $empty_group['group_name'] = $empty_milestone['group_name']; $empty_group['group_id'] = $empty_milestone['group_id']; $empty_group['group_icon'] = 'ico-milestone'; $empty_group['group_tasks'] = array(); $groups[] = $empty_group; } } if (!is_null($groupId)) { return $more_group_ret; } else { return $groups; } }
function getExternalColumnValue($field, $id, $manager = null){ $value = ''; if($field == 'user_id' || $field == 'contact_id' || $field == 'created_by_id' || $field == 'updated_by_id' || $field == 'assigned_to_contact_id' || $field == 'completed_by_id'|| $field == 'approved_by_id'){ $contact = Contacts::findById($id); if($contact instanceof Contact) $value = $contact->getObjectName(); } else if($field == 'milestone_id'){ $milestone = ProjectMilestones::findById($id); if($milestone instanceof ProjectMilestone) $value = $milestone->getObjectName(); } else if($field == 'company_id'){ $company = Contacts::findById($id); if($company instanceof Contact && $company->getIsCompany()) $value = $company->getObjectName(); } else if ($manager instanceof ContentDataObjects) { $value = $manager->getExternalColumnValue($field, $id); } return $value; }
/** * Return milestone obj * * @access public * @param void * @return Project */ function getMilestone() { return ProjectMilestones::findById($this->getMilestoneId()); }
/** * Renders select milestone box * * @param string $name * @param Project $project * @param integer $selected ID of selected milestone * @param array $attributes Array of additional attributes * @return string * @throws InvalidInstanceError */ function select_milestone($name, $project = null, $selected = null, $attributes = null) { if (is_array($attributes)) { if (!isset($attributes['class'])) { $attributes['class'] = 'select_milestone'; } } else { $attributes = array('class' => 'select_milestone'); } // if $options = array(option_tag(lang('none'), 0)); if ($project) { $milestones = $project->getOpenMilestones(); } else { $milestones = ProjectMilestones::getActiveMilestonesByUser(logged_user()); } if (is_array($milestones)) { if ($selected) { //Fixes bug: If task is in a subworkspace of it's milestone's workspace, and user is standing on it, the assigned milestone is set to none when task is edited. $is_in_array = false; foreach ($milestones as $milestone) { if ($milestone->getId() == $selected) { $is_in_array = true; } } if (!$is_in_array) { $milestone = ProjectMilestones::findById($selected); if ($milestone) { $milestones[] = $milestone; } } } foreach ($milestones as $milestone) { $option_attributes = $milestone->getId() == $selected ? array('selected' => 'selected') : null; $options[] = option_tag($milestone->getName(), $milestone->getId(), $option_attributes); } // foreach } // if return select_box($name, $options, $attributes); }
static function getExternalColumnValue($field, $id) { $value = ''; if ($field == 'company_id' || $field == 'assigned_to_company_id') { $company = Companies::findById($id); if ($company instanceof Company) { $value = $company->getName(); } } else { if ($field == 'user_id' || $field == 'created_by_id' || $field == 'updated_by_id' || $field == 'assigned_to_user_id' || $field == 'completed_by_id') { $user = Users::findById($id); if ($user instanceof User) { $value = $user->getUsername(); } } else { if ($field == 'milestone_id') { $milestone = ProjectMilestones::findById($id); if ($milestone instanceof ProjectMilestone) { $value = $milestone->getName(); } } else { if ($field == 'object_subtype') { $object_subtype = ProjectCoTypes::findById($id); if ($object_subtype instanceof ProjectCoType) { $value = $object_subtype->getName(); } } } } } return $value; }