Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Andy123

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
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 ((((((

 

Спасибо!

 

 

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

 

Делаю так:

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

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

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

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

 

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

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

 

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

Edited by Andy123

Share this post


Link to post
Share on other sites

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

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

 

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

Edited by Andy123

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

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

Share this post


Link to post
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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...