- Модуль: report
- Путь к файлу: ~/bitrix/modules/report/lib/visualconstructor/helper/widget.php
- Класс: BitrixReportVisualConstructorHelperWidget
- Вызов: Widget::constructPseudoWidgetByParams
static function constructPseudoWidgetByParams($params)
{
if (!isset($params['viewType']))
{
throw new ArgumentException('viewType argument not exist');
}
if (!isset($params['widgetId']))
{
throw new ArgumentException('widgetId argument not exist');
}
if (!isset($params['boardId']))
{
throw new ArgumentException('boardId argument not exist');
}
if (!isset($params['categoryKey']) || $params['categoryKey'] === 'myWidgets')
{
$categoryKey = '';
}
else
{
$categoryKey = $params['categoryKey'];
}
$viewKey = $params['viewType'];
$widgetGId = $params['widgetId'];
$boardId = $params['boardId'];
$widgetConfigurations = !empty($params['widget'][$widgetGId]['configurations']) ? $params['widget'][$widgetGId]['configurations'] : array();
$reportsConfigurationsFromForm = !empty($params['widget'][$widgetGId]['reports']) ? $params['widget'][$widgetGId]['reports'] : array();
$viewController = ViewProvider::getViewByViewKey($viewKey);
$widgetHandler = $viewController->buildWidgetHandlerForBoard($boardId);
$widget = $widgetHandler->getWidget();
$widget->setCategoryKey($categoryKey);
if (!empty($widgetConfigurations['old']))
{
foreach ($widgetConfigurations['old'] as $configurationGid => $configuration)
{
foreach ($configuration as $key => $value)
{
$widgetHandler->getFormElement($key)->setValue($value);
}
}
}
if (!empty($widgetConfigurations['new']))
{
foreach ($widgetConfigurations['new'] as $key => $value)
{
$widgetHandler->getFormElement($key)->setValue($value);
}
}
foreach ($reportsConfigurationsFromForm as $reportId=> $report)
{
if (!empty($params['deletedReports']) && in_array($reportId, $params['deletedReports']))
{
continue;
}
if (!empty($report['configurations']['new']['reportHandler']))
{
/** @var BaseReport $reportHandler */
$reportHandler = $viewController->getReportHandler($report['configurations']['new']['reportHandler'], $widgetHandler);
}
elseif (!empty($report['configurations']['old']))
{
foreach ($report['configurations']['old'] as $configuration)
{
foreach ($configuration as $key => $value)
{
if ($key === 'reportHandler')
{
/** @var BaseReport $reportHandler */
$reportHandler = $viewController->getReportHandler($value, $widgetHandler);
break 2;
}
}
}
}
else
{
continue;
}
if (isset($reportHandler) && $reportHandler instanceof BaseReport)
{
if (!empty($report['configurations']['old']))
{
foreach ($report['configurations']['old'] as $configuration)
{
foreach ($configuration as $key => $value)
{
$reportHandler->getFormElement($key)->setValue($value);
}
}
}
if (!empty($report['configurations']['new']))
{
foreach ($report['configurations']['new'] as $key => $value)
{
$reportHandler->getFormElement($key)->setValue($value);
}
}
$widgetHandler->addReportHandler($reportHandler);
$reportHandler->getReport()->setConfigurations($reportHandler->getConfigurations());
$reportHandler->getReport()->setWidget($widget);
}
}
$widget->setConfigurations($widgetHandler->getConfigurations());
$widget->setGId('pseudo_' . randString(4));
return $widget;
}