%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/internal/manager/ |
| Current File : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/internal/manager/reportmanager.php |
<?php
namespace Bitrix\Report\VisualConstructor\Internal\Manager;
use Bitrix\Report\VisualConstructor\BaseReportHandler;
use Bitrix\Report\VisualConstructor\Config\Common;
use Bitrix\Report\VisualConstructor\Handler\BaseReport;
use Bitrix\Report\VisualConstructor\Internal\Error\Error;
/**
* Class ReportManager
* @package Bitrix\Report\VisualConstructor\Internal\Manager
*/
class ReportManager extends Base
{
private static $reportsList = array();
private static $indices = array(
'categories' => array(),
'unit' => array(),
'dataType' => array(),
'reportClassName' => array()
);
private static $called = false;
/**
* @return string
*/
protected function getEventTypeKey()
{
return Common::EVENT_REPORT_COLLECT;
}
/**
* @return array|bool
*/
public function getReportList()
{
return $this->isCalled() ? self::$reportsList : false;
}
/**
* @return array|bool
*/
public function getIndices()
{
return $this->isCalled() ? self::$indices : false;
}
/**
* @return bool|array
*/
public function getIndexByCategory()
{
return $this->isCalled() ? self::$indices['categories'] : false;
}
/**
* @return bool|array
*/
public function getIndexByUnit()
{
return $this->isCalled() ? self::$indices['unit'] : false;
}
/**
* @return bool|array
*/
public function getIndexByDataType()
{
return $this->isCalled() ? self::$indices['dataType'] : false;
}
/**
* Call special Event end build list of result and create index list for searchable keys
* @return void
*/
public function call()
{
if (!self::$called)
{
/** @var BaseReport[] $reports */
$reports = $this->getResult();
foreach ($reports as $key => $report)
{
self::$reportsList[$key] = $report;
self::$indices['categories'][$report->getCategoryKey()][] = $key;
self::$indices['reportClassName'][$report::getClassName()][] = $key;
self::$indices['unit'][$report->getUnitKey()][] = $key;
foreach ($report->getReportImplementedDataTypes() as $dataType)
{
self::$indices['dataType'][$dataType][] = $key;
}
}
}
self::$called = true;
}
/**
* @return bool
*/
private function isCalled()
{
if (!self::$called)
{
$this->errors[] = new Error('invoke call method manager before get some parameters');
return false;
}
else
{
return true;
}
}
}