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); } } }
public function updateArtifact(Codendi_Request $request, PFUser $current_user) { $comment_format = $this->artifact->validateCommentFormat($request, 'comment_formatnew'); $fields_data = $this->getAugmentedDataFromRequest($request); try { $this->artifact->createNewChangeset($fields_data, $request->get('artifact_followup_comment'), $current_user, true, $comment_format); } catch (Tracker_NoChangeException $e) { } catch (Tracker_Exception $e) { $this->sendErrorsAsJson($e->getMessage()); } }