
- •Хранилище фотоальбомов
- •Введение
- •Постановка задачи
- •Описание инструментов субд
- •Язык программирования
- •Структура базы данных Диаграмма
- •Описание таблиц
- •Структура web-приложения Определение основных страниц
- •Определение реализации страниц
- •Контроллеры
- •Просмотр списка пользователей
- •Просмотр профиля пользователя
- •Вход пользователя в систему
- •Выход пользователя из системы
- •Регистрация нового пользователя
- •Редактирование профиля
- •Удаление профиля
- •Восстановление пароля
- •Категории
- •Просмотр категорий пользователя
- •Добавление новой категории
- •Редактирование категории
- •Удаление категории
- •Альбомы
- •Вывод списка альбомов
- •Отображение списка альбомов в категории
- •Отображение альбомов конкретного пользователя
- •Добавление альбома
- •Изменение альбома
- •Удаление альбома
- •Фотографии
- •Вывод списка фотографий
- •Вывод списка фотографий в альбоме
- •Вывод списка фотографий пользователя
- •Просмотр фотографии
- •Добавление фотографии
- •Редактирование фотографии
- •Удаление фотографии
- •Поиск фотографии
- •Комментарии
- •Добавление комментариев
- •Просмотр комментариев
- •Оценивание фотографии
- •Просмотр средней оценки
- •Просмотр друзей пользователя
- •Добавление в друзья
- •Запросы в мои друзья
- •Принятие заявки
- •Отклонение заявки
- •Просмотр отправленных мной заявок
- •Удаление пользователя из списка друзей
- •Сообщения
- •Отправка сообщения
- •Просмотр списка диалогов
- •Просмотр диалога
- •Заключение
Отображение списка альбомов в категории
За отображение альбомов согласно категории отвечает метод 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
При удачном изменении система выдает сообщение: