- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
- Класс: CSocNetLogTools
- Вызов: CSocNetLogTools::AddComment_Review_CreateRoot_Forum
static function AddComment_Review_CreateRoot_Forum($arElement, $forumID, $bPostFirstMessage = false, $strFirstMessage = "")
{
global $DB;
if (!CModule::IncludeModule("forum"))
return false;
if ($bPostFirstMessage && $strFirstMessage == '')
return false;
// Add Topic
$arUserStart = array(
"ID" => intval($arElement["~CREATED_BY"]),
"NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]
);
if ($arUserStart["ID"] > 0)
{
$res = array();
$db_res = CForumUser::GetListEx(array(), array("USER_ID" => $arElement["~CREATED_BY"]));
if ($db_res && $res = $db_res->Fetch()):
$res["FORUM_USER_ID"] = intval($res["ID"]);
$res["ID"] = $res["USER_ID"];
else:
$db_res = CUser::GetByID($arElement["~CREATED_BY"]);
if ($db_res && $res = $db_res->Fetch()):
$res["SHOW_NAME"] = COption::GetOptionString("forum", "USER_SHOW_NAME", "Y");
$res["USER_PROFILE"] = "N";
endif;
endif;
if (!empty($res)):
$arUserStart = $res;
$sName = ($res["SHOW_NAME"] == "Y" ? trim($res["NAME"]." ".$res["LAST_NAME"]) : "");
$arUserStart["NAME"] = (empty($sName) ? trim($res["LOGIN"]) : $sName);
endif;
}
$arUserStart["NAME"] = (empty($arUserStart["NAME"]) ? $GLOBALS["FORUM_STATUS_NAME"]["guest"] : $arUserStart["NAME"]);
$DB->StartTransaction();
$arFields = Array(
"TITLE" => $arElement["~NAME"],
"TAGS" => $arElement["~TAGS"],
"FORUM_ID" => $forumID,
"USER_START_ID" => $arUserStart["ID"],
"USER_START_NAME" => $arUserStart["NAME"],
"LAST_POSTER_NAME" => $arUserStart["NAME"],
"APPROVED" => "Y",
"XML_ID" => "IBLOCK_".$arElement["ID"]
);
if (
isset($arElement["ENTITY_TYPE"])
&& $arElement["ENTITY_TYPE"] == SONET_ENTITY_GROUP
&& isset($arElement["ENTITY_ID"])
&& intval($arElement["ENTITY_ID"]) > 0
)
{
$arFields["SOCNET_GROUP_ID"] = intval($arElement["ENTITY_ID"]);
}
$TOPIC_ID = CForumTopic::Add($arFields);
if ($bPostFirstMessage && intval($TOPIC_ID) > 0)
{
if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
$strFirstMessage = CFilterUnquotableWords::Filter($strFirstMessage);
// Add post as new message
$arFields = Array(
"POST_MESSAGE" => $strFirstMessage,
"AUTHOR_ID" => $arUserStart["ID"],
"AUTHOR_NAME" => $arUserStart["NAME"],
"FORUM_ID" => $forumID,
"TOPIC_ID" => $TOPIC_ID,
"APPROVED" => "Y",
"NEW_TOPIC" => "Y",
"PARAM1" => "IB",
"PARAM2" => intval($arElement["ID"])
);
$MID = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N"));
if (intval($MID) <= 0)
{
$arError[] = array(
"code" => "message is not added 1",
"title" => GetMessage("F_ERR_ADD_MESSAGE"));
CForumTopic::Delete($TOPIC_ID);
$TOPIC_ID = 0;
}
}
elseif (intval($TOPIC_ID) <= 0)
{
$DB->Rollback();
return false;
}
$DB->Commit();
return $TOPIC_ID;
}