<?php trace(__FILE__, 'ProjectMessage::project_tabbed_navigation()'); project_tabbed_navigation(); trace(__FILE__, 'ProjectMessage::canAdd'); if (ProjectMessage::canAdd(logged_user(), active_project())) { add_page_action(lang('add message'), get_url('message', 'add')); } // if trace(__FILE__, 'ProjectTaskList::canAdd'); if (ProjectTaskList::canAdd(logged_user(), active_project())) { add_page_action(lang('add task list'), get_url('task', 'add_list')); } // if trace(__FILE__, 'ProjectMilestone::canAdd'); if (ProjectMilestone::canAdd(logged_user(), active_project())) { add_page_action(lang('add milestone'), get_url('milestone', 'add')); } // if //trace(__FILE__,'project.canChangePermissions()'); //if (active_project()->canChangePermissions(logged_user())) { // add_page_action(lang('permissions'), get_url('project', 'permissions')); //} // if trace(__FILE__, 'plugin hook'); // PLUGIN HOOK plugin_manager()->do_action('project_overview_page_actions'); // PLUGIN HOOK if (use_permitted(logged_user(), active_project(), 'tasks')) { add_page_action(lang('download task lists'), get_url('project', 'download_task_lists')); }
/** * Add message * * @access public * @param void * @return null */ function add() { $this->setTemplate('add_message'); if (!ProjectMessage::canAdd(logged_user(), active_project())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('message')); } // if $message = new ProjectMessage(); tpl_assign('message', $message); $message_data = array_var($_POST, 'message'); if (!is_array($message_data)) { $message_data = array('milestone_id' => array_var($_GET, 'milestone_id')); // array } // if tpl_assign('message_data', $message_data); if (is_array(array_var($_POST, 'message'))) { try { $uploaded_files = ProjectFiles::handleHelperUploads(active_project()); } catch (Exception $e) { $uploaded_files = null; } // try try { $message->setFromAttributes($message_data); $message->setProjectId(active_project()->getId()); // Options are reserved only for members of owner company if (!logged_user()->isMemberOfOwnerCompany()) { $message->setIsPrivate(false); $message->setIsImportant(false); $message->setCommentsEnabled(true); $message->setAnonymousCommentsEnabled(false); } // if DB::beginWork(); $message->save(); $message->subscribeUser(logged_user()); $message->setTagsFromCSV(array_var($message_data, 'tags')); if (is_array($uploaded_files)) { foreach ($uploaded_files as $uploaded_file) { $message->attachFile($uploaded_file); $uploaded_file->setIsPrivate($message->isPrivate()); $uploaded_file->setIsVisible(true); $uploaded_file->setExpirationTime(EMPTY_DATETIME); $uploaded_file->save(); } // if } // if ApplicationLogs::createLog($message, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); // Try to send notifications but don't break submission in case of an error try { $notify_people = array(); $project_companies = active_project()->getCompanies(); foreach ($project_companies as $project_company) { $company_users = $project_company->getUsersOnProject(active_project()); if (is_array($company_users)) { foreach ($company_users as $company_user) { if (array_var($message_data, 'notify_company_' . $project_company->getId()) == 'checked' || array_var($message_data, 'notify_user_' . $company_user->getId())) { $message->subscribeUser($company_user); // subscribe $notify_people[] = $company_user; } // if } // if } // if } // if Notifier::newMessage($message, $notify_people); // send notification email... } catch (Exception $e) { } // try flash_success(lang('success add message', $message->getTitle())); $this->redirectTo('message'); // Error... } catch (Exception $e) { DB::rollback(); if (is_array($uploaded_files)) { foreach ($uploaded_files as $uploaded_file) { $uploaded_file->delete(); } // foreach } // if $message->setNew(true); tpl_assign('error', $e); } // try } // if }
<?php set_page_title($milestone->getName()); project_tabbed_navigation(PROJECT_TAB_MILESTONES); project_crumbs(array(array(lang('milestones'), get_url('milestone', 'index')), array($milestone->getName()))); if (!$milestone->isCompleted()) { if (ProjectMessage::canAdd(logged_user(), $milestone->getProject())) { add_page_action(lang('add message'), $milestone->getAddMessageUrl()); } // if if (ProjectTaskList::canAdd(logged_user(), $milestone->getProject())) { add_page_action(lang('add task list'), $milestone->getAddTaskListUrl()); } //if } // if ?> <div id="milestones"> <?php $this->includeTemplate(get_template_path('view_milestone', 'milestone')); ?> </div>
/** * Add message * * @access public * @param void * @return null */ function add() { $this->setTemplate('add_message'); if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current('empty'); return; } $notAllowedMember = ''; if (!ProjectMessage::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 message'))) : flash_error(lang('no context permissions to add', lang("messages"), $notAllowedMember)); } ajx_current("empty"); return; } // if $message = new ProjectMessage(); tpl_assign('message', $message); $message_data = array_var($_POST, 'message'); if (!is_array($message_data)) { // set layout for modal form if (array_var($_REQUEST, 'modal')) { $this->setLayout("json"); tpl_assign('modal', true); } $message_data = array(); } // if tpl_assign('message_data', $message_data); if (is_array(array_var($_POST, 'message'))) { foreach ($message_data as $k => &$v) { $v = remove_scripts($v); } try { if (config_option('untitled_notes')) { if (!array_var($message_data, "name")) { $message_data["name"] = lang("untitled note"); } } // Aliases if (config_option("wysiwyg_messages")) { $message_data['type_content'] = "html"; $message_data['text'] = preg_replace("/[\n|\r|\n\r]/", '', array_var($message_data, 'text')); } else { $message_data['type_content'] = "text"; } $message->setFromAttributes($message_data); DB::beginWork(); $message->save(); $object_controller = new ObjectController(); $member_ids = json_decode(array_var($_POST, 'members')); $object_controller->add_to_members($message, $member_ids); $object_controller->add_subscribers($message); $object_controller->link_to_new_object($message); $object_controller->add_custom_properties($message); DB::commit(); ApplicationLogs::createLog($message, ApplicationLogs::ACTION_ADD); flash_success(lang('success add message', $message->getObjectName())); if (array_var($_POST, 'popup', false)) { ajx_current("reload"); } else { ajx_current("back"); } if (array_var($_REQUEST, 'modal')) { evt_add("reload current panel"); } ajx_add("overview-panel", "reload"); // Error... } catch (Exception $e) { DB::rollback(); $message->setNew(true); flash_error($e->getMessage()); ajx_current("empty"); } // try } // if }
private function save_object($request) { $response = false; if (!empty($request['args'])) { $service = $request['srv']; switch ($service) { case "task": if ($request['args']['id']) { $object = ProjectTasks::instance()->findByid($request['args']['id']); } else { $object = new ProjectTask(); } if ($object instanceof ProjectTask) { if (!empty($request['args']['title'])) { $object->setObjectName($request['args']['title']); } if (!empty($request['args']['description'])) { $object->setText($request['args']['description']); } if (!empty($request['args']['due_date'])) { if ($request['args']['due_date'] != '' && $request['args']['due_date'] != date_format_tip('dd/mm/yyyy')) { $date_format = 'dd/mm/yyyy'; $object->setDueDate(DateTimeValueLib::dateFromFormatAndString($date_format, $value)); } } if (!empty($request['args']['completed'])) { $object->setPercentCompleted($request['args']['completed']); } if (!empty($request['args']['assign_to'])) { $object->setAssignedToContactId($request['args']['assign_to']); } if (!empty($request['args']['priority'])) { $object->setPriority($request['args']['priority']); } } break; case 'note': if ($request['args']['id']) { $object = ProjectMessages::instance()->findByid($request['args']['id']); } else { $object = new ProjectMessage(); } if ($object instanceof ProjectMessage) { if (!empty($request['args']['title'])) { $object->setObjectName($request['args']['title']); } if (!empty($request['args']['title'])) { $object->setText($request['args']['text']); } } break; } // END SWITCH if ($object) { try { $context = array(); $members = array(); if (!empty($request['args']['members'])) { $members = $request['args']['members']; $context = get_context_from_array($members); } //Check permissions: if ($request['args']['id'] && $object->canEdit(logged_user()) || !$request['args']['id'] && $object->canAdd(logged_user(), $context)) { DB::beginWork(); $object->save(); $object_controller = new ObjectController(); if (!$request['args']['id']) { $object_controller->add_to_members($object, $members); } DB::commit(); $response = true; } } catch (Exception $e) { DB::rollback(); return false; } } } return $this->response('json', $response); }