Song:
В IP.Board 2.1 и выше есть API, которое позволяет создавать новые темы и публиковать сообщения: ./sources/api/api_topics_and_posts.php
Внутри файла есть инструкция, как пользоваться данным API.
Помимо описания назначения этих API там так же указаны примеры использования.
© sM1Le, IBR
http://www.sysman.ru/
Страница 1 из 1
Важное с Sysman.Ru:2.x: Как создать топик?
#2 Guest_RSS-Bot_*
Отправлено 16 Август 2007 - 15:27
Song: 2. Добавляем посты этого топика
Подготавливаем массив поста:
Добавляем пост в таблицу постов:
http://www.sysman.ru/
Подготавливаем массив поста:
$post = array(
'author_id' => id автора поста,
'ip_address' => ip адрес автора поста (обычно используется глобальная переменная $ibforums->input['IP_ADDRESS']),
'post_date' => время поста,
'edit_time' => время редактирования поста,
'post' => сам пост,
'author_name' => имя автора,
'forum_id' => id форума,
'topic_id' => id топика (переменная $new_topic_id, которум мы определили выше),
'queued' => премодерация (0 - нормальный пост, 1 - на премодерации),
'new_topic' => является ли первым постом темы (0/1),
'use_sig' => включить в пост подпись автора или нет (0/1),
'use_emo' => использовать в посте смайлики (0/1),
'icon_id' => id иконки,
'attach_id' => реальное имя файла аттача поста,
'attach_hits' => количество открытий аттача,
'attach_type' => тип аттача,
);
$db_string = $DB->compile_db_insert_string($post);
Добавляем пост в таблицу постов:
$DB->query("INSERT INTO ibf_posts (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
http://www.sysman.ru/
#3 Guest_RSS-Bot_*
Отправлено 16 Август 2007 - 15:18
Song: В форуме версии 1.х это делается вручную примерно следующим образом:
1. Добавляем топик (т.е. только оглавление топика, т.к. сам топик - это первый его пост).
Опеределяем массив данных топика. Делается это в следующих основных полях таблицы ibf_topics:
Добавляем топик в таблицу топиков:
На выходе имеем идентификатор топика $new_topic_id, который мы создали. Мы будем его использовать дальше.
http://www.sysman.ru/
1. Добавляем топик (т.е. только оглавление топика, т.к. сам топик - это первый его пост).
Опеределяем массив данных топика. Делается это в следующих основных полях таблицы ibf_topics:
$new_topic = array(
'title' => название топика,
'description' => описание топика,
'posts' => кол-во постов в топике,
'state' => состояние топика: 'open' - обычный топик, 'closed' - закрытый, 'link' - состояние перенаправления (например, хвост от перемещённой темы ни что иное, как топик с состоянием 'link'),
'start_date' => время начала,
'last_post' => последний пост в топике (время),
'last_poster_id' => id последнего автора в теме,
'author_mode' => не используется,
'poll_state' => состояние голосования (0 - для топика, 1 - для голосования),
'last_vote' => последний голос (время),
'views' => количество прсмотров,
'pinned' => состояние закрепления топика (1 - прикреплён),
'last_poster_name' => имя последнего автора в теме,
'icon_id' => id_иконки,
'forum_id' => id форума в котором будет находится,
'approved' => разрешён? (1 - разрешён, 0 - на премодерации),
);
Добавляем топик в таблицу топиков:
//-------------------------------------------------
// Insert the topic into the database to get the
// last inserted value of the auto_increment field
// follow suit with the post
//-------------------------------------------------
$db_string = $DB->compile_db_insert_string( $this->topic );
$DB->query("INSERT INTO ibf_topics (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
$new_topic_id = $DB->get_insert_id();
На выходе имеем идентификатор топика $new_topic_id, который мы создали. Мы будем его использовать дальше.
http://www.sysman.ru/
#4 Guest_RSS-Bot_*
Отправлено 16 Август 2007 - 15:51
Song: 3. Добавление голосования
Добавление в таблицу топиков (ibf_topics):
Голосование - это тот же топик. Отличается только лишь включенными полями:
Добавление в таблицу топиков (ibf_topics):
Голосование - это тот же топик. Отличается только лишь включенными полями:
[*]poll_state
[*]last_vote
[/list]в массиве топика $new_topic. Для создания топика (не голосования) они не задаются.
Добавление самого голосования:
Опеределяем массив данных голосования. Делается это в следующих основных полях таблицы ibf_polls:
$poll = array (
'tid' => id топика (переменная $new_topic_id, которум мы определили выше),
'forum_id' => id форума,
'start_date' => время голосования,
'choices' => serialize($варианты голосования),
'starter_id' => id автора голосования/топика,
'votes' => количество голосов,
'poll_question' => вопрос голосования,
);
Добавляем голосования в таблицу голосований:
$db_string = $std->compile_db_string( $poll );
$DB->query("INSERT INTO ibf_polls (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
Переменная $Варианты голосования определяются так:
$poll_choices = "Вариант 1<br>Вариант 2<br>Вариант 3<br>";
$Варианты голосования = array();
$count = 0;
$polls = explode( "<br>", $poll_choices );
foreach ( $polls as $polling )
{
$Варианты голосования[] = array( $count, $polling, 0 );
$count++;
}
http://www.sysman.ru/
#5 Guest_RSS-Bot_*
Отправлено 16 Август 2007 - 16:00
Song: Таким образом:
- для создания топика нужно сделать запросы по вставке в таблицы: ibf_topics, ibf_posts
- для создания голосования нужно сделать запросы по вставке в таблицы: ibf_topics, ibf_polls, ibf_posts
- для создания очередного поста в топике нужно сделать запрос по вставке только в таблицу ibf_posts
После чего нужно обновить статистику таблицы ibf_forums раздела, в который вставлялась информация. Это поля:
- для создания топика нужно сделать запросы по вставке в таблицы: ibf_topics, ibf_posts
- для создания голосования нужно сделать запросы по вставке в таблицы: ibf_topics, ibf_polls, ibf_posts
- для создания очередного поста в топике нужно сделать запрос по вставке только в таблицу ibf_posts
После чего нужно обновить статистику таблицы ibf_forums раздела, в который вставлялась информация. Это поля:
[*]last_post - время последнего топика
[*]last_poster_id - id автора последнего сообщения в этом топике
[*]last_poster_name - имя автора последнего сообщения в этом топике
[*]last_id - id последней темы в разделе
[*]last_title - название последней темы в разделе
[*]topics - количество топиков в разделе
[*]posts - количество постов в разделе
[/list]
http://www.sysman.ru/
#6 Guest_RSS-Bot_*
Отправлено 16 Август 2007 - 15:31
Song: Примечания:
1. Для облегчения формирования массива поста в зависимости от тех или иных условий, если этот пост добавлятся в одной из постовых функций (post_**.php, находятся в папке sources/lib) вызывается специальная функция класса Post (Post.php) - compile_post
В ней формируется "скелет" поста при создании топика/голосования, при ответе в него, при редактировании поста.
2. Пост сохраняется в БД в html формате, поэтому, если в посте используется оформление с помощью BB тегов, их надо переконвертировать в html формат. Это делает парсер форума. Пример сохранения в БД текста через парсер также располагается в функции compile_post. Подробней о парсере форума можно посмотреть здесь.
3. В поле posts массива топика надо занести количество добавляемых постов для этого топика, причём сам пост-топик (т.е. первое сообщение темы) не считается за полноценный пост, поэтому в это поле надо заносить количество_всех_сообщений топика - 1
4. Если вы хотите поставить топик на премодерацию, нужно выставить поле approved массива $new_topic в 0 и поле queued массива $post в 1 (первого сообщения темы).
Если нужно поставить пост на премодераци, то тогда только поле queued массива $post в 1.
5. Не обязательно заполнять все поля массива. Здесь они даны для разъяснения их предназначения. Можно не включать параметры в соответствующие массивы, и они добавятся параметрами по умолчанию.
http://www.sysman.ru/
1. Для облегчения формирования массива поста в зависимости от тех или иных условий, если этот пост добавлятся в одной из постовых функций (post_**.php, находятся в папке sources/lib) вызывается специальная функция класса Post (Post.php) - compile_post
В ней формируется "скелет" поста при создании топика/голосования, при ответе в него, при редактировании поста.
2. Пост сохраняется в БД в html формате, поэтому, если в посте используется оформление с помощью BB тегов, их надо переконвертировать в html формат. Это делает парсер форума. Пример сохранения в БД текста через парсер также располагается в функции compile_post. Подробней о парсере форума можно посмотреть здесь.
3. В поле posts массива топика надо занести количество добавляемых постов для этого топика, причём сам пост-топик (т.е. первое сообщение темы) не считается за полноценный пост, поэтому в это поле надо заносить количество_всех_сообщений топика - 1
4. Если вы хотите поставить топик на премодерацию, нужно выставить поле approved массива $new_topic в 0 и поле queued массива $post в 1 (первого сообщения темы).
Если нужно поставить пост на премодераци, то тогда только поле queued массива $post в 1.
5. Не обязательно заполнять все поля массива. Здесь они даны для разъяснения их предназначения. Можно не включать параметры в соответствующие массивы, и они добавятся параметрами по умолчанию.
http://www.sysman.ru/
- ← Важное с Sysman.Ru:Could not determine your IP address
- [ 1.x] Архив RSS с Sysman.ru
- Важное с Sysman.Ru:Модификации, предовтращающие СПАМ на форумах →
Сообщить об этой теме:
Страница 1 из 1


Тема закрыта