/** * 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; }