Перейти к публикации
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.

Как отправить пост в СУЩЕСТВУЮЩУЮ тему через API (3.4.6)?

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

Здравствуйте!

 

Возникла потребность отправки только сообщений в существующую тему через API (именно одна конкретная тема с результатами работы стороннего скрипта).

Версия IPB 3.4.6, показать не могу, ибо - в закрытой частной сети.

В поиске про это ничего не нашел....

 

Попробовал использовать addTopic():

 

$member_id = 1;

$member = IPSMember::Load($member_id, 'members');

$member['member_group_id'] = 4;

$member['g_post_new_topics'] = 0;

$postClass = new classPost($registry);

$postClass->setForumID($forumID);

$postClass->setTopicTitle($mytitle);

$postClass->setPostContent($mytext);

$postClass->setAuthor($member);

 

$postClass->addTopic()

 

Все работает, НО... создается новая тема, а мне это не нужно.

Подскажите пожалуйста, как отправлять ТОЛЬКО сами посты и без создания темы, ибо она уже есть.

 

Огромное спасибо! За любой ответ....

 

ЗЫ: конечно, возможно тупо сторонним скриптом писать напрямую в БД... Но не хотелось бы - не зря же API для IPB делали )))

Изменено пользователем Andy123

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

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

Попробовал использовать addTopic():

Этот метод добавляет (создает) тему. Вам нужно addReply

В поиске про это ничего не нашел....

http://ipbskins.ru/forum/topic8466.html#entry84784

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

Да, спасибо огромное, помогло.

Просто я невнимательно просмотрел класс и не увидел Reply(). Приношу свои извинения.

 

Все работает, но при этом возникает ошибка.

 

"Fatal error: Class 'darkLAE' not found in W:\home\localhost\www\my\forum346\admin\sources\classes\output\publicOutput.php on line 2052"

 

сделал как рекомендовано здесь http://ipbskins.ru/forum/topic13669.html (if(!class_exists('darkLAE')){require_once IPS_ROOT_PATH . 'sources/base/darkLAE.php';})

 

Ошибка перестала проявляться, но вместе с этим и перестал работать индикатор, сигнализирующий о том что есть новые сообщения в теме (изменение пиктограммы, выделение шрифта в названии форума/темы.

Можно вернуть индикацию о наличии непросмотренных сообщений и убрать ошибку?

Или же придется выбирать между нуленной версией и наличием индикации?

 

Кстати, эта ошибка возникает при любом обращении через API ((((((

 

Спасибо!

 

 

ЗЫ: офтопик: мне не удалось изначально зарегиться здесь на форуме (капча не показывалась ни в какую), поэтому вошел через Твиттер. При входе на форум меня попросили создать новую учетку. Создал. Сегодня опять зашел сюда через Твиттер. И снова форум сказал мне, что в первый раз меня видит и снова просил создать учетку. Это нормально?

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

Ошибка перестала проявляться, но вместе с этим и перестал работать индикатор, сигнализирующий о том что есть новые сообщения в теме (изменение пиктограммы, выделение шрифта в названии форума/темы.

 

А раньше было?

Не думаю. Если Вы тестируете скрипт и запускаете его под пользователем "Админ", а после под этим юзером проверяете "индикатор", то для него тема будет прочитанной.

Опубликовано:
  • Автор

Я только приступил к задаче.

И вот на этом этапе поступаю так:

Открыто два окна браузера.

 

А. В одном окне запускаю скрипт из под админа, отправляю пост в топик. При этом скрипт выдает указанную выше ошибку и я не вижу "окончания" его работы (типа, надпись "все ОК"). Понятно, что скрипт в этом месте остановился.

Б. В другом окне открыт сеанс этого же админа на форуме. Форум свернут полностью (до родителя).

 

Делаю так:

1. запускаю скрипт, получаю вышеозначенную ошибку, смотрю через ПМА в таблице мускуля - пост появился.

2. Иду в другое окно на форум, делаю "обновить страницу" и вижу, что "индикатор" сообщает о наличии непросмотренных сообщений. Разворачиваю форум - название темы тоже написано боллдом, что свидетельствует о наличии в ней непросмотренных этим админом постов. Разворачиваю тему, просматриваю посты, сворачиваю форум.

3. Вношу изменения в publicOutput.php.

4. Выполняю пп.1 и 2. Вижу, что пост в БД появился, мой скрипт отработал до конца, но в п.2 при обновлении страницы уже нет никаких внешних признаков того, что есть непросмотренные темы - ни пиктограммы, ни выделения болдом названия темы. Если зайти в тему, то пост там есть.

 

Наверное, пока обойдусь собакой (подавление вывода ошибок) в этом месте

Осознаю, что мой скрипт постинга отрабатывает не до конца, но он самый последний в цепи. Свою задачу он при этом выполняет - постит результаты работы другого скрипта в топик.

 

Спасибо за помощь.

Изменено пользователем Andy123

Опубликовано:
  • Автор

Хм... перепробовал разные варианты. Вроде, как все работает и с исправленным publicOutput.php без этой пресловутой ошибки.

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

 

Еще раз огромное спасибо всем!!!

Изменено пользователем Andy123

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

Много полезной информации касательно api можно найти по тегу api.

 

ЗЫ: офтопик: мне не удалось изначально зарегиться здесь на форуме (капча не показывалась ни в какую)

Спасибо за репорт. Будем разбираться с капчей.

 

SweetCaptcha кажись сдулась.

Это пи*дец, похоже она весь последний год у нас не работала и никто не мог регистрироваться.

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 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.