Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/Ecombricks/Inventory/Setup/ModuleDataSetupTrait.php
<?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;
    }
    
}

Spamworldpro Mini