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 / Console / Command /
Filename/home/a/home/dev2.destoffenstraat.com/app/code/Mirasvit/Report/Console/Command/InfoCommand.php
Size3.79 kb
Permissionrwxrwxrwx
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified15-Oct-2024 20:30
Last accessed23-Aug-2025 06:18
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\Console\Command;

use Magento\Framework\App\State;
use Mirasvit\ReportApi\Api\SchemaInterface;
use Mirasvit\ReportApi\Service\SelectServiceFactory;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class InfoCommand extends Command
{
/**
* @var SchemaInterface
*/
private $provider;

/**
* @var SelectServiceFactory
*/
private $selectServiceFactory;

/**
* @var State
*/
private $state;

/**
* InfoCommand constructor.
* @param State $state
* @param SchemaInterface $provider
* @param SelectServiceFactory $selectServiceFactory
*/
public function __construct(
State $state,
SchemaInterface $provider,
SelectServiceFactory $selectServiceFactory
) {
$this->state = $state;
$this->provider = $provider;
$this->selectServiceFactory = $selectServiceFactory;

parent::__construct();
}


/**
* {@inheritdoc}
*/
protected function configure()
{
$this->setName('mirasvit:report:info')
->setDescription('Returns current schema')
->setDefinition([]);

parent::configure();
}

/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->state->setAreaCode(\Magento\Framework\App\Area::AREA_GLOBAL);
$selectService = $this->selectServiceFactory->create();
$this->provider->getTables();

// foreach ($this->provider->getRelations() as $idx => $relation) {
// $output->writeln("<info>Rel #$idx:</info> $relation");
// }

$output->writeln("\n\n\n\n");

foreach ($this->provider->getTables() as $leftTable) {
foreach ($this->provider->getTables() as $rightTable) {
if ($leftTable === $rightTable) {
continue;
}

$output->writeln("<info>{$leftTable->getName()} to {$rightTable->getName()}</info>");

$ts = microtime(true);
$relations = $selectService->joinWay($leftTable, $rightTable);
$output->writeln((string)round(microtime(true) - $ts, 4));
$tbl = $leftTable;
foreach ($relations as $idx => $relation) {
$output->writeln("\t$idx\t $tbl to " . $relation->getOppositeTable($tbl));
$tbl = $relation->getOppositeTable($tbl);
}
}
}

$output->writeln("\n\n\n\n");

foreach ($this->provider->getTables() as $leftTable) {
foreach ($this->provider->getTables() as $rightTable) {
try {
$type = $selectService->getRelationType($leftTable, $rightTable);
$output->write("{$leftTable->getName()} to {$rightTable->getName()} related as ");
$output->writeln("<info>$type</info>");
} catch (\Exception $e) {
$output->writeln("{$leftTable->getName()} to {$rightTable->getName()} <error>NOT RELATED</error>");
}
}
}

return 0;
}
}