This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | /* |
||
4 | * This file is part of the ONGR package. |
||
5 | * |
||
6 | * (c) NFQ Technologies UAB <[email protected]> |
||
7 | * |
||
8 | * For the full copyright and license information, please view the LICENSE |
||
9 | * file that was distributed with this source code. |
||
10 | */ |
||
11 | |||
12 | namespace ONGR\ElasticsearchDSL\Aggregation\Metric; |
||
13 | |||
14 | use ONGR\ElasticsearchDSL\Aggregation\AbstractAggregation; |
||
15 | use ONGR\ElasticsearchDSL\Aggregation\Type\MetricTrait; |
||
16 | use ONGR\ElasticsearchDSL\BuilderInterface; |
||
17 | |||
18 | /** |
||
19 | * Top hits aggregation. |
||
20 | * |
||
21 | * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html |
||
22 | */ |
||
23 | class TopHitsAggregation extends AbstractAggregation |
||
24 | { |
||
25 | use MetricTrait; |
||
26 | |||
27 | /** |
||
28 | * @var int Number of top matching hits to return per bucket. |
||
29 | */ |
||
30 | private $size; |
||
31 | |||
32 | /** |
||
33 | * @var int The offset from the first result you want to fetch. |
||
34 | */ |
||
35 | private $from; |
||
36 | |||
37 | /** |
||
38 | * @var BuilderInterface[] How the top matching hits should be sorted. |
||
39 | */ |
||
40 | private $sorts = []; |
||
41 | |||
42 | /** |
||
43 | * Constructor for top hits. |
||
44 | * |
||
45 | * @param string $name Aggregation name. |
||
46 | * @param null|int $size Number of top matching hits to return per bucket. |
||
47 | * @param null|int $from The offset from the first result you want to fetch. |
||
48 | * @param null|BuilderInterface $sort How the top matching hits should be sorted. |
||
49 | */ |
||
50 | public function __construct($name, $size = null, $from = null, $sort = null) |
||
51 | { |
||
52 | parent::__construct($name); |
||
53 | $this->setFrom($from); |
||
54 | $this->setSize($size); |
||
55 | $this->addSort($sort); |
||
56 | } |
||
57 | |||
58 | /** |
||
59 | * Return from. |
||
60 | * |
||
61 | * @return int |
||
62 | */ |
||
63 | public function getFrom() |
||
64 | { |
||
65 | return $this->from; |
||
66 | } |
||
67 | |||
68 | /** |
||
69 | * @param int $from |
||
70 | * |
||
71 | * @return $this |
||
72 | */ |
||
73 | public function setFrom($from) |
||
74 | { |
||
75 | $this->from = $from; |
||
76 | |||
77 | return $this; |
||
78 | } |
||
79 | |||
80 | /** |
||
81 | * @return BuilderInterface[] |
||
82 | */ |
||
83 | public function getSorts() |
||
84 | { |
||
85 | return $this->sorts; |
||
86 | } |
||
87 | |||
88 | /** |
||
89 | * @param BuilderInterface[] $sorts |
||
90 | * |
||
91 | * @return $this |
||
92 | */ |
||
93 | public function setSorts(array $sorts) |
||
94 | { |
||
95 | $this->sorts = $sorts; |
||
96 | |||
97 | return $this; |
||
98 | } |
||
99 | |||
100 | /** |
||
101 | * Add sort. |
||
102 | * |
||
103 | * @param BuilderInterface $sort |
||
104 | */ |
||
105 | public function addSort($sort) |
||
106 | { |
||
107 | $this->sorts[] = $sort; |
||
108 | } |
||
109 | |||
110 | /** |
||
111 | * @param int $size |
||
112 | * |
||
113 | * @return $this |
||
114 | */ |
||
115 | public function setSize($size) |
||
116 | { |
||
117 | $this->size = $size; |
||
118 | |||
119 | return $this; |
||
120 | } |
||
121 | |||
122 | /** |
||
123 | * Return size. |
||
124 | * |
||
125 | * @return int |
||
126 | */ |
||
127 | public function getSize() |
||
128 | { |
||
129 | return $this->size; |
||
130 | } |
||
131 | |||
132 | /** |
||
133 | * {@inheritdoc} |
||
134 | */ |
||
135 | public function getType() |
||
136 | { |
||
137 | return 'top_hits'; |
||
138 | } |
||
139 | |||
140 | /** |
||
141 | * {@inheritdoc} |
||
142 | */ |
||
143 | public function getArray() |
||
144 | { |
||
145 | $sortsOutput = []; |
||
146 | $addedSorts = array_filter($this->getSorts()); |
||
147 | if ($addedSorts) { |
||
0 ignored issues
–
show
|
|||
148 | foreach ($addedSorts as $sort) { |
||
149 | $sortsOutput[] = $sort->toArray(); |
||
150 | } |
||
151 | } else { |
||
152 | $sortsOutput = null; |
||
153 | } |
||
154 | |||
155 | $output = array_filter( |
||
156 | [ |
||
157 | 'sort' => $sortsOutput, |
||
158 | 'size' => $this->getSize(), |
||
159 | 'from' => $this->getFrom(), |
||
160 | ], |
||
161 | function ($val) { |
||
162 | return (($val || is_array($val) || ($val || is_numeric($val)))); |
||
163 | } |
||
164 | ); |
||
165 | |||
166 | return empty($output) ? new \stdClass() : $output; |
||
167 | } |
||
168 | |||
169 | /** |
||
170 | * @deprecated sorts now is a container, use `getSorts()`instead. |
||
171 | * Return sort. |
||
172 | * |
||
173 | * @return BuilderInterface |
||
174 | */ |
||
175 | public function getSort() |
||
176 | { |
||
177 | if (isset($this->sorts[0])) { |
||
178 | return $this->sorts[0]; |
||
179 | } |
||
180 | |||
181 | return null; |
||
182 | } |
||
183 | |||
184 | /** |
||
185 | * @deprecated sorts now is a container, use `addSort()`instead. |
||
186 | * |
||
187 | * @param BuilderInterface $sort |
||
188 | * |
||
189 | * @return $this |
||
190 | */ |
||
191 | public function setSort(BuilderInterface $sort) |
||
192 | { |
||
193 | $this->sort = $sort; |
||
194 | |||
195 | return $this; |
||
196 | } |
||
197 | } |
||
198 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.