![]() 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/magento/module-developer/Console/Command/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Developer\Console\Command; 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; use Magento\Developer\Model\Tools\Formatter; use Magento\Framework\DomDocument\DomDocumentFactory; use Magento\Framework\XsltProcessor\XsltProcessorFactory; /** * Class XmlConverterCommand * Converts XML file using XSL style sheets */ class XmlConverterCommand extends Command { /** * XML file argument name constant */ const XML_FILE_ARGUMENT = 'xml-file'; /** * Processor argument constant */ const PROCESSOR_ARGUMENT = 'processor'; /** * Overwrite option constant */ const OVERWRITE_OPTION = 'overwrite'; /** * @var Formatter */ private $formatter; /** * @var DomDocumentFactory */ private $domFactory; /** * @var XsltProcessorFactory */ private $xsltProcessorFactory; /** * Inject dependencies * * @param Formatter $formatter * @param DomDocumentFactory $domFactory * @param XsltProcessorFactory $xsltProcessorFactory */ public function __construct( Formatter $formatter, DomDocumentFactory $domFactory, XsltProcessorFactory $xsltProcessorFactory ) { $this->formatter = $formatter; $this->domFactory = $domFactory; $this->xsltProcessorFactory = $xsltProcessorFactory; parent::__construct(); } /** * {@inheritdoc} */ protected function configure() { $this->setName('dev:xml:convert') ->setDescription('Converts XML file using XSL style sheets') ->setDefinition([ new InputArgument( self::XML_FILE_ARGUMENT, InputArgument::REQUIRED, 'Path to XML file that going to be transformed' ), new InputArgument( self::PROCESSOR_ARGUMENT, InputArgument::REQUIRED, 'Path to XSL style sheet that going to be applied to XML file' ), new InputOption( self::OVERWRITE_OPTION, '-o', InputOption::VALUE_NONE, 'Overwrite XML file' ), ]); parent::configure(); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { try { $domXml = $this->domFactory->create(); $domXsl = $this->domFactory->create(); $xsltProcessor = $this->xsltProcessorFactory->create(); $xmlFile = $input->getArgument(self::XML_FILE_ARGUMENT); $domXml->preserveWhiteSpace = true; $domXml->load($xmlFile); $domXsl->preserveWhiteSpace = true; $domXsl->load($input->getArgument(self::PROCESSOR_ARGUMENT)); $xsltProcessor->registerPHPFunctions(); $xsltProcessor->importStylesheet($domXsl); $transformedDoc = $xsltProcessor->transformToXml($domXml); $result = $this->formatter->format($transformedDoc); if ($input->getOption(self::OVERWRITE_OPTION)) { file_put_contents($input->getArgument(self::XML_FILE_ARGUMENT), $result); $output->writeln("<info>You saved converted XML into $xmlFile</info>"); } else { $output->write($result); } return \Magento\Framework\Console\Cli::RETURN_SUCCESS; } catch (\Exception $exception) { $errorMessage = $exception->getMessage(); $output->writeln("<error>$errorMessage</error>"); // we must have an exit code higher than zero to indicate something was wrong return \Magento\Framework\Console\Cli::RETURN_FAILURE; } } }