| Current Path : /var/www/clients/client3/web2/web/vendor/mageplaza/module-core/Helper/ |
| Current File : /var/www/clients/client3/web2/web/vendor/mageplaza/module-core/Helper/AbstractData.php |
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Helper;
use Exception;
use Magento\Backend\App\Config;
use Magento\Backend\App\ConfigInterface;
use Magento\Framework\App\Area;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\App\ProductMetadataInterface;
use Magento\Framework\App\State;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Json\Helper\Data as JsonHelper;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\Design\Theme\ThemeProviderInterface;
use Magento\Framework\View\DesignInterface;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
use Mageplaza\Core\Model\Config\Source\NoticeType;
/**
* Class AbstractData
* @package Mageplaza\Core\Helper
*/
class AbstractData extends AbstractHelper
{
const CONFIG_MODULE_PATH = 'mageplaza';
/**
* @type array
*/
protected $_data = [];
/**
* @type StoreManagerInterface
*/
protected $storeManager;
/**
* @type ObjectManagerInterface
*/
protected $objectManager;
/**
* @var Config
*/
protected $backendConfig;
/**
* @var array
*/
protected $isArea = [];
/**
* AbstractData constructor.
*
* @param Context $context
* @param ObjectManagerInterface $objectManager
* @param StoreManagerInterface $storeManager
*/
public function __construct(
Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager
) {
$this->objectManager = $objectManager;
$this->storeManager = $storeManager;
parent::__construct($context);
}
/**
* @param null $storeId
*
* @return bool
*/
public function isEnabled($storeId = null)
{
return $this->getConfigGeneral('enabled', $storeId);
}
/**
* @param null $storeId
*
* @return bool
*/
public function isEnabledNotificationUpdate($storeId = null)
{
$isEnable = $this->getConfigGeneral('notice_enable', $storeId);
$noticeType = $this->getConfigGeneral('notice_type', $storeId);
if ($noticeType) {
$noticeType = explode(',', $noticeType);
$noticeType = in_array(NoticeType::TYPE_NEWUPDATE, $noticeType);
}
return $isEnable && $noticeType;
}
/**
* @param string $code
* @param null $storeId
*
* @return mixed
*/
public function getConfigGeneral($code = '', $storeId = null)
{
$code = ($code !== '') ? '/' . $code : '';
return $this->getConfigValue(static::CONFIG_MODULE_PATH . '/general' . $code, $storeId);
}
/**
* @param string $field
* @param null $storeId
*
* @return mixed
*/
public function getModuleConfig($field = '', $storeId = null)
{
$field = ($field !== '') ? '/' . $field : '';
return $this->getConfigValue(static::CONFIG_MODULE_PATH . $field, $storeId);
}
/**
* @param $field
* @param null $scopeValue
* @param string $scopeType
*
* @return array|mixed
*/
public function getConfigValue($field, $scopeValue = null, $scopeType = ScopeInterface::SCOPE_STORE)
{
if ($scopeValue === null && !$this->isArea()) {
/** @var Config $backendConfig */
if (!$this->backendConfig) {
$this->backendConfig = $this->objectManager->get(ConfigInterface::class);
}
return $this->backendConfig->getValue($field);
}
return $this->scopeConfig->getValue($field, $scopeType, $scopeValue);
}
/**
* @param $name
*
* @return null
*/
public function getData($name)
{
if (array_key_exists($name, $this->_data)) {
return $this->_data[$name];
}
return null;
}
/**
* @param $name
* @param $value
*
* @return $this
*/
public function setData($name, $value)
{
$this->_data[$name] = $value;
return $this;
}
/**
* @return mixed
*/
public function getCurrentUrl()
{
$model = $this->objectManager->get(UrlInterface::class);
return $model->getCurrentUrl();
}
/**
* @param $ver
* @param string $operator
*
* @return mixed
*/
public function versionCompare($ver, $operator = '>=')
{
$productMetadata = $this->objectManager->get(ProductMetadataInterface::class);
$version = $productMetadata->getVersion(); //will return the magento version
return version_compare($version, $ver, $operator);
}
/**
* @return bool
*/
public function is247Below()
{
if (!$this->versionCompare('2.4.7','<=')) {
return true;
}
return false;
}
/**
* @param $data
*
* @return string
*/
public function serialize($data)
{
if ($this->versionCompare('2.2.0')) {
return self::jsonEncode($data);
}
return $this->getSerializeClass()->serialize($data);
}
/**
* @param $string
*
* @return mixed
*/
public function unserialize($string)
{
if ($this->versionCompare('2.2.0')) {
return self::jsonDecode($string);
}
return $this->getSerializeClass()->unserialize($string);
}
/**
* Encode the mixed $valueToEncode into the JSON format
*
* @param mixed $valueToEncode
*
* @return string
*/
public static function jsonEncode($valueToEncode)
{
try {
$encodeValue = self::getJsonHelper()->jsonEncode($valueToEncode);
} catch (Exception $e) {
$encodeValue = '{}';
}
return $encodeValue;
}
/**
* Decodes the given $encodedValue string which is
* encoded in the JSON format
*
* @param string $encodedValue
*
* @return mixed
*/
public static function jsonDecode($encodedValue)
{
try {
$decodeValue = self::getJsonHelper()->jsonDecode($encodedValue);
} catch (Exception $e) {
$decodeValue = [];
}
return $decodeValue;
}
/**
* Is Admin Store
*
* @return bool
*/
public function isAdmin()
{
return $this->isArea(Area::AREA_ADMINHTML);
}
/**
* @param string $area
*
* @return mixed
*/
public function isArea($area = Area::AREA_FRONTEND)
{
if (!isset($this->isArea[$area])) {
/** @var State $state */
$state = $this->objectManager->get(State::class);
try {
$this->isArea[$area] = ($state->getAreaCode() == $area);
} catch (Exception $e) {
$this->isArea[$area] = false;
}
}
return $this->isArea[$area];
}
/**
* @param $path
* @param array $arguments
*
* @return mixed
*/
public function createObject($path, $arguments = [])
{
return $this->objectManager->create($path, $arguments);
}
/**
* @param $path
*
* @return mixed
*/
public function getObject($path)
{
return $this->objectManager->get($path);
}
/**
* @return JsonHelper|mixed
*/
public static function getJsonHelper()
{
return ObjectManager::getInstance()->get(JsonHelper::class);
}
/**
* @return mixed
*/
protected function getSerializeClass()
{
return $this->objectManager->get('Zend_Serializer_Adapter_PhpSerialize');
}
/**
* @return mixed
*/
public function getEdition()
{
return $this->objectManager->get(ProductMetadataInterface::class)->getEdition();
}
/**
* Extract the body from a response string
*
* @param string $response_str
*
* @return string
*/
public static function extractBody($response_str)
{
$parts = preg_split('|(?:\r\n){2}|m', $response_str, 2);
if (isset($parts[1])) {
return $parts[1];
}
return '';
}
/**
* getHtmlJqColorPicker
*
* @param string $htmlId // id of the input html
* @param string|null $value
*
* @return string
*/
public static function getHtmlJqColorPicker(string $htmlId, $value = '')
{
return <<<HTML
<script type="text/javascript">
require(["jquery","jquery/colorpicker/js/colorpicker"], function ($) {
$(document).ready(function () {
var el = $("#{$htmlId}");
el.css("backgroundColor", "{$value}");
el.ColorPicker({
color: "{$value}",
onChange: function (hsb, hex, rgb) {
el.css("backgroundColor", "#" + hex).val("#" + hex);
}
});
});
});
</script>
HTML;
}
/**
* Return is Hyva Theme
*
* @return bool
*/
public function checkHyvaTheme()
{
try {
$themeCode = $this->getThemeCodeByCache();
} catch (Exception $e) {
try {
/** @var ThemeProviderInterface $themeProviderInterface */
$themeProviderInterface = $this->objectManager->create(ThemeProviderInterface::Class);
$themeId = $this->storeManager->getStore()->getConfig('design/theme/theme_id');
$theme = $themeProviderInterface->getThemeById($themeId);
$themeCode = $theme->getCode();
} catch (NoSuchEntityException $noSuchEntityException) {
return false;
}
}
if (str_contains(strtolower($themeCode), 'hyva')) {
return true;
}
return false;
}
/**
* GetThemeCode By Cache in DesignInterface
*
* @return string
*/
private function getThemeCodeByCache()
{
/** @var DesignInterface $themeProviderInterface */
$themeProviderInterface = $this->objectManager->create(DesignInterface::class);
$theme = $themeProviderInterface->getDesignTheme();
$parentTheme = $theme->getParentTheme();
return $parentTheme ? $parentTheme->getCode() : $theme->getCode();
}
/**
* IsHyvaTheme
*
* @return bool
*/
public function isHyvaTheme()
{
return $this->checkHyvaTheme();
}
}