Использование функции ForumAddMessage не всегда удобно по ряду причин и необходимо воспользоваться классами CForumTopic::Add + CForumMessage::Add.
Это не панацея конечно просто решил помочь разобраться будущим поколениям в разработке, т.к. информации в документации мало и она крайне скудна, улучшения/дополнения приветствуются.
К прочтению:
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 "Сообщение добавлено"; ?> |