/**
  *
  * @param PFUser $user
  * @param Tuleap\Tracker\REST\TrackerReference $tracker_reference
  * @param array $values
  * @return Tuleap\Tracker\REST\Artifact\ArtifactReference
  * @throws \Luracast\Restler\RestException
  */
 public function createWithValuesIndexedByFieldName(PFUser $user, Tuleap\Tracker\REST\TrackerReference $tracker_reference, array $values)
 {
     $tracker = $this->getTracker($tracker_reference);
     $fields_data = $this->artifact_validator->getFieldsDataOnCreateFromValuesByField($values, $tracker);
     $fields_data = $this->artifact_validator->getUsedFieldsWithDefaultValue($tracker, $fields_data, $user);
     $this->checkUserCanSubmit($user, $tracker);
     return $this->returnReferenceOrError($this->artifact_factory->createArtifact($tracker, $fields_data, $user, ''), 'by_field');
 }
 private function createArtifact(PFUser $current_user)
 {
     $email = null;
     if ($current_user->isAnonymous()) {
         $email = $this->request->get('email');
     }
     $fields_data = $this->request->get('artifact');
     $this->tracker->augmentDataFromRequest($fields_data);
     return $this->tracker_artifact_factory->createArtifact($this->tracker, $fields_data, $current_user, $email);
 }
示例#3
0
    private function createUserStory(PFUser $user, $field_i_want_to_value, $field_status_value) {
        $fields_data = array(
            $this->tracker_formelement_factory->getFormElementByName(self::USER_STORIES_TRACKER_ID, 'i_want_to')->getId() => $field_i_want_to_value,
            $this->tracker_formelement_factory->getFormElementByName(self::USER_STORIES_TRACKER_ID, 'status')->getId()  => $field_status_value
        );

        $this->tracker_artifact_factory->createArtifact(
            $this->tracker_factory->getTrackerById(self::USER_STORIES_TRACKER_ID),
            $fields_data,
            $user,
            '',
            false
        );
    }
示例#4
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, '');
 }
示例#5
0
 /**
  * addArtifact - add an artifact in tracker $tracker_id of the project $group_id with given values
  *
  * @param string $session_key the session hash associated with the session opened by the person who calls the service
  * @param int    $group_id   the ID of the group we want to add the artifact
  * @param int    $tracker_id the ID of the tracker we want to add the artifact
  * @param array  $value      The fields values of the artifact (array of {SOAPArtifactFieldValue})
  *
  * @return int the ID of the new created artifact,
  *              or a soap fault if :
  *              - group_id does not match with a valid project,
  *              - tracker_name does not match with a valid tracker,
  *              - the user does not have the permissions to submit an artifact
  *              - the given values are breaking a field dependency rule
  *              - the artifact creation failed.
  */
 public function addArtifact($session_key, $group_id, $tracker_id, $value)
 {
     try {
         $user = $this->soap_request_validator->continueSession($session_key);
         $tracker = $this->getTrackerById($group_id, $tracker_id, 'addArtifact');
         $this->checkUserCanCreateArtifact($tracker, $user);
         $fields_data = $this->getArtifactDataFromSoapRequest($tracker, $value);
         $fields_data = $this->formelement_factory->getUsedFieldsWithDefaultValue($tracker, $fields_data, $user);
         if ($artifact = $this->artifact_factory->createArtifact($tracker, $fields_data, $user, null)) {
             return $artifact->getId();
         } else {
             if ($GLOBALS['Response']->feedbackHasErrors()) {
                 return new SoapFault(update_artifact_fault, $GLOBALS['Response']->getRawFeedback(), 'addArtifact');
             } else {
                 return new SoapFault(update_artifact_fault, 'Unknown error', 'addArtifact');
             }
         }
     } catch (Exception $e) {
         return new SoapFault((string) $e->getCode(), $e->getMessage());
     }
 }