/** * * @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); }
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 ); }
/** @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, ''); }
/** * 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()); } }