Страница 1 из 10
[FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 02.06.2008 15:16
crafter
Автоматическое создание темы / сообщения.
Как правильно программно создавать темы/сообщения под нужным юзером сторонним скриптом?
Добавлено: 02.06.2008 18:09
Поручик
Re: Программно добавить тему/пост под нужным юзером
Добавлено: 04.06.2008 0:29
crafter
Код: Выделить всё
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
require_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
// Start session management
$user->session_begin(false); // no update_session_page
// session_create($user_id = false, $set_admin = false, $persist_login = false, $viewonline = true)
$user->session_create( [USER_ID_HERE], false, false, false);
$auth->acl($user->data);
$user->setup();
$my_subject = utf8_normalize_nfc(utf8_recode('subject test [русский сабж 3] text', 'windows-1251'));
$my_text = utf8_normalize_nfc(utf8_recode('this is [русский текст 3] a text', 'windows-1251'));
// variables to hold the parameters for submit_post
$poll = $uid = $bitfield = $options = '';
generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
$data = array(
'forum_id' => [FORUM_ID_HERE],
'icon_id' => false,
'enable_bbcode' => true,
'enable_smilies' => true,
'enable_urls' => true,
'enable_sig' => true,
'message' => $my_text,
'message_md5' => md5($my_text),
'bbcode_bitfield' => $bitfield,
'bbcode_uid' => $uid,
'post_edit_locked' => 0,
'topic_title' => $my_subject,
'notify_set' => false,
'notify' => false,
'post_time' => 0,
'forum_name' => '',
'enable_indexing' => true,
);
submit_post('post', $my_subject, '', POST_NORMAL, $poll, $data);
$user->session_kill();
?>
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 30.08.2008 2:11
Koyot
Код: Выделить всё
<?
define('IN_PHPBB', true);
// Set phpBB root folder properly. Change in according to the actual board folder
define('PHPBB_ROOT_PATH', './forum/');
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('ucp');
// Initialize login result array
$login = array();
// Handle logouot button if pressed
if(isset($_POST['logout']) && $user->data['user_id'] != ANONYMOUS)
{
$user->session_kill();
}
// Check if user has submitted login and password and try to log in
if(isset($_POST['login']) && $user->data['user_id'] == ANONYMOUS)
{
$username = request_var('username', '', true);
$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$login = $auth->login($username, $password, $autologin);
}
// Send headers
header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: 0');
header('Pragma: no-cache');
// Check if user has tried to log in and greet him if login is successful
if((!empty($login) && $login['status'] == LOGIN_SUCCESS) || $user->data['user_id'] != ANONYMOUS)
{
// Reset permissions data if user has just logged in
}
?>
на сайте уже есть этот код, как создать тему не создавая сессию новую? а то создавать сессию новую не хочется
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 30.08.2008 5:45
rxu
Koyot
Естественно, в рамках одной сессии можно использовать код для создания тем/сообщений (начинается с $my_subject = и заканчивается вызовом submit_post).
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 03.09.2008 18:44
RavenS
Доброго времени суток.
У меня вопрос, более сложный, чем просто программное добавление тем...
Вобщем:
В конференции есть подфорум под названием Библиотека. Администратор периодически добавляет туда новые материалы, типа статей и учебников. Допустим, есть некоторая форма с полями "Название темы", "Комментарий к материалу", "Материал". Админ заполняет поля, нажимает Отправить, и на форуме создаётся тема с "Название темы", вложенным материалом "Материал", и описанием темы "Комментарий к материалу", а также с опросом "Оцените материал по n-бальной шкале". Допустим, по пятибальной. Варианты ответов на опрос: числа от 1 до 5 соответственно...
Возможно ли такое реализовать? В каком направлении копать?
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 03.09.2008 19:06
rxu
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 09.03.2009 14:54
dixon_che
С добавлением поста понятно, а как добавить новый топик?
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 09.03.2009 15:13
rxu
В режиме 'post' добавляется новая тема, в режиме 'reply' добавляется ответ в существующую тему.
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 10.03.2009 11:02
dixon_che
Спасибо! Разобрался.
А есть ли готовый рецепт добавления поста от имени другого пользователя?
http://www.phpbb.com/community/viewtopi ... 5#p4028115 - здесь сказано что это не так просто, но больше ничего по этому поводу на этом форуме не нашел.
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 10.03.2009 11:24
Поручик
Как-то так, и читаем далее.
http://www.phpbb.com/community/viewtopi ... 9#p3630225
Иными словами, надо вызвать $auth->acl() для определения прав доступа другого пользователя.
Добавлено спустя 4 минуты 44 секунды:
submit_post - spoof auth?
http://www.phpbb.com/community/viewtopi ... 5#p4624845
Короче, материалов на офе полно, как ты искал, не понимаю.
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 10.03.2009 12:00
dixon_che
За линки спасибо - но там как-то муторно все описано...
Замечательное описание есть здесь:
http://phpbbmodders.net/articles/3.0/create_post/
И главное заработало из коробки.
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 10.03.2009 16:04
dixon_che
Есть проблема.
Когда в скрипте нет ничего кроме кода добавления форума - все работает замечательно.
Но если перед вызовом функции submit_post я что-то вычитываю из базы - мне светит такую ошибку:
Код: Выделить всё
General Error
SQL ERROR [ mysql4 ]
[]
BACKTRACE
FILE: includes/db/dbal.php
LINE: 264
CALL: dbal_mysql->sql_error()
FILE: includes/functions_posting.php
LINE: 1617
CALL: dbal_mysql->sql_transaction()
FILE: post_new_forum.php
LINE: 82
CALL: submit_post()
Базу открываю, читаю, результат чищу, закрываю...
Не подскажите как лечить?
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 10.03.2009 18:05
rxu
dixon_che
А какой ваш скрипт вызывает ошибку - нам телепатировать?
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Добавлено: 10.03.2009 19:33
dixon_che
Это все что выводится на странице при ошибке.
В sql log ничего нету по поводу этой ошибки.
Но это уже не важно. Я кажется понял в чем проблема. Нельзя в рамках одного скрипта пользоваться phpbb подключением к БД и своим собственным.
Короче перестроил свои запросы через объект $db->...
Код: Выделить всё
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
Все заработало.
Спасибо за участие!