Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Важное с Sysman.Ru: 2.x: Как создать топик?

Опубликовано:

Song:

В IP.Board 2.1 и выше есть API, которое позволяет создавать новые темы и публиковать сообщения: ./sources/api/api_topics_and_posts.php

 

Внутри файла есть инструкция, как пользоваться данным API.

Помимо описания назначения этих API там так же указаны примеры использования.

 

© sM1Le, IBR

Рекомендованные сообщения

Опубликовано:

Song: В форуме версии 1.х это делается вручную примерно следующим образом:

 

1. Добавляем топик (т.е. только оглавление топика, т.к. сам топик - это первый его пост).

 

Опеределяем массив данных топика. Делается это в следующих основных полях таблицы ibf_topics:

[color=#048284]$new_topic[/color] = [b]array[/b](            'title'     => название топика,            'description'     => описание топика,            'posts'         => кол-во постов в топике,            'state'     => состояние топика: 'open' - обычный топик, 'closed' - закрытый, 'link' - состояние перенаправления (например, хвост от перемещённой темы ни что иное, как топик с состоянием 'link'),            'start_date'     => время начала,            'last_post'     => последний пост в топике (время),            'last_poster_id'   => id последнего автора в теме,            'author_mode'      => не используется,            'poll_state'       => состояние голосования ([color=navy]0[/color] - для топика, [color=navy]1[/color] - для голосования),            'last_vote'        => последний голос (время),            'views'            => количество прсмотров,            'pinned'           => состояние закрепления топика ([color=navy]1[/color] - прикреплён),            'last_poster_name' => имя последнего автора в теме,            'icon_id'     => id_иконки,            'forum_id'     => id форума в котором будет находится,            'approved'        => разрешён? ([color=navy]1[/color] - разрешён, [color=navy]0[/color] - на премодерации),     );

 

Добавляем топик в таблицу топиков:

        [color=green]//-------------------------------------------------[/color]        [color=green]// Insert the topic into the database to get the[/color]        [color=green]// last inserted value of the auto_increment field[/color]        [color=green]// follow suit with the post[/color]        [color=green]//-------------------------------------------------[/color]                [color=#048284]$db_string[/color] = [color=#048284]$DB[/color]->compile_db_insert_string( [color=#048284]$this[/color]->topic );                [color=#048284]$DB[/color]->query("INSERT INTO ibf_topics (" .[color=#048284]$db_string[/color]['FIELD_NAMES']. ") VALUES (". [color=#048284]$db_string[/color]['FIELD_VALUES'] .")");        [color=#048284]$new_topic_id[/color]  = [color=#048284]$DB[/color]->get_insert_id();

 

На выходе имеем идентификатор топика $new_topic_id, который мы создали. Мы будем его использовать дальше.

Опубликовано:

Song: 2. Добавляем посты этого топика

 

Подготавливаем массив поста:

[color=#048284]$post[/color]         = [b]array[/b](            'author_id'       => id автора поста,            'ip_address'      => ip адрес автора поста (обычно используется глобальная переменная [color=#048284]$ibforums[/color]->input['IP_ADDRESS']),            'post_date'       => время поста,            'edit_time'       => время редактирования поста,            'post'            => сам пост,            'author_name'     => имя автора,            'forum_id'        => id форума,            'topic_id'        => id топика (переменная [color=#048284]$new_topic_id[/color], которум мы определили выше),            'queued'          => премодерация ([color=navy]0[/color] - нормальный пост, [color=navy]1[/color] - на премодерации),            'new_topic'       => является ли первым постом темы ([color=navy]0[/color]/[color=navy]1[/color]),            'use_sig'     => включить в пост подпись автора или нет ([color=navy]0[/color]/[color=navy]1[/color]),            'use_emo'     => использовать в посте смайлики ([color=navy]0[/color]/[color=navy]1[/color]),            'icon_id'     => id иконки,            'attach_id'   => реальное имя файла аттача поста,            'attach_hits' => количество открытий аттача,            'attach_type' => тип аттача,            );[color=#048284]$db_string[/color] = [color=#048284]$DB[/color]->compile_db_insert_string([color=#048284]$post[/color]);

 

Добавляем пост в таблицу постов:

[color=#048284]$DB[/color]->query("INSERT INTO ibf_posts (" .[color=#048284]$db_string[/color]['FIELD_NAMES']. ") VALUES (". [color=#048284]$db_string[/color]['FIELD_VALUES'] .")");
Опубликовано:

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. Не обязательно заполнять все поля массива. Здесь они даны для разъяснения их предназначения. Можно не включать параметры в соответствующие массивы, и они добавятся параметрами по умолчанию.

Опубликовано:

Song: 3. Добавление голосования

 

Добавление в таблицу топиков (ibf_topics):

 

Голосование - это тот же топик. Отличается только лишь включенными полями:

    • poll_state
    • last_vote

в массиве топика $new_topic. Для создания топика (не голосования) они не задаются.

 

Добавление самого голосования:

 

Опеределяем массив данных голосования. Делается это в следующих основных полях таблицы ibf_polls:

 

        [color=#048284]$poll[/color] = [b]array[/b] (              'tid'               => id топика (переменная [color=#048284]$new_topic_id[/color], которум мы определили выше),              'forum_id'          => id форума,              'start_date'        => время голосования,              'choices'           => serialize([color=#048284]$[/color]варианты голосования),              'starter_id'        => id автора голосования/топика,              'votes'             => количество голосов,              'poll_question'     => вопрос голосования,            );

 

Добавляем голосования в таблицу голосований:

        [color=#048284]$db_string[/color] = [color=#048284]$std[/color]->compile_db_string( [color=#048284]$poll[/color] );                                                      [color=#048284]$DB[/color]->query("INSERT INTO ibf_polls (" .[color=#048284]$db_string[/color]['FIELD_NAMES']. ") VALUES (". [color=#048284]$db_string[/color]['FIELD_VALUES'] .")");

 

Переменная $Варианты голосования определяются так:

        [color=#048284]$poll_choices[/color] = "Вариант 1<br>Вариант 2<br>Вариант 3<br>";        [color=#048284]$[/color]Варианты голосования  = [b]array[/b]();        [color=#048284]$count[/color] = [color=navy]0[/color];        [color=#048284]$polls[/color] = explode( "<br>", [color=#048284]$poll_choices[/color] );                [b]foreach[/b] ( [color=#048284]$polls[/color] [b]as[/b] [color=#048284]$polling[/color] )        {            [color=#048284]$[/color]Варианты голосования[] = [b]array[/b]( [color=#048284]$count[/color], [color=#048284]$polling[/color], [color=navy]0[/color] );            [color=#048284]$count[/color]++;        }
Опубликовано:

Song: Таким образом:

 

- для создания топика нужно сделать запросы по вставке в таблицы: 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 - количество постов в разделе

Гость
Эта тема закрыта для дальнейших сообщений.

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.