Просмотр средней оценки
После оценивания хотя бы одним человеком доступна статистика в виде прогрессбара: Рисунок 39 Пользователь, поставивший оценку, теперь будет видеть ее на месте формы.
Друзья Для связывания пользователей служит связь «друг». Каждый пользователь может добавить к себе в список друзей интересных ему людей. Список друзей контролируется контроллером friends и моделью friends_model. Для того, чтобы пользователю добавиться в друзья необходимо для начала отправить заявку, которую другой пользователь должен подтвердить. Контроллер предоставляет следующие интерфейсы для управления друзьями:
Тогда, структура контроллера будет иметь вид: /** * Контроллер друзей */ class Friends extends MY_Controller { public function __construct() { parent::__construct(); }
/** * Вывод списка друзей */ public function index() {}
/** * Просмотр друзей пользователя */ public function user( $id = null ) {}
/** * Запросы в друзья */ public function requests() {}
/** * Отправленные мной заявки */ public function my_requests() {}
/** * Добавление в друзья */ public function add( $user_id ) {}
/** * Удаление из друзей */ public function delete( $user_id ) {}
/** * Принятие заявки */ public function accept( $request_id ) {}
/** * Отвержение заявки */ public function decline( $request_id ) {}
/** * Отмена заявки */ public function abort( $request_id ) {} } Модель friends_model имеет следующие методы по выборке данных о друзьях: /** * Получение информации о связи */ public function get_friend($where) { $res = $this->db->get_where(FRIENDS_TABLE, $where)->result_array(); return $res ? $res[0] : array(); }
/** * Получение списка друзей пользователя */ public function get_friends( $id = null ) { $friends = FRIENDS_TABLE; $users = USERS_TABLE;
$q1 = $this->db ->select(" F.friend2 AS friend, F.confirmed, U.name") ->from("$friends F") ->join("$users U", "F.friend2 = U.id") ->where("F.friend1 = $id") ->where("F.confirmed = 1") ->get()->result_array();
$q2 = $this->db ->select(" F.friend1 AS friend, F.confirmed, U.name") ->from("$friends F") ->join("$users U", "F.friend1 = U.id") ->where("F.friend2 = $id") ->where("F.confirmed = 1") ->get()->result_array();
$res = array_merge($q1, $q2);
$friends = array();
// Преобразовываем результат foreach ( $res as $value ) { $tmp = array(); foreach ( $value as $k => $v ) { $tmp[$k] = $v; } $friends[$value['friend']] = $tmp; }
return $friends; }
/** * Проверка дружбы */ public function is_friend( $user_id, $friend_id ) { $friends = FRIENDS_TABLE; $res = $this->db ->select("id") ->from("$friends") ->where( "(friend1 = $user_id AND friend2 = $friend_id AND confirmed = 1)" ) ->or_where( "(friend1 = $friend_id AND friend2 = $user_id AND confirmed = 1)" )->get()->result_array(); return $res ? true : false; }
/** * Количество друзей */ public function get_friends_count( $user_id ) { $friends = FRIENDS_TABLE; $res = $this->db ->select("COUNT(id) AS friends_count") ->from("$friends") ->where( "( friend1 = $user_id OR friend2 = $user_id ) AND confirmed = 1") ->get()->result_array(); return $res ? $res[0]['friends_count'] : 0; }
/** * Заявки в друзья к пользователю */ public function get_requests( $user_id ) { $friends = FRIENDS_TABLE; $users = USERS_TABLE;
$res = $this->db ->select(" F.id AS request_id, F.friend1 AS user_id, U.name AS user_name, F.date") ->from("$friends F") ->join("$users U", "F.friend1 = U.id") ->where(array( "confirmed" => "0", "friend2" => $user_id )) ->get()->result_array();
return $res; }
/** * Отправленные пользователем заявки */ public function get_my_requests( $user_id ) { $friends = FRIENDS_TABLE; $users = USERS_TABLE;
$res = $this->db ->select(" F.id AS request_id, F.friend2 as user_id, U.nam as user_name, F.date") ->from("$friends F") ->join("$users U", "F.friend2 = U.id") ->where(array( "confirmed" => "0", "friend1" => $user_id )) ->get()->result_array();
return $res; } Эти методы вызываются не только из контроллера friends, но и из других контроллеров.
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (722)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |