Мегаобучалка Главная | О нас | Обратная связь


Вывод списка фотографий пользователя





Вывод списка всех фотографий производится в методе 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-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (472)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)