|
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 |
Size | 3.24 kb |
Permission | rwxrwxrwx |
Owner | root : root |
Create time | 21-Aug-2025 12:26 |
Last modified | 15-Oct-2024 20:30 |
Last accessed | 23-Aug-2025 00:55 |
Actions | edit | rename | delete | download (gzip) |
View | text | 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
];
}
}
/**
* 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
];
}
}