File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/module-variable/Model/Variable.php
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Variable\Model;
/**
* Custom variable model
*
* @method string getCode()
* @method \Magento\Variable\Model\Variable setCode(string $value)
* @method string getName()
* @method \Magento\Variable\Model\Variable setName(string $value)
*
* @api
* @since 100.0.2
*/
class Variable extends \Magento\Framework\Model\AbstractModel
{
const TYPE_TEXT = 'text';
const TYPE_HTML = 'html';
/**
* @var int
*/
protected $_storeId = 0;
/**
* @var \Magento\Framework\Escaper
*/
protected $_escaper = null;
/**
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Escaper $escaper
* @param \Magento\Variable\Model\ResourceModel\Variable $resource
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
* @param array $data
*/
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Escaper $escaper,
\Magento\Variable\Model\ResourceModel\Variable $resource,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
$this->_escaper = $escaper;
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
}
/**
* Internal Constructor
*
* @return void
*/
protected function _construct()
{
parent::_construct();
$this->_init(\Magento\Variable\Model\ResourceModel\Variable::class);
}
/**
* Setter
*
* @param integer $storeId
* @return $this
* @codeCoverageIgnore
*/
public function setStoreId($storeId)
{
$this->_storeId = $storeId;
return $this;
}
/**
* Getter
*
* @return integer
* @codeCoverageIgnore
*/
public function getStoreId()
{
return $this->_storeId;
}
/**
* Load variable by code
*
* @param string $code
* @return $this
* @codeCoverageIgnore
*/
public function loadByCode($code)
{
$this->getResource()->loadByCode($this, $code);
return $this;
}
/**
* Return variable value depend on given type
*
* @param string $type
* @return string
*/
public function getValue($type = null)
{
if ($type === null) {
$type = self::TYPE_HTML;
}
if ($type == self::TYPE_TEXT || !strlen((string)$this->getData('html_value'))) {
$value = $this->getData('plain_value');
//escape html if type is html, but html value is not defined
if ($type == self::TYPE_HTML) {
$value = nl2br($this->_escaper->escapeHtml($value));
}
return $value;
}
return $this->getData('html_value');
}
/**
* Validation of object data. Checking for unique variable code
*
* @return \Magento\Framework\Phrase|bool
*/
public function validate()
{
if ($this->getCode() && $this->getName()) {
$variable = $this->getResource()->getVariableByCode($this->getCode());
if (!empty($variable) && $variable['variable_id'] != $this->getId()) {
return __('Variable Code must be unique.');
}
return true;
}
return __('Validation has failed.');
}
/**
* Retrieve variables option array
* @todo: extract method as separate class
* @param bool $withGroup
* @return array
*/
public function getVariablesOptionArray($withGroup = false)
{
/* @var $collection \Magento\Variable\Model\ResourceModel\Variable\Collection */
$collection = $this->getCollection();
$variables = [];
foreach ($collection->toOptionArray() as $variable) {
$variables[] = [
'value' => '{{customVar code=' . $variable['value'] . '}}',
'label' => __('%1', $this->_escaper->escapeHtml($variable['label'])),
];
}
if ($withGroup && $variables) {
$variables = [['label' => __('Custom Variables'), 'value' => $variables]];
}
return $variables;
}
}