README.md

Photo Rigma BiZ 📸

Banner

Photo Rigma BiZ — это галерея изображений, написанная на PHP и использующая MySQL для хранения данных. Проект включает такие функции, как загрузка изображений 📤, создание альбомов 📂, оценки ⭐ и администрирование 👮‍♂️.

Особенность проекта — удобная система взаимодействия между пользователями через фотографии, что делает его идеальным для учебных заведений. Студенты и преподаватели могут оценивать работы. В планах добавить функции комментариев и обсуждений для повышения интерактивности 💬.

Стек технологий: PHP 8.1+, MySQL 5.7+, HTML/CSS, JavaScript. Разработан с акцентом на простоту развертывания и использования 🚀.

📑 Оглавление

  1. 📌 Описание проекта
  2. Основные функции
  3. 💻 Требования к системе
  4. 🛠️ Установка
  5. 🎮 Использование
  6. 🗂️ Структура проекта
  7. 📜 Лицензия
  8. 🚀 Дополнительная информация

📌 Описание проекта

Photo Rigma BiZ предоставляет удобный интерфейс для загрузки, просмотра и управления изображениями 🖼️.

Основные возможности:

  • Пользователи могут создавать свои альбомы 📂.
  • Возможность оценивать фотографии ⭐.
  • Оставлять комментарии 💬 (в планах).
  • Взаимодействовать с другими участниками 👥.

Для кого предназначен?

Основная целевая аудитория — учебные заведения 🎓. Проект позволяет:

  • Студентам выкладывать свои работы и получать обратную связь.
  • Преподавателям (модераторам) оценивать фотографии и давать рекомендации.
  • Администраторам управлять контентом, пользователями и настройками платформы 👮‍♂️.

Пример интерфейса


✨ Основные функции

Для пользователей:

  • Загрузка изображений 📤: Пользователи могут загружать изображения в свои альбомы. Поддерживаются популярные форматы, такие как JPG, PNG и GIF.

  • Пользовательские альбомы 📂: Каждый пользователь может создавать и управлять своими альбомами. Альбомы можно редактировать, переименовывать или удалять.

  • Рейтинги и оценки ⭐: Возможность оценивать изображения и просматривать топовые фотографии. Рейтинги помогают выделить лучшие работы.

  • Комментарии 💬 (в планах): Пользователи смогут оставлять комментарии к изображениям для обсуждения и обратной связи.

Для администраторов:

  • Администрирование 👮‍♂️: Администраторы могут управлять пользователями, изображениями и настройками платформы через панель администратора.

  • Защита от SQL-инъекций и XSS 🔒: Встроенные механизмы защиты от вредоносных запросов обеспечивают безопасность данных.

  • Мультиязычность 🌐: Поддержка нескольких языков через файлы локализации. На данный момент доступны русский и английский языки.

  • Генерация эскизов 🖼️: Автоматическое создание миниатюр для загруженных изображений. Это ускоряет загрузку страниц и улучшает пользовательский опыт.


💻 Требования к системе

Для работы приложения необходимы следующие компоненты:

Основные компоненты:

Расширения PHP:

Для корректной работы приложения необходимо установить следующие расширения PHP:

  • PDO (документация PDO): Для работы с базой данных.
  • GD (документация GD): Для обработки изображений.
  • JSON: Для работы с JSON-данными.
  • MBString: Для корректной обработки строк в разных кодировках.

Необязательные расширения (но поддерживаются):

  • GMagick (документация GMagick): Альтернативная библиотека для обработки изображений.
  • IMagick (документация IMagick): Ещё одна мощная библиотека для работы с изображениями.
  • Redis (документация Redis): Поддержка Redis для кеширования данных. Улучшает производительность за счёт быстрого доступа к данным в памяти.
  • Memcached (документация Memcached): Поддержка Memcached для кеширования данных. Аналогично Redis, используется для оптимизации работы с часто запрашиваемыми данными.

Права доступа:

Убедитесь, что веб-сервер имеет права на запись в следующие директории:

  • avatar/ — для хранения аватаров пользователей.
  • gallery/ — для хранения полноформатных изображений.
  • logs/ — для логов системы.
  • thumbnail/ — для хранения миниатюр изображений.
  • cache/ — для временных файлов (например, кэширование данных).

Рекомендации:

  • Используйте HTTPS для защиты данных пользователей.
  • Настройте регулярное резервное копирование базы данных.

🛠️ Установка

Для установки и настройки Photo Rigma BiZ выполните следующие шаги:


1. Клонируйте репозиторий

Клонируйте репозиторий на ваш сервер или локальную машину:

git clone https://github.com/ddayver/Photo-Rigma-BiZ.git
cd Photo-Rigma-BiZ

Важно: Ядро проекта находится в папке www. Скопируйте её содержимое на ваш веб-сервер (например, в директорию /var/www/html).


2. Настройте базу данных

a) Создайте базу данных и пользователя

Для работы приложения требуется база данных. Выполните следующие шаги:

  • Для MySQL:

    CREATE DATABASE photorigma;
    CREATE USER 'photorigma_user'@'localhost' IDENTIFIED BY 'secure_password';
    GRANT ALL PRIVILEGES ON photorigma.* TO 'photorigma_user'@'localhost';
    FLUSH PRIVILEGES;
    
  • Для PostgreSQL (экспериментальная поддержка):

    CREATE DATABASE photorigma;
    CREATE USER photorigma_user WITH PASSWORD 'secure_password';
    GRANT ALL PRIVILEGES ON DATABASE photorigma TO photorigma_user;
    
  • Для SQLite: SQLite не требует создания базы данных через SQL. Просто укажите путь к файлу базы данных в конфигурации. Если файл не существует, он будет создан автоматически при первом подключении. Убедитесь, что директория, в которой находится файл, доступна для записи.

b) Импортируйте структуру базы данных

Импортируйте структуру базы данных из файла sql/photorigma.sql:

  • Для MySQL:

    mysql -u photorigma_user -p photorigma < sql/MySQL/photorigma.sql
    
  • Для PostgreSQL:

    psql -U photorigma_user -d photorigma -f sql/PostgreSQL/photorigma.sql
    
  • Для SQLite:

    sqlite3 /path/to/database.sqlite < sql/SQLite/photorigma.sql
    

    Примечание: Замените /path/to/database.sqlite на путь к файлу базы данных, указанный в конфигурации.


3. Настройте конфигурацию

Откройте файл www/include/config.php и отредактируйте параметры подключения к базе данных и другие настройки:

// =============================================================================
// НАЧАЛО РЕДАКТИРУЕМОЙ ЧАСТИ НАСТРОЕК
// =============================================================================

// Настройки подключения к базе данных
$config['db'] = [
    'dbtype' => 'mysql',       // Тип базы данных: 'mysql', 'pgsql' или 'sqlite'
    'dbhost' => 'localhost',   // Сервер базы данных (по умолчанию: localhost). Не используется для SQLite.
    'dbport' => '',            // Порт сервера (оставьте пустым для значения по умолчанию). Не используется для SQLite.
    'dbsock' => '/var/run/mysqld/mysqld.sock', // Путь к сокету (если используется). Не используется для SQLite.
    'dbuser' => 'photorigma_user', // Имя пользователя БД. Не используется для SQLite.
    'dbpass' => 'secure_password', // Пароль пользователя БД. Не используется для SQLite.
    'dbname' => 'photorigma',  // Имя базы данных. Для SQLite это путь к файлу базы данных.
];

// Настройки папок проекта
$config['gallery_folder']   = 'gallery'; // Папка для хранения фотографий
$config['thumbnail_folder'] = 'thumbnail'; // Папка для хранения эскизов
$config['avatar_folder']    = 'avatar'; // Папка для хранения аватаров

// =============================================================================
// Настройки кеширования
// =============================================================================
$config['cache'] = [
    'type' => 'file', // Тип кеширования ('file', 'redis', 'memcached'). По умолчанию: file.
    'cache_dir' => 'cache', // Путь к директории для файлового кеширования. Используется только при type = 'file'.
    'host' => '127.0.0.1', // Хост для Redis или Memcached. Используется только при type = 'redis' или 'memcached'.
    'port' => '', // Порт для Redis или Memcached. Если не указан, используются значения по умолчанию.
];

// =============================================================================
// Настройки использования проекта в локальной или внешней сети
// =============================================================================
define('LOCALHOST_SERVER', false);

// =============================================================================
// КОНЕЦ РЕДАКТИРУЕМОЙ ЧАСТИ НАСТРОЕК
// =============================================================================

Примечание:

  • Замените значения dbuser, dbpass и dbname на те, которые вы создали на предыдущем шаге.
  • Если используете PostgreSQL, измените параметр dbtype на 'pgsql'.
  • Если используете SQLite: > - Установите параметр dbtype на 'sqlite'.
    • Укажите путь к файлу базы данных в параметре dbname. Например: 'dbname' => '/path/to/database.sqlite'.
    • Параметры dbhost, dbport, dbsock, dbuser и dbpass игнорируются для SQLite.

4. Настройте права доступа

Убедитесь, что веб-сервер имеет права на запись в следующие директории:

chmod -R 775 avatar/
chmod -R 775 gallery/
chmod -R 775 logs/
chmod -R 775 thumbnail/
chmod -R 775 cache/

5. Запустите приложение

Откройте браузер и перейдите по адресу вашего сайта, например:

http://localhost/

6. Решение проблем

Если возникли проблемы:

  • Проверьте логи сервера или файлы в папке logs/.
  • Убедитесь, что все расширения PHP установлены и включены.
  • Если используете PostgreSQL, проверьте совместимость версии и правильность настроек в config.php.

Примечание: Поддержка PostgreSQL находится в процессе внедрения. Если вы столкнулись с ошибками при использовании PostgreSQL, сообщите о них в разделе Issues.


🎮 Использование

1. Регистрация и вход

  • Перейдите на страницу регистрации и создайте учётную запись.
  • После регистрации войдите в систему на странице входа.

Важно:

  • По умолчанию в базе данных создаётся пользователь с логином admin и паролем admin.
  • После первого входа обязательно смените пароль через панель профиля пользователя.

2. Загрузка изображений

  • Перейдите в свой профиль и создайте новый альбом.
  • Загрузите изображения в альбом через форму загрузки.

Поддерживаются форматы: JPG, PNG, GIF. Максимальный размер файла: 10 МБ.


3. Оценка и комментирование

  • Просмотрите изображения других пользователей.
  • Оцените изображение (например, по шкале от 1 до 5 звёзд).
  • Оставьте комментарий (если функция комментариев включена).

4. Администрирование

  • Войдите в систему как администратор.
  • Управляйте пользователями, изображениями и настройками платформы через панель администратора.

Панель администратора доступна по адресу ?action=admin.


5. Расширение функционала

Photo Rigma BiZ поддерживает возможность добавления собственного кода для реализации новых функций. Вот как это работает:

a) Добавление нового обработчика

  1. Создайте новый файл в папке www/action/, например, custom_action.php.
  2. Реализуйте логику обработчика в этом файле. Например:

    <?php
    // Подключаем необходимые пространства имен
     namespace PhotoRigma\Action;
    
     use PhotoRigma\Classes\Work;
     use PhotoRigma\Classes\User;
    
     // Устанавливаем файл шаблона
     $template->template_file = 'custom_template.html';
    
    // Пример простого обработчика
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
       $user = new User();
       $user->logAction('Custom action executed');
       echo 'Custom action completed!';
    }
    

b) Добавление HTML-шаблона (если требуется)

  1. Создайте новый HTML-шаблон в папке темы оформления, например, www/themes/default/custom_template.html.
  2. Убедитесь, что шаблон соответствует структуре текущих шаблонов.

c) Подключение нового кода

  • Через панель администратора (планируется) или базу данных добавьте запись о новом обработчике.
  • Если код написан правильно, ядро проекта автоматически “подхватит” его и интегрирует в систему.

Примечание:

  • Все классы, методы и интерфейсы, предоставляемые ядром, уже доступны для использования в вашем коде.
  • Для ознакомления с текущими классами и их функционалом используйте документацию, расположенную в папке Documentation/.
  • Документация генерируется автоматически с помощью Doxygen. Чтобы обновить её, выполните команду:

    doxygen Doxyfile
    

6. Типичные проблемы

Если возникли проблемы:

  • Проверьте логи системы в папке logs/.
  • Убедитесь, что все необходимые расширения PHP включены.
  • Если проблема не решена, сообщите о ней в разделе Issues.

🗂️ Структура проекта

Photo-Rigma-BiZ/
├── .gitignore           # Файл для игнорирования ненужных файлов в Git
├── README.md            # Основной файл документации проекта
├── Documentation/       # Документация проекта
├── sql/                 # Папка с SQL-скриптами
│   ├── photorigma.sql   # SQL-дамп для создания базы данных
│   └── update           # SQL-запросы для обновления БД при обновлении кода
├── temp/                # Временные файлы (например, кэши, логи или промежуточные данные)
└── www/                 # Основная папка с файлами веб-приложения
    ├── action/          # Папка с обработчиками действий (например, формы, запросы)
    │   ├── admin.php    # Обработчик действий для административной панели
    │   ├── attach.php   # Обработчик для вывода изображений или файлов
    │   ├── category.php # Обработчик для работы с категориями
    │   ├── main.php     # Обработчик основных действий
    │   ├── news.php     # Обработчик новостей
    │   ├── photo.php    # Обработчик для работы с фотографиями
    │   ├── profile.php  # Обработчик для работы с профилями пользователей
    │   ├── search.php   # Обработчик для поиска
    │   └── ...          # Другие обработчики действий (возможны дополнения)
    ├── avatar/          # Папка для хранения аватаров пользователей
    ├── cache/           # Папка для хранения временных файлов (кеш)
    ├── gallery/         # Папка для хранения полноформатных изображений
    │   ├── no_foto.png  # Заглушка для вывода изображения при отсутствии фото
    │   └── user/        # Папка для пользовательских галерей
    ├── include/         # Вспомогательные классы и функции
    │   ├── common.php   # Общие настройки и конфигурации
    │   ├── db.php       # Класс для работы с базой данных через PDO
    │   ├── template.php # Класс для работы с HTML-шаблонами
    │   ├── user.php     # Класс для управления пользователями
    │   ├── work.php     # Вспомогательные функции и утилиты
    │   └── ...          # Другие вспомогательные файлы
    ├── install/         # Папка с файлами установки проекта (пока не разработано)
    ├── language/        # Файлы локализации
    │   ├── russian/     # Русские переводы
    │   │   └── main.php # Основные строки на русском языке
    │   ├── english/     # Английские переводы (механизированный, без вычитки)
    │   │   └── main.php # Основные строки на английском языке
    │   └── ...          # Другие языки и переводы (возможны дальнейшие добавления)
    ├── log/             # Логи системы
    ├── themes/          # Темы оформления
    │   ├── default/     # Папка с темой по умолчанию
    │   │   ├── images/  # Изображения, используемые в теме
    │   │   ├── js/      # JavaScript-файлы темы
    │   │   ├── jquery-ui.min.css # Стили для jQuery UI
    │   │   ├── style.css         # Основной файл стилей для темы
    │   │   ├── admin.html        # Шаблон для административной панели
    │   │   ├── category.html     # Шаблон для страницы категории
    │   │   ├── footer.html       # Шаблон для нижней части страницы (подвал)
    │   │   ├── header.html       # Шаблон для верхней части страницы (заголовок)
    │   │   ├── main.html         # Шаблон для главной страницы
    │   │   ├── news.html         # Шаблон для страницы новостей
    │   │   ├── photo.html        # Шаблон для страницы просмотра фотографии
    │   │   ├── profile.html      # Шаблон для страницы профиля пользователя
    │   │   ├── search.html       # Шаблон для страницы поиска
    │   │   └── ...               # Другие шаблоны
    │   └── ...                   # Другие темы оформления
    ├── thumbnail/       # Папка для хранения миниатюр изображений
    │   ├── no_foto.png  # Заглушка для вывода миниатюры при отсутствии фото
    │   └── user/        # Папка для миниатюр пользовательских галерей
    ├── index.php        # Главный файл приложения
    ├── config.php       # Файл конфигурации приложения
    └── favicon.ico      # Иконка сайта

📜 Лицензия

Проект распространяется под лицензией MIT. Это означает, что вы можете свободно использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии программного обеспечения при соблюдении следующих условий:

  • Уведомление об авторских правах и условия лицензии должны быть включены во все копии или значимые части программного обеспечения.

Полный текст лицензии доступен в файле LICENSE. Доступен перевод лицензии на русский язык.


Авторство

Автор проекта: Dark Dayver. Если вы используете этот проект, пожалуйста, укажите авторство в своей документации или README.


Лицензирование стороннего контента


Рекомендации по использованию

Если вы используете Photo Rigma BiZ в своих проектах:

  • Убедитесь, что вы соблюдаете условия лицензии MIT.
  • Укажите ссылку на оригинальный репозиторий: https://github.com/ddayver/Photo-Rigma-BiZ.

🚀 Дополнительная информация

Связь с автором

Если у вас есть вопросы, предложения или вы хотите сообщить об ошибке, используйте следующие способы связи:

  • Создайте issue в репозитории: Issues.
  • Напишите в GitHub Discussions: Discussions.

Примечание: Пожалуйста, не используйте другие способы связи, кроме GitHub.


Благодарности

  • Особая благодарность жене, которая разработала шаблон и помогает тестировать и улучшать проект.
  • Помощь черпалась из следующих проектов:

Планы

Мы активно работаем над улучшением Photo Rigma BiZ. В планах:

  • Добавление функции комментариев 💬.
  • Полноценная поддержка SQLite 🐘.
  • Создание API для расширения функционала 🛠️.
  • Интеграция с социальными сетями 🌐.
Описание

Photo Rigma BiZ — это веб-приложение для создания галереи изображений с поддержкой пользовательских альбомов, рейтингов, комментариев и администрирования. Проект разработан с использованием PHP, MySQL и HTML/CSS, что делает его легким для развертывания и использования.

Конвейеры
0 успешных
0 с ошибкой