• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/authproviders.php
  • Класс: CIntranetAuthProvider
  • Вызов: CIntranetAuthProvider::OnBeforeUserUpdate
static function OnBeforeUserUpdate($arFields)
{
	if (isset($arFields["UF_DEPARTMENT"]) && is_array($arFields["UF_DEPARTMENT"]))
	{
		// compare with the old data
		$user = CUser::GetByID($arFields["ID"]);
		if($userData = $user->Fetch())
		{
			if (!is_array($userData["UF_DEPARTMENT"]))
			{
				$userData["UF_DEPARTMENT"] = [];
			}

			// get rid of empty values
			$arFields["UF_DEPARTMENT"] = array_filter($arFields["UF_DEPARTMENT"]);

			// we need sort for arrays comparison
			sort($arFields["UF_DEPARTMENT"]);
			sort($userData["UF_DEPARTMENT"]);

			if ($arFields["UF_DEPARTMENT"] != $userData["UF_DEPARTMENT"])
			{
				// recalculate for user himself
				CAccess::RecalculateForUser($arFields["ID"], self::ID);

				// new and old departments differ - recalculate both sets of departments
				static::RecalculateManagers($userData["UF_DEPARTMENT"], $arFields["ID"]);
				static::RecalculateManagers($arFields["UF_DEPARTMENT"], $arFields["ID"]);
			}
		}
	}
}