static function AddComment_Files($arFields)
{
if (!CModule::IncludeModule("forum"))
return false;
if (!CModule::IncludeModule("iblock"))
return false;
if (!CModule::IncludeModule("socialnetwork"))
return false;
$dbResult = CSocNetLog::GetList(
array("ID" => "DESC"),
array("TMP_ID" => $arFields["LOG_ID"]),
false,
false,
array("ID", "SOURCE_ID", "PARAMS")
);
$bFound = false;
$FORUM_ID = 0;
if ($arLog = $dbResult->Fetch())
{
if (intval($arLog["SOURCE_ID"]) > 0)
{
$arFilter = array(
"ID" => $arLog["SOURCE_ID"],
"SHOW_HISTORY" => "Y"
);
$arSelectedFields = array("IBLOCK_ID", "ID", "CREATED_BY", "NAME", "PROPERTY_FORUM_TOPIC_ID", "PROPERTY_FORUM_MESSAGE_CNT");
$db_res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelectedFields);
if ($db_res && $res = $db_res->GetNext())
{
$arElement = $res;
// get forum_id
if (preg_match("#forum_id=(d+)#", $arLog['PARAMS'], $matches) > 0)
$FORUM_ID = intval($matches[1]);
if (intval($FORUM_ID) > 0)
{
CSocNetLogTools::AddComment_Review_CheckIBlock($arElement);
$dbMessage = CForumMessage::GetList(
array(),
array("PARAM2" => $arElement["ID"])
);
if (!$arMessage = $dbMessage->Fetch())
{
// Add Topic
$TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot($arElement, $FORUM_ID);
$bNewTopic = true;
}
else
$TOPIC_ID = $arMessage["TOPIC_ID"];
if(intval($TOPIC_ID) > 0)
{
// Add comment
$messageID = false;
$bError = false;
if (CForumMessage::CanUserAddMessage($TOPIC_ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID(), false))
{
$bSHOW_NAME = true;
$res = CForumUser::GetByUSER_ID($GLOBALS["USER"]->GetID());
if ($res)
$bSHOW_NAME = ($res["SHOW_NAME"]=="Y");
if ($bSHOW_NAME)
$AUTHOR_NAME = $GLOBALS["USER"]->GetFormattedName(false);
if (Trim($AUTHOR_NAME) == '')
$AUTHOR_NAME = $GLOBALS["USER"]->GetLogin();
if ($AUTHOR_NAME == '')
$bError = true;
}
if (!$bError)
{
if ($bNewTopic)
{
$arFieldsMessage = Array(
"POST_MESSAGE" => "New document",
"USE_SMILES" => "Y",
"APPROVED" => "Y",
"PARAM1" => "IB",
"PARAM2" => $arElement["ID"],
"AUTHOR_NAME" => $AUTHOR_NAME,
"AUTHOR_ID" => intval($GLOBALS["USER"]->GetParam("USER_ID")),
"FORUM_ID" => $FORUM_ID,
"TOPIC_ID" => $TOPIC_ID,
"NEW_TOPIC" => "Y",
"GUEST_ID" => $_SESSION["SESS_GUEST_ID"],
"ADD_TO_LOG" => "N"
);
$AUTHOR_IP = ForumGetRealIP();
$AUTHOR_IP_tmp = $AUTHOR_IP;
$AUTHOR_REAL_IP = $_SERVER['REMOTE_ADDR'];
if (COption::GetOptionString("forum", "FORUM_GETHOSTBYADDR", "N") == "Y")
{
$AUTHOR_IP = @gethostbyaddr($AUTHOR_IP);
if ($AUTHOR_IP_tmp==$AUTHOR_REAL_IP)
$AUTHOR_REAL_IP = $AUTHOR_IP;
else
$AUTHOR_REAL_IP = @gethostbyaddr($AUTHOR_REAL_IP);
}
$arFieldsMessage["AUTHOR_IP"] = ($AUTHOR_IP!==False) ? $AUTHOR_IP : "";
$arFieldsMessage["AUTHOR_REAL_IP"] = ($AUTHOR_REAL_IP!==False) ? $AUTHOR_REAL_IP : "";
$messageID = CForumMessage::Add($arFieldsMessage, false);
}
$arFieldsMessage = Array(
"POST_MESSAGE" => $arFields["TEXT_MESSAGE"],
"USE_SMILES" => "Y",
"APPROVED" => "Y",
"PARAM2" => $arElement["ID"],
"AUTHOR_NAME" => $AUTHOR_NAME,
"AUTHOR_ID" => intval($GLOBALS["USER"]->GetParam("USER_ID")),
"FORUM_ID" => $FORUM_ID,
"TOPIC_ID" => $TOPIC_ID,
"NEW_TOPIC" => "N",
"GUEST_ID" => $_SESSION["SESS_GUEST_ID"],
"ADD_TO_LOG" => "N"
);
$AUTHOR_IP = ForumGetRealIP();
$AUTHOR_IP_tmp = $AUTHOR_IP;
$AUTHOR_REAL_IP = $_SERVER['REMOTE_ADDR'];
if (COption::GetOptionString("forum", "FORUM_GETHOSTBYADDR", "N") == "Y")
{
$AUTHOR_IP = @gethostbyaddr($AUTHOR_IP);
if ($AUTHOR_IP_tmp==$AUTHOR_REAL_IP)
$AUTHOR_REAL_IP = $AUTHOR_IP;
else
$AUTHOR_REAL_IP = @gethostbyaddr($AUTHOR_REAL_IP);
}
$arFieldsMessage["AUTHOR_IP"] = ($AUTHOR_IP!==False) ? $AUTHOR_IP : "";
$arFieldsMessage["AUTHOR_REAL_IP"] = ($AUTHOR_REAL_IP!==False) ? $AUTHOR_REAL_IP : "";
$messageID = CForumMessage::Add($arFieldsMessage, false);
if (intval($messageID)<=0)
$bError = true;
else
{
if (CModule::IncludeModule("statistic"))
{
$arForum = CForumNew::GetByID($FORUM_ID);
$F_EVENT1 = $arForum["EVENT1"];
$F_EVENT2 = $arForum["EVENT2"];
$F_EVENT3 = $arForum["EVENT3"];
if ($F_EVENT3 == '')
{
$arForumSite_tmp = CForumNew::GetSites($FORUM_ID);
$F_EVENT3 = CForumNew::PreparePath2Message($arForumSite_tmp[SITE_ID], array("FORUM_ID"=>$FORUM_ID, "TOPIC_ID"=>$TOPIC_ID, "MESSAGE_ID"=>$messageID));
}
CStatistic::Set_Event($F_EVENT1, $F_EVENT2, $F_EVENT3);
}
CForumMessage::SendMailMessage($messageID, array(), false, "NEW_FORUM_MESSAGE");
CSocNetLogTools::AddComment_Review_UpdateElement($arElement, $TOPIC_ID, $bNewTopic);
}
}
}
}
}
}
}
if (intval($messageID) <= 0)
$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
return array(
"SOURCE_ID" => $messageID,
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => $messageID,
"ERROR" => $strError,
"NOTES" => ""
);
}