• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_report_full.php
  • Класс: CReportNotifications
  • Вызов: CReportNotifications::FormatEvent
static function FormatEvent($arFields, $arParams, $bMail = false)
{
	$user_url = ($arParams["PATH_TO_USER"] <> '' ? $arParams["PATH_TO_USER"] : COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', $arFields["SITE_ID"]));
	$dbReport = CTimeManReportFull::GetByID($arFields["SOURCE_ID"]);
	$arReport = $dbReport->Fetch();
	if (!$arReport)
	{
		return false;
	}

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

	$dbManagers = CUser::GetList('ID', 'ASC', array('ID' => implode('|', $arManagers)), array('SELECT' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'WORK_POSITION', 'PERSONAL_PHOTO', 'PERSONAL_GENDER')));
	$arCurrentUserManagers = array();
	while ($manager = $dbManagers->GetNext())
	{
		$tmpUser = 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'],
				'SEX'=>$manager["PERSONAL_GENDER"]
			);

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

		if ($manager['ID'] == $arReport["USER_ID"])
			$arUser = $tmpUser;
		if (($manager['ID'] != $arReport["USER_ID"]) || count($arManagers) == 1)
			$arCurrentUserManagers[] = $tmpUser;
	}
	$arResult["EVENT"] = $arFields;
	if(!$bMail)
	{
		if(defined("BX_COMP_MANAGED_CACHE"))
		{
			$GLOBALS["CACHE_MANAGER"]->RegisterTag("USER_NAME_".intval($arUser["ID"]));
			$GLOBALS["CACHE_MANAGER"]->RegisterTag("USER_NAME_".intval($arCurrentUserManagers[0]["ID"]));
		}

		ob_start();
		$GLOBALS['APPLICATION']->IncludeComponent(
			'bitrix:timeman.livefeed.workreport',
			(($arParams["MOBILE"] ?? '') == "Y" ? 'mobile' : ''),
			[
				"USER" => $arUser,
				"MANAGER" => $arCurrentUserManagers[0],
				"MARK" => $arReport["MARK"],
				"REPORT_ID" => $arReport["ID"],
				"PARAMS" => $arParams
			],
			null,
			['HIDE_ICONS' => 'Y']
		);
		$html_message = ob_get_contents();
		ob_end_clean();
		$arResult["EVENT"] = $arFields;

		if (($arParams["MOBILE"] ?? '') == "Y")
			$arResult["EVENT_FORMATTED"] = Array(
				"TITLE_24" => ($arFields["USER_ID"] == $arFields["ENTITY_ID"]
								? GetMessage("REPORT_ADD_24".($arUser["SEX"] == "M" ? "_M" : ($arUser["SEX"] == "F" ? "_F" : "")))
								: GetMessage("REPORT_CHANGE_24".($arCurrentUserManagers[0]["SEX"] == "M" ? "_M" : ($arCurrentUserManagers[0]["SEX"] == "F" ? "_F" : "")))
							)." ".$arFields["TITLE"],
				"MESSAGE" => htmlspecialcharsbx($html_message),
				"IS_IMPORTANT" => false,
				"DESCRIPTION" => (in_array($arReport["MARK"], array("G", "B")) ? array(GetMessage("REPORT_FULL_COMMENT_CONFIRM_MOBILE"), GetMessage("REPORT_FULL_COMMENT_CONFIRM_MOBILE_VALUE_".$arReport["MARK"])) : ($arReport["MARK"] == "N" ? GetMessage("REPORT_FULL_COMMENT_CONFIRM_WO_MARK") : "")),
				"DESCRIPTION_STYLE" => (in_array($arReport["MARK"], array("G", "B")) ? ($arReport["MARK"] == "G" ? "green" : "red") : false)
			);
		else
		{
			$arResult["EVENT_FORMATTED"] = Array(
				"TITLE" => ($arFields["USER_ID"] == $arFields["ENTITY_ID"]
								? (($arUser["SEX"] == "F") ? GetMessage("REPORT_ADD_W") : GetMessage("REPORT_ADD"))
								: (($arCurrentUserManagers[0]["SEX"] == "F") ? GetMessage("REPORT_CHANGE_W") : GetMessage("REPORT_CHANGE"))
							)." ".$arFields["TITLE"]."",
				"TITLE_24" => ($arFields["USER_ID"] == $arFields["ENTITY_ID"]
								? GetMessage("REPORT_ADD_24".($arUser["SEX"] == "M" ? "_M" : ($arUser["SEX"] == "F" ? "_F" : "")))
								: GetMessage("REPORT_CHANGE_24".($arCurrentUserManagers[0]["SEX"] == "M" ? "_M" : ($arCurrentUserManagers[0]["SEX"] == "F" ? "_F" : "")))
							)." ".$arFields["TITLE"]."",
				"URL" => "javascript:BX.StartSlider(".$arReport["USER_ID"].",".$arFields["SOURCE_ID"].");",
				"MESSAGE"=>$html_message,
				"SHORT_MESSAGE"=>$html_message,
				"IS_IMPORTANT" => false,
				"STYLE" => ($arReport["MARK"] == "G" ? "workday-confirm" : ($arReport["MARK"] == "B" ? "workday-rejected" : "workday-edit"))
			);

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

			$arResult['ENTITY']['FORMATTED']["NAME"] = GetMessage('REPORT_TITLE');
			$arResult['ENTITY']['FORMATTED']["URL"] = COption::GetOptionString("timeman","WORK_REPORT_PATH","/timeman/work_report.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'] = CSocNetLogTools::FormatEvent_FillTooltip($arFieldsTooltip, $arParams);
	}
	else
	{
		$reportURL = COption::GetOptionString("timeman","WORK_REPORT_PATH","/timeman/work_report.php");
		if ($reportURL == '')
			$reportURL = "/timeman/work_report.php";
		$reportURL = CSocNetLogTools::FormatEvent_GetURL(Array("URL"=>$reportURL,"SITE_ID"=>$arFields["SITE_ID"]));
		$arResult["ENTITY"]["TYPE_MAIL"] = GetMessage("REPORT_TITLE_FOR_MAIL");
		$arResult['EVENT_FORMATTED'] = Array(
			"TITLE"=>$arUser["NAME"]." ".(($arUser["SEX"] == "F")?GetMessage("REPORT_ADD_W"):GetMessage("REPORT_ADD"))." ".GetMessage("REPORT_WORK_REPORT"),
			"URL"=>$reportURL."#user_id=".$arReport["USER_ID"]."&report=".$arFields["SOURCE_ID"],
			"MESSAGE"=> $arFields["TITLE"],
			"IS_IMPORTANT"=> false
		);
	}
	return $arResult;
}