예제 #1
0
 public function process(Tracker_IDisplayTrackerLayout $layout, Codendi_Request $request, PFUser $current_user)
 {
     if (!$this->tracker->userCanSubmitArtifact($current_user)) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_admin', 'access_denied');
         return;
     }
     $from_artifact = $this->artifact_factory->getArtifactByIdUserCanView($current_user, $request->get('from_artifact_id'));
     if (!$from_artifact || $from_artifact->getTracker() !== $this->tracker) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_include_type', 'error_missing_param');
         return;
     }
     $from_changeset = $from_artifact->getChangeset($request->get('from_changeset_id'));
     if (!$from_changeset) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_include_type', 'error_missing_param');
         return;
     }
     $submitted_values = $request->get('artifact');
     if (!is_array($submitted_values)) {
         $this->logsErrorAndRedirectToTracker('plugin_tracker_include_type', 'error_missing_param');
         return;
     }
     try {
         $this->processCopy($from_changeset, $current_user, $submitted_values);
     } catch (Tracker_XML_Exporter_TooManyChildrenException $exception) {
         $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_artifact', 'copy_too_many_children', array(Tracker_XML_ChildrenCollector::MAX)));
         $this->redirectToArtifact($from_artifact);
     }
 }
예제 #2
0
 public function checkUserCanSubmit(PFUser $user, Tracker $tracker)
 {
     if (!$tracker->userCanSubmitArtifact($user)) {
         throw new \Luracast\Restler\RestException(403, $GLOBALS['Language']->getText('plugin_tracker', 'submit_at_least_one_field'));
     }
 }
예제 #3
0
 /** @return Tracker_Artifact */
 private function createArtifact(PFUser $user, Tracker $tracker, $title, $body)
 {
     $this->logger->debug("Receiving new artifact from " . $user->getUserName());
     if (!$tracker->userCanSubmitArtifact($user)) {
         $this->logger->info("User " . $user->getUnixName() . " has no right to create an artifact in tracker #" . $tracker->getId());
         $this->notifier->sendErrorMailInsufficientPermissionCreation($user->getEmail(), $title);
         return;
     }
     $title_field = $tracker->getTitleField();
     $description_field = $tracker->getDescriptionField();
     if (!$title_field || !$description_field) {
         throw new Tracker_Artifact_MailGateway_TrackerMissingSemanticException();
     }
     $field_data = array($title_field->getId() => $title, $description_field->getId() => $body);
     UserManager::instance()->setCurrentUser($user);
     return $this->artifact_factory->createArtifact($tracker, $field_data, $user, '');
 }