[FAQ] Как программно добавить тему / пост / личное сообщение
					Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
 ).
		
		
	Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
 ).
 ).
		
		- 
				crafter
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 17 лет 5 месяцев
[FAQ] Как программно добавить тему / пост / личное сообщение
Автоматическое создание темы / сообщения.
Как правильно программно создавать темы/сообщения под нужным юзером сторонним скриптом?
			
			
									
						Как правильно программно создавать темы/сообщения под нужным юзером сторонним скриптом?
- 
				Поручик  
- Former team member
- Сообщения: 3942
- Стаж: 20 лет 5 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Воспользуйтесь штатными средствами phpBB3
Inserting Posts and Private Messages
Ответы на некоторые вопросы содержатся в темах
How to create new threads, posts and private messages?
API submit_post
Create a new post
submit_post function leaves slashes in db
			
			
									
						Inserting Posts and Private Messages
Ответы на некоторые вопросы содержатся в темах
How to create new threads, posts and private messages?
API submit_post
Create a new post
submit_post function leaves slashes in db
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
			
						Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
- 
				crafter
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 17 лет 5 месяцев
Re: Программно добавить тему/пост под нужным юзером
Код: Выделить всё
<?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();
?>- 
				Koyot
- phpBB 1.4.0
- Сообщения: 32
- Стаж: 17 лет 8 месяцев
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Код: Выделить всё
<?
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
	
}
?>- 
				rxu  
- phpBB Guru 
- Сообщения: 17059
- Стаж: 19 лет 5 месяцев
- Откуда: Красноярск
- Благодарил (а): 565 раз
- Поблагодарили: 1742 раза
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Koyot
Естественно, в рамках одной сессии можно использовать код для создания тем/сообщений (начинается с $my_subject = и заканчивается вызовом submit_post).
			
			
									
						Естественно, в рамках одной сессии можно использовать код для создания тем/сообщений (начинается с $my_subject = и заканчивается вызовом submit_post).
- 
				RavenS  
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 17 лет 1 месяц
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Доброго времени суток.
У меня вопрос, более сложный, чем просто программное добавление тем...
Вобщем:
В конференции есть подфорум под названием Библиотека. Администратор периодически добавляет туда новые материалы, типа статей и учебников. Допустим, есть некоторая форма с полями "Название темы", "Комментарий к материалу", "Материал". Админ заполняет поля, нажимает Отправить, и на форуме создаётся тема с "Название темы", вложенным материалом "Материал", и описанием темы "Комментарий к материалу", а также с опросом "Оцените материал по n-бальной шкале". Допустим, по пятибальной. Варианты ответов на опрос: числа от 1 до 5 соответственно...
Возможно ли такое реализовать? В каком направлении копать?
			
			
									
						У меня вопрос, более сложный, чем просто программное добавление тем...
Вобщем:
В конференции есть подфорум под названием Библиотека. Администратор периодически добавляет туда новые материалы, типа статей и учебников. Допустим, есть некоторая форма с полями "Название темы", "Комментарий к материалу", "Материал". Админ заполняет поля, нажимает Отправить, и на форуме создаётся тема с "Название темы", вложенным материалом "Материал", и описанием темы "Комментарий к материалу", а также с опросом "Оцените материал по n-бальной шкале". Допустим, по пятибальной. Варианты ответов на опрос: числа от 1 до 5 соответственно...
Возможно ли такое реализовать? В каком направлении копать?
- 
				dixon_che
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 16 лет 7 месяцев
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
С добавлением поста понятно, а как добавить новый топик?
			
			
									
						- 
				rxu  
- phpBB Guru 
- Сообщения: 17059
- Стаж: 19 лет 5 месяцев
- Откуда: Красноярск
- Благодарил (а): 565 раз
- Поблагодарили: 1742 раза
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
В режиме 'post' добавляется новая тема, в режиме 'reply' добавляется ответ в существующую тему.
			
			
									
						- 
				dixon_che
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 16 лет 7 месяцев
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Спасибо! Разобрался.
А есть ли готовый рецепт добавления поста от имени другого пользователя?
http://www.phpbb.com/community/viewtopi ... 5#p4028115 - здесь сказано что это не так просто, но больше ничего по этому поводу на этом форуме не нашел.
			
			
									
						А есть ли готовый рецепт добавления поста от имени другого пользователя?
http://www.phpbb.com/community/viewtopi ... 5#p4028115 - здесь сказано что это не так просто, но больше ничего по этому поводу на этом форуме не нашел.
- 
				Поручик  
- Former team member
- Сообщения: 3942
- Стаж: 20 лет 5 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Как-то так, и читаем далее.
http://www.phpbb.com/community/viewtopi ... 9#p3630225
Иными словами, надо вызвать $auth->acl() для определения прав доступа другого пользователя.
Добавлено спустя 4 минуты 44 секунды:
submit_post - spoof auth?
http://www.phpbb.com/community/viewtopi ... 5#p4624845
Короче, материалов на офе полно, как ты искал, не понимаю.
			
			
									
						http://www.phpbb.com/community/viewtopi ... 9#p3630225
Иными словами, надо вызвать $auth->acl() для определения прав доступа другого пользователя.
Добавлено спустя 4 минуты 44 секунды:
submit_post - spoof auth?
http://www.phpbb.com/community/viewtopi ... 5#p4624845
Короче, материалов на офе полно, как ты искал, не понимаю.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
			
						Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
- 
				dixon_che
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 16 лет 7 месяцев
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
За линки спасибо - но там как-то муторно все описано...
Замечательное описание есть здесь:
http://phpbbmodders.net/articles/3.0/create_post/
И главное заработало из коробки.
			
			
									
						Замечательное описание есть здесь:
http://phpbbmodders.net/articles/3.0/create_post/
И главное заработало из коробки.
- 
				dixon_che
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 16 лет 7 месяцев
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Есть проблема.
Когда в скрипте нет ничего кроме кода добавления форума - все работает замечательно.
Но если перед вызовом функции submit_post я что-то вычитываю из базы - мне светит такую ошибку:
Базу открываю, читаю, результат чищу, закрываю...
Не подскажите как лечить?
			
			
									
						Когда в скрипте нет ничего кроме кода добавления форума - все работает замечательно.
Но если перед вызовом функции 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()
Не подскажите как лечить?
- 
				rxu  
- phpBB Guru 
- Сообщения: 17059
- Стаж: 19 лет 5 месяцев
- Откуда: Красноярск
- Благодарил (а): 565 раз
- Поблагодарили: 1742 раза
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
dixon_che
А какой ваш скрипт вызывает ошибку - нам телепатировать?
			
			
									
						А какой ваш скрипт вызывает ошибку - нам телепатировать?
- 
				dixon_che
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 16 лет 7 месяцев
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
Это все что выводится на странице при ошибке.
В sql log ничего нету по поводу этой ошибки.
Но это уже не важно. Я кажется понял в чем проблема. Нельзя в рамках одного скрипта пользоваться phpbb подключением к БД и своим собственным.
Короче перестроил свои запросы через объект $db->...
Все заработало.
Спасибо за участие!
			
			
									
						В sql log ничего нету по поводу этой ошибки.
Но это уже не важно. Я кажется понял в чем проблема. Нельзя в рамках одного скрипта пользоваться phpbb подключением к БД и своим собственным.
Короче перестроил свои запросы через объект $db->...
Код: Выделить всё
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);Спасибо за участие!

