/**
  * Returns total count and data for all Locations satisfying the parameters.
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  * @param int $offset
  * @param int|null $limit
  * @param null|\eZ\Publish\API\Repository\Values\Content\Query\SortClause[] $sortClauses
  *
  * @return mixed[][]
  */
 public function find(Criterion $criterion, $offset = 0, $limit = null, array $sortClauses = null)
 {
     $count = $this->getTotalCount($criterion, $sortClauses);
     if ($limit === 0) {
         return array("count" => $count, "rows" => array());
     }
     $selectQuery = $this->handler->createSelectQuery();
     $selectQuery->select('ezcontentobject_tree.*');
     if ($sortClauses !== null) {
         $this->sortClauseConverter->applySelect($selectQuery, $sortClauses);
     }
     $selectQuery->from($this->handler->quoteTable('ezcontentobject_tree'))->innerJoin('ezcontentobject', 'ezcontentobject_tree.contentobject_id', 'ezcontentobject.id')->innerJoin('ezcontentobject_version', 'ezcontentobject.id', 'ezcontentobject_version.contentobject_id');
     if ($sortClauses !== null) {
         $this->sortClauseConverter->applyJoin($selectQuery, $sortClauses);
     }
     $selectQuery->where($this->criteriaConverter->convertCriteria($selectQuery, $criterion), $selectQuery->expr->eq('ezcontentobject.status', $selectQuery->bindValue(1, null, PDO::PARAM_INT)), $selectQuery->expr->eq('ezcontentobject_version.status', $selectQuery->bindValue(1, null, PDO::PARAM_INT)), $selectQuery->expr->neq($this->handler->quoteColumn("depth"), $selectQuery->bindValue(0, null, PDO::PARAM_INT)));
     if ($sortClauses !== null) {
         $this->sortClauseConverter->applyOrderBy($selectQuery);
     }
     $selectQuery->limit($limit > 0 ? $limit : self::MAX_LIMIT, $offset);
     $statement = $selectQuery->prepare();
     $statement->execute();
     return array("count" => $count, "rows" => $statement->fetchAll(PDO::FETCH_ASSOC));
 }
Exemplo n.º 2
0
 /**
  * Get sorted arrays of content IDs, which should be returned
  *
  * @param Criterion $filter
  * @param array $sort
  * @param mixed $offset
  * @param mixed $limit
  * @param mixed $translations
  *
  * @return int[]
  */
 protected function getContentInfoList(Criterion $filter, $sort, $offset, $limit, $translations)
 {
     $query = $this->handler->createSelectQuery();
     $query->select('DISTINCT ezcontentobject.id', 'ezcontentobject.*', $this->handler->aliasedColumn($query, 'main_node_id', 'main_tree'));
     if ($sort !== null) {
         $this->sortClauseConverter->applySelect($query, $sort);
     }
     $query->from($this->handler->quoteTable('ezcontentobject'))->innerJoin('ezcontentobject_version', 'ezcontentobject.id', 'ezcontentobject_version.contentobject_id')->leftJoin($this->handler->alias($this->handler->quoteTable('ezcontentobject_tree'), $this->handler->quoteIdentifier('main_tree')), $query->expr->lAnd($query->expr->eq($this->handler->quoteColumn("contentobject_id", "main_tree"), $this->handler->quoteColumn("id", "ezcontentobject")), $query->expr->eq($this->handler->quoteColumn("main_node_id", "main_tree"), $this->handler->quoteColumn("node_id", "main_tree"))));
     if ($sort !== null) {
         $this->sortClauseConverter->applyJoin($query, $sort);
     }
     $query->where($this->getQueryCondition($filter, $query, $translations));
     if ($sort !== null) {
         $this->sortClauseConverter->applyOrderBy($query);
     }
     $query->limit($limit, $offset);
     $statement = $query->prepare();
     $statement->execute();
     return $statement->fetchAll(\PDO::FETCH_ASSOC);
 }
 /**
  * Get sorted arrays of content IDs, which should be returned
  *
  * @param Criterion $filter
  * @param array $sort
  * @param mixed $offset
  * @param mixed $limit
  * @param mixed $translations
  *
  * @return int[]
  */
 protected function getContentIds(Criterion $filter, $sort, $offset, $limit, $translations)
 {
     $query = $this->handler->createSelectQuery();
     $query->select($this->handler->quoteColumn('id', 'ezcontentobject'));
     if ($sort !== null) {
         $this->sortClauseConverter->applySelect($query, $sort);
     }
     $query->from($this->handler->quoteTable('ezcontentobject'));
     $query->innerJoin('ezcontentobject_version', 'ezcontentobject.id', 'ezcontentobject_version.contentobject_id');
     if ($sort !== null) {
         $this->sortClauseConverter->applyJoin($query, $sort);
     }
     $query->where($this->getQueryCondition($filter, $query, $translations));
     if ($sort !== null) {
         $this->sortClauseConverter->applyOrderBy($query);
     }
     $query->limit($limit, $offset);
     $statement = $query->prepare();
     $statement->execute();
     return $statement->fetchAll(\PDO::FETCH_COLUMN);
 }