示例#1
0
 public function getArtifactLinkCriteria(User $user, Tracker_Report $report, Tracker_CrossSearch_Query $cross_search_query)
 {
     $criteria = array();
     $allowed_artifact_ids = array();
     foreach ($this->planning_trackers as $tracker) {
         $tracker_id = $tracker->getId();
         $tracker_artifacts = Tracker_ArtifactFactory::instance()->getArtifactsByTrackerIdUserCanView($user, $tracker_id);
         // TODO: far from being perfect, anyway we should not modify query but
         //       we should only use criteria in the whole stack
         foreach ($tracker_artifacts as $artifact) {
             $allowed_artifact_ids[$artifact->getId()] = true;
         }
         $tracker_artifacts = $cross_search_query->setSelectedArtifacts($tracker_id, $tracker_artifacts);
         $field = new Tracker_CrossSearch_ArtifactReportField($tracker, $tracker_artifacts);
         $criteria[] = $this->buildCriteria($report, $field);
     }
     $cross_search_query->purgeArtifactIdsNotInList($allowed_artifact_ids);
     return $criteria;
 }