a4092adf2ec33368cae02da8f385144116cddf69
✨ New Features: - Reviews system with 1-5 star ratings - User can add, edit, and delete their own reviews - One review per product per user (DB constraint) - Automatic average rating calculation - Review count tracking - Interactive star selection UI - AJAX-powered review submission - Responsive design for all devices 🗄️ Database: - New 'reviews' table with full structure - Added 'rating' and 'review_count' fields to products - PostgreSQL triggers for automatic rating updates - Database functions for rating calculations - Indexes for performance optimization 📦 Backend (PHP): - Review model with 15+ methods - ReviewController with 5 actions - Updated Product model to include ratings - Updated ProductController to load reviews - 5 new API endpoints 🎨 Frontend: - Reviews list component (_reviews_list.php) - Review form component (_review_form.php) - Reviews sechow page - Star ratings in catalog view - Interactive JavaScript (200+ lines) - Adaptive styles (400+ lines) 🔒 Security: - Server-side authorization checks - XSS protection (htmlspecialchars) - SQL injection protection (PDO prepared) - Input validation (client + server) - Access control for review editing 📝 Modified Files: - app/Models/Product.php - added rating fields to queries - app/Controllers/ProductController.php - loads reviews - app/Views/products/show.php - reviews section - app/Views/products/catalog.php - star ratings - config/routes.php - review endpoints - public/style_for_cite.less - rating styles 🆕 New Files: - app/Models/Review.php - app/Controllers/ReviewController.php - app/Views/products/_reviews_list.php - app/Views/products/_review_form.php
AETERNA - Интернет-магазин мебели
Современный интернет-магазин мебели на PHP с MVC архитектурой.
Структура проекта
aeterna/
├── app/ # Приложение
│ ├── Controllers/ # Контроллеры
│ ├── Core/ # Ядро (App, Router, View, etc.)
│ ├── Models/ # Модели
│ └── Views/ # Шаблоны
├── config/ # Конфигурация
│ ├── app.php # Настройки приложения
│ ├── database.php # Настройки БД
│ └── routes.php # Маршруты
├── public/ # Публичная директория (DocumentRoot)
│ ├── index.php # Точка входа
│ ├── assets/ # Статические файлы
│ │ ├── css/
│ │ ├── js/
│ │ └── images/ # Изображения
│ └── .htaccess # Правила Apache
├── storage/ # Хранилище
│ └── uploads/ # Загруженные файлы
├── tests/ # Тесты
├── docker/ # Docker конфигурация
│ └── apache/
├── docker-compose.yml
├── Dockerfile
└── README.md
Требования
- PHP 8.2+
- PostgreSQL 14+
- Apache с mod_rewrite или Nginx
- Docker (опционально)
Установка
Вариант 1: Docker (рекомендуется)
# Клонировать репозиторий
git clone <repository-url>
cd aeterna
# Запустить контейнеры
docker-compose up -d
# Приложение будет доступно по адресу:
# http://localhost:8080
Вариант 2: Локальный сервер
Apache
- Настройте DocumentRoot на директорию
public/
<VirtualHost *:80>
ServerName aeterna.local
DocumentRoot /path/to/aeterna/public
<Directory /path/to/aeterna/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- Включите mod_rewrite:
sudo a2enmod rewrite
sudo systemctl restart apache2
Nginx
server {
listen 80;
server_name aeterna.local;
root /path/to/aeterna/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Конфигурация
База данных
Отредактируйте config/database.php или используйте переменные окружения:
export DB_HOST=localhost
export DB_PORT=5432
export DB_DATABASE=aeterna
export DB_USERNAME=user
export DB_PASSWORD=password
Приложение
Отредактируйте config/app.php:
debug- режим отладки (false для продакшена)url- URL приложенияadmin_emails- email адреса администраторов
Функционал
Для покупателей
- Каталог товаров с фильтрацией
- Корзина покупок
- Оформление заказов
- Регистрация и авторизация
Для администраторов
- Управление товарами
- Управление категориями
- Управление заказами
- Управление пользователями
Маршруты
| Метод | URL | Описание |
|---|---|---|
| GET | / |
Главная страница |
| GET | /catalog |
Каталог товаров |
| GET | /product/{id} |
Страница товара |
| GET | /cart |
Корзина |
| GET | /login |
Вход |
| GET | /register |
Регистрация |
| GET | /admin |
Админ-панель |
Технологии
- Backend: PHP 8.2, MVC архитектура
- Database: PostgreSQL
- Frontend: HTML5, CSS3/LESS, JavaScript, jQuery
- Сервер: Apache/Nginx
- Контейнеризация: Docker
Лицензия
MIT License
Автор
AETERNA Team
Description
Languages
PHP
77.3%
Less
13.6%
JavaScript
6.8%
Hack
2.1%
CSS
0.2%