Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

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

Сообщение rxu »

dixon_che писал(а):Короче перестроил свои запросы через объект $db->
И это правильно.
Изображение
patison

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

Сообщение patison »

Здравствуйте!
Попытался добавить программно тему в форум. Однако уже больше часа не могу разобраться, в чём проблема. Сделал по примеру показанному на сайте (ссылка на сайт из первых постов):

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

		define('IN_PHPBB', true);
		define('PHPBB_ROOT_PATH', '/home/idweb/html_test2/');
		$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
	
		$phpEx = substr(strrchr(__FILE__, '.'), 1);
		require_once($phpbb_root_path . 'common.' . $phpEx);
		require_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);

		$my_subject	= utf8_normalize_nfc("New Post");
		$my_text	= utf8_normalize_nfc("Обсуждение песни бла бла бла");

		// 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'		=> 2,
			'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,
		);

		$result = submit_post('post', $my_subject, '', POST_NORMAL, $poll, $data);
Спотыкается на функциях generate_text_for_storage и submit_post. Ошибка вроде как заключается в том, что
PHP Fatal error: Call to a member function sql_escape() on a non-object in ../functions.php on line 146
Заранее спасибо за помощь
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2209
Стаж: 16 лет 4 месяца
Откуда: Павлодар
Благодарил (а): 5 раз
Поблагодарили: 153 раза

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

Сообщение nissin »

И форум при этом работает?
Навскидку в config.php тип БД не прописан.
Всё повторяется. nurlan.info
patison

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

Сообщение patison »

В том-то и дело что работает! Дело в том что из других файлов обращаюсь к другим функциям, и всё хорошо. А тут такое чуство, будто что-то не так подключил...
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2209
Стаж: 16 лет 4 месяца
Откуда: Павлодар
Благодарил (а): 5 раз
Поблагодарили: 153 раза

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

Сообщение nissin »

В качестве безумной идеи, попробуйти заменить на относительный путь:

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

      define('PHPBB_ROOT_PATH', '/home/idweb/html_test2/');
и ещё проверьте настройки safe_mode и open_basedir
Всё повторяется. nurlan.info
patison

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

Сообщение patison »

"безумная" идея не проконала :(
С настройками вроде тоже всё окей.. Не понятно просто почему вызов других функций работает. А здесь эта - не работает...
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

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

Сообщение rxu »

В common.php посмотрите, includes/functions_content.php подключен?
Изображение
patison

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

Сообщение patison »

Подключен. Не подключен includes/functions_posting.php, который, как я полагаю, нужен. его я подключил руками, после подключения common.php у себя в скрипте
Аватара пользователя
Izya
Former team member
Сообщения: 408
Стаж: 15 лет 7 месяцев
Откуда: Абакан, Сибирь
Благодарил (а): 1 раз

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

Сообщение Izya »

А других ошибок нет?
Изображение
patison

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

Сообщение patison »

Неа. Только эта ошибка.
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 15 лет 2 месяца
Благодарил (а): 2 раза

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

Сообщение MenX »

Подскажите пожалуйста, каким образом можно получить текущую сессию? А то создавать новую не айс.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

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

Сообщение rxu »

1) причем тут эта тема?
2) что значит получить сессию? Интеграция сессии

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

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
Но это совсем другая тема.
Изображение
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 15 лет 2 месяца
Благодарил (а): 2 раза

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

Сообщение MenX »

rxu
Это какраз та тема. Я программно добавляю пост, а меня кидает из админки. Вот и хочу без поднятия новой сессии под id админа. Т.е. просто получить текущую сессию админа.

Добавлено спустя 22 минуты 7 секунд:
И еще один вопросик с ходу:
Меняю значение в post_time массива data, а конечный пост пишется всё-равно с текущим тайм штампом. Подскажите каким образом я могу передать в submit_post () произвольный тайм штамп?
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 15 лет 2 месяца
Благодарил (а): 2 раза

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

Сообщение MenX »

Не ужели никто не может подсказать по post_time?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

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

Сообщение rxu »

posting.php

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

'post_time'				=> (isset($post_data['post_time'])) ? (int) $post_data['post_time'] : $current_time,
из массива $data.
Изображение
Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

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

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