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 / dev2.destoffenstraat.com / app / code / Mirasvit / Report / Ui /
Filename/home/dev2.destoffenstraat.com/app/code/Mirasvit/Report/Ui/SchemaDataProvider.php
Size3.66 kb
Permissionrwxrwxrwx
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified15-Oct-2024 20:30
Last accessed23-Aug-2025 02:07
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\Ui;

use Magento\Backend\Block\Template;
use Magento\Framework\Profiler;
use Mirasvit\Core\Service\CspService;
use Mirasvit\ReportApi\Api\SchemaInterface;

class SchemaDataProvider extends Template
{
/**
* @var SchemaInterface
*/
private $schema;

/**
* @var \Magento\Framework\Serialize\Serializer\Json
*/
private $serializer;

/**
* SchemaDataProvider constructor.
* @param SchemaInterface $schema
* @param Template\Context $context
*/
public function __construct(
SchemaInterface $schema,
\Magento\Framework\Serialize\Serializer\Json $serializer,
Template\Context $context
) {
$this->schema = $schema;
$this->serializer = $serializer;

parent::__construct($context);
}

/**
* @return array
*/
public function getConfigData()
{
Profiler::start(__METHOD__);

$result = [
'tables' => [],
'columns' => [],
];

foreach ($this->schema->getTables() as $table) {
$result['tables'][$table->getName()] = [
'identifier' => $table->getName(),
'label' => $table->getLabel() ? $table->getLabel() : $table->getName(),
'internal' => $table->getLabel() ? false : true,
];

foreach ($table->getColumns() as $column) {
$group = '';
foreach ($column->getFields() as $field) {
$group .= $field->getName();
}

$result['columns'][$column->getIdentifier()] = [
'label' => $column->getLabel(),
'group' => $group,
'identifier' => $column->getIdentifier(),
'internal' => $column->isInternal(),
'table' => $column->getTable()->getName(),
'type' => $column->getType()->getType(),
'filterType' => $column->getType()->getJsFilterType(),
'aggregator' => $column->getAggregator()->getType(),
'options' => [],
];

try {
$result['columns'][$column->getIdentifier()]['options'] = method_exists($column->getType(), 'getOptions')
&& strpos($column->getName(), "applied_rule") === false // fix for timeout when store has a lot of coupons
? $column->getType()->getOptions()
: [];
} catch (\Exception $e) {
}
}
}

Profiler::stop(__METHOD__);

return $result;
}

/**
* @return string
*/
public function toHtml()
{
try {
$json = $this->serializer->serialize($this->getConfigData());
} catch (\Exception $e) {
return "<div class='message message-error'>" . $e->getMessage() . "</div>";
}

$nonce = CspService::getNonce();
$script = $nonce ? '<script nonce="' . $this->escapeHtml($nonce) . '">' : '<script>';

return $script . "var schemaDataProvider = $json</script>";
}
}