Ну например страница "Все сообщения пользователя".
Я хочу смотреть:
- Все входящие
- Все входящие
- Все удаленные (корзина)
Тоесть, что бы правильно отрендерить эту страницу, я должен проверять кем. является текущий пользователь, и делать дополнительные проверки на возможность просмотра сообщения.
Тоесть в ситуациях: написать письмо, удалить письмо, прочитать письмо, мне нужно проверять кем является текущий пользователь (получатель или отправить) и в зависимости от этого выставлять нужные флаги.
Пример в контроллере для полного удаления сообщения:
sender_view - это походу лишнее
recipient_view - получатель просмотрел сообщение
sender_pail - отправитель отправил сообщение в корзину
recipient_pail - получатель отправил сообщение в корзину
sender_delete - отправитель удалил сообщение
recipient_delete - получатель получатель удалил сообщение
При таком варианте выходит кучу проверок при отображении сообщений, учитывая кто их там поудалял.
@KorsaR-ZN Ну например если реализовывать такую штуку:
- пользователь отписал 10 тем, получил новый ранг и получил личное сообщение с уведомлением, прокомментировал 10 постов получил личное сообщение и тп. Тоесть модуль блог шлет сообщения пользователю за проделанные действия. Вызывать модуль сообщений внутри модели блога как-то не правильно.
@DnAp а подскажите пожалуйста как ставить в очередь 2 задачу, к примеру у меня на германе будет работать активация пользователя. Тоесть пока не активировался 1 пользователь, 2торой не должен активироваться параллельно. Активация очень жирная и с ростом кол-во пользователей время выполнения будет увеличиваться.
А что делать?, не выходит =(.
Как вы легко все описали =). На практике так не получается. Во первых, я не пишу в базу именно сообщение, я пишу просто тип уведомления, далее мне нужно по типу уведомления отследить сообщение и вывести его пользователю, обработав.
Тоесть, если писать обычное сообщение типа: "Петя сделал то-то". В случае если пользователь поменяет логин или другие данные, сообщение останется, поэтому нужно держать id, в другом случае если "Вы получали Ранг Мастер", таже ситуация при смене названия или другие подобные факторы.
Тоесть в каждом модуле у меня есть заготовки сообщений типа:
Пользователь {user} достиг ранга {rang}, в базу пишется только тип NEW_RANG к примеру.
По мимо того, что модуль Рангов должен знать куда писать, тип уведомления, так еще и Модуль Уведомлений должен знать, где взять фразу исходя из типа и как ее спарсить.
Возможно события решают половину проблемы, но со стольной половиной получается чорти, что.
Закидываю форумы вопросами, чтобы не наговнокодить. Раньше я бы просто запихнул на прямую вызов уведомлений в нужных модулях да и все =)
Это так сказать пример контроллера Yii2, транзакция там организованна инструментами фраэмворка, а так это все коротенькие функции по 20 строк, которые работают с моделями.