public function process(Tracker_IDisplayTrackerLayout $layout, Codendi_Request $request, PFUser $current_user) { //TODO : check permissions on this action? $comment_format = $this->artifact->validateCommentFormat($request, 'comment_formatnew'); $this->artifact->setUseArtifactPermissions($request->get('use_artifact_permissions') ? 1 : 0); $fields_data = $request->get('artifact'); $fields_data['request_method_called'] = 'artifact-update'; $this->artifact->getTracker()->augmentDataFromRequest($fields_data); unset($fields_data['request_method_called']); try { if ($current_user->isAnonymous()) { $current_user->setEmail($request->get('email')); } $this->artifact->createNewChangeset($fields_data, $request->get('artifact_followup_comment'), $current_user, true, $comment_format); $art_link = $this->artifact->fetchDirectLinkToArtifact(); $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_index', 'update_success', array($art_link)), CODENDI_PURIFIER_LIGHT); $redirect = $this->getRedirectUrlAfterArtifactUpdate($request); $this->artifact->summonArtifactRedirectors($request, $redirect); if ($request->isAjax()) { $this->sendAjaxCardsUpdateInfo($current_user, $this->artifact, $this->form_element_factory); } elseif ($request->existAndNonEmpty('from_overlay')) { echo '<script>window.parent.tuleap.cardwall.cardsEditInPlace.validateEdition(' . $this->artifact->getId() . ')</script>'; return; } else { $GLOBALS['Response']->redirect($redirect->toUrl()); } } catch (Tracker_NoChangeException $e) { if ($request->isAjax()) { $this->sendAjaxCardsUpdateInfo($current_user, $this->artifact, $this->form_element_factory); } else { $GLOBALS['Response']->addFeedback('info', $e->getMessage(), CODENDI_PURIFIER_LIGHT); $render = new Tracker_Artifact_ReadOnlyRenderer($this->event_manager, $this->artifact, $this->form_element_factory, $layout); $render->display($request, $current_user); } } catch (Tracker_Exception $e) { if ($request->isAjax()) { $this->sendAjaxCardsUpdateInfo($current_user, $this->artifact, $this->form_element_factory); } else { $GLOBALS['Response']->addFeedback('error', $e->getMessage()); $render = new Tracker_Artifact_ReadOnlyRenderer($this->event_manager, $this->artifact, $this->form_element_factory, $layout); $render->display($request, $current_user); } } }
/** * Save the value and return the id * * @param Tracker_Artifact $artifact The artifact * @param int $changeset_value_id The id of the changeset_value * @param mixed $value The value submitted by the user * @param Tracker_Artifact_ChangesetValue $previous_changesetvalue The data previously stored in the db * * @return int or array of int */ protected function saveValue($artifact, $changeset_value_id, $value, Tracker_Artifact_ChangesetValue $previous_changesetvalue = null) { if (empty($value)) { $value['use_artifact_permissions'] = 0; $value['u_groups'] = array(); } $artifact->setUseArtifactPermissions($value['use_artifact_permissions']); permission_clear_all($this->getTracker()->getGroupId(), 'PLUGIN_TRACKER_ARTIFACT_ACCESS', $artifact->getId(), false); if (!empty($value['u_groups'])) { $ok = $this->addPermissions($value['u_groups'], $artifact->getId()); } //save in changeset return $this->getValueDao()->create($changeset_value_id, $value['use_artifact_permissions'], $value['u_groups']); }
/** * Save the value and return the id * * @param Tracker_Artifact $artifact The artifact * @param int $changeset_value_id The id of the changeset_value * @param mixed $value The value submitted by the user * @param Tracker_Artifact_ChangesetValue $previous_changesetvalue The data previously stored in the db * * @return boolean */ protected function saveValue($artifact, $changeset_value_id, $value, Tracker_Artifact_ChangesetValue $previous_changesetvalue = null) { if (empty($value) || !isset($value[self::USE_IT]) || $value[self::USE_IT] == 0) { $value[self::USE_IT] = 0; $value['u_groups'] = array(); } $artifact->setUseArtifactPermissions($value[self::USE_IT]); permission_clear_all($this->getTracker()->getGroupId(), self::PERMISSION_TYPE, $artifact->getId(), false); if (!empty($value['u_groups'])) { $ok = $this->addPermissions($value['u_groups'], $artifact->getId()); } //save in changeset return $this->getValueDao()->create($changeset_value_id, $value[self::USE_IT], $value['u_groups']); }