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;
}