Отображение списка альбомов в категории
За отображение альбомов согласно категории отвечает метод category. Он получает в качестве параметра номер категории и производит выборку из нее альбомов: Рисунок 22 Боковая панель: Рисунок 23 Листинг метода category: /** * Отображение списка альбомов в категории */ public function category( $category_id ) { ... $category = $this->categories_model->get_category($category_id);
if ( !$category ) { $this->setError( "Категории с номером <b>$category_id</b> нет", "albums" ); } ... $this->load->view('view', $this->data); } Отображение альбомов конкретного пользователя Выборка и отображение альбомов пользователя производится в методе user. Он принимает номер пользователя, альбомы которого необходимо показать. Внешний вид страницы с альбомами пользователя: Рисунок 24 Частичный листинг метода user: /** * Отображение альбомов конкретного пользователя */ public function user( $user_id ) { ... $user = $this->users_model->get_user(array('id'=>$user_id));
if ( !$user ) { $this->setError( "Пользователя с таким номером нет", "albums" ); } ... $this->load->view('view', $this->data); } Добавление альбома Добавление альбома производится в методе add, который загружает форму добавления альбома и обрабатывает данные, которые с ней приходят. Внешний вид формы добавления альбома: Рисунок 25 В данном случае в выпадающем списке категорий находятся только категории текущего пользователя. Таким образом, при попытке добавления альбома не в свою категорию система выдаст ошибку: иначе, если добавление успешно, то сообщение будет таким: Обработка добавления будет иметь код: /** * Добавление альбома */ public function add( $category_id = null ) { $categories = $this->categories_model->get_categories( array("user_id" => $this->user['id']) );
if ( !$categories ) { $errors[] = "Невозможно создать альбом. " . "Для начала добавьте хотя бы одну категорию"; $this->session->set_userdata('errors', $errors); redirect("categories/add"); }
// Принимаем данные формы if ( $this->input->post("submit") ) { // Определяем правила проверки // Устанавливаем правила // Проверяем данные формы if ( $this->form_validation->run() == true ) { // Данные корректны, принимаем их
$category = $this->categories_model ->get_category($album['category_id']); if ( !$category || ($this->user['id'] != $category['user_id']) ) { $errors[] = "Невозможно добавить альбом в чужую категорию"; $this->session->set_userdata('errors', $errors); redirect("categories/user/" . $this->user['id']); } // Заносим информацию в БД } } // Загружаем форму добавления альбома $this->load->view('view', $this->data); } Изменение альбома Изменение альбома происходит в методе edit аналогично добавлению, за исключением того, что вместо добавления данных, пришедших из формы, производится их обновление. Форма изменения альбома имеет вид: Рисунок 26 При удачном изменении система выдает сообщение: Удаление альбома Удаление альбома осуществляется методом delete контроллера albums. Он принимает идентификатор альбома, проверяет авторство и удаляет альбом из базы данных. Рисунок 27 После удачного удаления система выдает сообщение: иначе, если пользователь пытается удалить не свой альбом: Листинг обработчика удаления альбома выглядит так: /** * Удаление альбома */ public function delete( $album_id ) { ... $album = $this->albums_model->get_album( $album_id );
if ( !$album ) { $this->setError( "Альбом с номером $album_id не найден", "albums/user/" . $this->user['id'] ); }
if ( $this->user['id'] != $album['user_id'] ) { $this->setError( "Вы не можете удалять чужие альбомы", "albums/user/" . $this->user['id'] ); }
if ( $this->db_model->delete(ALBUMS_TABLE, array('id' => $album_id)) ) { $this->setMessage("Альбом <b>{$album['title']}</b> удален"); } else { $this->setMessage("Альбом <b>{$album['title']}</b> не удален"); } redirect("albums/user/" . $this->user['id']); } Фотографии Фотографии загружаются пользователями в созданные ими альбомы. Для управления фотографиями используется контроллер photos и модель photos_model. В пределах управления фотографиями определены следующие действия:
В итоге структура контроллера photos будет следующей: <?php
class Photos extends MY_Controller { /** * Количество фотографий на странице */ private $_photos_per_page = 2;
/** * Количество комментариев на странице */ private $_comments_per_page = 3;
public function __construct() { parent::__construct(); }
/** * Вывод списка фотографий */ public function index( $page = 1 ) {}
/** * Вывод списка фотографий в альбоме */ public function album( $album_id, $page = 1 ) {}
/** * Вывод списка фотографий пользователя */ public function user( $user_id, $page = 1 ) {}
/** * Просмотр фотографии */ public function photo( $photo_id, $page = 1 ) {}
/** * Добавление фотографии */ public function add( $album_id = null ) {}
/** * Редактирование фотографии */ public function edit( $photo_id ) {}
/** * Удаление фотографии */ public function delete( $photo_id ) {}
/** * Поиск фотографии */ public function search() {} }
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (629)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |