Jump to content

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


Andy123
 Share

Recommended Posts

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

 

Возникла потребность отправки только сообщений в существующую тему через 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 делали )))

Edited by Andy123
Link to comment
Share on other sites

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

Просто я невнимательно просмотрел класс и не увидел 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 ((((((

 

Спасибо!

 

 

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

Link to comment
Share on other sites

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

 

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

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

Link to comment
Share on other sites

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

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

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

 

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

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

 

Делаю так:

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

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

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

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

 

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

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

 

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

Edited by Andy123
Link to comment
Share on other sites

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

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

 

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

Edited by Andy123
Link to comment
Share on other sites

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

 

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

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

 

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

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...