# Галерея фото (PHP + MySQL) Актуальная версия проекта — это MySQL-контур с двумя основными точками входа: - `index.php` — публичная витрина (разделы, тематики, карточки фото, комментарии), - `admin.php?token=...` — закрытая админка (управление разделами/тематиками/фото/пользователями/комментариями/настройками). `index-mysql.php` и `admin-mysql.php` оставлены как алиасы для обратной совместимости. ## Что умеет проект - Иерархия каталога: разделы + тематики (2 уровня). - Для фото поддерживаются версии `before` и `after`. - Версия `after` на публичной части отдается с watermark (текст, яркость и угол настраиваются в админке). - Комментарии доступны только по персональной viewer-ссылке. - Для карточек каталога используются превью из `thumbs/`. - Превью создаются/обновляются автоматически при загрузке, замене и повороте изображения. ## Структура ```text photo.andr33v.ru/ ├─ index.php # публичная витрина ├─ admin.php # админка по токену ├─ index-mysql.php # alias -> index.php ├─ admin-mysql.php # alias -> admin.php ├─ deploy.php # webhook деплоя ├─ style.css # базовые стили ├─ favicon.svg ├─ config.php.example # шаблон конфига БД ├─ deploy-config.php.example # шаблон токена/настроек деплоя ├─ lib/ │ ├─ db.php # PDO + загрузка config.php │ ├─ db_gallery.php # доступ к данным галереи │ ├─ thumbs.php # генерация/чтение/удаление превью │ ├─ admin_http.php # JSON-ответы админки │ ├─ admin_get_actions.php # GET-экшены админки │ ├─ admin_post_actions.php # POST-экшены админки │ └─ admin_helpers.php # helper-функции админки ├─ migrations/ │ ├─ 001_init.sql │ ├─ 002_site_settings.sql │ ├─ 003_comment_users_plain_token.sql │ └─ 004_topics.sql ├─ scripts/ │ ├─ migrate.php # запуск миграций │ ├─ generate_thumbs.php # backfill превью │ └─ deploy.sh # deploy на shared hosting ├─ photos/ # оригиналы (runtime) ├─ thumbs/ # превью (runtime) └─ data/ # runtime (логи/служебные файлы) ``` ## Требования - PHP 8.2+ - MySQL 8+ (или совместимая MariaDB) - PHP-расширения: - `pdo_mysql` (обязательно), - `gd` или `imagick` (для watermark/превью). ## Быстрый старт 1. Создай `config.php`: ```bash cp config.php.example config.php ``` 2. Заполни доступы к БД в `config.php`. 3. Прогон миграций: ```bash php scripts/migrate.php ``` 4. Локальный запуск: ```bash php -S 127.0.0.1:8080 ``` 5. Открой: - `http://127.0.0.1:8080` — публичная часть, - `http://127.0.0.1:8080/admin.php?token=` — админка (после настройки `deploy-config.php`). ## Настройка админки Админка использует `token` из `deploy-config.php`. Создай файл: ```bash cp deploy-config.php.example deploy-config.php ``` Минимально заполни: - `token` — длинный случайный секрет. В админке доступны разделы: - Разделы, - Тематики, - Фото, - Пользователи, - Комментарии, - Настройки (welcome + watermark параметры). ## Превью и watermark - Публичный каталог карточек грузит превью через `?action=thumb&file_id=...`. - Превью создаются автоматически в `thumbs/`: - при загрузке файлов, - при замене файлов, - после поворота. - Для старых данных можно догенерировать превью: ```bash php scripts/generate_thumbs.php ``` - Версия `after` в публичке отдается с watermark (`?action=image&file_id=...`). ## Деплой Webhook: - `deploy.php?token=` Скрипт `scripts/deploy.sh`: 1. делает `git fetch --all --prune`, 2. переключает код на `origin/` через `git reset --hard`, 3. сохраняет runtime-папки (`photos`, `thumbs`, `data`). Важно: деплой-скрипт перетирает рабочие изменения в репозитории на сервере. ## Примечания - Проект принудительно редиректит на HTTPS и non-www через `.htaccess`. - Для production рекомендуется ограничить webhook по IP и/или Basic Auth (`deploy-config.php`). - Если `config.php` отсутствует, приложение корректно падает с ошибкой подключения к БД.