Вывод списка фотографий пользователя
Вывод списка всех фотографий производится в методе user контроллера photos. Он принимает идентификатор пользователя и страницу для отображения списка постранично. Частичный листинг метода user: /** * Вывод списка фотографий пользователя */ public function user( $user_id, $page = 1 ) { ... $user = $this->users_model->get_user(array('id'=>$user_id));
if ( !$user ) { $this->setError( "Пользователя с таким номером нет", "photos" ); } ... // Обрабатываем страницу $count_of_pages = $this->db_model->get_count_of_pages( PHOTOS_TABLE, array('user_id' => $user_id), $this->_photos_per_page ); // Выбираем фотографии $this->data['photos'] = $this->photos_model->get_photos( array("user_id" => $user_id), $this->_photos_per_page, ( $page - 1 ) * $this->_photos_per_page ); // Загружаем вид $this->load->view('view', $this->data); } Вид основного блока практически аналогичен выводу по альбому: Рисунок 31 Просмотр фотографии Просмотр фотографии и комментариев к ней осуществляется на странице, формируемой методом photo контроллера photos. Метод принимает два параметра: идентификатор фотографии и текущую страницу. Осуществляется проверка на существование запрашиваемой фотографии, и в зависимости от результата метод либо вызывает ошибку, либо загружает данные и само отображение. Метод имеет следующий частичный листинг: /** * Просмотр фотографии */ public function photo( $photo_id, $page = 1 ) { // Выборка фотографии $photo = $this->photos_model->get_photo( $photo_id );
if ( ! $photo ) { $this->setError( "Фотографии с номером <b>$photo_id</b> нет", "photos" ); }
// Получаем оценку пользователя для данной фотографии $mark = array(); if ( $this->user ) $mark = $this->marks_model->get_mark($photo_id);
// Обрабатываем страницу ...
// Формируем путь $date = date_parse($photo['date']); $photo_url = base_url() . PHOTOS_DIR . $date['year'] . "/" . $date['month'] . "/" . $date['day'] . "/" . $photo['file_name'];
... // Загружаем вид $this->load->view('view', $this->data); }
Внешний вид основного блока: Рисунок 32 На данной странице расположены ссылки на добавление комментариев и оценивание фотографии. Обработчики этих действий выходят за рамки контроллера photos, поэтому будут рассмотрены позже. Также, если фотография не будет найдена, то система перенаправит пользователя по адресу /photos и выдаст следующую ошибку: Добавление фотографии Добавление новых фотографий осуществляет метод add контроллера photos. Он загружает форму загрузки фотографии и обрабатывает пришедший запрос. Вызвать метод можно из нескольких мест, различия лишь в том, будет ли установлен альбом, куда загружать фотографию или пользователь сам должен будет его выбрать из списка. Частичный листинг метода add: /** * Добавление фотографии */ public function add( $album_id = null ) { $albums = $this->albums_model->get_albums( array("user_id" => $this->user['id']) );
// Проверяем существование альбомов if ( ! $albums ) { $this->setError( "Невозможно добавить фотографию. " . "Для начала создайте хотя бы один альбом", "albums/add" ); } ... // Принимаем данные формы if ( $this->input->post("submit") ) { // Определяем правила проверки $config = array();
// Устанавливаем правила // Проверяем данные формы if ( $this->form_validation->run() == true ) { // Пытаемся загрузить файл // Создаем папки, если их еще нет // Определяем критерии фотографии $config = array( "upload_path" => $dir "encrypt_name" => "true" ... ); // Загружаем if ( $this->upload->do_upload() ) { // Проверка на целостность $album = $this->albums_model->get_album($photo['album_id']); if ( ! $album || ($this->user['id'] != $album['user_id']) ) { $this->setError( "Загрузка фотографий в чужой альбом недопустима", "photos/add" ); }
// Формируем массив $photo = array(); ... // Заносим информацию в БД if ( $id = $this->db_model->insert(PHOTOS_TABLE, $photo) ) ... } else { // Выводим ошибку загрузки } } } // Загружаем отображение $this->load->view('view', $this->data); } Внешний вид формы загрузки: Рисунок 33 Ошибка при отсутствии категорий: Ошибка при отсутствии альбомов: Пример ошибки загрузки файла:
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (703)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |