private function getIndexedFields(Tracker $tracker) { $indexed_fields = array(); foreach ($this->formelement_factory->getUsedFields($tracker) as $field) { $indexed_fields[$field->getId()] = $field; } return $indexed_fields; }
private function trackerHasOnlyTitleRequired(Tracker $tracker, Tracker_Semantic_Title $semantic_title) { $used_fields = $this->form_element_factory->getUsedFields($tracker); foreach ($used_fields as $used_field) { if ($used_field->isRequired() && $used_field->getId() != $semantic_title->getFieldId()) { return false; } } return true; }
/** * Should we move this method outside of changeset creation * so that we can remove the dependency on artifact factory * and enforce SRP ? */ protected function saveArtifactAfterNewChangeset(Tracker_Artifact $artifact, array $fields_data, PFUser $submitter, Tracker_Artifact_Changeset $new_changeset, Tracker_Artifact_Changeset $previous_changeset = null) { if ($this->artifact_factory->save($artifact)) { $used_fields = $this->formelement_factory->getUsedFields($artifact->getTracker()); foreach ($used_fields as $field) { $field->postSaveNewChangeset($artifact, $submitter, $new_changeset, $previous_changeset); } $artifact->getWorkflow()->after($fields_data, $new_changeset, $previous_changeset); return true; } return false; }
/** * Validate the fields contained in $fields_data, and update $fields_data for invalid data * $fields_data is an array of [field_id] => field_data * * @param array $fields_data The field data * * @return boolean true if all fields are valid, false otherwise. This function update $field_data (set values to null if not valid) */ public function validate(Tracker_Artifact $artifact, $fields_data) { $is_valid = true; $used_fields = $this->formelement_factory->getUsedFields($artifact->getTracker()); foreach ($used_fields as $field) { $submitted_value = $this->getSubmittedValue($field, $fields_data); if ($this->canValidateField($artifact, $field)) { $is_valid = $this->validateField($artifact, $field, $submitted_value) && $is_valid; } } return $is_valid; }
/** * getTrackerFields - returns an array of TrackerFields used in the tracker tracker_id of the project identified by group_id * * @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 project * @param int $tracker_id the ID of the Tracker * @return array the array of SOAPTrackerFields used in the tracker $tracker_id in the project identified by $group_id, * or a soap fault if tracker_id or group_id does not match with a valid project/tracker. */ public function getTrackerFields($session_key, $group_id, $tracker_id) { try { $current_user = $this->soap_request_validator->continueSession($session_key); $project = $this->getProjectById($group_id, 'getTrackerFields'); $this->checkUserCanAccessProject($current_user, $project); $tracker = $this->getTrackerById($group_id, $tracker_id, 'getTrackerFields'); // The function getTrackerFields returns all tracker fields, // even those the user is NOT allowed to view -> we will filter in trackerlist_to_soap $tracker_fields = $this->formelement_factory->getUsedFields($tracker); return $this->trackerfields_to_soap($current_user, $tracker, $tracker_fields); } catch (Exception $e) { return new SoapFault((string) $e->getCode(), $e->getMessage()); } }