![]() 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/mirasvit/module-report/src/Report/Controller/Adminhtml/Api/ |
<?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.27 * @copyright Copyright (C) 2024 Mirasvit (https://mirasvit.com/) */ namespace Mirasvit\Report\Controller\Adminhtml\Api; use Magento\Backend\App\Action\Context; use Magento\Framework\App\Response\Http\FileFactory; use Mirasvit\Report\Model\Export\ConvertToCsv; use Mirasvit\Report\Model\Export\ConvertToXml; use Mirasvit\ReportApi\Api\RequestBuilderInterface; class Export extends AbstractApi { /** * @var FileFactory */ private $fileFactory; /** * @var ConvertToXml */ private $convertToXml; /** * @var ConvertToCsv */ private $convertToCsv; /** * @var RequestBuilderInterface */ private $requestBuilder; /** * Export constructor. * @param FileFactory $fileFactory * @param ConvertToXml $convertToXml * @param ConvertToCsv $convertToCsv * @param RequestBuilderInterface $requestBuilder * @param Context $context */ public function __construct( FileFactory $fileFactory, ConvertToXml $convertToXml, ConvertToCsv $convertToCsv, RequestBuilderInterface $requestBuilder, \Magento\Framework\Serialize\Serializer\Json $serializer, Context $context ) { $this->fileFactory = $fileFactory; $this->convertToXml = $convertToXml; $this->convertToCsv = $convertToCsv; $this->requestBuilder = $requestBuilder; parent::__construct($context, $serializer); } /** * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface * @throws \Exception */ public function execute() { $type = $this->getRequest()->getParam('type'); $response = $this->processRequest(); if ($type === 'xml') { $content = $this->convertToXml->getXmlFile($response); } else { $content = $this->convertToCsv->getCsvFile($response); } return $this->fileFactory->create('export.' . $type, $content, 'var'); } /** * @return \Mirasvit\ReportApi\Api\RequestInterface */ private function processRequest() { $r = $this->getRequest(); $request = $this->requestBuilder->create(); $request->setTable($r->getParam('table')) ->setDimensions($r->getParam('dimensions')); foreach ($r->getParam('dimensions', []) as $c) { $request->addColumn($c); } foreach ($r->getParam('columns', []) as $c) { $request->addColumn($c); } foreach ($r->getParam('filters', []) as $filter) { if ($filter['conditionType'] == 'like') { $filter['value'] = '%' . $filter['value'] . '%'; } $request->addFilter($filter['column'], $filter['value'], $filter['conditionType']); } $request->setIdentifier($r->getParam('identifier')); foreach ($r->getParam('sortOrders', []) as $sortOrder) { $request->addSortOrder($sortOrder['column'], $sortOrder['direction']); } return $request; } }