- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_notify.php
- Класс: CTimeManNotify
- Вызов: CTimeManNotify::OnAfterUserUpdate
static function OnAfterUserUpdate($arFields)
{
if (array_key_exists("UF_DEPARTMENT", $arFields))
{
$arDept = $arFields["UF_DEPARTMENT"];
if (!is_array($arDept))
{
$arDept = array($arDept);
}
foreach ($arDept as $key => $val)
{
if (intval($val) <= 0)
{
unset($arDept[$key]);
}
}
if (
!empty($arDept)
&& CModule::IncludeModule("socialnetwork")
)
{
$arNewRights = self::GetRights($arFields["ID"]);
$rsLog = CSocNetLog::GetList(
array(),
array(
'ENTITY_TYPE' => SONET_TIMEMAN_ENTRY_ENTITY,
'ENTITY_ID' => $arFields["ID"],
'EVENT_ID' => "timeman_entry",
),
false,
false,
array("ID")
);
while ($arLog = $rsLog->Fetch())
{
$arOldRights = array();
$rsLogRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arLog["ID"]));
while ($arLogRight = $rsLogRight->Fetch())
{
$arOldRights[] = $arLogRight["GROUP_CODE"];
}
$diff1 = array_diff($arNewRights, $arOldRights);
$diff2 = array_diff($arOldRights, $arNewRights);
if (
!empty($diff1)
|| !empty($diff2)
)
{
CSocNetLogRights::DeleteByLogID($arLog["ID"]);
CSocNetLogRights::Add($arLog["ID"], $arNewRights);
}
}
}
if ($arDept)
{
$settingKeys = [
'UF_TIMEMAN',
'UF_TM_REPORT_REQ',
];
$timemanUser = new CTimeManUser($arFields['ID']);
$currentSettings = $timemanUser->getPersonalSettings($settingKeys);
$isInheritDepartmentSettings = (
$currentSettings['UF_TIMEMAN'] === null
&& $currentSettings['UF_TM_REPORT_REQ'] === null
);
if ($isInheritDepartmentSettings)
{
$user = new CUser();
$user->update(
$arFields['ID'],
[
'UF_TIMEMAN' => null,
'UF_TM_REPORT_REQ' => null,
]
);
if (defined('BX_COMP_MANAGED_CACHE'))
{
global $CACHE_MANAGER;
$CACHE_MANAGER->CleanDir('timeman_structure_'
. COption::getOptionInt('intranet', 'iblock_structure')
);
}
}
}
}
}