@mykolaim
PHP developer

Как создать тему в коде в phpBB?

Мне нужно реализовать фактически парсер для phpBB с размещением тем и комментариев к ним.
Данные я буду брать от стореннего API, мне бы посмотреть сам код для создания тем. Возможно есть уже готове расширение, которое я бы переделал.
Или можно просто напрямую создавать записи в БД, или это не комильфо ?
И где можно почитать как взаимодействовать с phpBB?
  • Вопрос задан
  • 706 просмотров
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Ответ написан
Комментировать
mizutsune
@mizutsune
Frontend Developer
Вот так выглядит код для создания темы в phpBB без использования графического интерфейса:

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);


$user_id = 2; // ID пользователя
$forum_id = 2; // ID форума 
$subject = 'Welcome to Wonderland'; // Заголовок темы
$text = 'Lorem ipsum dolor sit amet.'; // Контент темы

$user->session_create($user_id);
$auth->acl($user->data);
$user->setup();

$poll = $uid = $bitfield = $flags = '';

generate_text_for_storage($text, $uid, $bitfield, $flags, true, true, true);

$data = array(
    'forum_id'      => $forum_id,
    'topic_id'       => 0,
    'icon_id'       => false,
    'enable_bbcode'     => true,
    'enable_smilies'    => true,
    'enable_urls'       => true,
    'enable_sig'        => true,
    'message'       => $text,
    'message_md5'   => md5($text),
    'bbcode_bitfield'   => $bitfield,
    'bbcode_uid'        => $uid,
    'post_edit_locked'  => 0,
    'topic_title'       => $subject,
    'notify_set'        => false,
    'notify'            => false,
    'post_time'         => 0,
    'forum_name'        => "",
    'enable_indexing'   => true,
    'force_approved_state'    => true,
    'force_visibility'            => true,
);

$result = submit_post('post', $subject, '', POST_NORMAL, $poll, $data);

if ($result === FALSE) {
    echo "Error sending post";
} else {
    echo "Post sent successfully, URL is: $result";
}

$user->session_kill(false);


При желании и наличии опыта, можете переписать код под свои нужды, плюс улучшив безопасность и прочее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы