Редактирование фотографии
Редактирование фотографии производится аналогично добавлению, за исключением того, что новые данные не заносятся в базу, а обновляются. Редактирование фотографий осуществляет метод edit контроллера photos.
Удаление фотографии Удаление фотографии происходит в два этапа: 1. Удаление физического файла с диска 2. Удаление записи о файле из БД Удаление фотографии осуществляет метод delete контроллера photos. Он получает в качестве параметра идентификатор фотографии, проверяет ее авторство, и, если у пользователя достаточно прав для удаления, удаляет фотографию. Частичный листинг метода delete: /** * Удаление фотографии */ public function delete( $photo_id ) { // Проверяем существование фотографии $photo = $this->photos_model->get_photo( $photo_id ); if ( ! $photo ) $this->setError( "Фотография с номером $photo_id не найдена", "photos/user/{$this->user['id']}" );
// Проверка авторства фотографии if ( $this->user['id'] != $photo['user_id'] ) $this->setError( "Вы не можете удалять чужие фотографии", "photos/user/{$this->user['id']}" ); // Удаляем запись о фтографии из БД if ( $this->db_model->delete(PHOTOS_TABLE, array('id' => $photo_id)) ) { // Удаляем файл с диска $date = date_parse($photo['date']); $photo_url = "./" . PHOTOS_DIR . $date['year'] . "/" . $date['month'] . "/" . $date['day'] . "/" . $photo['file_name']; @unlink($photo_url);
$this->setMessage("Фотография <b>{$photo['title']}</b> удалена"); } else $this->setError("Фотография <b>{$photo['title']}</b> удалена"); redirect("photos/album/{$photo['album_id']}"); } При удачном удалении фотографии система выдает сообщение: Поиск фотографии На сайте определен поиск фотографии, как по названию самой фотографии, так и по названию альбома. Поиск осуществляется методом search модели photos_model, а загрузка результатов производится методом search контроллераphotos, который имеет следующий листинг: /** * Поиск фотографии */ public function search() { $photos = array(); $q = "";
// Пинимаем строку поиска if ( $this->input->post("submit") ) { $q = $this->input->post("q"); if ( ! $q ) $this->setMessage("Введите строку поиска"); else $photos = $this->photos_model->search($q); } // Загружаем вид $this->load->view('view', $this->data); } Листинг метода search модели photos_model: /** * Поиск фотографии */ public function search( $q = "" ) { $photos = PHOTOS_TABLE; $albums = ALBUMS_TABLE; $users = USERS_TABLE; return $this->db ->select(" P.*, U.name AS user_name, A.title AS album_title") ->from("$photos P") ->join("$users U", "P.user_id = U.id") ->join("$albums A", "P.album_id = A.id") ->like("P.title", $q) ->or_like("A.title", $q) ->order_by("P.id DESC") ->get() ->result_array(); }
Внешний вид страницы поиска: Рисунок 34
Комментарии Комментарии - это мнения о фотографиях, оставляемые пользователями. В данном случае комментарии могут быть от зарегистрированных пользователей и от гостей. При оставлении комментария зарегистрированным пользователем, авторство комментария определяется полем user_id в таблице comments. Если пользователь не авторизован, то ему необходимо указать свой E-mail, чтобы добавить комментарий. Комментарии управляются контроллером comments. Он предоставляет доступ к следующим действиям:
Контроллер имеет следующую структуру: class Comments extends MY_Controller { public function __construct() { parent::__construct(); }
/** * Добавление комментария */ public function add( $photo_id ) {} } Также модель comments_model содержит метод get_comments, который возвращает список комментариев в зависимости от условий: /** * Получение комментариев */ public function get_comments( $where = array(), $limit = 1000, $offset = 0 ) { $users = USERS_TABLE; $comments = COMMENTS_TABLE;
return $this->db ->select(" C.*, U.name AS user_name") ->from("$comments C") ->join("$users U", "C.user_id = U.id", "LEFT") ->having($where) ->limit($limit, $offset) ->order_by("C.id DESC") ->get() ->result_array(); }
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ![]() ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (645)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |