/** * Add single task * * @access public * @param void * @return null */ function add_task() { $task_list = ProjectTaskLists::findById(get_id('task_list_id')); if (!$task_list instanceof ProjectTaskList) { flash_error(lang('task list dnx')); $this->redirectTo('task'); } // if if (!$task_list->canAddTask(logged_user())) { flash_error(lang('no access permissions')); $this->redirectTo('task'); } // if $back_to_list = array_var($_GET, 'back_to_list'); $task = new ProjectTask(); $task_data = array_var($_POST, 'task'); if (!is_array($task_data)) { $task_data = array('due_date' => DateTimeValueLib::now()); // array } // if tpl_assign('task', $task); tpl_assign('task_list', $task_list); tpl_assign('back_to_list', $back_to_list); tpl_assign('task_data', $task_data); // Form is submitted if (is_array(array_var($_POST, 'task'))) { $old_owner = $task->getAssignedTo(); //$task_data['due_date'] = DateTimeValueLib::make(0, 0, 0, array_var($_POST, 'task_due_date_month', 1), array_var($_POST, 'task_due_date_day', 1), array_var($_POST, 'task_due_date_year', 1970)); if (isset($_POST['task_start_date'])) { $task_data['start_date'] = DateTimeValueLib::makeFromString($_POST['task_start_date']); } else { $task_data['start_date'] = DateTimeValueLib::make(0, 0, 0, array_var($_POST, 'task_start_date_month', 1), array_var($_POST, 'task_start_date_day', 1), array_var($_POST, 'task_start_date_year', 1970)); } if (isset($_POST['task_due_date'])) { $task_data['due_date'] = DateTimeValueLib::makeFromString($_POST['task_due_date']); } else { $task_data['due_date'] = DateTimeValueLib::make(0, 0, 0, array_var($_POST, 'task_due_date_month', 1), array_var($_POST, 'task_due_date_day', 1), array_var($_POST, 'task_due_date_year', 1970)); } $task->setFromAttributes($task_data); $assigned_to = explode(':', array_var($task_data, 'assigned_to', '')); $task->setAssignedToCompanyId(array_var($assigned_to, 0, 0)); $task->setAssignedToUserId(array_var($assigned_to, 1, 0)); try { DB::beginWork(); $task->save(); $task_list->attachTask($task); ApplicationLogs::createLog($task, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); // notify user if (array_var($task_data, 'send_notification') == 'checked') { try { $notify_people = array(); $project_companies = array(); if ($task->getAssignedTo() == null) { $project_companies = active_project()->getCompanies(); } if ($task->getAssignedTo() instanceof Company) { $project_companies = array($task->getAssignedTo()); } if ($task->getAssignedTo() instanceof User) { $notify_people = array($task->getAssignedTo()); } foreach ($project_companies as $project_company) { $company_users = $project_company->getUsersOnProject(active_project()); if (is_array($company_users)) { foreach ($company_users as $company_user) { $notify_people[] = $company_user; } } } // if Notifier::newTask($task, $notify_people); } catch (Exception $e) { Logger::log("Error: Notification failed, " . $e->getMessage(), Logger::ERROR); } // try } // if flash_success(lang('success add task')); if ($back_to_list) { $this->redirectToUrl($task_list->getViewUrl()); } else { $this->redirectTo('task'); } // if } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } // try } // if }