Files
surikov/mirzaev/surikovlib/system/controllers/books_controller.php
Arsen Mirzaev Tatyano-Muradovich 30fd8f0ec3 супер попа (обновление)
2022-04-16 17:30:06 +10:00

127 lines
3.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
namespace mirzaev\surikovlib\controllers;
use mirzaev\surikovlib\controllers\core;
use mirzaev\surikovlib\models\accounts_model as accounts;
use mirzaev\surikovlib\models\books_model as books;
/**
* Контроллер пользователей
*
* @package mirzaev\surikovlib\controllers
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*/
final class books_controller extends core
{
/**
* Страница с книгами (или книгой)
*
* @param array $vars
*/
public function index(array $vars = []): ?string
{
// Инициализация журнала ошибок
$vars['errors'] = [];
// Проверка аутентифицированности
$vars['account'] = accounts::init(errors: $vars['errors']);
if (isset($vars['id'])) {
// Определённая книга
// Чтение метаданных книги
$vars['book'] = books::read(['id' => $vars['id']])[0] ?? null;
// Инициализация страницы
if (empty($vars['page']) || $vars['page'] < 0) $vars['page'] = 0;
// Генерация представления
return $this->view->render(DIRECTORY_SEPARATOR . 'books' . DIRECTORY_SEPARATOR . 'book.html', $vars);
} else {
// Все книги
// Чтение книг
$vars['books'] = books::read(limit: 30, page: isset($vars['page']) && $vars['page'] > 0 ? $vars['page'] : 1);
// Генерация представления
return $this->view->render(DIRECTORY_SEPARATOR . 'books' . DIRECTORY_SEPARATOR . 'index.html', $vars);
}
}
/**
* Запись
*
* @param array $vars Параметры
* @param array $files Файлы
*
* @return string|null HTML-документ
*/
public function write(array $vars = [], array $files = []): ?string
{
// Инициализация журнала ошибок
$vars['errors'] = [];
if (count($books = books::import($files['books'] ?? [], errors: $vars['errors'])) > 0) {
// Загружены книги
} else {
// Не загружены книги
}
// Перенаправление
header('Location: /books', response_code: 303);
return 'wtf';
}
/**
* Чтение
*
* @param array $vars
*
* @return string|null Файл, если найден
*/
public function read(array $vars = []): ?string
{
if (isset($vars['id'], $vars['file'])) {
// Найдены обязательные входные параметры
// Инициализация пути до файла
$file = \STORAGE . DIRECTORY_SEPARATOR . 'books' . DIRECTORY_SEPARATOR . $vars['id'] . DIRECTORY_SEPARATOR . $vars['file'] . '.jpg';
if (file_exists($file)) {
// Найден файл
// Настройка заголовков
header('Content-Description: File Transfer');
header('Content-Type: image/jpeg');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
// Очистить буфер вывода
ob_end_clean();
return file_get_contents($file);
}
}
return null;
}
/**
* Удаление
*
* @param array $vars Параметры запроса
*
* @return string|null HTML-документ
*/
public function delete(array $vars = []): ?string
{
}
}