8
8
use Magento \Framework \DB \Select ;
9
9
use Magento \Framework \Exception \StateException ;
10
10
use Magento \Framework \Search \Adapter \Mysql \TemporaryStorage ;
11
+ use Magento \Framework \Search \Response \QueryResponse ;
12
+ use Magento \Framework \App \ObjectManager ;
11
13
12
14
/**
13
15
* Fulltext Collection
14
16
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
15
17
*/
16
18
class Collection extends \Magento \Catalog \Model \ResourceModel \Product \Collection
17
19
{
18
- /**
19
- * @var string
20
+ /**
21
+ * @var QueryResponse
22
+ * @deprecated
23
+ */
24
+ protected $ queryResponse ;
25
+
26
+ /**
27
+ * Catalog search data
28
+ *
29
+ * @var \Magento\Search\Model\QueryFactory
30
+ * @deprecated
31
+ */
32
+ protected $ queryFactory = null ;
33
+
34
+ /**
35
+ * @var \Magento\Framework\Search\Request\Builder
36
+ * @deprecated
37
+ */
38
+ private $ requestBuilder ;
39
+
40
+ /**
41
+ * @var \Magento\Search\Model\SearchEngine
42
+ * @deprecated
43
+ */
44
+ private $ searchEngine ;
45
+
46
+ /**
47
+ * @var string
20
48
*/
21
49
private $ queryText ;
22
50
@@ -76,11 +104,11 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
76
104
* @param \Magento\Framework\Stdlib\DateTime $dateTime
77
105
* @param \Magento\Customer\Api\GroupManagementInterface $groupManagement
78
106
* @param \Magento\Catalog\Model\ResourceModel\Product\Collection\ProductLimitation $productLimitation
107
+ * @param \Magento\Search\Model\QueryFactory $catalogSearchData
108
+ * @param \Magento\Framework\Search\Request\Builder $requestBuilder
109
+ * @param \Magento\Search\Model\SearchEngine $searchEngine
79
110
* @param \Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory $temporaryStorageFactory
80
- * @param \Magento\Search\Api\SearchInterface $search
81
- * @param \Magento\Framework\Api\Search\SearchCriteriaBuilder $searchCriteriaBuilder
82
- * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
83
- * @param \Magento\Framework\DB\Adapter\AdapterInterface|null $connection
111
+ * @param \Magento\Framework\DB\Adapter\AdapterInterface $connection
84
112
* @param string $searchRequestName
85
113
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
86
114
*/
@@ -105,13 +133,14 @@ public function __construct(
105
133
\Magento \Framework \Stdlib \DateTime $ dateTime ,
106
134
\Magento \Customer \Api \GroupManagementInterface $ groupManagement ,
107
135
\Magento \Catalog \Model \ResourceModel \Product \Collection \ProductLimitation $ productLimitation ,
136
+ \Magento \Search \Model \QueryFactory $ catalogSearchData ,
137
+ \Magento \Framework \Search \Request \Builder $ requestBuilder ,
138
+ \Magento \Search \Model \SearchEngine $ searchEngine ,
108
139
\Magento \Framework \Search \Adapter \Mysql \TemporaryStorageFactory $ temporaryStorageFactory ,
109
- \Magento \Search \Api \SearchInterface $ search ,
110
- \Magento \Framework \Api \Search \SearchCriteriaBuilder $ searchCriteriaBuilder ,
111
- \Magento \Framework \Api \FilterBuilder $ filterBuilder ,
112
140
\Magento \Framework \DB \Adapter \AdapterInterface $ connection = null ,
113
141
$ searchRequestName = 'catalog_view_container '
114
142
) {
143
+ $ this ->queryFactory = $ catalogSearchData ;
115
144
parent ::__construct (
116
145
$ entityFactory ,
117
146
$ logger ,
@@ -135,11 +164,73 @@ public function __construct(
135
164
$ productLimitation ,
136
165
$ connection
137
166
);
167
+ $ this ->requestBuilder = $ requestBuilder ;
168
+ $ this ->searchEngine = $ searchEngine ;
138
169
$ this ->temporaryStorageFactory = $ temporaryStorageFactory ;
139
170
$ this ->searchRequestName = $ searchRequestName ;
140
- $ this ->search = $ search ;
141
- $ this ->searchCriteriaBuilder = $ searchCriteriaBuilder ;
142
- $ this ->filterBuilder = $ filterBuilder ;
171
+ }
172
+
173
+
174
+ /**
175
+ * @deprecated
176
+ */
177
+ private function getSearch ()
178
+ {
179
+ if ($ this ->search !== null ) {
180
+ $ this ->search = ObjectManager::getInstance ()->get ('\Magento\Search\Api\SearchInterface ' );
181
+ }
182
+ return $ this ->search ;
183
+ }
184
+
185
+ /**
186
+ * @deprecated
187
+ * @param \Magento\Search\Api\SearchInterface $object
188
+ */
189
+ public function setSearch ($ object )
190
+ {
191
+ $ this ->search = $ object ;
192
+ }
193
+
194
+ /**
195
+ * @deprecated
196
+ */
197
+ private function getSearchCriteriaBuilder ()
198
+ {
199
+ if ($ this ->searchCriteriaBuilder !== null ) {
200
+ $ this ->searchCriteriaBuilder = ObjectManager::getInstance ()
201
+ ->get ('\Magento\Framework\Api\Search\SearchCriteriaBuilder ' );
202
+ }
203
+ return $ this ->searchCriteriaBuilder ;
204
+ }
205
+
206
+ /**
207
+ * @deprecated
208
+ * @param \Magento\Framework\Api\Search\SearchCriteriaBuilder $object
209
+ */
210
+ public function setSearchCriteriaBuilder ($ object )
211
+ {
212
+ $ this ->searchCriteriaBuilder = $ object ;
213
+ }
214
+
215
+
216
+ /**
217
+ * @deprecated
218
+ */
219
+ private function getFilterBuilder ()
220
+ {
221
+ if ($ this ->filterBuilder !== null ) {
222
+ $ this ->filterBuilder = ObjectManager::getInstance ()->get ('\Magento\Framework\Api\FilterBuilder ' );
223
+ }
224
+ return $ this ->filterBuilder ;
225
+ }
226
+
227
+ /**
228
+ * @deprecated
229
+ * @param \Magento\Framework\Api\FilterBuilder $object
230
+ */
231
+ public function setFilterBuilder ($ object )
232
+ {
233
+ $ this ->filterBuilder = $ object ;
143
234
}
144
235
145
236
/**
@@ -155,6 +246,8 @@ public function addFieldToFilter($field, $condition = null)
155
246
throw new \RuntimeException ('Illegal state ' );
156
247
}
157
248
249
+ $ this ->getSearchCriteriaBuilder ();
250
+ $ this ->getFilterBuilder ();
158
251
if (!is_array ($ condition ) || !in_array (key ($ condition ), ['from ' , 'to ' ])) {
159
252
$ this ->filterBuilder ->setField ($ field );
160
253
$ this ->filterBuilder ->setValue ($ condition );
@@ -191,6 +284,10 @@ public function addSearchFilter($query)
191
284
*/
192
285
protected function _renderFiltersBefore ()
193
286
{
287
+ $ this ->getSearchCriteriaBuilder ();
288
+ $ this ->getFilterBuilder ();
289
+ $ this ->getSearch ();
290
+
194
291
if ($ this ->queryText ) {
195
292
$ this ->filterBuilder ->setField ('search_term ' );
196
293
$ this ->filterBuilder ->setValue ($ this ->queryText );
0 commit comments