/** * Attach timeslot to this object * * @param Timeslot $timeslot * @return Timeslot */ function attachTimeslot(Timeslot $timeslot) { $manager_class = get_class($this->manager()); $object_id = $this->getObjectId(); if ($object_id == $timeslot->getObjectId() && $manager_class == $timeslot->getObjectManager()) { return true; } // if $timeslot->setObjectId($object_id); $timeslot->setObjectManager($manager_class); $timeslot->save(); return $timeslot; }
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 }
function add_timespan() { if (!can_manage_time(logged_user(), true)) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $object_id = get_id('object_id'); $object_manager = array_var($_GET, 'object_manager'); if (!is_valid_function_name($object_manager)) { flash_error(lang('invalid request')); ajx_current("empty"); return; } // if $object = get_object_by_manager_and_id($object_id, $object_manager); if (!$object instanceof ProjectDataObject || !$object->canAddTimeslot(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if $timeslot_data = array_var($_POST, 'timeslot'); $hours = array_var($timeslot_data, 'time'); 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->setDescription(array_var($timeslot_data, 'description')); $timeslot->setUserId(logged_user()->getId()); $timeslot->setObjectManager($object_manager); $timeslot->setObjectId($object_id); /* Billing */ $billing_category_id = logged_user()->getDefaultBillingId(); $project = $object->getProject(); $timeslot->setBillingId($billing_category_id); $hourly_billing = $project->getBillingAmount($billing_category_id); $timeslot->setHourlyBilling($hourly_billing); $timeslot->setFixedBilling($hourly_billing * $hours); $timeslot->setIsFixedBilling(false); try { DB::beginWork(); $timeslot->save(); ApplicationLogs::createLog($timeslot, $timeslot->getWorkspaces(), ApplicationLogs::ACTION_OPEN); DB::commit(); flash_success(lang('success create timeslot')); ajx_current("reload"); } catch (Exception $e) { DB::rollback(); ajx_current("empty"); flash_error($e->getMessage()); } // try }