• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/event.php
  • Класс: BitrixImOpenLinesQueueEvent
  • Вызов: Event::OnBeforeDepartmentsUpdate
static function OnBeforeDepartmentsUpdate(&$fields)
{
	if (
		Loader::includeModule('iblock') &&
		((int)$fields['IBLOCK_ID']) > 0 &&
		((int)$fields['ID']) > 0 &&
		(int)$fields['IBLOCK_ID'] === QueueManager::getIdIblockStructure()
	)
	{
		$raw = CIBlockSection::GetList([], [
			'IBLOCK_ID' => $fields['IBLOCK_ID'],
			'ID' => $fields['ID'],
		],
		false,
		[
			'UF_HEAD',
			'IBLOCK_SECTION_ID'
		]);
		if ($oldFields = $raw->GetNext())
		{
			if(
				isset($fields['UF_HEAD']) &&
				(int)$fields['UF_HEAD'] !== (int)$oldFields['UF_HEAD']
			)
			{
				$lines = self::getLineIsDepartmentQueue([$fields['ID']]);
				if (!empty($lines))
				{
					self::$linesDepartmentsUpdate[$fields['ID']] = $lines;
				}
			}
			elseif(
				isset($fields['IBLOCK_SECTION_ID']) &&
				(int)$fields['IBLOCK_SECTION_ID'] !== (int)$oldFields['IBLOCK_SECTION_ID']
			)
			{
				$lines = self::getLineIsDepartmentQueue([$fields['IBLOCK_SECTION_ID'], $oldFields['IBLOCK_SECTION_ID']]);
				if (!empty($lines))
				{
					self::$linesDepartmentsUpdate[$fields['ID']] = $lines;
				}
			}
		}
	}
}