- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/handlers.php
- Класс: CIntranetEventHandlers
- Вызов: CIntranetEventHandlers::OnBeforeUserUpdate
static function OnBeforeUserUpdate(&$fields)
{
if (
!is_array($fields)
|| !isset($fields['ID'])
|| intval($fields['ID']) <= 0
)
{
return;
}
$userId = intval($fields['ID']);
$res = CUser::getList("id", "asc", array("ID_EQUAL_EXACT" => $userId), array("SELECT" => array("UF_DEPARTMENT"), "FIELDS" => array("ID", "ACTIVE")));
if ($user = $res->fetch())
{
self::$userDepartmentCache[$userId] = $user["UF_DEPARTMENT"];
self::$userActiveCache = $user["ACTIVE"];
}
if (!defined('BX_COMP_MANAGED_CACHE') || !BX_COMP_MANAGED_CACHE)
{
return;
}
global $CACHE_MANAGER;
$queryObject = CUser::getList(
"id", "asc",
["ID_EQUAL_EXACT" => intval($fields['ID'])],
['SELECT' => ['UF_DEPARTMENT']]
);
if ($oldFields = $queryObject->fetch())
{
if (
isset($fields['UF_DEPARTMENT'])
&& is_array($fields['UF_DEPARTMENT'])
&& $fields['UF_DEPARTMENT'] != $oldFields['UF_DEPARTMENT']
)
{
if (!is_array($oldFields['UF_DEPARTMENT']))
{
$oldFields['UF_DEPARTMENT'] = [];
}
$arDepts = array_merge($fields['UF_DEPARTMENT'], $oldFields['UF_DEPARTMENT']);
if (count($arDepts) > 0)
{
$CACHE_MANAGER->ClearByTag('intranet_department_structure');
foreach ($arDepts as $dpt)
{
$CACHE_MANAGER->ClearByTag('intranet_department_'.$dpt);
}
}
}
}
}