Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвБД_Курсовик_ОрищенкоТС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
895.63 Кб
Скачать

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

Фотографии также можно просматривать в пределах одного альбома. За отображения фотографий в альбоме отвечает метод album контроллера photos. Он имеет следующий листинг:

/**

* Вывод списка фотографий в альбоме

*/

public function album( $album_id, $page = 1 )

{

if ( ! is_numeric($album_id) )

{

$this->setError(

"Номер альбома не определен",

"albums"

);

}

$album = $this->albums_model->get_album($album_id);

if ( ! $album )

{

$this->setError(

"Альбома с таким номером нет",

"albums"

);

}

$user = $this->users_model->get_user(array('id' => $album['user_id']));

$category = $this->categories_model->get_category($album['category_id']);

$this->data['page_title'] = "Фотографии альбома {$album['title']}";

$this->data['photos'] = $this->photos_model->get_photos(

array('album_id'=>$album_id),

$this->_photos_per_page,

( $page - 1 ) * $this->_photos_per_page

);

...

$this->load->view('view', $this->data);

}

Внешний вид основного блока:

Рисунок 29

Внешний вид боковой панели:

Рисунок 30

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

Вывод списка всех фотографий производится в методе 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 и выдаст следующую ошибку: