Files
magento2/app/code/Magento/GiftMessage/Setup/Patch/Data/AddGiftMessageAttributes.php

146 lines
4.8 KiB
PHP

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\GiftMessage\Setup\Patch\Data;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Quote\Setup\QuoteSetupFactory;
use Magento\Sales\Setup\SalesSetupFactory;
use Magento\Framework\App\ResourceConnection;
use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\Patch\PatchVersionInterface;
class AddGiftMessageAttributes implements DataPatchInterface, PatchVersionInterface
{
/**
* @var \Magento\Framework\Setup\ModuleDataSetupInterface
*/
private $moduleDataSetup;
/**
* @var CategorySetupFactory
*/
private $categorySetupFactory;
/**
* @var QuoteSetupFactory
*/
private $quoteSetupFactory;
/**
* @var SalesSetupFactory
*/
private $salesSetupFactory;
/**
* AddGiftMessageAttributes constructor.
* @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
* @param CategorySetupFactory $categorySetupFactory
* @param QuoteSetupFactory $quoteSetupFactory
* @param SalesSetupFactory $salesSetupFactory
*/
public function __construct(
\Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup,
CategorySetupFactory $categorySetupFactory,
QuoteSetupFactory $quoteSetupFactory,
SalesSetupFactory $salesSetupFactory
) {
$this->moduleDataSetup = $moduleDataSetup;
$this->categorySetupFactory = $categorySetupFactory;
$this->quoteSetupFactory = $quoteSetupFactory;
$this->salesSetupFactory = $salesSetupFactory;
}
/**
* {@inheritdoc}
*/
public function apply()
{
/**
* Add 'gift_message_id' attributes for entities
*/
$options = ['type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, 'visible' => false, 'required' => false];
$entities = ['quote', 'quote_address', 'quote_item', 'quote_address_item'];
/** @var \Magento\Quote\Setup\QuoteSetup $quoteSetup */
$quoteSetup = $this->quoteSetupFactory->create(['setup' => $this->moduleDataSetup]);
foreach ($entities as $entity) {
$quoteSetup->addAttribute($entity, 'gift_message_id', $options);
}
/** @var \Magento\Sales\Setup\SalesSetup $salesSetup */
$salesSetup = $this->salesSetupFactory->create(['setup' => $this->moduleDataSetup]);
$salesSetup->addAttribute('order', 'gift_message_id', $options);
$salesSetup->addAttribute('order_item', 'gift_message_id', $options);
/**
* Add 'gift_message_available' attributes for entities
*/
$salesSetup->addAttribute('order_item', 'gift_message_available', $options);
/** @var \Magento\Catalog\Setup\CategorySetup $catalogSetup */
$catalogSetup = $this->categorySetupFactory->create(['setup' => $this->moduleDataSetup]);
$catalogSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'gift_message_available',
[
'group' => 'Gift Options',
'backend' => \Magento\Catalog\Model\Product\Attribute\Backend\Boolean::class,
'frontend' => '',
'label' => 'Allow Gift Message',
'input' => 'select',
'class' => '',
'source' => \Magento\Catalog\Model\Product\Attribute\Source\Boolean::class,
'global' => true,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'apply_to' => '',
'input_renderer' => \Magento\GiftMessage\Block\Adminhtml\Product\Helper\Form\Config::class,
'visible_on_front' => false,
'is_used_in_grid' => true,
'is_visible_in_grid' => false,
'is_filterable_in_grid' => false,
]
);
$groupName = 'Autosettings';
$entityTypeId = $catalogSetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
$attributeSetId = $catalogSetup->getAttributeSetId($entityTypeId, 'Default');
$attribute = $catalogSetup->getAttribute($entityTypeId, 'gift_message_available');
if ($attribute) {
$catalogSetup->addAttributeToGroup(
$entityTypeId,
$attributeSetId,
$groupName,
$attribute['attribute_id'],
60
);
}
}
/**
* {@inheritdoc}
*/
public static function getDependencies()
{
return [];
}
/**
* {@inheritdoc}
*/
public static function getVersion()
{
return '2.0.0';
}
/**
* {@inheritdoc}
*/
public function getAliases()
{
return [];
}
}