Просмотр отправленных мной заявок
Пользователь, отправивший запрос, может следить за состоянием заявки. Метод контроллера friends my_requests выводит список активных заявок в друзья пользователям: В это время у пользователя «Катя» в ее заявках появилось сообщение: Если же текущий пользователь нажмет «Отменить запрос», то отработает метод abort контроллера friends и заявка будет отменена: А у пользователя «Катя» заявка исчезнет из списка: Удаление пользователя из списка друзей Для удаления пользователя из списка друзей необходимо при просмотре списка вызвать метод delete, кликнув на ссылке: Рисунок 43 Отработает метод delete, который удалит запись о дружбе: if ( $this->db_model->delete( FRIENDS_TABLE, array( 'friend1' => $this->user['id'], 'friend2' => $user_id ) ) || $this->db_model->delete( FRIENDS_TABLE, array( 'friend2' => $this->user['id'], 'friend1' => $user_id ) ) ) { // Запись удалена } else { // Запись не удалена } И система оповестит: Сообщения Личные сообщения обеспечивают приватное общение между пользователями. Работу сообщений обеспечивает контроллер messages и модель messages_model. Контроллер содержит реализацию следующих действий:
Сообщения группируются по диалогам. Диалог объединяет пользователей для общей переписки. Структура контроллера mail имеет вид: /** * Контроллер сообщений */ class Mail extends MY_Controller { /** * Количество сообщений на странице */ private $_messages_per_page = 2;
/** * Просмотр диалогов */ public function index() {}
/** * Просмотр диалога */ public function dialog( $dialog_id, $page = 1 ) {}
/** * Отправка сообщения */ public function send( $to_id ) {} } Модель mail_model содержит следующие методы для выборки сообщений из БД: /** * Получение списка диалогов пользователя */ public function get_dialogs( $user_id ) { $dialogs = DIALOGS_TABLE; $users = USERS_TABLE; $messages = MESSAGES_TABLE;
$res1 = $this->db ->select(" D.id, D.user_2 AS user_id, U.name AS user_name, COUNT(M.id) AS messages_count") ->from("$dialogs D") ->join("$messages M", "D.id = M.dialog_id", "LEFT") ->join("$users U", "D.user_2 = U.id") ->where("D.user_1", $user_id) ->group_by("D.id") ->order_by("messages_count DESC") ->get() ->result_array();
$res2 = $this->db ->select(" D.id, D.user_1 AS user_id, U.name AS user_name, COUNT(M.id) AS messages_count") ->from("$dialogs D") ->join("$messages M", "D.id = M.dialog_id", "LEFT") ->join("$users U", "D.user_1 = U.id") ->where("D.user_2", $user_id) ->group_by("D.id") ->order_by("messages_count DESC") ->get() ->result_array();
return array_merge($res1, $res2); }
/** * Получение информации о диалоге */ public function get_dialog( $where ) { $res = $this->db ->where($where) ->get(DIALOGS_TABLE) ->result_array();
return $res ? $res[0] : array(); }
/** * Получение сообщений */ public function get_messages( $where, $limit = 999, $offset = 0 ) { $messages = MESSAGES_TABLE;
$res = $this->db ->select(" M.*, M.from_id, M.to_id, M.date, M.text, M.read") ->from("$messages M") ->where($where) ->limit($limit, $offset) ->order_by("date DESC") ->get() ->result_array(); return $res; }
/** * Получение количества непрочитанных сообщений */ public function get_unread_count( $where = array() ) { if ( $where ) $this->db->where($where); $this->db->where('read', '0'); return $this->db->count_all_results(MESSAGES_TABLE); } Отправка сообщения Отправка сообщения затрагивает две операции: · создание нового диалога, если его нет · отправка сообщения Отправка сообщения происходит с методе send контроллера mail. Для инициирования или продолжения диалога необходимо нажать на ссылку рядом с другом или на боковой панели просмотра профиля пользователя: или Внешний вид формы нового письма: Рисунок 44 После отправки появится статус сообщение: Так как диалога до этого не было, то он был создан.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (716)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |