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

Мануальное добавление топиков.

Форум для авторов модов для phpBB 2.0.x.
mckey

Мануальное добавление топиков.

Сообщение mckey »

Как манулально добавлять топики? Т.е. не использую сам скрипт форума. Мне надо чтобы при создании новых разделов на сайте автоматически создавались топики на форуме.

Может кто подскажет?

Вот например у меня есть:
Уже существующий раздел форума - FAQ.
Зарегистрированый пользователь - USER.
База данных MySQL 3.
Тема топика который надо добавить - TOPIC THEME.
Текст топика - TOPIC TEXT.

Мне всего лишь надо знать в какие поля каких таблиц надо добавлять вышеописанные данные.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Необходимо будет работать со следующими таблицами: phpbb_posts, phpbb_posts_text, phpbb_topics

Структура phpbb_posts:

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

  `post_id` mediumint(8) unsigned NOT NULL auto_increment, - id сообщения
  `topic_id` mediumint(8) unsigned NOT NULL default '0', - id темы
  `forum_id` smallint(5) unsigned NOT NULL default '0', - id форума
  `poster_id` mediumint(8) NOT NULL default '0', - id автора
  `post_time` int(11) NOT NULL default '0', - время в формате unix timestamp
  `poster_ip` varchar(8) NOT NULL default '', - ip пользователя, закодирован в 16-ричной системе счисления
  `post_username` varchar(25) default NULL, - имя пользователя, если сообщение отправлено гостем
  `enable_bbcode` tinyint(1) NOT NULL default '1', - BBCode
  `enable_html` tinyint(1) NOT NULL default '0', - html
  `enable_smilies` tinyint(1) NOT NULL default '1', - смайлики
  `enable_sig` tinyint(1) NOT NULL default '1', - подпись
  `post_edit_time` int(11) default NULL, - время последнего редактирования
  `post_edit_count` smallint(5) unsigned NOT NULL default '0', - количество редактирований
Структура phpbb_posts_text:

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

  `post_id` mediumint(8) unsigned NOT NULL default '0', - id сообщения
  `bbcode_uid` varchar(10) NOT NULL default '', - уникальный id ббкода
  `post_subject` varchar(60) default NULL, - тема
  `post_text` text, - текст
Структура phpbb_topics:

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

  `topic_id` mediumint(8) unsigned NOT NULL auto_increment, - id темы
  `forum_id` smallint(8) unsigned NOT NULL default '0', - id форума
  `topic_title` char(60) NOT NULL default '', - название темы
  `topic_poster` mediumint(8) NOT NULL default '0', - id автора
  `topic_time` int(11) NOT NULL default '0', - время начала темы (unix timestamp)
  `topic_views` mediumint(8) unsigned NOT NULL default '0', - просмотров
  `topic_replies` mediumint(8) unsigned NOT NULL default '0', - ответов
  `topic_status` tinyint(3) NOT NULL default '0', - статус темы
  `topic_vote` tinyint(1) NOT NULL default '0', - id опроса (если есть)
  `topic_type` tinyint(3) NOT NULL default '0', - тип темы
  `topic_first_post_id` mediumint(8) unsigned NOT NULL default '0', - id первого поста темы
  `topic_last_post_id` mediumint(8) unsigned NOT NULL default '0', - id последнего поста темы
  `topic_moved_id` mediumint(8) unsigned NOT NULL default '0', - если тема была перемещена, то здесь id новой темы
Сначала создаешь пост. Затем, имея уже на руках его id - создаешь текст. Потом - тему. В заключение добавляешь тему в поисковую систему форума и обновляешь поле forum_last_post_id в таблице phpbb_forums.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
mckey

Сообщение mckey »

Ну спасиба! :-) Ща буду пробывать.

Добавлено спустя 1 час 21 минуту 37 секунд:

Впринципе всё более-менее понятно, кроме одного: что есть
`bbcode_uid` varchar(10) NOT NULL default '', - уникальный id ббкода
и откуда он берётся? (Или по какому принципу создаётся)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

mckey
Он создается следующей функцией:

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

function make_bbcode_uid()
{
	// Unique ID for this message..

	$uid = md5(mt_rand());
	$uid = substr($uid, 0, BBCODE_UID_LEN);

	return $uid;
}
BBCODE_UID_LEN равно 10. Сам же уникальный id подставляется в парные теги bbcode, т.е. вместо мы должны записать в БД [b:uid]
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Mefisto

Сообщение Mefisto »

спасибо!
romutis
phpBB 1.4.4
Сообщения: 103
Зарегистрирован: 19 лет 10 месяцев

Re: Мануальное добавление топиков.

Сообщение romutis »

mckey писал(а):Как манулально добавлять топики? Т.е. не использую сам скрипт форума. Мне надо чтобы при создании новых разделов на сайте автоматически создавались топики на форуме.

Может кто подскажет?

Вот например у меня есть:
Уже существующий раздел форума - FAQ.
Зарегистрированый пользователь - USER.
База данных MySQL 3.
Тема топика который надо добавить - TOPIC THEME.
Текст топика - TOPIC TEXT.

Мне всего лишь надо знать в какие поля каких таблиц надо добавлять вышеописанные данные.
Возьми "[Function] Insert Post", написанную netclectic:
http://www.netclectic.com/forums/download.php?id=154
Там есть всё для добавления новых сообщений/топиков. Только вызывай функцию с нужными параметрами - будут тебе новые топики. :)
// romutis
mckey

Сообщение mckey »

Он создается следующей функцией:
Код:
function make_bbcode_uid()
{
// Unique ID for this message..

$uid = md5(mt_rand());
$uid = substr($uid, 0, BBCODE_UID_LEN);

return $uid;
}


BBCODE_UID_LEN равно 10. Сам же уникальный id подставляется в парные теги bbcode, т.е. вместо мы должны записать в БД [b:uid]


Ага, вроде понятное. Сегодня вечером буду пробывать.
-------------------------------
Возьми "[Function] Insert Post", написанную netclectic:
http://www.netclectic.com/forums/download.php?id=154
Там есть всё для добавления новых сообщений/топиков. Только вызывай функцию с нужными параметрами - будут тебе новые топики.


Да помоему легче своё написать. Ато хрен его знает как там эти перцы чего написали. Разбираться в уже написанном часто бывает сложнее, чем написать самому.
romutis
phpBB 1.4.4
Сообщения: 103
Зарегистрирован: 19 лет 10 месяцев

Сообщение romutis »

mckey писал(а):Да помоему легче своё написать. Ато хрен его знает как там эти перцы чего написали. Разбираться в уже написанном часто бывает сложнее, чем написать самому.
Да там не надо ничего разбираться. Вызываешь функцию с нужными параметрами - и готово! "Внутренности" функции даже знать необязательно. А то, что netclectic пишет правильный код - у меня, лично, сомнений нет.

Хотя, хозяин-барин.
// romutis
mckey

Сообщение mckey »

Всё круто! :) Всё заработало.

Только надо ещё обязательно увеличивать ещё поля forum_posts и forum_topics в таблице phpbb_forums. Ато потом добавленые посты и топики считаться не будут.
Да там не надо ничего разбираться. Вызываешь функцию с нужными параметрами - и готово! "Внутренности" функции даже знать необязательно. А то, что netclectic пишет правильный код - у меня, лично, сомнений нет.
romutis, мне, как начинающему php'шнику гораздо полезнее написать какую-нить функцию самому, нежели пользоваться наработками других.

З.Ы.
А в том, что netclectic пишет правильный код я даже не сомневаюсь.
mckey

Сообщение mckey »

Шото у меня один и тот же bbcode_uid всегда генерится. :(
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

mckey
Sorry, забыл сказать про это:

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

// Need to initialize the random numbers only ONCE
mt_srand( (double) microtime() * 1000000);
Необходимо вставить в начало скрипта.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
mckey

Сообщение mckey »

Вот это совсем другое дело! :D
Щас всё работает как надо.
Только я не понимаю КАК это работает.
Почему в названия функций разные? - mt_srand и mt_rand?
Я начинающий пхп'шник, и поэтому, если можно, плз покомменитруй.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

mckey
Читаем:
http://www.php.net/manual/en/function.mt-rand.php
http://www.php.net/manual/en/function.mt-srand.php

Разные ф-и, (видимо) разные алгоритмы.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
mckey

Сообщение mckey »

А как подсчитать кол-во ответов в треде?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

mckey
А зачем его считать?
Оно содержится в параметре 'topic_replies' в таблице, отвечающей за темы.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений

Вернуться в «Для авторов (phpBB 2.0.x)»