Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Cli/Command/AddOn/Export.php
<?php

namespace XF\Cli\Command\AddOn;

use
Symfony\Component\Console\Command\Command;
use
Symfony\Component\Console\Helper\ProgressBar;
use
Symfony\Component\Console\Input\InputArgument;
use
Symfony\Component\Console\Input\InputInterface;
use
Symfony\Component\Console\Output\OutputInterface;
use
XF\Cli\Command\AddOnActionTrait;

use function
count;

class
Export extends Command
{
    use
AddOnActionTrait;

    protected function
configure()
    {
       
$this
           
->setName('xf-addon:export')
            ->
setDescription('Exports the XML files for an add-on')
            ->
addArgument(
               
'id',
               
InputArgument::REQUIRED,
               
'Add-On ID'
           
);
    }

    protected function
execute(InputInterface $input, OutputInterface $output)
    {
       
$id = $input->getArgument('id');

       
$addOn = $this->checkEditableAddOn($id, $error);
        if (!
$addOn && $id == 'XF')
        {
           
$addOn = new \XF\AddOn\AddOn(
                \
XF::em()->find('XF:AddOn', 'XF'),
                \
XF::app()->addOnManager()
            );
        }
        if (!
$addOn)
        {
           
$output->writeln('<error>' . $error . '</error>');
            return
1;
        }

       
$output->writeln(["", "Exporting data for {$addOn->title} to {$addOn->getDataDirectory()}."]);

       
/** @var \XF\Service\AddOn\Exporter $exporterService */
       
$exporterService = \XF::app()->service('XF:AddOn\Exporter', $addOn);

       
$containers = $exporterService->getContainers();

        if (
$containers)
        {
           
$progress = new ProgressBar($output, count($containers));
        }
        else
        {
           
$progress = null;
        }

        foreach (
$containers AS $containerName)
        {
            if (
$progress)
            {
               
$progress->setMessage("Writing $containerName.xml");
               
$progress->advance();
            }

           
$exporterService->export($containerName);
        }

       
$output->writeln(["", "Written successfully."]);

        return
0;
    }
}