Как правильно реализовать структуру модуля Уведомления?
Итак к примеру есть несколько модулей в системы, которые должны уведомить пользователя о каких-либо действиях.
Например:
- Новый партнер в структуре
- Перевод Средств
- Достижение нового Ранга
и тп.
Проблема в том, что не получается сделать так, чтобы модули небыли тесно связаны с модулем уведомлений (чтобы каждый модуль не обращался на прямую к уведомлениям).
Поэтом появилась идея, сделать так, чтобы каждый модуль, который должен отсылать уведомления имел свою таблицу в базе для этих целей.
После чего модуль уведомлений с помощью Dependency Injection получает зависимые модули и знает откуда брать и показывать уведомления.
Но тут получается момент, когда в базе появится по одной примерно одинаковой таблицы почти на каждый модуль. На сколько это критично ? Есть ли идеи как реализовать вообще такую штуку ?
вы уже третью тему создаете на один и тот же вопрос, здесь и на yii-форуме.
В каждом модуле у вас при каком-то действии вызывается событие. В другом модуле вы подписываетесь на это событие и все пишете в таблицу этого модуля.
А что делать?, не выходит =(.
Как вы легко все описали =). На практике так не получается. Во первых, я не пишу в базу именно сообщение, я пишу просто тип уведомления, далее мне нужно по типу уведомления отследить сообщение и вывести его пользователю, обработав.
Тоесть, если писать обычное сообщение типа: "Петя сделал то-то". В случае если пользователь поменяет логин или другие данные, сообщение останется, поэтому нужно держать id, в другом случае если "Вы получали Ранг Мастер", таже ситуация при смене названия или другие подобные факторы.
Тоесть в каждом модуле у меня есть заготовки сообщений типа:
Пользователь {user} достиг ранга {rang}, в базу пишется только тип NEW_RANG к примеру.
По мимо того, что модуль Рангов должен знать куда писать, тип уведомления, так еще и Модуль Уведомлений должен знать, где взять фразу исходя из типа и как ее спарсить.
Возможно события решают половину проблемы, но со стольной половиной получается чорти, что.
Закидываю форумы вопросами, чтобы не наговнокодить. Раньше я бы просто запихнул на прямую вызов уведомлений в нужных модулях да и все =)