Страница 1 из 1

Сообщения

СообщениеДобавлено: 11 июл 2011, 16:22
fallingfalling
Здравствуйте. У меня возник вот такой вопрос, в личном кабинете пользователя есть такая функция, называется Сообщения. При переходе в этот раздел появляется список Входящих и исходящих сообщений... Ну как список, просто табличка. Так вот, вопрос след., облазил всё, так и не понял как писать личные сообщения. Есть ли толк вообще от этого раздела в личном кабинете?

Re: Сообщения

СообщениеДобавлено: 12 июл 2011, 12:29
Count_Raven
Объясняю:

Чтобы писать личные сообщения, пользователь, которому вы хотите отправить сообщение, должен включить у себя в профиле (поставить галку) Хочу принимать личные сообщения от пользователей.

Если у пользователя в профиле это включено, то Вы, зайдя к этому пользователю в профиль, увидите кнопку "Отправить сообщени" или "Send private message" и сможете ему написать.

Чтобы это работало, у пользователей должен быть атрибут. Тут баг был в какой-то версии, то ли в текущей, то ли в прошлой, что при установке этот атрибут не добавлялся. Сча посмотрю какой.

Вот, посмотрел:
Должен быть у пользователей атрибут profile_private_messages_enabled, это его дескриптор (handle), а назвать Вы его можете "Я хочу получать личные сообщения от других пользователей". Тип - флажки (checkbox).

Посмотрите, есть ли он у Вас, если есть - просто пусть пользователи у себя в профиле включат его, чтобы получать мессаги.
Если его нет - создайте его.

Можно еще один атрибут добавить, тогда оповещения о новых личных сообщениях будут приходить пользователю на электронную почту.

Проблема описана тут:
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку



Вообще система весьма полезная - такая внутренняя почта. Я эту систему модернизировал на сайте realtmir.ru (социальная сеть для людей, занимающихся недвижимостью и агентств недвижимости) и там как в социальных сетях - при новом сообщении сверху страницы мигает конвертик с количеством новых сообщений. Вообще там можно много прикрутить.

Есть там еще небольшой баг с удаленными пользователями, я его пару месяцев назад отправлял на Bug Tracker. Он принят. Думаю, исправят в следующей версии. Находится тут:
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку


Вооот ;-)

Re: Сообщения

СообщениеДобавлено: 12 июл 2011, 13:25
fallingfalling
Count_Raven, огромное спасибо! Добавил атрибут и всё заработало.
А реально ли сделать чтоб оповещения о новых сообщениях на сайте отображались?

Re: Сообщения

СообщениеДобавлено: 12 июл 2011, 14:23
Count_Raven
Конечно реально, у меня на realtmir.ru отображаются.

Приведу пример из моего кода:

Код: Выделить всё
    Loader::model('user_private_message'); // загружаем модель
    $db = Loader::db(); // загружаем хелпер для базы данных
    $u = new User(); // создаем статичный объект пользователя

    if ($u->isRegistered() && $u->isLoggedIn()) { // проверяем, пользователь у нас в сети =)
        $ui = UserInfo::getByID($u->getUserID()); // берем ID пользователя
        $msgMailboxID = UserPrivateMessageMailbox::MBTYPE_INBOX; // Берем идентификатор ящика для сообщений для текущего пользователя
        $new_messages = $db->getRow('SELECT COUNT(*) AS cnt FROM UserPrivateMessagesTo WHERE msgIsNew = 1 AND msgMailboxID = ? and uID = ?', array($msgMailboxID, $ui->getUserID())); // ищем новые сообщения
        $new_messages_count = intval($new_messages['cnt']); // берем их количество

        if ($new_messages_count > 0) {
               // если количество новых сообщений больше 0, то тут что-нибудь делаем, у меня тут выводится конвертик мигающий с количеством новых сообщений
        }


Это просто можно вставить в шаблон, в место, где должна отображаться ссылка на новые сообщения. Можно из этого сделать AJAX-скрипт, который будет не только при обновлении страницы, а и при появлении нового сообщения сразу сигнализировать пользователю об этом. Ну тогда надо будет добавить AJAX-запрос на JavaScript с setInterval, который будет, например, каждую минуту проверять состояние и сигнализировать в случае появления новых сообщений.

Re: Сообщения

СообщениеДобавлено: 14 июл 2011, 18:30
fallingfalling
никак не могу сообразить... извиняюсь за тупость
копирую вышеприведенный код, вставляю на сайт с помощью модуля "php блок", но ничего не отображается

Re: Сообщения

СообщениеДобавлено: 16 июл 2011, 16:53
Count_Raven
fallingfalling писал(а):никак не могу сообразить... извиняюсь за тупость
копирую вышеприведенный код, вставляю на сайт с помощью модуля "php блок", но ничего не отображается


Давайте в понедельник или завтра. Объясню.

Re: Сообщения

СообщениеДобавлено: 16 июл 2011, 19:23
fallingfalling
Count_Raven писал(а):Давайте в понедельник или завтра. Объясню.

Хорошо :)

Re: Сообщения

СообщениеДобавлено: 20 июл 2011, 14:43
Count_Raven
Блин, все время не найду.

Попробуйте так:
Добавьте (может PHP-блок, я им никогда в жизни не пользовался), либо где-то в шаблоне добавьте тот же код, только я тут правочку сделал:

Код: Выделить всё
    Loader::model('user_private_message'); // загружаем модель
    $db = Loader::db(); // загружаем хелпер для базы данных
    $u = new User(); // создаем статичный объект пользователя

    if ($u->isRegistered() && $u->isLoggedIn()) { // проверяем, пользователь у нас в сети =)
        $ui = UserInfo::getByID($u->getUserID()); // берем ID пользователя
        $msgMailboxID = UserPrivateMessageMailbox::MBTYPE_INBOX; // Берем идентификатор ящика для сообщений для текущего пользователя
        $new_messages = $db->getRow('SELECT COUNT(*) AS cnt FROM UserPrivateMessagesTo WHERE msgIsNew = 1 AND msgMailboxID = ? and uID = ?', array($msgMailboxID, $ui->getUserID())); // ищем новые сообщения
        $new_messages_count = intval($new_messages['cnt']); // берем их количество

        if ($new_messages_count > 0) {
               echo '<a href="/index.php/profile/messages/">У вас есть новые сообщения ('.$new_messages_count.')</a>';
        }



1. Создайте двух пользователей, включите у них возможность отправлять и принимать сообщения.
2. Зайдите под одним пользователем и отправьте второму сообщение.
3. Зайдите под вторым пользователем, только не ходите на страницу сообщений в профиле, а то они уже сразу отметятся просмотренными, а не новыми. И вы должны увидеть ссылку "У вас есть новые сообщения (1)" на месте вашего PHP-блока или там, где вы это в шаблон добавили (если решили добавлять в шаблон, я просто такие вещи прямо в шаблон всегда прописываю).

Re: Сообщения

СообщениеДобавлено: 25 июл 2011, 16:58
fallingfalling
Всё получилось, спасибо )