Создать пост программно в существующей теме

waki

Проверенные
Сообщения
7
Реакции
5
Баллы
1,700
Находил как создать тему, но не могу найти как программно добавлять пост в существующей теме или можно просто инсерт сделать?

Создание темы делаю так,
PHP:
function createThread($user_id, $username, $post_date, $title, $node_id, $message) {
    $ThreadWriter = XenForo_DataWriter::create( 'XenForo_DataWriter_Discussion_Thread' );
    $ThreadWriter->set( 'user_id', $user_id );
    $ThreadWriter->set( 'username', $username );
    $ThreadWriter->set( 'post_date', $post_date );
    $ThreadWriter->set( 'title', $title );

    $forumModel = XenForo_Model::create('XenForo_Model_Forum');
    $forum = $forumModel->getForumById( $node_id );

    $ThreadWriter->set( 'node_id', $forum['node_id'] );

    $threadModel = XenForo_Model_Post::create('XenForo_Model_Post');
    $ThreadWriter->set( 'discussion_state', $threadModel->getPostInsertMessageState( array(), $forum ) );

    $postWriter = $ThreadWriter->getFirstMessageDw();
    $postWriter->set( 'message', $message );
    $postWriter->setExtraData( XenForo_DataWriter_DiscussionMessage::DATA_ATTACHMENT_HASH, '' );
    $ThreadWriter->preSave();

    if ( ! $ThreadWriter->hasErrors() ) {

        $ThreadWriter->save();

        $thread = $ThreadWriter->getMergedData();

        return $thread['thread_id'];
    }

        return false;
}

Как добавить пост в существующую тему?
 
Последнее редактирование:
Нашел, оставлю тут для истории
PHP:
   function createPost($thread_id, $user_id, $username, $post_date, $message) {
        $postWriter = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post');
        $postWriter->set( 'user_id', $user_id) ;
        $postWriter->set( 'username', $username );
        $postWriter->set( 'post_date', $post_date );
        $postWriter->set( 'message', $message );
        $postWriter->set( 'thread_id', $thread_id );
        $postWriter->preSave();

        if (!$postWriter->hasErrors()) {
            $postWriter->save();

            return $postWriter->get('post_id');
        }

        return false;
    }
 
Еще есть вариант через bulkSet. Сути дела не меняет, но пишут вроде так правильнее.

Как-то так:

Код:
$dw = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post');

$dw->bulkSet(array(
    'user_id' => $data['user_id'],
    'username' => $data['username'],
    'title' => $data['title'],
    'thread_id' => $data['thread_id'],
    'node_id' => $data['forumId'],
));

$dw->bulkSet($dwInput);
$dw->setExtraData(XenForo_DataWriter_DiscussionMessage_Post::DATA_FORUM, $forum);
$dw->save();
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу