Привет,
Я работаю над плагином, который фильтрует все темы в зависимости от того, откуда была опубликована тема и к какой группе относится пользователь, просматривающий эту тему. Сценарий использования здесь — наличие команды поддержки в разных странах, которая обрабатывает вопросы, поступающие из их собственных регионов.
Я новичок в создании плагинов для Discourse и всё ещё изучаю, как это делать. Расположение тем будет обрабатываться плагином Locations, который можно найти здесь: Locations Plugin 🌍.
А пользователей, которым нужен такой фильтрованный просмотр, я добавлю в группу с названием вроде NA_queue или EU_queue.
Плагин будет проверять, авторизован ли пользователь и установлена ли у него основная группа. Если да, он будет фильтровать все темы так, чтобы они соответствовали очереди, к которой принадлежит текущий пользователь.
Думаю, это можно реализовать с помощью кода, похожего на следующий:
after_initialize do
require_dependency 'topic_query'
# Если пользователь авторизован и у него установлена основная группа
# Нужно получить основную группу пользователя
# Нужно получить местоположение темы
TopicQuery.add_custom_filter(:location) do |results, topic_query|
filter = "ЗДЕСЬ SQL-ЗАПРОС"
results = results.joins("{filter}")
results
end
end
Является ли этот подход хорошим решением моей проблемы?
Также есть ли у кого-нибудь предложения относительно того, каким должен быть SQL-запрос или как получить эти два недостающих элемента, отмеченных комментариями?