static function onAfterCommentUpdate($entityType, $entityId, $arData)
{
global $APPLICATION, $DB, $USER_FIELD_MANAGER;
$log_event_id = CSocNetForumComments::findLogEventIDByForumEntityID($entityType);
if (!$log_event_id)
{
return false;
}
$arLogCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($log_event_id);
if (!$arLogCommentEvent)
{
return false;
}
$entityId = intval($entityId);
if ($entityId <= 0)
{
return false;
}
if (empty($arData["MESSAGE_ID"]))
{
return false;
}
$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");
switch ($arData["ACTION"])
{
case "DEL":
case "HIDE":
$dbLogComment = CSocNetLogComments::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => array($arLogCommentEvent["EVENT_ID"]),
"SOURCE_ID" => intval($arData["MESSAGE_ID"])
),
false,
false,
array("ID")
);
while ($arLogComment = $dbLogComment->Fetch())
CSocNetLogComments::Delete($arLogComment["ID"]);
break;
case "SHOW":
$dbLogComment = CSocNetLogComments::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => array($arLogCommentEvent["EVENT_ID"]),
"SOURCE_ID" => intval($arData["MESSAGE_ID"])
),
false,
false,
array("ID")
);
$arLogComment = $dbLogComment->Fetch();
if (!$arLogComment)
{
$arMessage = CForumMessage::GetByID(intval($arData["MESSAGE_ID"]));
if ($arMessage)
{
$dbLog = CSocNetLog::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => $log_event_id,
"SOURCE_ID" => $entityId
),
false,
false,
array("ID", "ENTITY_TYPE", "ENTITY_ID")
);
if ($arLog = $dbLog->Fetch())
{
$log_id = $arLog["ID"];
$entity_type = $arLog["ENTITY_TYPE"];
$entity_id = $arLog["ENTITY_ID"];
$sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
$strURL = $APPLICATION->GetCurPageParam("", array("IFRAME", "MID", "SEF_APPLICATION_CUR_PAGE_URL", BX_AJAX_PARAM_ID, "result"));
$strURL = ForumAddPageParams(
$strURL,
array(
"MID" => intval($arData["MESSAGE_ID"]),
"result" => "reply"
),
false,
false
);
$arFieldsForSocnet = array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => $arLogCommentEvent["EVENT_ID"],
"MESSAGE" => $sText,
"TEXT_MESSAGE" => $parser->convert4mail($sText),
"URL" => str_replace("?IFRAME=Y", "", str_replace("&IFRAME=Y", "", str_replace("IFRAME=Y&", "", $strURL))),
"MODULE_ID" => (array_key_exists("MODULE_ID", $arLogCommentEvent) && $arLogCommentEvent["MODULE_ID"] <> '' ? $arLogCommentEvent["MODULE_ID"] : ""),
"SOURCE_ID" => intval($arData["MESSAGE_ID"]),
"LOG_ID" => $log_id,
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => intval($arData["MESSAGE_ID"])
);
$arFieldsForSocnet["USER_ID"] = $arMessage["AUTHOR_ID"];
$arFieldsForSocnet["=LOG_DATE"] = $DB->CurrentTimeFunction();
$ufFileID = array();
$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => intval($arData["MESSAGE_ID"])));
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", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
if ($ufDocID)
$arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
$ufUrlPreview = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", intval($arData["MESSAGE_ID"]), 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)
);
}
}
}
break;
case "EDIT":
$arMessage = CForumMessage::GetByID(intval($arData["MESSAGE_ID"]));
if ($arMessage)
{
$dbLogComment = CSocNetLogComments::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => array($arLogCommentEvent["EVENT_ID"]),
"SOURCE_ID" => intval($arData["MESSAGE_ID"])
),
false,
false,
array("ID")
);
$arLogComment = $dbLogComment->Fetch();
if ($arLogComment)
{
$sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
$arFieldsForSocnet = array(
"MESSAGE" => $sText,
"TEXT_MESSAGE" => $parser->convert4mail($sText),
);
$ufFileID = array();
$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => intval($arData["MESSAGE_ID"])));
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", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
if ($ufDocID)
$arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
$ufUrlPreview = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
if ($ufUrlPreview)
{
$arFieldsForSocnet["UF_SONET_COM_URL_PRV"] = $ufUrlPreview;
}
CSocNetLogComments::Update($arLogComment["ID"], $arFieldsForSocnet);
}
}
break;
default:
}
foreach (GetModuleEvents("socialnetwork", "onAfterCommentUpdateAfter", true) as $arModuleEvent)
{
ExecuteModuleEventEx($arModuleEvent, array(
$entityType,
$entityId,
$arData,
$log_id
));
}
}