• Как спланировать БД (чат)?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Итак, что вам нужно. Предполагается, что у вас есть табицы user и group.

    Таблица со списом чатов

    chat
    	id - идентификатор чата
    	name - название чата (тема обсуждения)
    	user_id - идентификатор  пользователя, который создал чат (необязательно)


    Список участников чата
    roster
    	chat_id - идентификатор чата
    	user_id - идентификатор пользователя
    	group_id - ид группы, если пользователь пишет от имени группы или NULL, если от пользователя (можно даже держать 2 записи, где group_id = null и где нет)


    Список сообщений
    messages
    	id - идентификатор сообщения
    	chat_id - идентификатор чата
    	user_id - ид пользователя
    	group_id - ид группы, если сообщение отправлено от имени группы или NULL, если от пользователя
    	text - текст сообщения


    Статусы сообщений
    message_status
    	message_id - идентификатор сообщения
    	user_id - идентификатор пользователя
    	read - прочтено или нет
    	notified - отправлено уведомление о сообщении или нет


    Итак, как это работает.
    Круг, в котором общаются пользователи называется чатом (chat).
    Кто находится в чате определяется через ростер (roster). Ростер может не быть показан в интерфейсе.
    Кто кого приглашает в чат определяется через бизнес-логику приложения.

    В данной схеме сценарий "Пользователь2 пишет в Группа1" выглядит так.
    Создается чат, далее в ростер добавляются П2 и Г1. Далее просто создается сообщение от имени П2. Через бизнес-логику находится владелец Г1 и ему отправляется уведомление.
    Ответ написан
    Комментировать
  • Mobile detector как этим пользоваться?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    https://github.com/DKeeper/yii2-mobiledetect - отвратительный виджет для интересного решения.
    Я бы выкинул все кроме lib/Mobile_Detect.php
    Подключил как компонент в конфиге, и сделал бы в нем функцию isMobile, так же в нем можно было бы реализовать замену layout или юзать isMobile в beforeAction. И можно писать isMobile в сессию.
    Как виджет он годится только классы прописывать, но при наличии медиа запросов, да и собственно грида bootstrap, возникает вопрос здравомыслия того кто это сделает.
    Ответ написан
    Комментировать