public function getErrorMessage()
 {
     $backlog_item_name = $this->artifact->getTitle();
     $tracker_name = $this->artifact->getTracker()->getName();
     $uri = $this->artifact->getUri();
     return $GLOBALS['Language']->getText('plugin_cardwall', 'cells_not_displayed', array($backlog_item_name, $tracker_name, $uri));
 }
示例#2
0
 public function __construct(Tracker_Artifact $artifact)
 {
     $this->id = $artifact->getId();
     $this->title = $artifact->getTitle();
     $this->url = $artifact->getUri();
     $this->artifact = $artifact;
     $this->color = $this->artifact->getTracker()->getColor();
     $this->type = $this->artifact->getTracker()->getName();
     $this->short_type = $this->artifact->getTracker()->getItemName();
 }
 public function __construct(Tracker_Artifact $artifact, $redirect_to_self)
 {
     $this->id = $artifact->getId();
     $this->title = $artifact->getTitle();
     $this->url = $artifact->getUri();
     $this->redirect_to_self = $redirect_to_self;
     $this->artifact = $artifact;
     $this->type = $this->artifact->getTracker()->getName();
     $this->color = $this->artifact->getTracker()->getColor();
 }
 private function displayTrackerSwitcher(PFUser $current_user)
 {
     $project = null;
     if ($this->source_artifact) {
         $project = $this->source_artifact->getTracker()->getProject();
         $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('plugin_tracker', 'linked_to', array($this->source_artifact->fetchDirectLinkToArtifact(), $this->tracker_switcher->fetchTrackerSwitcher($current_user, ' ', $project, $this->tracker))), CODENDI_PURIFIER_DISABLED);
     } else {
         $GLOBALS['Response']->addFeedback('error', 'Error the artifact to link doesn\'t exist');
     }
     $GLOBALS['Response']->displayFeedback();
 }
 public function process(Tracker_Artifact $artifact, array $fields_data)
 {
     $tracker_data = array();
     //only when a previous changeset exists
     if (!$artifact->getLastChangeset() instanceof Tracker_Artifact_Changeset_Null) {
         foreach ($artifact->getLastChangeset()->getValues() as $key => $field) {
             if ($field instanceof Tracker_Artifact_ChangesetValue_Date || $field instanceof Tracker_Artifact_ChangesetValue_List) {
                 $tracker_data[$key] = $field->getValue();
             }
         }
     }
     //replace where appropriate with submitted values
     foreach ($fields_data as $key => $value) {
         $tracker_data[$key] = $value;
     }
     //addlastUpdateDate and submitted on if available
     foreach ($this->formelement_factory->getAllFormElementsForTracker($artifact->getTracker()) as $field) {
         if ($field instanceof Tracker_FormElement_Field_LastUpdateDate) {
             $tracker_data[$field->getId()] = date("Y-m-d");
         }
         if ($field instanceof Tracker_FormElement_Field_SubmittedOn) {
             $tracker_data[$field->getId()] = $artifact->getSubmittedOn();
         }
         if ($field instanceof Tracker_FormElement_Field_Date && !array_key_exists($field->getId(), $tracker_data)) {
             //user doesn't have access to field
             $tracker_data[$field->getId()] = $field->getValue($field->getId());
         }
     }
     return $tracker_data;
 }
 private function getSubChildrenBelongingToTracker(Tracker_Artifact $source_artifact, Tracker $expected_tracker, User $user)
 {
     $hierarchy = $this->getParentTrackersAndStopAtGivenTracker($expected_tracker, $source_artifact->getTracker());
     if ($hierarchy) {
         return $this->recursivelyFindChildrenBelongingToTracker($source_artifact, $expected_tracker, $user, $hierarchy);
     }
 }
 private function artifactMatchTriggerValue(Tracker_Artifact $sibling, Tracker_Workflow_Trigger_FieldValue $trigger)
 {
     if ($trigger->getField()->getTracker() == $sibling->getTracker()) {
         return $trigger->isSetForArtifact($sibling);
     }
     return true;
 }
 private function storeFieldsValues(Tracker_Artifact $artifact, array $fields_data, PFUser $submitter, $changeset_id)
 {
     $used_fields = $this->formelement_factory->getUsedFields($artifact->getTracker());
     foreach ($used_fields as $field) {
         $this->saveNewChangesetForField($field, $artifact, $fields_data, $submitter, $changeset_id);
     }
 }
 public function getField(Tracker_Artifact $artifact)
 {
     $mapping = $this->config->getMappingFor($artifact->getTracker());
     if ($mapping) {
         return $mapping->getField();
     }
     return $this->semantic_status_provider->getField($artifact);
 }
示例#10
0
 /**
  *
  * @param Tracker_Artifact $artifact
  *
  * @return Tracker_FormElement_Field[]
  */
 public function getFields(Tracker_Artifact $artifact)
 {
     $diplayed_fields = array();
     $tracker = $artifact->getTracker();
     foreach ($this->getDisplayedFields($tracker) as $field) {
         $diplayed_fields[] = $field;
     }
     return $diplayed_fields;
 }
 private function getAugmentedDataFromRequest(Codendi_Request $request)
 {
     //this handles the 100 value on multi-select boxes
     $fields_data = $request->get('artifact');
     $fields_data['request_method_called'] = 'artifact-update';
     $this->artifact->getTracker()->augmentDataFromRequest($fields_data);
     unset($fields_data['request_method_called']);
     return $fields_data;
 }
 private function setItemTitle(Tracker_Artifact $artifact)
 {
     $title = $artifact->getTitle();
     $xref = $artifact->getXRef();
     $class = $artifact->getTracker()->getColor();
     $this->item_title = $title;
     $this->item_class = $class;
     $this->item_xref = $xref;
 }
 private function getParentInSameHierarchy(Tracker $expected_parent_tracker, Tracker_Artifact $source_artifact, User $user)
 {
     if ($source_artifact->getTracker() == $expected_parent_tracker) {
         return $source_artifact;
     } else {
         $parent = $source_artifact->getParent($user);
         if ($parent) {
             return $this->getParentInSameHierarchy($expected_parent_tracker, $parent, $user);
         }
     }
 }
 private function getAssigneeIds(Tracker_Artifact $artifact)
 {
     $contributor_field = $artifact->getTracker()->getContributorField();
     if ($contributor_field) {
         $assignee = $artifact->getValue($contributor_field);
         if ($assignee) {
             return $assignee->getValue();
         }
     }
     return array();
 }
 /**
  * @param ArtifactValuesRepresentation[] $values
  * @param Tracker_Artifact               $artifact
  */
 public function getFieldsDataOnUpdate(array $values, Tracker_Artifact $artifact)
 {
     $new_values = array();
     $indexed_fields = $this->getIndexedFields($artifact->getTracker());
     foreach ($values as $value) {
         $array_representation = $value->toArray();
         $field = $this->getField($indexed_fields, $array_representation);
         $new_values[$field->getId()] = $field->getFieldDataFromRESTValue($array_representation, $artifact);
     }
     return $new_values;
 }
 /**
  * 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;
 }
 private function findNearestMilestoneWithBacklogTracker(Tracker $expected_backlog_tracker, Tracker_Artifact $source_artifact, User $user)
 {
     $planning = $this->planning_factory->getPlanningByPlanningTracker($source_artifact->getTracker());
     if ($planning && $planning->getBacklogTracker() == $expected_backlog_tracker) {
         return $this->milestone_factory->getMilestoneFromArtifactWithPlannedArtifacts($source_artifact, $user);
     } else {
         $parent = $source_artifact->getParent($user);
         if ($parent) {
             return $this->findNearestMilestoneWithBacklogTracker($expected_backlog_tracker, $parent, $user);
         }
     }
 }
 private function getBaseArtifact(Tracker_Artifact $artifact, array &$properties)
 {
     $last_changeset = $artifact->getLastChangeset();
     $last_changeset_id = $last_changeset ? $last_changeset->getId() : -1;
     $properties = array('id' => $artifact->getId(), 'group_id' => $artifact->getTracker()->getGroupId(), 'tracker_id' => $artifact->getTrackerId(), 'last_changeset_id' => $last_changeset_id);
     $this->artifact_properties_extractor->extractTrackerUserGroups($artifact, $properties);
     $this->artifact_properties_extractor->extractArtifactUserGroups($artifact, $properties);
     if ($last_changeset) {
         $this->artifact_properties_extractor->extractArtifactTextFields($artifact, $last_changeset, $properties);
         $this->artifact_properties_extractor->extractArtifactDateFields($artifact, $last_changeset, $properties);
     }
 }
 public function exportAttachmentsInArchive(Tracker_Artifact $artifact, ZipArchive $archive)
 {
     $file_fields = $this->form_element_factory->getUsedFileFields($artifact->getTracker());
     $last_changeset = $artifact->getLastChangeset();
     if (!$last_changeset) {
         return;
     }
     foreach ($file_fields as $field) {
         $value = $last_changeset->getValue($field);
         if ($value) {
             $this->addFilesIntoArchive($value, $archive);
         }
     }
 }
示例#20
0
 private function linkWithMilestoneArtifact(User $user, Tracker_Artifact $artifact, Tracker_Artifact $source_artifact = null)
 {
     $last_ancestor = $source_artifact;
     if ($source_artifact) {
         foreach ($source_artifact->getAllAncestors($user) as $ancestor) {
             $planning = $this->planning_factory->getPlanningByPlanningTracker($ancestor->getTracker());
             if ($planning && $planning->getBacklogTracker() == $artifact->getTracker()) {
                 $ancestor->linkArtifact($artifact->getId(), $user);
                 $last_ancestor = $ancestor;
             }
         }
     }
     return $last_ancestor;
 }
 public function extractArtifactDateFields(Tracker_Artifact $artifact, Tracker_Artifact_Changeset $last_changeset, array &$properties)
 {
     $tracker = $artifact->getTracker();
     $custom_date_fields = $this->form_element_factory->getUsedCustomDateFields($tracker);
     foreach ($custom_date_fields as $date_field) {
         $last_changeset_value = $last_changeset->getValue($date_field);
         if ($last_changeset->getValue($date_field) && $last_changeset_value) {
             $properties[$date_field->getName()] = date('c', $last_changeset_value->getTimestamp());
         }
     }
     $core_date_fields = $this->form_element_factory->getCoreDateFields($tracker);
     foreach ($core_date_fields as $date_field) {
         if ($date_field instanceof Tracker_FormElement_Field_SubmittedOn) {
             $properties[$date_field->getName()] = date('c', $artifact->getSubmittedOn());
         } elseif ($date_field instanceof Tracker_FormElement_Field_LastUpdateDate) {
             $properties[$date_field->getName()] = date('c', $artifact->getLastUpdateDate());
         }
     }
     $last_modified = $artifact->getLastUpdateDate();
     if ($last_modified === -1) {
         $last_modified = $artifact->getSubmittedOn();
     }
     $properties[self::LAST_UPDATE_PROPERTY] = date('c', $last_modified);
 }
 /**
  * Index an artifact
  *
  * @param Tracker_Artifact $artifact The artifact to index
  */
 public function indexArtifactUpdate(Tracker_Artifact $artifact)
 {
     $this->initializeMapping($artifact->getTracker());
     $this->logger->debug('[Tracker] Elasticsearch index artifact #' . $artifact->getId() . ' in tracker #' . $artifact->getTrackerId());
     $this->client->index($artifact->getTrackerId(), $artifact->getId(), $this->tracker_data_factory->getFormattedArtifact($artifact));
 }
 public function queueArtifactDelete(Tracker_Artifact $artifact)
 {
     if ($this->plugin->isAllowed($artifact->getTracker()->getGroupId())) {
         $this->system_event_manager->createEvent(SystemEvent_FULLTEXTSEARCH_TRACKER_ARTIFACT_DELETE::NAME, $this->implodeParams(array($artifact->getId(), $artifact->getTrackerId())), SystemEvent::PRIORITY_MEDIUM, SystemEvent::OWNER_APP);
     }
 }
 private function getUserUGroups(PFUser $user, Tracker_Artifact $artifact)
 {
     return $user->getUgroups($artifact->getTracker()->getProject()->getID(), array());
 }
 private function redirectToTopPlanning(Tracker_Artifact $artifact, $requested_planning, Tracker_Artifact_Redirect $redirect)
 {
     $redirect->base_url = '/plugins/agiledashboard/';
     $group_id = null;
     if ($artifact->getTracker() && $artifact->getTracker()->getProject()) {
         $group_id = $artifact->getTracker()->getProject()->getID();
     }
     $redirect->query_parameters = array('group_id' => $group_id, 'action' => 'show-top', 'pane' => $requested_planning['pane']);
 }
示例#26
0
 private function checkUserCanViewArtifact(Tracker_Artifact $artifact, PFUser $user)
 {
     if (!$artifact->userCanView($user)) {
         throw new SoapFault(get_artifact_fault, 'Permission Denied: you cannot access this artifact');
     }
     $tracker = $artifact->getTracker();
     if (!$tracker) {
         throw new SoapFault(get_tracker_factory_fault, 'Could Not Get Tracker', 'getArtifact');
     }
     $this->getProjectById($tracker->getProject()->getGroupId(), 'getArtifact');
     $this->checkUserCanViewTracker($tracker, $user);
 }
示例#27
0
 /**
  * Create a Milestone corresponding to given artifact
  *
  * @param Tracker_Artifact $artifact
  *
  * @return Planning_ArtifactMilestone
  */
 public function getMilestoneFromArtifact(Tracker_Artifact $artifact, TreeNode $planned_artifacts = null)
 {
     $tracker = $artifact->getTracker();
     $planning = $this->planning_factory->getPlanningByPlanningTracker($tracker);
     return new Planning_ArtifactMilestone($tracker->getProject(), $planning, $artifact, $planned_artifacts);
 }
示例#28
0
 private function getFieldValue(Tracker_FormElementFactory $form_element_factory, User $user, Tracker_Artifact $artifact, $field_name)
 {
     $field = $form_element_factory->getComputableFieldByNameForUser($artifact->getTracker()->getId(), $field_name, $user);
     if ($field) {
         return $field->getComputedValue($user, $artifact);
     }
     return 0;
 }
 /**
  * Instanciate a new object based on a artifact
  *
  * @param Tracker_Artifact $artifact
  *
  * @return Tracker_ArtifactLinkInfo
  */
 public static function buildFromArtifact(Tracker_Artifact $artifact)
 {
     $tracker = $artifact->getTracker();
     $klass = __CLASS__;
     return new $klass($artifact->getId(), $tracker->getItemName(), $tracker->getGroupId(), $tracker->getId(), $artifact->getLastChangeset()->getId());
 }
 /**
  * Update cross references of this field
  *
  * @param Tracker_Artifact $artifact the artifact that is currently updated
  * @param array            $values   the array of added and removed artifact links ($values['added_values'] is a string and $values['removed_values'] is an array of artifact ids
  */
 protected function updateCrossReferences(Tracker_Artifact $artifact, $values)
 {
     $added_artifact_ids = array();
     if (array_key_exists('new_values', $values)) {
         if (trim($values['new_values']) != '') {
             $added_artifact_ids = explode(',', $values['new_values']);
         }
     }
     $removed_artifact_ids = array();
     if (array_key_exists('removed_values', $values)) {
         $removed_artifact_ids = $values['removed_values'];
     }
     $af = $this->getArtifactFactory();
     $rm = $this->getReferenceManager();
     $current_user = $this->getCurrentUser();
     foreach ($added_artifact_ids as $added_artifact_id) {
         $artifact_target = $af->getArtifactById((int) trim($added_artifact_id));
         $artifactlink = new Tracker_ArtifactLinkInfo($artifact_target->getId(), $artifact_target->getTracker()->getItemname(), $artifact_target->getTracker()->getGroupId(), $artifact_target->getTracker()->getId(), $artifact_target->getLastChangeset()->getId());
         $source_tracker = $artifact->getTracker();
         $rm->extractCrossRef($artifactlink->getLabel(), $artifact->getId(), Tracker_Artifact::REFERENCE_NATURE, $source_tracker->getGroupId(), $current_user->getId(), $source_tracker->getItemName());
     }
     // TODO : remove the removed elements
 }