Использование функции ForumAddMessage не всегда удобно по ряду причин и необходимо воспользоваться классами CForumTopic::Add + CForumMessage::Add.
Это не панацея конечно просто решил помочь разобраться будущим поколениям в разработке, т.к. информации в документации мало и она крайне скудна, улучшения/дополнения приветствуются.
К прочтению:
Вот таким образом я реализовал добавление в форум $fid нового топика с сообщением.
Это не панацея конечно просто решил помочь разобраться будущим поколениям в разработке, т.к. информации в документации мало и она крайне скудна, улучшения/дополнения приветствуются.
К прочтению:
| Код |
|---|
<?
CModule::IncludeModule("forum"); //подключаем класс форума
$db_res = CForumTopic::GetList(array("ID"=>"DESC"),"" ,"" ,"1");
while ($ar_res = $db_res->Fetch()) $xID=$ar_res[ID]; // id последнего сообщения. Назовем его $xid
//массив полей для создания топика и сообщения
$arFields = Array(
"NEW_TOPIC" => "Y",
"TITLE" => $title,
"STATE" => "Y",
"USER_START_ID" => $id_user,
"USER_START_NAME" => $fio,
"START_DATE" => $time,
"POSTS" => "0",
"VIEWS" => "0",
"SORT" => "150",
"LAST_POSTER_NAME" => $fio,
"LAST_POST_DATE" => $time,
"LAST_MESSAGE_ID" => $xID++,
"POST_MESSAGE" => $text,
"USE_SMILES" => "N",
"APPROVED" => "Y",
"AUTHOR_NAME" => $fio,
"AUTHOR_ID" => $id_user,
"FORUM_ID" => $fid,
"POST_DATE" => $time,
"AUTHOR_IP" => "<no address>"
);
$ID = CForumTopic::Add($arFields);
if (IntVal($ID)<=0){
echo "Error Topic!";
if ($ID<=0 && $ex=$APPLICATION->GetException()) echo $ex->GetString();
}else echo "Топик создан[$ID]<br>";
$arFields["TOPIC_ID"]=$ID;
$ID = CForumMessage::Add($arFields);
if (IntVal($ID)<=0){
echo "Error Message!";
if ($ID<=0 && $ex=$APPLICATION->GetException()) echo $ex->GetString();
}else echo "Сообщение добавлено";
?>
|