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

	$arResult = array();

	$user_url = (($arParams["PATH_TO_USER"] ?? '') <> ''
		? $arParams["PATH_TO_USER"]
		: COption::GetOptionString(
			'intranet',
			'path_user',
			'/company/personal/user/#USER_ID#/',
			$arFields["SITE_ID"]
		)
	);

	$arManagers = CTimeMan::GetUserManagers($arFields["ENTITY_ID"]);
	$arManagers[] = $arFields["ENTITY_ID"];
	$arManagers[] = $arFields["USER_ID"];
	$arManagers = array_unique($arManagers);

	$dbEntry = CTimeManEntry::GetList(array(), array('ID' => $arFields["SOURCE_ID"]), false, false, array('DATE_START', 'INACTIVE_OR_ACTIVATED', 'ACTIVE'));
	$arEntry = $dbEntry->Fetch();

	$dbManagers = CUser::GetList(
		'ID', 'ASC',
		array('ID' => implode('|', $arManagers))
	);

	$arCurrentUserManagers = array();
	$arUser = array();
	$arChanger = array();
	while ($manager = $dbManagers->GetNext())
	{
		$info = array(
			'ID' => $manager['ID'],
			'LOGIN' => $manager['LOGIN'],
			'NAME' => CUser::FormatName(CSite::GetNameFormat(false), $manager, true, false),
			'URL' => str_replace(array('#ID#', '#USER_ID#', '#id#', '#user_id#'), $manager['ID'], $user_url),
			'WORK_POSITION' => $manager['WORK_POSITION'],
			'PERSONAL_PHOTO' => $manager['PERSONAL_PHOTO'],
			'PERSONAL_GENDER' => $manager['PERSONAL_GENDER']
		);

		if (intval($info["PERSONAL_PHOTO"]) <= 0)
		{
			switch($info["PERSONAL_GENDER"])
			{
				case "M":
					$suffix = "male";
					break;
				case "F":
					$suffix = "female";
					break;
				default:
					$suffix = "unknown";
			}
			$info["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
		}

		if ($manager['ID'] == $arFields["ENTITY_ID"])
			$arUser = $info;

		if ($manager['ID'] == $arFields["USER_ID"])
			$arChanger = $info;

		if (($manager['ID'] != $arFields["ENTITY_ID"]) || count($arManagers) == 1)
			$arCurrentUserManagers[] = $info;
	}

	$arResult["EVENT"] = $arFields;

	$gender = trim($arChanger['PERSONAL_GENDER']);
	if ($gender == '')
		$gender = 'N';

	if(!$bMail)
	{
		if(defined("BX_COMP_MANAGED_CACHE"))
		{
			$CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arUser["ID"]));
			$CACHE_MANAGER->RegisterTag("USER_NAME_".intval($arCurrentUserManagers[0]["ID"]));
		}

		ob_start();
		$APPLICATION->IncludeComponent(
			'bitrix:timeman.livefeed.workday',
			(($arParams["MOBILE"] ?? '') === 'Y' ? 'mobile' : ''),
			[
				'USER' => $arUser,
				'MANAGER' => $arCurrentUserManagers[0],
				'ENTRY' => $arEntry,
				'PARAMS' => $arParams
			],
			null,
			['HIDE_ICONS' => 'Y']
		);
		$html_message = ob_get_contents();
		ob_end_clean();

		if (($arParams["MOBILE"] ?? '') == "Y")
			$arResult = array(
				'EVENT' => $arFields,
				'EVENT_FORMATTED' => array(
					'TITLE_24' => GetMessage('TIMEMAN_ENTRY_LF_TITLE'.($arEntry['INACTIVE_OR_ACTIVATED'] == 'N' ? '_COMMENT' : ($arFields['ENTITY_ID'] == $arFields['USER_ID'] ? '' : '2')).$gender."_24_MOBILE", array(
						'#DATE#' => FormatDate('j F', MakeTimeStamp($arEntry['DATE_START'])),
					)),
					"MESSAGE" => htmlspecialcharsbx($html_message),
					"IS_IMPORTANT" => false,
					"DESCRIPTION" => ($arEntry['INACTIVE_OR_ACTIVATED'] == 'N' ? '' : ($arFields['ENTITY_ID'] == $arFields['USER_ID'] ? GetMessage("TIMEMAN_ENTRY_LF_DESCRIPTION_24_MOBILE") : array(GetMessage("TIMEMAN_ENTRY_LF_DESCRIPTION2_24_MOBILE"), GetMessage("TIMEMAN_ENTRY_LF_DESCRIPTION2_24_MOBILE_VALUE")))),
					"DESCRIPTION_STYLE" => ($arEntry["INACTIVE_OR_ACTIVATED"] == "Y" && $arEntry["ACTIVE"] == "N" ? false : "green")
				)
			);
		else
		{
			$href = BitrixTimemanServiceDependencyManager::getInstance()
				->getUrlManager()
				->getUriTo(BitrixTimemanTimemanUrlManager::URI_RECORD_REPORT, [
					'RECORD_ID' => $arFields['SOURCE_ID']
				]);
			$arResult = array(
				'EVENT' => $arFields,
				'EVENT_FORMATTED' => array(
					'TITLE' => GetMessage('TIMEMAN_ENTRY_LF_TITLE'.($arEntry['INACTIVE_OR_ACTIVATED'] == 'N' ? '_COMMENT' : ($arFields['ENTITY_ID'] == $arFields['USER_ID'] ? '' : '2')).$gender, array(
						'#URL#' => $href,
						'#DATE#' => FormatDate('j F', MakeTimeStamp($arEntry['DATE_START'])),
					)),
					'TITLE_24' => GetMessage('TIMEMAN_ENTRY_LF_TITLE'.($arEntry['INACTIVE_OR_ACTIVATED'] == 'N' ? '_COMMENT' : ($arFields['ENTITY_ID'] == $arFields['USER_ID'] ? '' : '2')).$gender."_24", array(
						'#URL#' => $href,
						'#DATE#' => FormatDate('j F', MakeTimeStamp($arEntry['DATE_START'])),
					)),
					'URL' => $href,
					"MESSAGE" => $html_message,
					"SHORT_MESSAGE" => $html_message,
					"IS_IMPORTANT" => false,
					"STYLE" => ($arEntry["INACTIVE_OR_ACTIVATED"] == "Y" && $arEntry["ACTIVE"] == "N" ? "workday-edit" : "workday-confirm")
				)
			);
			$arResult["ENTITY"]["FORMATTED"]["NAME"] = GetMessage("TIMEMAN_NOTIFY_TITLE");
			$arResult["ENTITY"]["FORMATTED"]["URL"] = COption::GetOptionString("timeman","TIMEMAN_REPORT_PATH","/timeman/timeman.php");
		}
		$arResult['AVATAR_SRC'] = CSocNetLog::FormatEvent_CreateAvatar($arFields, $arParams, 'CREATED_BY');

		$arFieldsTooltip = array(
			'ID' => $arFields['USER_ID'],
			'NAME' => $arFields['~CREATED_BY_NAME'],
			'LAST_NAME' => $arFields['~CREATED_BY_LAST_NAME'],
			'SECOND_NAME' => $arFields['~CREATED_BY_SECOND_NAME'],
			'LOGIN' => $arFields['~CREATED_BY_LOGIN'],
		);
		$arResult['CREATED_BY']['TOOLTIP_FIELDS'] = CSocNetLog::FormatEvent_FillTooltip($arFieldsTooltip, $arParams);

		if (
			($arParams["MOBILE"] ?? '') != "Y"
			&& ($arParams["NEW_TEMPLATE"] ?? '') != "Y"
		)
			$arResult['EVENT_FORMATTED']['IS_MESSAGE_SHORT'] = CSocNetLog::FormatEvent_IsMessageShort($arFields['MESSAGE']);
	}
	else
	{
		$URL = COption::GetOptionString("timeman", "TIMEMAN_REPORT_PATH", "/timeman/timeman.php");
		$URL = CSocNetLogTools::FormatEvent_GetURL(array("URL"=>$URL, "SITE_ID"=>$arFields["SITE_ID"]));
		$arResult["ENTITY"]["TYPE_MAIL"] = GetMessage("TIMEMAN_TITLE_FOR_MAIL");
		$arResult['EVENT_FORMATTED'] = array(
			"TITLE" => $arChanger["NAME"]." ".GetMessage('TIMEMAN_ENTRY_LF_TITLE'.($arEntry['INACTIVE_OR_ACTIVATED'] == 'N' ? '_COMMENT' : ($arFields['ENTITY_ID'] == $arFields['USER_ID'] ? '' : '2')).'_MAIL'.$gender, array(
				'#DATE#' => FormatDate('j F', MakeTimeStamp($arEntry['DATE_START'])),
			)),
			"URL" => $URL,
			"MESSAGE" => $arFields["TITLE"],
			"IS_IMPORTANT" => false
		);
	}

	return $arResult;
}