10
10
*/
11
11
12
12
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 ;
13
19
14
20
/**
15
21
* This REST endpoint gets featured products list
@@ -19,8 +25,7 @@ class BinshopsrestFeaturedproductsModuleFrontController extends AbstractRESTCont
19
25
{
20
26
protected function processGetRequest ()
21
27
{
22
- $ featuredProducts = Module::getInstanceByName ('ps_featuredproducts ' );
23
- $ featuredProductsList = $ featuredProducts ->getWidgetVariables (null , []);
28
+ $ featuredProductsList = $ this ->getFeaturedProducts ();
24
29
25
30
$ this ->ajaxRender (json_encode ([
26
31
'code ' => 200 ,
@@ -56,4 +61,82 @@ protected function processDeleteRequest()
56
61
]));
57
62
die;
58
63
}
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
+ }
59
142
}
0 commit comments