![]() 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/wyomind/framework/Helper/ |
<?php /** * Copyright © 2020 Wyomind. All rights reserved. * See LICENSE.txt for license details. */ namespace Wyomind\Framework\Helper; class History extends \Magento\Framework\App\Helper\AbstractHelper { const VERSION_TABLE_SUFFIX = '_version_history'; const ACTION_TABLE_SUFFIX = '_action_history'; /** * @var \Wyomind\Framework\Model\ResourceModel\VersionHistory */ protected $versionHistoryResource; /** * @param \Magento\Framework\App\Helper\Context $context * @param \Wyomind\Framework\Model\ResourceModel\VersionHistory $versionHistoryResource */ public function __construct( \Magento\Framework\App\Helper\Context $context, \Wyomind\Framework\Model\ResourceModel\VersionHistory $versionHistoryResource ) { $this->versionHistoryResource = $versionHistoryResource; parent::__construct($context); } /** * Version history table * @param \Magento\Framework\Setup\SchemaSetupInterface $installer * @param string $entityTableName */ public function createVersionHistoryTable($installer, $entityTableName) { $tableName = $entityTableName . self::VERSION_TABLE_SUFFIX; if (!$installer->tableExists($tableName)) { $table = $installer->getConnection() ->newTable($installer->getTable($tableName)) ->addColumn( 'id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['primary' => true, 'identity' => true, 'unsigned' => true, 'nullable' => false], 'Id' ) ->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false], 'Entity ID (primary key)' ) ->addColumn( 'version_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false], 'Version number' ) ->addColumn( 'username', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 50, ['nullable' => true, 'default' => null], 'Action author' ) ->addColumn('content', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT) ->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Create date' ) ->addIndex( $installer->getIdxName($tableName, ['id']), ['id'] ) ->addIndex( $installer->getIdxName($tableName, ['entity_id']), ['entity_id'] ) ->addIndex( $installer->getIdxName($tableName, ['version_id']), ['version_id'] ) ->addIndex( $installer->getIdxName($tableName, ['username']), ['username'] ) ->setComment($entityTableName . ' version history'); $installer->getConnection()->createTable($table); } } /** * Action history table * @param \Magento\Framework\Setup\SchemaSetupInterface $installer * @param string $entityTableName */ public function createActionHistoryTable($installer, $entityTableName) { $tableName = $entityTableName . self::ACTION_TABLE_SUFFIX; if (!$installer->tableExists($tableName)) { $table = $installer->getConnection() ->newTable($installer->getTable($tableName)) ->addColumn( 'action_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['primary' => true, 'identity' => true, 'unsigned' => true, 'nullable' => false], 'Id' ) ->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false], 'Entity ID (primary key)' ) ->addColumn( 'version_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false], 'Version' ) ->addColumn( 'action_type', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 100, ['nullable' => true, 'default' => null], 'create / update / delete' ) ->addColumn( 'origin', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['nullable' => true, 'default' => null], 'Where the action has been triggered: 1 = Backend, 2 = Cron, 3 = CLI, 4 = API' ) ->addColumn( 'username', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 60, ['nullable' => true, 'default' => null], 'Who triggered the action' ) ->addColumn( 'result', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 20, ['nullable' => true, 'default' => null], 'Success / Failed / Error / etc' ) ->addColumn('message', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT) ->addColumn('details', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT) ->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Create date' ) ->addIndex( $installer->getIdxName($tableName, ['action_id']), ['action_id'] ) ->addIndex( $installer->getIdxName($tableName, ['entity_id']), ['entity_id'] ) ->addIndex( $installer->getIdxName($tableName, ['version_id']), ['version_id'] ) ->addIndex( $installer->getIdxName($tableName, ['action_type']), ['action_type'] ) ->addIndex( $installer->getIdxName($tableName, ['origin']), ['origin'] ) ->addIndex( $installer->getIdxName($tableName, ['username']), ['username'] ) ->addIndex( $installer->getIdxName($tableName, ['result']), ['result'] ) ->setComment($entityTableName . ' action history'); $installer->getConnection()->createTable($table); } } /** * Get latest version id registered for a module/entity_id * @param string $entityTableName * @param string $entityId * @return int|string */ public function getLatestVersion($entityTableName, $entityId) { $version = 0; $tableName = $entityTableName . self::VERSION_TABLE_SUFFIX; $latestVersion = $this->versionHistoryResource->getLatestVersion($tableName, $entityId); if (false !== $latestVersion) { $version = $latestVersion['version_id']; } return $version; } public function getOriginToString($origin) { switch ($origin) { case \Wyomind\Framework\Api\Data\ActionHistoryInterface::ORIGIN_CRON: $originLabel = __('Cron'); break; case \Wyomind\Framework\Api\Data\ActionHistoryInterface::ORIGIN_BACKEND: $originLabel = __('Backend'); break; case \Wyomind\Framework\Api\Data\ActionHistoryInterface::ORIGIN_CLI: $originLabel = __('CLI'); break; case \Wyomind\Framework\Api\Data\ActionHistoryInterface::ORIGIN_API: $originLabel = __('API'); break; default: $originLabel = __('Unknown'); break; } return $originLabel; } }