Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[FAQ] Как программно добавить тему / пост / личное сообщение

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
goshka
phpBB 1.4.2
Сообщения: 71
Стаж: 11 лет 1 месяц
Благодарил (а): 2 раза

Re: [FAQ] Как программно добавить тему / пост / личное сообщ

Сообщение goshka »

К сожалению, ряд ссылок на полезные сообщения (в которых освещались подобные вопросы) уже не существует...
Задача. Требуется ввести в базу сообщение (с заданной датой и временем) от конкретного пользователя (user_id) в конкретную (существующую) тему (форума).
Если готовый пример подобного скрипта?
(Как в текущей сессии от текущего пользователя это сделать я понял)
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12626
Стаж: 13 лет 4 месяца
Благодарил (а): 170 раз
Поблагодарили: 2538 раз

Re: [FAQ] Как программно добавить тему / пост / личное сообщ

Сообщение Татьяна5 »

Полностью готового нет
goshka писал(а):с заданной датой и временем
[FAQ] Как программно добавить тему / пост / личное сообщение
goshka писал(а):от конкретного пользователя (user_id)
http://phpbbmodders.net/articles/3.0/create_post/ - Before we submit our post - auth & userdata
goshka писал(а):в конкретную (существующую) тему (форума)
Задать значения forum_id и topic_id в массиве $data
tornadoPlus
phpBB 1.0.0
Сообщения: 3
Стаж: 9 лет 10 месяцев
Благодарил (а): 1 раз

Re: [FAQ] Как программно добавить тему / пост / личное сообщ

Сообщение tornadoPlus »

Всем привет! У меня блог на cms WordPress и к нему прикреплен форум cms phpBB v3.1.x (http // мой сайт/forum/)
Вопрос: Реально программно добавить тему на форум phpBB при создании записи в WordPress с одинаковым названием?
Payalnik610
phpBB 1.4.1
Сообщения: 40
Стаж: 9 лет 9 месяцев
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Создание топиков - Тем на форуме с "сайта".

Сообщение Payalnik610 »

Имею сайт с таблицей - базой данных отказов изделий. И есть параллельно форум на PHPbb. Хочу сделать чтобы при добавлении записи в таблицу БД было еще и добавление темы на ФОРУМ. Как правильно реализовать? Сайт полностью рукописный на PHP
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет 8 месяцев
Благодарил (а): 57 раз
Поблагодарили: 626 раз

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Anvar »

Payalnik610
phpBB 1.4.1
Сообщения: 40
Стаж: 9 лет 9 месяцев
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Payalnik610 »

Спасибо, не то искал... теперь знаю где читать
Payalnik610
phpBB 1.4.1
Сообщения: 40
Стаж: 9 лет 9 месяцев
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Payalnik610 »

Что то ничего не получается.

Задача такая:

1. есть статичный логин и пароль для доступа к форуму.
2. 1 скрипт сгенерирует информацию требуемую для оформления темы на форуме.
3. требуется сделать авторизацию и запись в нужны форум.

Скрытый текст

Код: Выделить всё

<?php



// данные для авторизации пользователя 


// данные для записи при создании новой темы



////////////////////////////////////////////

$backup = array(
   'user'   => $user,
   'auth'   => $auth,
);

$sql = 'SELECT *
   FROM ' . USERS_TABLE . '
      WHERE user_id = ' . $user_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

$user->data = array_merge($user->data, $row);
$auth->acl($user->data);

$user->ip = '0.0.0.0';

$user = $backup['user'];
$auth = $backup['auth'];




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 . 'forum/includes/functions_posting.' . $phpEx); 

// Start session management
$user->session_begin(true); // no update_session_page
// session_create($user_id = false, $set_admin = false, $persist_login = false, $viewonline = true)


$user->session_create( $user_id , 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'		=> 3,
	'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();
echo "записано";
?>
что за USERS_TABLE использует PHPbb Если в БД только users
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 10 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1717 раз

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Sheer »

Код: Выделить всё

		$data = array(
			'topic_title'			=> $topic_title, // Subject
			'forum_id'				=> $fid, // тут ID форума
			'forum_name'			=> '',
			'icon_id'				=> 0,
			'poster_id'				=> $user_id, // Тут ID юзера, от имени которого размещается пост
			'enable_bbcode'			=> (bool) true,
			'enable_smilies'		=> (bool) true,
			'enable_urls'			=> (bool) true,
			'enable_sig' 			=> (bool) true,
			'notify'				=> 0,
			'notify_set'			=> '',
			'enable_indexing'		=> (bool) false,
			'message'				=> $topic_text,
			'message_md5'			=> (string) '',
			'bbcode_bitfield'		=> $bitfield,
			'bbcode_uid'			=> $uid,
			'post_edit_locked'		=> 0,
		);

		submit_post('post', $topic_title, $username, 0, $poll, $data, false); //  $username -  ник юзера, от имени которого размещается пост
... и не надо городить огород с сессиями и авторизацией.
Payalnik610 писал(а):что за USERS_TABLE использует PHPbb Если в БД только users
Это она и есть. Константа. Смотри ./includes/constants.php
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Payalnik610
phpBB 1.4.1
Сообщения: 40
Стаж: 9 лет 9 месяцев
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Payalnik610 »

делаю так
код 

Код: Выделить всё

<?php		

	
	$topic_title = "Шашал" ;
	$topic_text = "Как строить шалаши";
	$fid = 3;
	$user_id = 2;
	
	
		$data = array(
			'topic_title'			        => $topic_title, // Subject
			'forum_id'				=> $fid, // тут ID форума
			'forum_name'			=> '',
			'icon_id'				=> 0,
			'poster_id'				=> $user_id, // Тут ID юзера, от имени которого размещается пост
			'enable_bbcode'			=> (bool) true,
			'enable_smilies'		        => (bool) true,
			'enable_urls'			=> (bool) true,
			'enable_sig' 			=> (bool) true,
			'notify'				=> 0,
			'notify_set'			        => '',
			'enable_indexing'		=> (bool) false,
			'message'				=> $topic_text,
			'message_md5'			=> (string) '',
			'bbcode_bitfield'		        => $bitfield,
			'bbcode_uid'			=> $uid,
			'post_edit_locked'		=> 0,
		);

submit_post('post', $topic_title, $username, 0, $poll, $data, false); //  $username -  ник юзера, от имени которого размещается пост
		
?>
получаю результат :

Код: Выделить всё

Notice: Undefined variable: bitfield in C:\Web-server\htdocs\test.php on line 25

Notice: Undefined variable: uid in C:\Web-server\htdocs\test.php on line 26

Fatal error: Call to undefined function submit_post() in C:\Web-server\htdocs\test.php on line 30
При задании непосредсвенно переменых в 1 и 2 ошибке они проходят, но как избавиться от последней? почему возникает критическая ошибка
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12626
Стаж: 13 лет 4 месяца
Благодарил (а): 170 раз
Поблагодарили: 2538 раз

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Татьяна5 »

Этот блок нужен, самым первым:

Код: Выделить всё

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 . 'forum/includes/functions_posting.' . $phpEx); 
Этот тоже нужен:

Код: Выделить всё

$poll = $uid = $bitfield = $options = ''; 

generate_text_for_storage($topic_text, $uid, $bitfield, $options, true, true, true);
Payalnik610
phpBB 1.4.1
Сообщения: 40
Стаж: 9 лет 9 месяцев
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Payalnik610 »

При добавлении этого
Татьяна5 писал(а):Этот блок нужен, самым первым:

Код: Выделить всё

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 . 'forum/includes/functions_posting.' . $phpEx); 
Этот тоже нужен:

Код: Выделить всё

$poll = $uid = $bitfield = $options = ''; 

generate_text_for_storage($topic_text, $uid, $bitfield, $options, true, true, true);
выкидывает на страницу установки PHPbb....
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12626
Стаж: 13 лет 4 месяца
Благодарил (а): 170 раз
Поблагодарили: 2538 раз

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Татьяна5 »

Вообще-то на рабочем форуме не должно быть страницы установки
Payalnik610
phpBB 1.4.1
Сообщения: 40
Стаж: 9 лет 9 месяцев
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Payalnik610 »

при запуске этого скрипта :

Код: Выделить всё


<?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 . 'forum/includes/functions_posting.' . $phpEx); 
	
	$poll = $uid = $bitfield = $options = ''; 

generate_text_for_storage($topic_text, $uid, $bitfield, $options, true, true, true);
	
	$topic_title = "Шашал" ;
	$topic_text = "Как строить шалаши";
	$fid = 3;
	$user_id = 2;
	
	
		$data = array(
			'topic_title'			=> $topic_title, // Subject
			'forum_id'				=> $fid, // тут ID форума
			'forum_name'			=> '',
			'icon_id'				=> 0,
			'poster_id'				=> $user_id, // Тут ID юзера, от имени которого размещается пост
			'enable_bbcode'			=> (bool) true,
			'enable_smilies'		=> (bool) true,
			'enable_urls'			=> (bool) true,
			'enable_sig' 			=> (bool) true,
			'notify'				=> 0,
			'notify_set'			=> '',
			'enable_indexing'		=> (bool) false,
			'message'				=> $topic_text,
			'message_md5'			=> (string) '',
			'bbcode_bitfield'		=> $bitfield,
			'bbcode_uid'			=> $uid,
			'post_edit_locked'		=> 0,
		);

submit_post('post', $topic_title, $username, 0, $poll, $data, false); //  $username -  ник юзера, от имени которого размещается пост
		
?>
пытается отправить на страницу установки http://localhost/forum/install/index.php
естественно папка переименована
Это если запускать из корня форума, а если запустить из корня сайта - получаем:

Код: Выделить всё

Warning: require(/common.php) [function.require]: failed to open stream: No such file or directory in C:\Web-server\htdocs\test.php on line 6

Fatal error: require() [function.require]: Failed opening required '/common.php' (include_path='.;C:\php\pear') in C:\Web-server\htdocs\test.php on line 6
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12626
Стаж: 13 лет 4 месяца
Благодарил (а): 170 раз
Поблагодарили: 2538 раз

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Татьяна5 »

Код: Выделить всё

require_once($phpbb_root_path . 'forum/includes/functions_posting.' . $phpEx); 
Скопипастила с вашего кода. Откуда forum/?
И вместо require_once и require лучше использовать include

Второе - почему переменная $topic_text вызывается до её определения?

Добавлено спустя 1 минуту 22 секунды:
Payalnik610 писал(а):

Код: Выделить всё

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '/';
Точки не хватает

Код: Выделить всё

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 10 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1717 раз

Re: Создание топиков - Тем на форуме с "сайта".

Сообщение Sheer »

Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

Перенесено из форума FAQ в форум Для авторов 13.09.2017 18:31 модератором rxu

Вернуться в «Для разработчиков»