feat: add cover image field to album creation and editing
- Added dedicated cover image upload field in create_album.php form - Display current cover image preview when editing - Drag-and-drop support for cover image with real-time preview - Shows filename and file size after selection - Updated save_album.php to handle cover image upload - Updated update_album.php to handle cover image replacement - Deletes old cover image when updating - Cover image optional - first photo in album used as fallback - Recommended cover dimensions: 500x500px or larger (square) - File validation: max 5MB, supports JPG, PNG, GIF, WEBP - All cover image changes included in transaction with rollback on error
This commit is contained in:
@@ -58,6 +58,43 @@ try {
|
||||
}
|
||||
}
|
||||
|
||||
// Handle cover image upload
|
||||
$coverImagePath = null;
|
||||
if (isset($_FILES['cover_image']) && $_FILES['cover_image']['error'] !== UPLOAD_ERR_NO_FILE) {
|
||||
$allowedMimes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
||||
$maxSize = 5 * 1024 * 1024; // 5MB
|
||||
|
||||
$fileName = $_FILES['cover_image']['name'];
|
||||
$fileTmpName = $_FILES['cover_image']['tmp_name'];
|
||||
$fileSize = $_FILES['cover_image']['size'];
|
||||
$fileMime = mime_content_type($fileTmpName);
|
||||
|
||||
// Validate file
|
||||
if (!in_array($fileMime, $allowedMimes)) {
|
||||
throw new Exception('Invalid cover image file type');
|
||||
}
|
||||
|
||||
if ($fileSize > $maxSize) {
|
||||
throw new Exception('Cover image file too large (max 5MB)');
|
||||
}
|
||||
|
||||
// Generate unique filename
|
||||
$ext = pathinfo($fileName, PATHINFO_EXTENSION);
|
||||
$newFileName = 'cover_' . uniqid() . '.' . $ext;
|
||||
$filePath = $albumDir . '/' . $newFileName;
|
||||
$coverImagePath = '/assets/uploads/gallery/' . $album_id . '/' . $newFileName;
|
||||
|
||||
if (!move_uploaded_file($fileTmpName, $filePath)) {
|
||||
throw new Exception('Failed to upload cover image');
|
||||
}
|
||||
|
||||
// Update cover image in album record
|
||||
$updateCover = $conn->prepare("UPDATE photo_albums SET cover_image = ? WHERE album_id = ?");
|
||||
$updateCover->bind_param("si", $coverImagePath, $album_id);
|
||||
$updateCover->execute();
|
||||
$updateCover->close();
|
||||
}
|
||||
|
||||
// Handle photo uploads
|
||||
if (isset($_FILES['photos']) && $_FILES['photos']['error'][0] !== UPLOAD_ERR_NO_FILE) {
|
||||
$allowedMimes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
||||
@@ -95,8 +132,8 @@ try {
|
||||
throw new Exception('Failed to upload: ' . $fileName);
|
||||
}
|
||||
|
||||
// Set first photo as cover
|
||||
if ($firstPhoto) {
|
||||
// Set first photo as cover if no cover image was uploaded
|
||||
if ($firstPhoto && !$coverImagePath) {
|
||||
$updateCover = $conn->prepare("UPDATE photo_albums SET cover_image = ? WHERE album_id = ?");
|
||||
$updateCover->bind_param("si", $relativePath, $album_id);
|
||||
$updateCover->execute();
|
||||
|
||||
Reference in New Issue
Block a user