![]() 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/Ecombricks/Inventory/Setup/ |
<?php /** * Copyright © eComBricks. All rights reserved. * See LICENSE.txt for license details. */ namespace Ecombricks\Inventory\Setup; /** * Module data setup trait */ trait ModuleDataSetupTrait { /** * Table mapper * * @var \Magento\Framework\Module\TableMapperInterface */ protected $tableMapper; /** * Constructor * * @param \Ecombricks\Framework\App\ResourceConnection\TableMapperInterface $tableMapper * @return void */ public function __construct(\Ecombricks\Framework\App\ResourceConnection\TableMapperInterface $tableMapper) { $this->tableMapper = $tableMapper; } /** * Get primary column * * @param string $tableName * @return array */ protected function getPrimaryColumn($tableName) { $primaryColumn = null; foreach ($this->getColumns($tableName) as $column) { $options =& $column['options']; if (!isset($options['primary'])) { continue; } if (array_key_exists('identity', $options)) { unset($options['identity']); } if (array_key_exists('primary', $options)) { unset($options['primary']); } $primaryColumn = $column; break; } return $primaryColumn; } /** * Create source replica table data * * @param string $tableName * @param string $replicaTableName * @param array $sourceColumnConfig * @return $this */ protected function createSourceReplicaTableData($tableName, $replicaTableName, $sourceColumnConfig = []) { $this->tableMapper->setIsEnabled(false); $sourceColumnDefault = isset($sourceColumnConfig['default']) ? $sourceColumnConfig['default'] : null; $connection = $this->getConnection(); $columns = []; $replicaColumns = []; foreach ($this->getColumns($tableName) as $column) { $columnName = $column['name']; $columns[] = $columnName; $replicaColumns[] = $columnName; } $sourceColumnName = \Magento\InventoryApi\Api\Data\SourceInterface::SOURCE_CODE; $replicaColumns[] = $sourceColumnName; $select = $connection->select() ->from($this->getTable($tableName), $columns) ->columns([$sourceColumnName => $sourceColumnDefault]); $connection->query( $connection->insertFromSelect( $select, $this->getTable($replicaTableName), $replicaColumns, \Magento\Framework\DB\Adapter\AdapterInterface::INSERT_ON_DUPLICATE ) ); $this->tableMapper->setIsEnabled(true); return $this; } /** * Create source table data * * @param string $tableName * @param string $sourceTableName * @param array $sourceColumnConfig * @return $this */ protected function createSourceTableData($tableName, $sourceTableName, $sourceColumnConfig = []) { $connection = $this->getConnection(); $primaryColumn = $this->getPrimaryColumn($tableName); if (!$primaryColumn) { return $this; } $sourceColumnName = \Magento\InventoryApi\Api\Data\SourceInterface::SOURCE_CODE; $sourceColumnDefault = isset($sourceColumnConfig['default']) ? $sourceColumnConfig['default'] : null; $select = $connection->select() ->from($this->getTable($tableName), [$primaryColumn['name']]) ->columns([$sourceColumnName => $sourceColumnDefault]); $connection->query( $connection->insertFromSelect( $select, $this->getTable($sourceTableName), [$primaryColumn['name'], $sourceColumnName], \Magento\Framework\DB\Adapter\AdapterInterface::INSERT_ON_DUPLICATE ) ); return $this; } }