![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/amasty/base/Setup/ |
<?php declare(strict_types=1); /** * @author Amasty Team * @copyright Copyright (c) Amasty (https://www.amasty.com) * @package Magento 2 Base Package */ namespace Amasty\Base\Setup; use Magento\Framework\Module\Manager; use Magento\Framework\Module\Status; use Magento\Framework\DB\Ddl\Table; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; /** * @codeCoverageIgnore */ class RecurringData implements InstallDataInterface { public const NOTIFICATION_TABLE = 'adminnotification_inbox'; public const IS_AMASTY_COLUMN = 'is_amasty'; public const EXPIRATION_COLUMN = 'expiration_date'; public const IMAGE_URL_COLUMN = 'image_url'; /** * @var Manager */ private $moduleManager; /** * @var Status */ private $moduleStatus; /** * @var array */ private $modulesToDisable = []; public function __construct( Manager $moduleManager, Status $moduleStatus, array $modulesToDisable = [] ) { $this->moduleManager = $moduleManager; $this->moduleStatus = $moduleStatus; $this->modulesToDisable = $this->initModulesToDisable($modulesToDisable); } public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { if (!empty($this->modulesToDisable)) { $this->moduleStatus->setIsEnabled(false, $this->modulesToDisable); } $setup->startSetup(); $this->processNotificationTable($setup); $setup->endSetup(); } /** * Added through recurring because db_schema won't uninstall * our columns when AdminNotification module is disabled. * Consider refactoring to store amasty columns data in separate table. */ private function processNotificationTable(ModuleDataSetupInterface $setup): void { if ($setup->getConnection()->isTableExists($setup->getTable(self::NOTIFICATION_TABLE))) { if (!$this->notificationTableColumnExist($setup, self::IS_AMASTY_COLUMN)) { $this->addIsAmastyField($setup); } if (!$this->notificationTableColumnExist($setup, self::EXPIRATION_COLUMN)) { $this->addExpireField($setup); } if (!$this->notificationTableColumnExist($setup, self::IMAGE_URL_COLUMN)) { $this->addImageUrlField($setup); } } } private function initModulesToDisable(array $modulesToDisable): array { $result = []; foreach (array_unique($modulesToDisable) as $module) { if ($this->moduleManager->isEnabled($module)) { $result[] = $module; } } return $result; } private function notificationTableColumnExist(ModuleDataSetupInterface $setup, string $column): bool { return (bool)$setup->getConnection()->tableColumnExists( $setup->getTable(self::NOTIFICATION_TABLE), $column ); } private function addIsAmastyField(ModuleDataSetupInterface $setup): void { $setup->getConnection()->addColumn( $setup->getTable(self::NOTIFICATION_TABLE), self::IS_AMASTY_COLUMN, [ 'type' => Table::TYPE_SMALLINT, 'nullable' => false, 'default' => 0, 'comment' => 'Is Amasty Notification' ] ); } private function addExpireField(ModuleDataSetupInterface $setup): void { $setup->getConnection()->addColumn( $setup->getTable(self::NOTIFICATION_TABLE), self::EXPIRATION_COLUMN, [ 'type' => Table::TYPE_DATETIME, 'nullable' => true, 'default' => null, 'comment' => 'Expiration Date' ] ); } private function addImageUrlField(ModuleDataSetupInterface $setup): void { $setup->getConnection()->addColumn( $setup->getTable(self::NOTIFICATION_TABLE), self::IMAGE_URL_COLUMN, [ 'type' => Table::TYPE_TEXT, 'nullable' => true, 'default' => null, 'comment' => 'Image Url' ] ); } }