Skip to content

Commit e36e6ed

Browse files
committed
MAGETWO-40097: Refactor Search Web Api
- Changed encoding
1 parent cb639fe commit e36e6ed

File tree

4 files changed

+365
-365
lines changed

4 files changed

+365
-365
lines changed
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
<?php
2-
/**
3-
* Copyright © 2015 Magento. All rights reserved.
4-
* See COPYING.txt for license details.
5-
*/
6-
namespace Magento\Search\Api;
7-
8-
9-
interface SearchInterface
10-
{
11-
/**
12-
* @param \Magento\Framework\Api\Search\SearchCriteriaInterface $searchCriteria
13-
* @return \Magento\Framework\Api\Search\SearchResultInterface
14-
*/
15-
public function search(\Magento\Framework\Api\Search\SearchCriteriaInterface $searchCriteria);
16-
}
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Search\Api;
7+
8+
9+
interface SearchInterface
10+
{
11+
/**
12+
* @param \Magento\Framework\Api\Search\SearchCriteriaInterface $searchCriteria
13+
* @return \Magento\Framework\Api\Search\SearchResultInterface
14+
*/
15+
public function search(\Magento\Framework\Api\Search\SearchCriteriaInterface $searchCriteria);
16+
}
Lines changed: 124 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,124 @@
1-
<?php
2-
/**
3-
* Copyright © 2015 Magento. All rights reserved.
4-
* See COPYING.txt for license details.
5-
*/
6-
namespace Magento\Search\Model;
7-
8-
use Magento\Catalog\Model\Layer\Filter\Dynamic\AlgorithmFactory;
9-
use Magento\Framework\Api\Search\SearchCriteriaInterface;
10-
use Magento\Framework\App\Config\ScopeConfigInterface;
11-
use Magento\Framework\Search\Request\Builder;
12-
use Magento\Framework\Search\SearchEngineInterface;
13-
use Magento\Search\Api\SearchInterface;
14-
use Magento\Store\Model\ScopeInterface;
15-
use Magento\Store\Model\StoreManagerInterface;
16-
17-
class Search implements SearchInterface
18-
{
19-
/**
20-
* @var Builder
21-
*/
22-
private $requestBuilder;
23-
24-
/**
25-
* @var StoreManagerInterface
26-
*/
27-
private $storeManager;
28-
29-
/**
30-
* @var SearchEngineInterface
31-
*/
32-
private $searchEngine;
33-
34-
/**
35-
* @var SearchResponseBuilder
36-
*/
37-
private $searchResponseBuilder;
38-
39-
/**
40-
* @var ScopeConfigInterface
41-
*/
42-
private $scopeConfig;
43-
44-
/**
45-
* @param Builder $requestBuilder
46-
* @param StoreManagerInterface $storeManager
47-
* @param SearchEngineInterface $searchEngine
48-
* @param SearchResponseBuilder $searchResponseBuilder
49-
* @param ScopeConfigInterface $scopeConfig
50-
*/
51-
public function __construct(
52-
Builder $requestBuilder,
53-
StoreManagerInterface $storeManager,
54-
SearchEngineInterface $searchEngine,
55-
SearchResponseBuilder $searchResponseBuilder,
56-
ScopeConfigInterface $scopeConfig
57-
) {
58-
$this->requestBuilder = $requestBuilder;
59-
$this->storeManager = $storeManager;
60-
$this->searchEngine = $searchEngine;
61-
$this->searchResponseBuilder = $searchResponseBuilder;
62-
$this->scopeConfig = $scopeConfig;
63-
}
64-
65-
/**
66-
* {@inheritdoc}
67-
*/
68-
public function search(SearchCriteriaInterface $searchCriteria)
69-
{
70-
$this->requestBuilder->setRequestName($searchCriteria->getRequestName());
71-
72-
$searchTerm = $searchCriteria->getSearchTerm();
73-
if (!empty($searchTerm)) {
74-
$this->requestBuilder->bind('search_term', $searchTerm);
75-
}
76-
77-
$storeId = $this->storeManager->getStore(true)->getId();
78-
$this->requestBuilder->bindDimension('scope', $storeId);
79-
80-
foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
81-
foreach ($filterGroup->getFilters() as $filter) {
82-
$this->addFieldToFilter($filter->getField(), $filter->getValue());
83-
}
84-
}
85-
86-
$priceRangeCalculation = $this->scopeConfig->getValue(
87-
AlgorithmFactory::XML_PATH_RANGE_CALCULATION,
88-
ScopeInterface::SCOPE_STORE
89-
);
90-
if ($priceRangeCalculation) {
91-
$this->requestBuilder->bind('price_dynamic_algorithm', $priceRangeCalculation);
92-
}
93-
94-
$this->requestBuilder->setFrom($searchCriteria->getCurrentPage() * $searchCriteria->getPageSize());
95-
$this->requestBuilder->setSize($searchCriteria->getPageSize());
96-
$request = $this->requestBuilder->create();
97-
$searchResponse = $this->searchEngine->search($request);
98-
99-
return $this->searchResponseBuilder->build($searchResponse)
100-
->setSearchCriteria($searchCriteria);
101-
}
102-
103-
/**
104-
* Apply attribute filter to facet collection
105-
*
106-
* @param string $field
107-
* @param null $condition
108-
* @return $this
109-
*/
110-
private function addFieldToFilter($field, $condition = null)
111-
{
112-
if (!is_array($condition) || !in_array(key($condition), ['from', 'to'])) {
113-
$this->requestBuilder->bind($field, $condition);
114-
} else {
115-
if (!empty($condition['from'])) {
116-
$this->requestBuilder->bind("{$field}.from", $condition['from']);
117-
}
118-
if (!empty($condition['to'])) {
119-
$this->requestBuilder->bind("{$field}.to", $condition['to']);
120-
}
121-
}
122-
return $this;
123-
}
124-
}
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Search\Model;
7+
8+
use Magento\Catalog\Model\Layer\Filter\Dynamic\AlgorithmFactory;
9+
use Magento\Framework\Api\Search\SearchCriteriaInterface;
10+
use Magento\Framework\App\Config\ScopeConfigInterface;
11+
use Magento\Framework\Search\Request\Builder;
12+
use Magento\Framework\Search\SearchEngineInterface;
13+
use Magento\Search\Api\SearchInterface;
14+
use Magento\Store\Model\ScopeInterface;
15+
use Magento\Store\Model\StoreManagerInterface;
16+
17+
class Search implements SearchInterface
18+
{
19+
/**
20+
* @var Builder
21+
*/
22+
private $requestBuilder;
23+
24+
/**
25+
* @var StoreManagerInterface
26+
*/
27+
private $storeManager;
28+
29+
/**
30+
* @var SearchEngineInterface
31+
*/
32+
private $searchEngine;
33+
34+
/**
35+
* @var SearchResponseBuilder
36+
*/
37+
private $searchResponseBuilder;
38+
39+
/**
40+
* @var ScopeConfigInterface
41+
*/
42+
private $scopeConfig;
43+
44+
/**
45+
* @param Builder $requestBuilder
46+
* @param StoreManagerInterface $storeManager
47+
* @param SearchEngineInterface $searchEngine
48+
* @param SearchResponseBuilder $searchResponseBuilder
49+
* @param ScopeConfigInterface $scopeConfig
50+
*/
51+
public function __construct(
52+
Builder $requestBuilder,
53+
StoreManagerInterface $storeManager,
54+
SearchEngineInterface $searchEngine,
55+
SearchResponseBuilder $searchResponseBuilder,
56+
ScopeConfigInterface $scopeConfig
57+
) {
58+
$this->requestBuilder = $requestBuilder;
59+
$this->storeManager = $storeManager;
60+
$this->searchEngine = $searchEngine;
61+
$this->searchResponseBuilder = $searchResponseBuilder;
62+
$this->scopeConfig = $scopeConfig;
63+
}
64+
65+
/**
66+
* {@inheritdoc}
67+
*/
68+
public function search(SearchCriteriaInterface $searchCriteria)
69+
{
70+
$this->requestBuilder->setRequestName($searchCriteria->getRequestName());
71+
72+
$searchTerm = $searchCriteria->getSearchTerm();
73+
if (!empty($searchTerm)) {
74+
$this->requestBuilder->bind('search_term', $searchTerm);
75+
}
76+
77+
$storeId = $this->storeManager->getStore(true)->getId();
78+
$this->requestBuilder->bindDimension('scope', $storeId);
79+
80+
foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
81+
foreach ($filterGroup->getFilters() as $filter) {
82+
$this->addFieldToFilter($filter->getField(), $filter->getValue());
83+
}
84+
}
85+
86+
$priceRangeCalculation = $this->scopeConfig->getValue(
87+
AlgorithmFactory::XML_PATH_RANGE_CALCULATION,
88+
ScopeInterface::SCOPE_STORE
89+
);
90+
if ($priceRangeCalculation) {
91+
$this->requestBuilder->bind('price_dynamic_algorithm', $priceRangeCalculation);
92+
}
93+
94+
$this->requestBuilder->setFrom($searchCriteria->getCurrentPage() * $searchCriteria->getPageSize());
95+
$this->requestBuilder->setSize($searchCriteria->getPageSize());
96+
$request = $this->requestBuilder->create();
97+
$searchResponse = $this->searchEngine->search($request);
98+
99+
return $this->searchResponseBuilder->build($searchResponse)
100+
->setSearchCriteria($searchCriteria);
101+
}
102+
103+
/**
104+
* Apply attribute filter to facet collection
105+
*
106+
* @param string $field
107+
* @param null $condition
108+
* @return $this
109+
*/
110+
private function addFieldToFilter($field, $condition = null)
111+
{
112+
if (!is_array($condition) || !in_array(key($condition), ['from', 'to'])) {
113+
$this->requestBuilder->bind($field, $condition);
114+
} else {
115+
if (!empty($condition['from'])) {
116+
$this->requestBuilder->bind("{$field}.from", $condition['from']);
117+
}
118+
if (!empty($condition['to'])) {
119+
$this->requestBuilder->bind("{$field}.to", $condition['to']);
120+
}
121+
}
122+
return $this;
123+
}
124+
}

0 commit comments

Comments
 (0)