Skip to content

Commit 7dbddf5

Browse files
committed
some changes in featuredproducts api
1 parent e7f17b4 commit 7dbddf5

File tree

2 files changed

+86
-3
lines changed

2 files changed

+86
-3
lines changed

binshopsrest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ public function hookModuleRoutes()
338338
]
339339
],
340340
'module-binshopsrest-featuredproducts' => [
341-
'rule' => 'rest/featured-products',
341+
'rule' => 'rest/featuredproducts',
342342
'keywords' => [],
343343
'controller' => 'featuredproducts',
344344
'params' => [

controllers/front/featuredproducts.php

Lines changed: 85 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
*/
1111

1212
require_once dirname(__FILE__) . '/../AbstractRESTController.php';
13+
require_once dirname(__FILE__) . '/../../classes/RESTProductLazyArray.php';
14+
15+
use PrestaShop\PrestaShop\Adapter\Category\CategoryProductSearchProvider;
16+
use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchContext;
17+
use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchQuery;
18+
use PrestaShop\PrestaShop\Core\Product\Search\SortOrder;
1319

1420
/**
1521
* This REST endpoint gets featured products list
@@ -19,8 +25,7 @@ class BinshopsrestFeaturedproductsModuleFrontController extends AbstractRESTCont
1925
{
2026
protected function processGetRequest()
2127
{
22-
$featuredProducts = Module::getInstanceByName('ps_featuredproducts');
23-
$featuredProductsList = $featuredProducts->getWidgetVariables(null, []);
28+
$featuredProductsList = $this->getFeaturedProducts();
2429

2530
$this->ajaxRender(json_encode([
2631
'code' => 200,
@@ -56,4 +61,82 @@ protected function processDeleteRequest()
5661
]));
5762
die;
5863
}
64+
65+
public function getFeaturedProducts(){
66+
$category = new Category((int) Configuration::get('HOME_FEATURED_CAT'));
67+
68+
$searchProvider = new CategoryProductSearchProvider(
69+
$this->context->getTranslator(),
70+
$category
71+
);
72+
73+
$context = new ProductSearchContext($this->context);
74+
75+
$query = new ProductSearchQuery();
76+
$nProducts = Configuration::get('HOME_FEATURED_NBR');
77+
if ($nProducts < 0) {
78+
$nProducts = 12;
79+
}
80+
81+
$query
82+
->setResultsPerPage($nProducts)
83+
->setPage(1)
84+
;
85+
86+
if (Configuration::get('HOME_FEATURED_RANDOMIZE')) {
87+
$query->setSortOrder(SortOrder::random());
88+
} else {
89+
$query->setSortOrder(new SortOrder('product', 'position', 'asc'));
90+
}
91+
92+
$result = $searchProvider->runQuery(
93+
$context,
94+
$query
95+
);
96+
97+
$products_for_template = [];
98+
$settings = $this->getProductPresentationSettings();
99+
$retriever = new \PrestaShop\PrestaShop\Adapter\Image\ImageRetriever(
100+
$this->context->link
101+
);
102+
103+
foreach ($result->getProducts() as $rawProduct) {
104+
$populated_product = (new ProductAssembler($this->context))
105+
->assembleProduct($rawProduct);
106+
$lazy_product = new RESTProductLazyArray(
107+
$settings,
108+
$populated_product,
109+
$this->context->language,
110+
new \PrestaShop\PrestaShop\Adapter\Product\PriceFormatter(),
111+
$retriever,
112+
$this->context->getTranslator()
113+
);
114+
115+
$products_for_template[] = $lazy_product->getProduct();
116+
}
117+
118+
return array(
119+
'products' => $products_for_template,
120+
'allProductsLink' => Context::getContext()->link->getCategoryLink($this->getConfigFieldsValues()['HOME_FEATURED_CAT']),
121+
);
122+
}
123+
124+
public function getConfigFieldsValues()
125+
{
126+
return array(
127+
'HOME_FEATURED_NBR' => Tools::getValue('HOME_FEATURED_NBR', (int) Configuration::get('HOME_FEATURED_NBR')),
128+
'HOME_FEATURED_CAT' => Tools::getValue('HOME_FEATURED_CAT', (int) Configuration::get('HOME_FEATURED_CAT')),
129+
'HOME_FEATURED_RANDOMIZE' => Tools::getValue('HOME_FEATURED_RANDOMIZE', (bool) Configuration::get('HOME_FEATURED_RANDOMIZE')),
130+
);
131+
}
132+
133+
private function getFactory()
134+
{
135+
return new ProductPresenterFactory($this->context, new TaxConfiguration());
136+
}
137+
138+
protected function getProductPresentationSettings()
139+
{
140+
return $this->getFactory()->getPresentationSettings();
141+
}
59142
}

0 commit comments

Comments
 (0)