File: /var/www/vhost/disk-apps/magento.bikenow.co/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\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\Json\Helper\Data as JsonHelper;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\UrlInterface;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
/**
* 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 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(\Magento\Backend\App\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);
}
/**
* @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(\Magento\Framework\App\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');
}
}