Доброго времени суток.
Я понимаю, что вопрос не относится к базовому функционалу плагина, но хотелось бы услышать мудрые наставления гуру по решению задачи. А то заказчик уже всю плеш проел... ➡
Итак задача :
В приватный чат каждому из ролей юзеров (2-ве роли) необходимо добавить следующий функционал:
1-я роль - кнопка "закончить чат", после нажадия на которую опонент не сможет уже присылать какие либо сообщение. Нажатие возможно в любой момент диалога.
2-я роль - кнопка "закончить чат", после нажатия на которую диалог скрывается из кабинета и может быть восстановлен только если придет сообщение от опонента. Нажатие возможно только если в чате последнее сообщение пренадлежит нажимающему.
2-я роль - кнопка ручного переключения статуса "в сети / не в сети".
Буд благодарен за любые идеи 🙂
очевидно, что для первой и второй роли сохраняете их действия в БД, допустим в user_meta, далее для 1-ой роли при добавлении собеседником сообщения через фильтр rcl_pre_insert_chat_message получаете массив данных сообщения и получаете текущий статус 1-й роли, не закончил ли он чат. Если чат закончен, то вместо полученного массива созвращаете пустой, тогда сообщение не будет добавлено в БД и собеседнику будет показана ошибка об этом.
Если 2-я роль нажала на "Закончить чат", то также добавляем статус в БД и при выводе вкладки чата проверяем этот статус и не выводим содержимое вкладки, если он закончил чат.
В общих чертах как то так.
Со статусом в сети/не в сети не думал, что делать, там вроде как фильтров нет
Всегда добрый, теперь "злой"
Предвидел что не ограничится одним вопросом и алгоритмом, а будем "решать" вашему заказчику вместе
Открыв бд и посмотрев как устроены таблицы чата и таблица активности - вопрос отпал бы. Вы же видимо этого не делали.
Поэтому да - предложил вам переложить задание в местную фриланс-биржу
Проблема не в БД. Проблема в недостаточном знании WP-Recall.
Я никогда не исключаю, что какой-то функционал любого плагина просто может быть недостаточно раскрыт в мануалах. И вместо того, что-б его дублировать всегда проще спросить у разработчика о его наличии/отсутствии.
Вот и в данном случае получилось, что нет смысла все писать "с нуля", а проще (и правильнее) будет использовать фильтр плагина.
Ну да ладно, суть понятна, тему можно закрывать. Будет решение - выложу.