![]() 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/cartforge.co/app/code/Xtento/StockImport/Console/Command/ |
<?php /** * Product: Xtento_StockImport * ID: u66QkJ5rBwmimhUzUElhIKqqWRvsbhC3WLqSMk5AjmQ= * Last Modified: 2019-11-21T14:50:24+00:00 * File: app/code/Xtento/StockImport/Console/Command/ConfigImportCommand.php * Copyright: Copyright (c) XTENTO GmbH & Co. KG <[email protected]> / All rights reserved. */ namespace Xtento\StockImport\Console\Command; use Magento\Framework\App\State as AppState; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class ConfigImportCommand extends Command { /** * @var AppState */ protected $appState; /** * @var \Xtento\StockImport\Helper\Tools */ protected $toolsHelper; /** * ConfigImportCommand constructor. * * @param AppState $appState * @param \Xtento\StockImport\Helper\Tools $toolsHelper */ public function __construct( AppState $appState, \Xtento\StockImport\Helper\Tools $toolsHelper ) { $this->appState = $appState; $this->toolsHelper = $toolsHelper; parent::__construct(); } protected function configure() { $this->setName('xtento:stockimport:config:import') ->setDescription('Import "XTENTO stock import module" configuration from JSON file (functionality in admin: Stock Import > Tools)') ->setDefinition( [ new InputArgument( 'file', InputArgument::REQUIRED, 'File to read settings from. Example: /tmp/settings.json' ), new InputOption( 'updateByName', '-u', InputOption::VALUE_NONE, 'Add this parameter to update existing profiles if the profile/source name matches' ) ] ); } protected function execute(InputInterface $input, OutputInterface $output) { try { $this->appState->setAreaCode('adminhtml'); } catch (\Magento\Framework\Exception\LocalizedException $e) { // intentionally left empty } echo(sprintf("[Debug] App Area: %s\n", $this->appState->getAreaCode())); // Required to avoid "area code not set" error $inputFile = $input->getArgument('file'); $updateByName = $input->getOption('updateByName'); // Counters $addedCounter = ['profiles' => 0, 'sources' => 0]; $updatedCounter = ['profiles' => 0, 'sources' => 0]; $errorMessage = ""; // Load JSON settings $jsonData = file_get_contents($inputFile); if (empty($jsonData)) { $output->writeln(sprintf("<error>Could not read file %s or file is empty</error>", $inputFile)); return \Magento\Framework\Console\Cli::RETURN_FAILURE; } if (!$this->toolsHelper->importSettingsFromJson($jsonData, $addedCounter, $updatedCounter, $updateByName, $errorMessage)) { $output->writeln(sprintf("<error>Error while importing settings: %s</error>", $errorMessage)); return \Magento\Framework\Console\Cli::RETURN_FAILURE; } $output->writeln(sprintf(__('<info>%1 profiles have been added, %2 profiles have been updated, %3 sources have been added, %4 sources have been updated.<info>', $addedCounter['profiles'], $updatedCounter['profiles'], $addedCounter['sources'], $updatedCounter['sources']))); return \Magento\Framework\Console\Cli::RETURN_SUCCESS; } }