- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_report_full.php
- Класс: CReportNotifications
- Вызов: CReportNotifications::MessageUpdate
static function MessageUpdate($REPORT_ID, $arReport = array(), $arFields = array())
{
global $DB,$USER;
$curUser = $USER->GetID();
if(CModule::IncludeModule("socialnetwork"))
{
$dbLog = CSocNetLog::GetList(Array(), Array("SOURCE_ID" => $REPORT_ID, "EVENT_ID" => "report"));
if (!$arLog = $dbLog->Fetch())
$LOG_ID = CReportNotifications::SendMessage($REPORT_ID, false);
else
{
$LOG_ID = $arLog["ID"];
CSocNetLog::Update($LOG_ID, Array(
"USER_ID" => $curUser,
"=LOG_DATE" => $DB->CurrentTimeFunction(),
"=LOG_UPDATE" => $DB->CurrentTimeFunction()
));
CSocNetLogFollow::DeleteByLogID($LOG_ID, "Y", true); // not only delete but update to NULL for existing records
CUserCounter::IncrementWithSelect(
CSocNetLogCounter::GetSubSelect(
$LOG_ID,
$arLog["ENTITY_TYPE"],
$arLog["ENTITY_ID"],
$arLog["EVENT_ID"],
$arLog["USER_ID"]
)
);
}
if (
CModule::IncludeModule("im")
&& is_array($arFields)
&& is_array($arReport)
&& intval($arReport["USER_ID"] ?? null) > 0
&& $arReport["USER_ID"] != $curUser
)
{
$date_from = FormatDate("j F", MakeTimeStamp($arReport["DATE_FROM"], CSite::GetDateFormat("FULL", SITE_ID)));
$date_to = FormatDate("j F", MakeTimeStamp($arReport["DATE_TO"], CSite::GetDateFormat("FULL", SITE_ID)));
if ($date_from == $date_to)
$date_text = $date_to;
else
$date_text = $date_from." - ".$date_to;
$arMessageFields = array(
"MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
"TO_USER_ID" => $arReport["USER_ID"],
"FROM_USER_ID" => $curUser,
"NOTIFY_TYPE" => IM_NOTIFY_FROM,
"NOTIFY_MODULE" => "timeman",
"NOTIFY_EVENT" => "report_approve",
"NOTIFY_TAG" => "TIMEMAN|REPORT|".$arReport["ID"]."_".$arFields["MARK"],
);
$gender_suffix = "";
$dbUser = CUser::GetByID($curUser);
if ($arUser = $dbUser->Fetch())
{
switch ($arUser["PERSONAL_GENDER"])
{
case "M":
$gender_suffix = "_M";
break;
case "F":
$gender_suffix = "_F";
break;
default:
$gender_suffix = "";
}
}
$reports_page = COption::GetOptionString("timeman", "WORK_REPORT_PATH", "/timeman/work_report.php");
$arTmp = CSocNetLogTools::ProcessPath(array("REPORTS_PAGE" => $reports_page), $arReport["USER_ID"]);
switch ($arFields["MARK"])
{
case "G":
$mark = "G";
break;
case "B":
$mark = "B";
break;
case "X":
$mark = "X";
break;
default:
$mark = "N";
}
$arMessageFields["NOTIFY_MESSAGE"] = GetMessage("REPORT_FULL_IM_APPROVE".$gender_suffix."_".$mark, Array(
"#period#" => "".htmlspecialcharsbx($date_text)."",
));
$arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("REPORT_FULL_IM_APPROVE".$gender_suffix."_".$mark, Array(
"#period#" => htmlspecialcharsbx($date_text),
))." ( ".$arTmp["SERVER_NAME"].$arTmp["URLS"]["REPORTS_PAGE"]."#user_id=".$arReport["USER_ID"]."&report=".$REPORT_ID." )";
CIMNotify::Add($arMessageFields);
}
$dbLogRights = CSocNetLogRights::GetList(Array(),Array("LOG_ID"=>$LOG_ID));
while($arRight = $dbLogRights->Fetch())
$arRights[] = $arRight["GROUP_CODE"];
if(!in_array("U".$curUser,$arRights))
CSocNetLogRights::Add($LOG_ID,"U".$curUser);
return $LOG_ID;
}
else
return false;
}