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()); } }
private function updateParent(Tracker_Artifact $parent, Tracker_Artifact $child, Tracker_Workflow_Trigger_TriggerRule $rule) { $target = $rule->getTarget(); try { $comment = '<p>' . $GLOBALS['Language']->getText('workflow_trigger_rules_processor', 'parent_update', array('art #' . $child->getId(), $child->getLastChangeset()->getUri())) . '</p>'; $comment .= '<p>' . $rule->getAsChangesetComment() . '</p>'; $parent->createNewChangeset($target->getFieldData(), $comment, $this->workflow_user, true, Tracker_Artifact_Changeset_Comment::HTML_COMMENT); $this->logger->debug('Parent successfully updated.'); } catch (Tracker_Exception $e) { $this->logger->debug('Error while updating the parent artifact: ' . $e->getMessage()); $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_common_artifact', 'error_processor_update', array($parent->fetchDirectLinkToArtifact(), $e->getMessage())), CODENDI_PURIFIER_DISABLED); } }
/** @return Tracker_Artifact_Changeset */ private function addFollowUp(PFUser $user, Tracker_Artifact $artifact, $body) { $this->logger->debug("Receiving new follow-up comment from " . $user->getUserName()); if (!$artifact->userCanUpdate($user)) { $this->logger->info("User " . $user->getUnixName() . " has no right to update the artifact #" . $artifact->getId()); $this->notifier->sendErrorMailInsufficientPermissionUpdate($user->getEmail(), $artifact->getId()); return; } return $artifact->createNewChangeset(array(), $body, $user, true, Tracker_Artifact_Changeset_Comment::TEXT_COMMENT); }
private function createLinksBetweenArtifacts(PFUser $user, Tracker_XML_Importer_ArtifactImportedMapping $artifacts_imported_mapping, Tracker_Artifact $root_artifact) { $comment_message = ''; $send_notifications = false; $original_id = $artifacts_imported_mapping->getOriginal($root_artifact->getId()); $children = $this->children_collector->getChildrenForParent($original_id); if (!$children) { return; } foreach ($children as $key => $original_child_id) { $children[$key] = $artifacts_imported_mapping->get($original_child_id); } $field_id = $root_artifact->getAnArtifactLinkField($user)->getId(); $fields_data = array($field_id => array(Tracker_FormElement_Field_ArtifactLink::NEW_VALUES_KEY => implode(',', $children))); $root_artifact->createNewChangeset($fields_data, $comment_message, $user, $send_notifications, Tracker_Artifact_Changeset_Comment::TEXT_COMMENT); foreach ($children as $child_id) { $artifact = $this->artifact_factory->getArtifactById($child_id); $this->createLinksBetweenArtifacts($user, $artifacts_imported_mapping, $artifact); } }
private function addSummaryCommentChangeset(Tracker_Artifact $artifact, PFUser $user, Tracker_Artifact_Changeset $from_changeset) { $original_artifact = $from_changeset->getArtifact(); $comment = $this->logger->getAllLogs(); $comment[] = $GLOBALS['Language']->getText('plugin_tracker_artifact', 'copy_artifact_finished', array($original_artifact->getTracker()->getItemName(), $original_artifact->getId())); $artifact->createNewChangeset(array(), implode("\n", $comment), $user, true, Tracker_Artifact_Changeset_Comment::TEXT_COMMENT); }