- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/component/gridvariationform.php
- Класс: BitrixCatalogComponentGridVariationForm
- Вызов: GridVariationForm::setGridSettings
public function setGridSettings(string $settingId, $selected, array $currentHeaders = []): AjaxJson
{
$headers = static::getHeaderIdsBySettingId($settingId);
if (!empty($headers))
{
$options = new BitrixMainGridOptions($this->getVariationGridId());
$allUsedColumns = $options->getUsedColumns();
if (empty($allUsedColumns))
{
$allUsedColumns = $currentHeaders;
}
if ($selected === 'true')
{
// sort new columns by default grid column sort
$defaultHeaders = array_column($this->getGridHeaders(), 'id');
$currentHeadersInDefaultPosition = array_values(
array_intersect($defaultHeaders, array_merge($allUsedColumns, $headers))
);
$headers = array_values(array_intersect($defaultHeaders, $headers));
foreach ($headers as $header)
{
$insertPosition = array_search($header, $currentHeadersInDefaultPosition, true);
array_splice($allUsedColumns, $insertPosition, 0, $header);
}
}
else
{
$allUsedColumns = array_diff($allUsedColumns, $headers);
}
$options->setColumns(implode(',', $allUsedColumns));
$options->save();
}
return AjaxJson::createSuccess();
}