• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/authproviders.php
  • Класс: CIntranetAuthProvider
  • Вызов: CIntranetAuthProvider::OnBeforeIBlockSectionUpdate
static function OnBeforeIBlockSectionUpdate($arFields)
{
	if(COption::GetOptionString('intranet', 'iblock_structure', '') == $arFields['IBLOCK_ID'])
	{
		if(isset($arFields["IBLOCK_SECTION_ID"]) || isset($arFields["ACTIVE"]) || isset($arFields["UF_HEAD"]))
		{
			$res = CIBlockSection::GetList(
				array(),
				array('IBLOCK_ID' => $arFields['IBLOCK_ID'], 'ID' => $arFields['ID']),
				false,
				array('IBLOCK_SECTION_ID', 'ACTIVE', 'UF_HEAD')
			);
			if($arSect = $res->Fetch())
			{
				if(
					isset($arFields["IBLOCK_SECTION_ID"]) && $arSect["IBLOCK_SECTION_ID"] <> intval($arFields["IBLOCK_SECTION_ID"])
					|| isset($arFields["ACTIVE"]) && $arSect["ACTIVE"] <> $arFields["ACTIVE"]
				)
				{
					//departments structure's been changed
					CAccess::RecalculateForProvider(self::ID);
				}
				elseif(isset($arFields["UF_HEAD"]) && $arSect["UF_HEAD"] <> intval($arFields["UF_HEAD"]))
				{
					//department boss has been changed
					CAccess::RecalculateForUser($arFields["UF_HEAD"], self::ID);
					CAccess::RecalculateForUser($arSect["UF_HEAD"], self::ID);
				}
			}
		}
	}
	return true;
}