Files

131 lines
3.3 KiB
PHP
Executable File

<?php
/**
* @author Olegnax
* @package Olegnax_HotSpotQuickview
* @copyright Copyright (c) 2023 Olegnax (http://olegnax.com/). All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Olegnax\HotSpotQuickview\Block\Widget;
use Magento\Catalog\Model\ResourceModel\AbstractResource;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\UrlRewrite\Model\UrlFinderInterface;
use Magento\Widget\Block\BlockInterface;
use Olegnax\HotSpotQuickview\Helper\Helper;
use RuntimeException;
class HotSpot extends Template implements BlockInterface
{
protected $_template = "widget/hotspot.phtml";
/**
* @var UrlFinderInterface
*/
protected $urlFinder;
/**
* @var AbstractResource|null
*/
protected $_entityResource;
/**
* @var string
*/
protected $_href;
/**
* @var UrlInterface
*/
protected $urlInterface;
/**
* @var Helper
*/
protected $helper;
/**
* HotSpot constructor.
* @param Context $context
* @param UrlInterface $urlInterface
* @param Helper $helper
* @param array $data
*/
public function __construct(
Context $context,
UrlInterface $urlInterface,
Helper $helper,
array $data = []
) {
parent::__construct($context, $data);
$this->urlInterface = $urlInterface;
$this->helper = $helper;
}
/**
* Prepare url using passed id path and return it
*
* @return string|false if path was not found in url rewrites.
* @SuppressWarnings(PHPMD.NPathComplexity)
* @throws RuntimeException
*/
public function getHref()
{
if ($this->_href === null) {
if (!$this->getData('id_path')) {
return false;
}
$rewriteData = $this->parseIdPath($this->getData('id_path'));
$href = $this->urlInterface->getUrl('ox_quickview/catalog_product/view', ['id' => $rewriteData[1]]);
$this->_href = $href;
}
return $this->_href;
}
/**
* Parse id_path
*
* @param string $idPath
* @return array
* @throws RuntimeException
*/
protected function parseIdPath($idPath)
{
$rewriteData = explode('/', $idPath);
if (!isset($rewriteData[0]) || !isset($rewriteData[1])) {
throw new RuntimeException('Wrong id_path structure.');
}
return $rewriteData;
}
/**
* @return bool
*/
public function isEnabled()
{
return $this->helper->isEnabled();
}
/**
* @return string
*/
public function getWidgetId()
{
return 'ox_hotspotquickview_' . substr(md5(microtime()), -5);
}
/**
*
*/
protected function _construct()
{
$this->setData('position_left', abs((float)$this->getData('position_left')));
$this->setData('position_top', abs((float)$this->getData('position_top')));
$this->setData('border-radius', abs((int)$this->getData('border-radius')));
$this->setData('border', abs((int)$this->getData('border')));
$this->setData('rel_nofollow', (bool)$this->getData('rel_nofollow'));
parent::_construct();
}
}