- Added photo gallery carousel view (gallery.php) with all member albums - Implemented album detail view with responsive photo grid and lightbox - Created album creation/editing form with drag-and-drop photo uploads - Added backend processors for album CRUD operations and photo management - Implemented API endpoints for fetching and deleting photos - Added database migration for photo_albums and photos tables - Included comprehensive feature documentation with testing checklist - Updated .htaccess with URL rewrite rules for gallery routes - Added Gallery link to Members Area menu in header - Created upload directory structure (/assets/uploads/gallery/) - Implemented security: CSRF tokens, ownership verification, file validation - Added transaction safety with rollback on errors and cleanup - Features: Lightbox with keyboard navigation, drag-and-drop uploads, responsive design
31 lines
1.2 KiB
SQL
31 lines
1.2 KiB
SQL
-- Migration: Create photo gallery tables for member photo albums
|
|
-- Date: 2025-12-05
|
|
-- Purpose: Allow members to create albums and upload photos to share with the community
|
|
|
|
-- Create photo_albums table
|
|
CREATE TABLE IF NOT EXISTS photo_albums (
|
|
album_id INT PRIMARY KEY AUTO_INCREMENT,
|
|
user_id INT NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
cover_image VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,
|
|
INDEX idx_user_id (user_id),
|
|
INDEX idx_created_at (created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
|
|
-- Create photos table
|
|
CREATE TABLE IF NOT EXISTS photos (
|
|
photo_id INT PRIMARY KEY AUTO_INCREMENT,
|
|
album_id INT NOT NULL,
|
|
file_path VARCHAR(255) NOT NULL,
|
|
caption VARCHAR(255),
|
|
display_order INT DEFAULT 0,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (album_id) REFERENCES photo_albums(album_id) ON DELETE CASCADE,
|
|
INDEX idx_album_id (album_id),
|
|
INDEX idx_display_order (display_order)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|