123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\ConfigurableProduct\Model;
- class ConfigurableAttributeHandler
- {
- /**
- * Attribute collection factory
- *
- * @var \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory
- */
- protected $collectionFactory;
- /**
- * @param \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeColFactory
- */
- public function __construct(
- \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeColFactory
- ) {
- $this->collectionFactory = $attributeColFactory;
- }
- /**
- * Retrieve list of attributes applicable for configurable product
- *
- * @return \Magento\Catalog\Model\ResourceModel\Product\Attribute\Collection
- */
- public function getApplicableAttributes()
- {
- /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Attribute\Collection */
- $collection = $this->collectionFactory->create();
- return $collection->addFieldToFilter(
- 'frontend_input',
- 'select'
- )->addFieldToFilter(
- 'is_user_defined',
- 1
- )->addFieldToFilter(
- 'is_global',
- \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL
- );
- }
- /**
- * @param \Magento\Catalog\Api\Data\ProductAttributeInterface $attribute
- * @return bool
- */
- public function isAttributeApplicable($attribute)
- {
- $types = [
- \Magento\Catalog\Model\Product\Type::TYPE_SIMPLE,
- \Magento\Catalog\Model\Product\Type::TYPE_VIRTUAL,
- \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE,
- ];
- return !$attribute->getApplyTo() || count(array_diff($types, $attribute->getApplyTo())) === 0;
- }
- }
|