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

Удаление альбома

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

Действие

Метод

Вывод списка фотографий

index

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

album

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

user

Просмотр фотографии

photo

Добавление фотографии

add

Редактирование фотографии

edit

Удаление фотографии

delete

Поиск фотографии

search

В итоге структура контроллера 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() {}

}

Вывод списка фотографий

Метод index контроллера photos играет роль главной страницы. Он выводит все фотографии, имеющиеся на сайте постранично. Для этого используется метод get_photos модели photos_model, листинг которого представлен ниже:

/**

* Получение списка фотографий

*/

public function get_photos( $where = array(), $limit = 1000, $offset = 0 )

{

$photos = PHOTOS_TABLE;

$albums = ALBUMS_TABLE;

$users = USERS_TABLE;

$categories = CATEGORIES_TABLE;

$this->db

->select(" P.*,

U.name AS user_name,

A.title AS album_title,

C.id AS category_id,

C.title AS category_title")

->from("$photos P")

->join("$users U", "P.user_id = U.id")

->join("$albums A", "P.album_id = A.id")

->join("$categories C", "A.category_id = C.id")

->having($where)

->order_by("P.title")

->limit($limit, $offset);

$res = $this->db->get();

return $res->result_array();

}

Данный запрос выбирает информацию о фотографиях и возвращает их в виде таблицы, которая впоследствии передается в отображение. Внешний вид главной страницы:

Рисунок 28

Количество фотографий, отображаемых на странице, определено в свойстве $_photos_per_page.