Completed
Push — master ( 4e0ac6...0fdc9b )
by Łukasz
25:36
created

SearchService::suggest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 4
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * SearchService class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\Repository\SiteAccessAware;
10
11
use eZ\Publish\API\Repository\SearchService as SearchServiceInterface;
12
use eZ\Publish\API\Repository\Values\Content\Query;
13
use eZ\Publish\API\Repository\Values\Content\LocationQuery;
14
use eZ\Publish\API\Repository\Values\Content\Query\Criterion;
15
use eZ\Publish\Core\Repository\SiteAccessAware\Language\LanguageResolver;
16
17
/**
18
 * SiteAccess aware implementation of SearchService injecting languages where needed.
19
 */
20
class SearchService implements SearchServiceInterface
21
{
22
    /** @var \eZ\Publish\API\Repository\SearchService */
23
    protected $service;
24
25
    /** @var \eZ\Publish\Core\Repository\SiteAccessAware\Language\LanguageResolver */
26
    protected $languageResolver;
27
28
    /**
29
     * Construct service object from aggregated service and LanguageResolver.
30
     *
31
     * @param \eZ\Publish\API\Repository\SearchService $service
32
     * @param \eZ\Publish\Core\Repository\SiteAccessAware\Language\LanguageResolver $languageResolver
33
     */
34
    public function __construct(
35
        SearchServiceInterface $service,
36
        LanguageResolver $languageResolver
37
    ) {
38
        $this->service = $service;
39
        $this->languageResolver = $languageResolver;
40
    }
41
42 View Code Duplication
    public function findContent(Query $query, array $languageFilter = [], $filterOnUserPermissions = true)
43
    {
44
        $languageFilter['languages'] = $this->languageResolver->getPrioritizedLanguages(
45
            $languageFilter['languages'] ?? null
46
        );
47
48
        $languageFilter['useAlwaysAvailable'] = $this->languageResolver->getUseAlwaysAvailable(
49
            $languageFilter['useAlwaysAvailable'] ?? null
50
        );
51
52
        return $this->service->findContent($query, $languageFilter, $filterOnUserPermissions);
53
    }
54
55 View Code Duplication
    public function findContentInfo(Query $query, array $languageFilter = [], $filterOnUserPermissions = true)
56
    {
57
        $languageFilter['languages'] = $this->languageResolver->getPrioritizedLanguages(
58
            $languageFilter['languages'] ?? null
59
        );
60
61
        $languageFilter['useAlwaysAvailable'] = $this->languageResolver->getUseAlwaysAvailable(
62
            $languageFilter['useAlwaysAvailable'] ?? null
63
        );
64
65
        return $this->service->findContentInfo($query, $languageFilter, $filterOnUserPermissions);
66
    }
67
68 View Code Duplication
    public function findSingle(Criterion $filter, array $languageFilter = [], $filterOnUserPermissions = true)
69
    {
70
        $languageFilter['languages'] = $this->languageResolver->getPrioritizedLanguages(
71
            $languageFilter['languages'] ?? null
72
        );
73
74
        $languageFilter['useAlwaysAvailable'] = $this->languageResolver->getUseAlwaysAvailable(
75
            $languageFilter['useAlwaysAvailable'] ?? null
76
        );
77
78
        return $this->service->findSingle($filter, $languageFilter, $filterOnUserPermissions);
79
    }
80
81
    public function suggest($prefix, $fieldPaths = [], $limit = 10, Criterion $filter = null)
82
    {
83
        return $this->service->suggest($prefix, $fieldPaths, $limit, $filter);
84
    }
85
86 View Code Duplication
    public function findLocations(LocationQuery $query, array $languageFilter = [], $filterOnUserPermissions = true)
87
    {
88
        $languageFilter['languages'] = $this->languageResolver->getPrioritizedLanguages(
89
            $languageFilter['languages'] ?? null
90
        );
91
92
        $languageFilter['useAlwaysAvailable'] = $this->languageResolver->getUseAlwaysAvailable(
93
            $languageFilter['useAlwaysAvailable'] ?? null
94
        );
95
96
        return $this->service->findLocations($query, $languageFilter, $filterOnUserPermissions);
97
    }
98
99
    public function supports($capabilityFlag)
100
    {
101
        return $this->service->supports($capabilityFlag);
102
    }
103
}
104