• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/notify.php
  • Класс: CIntranetNotify
  • Вызов: CIntranetNotify::FormatEvent
static function FormatEvent($arFields, $arParams, $bMail = false)
{
	global $CACHE_MANAGER, $APPLICATION;

	$arResult = array(
		"EVENT" => $arFields
	);

	$arParams = is_array($arParams) ? $arParams : [];
	$arParams['MOBILE'] = $arParams['MOBILE'] ?? 'N';
	$arParams['PATH_TO_USER'] = $arParams['PATH_TO_USER'] ?? '';

	$user_url = str_replace('#user_id#', $arFields['ENTITY_ID'], $arParams['PATH_TO_USER']);

	$dbRes = CUser::GetByID($arFields['ENTITY_ID']);
	$arUser = $dbRes->Fetch();

	if (
		$arUser
		&& (
			ModuleManager::isModuleInstalled('extranet')
			|| (
				!empty($arUser['UF_DEPARTMENT'])
				&& is_array($arUser['UF_DEPARTMENT'])
				&& (int)$arUser['UF_DEPARTMENT'][0] > 0
			) // for uninstalled extranet module / b24
		)
	)
	{
		if(!$bMail)
		{
			if(defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->RegisterTag("USER_NAME_" . (int)$arUser["ID"]);
			}

			$bExtranetUser = (
				IsModuleInstalled("extranet")
				&& (
					!isset($arUser['UF_DEPARTMENT'])
					|| !is_array($arUser['UF_DEPARTMENT'])
					|| empty($arUser['UF_DEPARTMENT'])
				)
			);

			ob_start();
			$APPLICATION->IncludeComponent('bitrix:intranet.livefeed.newuser', '', array(
				'USER' => $arUser,
				'PARAMS' => $arParams,
				'AVATAR_SRC' => CSocNetLog::FormatEvent_CreateAvatar($arFields, $arParams, 'CREATED_BY'),
				'USER_URL' => $user_url,
			), null, array('HIDE_ICONS' => 'Y'));
			$html_message = ob_get_clean();

			$arResult = array(
				'EVENT' => $arFields,
				'EVENT_FORMATTED' => array(
					'TITLE' => ($bExtranetUser ? GetMessage('I_NEW_USER_EXTERNAL_TITLE') : GetMessage('I_NEW_USER_TITLE')),
					'TITLE_24' => ($bExtranetUser ? GetMessage('I_NEW_USER_EXTERNAL_TITLE') : GetMessage('I_NEW_USER_TITLE')),
					"MESSAGE" => $html_message,
					"SHORT_MESSAGE" => $html_message,
					'IS_IMPORTANT' => true,
					'STYLE' => 'new-employee',
					'AVATAR_STYLE' => 'avatar-info'
				),
			);

			if ($bExtranetUser)
			{
				$workgroupCodesList = [];

				$res = BitrixSocialnetworkLogRightTable::getList([
					'filter' => [
						'=LOG_ID' => (int)$arFields['ID'],
					],
					'select' => [ 'GROUP_CODE' ],
				]);
				while ($logRightsFields = $res->fetch())
				{
					if (
						preg_match('/^SG(d+)$/i', $logRightsFields['GROUP_CODE'], $matches)
						&& (int)$matches[1] > 0
					)
					{
						$workgroupCodesList[] = $matches[0];
					}
				}

				if (!empty($workgroupCodesList))
				{
					$arResult['EVENT_FORMATTED']['DESTINATION'] = CSocNetLogTools::formatDestinationFromRights($workgroupCodesList, $arParams);
				}
			}

			if (Loader::includeModule('bitrix24'))
			{
				$arResult['CREATED_BY']['FORMATTED'] = (
					$arParams["MOBILE"] === "Y"
						? htmlspecialcharsEx(self::GetSiteName())
						: ''.htmlspecialcharsEx(self::GetSiteName()).''
				);
			}
			else
			{
				$arResult['CREATED_BY']['FORMATTED'] = '';
				if (is_array($arUser['UF_DEPARTMENT']) && count($arUser['UF_DEPARTMENT']) > 0)
				{
					if ($arParams["MOBILE"] === "Y")
					{
						$url = "";
					}
					else
					{
						$url = $arParams['PATH_TO_CONPANY_DEPARTMENT'];
						if ($url == '')
						{
							$url = $arParams['PATH_TO_COMPANY_DEPARTMENT'];
						}
					}

					$dbRes = CIBlockSection::GetList(array('ID' => 'ASC'), array('ID' => $arUser['UF_DEPARTMENT']));
					if ($arSection = $dbRes->fetch())
					{
						$arResult['CREATED_BY']['FORMATTED'] = (
							$url <> ''
								? ''.htmlspecialcharsEx($arSection['NAME']).''
								: htmlspecialcharsEx($arSection['NAME'])
						);
					}
				}

				if ($arResult['CREATED_BY']['FORMATTED'] == '')
				{
					$arResult['CREATED_BY']['FORMATTED'] = htmlspecialcharsEx(self::GetSiteName());
				}
			}

			$arResult['ENTITY']['FORMATTED']["NAME"] = ($bExtranetUser ? GetMessage('I_NEW_USER_EXTERNAL_TITLE') : GetMessage('I_NEW_USER_TITLE'));
			$arResult['ENTITY']['FORMATTED']["URL"] = $user_url;

			if (
				$arParams["MOBILE"] !== "Y"
				&& $arParams["NEW_TEMPLATE"] !== "Y"
			)
			{
				$arResult['EVENT_FORMATTED']['IS_MESSAGE_SHORT'] = CSocNetLogTools::FormatEvent_IsMessageShort($arFields['MESSAGE']);
			}
		}
	}
	else
	{
		$arResult = false;
	}

	return $arResult;
}