static function AddCommentMessage($arFields, $FORUM_ID, $arLog)
{
global $USER, $DB, $USER_FIELD_MANAGER;
$dbRes = CTimeManEntry::GetList([], ['ID' => $arLog['SOURCE_ID']]);
$arEntry = $dbRes->Fetch();
if ($arEntry && CModule::IncludeModule("forum"))
{
$ufFileID = [];
$ufDocID = [];
if (isset($arFields['FORUM_COMMENT_ADDED']) && $arFields['FORUM_COMMENT_ADDED'] === true && $arFields['MESSAGE_ID'])
{
$mess_id = $arFields['MESSAGE_ID'];
}
else
{
if (!$userName = trim($USER->GetFormattedName(false)))
{
$userName = $USER->GetLogin();
}
if (intval($arEntry["FORUM_TOPIC_ID"]) > 0)
{
if (!CForumTopic::GetByID($arEntry["FORUM_TOPIC_ID"]))
{
$arEntry["FORUM_TOPIC_ID"] = false;
}
}
if (intval($arEntry["FORUM_TOPIC_ID"]) <= 0)
{
$t = ConvertTimeStamp(time(), "FULL");
$arTopicFields = [
"TITLE" => $arEntry["DATE_START"],
"USER_START_ID" => $arFields["USER_ID"],
"STATE" => "Y",
"FORUM_ID" => $FORUM_ID,
"USER_START_NAME" => $userName,
"START_DATE" => $t,
"POSTS" => 0,
"VIEWS" => 0,
"APPROVED" => "Y",
"LAST_POSTER_NAME" => $userName,
"LAST_POST_DATE" => $t,
"LAST_MESSAGE_ID" => 0,
"XML_ID" => "TIMEMAN_ENTRY_" . $arLog["SOURCE_ID"],
];
$TOPIC_ID = CForumTopic::Add($arTopicFields);
if ($TOPIC_ID > 0)
{
CTimeManEntry::Update($arLog['SOURCE_ID'], ["FORUM_TOPIC_ID" => $TOPIC_ID]);
}
}
else
{
$TOPIC_ID = $arEntry["FORUM_TOPIC_ID"];
}
if ($TOPIC_ID)
{
$arFieldsP = [
"AUTHOR_ID" => $arFields["USER_ID"],
"AUTHOR_NAME" => $userName,
"POST_MESSAGE" => $arFields["TEXT_MESSAGE"],
"POST_DATE" => date($DB->DateFormatToPHP(FORMAT_DATETIME), time() - 1),
"FORUM_ID" => $FORUM_ID,
"TOPIC_ID" => $TOPIC_ID,
"APPROVED" => "Y",
"PARAM2" => $arLog["SOURCE_ID"],
];
$USER_FIELD_MANAGER->EditFormAddFields("SONET_COMMENT", $arTmp);
if (is_array($arTmp))
{
if (array_key_exists("UF_SONET_COM_DOC", $arTmp))
{
$GLOBALS["UF_FORUM_MESSAGE_DOC"] = $arTmp["UF_SONET_COM_DOC"];
}
elseif (array_key_exists("UF_SONET_COM_FILE", $arTmp))
{
$arFieldsP["FILES"] = [];
foreach ($arTmp["UF_SONET_COM_FILE"] as $file_id)
{
$arFieldsP["FILES"][] = ["FILE_ID" => $file_id];
}
}
}
$USER_FIELD_MANAGER->EditFormAddFields("FORUM_MESSAGE", $arFieldsP);
$mess_id = CForumMessage::Add($arFieldsP);
}
}
// get UF DOC value and FILE_ID there
if ($mess_id > 0)
{
$dbAddedMessageFiles = CForumFiles::GetList(["ID" => "ASC"], ["MESSAGE_ID" => $mess_id]);
while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
{
$ufFileID[] = $arAddedMessageFiles["FILE_ID"];
}
$ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $mess_id, LANGUAGE_ID);
}
if (IsModuleInstalled("im"))
{
CTimeManNotify::AddCommentToIM([
"USER_ID" => $arFields["USER_ID"],
"ENTRY_ID" => $arEntry["ID"],
"LOG_ID" => $arLog["ID"],
"MESSAGE" => $arFields["TEXT_MESSAGE"],
]);
}
return [
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => $mess_id,
"SOURCE_ID" => $mess_id,
"UF" => [
"FILE" => $ufFileID,
"DOC" => $ufDocID,
],
];
}
return false;
}