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

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

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

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

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

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

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

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

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

Изначально была задача бросить кубик если в сообщении есть определённый код. Что то вроде :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" снова от своего имени.

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

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

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

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

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

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

Опубликовано:
Тут всё дело в том что одно сообщение пользователя придётся дробить на 2 и больше а в промежутках вставлять посты от кубика.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

t - тема

f - форум

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

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

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

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

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

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

В общем дописал я в parser.php обработчик кубов. В функцию editorToHtml. Всё работает, если кидать от имени пользователя, но никак не получается кидать всегда от определённого пользователя. Если просто вставить код:

 

 

то просто ничего не происходит. Помогите советом пожалуйста.

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

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