bb-legacy/controllers/front/manufacturerController.php line 33

Open in your IDE?
  1. <?php
  2. use App\Application\Service\Taxonomy\TaxonomyBreadcrumbService;
  3. use App\Application\Service\Taxonomy\TaxonomyService;
  4. use App\Application\Service\Taxonomy\TaxonomyTreeService;
  5. use App\Entity\System\Tag;
  6. use App\ViewManager\Landing\ViewService;
  7. use Twig\Environment;
  8. use Twig\Error\LoaderError;
  9. use Twig\Error\RuntimeError;
  10. use Twig\Error\SyntaxError;
  11. use function Sentry\captureException;
  12. class manufacturerController extends Controller
  13. {
  14.     /** @var TaxonomyTreeService */
  15.     private $taxonomyTreeService;
  16.     /** @var TaxonomyService */
  17.     private $taxonomyService;
  18.     /** @var ViewService */
  19.     private $viewService;
  20.     /** @var TaxonomyBreadcrumbService */
  21.     private $taxonomyBreadcrumbService;
  22.     /** @var Environment */
  23.     private $twig;
  24.     public function __construct()
  25.     {
  26.         $this->taxonomyTreeService Tools::getSfService(TaxonomyTreeService::class);
  27.         $this->taxonomyService Tools::getSfService(TaxonomyService::class);
  28.         $this->viewService Tools::getSfService(ViewService::class);
  29.         $this->taxonomyBreadcrumbService Tools::getSfService(TaxonomyBreadcrumbService::class);
  30.         $this->twig Tools::getSfService('twig');
  31.         parent::__construct();
  32.     }
  33.     /**
  34.      * @deprecated moved to new architecture
  35.      *
  36.      * @param $manufacturerId
  37.      * @return void
  38.      * @throws \Psr\Cache\InvalidArgumentException
  39.      * @throws LoaderError
  40.      * @throws RuntimeError
  41.      * @throws SyntaxError
  42.      */
  43.     public function view($manufacturerId): void
  44.     {
  45.         if (!Tools::getSfParameter('is_staging')) {
  46.             captureException(new \Exception('Using legacy brand controller'));
  47.         }
  48.         $this->setUrl('manufacturer');
  49.         if (!$manufacturerId) {
  50.             return;
  51.         }
  52.         $manufacturer = new Manufacturer($manufacturerId);
  53.         $language = \Session::get('lang');
  54.         $languageId = (int)Session::get('id_lang');
  55.         $isoCode = \Language::getIsoById($languageId);
  56.         $this->setMetaTitle($manufacturer->meta_title[Session::get('id_lang')]." | BigBuy");
  57.         $categoryChilds = [];
  58.         $breadCrumb $this->taxonomyBreadcrumbService->getLegacyBreadCrumb(null$languageId);
  59.         $allTaxonomiesForLanguageID $this->taxonomyService->getAllCachedTaxonomiesForLanguage(
  60.             Session::get('id_lang')
  61.         );
  62.         $categoryTree $this->taxonomyTreeService->getLegacyTree($allTaxonomiesForLanguageID$language, []);
  63.         $sections $breadCrumb;
  64.         $hasChilds = !empty($categoryChilds);
  65.         $numReferences 0;
  66.         $viewFilters $this->viewService->getFiltersByElasticSearchResults(
  67.             $manufacturerId,
  68.             $this->model,
  69.             ViewService::VIEW_TYPE_BRAND
  70.         );
  71.         $hrefLink Tools::getSfService(\App\Application\Service\Helper\LinkGenerator::class)->getManufacturerLink();
  72.         $url = \parse_url($hrefLink);
  73.         $method = \ltrim($url['path'], '/');
  74.         $paginatorData $this->viewService->getPaginatorDataEncoded($hrefLink$method$viewFilters);
  75.         $href Tools::getSfService(\App\Application\Service\Helper\LinkGenerator::class)->getManufacturerLink();
  76.         $jsParameters $this->viewService->getParameters(
  77.             ViewService::VIEW_JS_TYPE_BRAND,
  78.             $manufacturerId,
  79.             $viewFilters,
  80.             $href
  81.         );
  82.         $codeJs Tools::createCategoryFilters($jsParameters);
  83.         $this->addJs(
  84.             $this->viewService->addJs($paginatorData$codeJs$manufacturerIdViewService::VIEW_JS_TYPE_BRAND)
  85.         );
  86.         $categoryProducts $viewFilters->getCategoryProducts();
  87.         if ($viewFilters->getAjax()) {
  88.             $this->setDisplayFooter(false);
  89.             $this->setDisplayHeadAndHeader(false);
  90.             $this->setJsonArgs($this->viewService->setJsonArguments($viewFilters));
  91.             $this->setJsonResponse(true);
  92.             if (empty($categoryProducts)) {
  93.                 $viewVars['_partials0'] = 'not_display';
  94.             } else {
  95.                 $viewVars['_partials0'] = $categoryProducts;
  96.             }
  97.             $this->setView('ajax-product-list'$viewVars);
  98.         } else {
  99.             $viewVars $this->viewService->generateViewVars
  100.             (
  101.                 $sections,
  102.                 $categoryTree,
  103.                 $manufacturer->name,
  104.                 $manufacturer->description[Session::get('id_lang')] ?? null,
  105.                 $manufacturerId,
  106.                 $categoryChilds,
  107.                 $hasChilds,
  108.                 $numReferences,
  109.                 true,
  110.                 $viewFilters,
  111.                 null
  112.             );
  113.             $viewVars['_layout2']['id_manufacturer'] = $manufacturerId;
  114.             if (Tools::isMobile()) {
  115.                 $viewVars['redirect'] = BASE_URL.'manufacturer/filterMobile/'.$manufacturerId;
  116.                 $viewVars['_partials0'][0]['name'] = $manufacturer->name;
  117.             }
  118.             $viewVars['domain'] = 'messages';
  119.             $viewVars['languageIsoCode'] = $isoCode;
  120.             $viewVars['tag_data'] = [
  121.                 'blackfriday_id' => Tag::BLACK_FRIDAY_TAG_ID,
  122.                 'blackfriday_text' => Tag::TAG_BLACK_FRIDAY_TEXT,
  123.                 'hotdeals_id' => Tag::HOTDEAL_TAG_ID,
  124.                 'hotdeals_text' => Tag::TAG_HOTDEALS_TEXT,
  125.             ];
  126.             $viewVars['rendered_twig_template'] = $this->twig->render($this->viewService->getTwigName(), $viewVars);
  127.             $this->setView('taxonomyList'$viewVars);
  128.         }
  129.     }
  130.     /**
  131.      * @param int $id
  132.      * @return void
  133.      * @throws LoaderError
  134.      * @throws RuntimeError
  135.      * @throws SyntaxError
  136.      */
  137.     public function filterMobile(int $id): void
  138.     {
  139.         $languageId = (int)Session::get('id_lang');
  140.         $isoCode = \Language::getIsoById($languageId);
  141.         Session::set('id_model'$id);
  142.         $viewFilters $this->viewService->getFiltersByElasticSearchResults(
  143.             $id,
  144.             $this->model,
  145.             ViewService::VIEW_TYPE_BRAND
  146.         );
  147.         $linkRewrite Tools::getSfService(\App\Application\Service\Helper\LinkGenerator::class)->getManufacturerLink(
  148.             $id
  149.         );
  150.         $href BASE_URL.'manufacturer/ajax_show_products/'.$id;
  151.         $jsParameters $this->viewService->getParametersToFilterMobile($id$viewFilters$linkRewrite$href);
  152.         $codeJs Tools::createCategoryFilters($jsParameters);
  153.         $this->addJs($this->viewService->addFilterMobileJs($codeJs));
  154.         $viewVars $this->viewService->generateVarsMobileFilter($viewFilters);
  155.         $this->headerClass 'fullContent';
  156.         $viewVars['redirect'] = $linkRewrite;
  157.         $viewVars['domain'] = 'messages';
  158.         $viewVars['languageIsoCode'] = $isoCode;
  159.         $viewVars['rendered_twig_template'] = $this->twig->render(
  160.             'front/shop_b2b/mobile/filter_mobile.html.twig',
  161.             $viewVars
  162.         );
  163.         $this->setView('filterMobile'$viewVars);
  164.     }
  165.     public function ajax_show_products()
  166.     {
  167.         $init Tools::getValue('init');
  168.         $limit Tools::getValue('limit');
  169.         $filters Tools::getValue('filters', []);
  170.         $entityId Tools::getValue('idEntity', []);
  171.         $type Tools::getValue('type');
  172.         $isMobile Tools::getValue('mobile');
  173.         if (empty($filters['brands'])) {
  174.             $filters['brands'] = [Tools::getValue('args')];
  175.         }
  176.         Session::set('filters'$filters);
  177.         $results Tools::getResultsElasticSearch(
  178.             Session::get('lang'),
  179.             $init,
  180.             $limit,
  181.             $this->ajax,
  182.             $filters,
  183.             Session::get('is_wholesaler')
  184.         );
  185.         $numberProducts $results['total_results'];
  186.         $resultProds $results['result'];
  187.         if ($numberProducts === false) {
  188.             $numberProducts 0;
  189.         }
  190.         $nextInit $init $limit;
  191.         $nextCallNum $limit;
  192.         if ($numberProducts $nextInit $limit) {
  193.             $nextCallNum $numberProducts $nextInit;
  194.         }
  195.         $show true;
  196.         if ($numberProducts <= $nextInit) {
  197.             $show false;
  198.         }
  199.         $this->setDisplayFooter(false);
  200.         $this->setDisplayHeadAndHeader(false);
  201.         $numProductsPaginator = ($numberProducts tools::MAX_LIST_PRODUCTS) ? tools::MAX_LIST_PRODUCTS $numberProducts;
  202.         if ($isMobile) {
  203.             $this->setJsonArgs(['num_products' => $numberProducts]);
  204.             $this->setJsonResponse(true);
  205.         } else {
  206.             $this->setJsonArgs([
  207.                 'init' => $nextInit,
  208.                 'show' => $show,
  209.                 'next_call_num' => $nextCallNum,
  210.                 'num_products' => $numberProducts,
  211.                 'num_products_paginator' => $numProductsPaginator,
  212.                 'ga_productlist' => [],
  213.             ]);
  214.             $this->setJsonResponse(true);
  215.             if (empty($resultProds)) {
  216.                 $resultProds 'not_display';
  217.             }
  218.             if ($type === 1) {
  219.                 $vars = [
  220.                     '_partials0' => $resultProds,
  221.                 ];
  222.                 $this->setView('ajax-product-list'$vars);
  223.             } else {
  224.                 $vars = [
  225.                     '_layout0' => [
  226.                         '_partials0' => $resultProds,
  227.                     ],
  228.                 ];
  229.                 $this->setView('ajax-product-list-sliders'$vars'ajax-product-list-full');
  230.             }
  231.         }
  232.     }
  233. }