mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
298 lines
6.4 KiB
PHP
298 lines
6.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Bundle\Model;
|
|
|
|
/**
|
|
* Bundle Option Model
|
|
*
|
|
* @api
|
|
* @method int getParentId()
|
|
* @method null|\Magento\Catalog\Model\Product[] getSelections()
|
|
* @method Option setParentId(int $value)
|
|
* @since 100.0.2
|
|
*/
|
|
class Option extends \Magento\Framework\Model\AbstractExtensibleModel implements
|
|
\Magento\Bundle\Api\Data\OptionInterface
|
|
{
|
|
/**#@+
|
|
* Constants
|
|
*/
|
|
const KEY_OPTION_ID = 'option_id';
|
|
const KEY_TITLE = 'title';
|
|
const KEY_REQUIRED = 'required';
|
|
const KEY_TYPE = 'type';
|
|
const KEY_POSITION = 'position';
|
|
const KEY_SKU = 'sku';
|
|
const KEY_PRODUCT_LINKS = 'product_links';
|
|
/**#@-*/
|
|
|
|
/**#@-*/
|
|
protected $defaultSelection = null;
|
|
|
|
/**
|
|
* Initialize resource model
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function _construct()
|
|
{
|
|
$this->_init(\Magento\Bundle\Model\ResourceModel\Option::class);
|
|
parent::_construct();
|
|
}
|
|
|
|
/**
|
|
* Add selection to option
|
|
*
|
|
* @param \Magento\Catalog\Model\Product $selection
|
|
* @return void
|
|
*/
|
|
public function addSelection(\Magento\Catalog\Model\Product $selection)
|
|
{
|
|
if (!$this->hasData('selections')) {
|
|
$this->setData('selections', []);
|
|
}
|
|
$selections = $this->getData('selections');
|
|
$selections[] = $selection;
|
|
$this->setSelections($selections);
|
|
}
|
|
|
|
/**
|
|
* Check Is Saleable Option
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isSaleable()
|
|
{
|
|
$saleable = false;
|
|
$selections = $this->getSelections();
|
|
if ($selections) {
|
|
foreach ($selections as $selection) {
|
|
if ($selection->isSaleable()) {
|
|
$saleable = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return $saleable;
|
|
}
|
|
|
|
/**
|
|
* Retrieve default Selection object
|
|
*
|
|
* @return \Magento\Catalog\Model\Product|null
|
|
*/
|
|
public function getDefaultSelection()
|
|
{
|
|
if (!$this->defaultSelection && $this->getSelections()) {
|
|
foreach ($this->getSelections() as $selection) {
|
|
if ($selection->getIsDefault()) {
|
|
$this->defaultSelection = $selection;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return $this->defaultSelection;
|
|
}
|
|
|
|
/**
|
|
* Check is multi Option selection
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isMultiSelection()
|
|
{
|
|
return $this->getType() == 'checkbox' || $this->getType() == 'multi';
|
|
}
|
|
|
|
/**
|
|
* Retrieve options searchable data
|
|
*
|
|
* @param int $productId
|
|
* @param int $storeId
|
|
* @return array
|
|
*/
|
|
public function getSearchableData($productId, $storeId)
|
|
{
|
|
return $this->_getResource()->getSearchableData($productId, $storeId);
|
|
}
|
|
|
|
/**
|
|
* Return selection by it's id
|
|
*
|
|
* @param int $selectionId
|
|
* @return \Magento\Catalog\Model\Product|null
|
|
*/
|
|
public function getSelectionById($selectionId)
|
|
{
|
|
$foundSelection = null;
|
|
foreach ($this->getSelections() as $selection) {
|
|
if ($selection->getSelectionId() == $selectionId) {
|
|
$foundSelection = $selection;
|
|
break;
|
|
}
|
|
}
|
|
return $foundSelection;
|
|
}
|
|
|
|
//@codeCoverageIgnoreStart
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getOptionId()
|
|
{
|
|
return $this->getData(self::KEY_OPTION_ID);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getTitle()
|
|
{
|
|
return $this->getData(self::KEY_TITLE);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getRequired()
|
|
{
|
|
return $this->getData(self::KEY_REQUIRED);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getType()
|
|
{
|
|
return $this->getData(self::KEY_TYPE);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getPosition()
|
|
{
|
|
return $this->getData(self::KEY_POSITION);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getSku()
|
|
{
|
|
return $this->getData(self::KEY_SKU);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getProductLinks()
|
|
{
|
|
return $this->getData(self::KEY_PRODUCT_LINKS);
|
|
}
|
|
|
|
/**
|
|
* Set option id
|
|
*
|
|
* @param int $optionId
|
|
* @return $this
|
|
*/
|
|
public function setOptionId($optionId)
|
|
{
|
|
return $this->setData(self::KEY_OPTION_ID, $optionId);
|
|
}
|
|
|
|
/**
|
|
* Set option title
|
|
*
|
|
* @param string $title
|
|
* @return $this
|
|
*/
|
|
public function setTitle($title)
|
|
{
|
|
return $this->setData(self::KEY_TITLE, $title);
|
|
}
|
|
|
|
/**
|
|
* Set whether option is required
|
|
*
|
|
* @param bool $required
|
|
* @return $this
|
|
*/
|
|
public function setRequired($required)
|
|
{
|
|
return $this->setData(self::KEY_REQUIRED, $required);
|
|
}
|
|
|
|
/**
|
|
* Set input type
|
|
*
|
|
* @param string $type
|
|
* @return $this
|
|
*/
|
|
public function setType($type)
|
|
{
|
|
return $this->setData(self::KEY_TYPE, $type);
|
|
}
|
|
|
|
/**
|
|
* Set option position
|
|
*
|
|
* @param int $position
|
|
* @return $this
|
|
*/
|
|
public function setPosition($position)
|
|
{
|
|
return $this->setData(self::KEY_POSITION, $position);
|
|
}
|
|
|
|
/**
|
|
* Set product sku
|
|
*
|
|
* @param string $sku
|
|
* @return $this
|
|
*/
|
|
public function setSku($sku)
|
|
{
|
|
return $this->setData(self::KEY_SKU, $sku);
|
|
}
|
|
|
|
/**
|
|
* Set product links
|
|
*
|
|
* @param \Magento\Bundle\Api\Data\LinkInterface[] $productLinks
|
|
* @return $this
|
|
*/
|
|
public function setProductLinks(array $productLinks = null)
|
|
{
|
|
return $this->setData(self::KEY_PRODUCT_LINKS, $productLinks);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*
|
|
* @return \Magento\Bundle\Api\Data\OptionExtensionInterface|null
|
|
*/
|
|
public function getExtensionAttributes()
|
|
{
|
|
return $this->_getExtensionAttributes();
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*
|
|
* @param \Magento\Bundle\Api\Data\OptionExtensionInterface $extensionAttributes
|
|
* @return $this
|
|
*/
|
|
public function setExtensionAttributes(\Magento\Bundle\Api\Data\OptionExtensionInterface $extensionAttributes)
|
|
{
|
|
return $this->_setExtensionAttributes($extensionAttributes);
|
|
}
|
|
|
|
//@codeCoverageIgnoreEnd
|
|
}
|