static function AddComment_Photo_Forum($arFields, $FORUM_ID, $arLog)
{
global $USER_FIELD_MANAGER;
if (!CModule::IncludeModule("forum"))
return false;
if (!CModule::IncludeModule("iblock"))
return false;
$ufFileID = array();
$ufDocID = array();
$arElement = false;
$arFilteredText = array();
$arFilter = array("ID" => $arLog["SOURCE_ID"]);
$arSelectedFields = array("IBLOCK_ID", "ID", "NAME", "TAGS", "CODE", "IBLOCK_SECTION_ID", "DETAIL_PAGE_URL",
"CREATED_BY", "PREVIEW_PICTURE", "PREVIEW_TEXT", "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;
if ($arElement)
{
// check iblock properties
CSocNetLogTools::AddComment_Review_CheckIBlock_Forum($arElement);
$dbMessage = CForumMessage::GetList(
array(),
array(
"PARAM2" => $arElement["ID"]
)
);
if (!$arMessage = $dbMessage->Fetch())
{
// Add Topic
$TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot_Forum($arElement, $FORUM_ID);
$bNewTopic = true;
}
else
$TOPIC_ID = $arMessage["TOPIC_ID"];
if(intval($TOPIC_ID) > 0)
{
if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
{
$arFields["TEXT_MESSAGE"] = $arFilteredText["TEXT_MESSAGE"] = CFilterUnquotableWords::Filter($arFields["TEXT_MESSAGE"]);
$arFilteredText["MESSAGE"] = CFilterUnquotableWords::Filter($arFields["MESSAGE"]);
}
// Add comment
$messageID = false;
$arFieldsMessage = array(
"POST_MESSAGE" => $arFields["TEXT_MESSAGE"],
"USE_SMILES" => "Y",
"PARAM2" => $arElement["ID"],
"APPROVED" => "Y"
);
$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))
{
$arFieldsMessage["FILES"] = array();
foreach($arTmp["UF_SONET_COM_FILE"] as $file_id)
$arFieldsMessage["FILES"][] = array("FILE_ID" => $file_id);
}
}
$messageID = ForumAddMessage("REPLY", $FORUM_ID, $TOPIC_ID, 0, $arFieldsMessage, $sError, $sNote);
if (!$messageID)
$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
else
{
// get UF DOC value and FILE_ID there
$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageID));
while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
$ufFileID[] = $arAddedMessageFiles["FILE_ID"];
$ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageID, LANGUAGE_ID);
CSocNetLogTools::AddComment_Review_UpdateElement_Forum($arElement, $TOPIC_ID, $bNewTopic);
}
}
else
$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
}
else
$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
return array_merge(
$arFilteredText,
array(
"SOURCE_ID" => $messageID,
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => $messageID,
"ERROR" => $strError,
"NOTES" => "",
"UF" => array(
"FILE" => $ufFileID,
"DOC" => $ufDocID
),
"IM_MESSAGE" => ($messageID ? $arFields["TEXT_MESSAGE"] : false)
)
);
}