eZ\Publish\Core\Search\Legacy\Content\Handler::findContent PHP Method

findContent() public method

Finds content objects for the given query.
public findContent ( eZ\Publish\API\Repository\Values\Content\Query $query, array $languageFilter = [] ) : eZ\Publish\API\Repository\Values\Content\Search\SearchResult
$query eZ\Publish\API\Repository\Values\Content\Query
$languageFilter array - a map of language related filters specifying languages query will be performed on. Also used to define which field languages are loaded for the returned content. Currently supports: array("languages" => array(,..), "useAlwaysAvailable" => bool) useAlwaysAvailable defaults to true to avoid exceptions on missing translations
return eZ\Publish\API\Repository\Values\Content\Search\SearchResult
    public function findContent(Query $query, array $languageFilter = array())
    {
        if (!isset($languageFilter['languages'])) {
            $languageFilter['languages'] = array();
        }
        if (!isset($languageFilter['useAlwaysAvailable'])) {
            $languageFilter['useAlwaysAvailable'] = true;
        }
        $start = microtime(true);
        $query->filter = $query->filter ?: new Criterion\MatchAll();
        $query->query = $query->query ?: new Criterion\MatchAll();
        if (count($query->facetBuilders)) {
            throw new NotImplementedException('Facets are not supported by the legacy search engine.');
        }
        // The legacy search does not know about scores, so that we just
        // combine the query with the filter
        $filter = new Criterion\LogicalAnd(array($query->query, $query->filter));
        $data = $this->gateway->find($filter, $query->offset, $query->limit, $query->sortClauses, $languageFilter, $query->performCount);
        $result = new SearchResult();
        $result->time = microtime(true) - $start;
        $result->totalCount = $data['count'];
        $contentInfoList = $this->contentMapper->extractContentInfoFromRows($data['rows'], '', 'main_tree_');
        foreach ($contentInfoList as $index => $contentInfo) {
            $searchHit = new SearchHit();
            $searchHit->valueObject = $contentInfo;
            $searchHit->matchedTranslation = $this->extractMatchedLanguage($data['rows'][$index]['language_mask'], $data['rows'][$index]['initial_language_id'], $languageFilter);
            $result->searchHits[] = $searchHit;
        }
        return $result;
    }

Usage Example

 /**
  * Returns all content objects of $contentTypeId
  *
  * @param mixed $contentTypeId
  *
  * @return \eZ\Publish\SPI\Persistence\Content\ContentInfo[]
  */
 protected function loadContentObjects($contentTypeId)
 {
     $result = $this->searchHandler->findContent(new Query(array('filter' => new Criterion\ContentTypeId($contentTypeId))));
     $contentInfo = array();
     foreach ($result->searchHits as $hit) {
         $contentInfo[] = $hit->valueObject;
     }
     return $contentInfo;
 }