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

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

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

Сообщение MenX »

вообще получается, что невозможно запостить с произвольным тайм-штампом
поскольку:

functions_posting.php

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

function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $update_message = true)
..................................................................................................................................
if ($post_mode == 'post')
		{
			$sql_data[TOPICS_TABLE]['sql'] = array(
				'topic_first_post_id'		=> $data['post_id'],
				'topic_last_post_id'		=> $data['post_id'],

>>>>>>>>>>> 'topic_last_post_time'		=> $current_time, <<<<<<<<<<<<<<<

				'topic_last_poster_id'		=> (int) $user->data['user_id'],
				'topic_last_poster_name'	=> (!$user->data['is_registered'] && $username) ? $username : (($user->data['user_id'] != ANONYMOUS) ? $user->data['username'] : ''),
				'topic_last_poster_colour'	=> $user->data['user_colour'],
				'topic_last_post_subject'	=> (string) $subject,
			);
		}
..................................................................................................................................
а значение переменной $current_time присваивается внутри функции submit_post()

может есть какие-нибудь соображения?
Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 18 лет 9 месяцев
Поблагодарили: 3 раза

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

Сообщение Rayden »

Сделай функцию function submit_post_program с изменениями в нужной строке
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 14 лет
Откуда: Зеленоград
Благодарил (а): 37 раз
Поблагодарили: 39 раз

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

Сообщение HAMMER663 »

а как взять например из новости информацию и добавить на форум?

Добавлено спустя 1 час 18 минут 27 секунд:
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
ругается что-то:
SQL ERROR [ mysql4 ]
Column 'post_text' cannot be null [1048]

сам код:

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

<?php
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);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$my_subject = utf8_normalize_nfc(request_var('New Post', '', true));
$post_text    = utf8_normalize_nfc(request_var('Обсуждение разного бла бла бла', '', true));

$submit = (isset($_POST['submit'])) ? true : false;

		// 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($post_text, $uid, $bitfield, $options, true, true, true);
		
		$data = array( 
			'forum_id'		=> 26,
			'icon_id'		=> false,
			'enable_bbcode'		=> true,
			'enable_smilies'	=> true,
			'enable_urls'		=> true,
			'enable_sig'		=> true,
            'from_user_id'      => $user->data['user_id'],
            'from_username'     => $user->data['username'],
            'from_user_ip'      => $user->data['user_ip'],
			
            'enable_bbcode'     => true,
            'enable_smilies'    => true,
            'enable_urls'       => true,
            'enable_sig'        => true,	
			
			'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);
?>
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

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

Сообщение rxu »

HAMMER663 писал(а):Column 'post_text' cannot be null
Вы $post_text сформировали, но никуда потом не использовали.
Изображение
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 14 лет
Откуда: Зеленоград
Благодарил (а): 37 раз
Поблагодарили: 39 раз

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

Сообщение HAMMER663 »

С этим я разобрался. спасибо Вам большое!
теперь появился другой вопрос. Вот мне надо чтобы тема формировалась из данных статьи на сайте. то есть к примеру есть статья, в ней есть ссылка "Обсудить на форуме". нажимая на нее создается тема с содержимым статьи. Как это можно сделать?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

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

Сообщение rxu »

Статья хранится в базе данных.
Берите оттуда текст и зашивайте его в $post_text как положено, создавайте тему.
Изображение
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 14 лет
Откуда: Зеленоград
Благодарил (а): 37 раз
Поблагодарили: 39 раз

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

Сообщение HAMMER663 »

что-то так ничего и не получилось.. как правильно передать текст в $post_text?
PekopT
phpBB 1.2.1
Сообщения: 25
Стаж: 16 лет 6 месяцев

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

Сообщение PekopT »

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

	define('IN_PHPBB', true);
	$phpbb_root_path = './';
	$phpEx = substr(strrchr(__FILE__, '.'), 1);
	require($phpbb_root_path . 'common.'.$phpEx);
	require($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
              
              $subj = utf8_normalize_nfc("Аппеляция бана (".$usr['player_nick'].")");
	$topic_poster = $userid['user_id'];
	//$a = postforum('post', null, $subj, $post_text, $topic_rights);
	
	$poll = $uid = $bitfield = $options = ''; 
	
	generate_text_for_storage($subj, $uid, $bitfield, $options, false, false, false);
	generate_text_for_storage($post_text, $uid, $bitfield, $options, true, true, true);
	
	$data = array( 
	   'forum_id'      => 124,
	   //'topic_id'	=> $topicid,
	   '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'      => $subj,
	   'notify_set'      => false,
	   'notify'         => false,
	   'post_time'       => 0,
	   'forum_name'      => '',
	   'enable_indexing'   => true,
	   'topic_moderator' => $topic_rights,
	   'force_approved_state'  => true,
	);

	
	$turl = submit_post('post', $subj, '', POST_NORMAL, $poll, $data);
Всё вроде делаю нормально а возникает ошибка

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

Return to index page 
General Error
SQL ERROR [ mysql4 ]

[]

SQL

UPDATE phpbb_config SET config_value = '' WHERE config_name = ''

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/functions.php
LINE: 149
CALL: dbal_mysql->sql_query()

FILE: includes/functions.php
LINE: 225
CALL: set_config()

FILE: includes/message_parser.php
LINE: 1054
CALL: unique_id()

FILE: includes/functions_content.php
LINE: 472
CALL: parse_message->parse_message()

FILE: appelation.php
LINE: 293
CALL: generate_text_for_storage()
ткните носом где неправ, а то я вторые сутки в общем ковыряюсь...
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

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

Сообщение rxu »

PekopT писал(а):FILE: appelation.php
LINE: 293
CALL: generate_text_for_storage()
Что в строке 293?
Изображение
PekopT
phpBB 1.2.1
Сообщения: 25
Стаж: 16 лет 6 месяцев

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

Сообщение PekopT »

вот

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

generate_text_for_storage($subj, $uid, $bitfield, $options, false, false, false);
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

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

Сообщение rxu »

Скрипт сохранен в кодировке UTF-8 without BOM?
Изображение
PekopT
phpBB 1.2.1
Сообщения: 25
Стаж: 16 лет 6 месяцев

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

Сообщение PekopT »

да.

Добавлено спустя 15 минут 40 секунд:
Re: [FAQ] Как программно добавить тему / пост / личное сообщение
чего делатьто??! (((
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

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

Сообщение rxu »

А $post_text чему равен?
Изображение
PekopT
phpBB 1.2.1
Сообщения: 25
Стаж: 16 лет 6 месяцев

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

Сообщение PekopT »

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

	$post_text = "
		Ник: ".$usr['player_nick']."
		STEAM ID: ".$usr['player_id']."
		Админ: ".$adm."
		Дата бана: ".$ban_created."
		Срок: ".$ban_length."
		Причина: ".$ban_reason."
		IP адрес бана: ".$usr['player_ip']."
		IP адрес аппеляции: ".$ip."
		IP на форуме: ".$userid['user_ip']."
		Сервер: ".$srv."
		Демо / Доказательство: ".$demolink."
		";
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

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

Сообщение rxu »

Gj[Похоже, не срабатывает функция unique_id(), пока неясно, почему.
Изображение
Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

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

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