Просмотр отправленных мной заявок

Пользователь, отправивший запрос, может следить за состоянием заявки. Метод контроллера friends my_requests выводит список активных заявок в друзья пользователям:

Просмотр отправленных мной заявок - student2.ru

В это время у пользователя «Катя» в ее заявках появилось сообщение:

Просмотр отправленных мной заявок - student2.ru

Если же текущий пользователь нажмет «Отменить запрос», то отработает метод abort контроллера friends и заявка будет отменена:

Просмотр отправленных мной заявок - student2.ru

А у пользователя «Катя» заявка исчезнет из списка:

Просмотр отправленных мной заявок - student2.ru

Удаление пользователя из списка друзей

Для удаления пользователя из списка друзей необходимо при просмотре списка вызвать метод delete, кликнув на ссылке:

Просмотр отправленных мной заявок - student2.ru

Рисунок 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

{

// Запись не удалена

}

И система оповестит:

Просмотр отправленных мной заявок - student2.ru

Сообщения

Личные сообщения обеспечивают приватное общение между пользователями. Работу сообщений обеспечивает контроллер messages и модель messages_model.

Контроллер содержит реализацию следующих действий:

Действие Метод
Отправление сообщения send
Просмотр диалогов index
Просмотр переписки dialog

Сообщения группируются по диалогам. Диалог объединяет пользователей для общей переписки. Структура контроллера 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. Для инициирования или продолжения диалога необходимо нажать на ссылку рядом с другом или на боковой панели просмотра профиля пользователя:

Просмотр отправленных мной заявок - student2.ru или Просмотр отправленных мной заявок - student2.ru

Внешний вид формы нового письма:

Просмотр отправленных мной заявок - student2.ru

Рисунок 44

После отправки появится статус сообщение:

Просмотр отправленных мной заявок - student2.ru

Так как диалога до этого не было, то он был создан.

Наши рекомендации