EmicoEcommerce/Magento2Tweakwise

View on GitHub
Block/Theme/Html/Pager/Plugin.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * Tweakwise (https://www.tweakwise.com/) - All Rights Reserved
 *
 * @copyright Copyright (c) 2017-2022 Tweakwise.com B.V. (https://www.tweakwise.com)
 * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

namespace Tweakwise\Magento2Tweakwise\Block\Theme\Html\Pager;

use Closure;
use Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\UrlModel;
use Tweakwise\Magento2Tweakwise\Model\Config;
use Magento\Theme\Block\Html\Pager;

class Plugin
{
    /**
     * @var Config
     */
    protected $config;

    /**
     * @var UrlModel
     */
    protected $url;

    /**
     * Plugin constructor.
     *
     * @param Config $config
     * @param UrlModel $url
     */
    public function __construct(Config $config, UrlModel $url)
    {
        $this->config = $config;
        $this->url = $url;
    }

    /**
     * @param Pager $subject
     * @param Closure $proceed
     * @param string $route
     * @param array $params
     * @return string
     */
    public function aroundGetUrl(Pager $subject, Closure $proceed, string $route = '', array $params = []): string
    {
        if (!$this->config->isLayeredEnabled()) {
            return $proceed($route, $params);
        }

        if ($subject->getNameInLayout() !== 'product_list_toolbar_pager') {
            return $proceed($route, $params);
        }

        $uri = $this->url->getUrl($route, $params);

        if (mb_stripos($uri, 'tweakwise/ajax/navigation') !== false) {
            $params['_direct'] = $subject->getRequest()->getParam('__tw_original_url');

            if (!empty($params['_direct'])) {
                $uri = $this->url->getUrl($route, $params);
            }
        }

        return $uri;
    }
}