lifespirit Posted September 28, 2014 Share Posted September 28, 2014 Всем привет. Ковыряюсь в коде форума. Нужно достать ID топика и форума куда пользователь отправляет сообщение. Встраиваю функцию в parser.php. Функции нужны эти два идентификатора что бы слать сообщение через api в ту же тему, в которую пользователь шлёт своё. А в идеальном варианте ещё и ID пользователя, который шлёт сообщение может пригодиться. Link to comment Share on other sites More sharing options...
siv1987 Posted September 28, 2014 Share Posted September 28, 2014 parser.php - это парсер ббкодов. Встраивать там какие-то ид чисто идеологически не правильно, так как парсер может подключатся где угодно и обработать любые сущности не только сообщения. Ид темы еще можно, а вот ид сообщения узнать можно только после его создания. То есть во время обработки это чисто физически не возможно, ибо сообщение еще не существует. Вы либо не там капаете, либо не правильно формулируете задачу. ID текущего пользователя легко можно получить через $this->memberData['member_id'] или $this->registry->member()->getProperty('member_id') Link to comment Share on other sites More sharing options...
lifespirit Posted September 28, 2014 Author Share Posted September 28, 2014 Изначально была задача бросить кубик если в сообщении есть определённый код. Что то вроде :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" снова от своего имени.Может я пытаюсь запихнуть код не в ту часть конечно. Link to comment Share on other sites More sharing options...
siv1987 Posted September 28, 2014 Share Posted September 28, 2014 Парсер ббкодов отрабатывает перед вставкой сообщения в бд. Как минимум получится так, что сообщение бота будет идти перед сообщением пользователя. Поэтому логически сделать это после сохранения поста, но перед этим спарсить "кубик". Link to comment Share on other sites More sharing options...
lifespirit Posted September 29, 2014 Author Share Posted September 29, 2014 (edited) Тут всё дело в том что одно сообщение пользователя придётся дробить на 2 и больше а в промежутках вставлять посты от кубика. Так что думаю без костылей всё равно не обойдётся.Как тогда лучше всего реализовать такие мультипосты? Я планировал резать текст в парсере и через апи выдавать сначала первую часть топика от юзера, потом кубы от куба и остатки передавать из парсера как текст сообщения. Это конечно явные костыли, но где лучше сделать такую обработку я придумать не смог. Да и как потом передавать данные о кубах из парсера куда то ещё? Edited September 29, 2014 by lifespirit Link to comment Share on other sites More sharing options...
siv1987 Posted September 29, 2014 Share Posted September 29, 2014 Тут всё дело в том что одно сообщение пользователя придётся дробить на 2 и больше а в промежутках вставлять посты от кубика.Это уже какое-то извращение, лично я не вижу в этом смысла. Link to comment Share on other sites More sharing options...
lifespirit Posted September 29, 2014 Author Share Posted September 29, 2014 ОК. Подскажите хотя бы куда парсер выдает текс и какая фукция постит сообщения на форум. Link to comment Share on other sites More sharing options...
siv1987 Posted September 29, 2014 Share Posted September 29, 2014 http://ipbskins.ru/forum/topic8466.html Link to comment Share on other sites More sharing options...
lifespirit Posted September 29, 2014 Author Share Posted September 29, 2014 Спасибо. Уже читал. Вопрос был не про апи функцию а про вполне форумную функцию. Куда форма передает текст через парсер? Есть какая то функция поста сообщения? Link to comment Share on other sites More sharing options...
lifespirit Posted September 29, 2014 Author Share Posted September 29, 2014 Как это все работает вообще? Вот есть текст. Он вводится в форму. И что потом? Как он попадает в парсер? Куда идет дальше? Если не трудно напишите что то вроде: форма -> функция1 -> парсер -> функция2 -> ДБ Link to comment Share on other sites More sharing options...
siv1987 Posted September 29, 2014 Share Posted September 29, 2014 Спасибо. Уже читал. Вопрос был не про апи функцию а про вполне форумную функцию.Форумные функции используют одни и те же функции. Разница лишь в том, что в форуме они вызываются внутри модулей./admin/applications/forums/modules_public/post/post.php/admin/applications/forums/sources/classes/post/classPostForms.php Link to comment Share on other sites More sharing options...
lifespirit Posted October 2, 2014 Author Share Posted October 2, 2014 хм... ковырял я ковырял... видимо слепой. Не нашёл куда воткнуть вызов функции, что бы передать ей IDфорума и IDтемы. Подскажите, если не трудно. Link to comment Share on other sites More sharing options...
siv1987 Posted October 2, 2014 Share Posted October 2, 2014 Какой функции? Ид форума и темы можно получить из массива $this->requestt - темаf - форум Link to comment Share on other sites More sharing options...
lifespirit Posted October 2, 2014 Author Share Posted October 2, 2014 (edited) То есть я могу откуда то из post.php вызвать некий самопальный файл cube.php если в посте есть нужные BBкоды где бросается кубик и постится форум, передав туда $this->request['t'] $this->request['f']? Плохо я пока это всё понимаю. =( Edited October 2, 2014 by lifespirit Link to comment Share on other sites More sharing options...
lifespirit Posted October 3, 2014 Author Share Posted October 3, 2014 Всё. Разобрался. Большое спасибо за подсказки. Пойду ковырять код. Как закончу, выложу дайсомёт сюда. А то единственный существующий под 3.2.х и это печально. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now