Code Duplication    Length = 63-71 lines in 2 locations

eZ/Publish/Core/Pagination/Pagerfanta/ContentSearchHitAdapter.php 1 location

@@ 19-89 (lines=71) @@
16
 * Pagerfanta adapter for eZ Publish content search.
17
 * Will return results as SearchHit objects.
18
 */
19
class ContentSearchHitAdapter implements AdapterInterface
20
{
21
    /** @var \eZ\Publish\API\Repository\Values\Content\Query */
22
    private $query;
23
24
    /** @var \eZ\Publish\API\Repository\SearchService */
25
    private $searchService;
26
27
    /** @var array */
28
    private $languageFilter;
29
30
    /** @var int */
31
    private $nbResults;
32
33
    public function __construct(
34
        Query $query,
35
        SearchService $searchService,
36
        array $languageFilter = []
37
    ) {
38
        $this->query = $query;
39
        $this->searchService = $searchService;
40
        $this->languageFilter = $languageFilter;
41
    }
42
43
    /**
44
     * Returns the number of results.
45
     *
46
     * @return int The number of results.
47
     */
48
    public function getNbResults()
49
    {
50
        if (isset($this->nbResults)) {
51
            return $this->nbResults;
52
        }
53
54
        $countQuery = clone $this->query;
55
        $countQuery->limit = 0;
56
57
        $searchResult = $this->searchService->findContent(
58
            $countQuery,
59
            $this->languageFilter
60
        );
61
62
        return $this->nbResults = $searchResult->totalCount;
63
    }
64
65
    /**
66
     * Returns a slice of the results, as SearchHit objects.
67
     *
68
     * @param int $offset The offset.
69
     * @param int $length The length.
70
     *
71
     * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchHit[]
72
     */
73
    public function getSlice($offset, $length)
74
    {
75
        $query = clone $this->query;
76
        $query->offset = $offset;
77
        $query->limit = $length;
78
        $query->performCount = false;
79
80
        $searchResult = $this->searchService->findContent($query, $this->languageFilter);
81
82
        // Set count for further use if returned by search engine despite !performCount (Solr, ES)
83
        if (!isset($this->nbResults) && isset($searchResult->totalCount)) {
84
            $this->nbResults = $searchResult->totalCount;
85
        }
86
87
        return $searchResult->searchHits;
88
    }
89
}
90

eZ/Publish/Core/Pagination/Pagerfanta/LocationSearchHitAdapter.php 1 location

@@ 19-81 (lines=63) @@
16
 * Pagerfanta adapter for eZ Publish location search.
17
 * Will return results as SearchHit objects.
18
 */
19
class LocationSearchHitAdapter implements AdapterInterface
20
{
21
    /** @var \eZ\Publish\API\Repository\Values\Content\LocationQuery */
22
    private $query;
23
24
    /** @var \eZ\Publish\API\Repository\SearchService */
25
    private $searchService;
26
27
    /** @var array */
28
    private $languageFilter;
29
30
    /** @var int */
31
    private $nbResults;
32
33
    public function __construct(LocationQuery $query, SearchService $searchService, array $languageFilter = [])
34
    {
35
        $this->query = $query;
36
        $this->searchService = $searchService;
37
        $this->languageFilter = $languageFilter;
38
    }
39
40
    /**
41
     * Returns the number of results.
42
     *
43
     * @return int The number of results.
44
     */
45
    public function getNbResults()
46
    {
47
        if (isset($this->nbResults)) {
48
            return $this->nbResults;
49
        }
50
51
        $countQuery = clone $this->query;
52
        $countQuery->limit = 0;
53
54
        return $this->nbResults = $this->searchService->findLocations($countQuery)->totalCount;
55
    }
56
57
    /**
58
     * Returns a slice of the results, as SearchHit objects.
59
     *
60
     * @param int $offset The offset.
61
     * @param int $length The length.
62
     *
63
     * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchHit[]
64
     */
65
    public function getSlice($offset, $length)
66
    {
67
        $query = clone $this->query;
68
        $query->offset = $offset;
69
        $query->limit = $length;
70
        $query->performCount = false;
71
72
        $searchResult = $this->searchService->findLocations($query, $this->languageFilter);
73
74
        // Set count for further use if returned by search engine despite !performCount (Solr, ES)
75
        if (!isset($this->nbResults) && isset($searchResult->totalCount)) {
76
            $this->nbResults = $searchResult->totalCount;
77
        }
78
79
        return $searchResult->searchHits;
80
    }
81
}
82