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

Достать topicID и forumID в коде parser.php

Recommended Posts

Всем привет. Ковыряюсь в коде форума. Нужно достать ID топика и форума куда пользователь отправляет сообщение. Встраиваю функцию в parser.php. Функции нужны эти два идентификатора что бы слать сообщение через api в ту же тему, в которую пользователь шлёт своё. А в идеальном варианте ещё и ID пользователя, который шлёт сообщение может пригодиться.

Share this post


Link to post
Share on other sites

parser.php - это парсер ббкодов. Встраивать там какие-то ид чисто идеологически не правильно, так как парсер может подключатся где угодно и обработать любые сущности не только сообщения. Ид темы еще можно, а вот ид сообщения узнать можно только после его создания. То есть во время обработки это чисто физически не возможно, ибо сообщение еще не существует. Вы либо не там капаете, либо не правильно формулируете задачу.

ID текущего пользователя легко можно получить через $this->memberData['member_id'] или $this->registry->member()->getProperty('member_id')

Share this post


Link to post
Share on other sites

Изначально была задача бросить кубик если в сообщении есть определённый код. Что то вроде :gd6: :gd6: :gd8: :bd6: :bd6: должно кинуть два шестигранника одного типа, два шестигранника другого типа и один восьмигранник. Самый простой вариант что я нашёл - выбирать эти коды парсером.пхп из сообщения и высылать через API результаты от юзера Cube, а коды удалять из поста. Для этого нужно ID форума и темы + имя пользователя для вставки в сообщение. Ну и если встраивать сообщения прямо между кусками сообщения пользователя то и id пользователя пригодится.

Тоесть грубо говоря если пользователь шлёт в посте :gd6: :gd6: :gd8: :bd6: :bd6: то получает в топике просто сообщение от юзера Cube с броском кубов.

Если шлёт:

 

текст текст текст

:gd6: :gd6: :gd8: :bd6: :bd6:

текст2 текст2 текст2

 

то получет кусок своего сообщения "тест тест тест" от своего имени, кубы от пользователя Cube и остатки сообщения "текст2 текст2 текст2" снова от своего имени.

Может я пытаюсь запихнуть код не в ту часть конечно.

Share this post


Link to post
Share on other sites

Парсер ббкодов отрабатывает перед вставкой сообщения в бд. Как минимум получится так, что сообщение бота будет идти перед сообщением пользователя. Поэтому логически сделать это после сохранения поста, но перед этим спарсить "кубик".

Share this post


Link to post
Share on other sites

Тут всё дело в том что одно сообщение пользователя придётся дробить на 2 и больше а в промежутках вставлять посты от кубика. Так что думаю без костылей всё равно не обойдётся.Как тогда лучше всего реализовать такие мультипосты? Я планировал резать текст в парсере и через апи выдавать сначала первую часть топика от юзера, потом кубы от куба и остатки передавать из парсера как текст сообщения. Это конечно явные костыли, но где лучше сделать такую обработку я придумать не смог. Да и как потом передавать данные о кубах из парсера куда то ещё?

Edited by lifespirit

Share this post


Link to post
Share on other sites
Тут всё дело в том что одно сообщение пользователя придётся дробить на 2 и больше а в промежутках вставлять посты от кубика.

Это уже какое-то извращение, лично я не вижу в этом смысла.

Share this post


Link to post
Share on other sites

ОК. Подскажите хотя бы куда парсер выдает текс и какая фукция постит сообщения на форум.

Share this post


Link to post
Share on other sites

Спасибо. Уже читал. Вопрос был не про апи функцию а про вполне форумную функцию. Куда форма передает текст через парсер? Есть какая то функция поста сообщения?

Share this post


Link to post
Share on other sites

Как это все работает вообще? Вот есть текст. Он вводится в форму. И что потом? Как он попадает в парсер? Куда идет дальше? Если не трудно напишите что то вроде: форма -> функция1 -> парсер -> функция2 -> ДБ

Share this post


Link to post
Share on other sites

Спасибо. Уже читал. Вопрос был не про апи функцию а про вполне форумную функцию.

Форумные функции используют одни и те же функции. Разница лишь в том, что в форуме они вызываются внутри модулей.

/admin/applications/forums/modules_public/post/post.php

/admin/applications/forums/sources/classes/post/classPostForms.php

Share this post


Link to post
Share on other sites

хм... ковырял я ковырял... видимо слепой. Не нашёл куда воткнуть вызов функции, что бы передать ей IDфорума и IDтемы. Подскажите, если не трудно.

Share this post


Link to post
Share on other sites

Какой функции? Ид форума и темы можно получить из массива $this->request

t - тема

f - форум

Share this post


Link to post
Share on other sites

То есть я могу откуда то из post.php вызвать некий самопальный файл cube.php если в посте есть нужные BBкоды где бросается кубик и постится форум, передав туда $this->request['t'] $this->request['f']? Плохо я пока это всё понимаю. =(

Edited by lifespirit

Share this post


Link to post
Share on other sites

Всё. Разобрался. Большое спасибо за подсказки. Пойду ковырять код. Как закончу, выложу дайсомёт сюда. А то единственный существующий под 3.2.х и это печально.

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...