• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_report_full.php
  • Класс: CReportNotifications
  • Вызов: CReportNotifications::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 = CReportNotifications::GetRights($arFields["ID"]);

			$rsLog = CSocNetLog::GetList(
				array(),
				array(
					'ENTITY_TYPE' => SONET_WORK_REPORT_ENTITY,
					'ENTITY_ID' => $arFields["ID"],
					'EVENT_ID' => "report",
				),
				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);
				}
			}
		}
	}
}