static function onAfterCommentAdd($entityType, $entityId, $arData)
{
global $DB, $USER_FIELD_MANAGER;
$log_event_id = CSocNetForumComments::findLogEventIDByForumEntityID($entityType);
if (
!$log_event_id
|| $log_event_id == 'tasks' // BitrixTasksIntegrationForumTaskComment::onAfterAdd()
)
{
return false;
}
$arLogCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($log_event_id);
if (!$arLogCommentEvent)
{
return false;
}
$entityId = intval($entityId);
if ($entityId <= 0)
{
return false;
}
$messageId = $arData['MESSAGE_ID'];
if ($messageId <= 0)
{
return false;
}
$arMessage = CForumMessage::GetByID($messageId);
if (!$arMessage)
{
return false;
}
$sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
$logFilter = array(
"EVENT_ID" => $log_event_id,
"SOURCE_ID" => $entityId
);
foreach (GetModuleEvents("socialnetwork", "onAfterCommentAddBefore", true) as $arModuleEvent)
{
$res = ExecuteModuleEventEx($arModuleEvent, array(
$entityType,
$entityId,
$arData
));
if (isset($res) && is_array($res) && isset($res['LOG_ENTRY_ID']) && $res['LOG_ENTRY_ID'] > 1)
{
$logFilter = array(
'ID' => $res['LOG_ENTRY_ID']
);
}
}
$dbRes = CSocNetLog::GetList(
array("ID" => "DESC"),
$logFilter,
false,
false,
array("ID", "ENTITY_TYPE", "ENTITY_ID", "SOURCE_ID", "USER_ID")
);
if ($arRes = $dbRes->Fetch())
{
$log_id = $arRes["ID"];
$entity_type = $arRes["ENTITY_TYPE"];
$entity_id = $arRes["ENTITY_ID"];
$strURL = '';
if (
isset($arLogCommentEvent["METHOD_GET_URL"])
&& is_callable($arLogCommentEvent["METHOD_GET_URL"])
)
{
$strURL = call_user_func_array($arLogCommentEvent["METHOD_GET_URL"], array(array(
"ENTRY_ID" => $arRes["SOURCE_ID"],
"ENTRY_USER_ID" => $arRes["USER_ID"],
"COMMENT_ID" => $messageId
)));
}
$parser = new CTextParser();
$parser->allow = array("HTML" => 'N',"ANCHOR" => 'Y',"BIU" => 'Y',"IMG" => "Y","VIDEO" => "Y","LIST" => 'N',"QUOTE" => 'Y',"CODE" => 'Y',"FONT" => 'Y',"SMILES" => "N","UPLOAD" => 'N',"NL2BR" => 'N',"TABLE" => "Y");
$arFieldsForSocnet = array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => $arLogCommentEvent["EVENT_ID"],
"=LOG_DATE" => $DB->CurrentTimeFunction(),
"USER_ID" => $arMessage["AUTHOR_ID"],
"MESSAGE" => $sText,
"TEXT_MESSAGE" => $parser->convert4mail($sText),
"URL" => $strURL,
"MODULE_ID" => (array_key_exists("MODULE_ID", $arLogCommentEvent) && $arLogCommentEvent["MODULE_ID"] <> '' ? $arLogCommentEvent["MODULE_ID"] : ""),
"SOURCE_ID" => $messageId,
"LOG_ID" => $log_id
);
if (
!array_key_exists("RATING_TYPE_ID", $arLogCommentEvent)
|| $arLogCommentEvent["RATING_TYPE_ID"] == "FORUM_POST"
)
{
$arFieldsForSocnet["RATING_TYPE_ID"] = "FORUM_POST";
$arFieldsForSocnet["RATING_ENTITY_ID"] = $messageId;
}
$ufFileID = array();
$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageId));
while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
{
$ufFileID[] = $arAddedMessageFiles["FILE_ID"];
}
if (count($ufFileID) > 0)
{
$arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
}
$ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageId, LANGUAGE_ID);
if ($ufDocID)
{
$arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
}
$ufUrlPreview = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", $messageId, LANGUAGE_ID);
if ($ufUrlPreview)
{
$arFieldsForSocnet["UF_SONET_COM_URL_PRV"] = $ufUrlPreview;
}
$comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
CSocNetLog::CounterIncrement(
$comment_id,
false,
false,
"LC",
CSocNetLogRights::CheckForUserAll($log_id)
);
}
foreach (GetModuleEvents("socialnetwork", "onAfterCommentAddAfter", true) as $arModuleEvent)
ExecuteModuleEventEx($arModuleEvent, array(
$entityType,
$entityId,
$arData,
$log_id
));
foreach (GetModuleEvents("socialnetwork", "OnForumCommentIMNotify", true) as $arModuleEvent) // send notification
{
ExecuteModuleEventEx($arModuleEvent, array(
$entityType,
$entityId,
array(
"LOG_ID" => $log_id,
"USER_ID" => $arMessage["AUTHOR_ID"],
"MESSAGE_ID" => $messageId,
"MESSAGE" => $sText,
"URL" => $strURL
)
));
}
return false;
}