Exemple #1
0
 /**
  * Renders the One_Query into an xpath that can fetch results from the XML-datastore
  *
  * @param One_Query $query
  */
 public function render(One_Query $query)
 {
     $this->query = $query;
     $this->scheme = $this->query;
     $resources = $this->scheme->getResources();
     if (trim($query->getRaw()) != '') {
         return $query->getRaw();
     }
     $xpath = $resources['item'];
     // add possible filters to the query
     if (isset($resources['filter'])) {
         $filters = explode(';', $resources['filter']);
         if (count($filters) > 0) {
             foreach ($filters as $filterName) {
                 if ($filterName != '') {
                     $filter = One_Repository::getFilter($filterName, $query->name());
                     $filter->affect($query);
                 }
             }
         }
     }
     $whereClauses = $query->getWhereClauses();
     if (!is_null($whereClauses)) {
         $clauses = $this->whereClauses($whereClauses);
         if (!is_null($clauses)) {
             $xpath .= '[' . $clauses . ']';
         }
     }
     return $xpath;
 }