Exemplo n.º 1
0
 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
 }
 function quick_add_task()
 {
     if (logged_user()->isGuest()) {
         flash_error(lang('no access permissions'));
         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);
     $project = Projects::findById(array_var($task_data, 'project_id', 0));
     if (!$project instanceof Project) {
         if ($parent instanceof ProjectTask) {
             $project = $parent->getProject();
         } else {
             $milestone_id = array_var($task_data, 'milestone_id', null);
             if ($milestone_id) {
                 $milestone = ProjectMilestones::findById($milestone_id);
                 if ($milestone) {
                     $project = $milestone->getProject();
                 }
             }
             if (!$project instanceof Project) {
                 $project = active_or_personal_project();
             }
         }
     }
     if (!ProjectTask::canAdd(logged_user(), $project)) {
         flash_error(lang('no access permissions'));
         return;
     }
     // if
     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'));
         $task->setFromAttributes($task_data);
         //$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());
         }
         try {
             DB::beginWork();
             $task->save();
             $task->setProject($project);
             $task->setTagsFromCSV(array_var($task_data, 'tags'));
             //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->setUserId(logged_user()->getId());
                 $timeslot->setObjectManager("ProjectTasks");
                 $timeslot->setObjectId($task->getId());
                 $timeslot->save();
             }
             // subscribe
             $task->subscribeUser(logged_user());
             ApplicationLogs::createLog($task, $task->getWorkspaces(), ApplicationLogs::ACTION_ADD);
             $assignee = $task->getAssignedToUser();
             if ($assignee instanceof User) {
                 $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();
             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()));
             flash_success(lang('success add task', $task->getTitle()));
         } catch (Exception $e) {
             DB::rollback();
             flash_error($e->getMessage());
         }
         // try
     }
     // if
 }
 /**
  * Add new task list
  *
  * @access public
  * @param void
  * @return null
  */
 function add_list()
 {
     if (!ProjectTaskList::canAdd(logged_user(), active_project())) {
         flash_error(lang('no access permissions'));
         $this->redirectToReferer(get_url('task'));
     }
     // if
     $task_list = new ProjectTaskList();
     $task_list->setProjectId(active_project()->getId());
     $task_list_data = array_var($_POST, 'task_list');
     if (!is_array($task_list_data)) {
         $task_list_data = array('milestone_id' => array_var($_GET, 'milestone_id'), 'start_date' => DateTimeValueLib::now(), 'is_private' => config_option('default_private', false), 'task0' => array('start_date' => DateTimeValueLib::now()), 'task1' => array('start_date' => DateTimeValueLib::now()), 'task2' => array('start_date' => DateTimeValueLib::now()), 'task3' => array('start_date' => DateTimeValueLib::now()), 'task4' => array('start_date' => DateTimeValueLib::now()), 'task5' => array('start_date' => DateTimeValueLib::now()));
         // array
     } else {
         for ($i = 0; $i < 6; $i++) {
             $due_date = $_POST["task_list_task{$i}_due_date"];
             $task_list_data["task{$i}"]['due_date'] = $due_date;
             $start_date = $_POST["task_list_task{$i}_start_date"];
             $task_list_data["task{$i}"]['start_date'] = $start_date;
         }
     }
     // if
     tpl_assign('task_list_data', $task_list_data);
     tpl_assign('task_list', $task_list);
     if (is_array(array_var($_POST, 'task_list'))) {
         if (isset($_POST['task_list_start_date'])) {
             $task_list_data['start_date'] = DateTimeValueLib::makeFromString($_POST['task_list_start_date']);
         }
         if (isset($_POST['task_list_due_date'])) {
             $task_list_data['due_date'] = DateTimeValueLib::makeFromString($_POST['task_list_due_date']);
         }
         //$task_list_data['due_date'] = DateTimeValueLib::make(0, 0, 0, array_var($_POST, 'task_list_due_date_month', 1), array_var($_POST, 'task_list_due_date_day', 1), array_var($_POST, 'task_list_due_date_year', 1970));
         $task_list->setFromAttributes($task_list_data);
         if (!logged_user()->isMemberOfOwnerCompany()) {
             $task_list->setIsPrivate(false);
         }
         $tasks = array();
         for ($i = 0; $i < 6; $i++) {
             if (isset($task_list_data["task{$i}"]) && is_array($task_list_data["task{$i}"]) && trim(array_var($task_list_data["task{$i}"], 'text')) != '') {
                 $assigned_to = explode(':', array_var($task_list_data["task{$i}"], 'assigned_to', ''));
                 if (isset($_POST["task_list_task{$i}_start_date"])) {
                     $start_date = DateTimeValueLib::makeFromString($_POST["task_list_task{$i}_start_date"]);
                 }
                 if (isset($_POST["task_list_task{$i}_due_date"])) {
                     $due_date = DateTimeValueLib::makeFromString($_POST["task_list_task{$i}_due_date"]);
                 }
                 $tasks[] = array('text' => array_var($task_list_data["task{$i}"], 'text'), 'order' => 1 + $i, 'start_date' => $start_date, 'due_date' => $due_date, 'assigned_to_company_id' => array_var($assigned_to, 0, 0), 'assigned_to_user_id' => array_var($assigned_to, 1, 0), 'send_notification' => array_var($task_list_data["task{$i}"], 'send_notification'));
                 // array
             }
             // if
         }
         // for
         try {
             DB::beginWork();
             $task_list->save();
             if (plugin_active('tags')) {
                 $task_list->setTagsFromCSV(array_var($task_list_data, 'tags'));
             }
             foreach ($tasks as $task_data) {
                 $task = new ProjectTask();
                 $task->setFromAttributes($task_data);
                 $task_list->attachTask($task);
                 $task->save();
                 tpl_assign('task', $task);
                 // 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
             }
             // foreach
             ApplicationLogs::createLog($task_list, active_project(), ApplicationLogs::ACTION_ADD);
             DB::commit();
             flash_success(lang('success add task list', $task_list->getName()));
             $this->redirectToUrl($task_list->getViewUrl());
         } catch (Exception $e) {
             DB::rollback();
             tpl_assign('error', $e);
         }
         // try
     }
     // if
 }
Exemplo n.º 4
0
 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 {
             trim($notAllowedMember) == "" ? flash_error(lang('you must select where to keep', lang('the task'))) : 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'] = str_replace(array("\r", "\n", "\r\n"), array('', '', ''), 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_ids = array_var($task_data, 'members');
             $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);
             }
             // get member ids
             if ($gb_member_ids && !empty($gb_member_ids)) {
                 $member_ids = json_decode(array_var($task_data, 'members'));
             }
             $object_controller = new ObjectController();
             $object_controller->add_to_members($task, $member_ids);
             $assignee = $task->getAssignedToContact();
             $assignee_to_me = false;
             if ($assignee instanceof Contact) {
                 $task->subscribeUser($assignee);
                 //do not notify my self
                 if ($assignee->getId() == logged_user()->getId()) {
                     $assignee_to_me = true;
                 }
             }
             // create default reminder by user config option
             if ($task->getDueDate() != null && user_config_option("add_task_default_reminder")) {
                 $reminder = new ObjectReminder();
                 $def = explode(",", user_config_option("reminders_tasks"));
                 $minutes = $def[2] * $def[1];
                 $reminder->setMinutesBefore($minutes);
                 $reminder->setType($def[0]);
                 $reminder->setContext("due_date");
                 $reminder->setObject($task);
                 $reminder->setUserId(0);
                 $date = $task->getDueDate();
                 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'), true);
                 $subtasks = array();
                 $line = 0;
                 if (is_array($json_subtasks)) {
                     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());
             //for calculate member status we save de task again after the object have the members
             $task->save();
             DB::commit();
             $isSailent = true;
             // notify asignee
             if ((array_var($task_data, 'notify') == 'true' || user_config_option("can notify from quick add") && !user_config_option("show_notify_checkbox_in_quick_add")) && !$assignee_to_me) {
                 $isSailent = false;
                 try {
                     Notifier::taskAssigned($task);
                 } catch (Exception $e) {
                     Logger::log($e->getMessage());
                     Logger::log($e->getTraceAsString());
                 }
                 // try
             }
             ApplicationLogs::createLog($task, ApplicationLogs::ACTION_ADD, null, $isSailent);
             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
 }
Exemplo n.º 5
0
 /**
  * Add new task list
  *
  * @access public
  * @param void
  * @return null
  */
 function add_list()
 {
     if (!ProjectTaskList::canAdd(logged_user(), active_project())) {
         flash_error(lang('no access permissions'));
         $this->redirectToReferer(get_url('task'));
     }
     // if
     $task_list = new ProjectTaskList();
     $task_list_data = array_var($_POST, 'task_list');
     if (!is_array($task_list_data)) {
         $task_list_data = array('milestone_id' => array_var($_GET, 'milestone_id'));
         // array
     }
     // if
     tpl_assign('task_list_data', $task_list_data);
     tpl_assign('task_list', $task_list);
     if (is_array(array_var($_POST, 'task_list'))) {
         $task_list->setFromAttributes($task_list_data);
         $task_list->setProjectId(active_project()->getId());
         if (!logged_user()->isMemberOfOwnerCompany()) {
             $task_list->setIsPrivate(false);
         }
         $tasks = array();
         for ($i = 0; $i < 6; $i++) {
             if (isset($task_list_data["task{$i}"]) && is_array($task_list_data["task{$i}"]) && trim(array_var($task_list_data["task{$i}"], 'text')) != '') {
                 $assigned_to = explode(':', array_var($task_list_data["task{$i}"], 'assigned_to', ''));
                 $tasks[] = array('text' => array_var($task_list_data["task{$i}"], 'text'), 'assigned_to_company_id' => array_var($assigned_to, 0, 0), 'assigned_to_user_id' => array_var($assigned_to, 1, 0));
                 // array
             }
             // if
         }
         // for
         try {
             DB::beginWork();
             $task_list->save();
             $task_list->setTagsFromCSV(array_var($task_list_data, 'tags'));
             foreach ($tasks as $task_data) {
                 $task = new ProjectTask();
                 $task->setFromAttributes($task_data);
                 $task_list->attachTask($task);
                 $task->save();
             }
             // foreach
             ApplicationLogs::createLog($task_list, active_project(), ApplicationLogs::ACTION_ADD);
             DB::commit();
             flash_success(lang('success add task list', $task_list->getName()));
             $this->redirectToUrl($task_list->getViewUrl());
         } catch (Exception $e) {
             DB::rollback();
             tpl_assign('error', $e);
         }
         // try
     }
     // if
 }
Exemplo n.º 6
0
 $end_of_task = false;
 if ($event['due_date'] != EMPTY_DATETIME) {
     $due_date = new DateTimeValue(strtotime($event['due_date']) + logged_user()->getTimezone() * 3600);
     if ($dtv->getTimestamp() == mktime(0, 0, 0, $due_date->getMonth(), $due_date->getDay(), $due_date->getYear())) {
         $end_of_task = true;
     }
 }
 if ($event['start_date'] != EMPTY_DATETIME) {
     $start_date = new DateTimeValue(strtotime($event['start_date']) + logged_user()->getTimezone() * 3600);
     if ($dtv->getTimestamp() == mktime(0, 0, 0, $start_date->getMonth(), $start_date->getDay(), $start_date->getYear())) {
         $start_of_task = true;
     }
 }
 if ($start_of_task || $end_of_task) {
     $task = new ProjectTask();
     $task->setFromAttributes($event);
     $task->setId($event['id']);
     $task->setNew(false);
     if ($start_of_task && $end_of_task) {
         $tip_title = lang('task');
         $ico = "ico-task";
         $tip_pre = '';
     } else {
         if ($end_of_task) {
             $tip_title = lang('end of task');
             $ico = "ico-task-end";
             $tip_pre = 'end_';
         } else {
             $tip_title = lang('start of task');
             $ico = "ico-task-start";
             $tip_pre = 'st_';
Exemplo n.º 7
0
function replicateRepetitiveTaskForCalendar(ProjectTask $task, $from_date, $to_date)
{
    $new_task_array = array($task);
    if ($task->isRepetitive()) {
        $res = forwardRepDate($task, $from_date);
        $ref_date = $res['date'];
        $top_repeat_num = $task->getRepeatNum() - $res['count'];
        $last_repeat = $task->getRepeatEnd() instanceof DateTimeValue ? new DateTimeValue($task->getRepeatEnd()->getTimestamp()) : null;
        if ($task->getRepeatNum() > 0 && $top_repeat_num <= 0 || $last_repeat instanceof DateTimeValue && $last_repeat->getTimestamp() < $ref_date->getTimestamp()) {
            return array();
        }
        $num_repetitions = 0;
        while ($ref_date->getTimestamp() < $to_date->getTimestamp()) {
            if ($task->getRepeatBy() == 'start_date' && !$task->getStartDate() instanceof DateTimeValue) {
                return $new_task_array;
            }
            if ($task->getRepeatBy() == 'due_date' && !$task->getDueDate() instanceof DateTimeValue) {
                return $new_task_array;
            }
            if ($task->getRepeatBy() == 'start_date') {
                $diff = $ref_date->getTimestamp() - $task->getStartDate()->getTimestamp();
                $task->setStartDate(new DateTimeValue($ref_date->getTimestamp()));
                if ($task->getDueDate() instanceof DateTimeValue) {
                    $task->getDueDate()->advance($diff);
                }
            } else {
                if ($task->getRepeatBy() == 'due_date') {
                    $diff = $ref_date->getTimestamp() - $task->getDueDate()->getTimestamp();
                    $task->setDueDate(new DateTimeValue($ref_date->getTimestamp()));
                    if ($task->getStartDate() instanceof DateTimeValue) {
                        $task->getStartDate()->advance($diff);
                    }
                }
            }
            $info = array('name' => $task->getObjectName(), 'text' => $task->getText(), 'due_date' => $task->getDueDate() instanceof DateTimeValue ? new DateTimeValue($task->getDueDate()->getTimestamp()) : null, 'start_date' => $task->getStartDate() instanceof DateTimeValue ? new DateTimeValue($task->getStartDate()->getTimestamp()) : null, 'use_due_time' => $task->getUseDueTime(), 'use_start_time' => $task->getUseStartTime(), 'assigned_to_contact_id' => $task->getAssignedToContactId(), 'priority' => $task->getPriority(), 'state' => $task->getState(), 'milestone_id' => $task->getMilestoneId(), 'repeat_by' => $task->getRepeatBy(), 'repeat_d' => $task->getRepeatD(), 'repeat_m' => $task->getRepeatM(), 'repeat_y' => $task->getRepeatY());
            $new_task = new ProjectTask();
            $new_task->setFromAttributes($info);
            $new_task->setId($task->getId());
            $new_task->setNew(false);
            $new_due_date = null;
            $new_st_date = null;
            if ($task->getStartDate() instanceof DateTimeValue) {
                $new_st_date = new DateTimeValue($task->getStartDate()->getTimestamp());
            }
            if ($task->getDueDate() instanceof DateTimeValue) {
                $new_due_date = new DateTimeValue($task->getDueDate()->getTimestamp());
            }
            if ($task->getRepeatD() > 0) {
                if ($new_st_date instanceof DateTimeValue) {
                    $new_st_date = $new_st_date->add('d', $task->getRepeatD());
                }
                if ($new_due_date instanceof DateTimeValue) {
                    $new_due_date = $new_due_date->add('d', $task->getRepeatD());
                }
                $ref_date->add('d', $task->getRepeatD());
            } else {
                if ($task->getRepeatM() > 0) {
                    if ($new_st_date instanceof DateTimeValue) {
                        $new_st_date = $new_st_date->add('M', $task->getRepeatM());
                    }
                    if ($new_due_date instanceof DateTimeValue) {
                        $new_due_date = $new_due_date->add('M', $task->getRepeatM());
                    }
                    $ref_date->add('M', $task->getRepeatM());
                } else {
                    if ($task->getRepeatY() > 0) {
                        if ($new_st_date instanceof DateTimeValue) {
                            $new_st_date = $new_st_date->add('y', $task->getRepeatY());
                        }
                        if ($new_due_date instanceof DateTimeValue) {
                            $new_due_date = $new_due_date->add('y', $task->getRepeatY());
                        }
                        $ref_date->add('y', $task->getRepeatY());
                    }
                }
            }
            if ($new_st_date instanceof DateTimeValue) {
                $new_task->setStartDate($new_st_date);
            }
            if ($new_due_date instanceof DateTimeValue) {
                $new_task->setDueDate($new_due_date);
            }
            $num_repetitions++;
            if ($top_repeat_num > 0 && $top_repeat_num == $num_repetitions) {
                break;
            }
            if ($last_repeat instanceof DateTimeValue && $last_repeat->getTimestamp() < $ref_date->getTimestamp()) {
                break;
            }
            $new_task_array[] = $new_task;
            $task = $new_task;
        }
    }
    return $new_task_array;
}
Exemplo n.º 8
0
 /**
  * Add user
  *
  * @access public
  * @param void
  * @return null
  */
 function add()
 {
     $this->setTemplate('add_user');
     $company = Companies::findById(get_id('company_id'));
     if (!$company instanceof Company) {
         flash_error(lang('company dnx'));
         $this->redirectTo('administration');
     }
     // if
     if (!User::canAdd(logged_user(), $company)) {
         flash_error(lang('no access permissions'));
         $this->redirectToReferer(get_url('dashboard'));
     }
     // if
     $user = new User();
     $user_data = array_var($_POST, 'user');
     if (!is_array($user_data)) {
         $user_data = array('password_generator' => 'random', 'company_id' => $company->getId(), 'timezone' => $company->getTimezone());
         // array
     }
     // if
     $projects = $company->getProjects();
     $permissions = PermissionManager::getPermissionsText();
     tpl_assign('user', $user);
     tpl_assign('company', $company);
     tpl_assign('projects', $projects);
     tpl_assign('permissions', $permissions);
     tpl_assign('user_data', $user_data);
     if (is_array(array_var($_POST, 'user'))) {
         $user->setFromAttributes($user_data);
         $user->setCompanyId($company->getId());
         try {
             // Generate random password
             if (array_var($user_data, 'password_generator') == 'random') {
                 $password = substr(sha1(uniqid(rand(), true)), rand(0, 25), 13);
                 // Validate user input
             } else {
                 $password = array_var($user_data, 'password');
                 if (trim($password) == '') {
                     throw new Error(lang('password value required'));
                 }
                 // if
                 if ($password != array_var($user_data, 'password_a')) {
                     throw new Error(lang('passwords dont match'));
                 }
                 // if
             }
             // if
             $user->setPassword($password);
             if (config_option('check_email_unique', '1') == '1') {
                 if (!$user->validateUniquenessOf('email')) {
                     throw new Error(lang('email address is already used'));
                 }
             }
             DB::beginWork();
             $user->save();
             ApplicationLogs::createLog($user, null, ApplicationLogs::ACTION_ADD);
             if (is_array($projects)) {
                 foreach ($projects as $project) {
                     if (array_var($user_data, 'project_permissions_' . $project->getId()) == 'checked') {
                         $relation = new ProjectUser();
                         $relation->setProjectId($project->getId());
                         $relation->setUserId($user->getId());
                         foreach ($permissions as $permission => $permission_text) {
                             $permission_value = array_var($user_data, 'project_permission_' . $project->getId() . '_' . $permission) == 'checked';
                             $user->setProjectPermission($project, $permission, $permission_value);
                         }
                         // foreach
                         $relation->save();
                     }
                     // if
                 }
                 // foreach
             }
             // if
             DB::commit();
             // Send notification...
             try {
                 if (array_var($user_data, 'send_email_notification')) {
                     Notifier::newUserAccount($user, $password);
                 }
                 // if
             } catch (Exception $e) {
             }
             // try
             // Add task to Welcome project...
             try {
                 if (array_var($user_data, 'add welcome task')) {
                     $task_data = array('text' => lang('welcome task text', $user->getName(), get_url('account', 'edit')), 'due date' => DateTimeValueLib::now() + 7 * 24 * 60 * 60, 'assigned_to_company_id' => $user->getCompanyId(), 'assigned_to_user_id' => $user->getId());
                     $task_list = ProjectTaskLists::instance()->findById(2, true);
                     DB::beginWork();
                     $task = new ProjectTask();
                     $task->setFromAttributes($task_data);
                     $task_list->attachTask($task);
                     $task->save();
                     DB::commit();
                 }
                 // if
             } catch (Exception $e) {
                 DB::rollback();
             }
             // try
             flash_success(lang('success add user', $user->getDisplayName()));
             $projects = $company->getProjects();
             if (is_array($projects) || count($projects)) {
                 $this->redirectToUrl(get_url('account', 'update_permissions', $user->getId()));
                 // Continue to permissions page
             }
             // if
             $this->redirectToUrl($company->getViewUrl());
         } catch (Exception $e) {
             DB::rollback();
             tpl_assign('error', $e);
         }
         // try
     }
     // if
 }