Completed
Push — master ( a682b4...c5625a )
by André
14:36
created

SearchService::getSortClauseFromLocation()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
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\SignalSlot;
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
16
/**
17
 * SearchService class.
18
 */
19
class SearchService implements SearchServiceInterface
20
{
21
    /**
22
     * Aggregated service.
23
     *
24
     * @var \eZ\Publish\API\Repository\SearchService
25
     */
26
    protected $service;
27
28
    /**
29
     * SignalDispatcher.
30
     *
31
     * @var \eZ\Publish\Core\SignalSlot\SignalDispatcher
32
     */
33
    protected $signalDispatcher;
34
35
    /**
36
     * Constructor.
37
     *
38
     * Construct service object from aggregated service and signal
39
     * dispatcher
40
     *
41
     * @param \eZ\Publish\API\Repository\SearchService $service
42
     * @param \eZ\Publish\Core\SignalSlot\SignalDispatcher $signalDispatcher
43
     */
44
    public function __construct(SearchServiceInterface $service, SignalDispatcher $signalDispatcher)
45
    {
46
        $this->service = $service;
47
        $this->signalDispatcher = $signalDispatcher;
48
    }
49
50
    /**
51
     * Finds content objects for the given query.
52
     *
53
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if query is not valid
54
     *
55
     * @param \eZ\Publish\API\Repository\Values\Content\Query $query
56
     * @param array $languageFilter Configuration for specifying prioritized languages query will be performed on.
57
     *        Currently supported: <code>array("languages" => array(<language1>,..))</code>.
58
     * @param bool $filterOnUserPermissions if true only the objects which the user is allowed to read are returned.
59
     *
60
     * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult
61
     */
62
    public function findContent(Query $query, array $languageFilter = array(), $filterOnUserPermissions = true)
63
    {
64
        return $this->service->findContent($query, $languageFilter, $filterOnUserPermissions);
65
    }
66
67
    /**
68
     * Finds contentInfo objects for the given query.
69
     *
70
     * @see SearchServiceInterface::findContentInfo()
71
     *
72
     * @since 5.4.5
73
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if query is not valid
74
     *
75
     * @param \eZ\Publish\API\Repository\Values\Content\Query $query
76
     * @param array $languageFilter - a map of filters for the returned fields.
77
     *        Currently supports: <code>array("languages" => array(<language1>,..), "useAlwaysAvailable" => bool)</code>
78
     *                            useAlwaysAvailable defaults to true to avoid exceptions on missing translations.
79
     * @param bool $filterOnUserPermissions if true (default) only the objects which is the user allowed to read are returned.
80
     *
81
     * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult
82
     */
83
    public function findContentInfo(Query $query, array $languageFilter = array(), $filterOnUserPermissions = true)
84
    {
85
        return $this->service->findContentInfo($query, $languageFilter, $filterOnUserPermissions);
86
    }
87
88
    /**
89
     * Performs a query for a single content object.
90
     *
91
     * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException if the object was not found by the query or due to permissions
92
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if criterion is not valid
93
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if there is more than than one result matching the criterions
94
     *
95
     * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $filter
96
     * @param array $languageFilter Configuration for specifying prioritized languages query will be performed on.
97
     *        Currently supported: <code>array("languages" => array(<language1>,..))</code>.
98
     * @param bool $filterOnUserPermissions if true only the objects which is the user allowed to read are returned.
99
     *
100
     * @return \eZ\Publish\API\Repository\Values\Content\Content
101
     */
102
    public function findSingle(Criterion $filter, array $languageFilter = array(), $filterOnUserPermissions = true)
103
    {
104
        return $this->service->findSingle($filter, $languageFilter, $filterOnUserPermissions);
105
    }
106
107
    /**
108
     * Suggests a list of values for the given prefix.
109
     *
110
     * @param string $prefix
111
     * @param string[] $fieldPaths
112
     * @param int $limit
113
     * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $filter
114
     */
115
    public function suggest($prefix, $fieldPaths = array(), $limit = 10, Criterion $filter = null)
116
    {
117
        return $this->service->suggest($prefix, $fieldPaths, $limit, $filter);
118
    }
119
120
    /**
121
     * Finds Locations for the given query.
122
     *
123
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if query is not valid
124
     *
125
     * @param \eZ\Publish\API\Repository\Values\Content\LocationQuery $query
126
     * @param array $languageFilter Configuration for specifying prioritized languages query will be performed on.
127
     *        Currently supports: <code>array("languages" => array(<language1>,..), "useAlwaysAvailable" => bool)</code>
128
     *                            useAlwaysAvailable defaults to true to avoid exceptions on missing translations
129
     * @param bool $filterOnUserPermissions if true only the objects which is the user allowed to read are returned.
130
     *
131
     * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult
132
     */
133
    public function findLocations(LocationQuery $query, array $languageFilter = array(), $filterOnUserPermissions = true)
134
    {
135
        return $this->service->findLocations($query, $languageFilter, $filterOnUserPermissions);
136
    }
137
}
138