супер попа (обновление)
This commit is contained in:
@@ -18,29 +18,30 @@ use mirzaev\surikovlib\models\books_model as books;
|
||||
final class books_controller extends core
|
||||
{
|
||||
/**
|
||||
* Страница с библеотекой
|
||||
* Страница с книгами (или книгой)
|
||||
*
|
||||
* @param array $vars
|
||||
*/
|
||||
public function index(array $vars = []): ?string
|
||||
{
|
||||
// Проверка аутентифицированности
|
||||
$vars['account'] = accounts::account($vars);
|
||||
// Инициализация журнала ошибок
|
||||
$vars['errors'] = [];
|
||||
|
||||
if (!empty($vars['id'])) {
|
||||
// Проверка аутентифицированности
|
||||
$vars['account'] = accounts::init(errors: $vars['errors']);
|
||||
|
||||
if (isset($vars['id'])) {
|
||||
// Определённая книга
|
||||
|
||||
// Чтение книги
|
||||
// Чтение метаданных книги
|
||||
$vars['book'] = books::read(['id' => $vars['id']])[0] ?? null;
|
||||
|
||||
if (empty($vars['book'])) {
|
||||
// Не найдена книга
|
||||
|
||||
return null;
|
||||
}
|
||||
// Инициализация страницы
|
||||
if (empty($vars['page']) || $vars['page'] < 0) $vars['page'] = 0;
|
||||
|
||||
// Генерация представления
|
||||
return $this->view->render(DIRECTORY_SEPARATOR . 'books' . DIRECTORY_SEPARATOR . 'book.html', $vars);
|
||||
|
||||
} else {
|
||||
// Все книги
|
||||
|
||||
@@ -52,40 +53,6 @@ final class books_controller extends core
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Обложка
|
||||
*
|
||||
* @param array $vars
|
||||
*
|
||||
* @return string|null Файл, если найден
|
||||
*/
|
||||
public function cover(array $vars = []): ?string
|
||||
{
|
||||
// Проверка входных параметров
|
||||
if (empty($vars['id'])) return null;
|
||||
|
||||
// Инициализация пути до файла
|
||||
$file = \STORAGE . DIRECTORY_SEPARATOR . 'books' . DIRECTORY_SEPARATOR . $vars['id'] . DIRECTORY_SEPARATOR . '0.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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Запись
|
||||
*
|
||||
@@ -96,59 +63,54 @@ final class books_controller extends core
|
||||
*/
|
||||
public function write(array $vars = [], array $files = []): ?string
|
||||
{
|
||||
// ПЕРЕНЕСТИ В МОДЕЛЬ
|
||||
// Инициализация журнала ошибок
|
||||
$vars['errors'] = [];
|
||||
|
||||
// Инициализация буфера сохранённых книг
|
||||
$books = [];
|
||||
|
||||
for ($i = -1; count($files['books']['name']) > ++$i;) {
|
||||
// Перебор загруженных книг
|
||||
|
||||
// Генерация хеша файла
|
||||
$hash = hash_file('md5', $files['books']['tmp_name'][$i]) ?? 0;
|
||||
|
||||
if (move_uploaded_file($files['books']['tmp_name'][$i], \STORAGE . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $hash . '_' . $files['books']['name'][$i])) {
|
||||
// Загружен и перемещён из временной папки файл с книгой
|
||||
|
||||
// Запись в буфер сохранённых книг
|
||||
$books[] = $hash . '_' . $files['books']['name'][$i];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($books as $book) {
|
||||
// Перебор сохранённых книг
|
||||
|
||||
// Запись в базу данных
|
||||
|
||||
|
||||
// Инициализация пути до хранилища
|
||||
$storage = \STORAGE . DIRECTORY_SEPARATOR . 'books' . DIRECTORY_SEPARATOR . 'id' . DIRECTORY_SEPARATOR;
|
||||
|
||||
// Извлечение изображений из PDF-документа
|
||||
exec("cd $storage && pdfimages -j $book");
|
||||
if (count($books = books::import($files['books'] ?? [], errors: $vars['errors'])) > 0) {
|
||||
// Загружены книги
|
||||
} else {
|
||||
// Не загружены книги
|
||||
}
|
||||
|
||||
// Перенаправление
|
||||
header('Location: /books', response_code: 303);
|
||||
|
||||
return null;
|
||||
return 'wtf';
|
||||
}
|
||||
|
||||
/**
|
||||
* Чтение
|
||||
*
|
||||
* @param array $vars Параметры запроса
|
||||
* @param array $vars
|
||||
*
|
||||
* @return string|null HTML-документ
|
||||
* @return string|null Файл, если найден
|
||||
*/
|
||||
public function read(array $vars = []): ?string
|
||||
{
|
||||
if (accounts::deauthentication($vars)) {
|
||||
// Удалось деаутентифицироваться
|
||||
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 $this->view->render(DIRECTORY_SEPARATOR . 'main' . DIRECTORY_SEPARATOR . 'index.html', $vars);
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,11 +122,5 @@ final class books_controller extends core
|
||||
*/
|
||||
public function delete(array $vars = []): ?string
|
||||
{
|
||||
if (accounts::deauthentication($vars)) {
|
||||
// Удалось деаутентифицироваться
|
||||
}
|
||||
|
||||
// Генерация представления
|
||||
return $this->view->render(DIRECTORY_SEPARATOR . 'main' . DIRECTORY_SEPARATOR . 'index.html', $vars);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user