0) { $query = "INSERT INTO comments (photo_id, user_id, comment_text) VALUES (?, ?, ?)"; $stmt = $conn->prepare($query); $stmt->bind_param("iis", $photo_id, $_SESSION['user_id'], $comment_text); if ($stmt->execute()) { $message = 'Comment added successfully!'; } } } // Handle like toggle if ($_POST && isset($_POST['toggle_like']) && $isLoggedIn && can_like_photos()) { $photo_id = intval($_POST['photo_id']); if ($photo_id > 0) { $check_query = "SELECT id FROM photo_reactions WHERE photo_id = ? AND user_id = ?"; $check_stmt = $conn->prepare($check_query); $check_stmt->bind_param("ii", $photo_id, $_SESSION['user_id']); $check_stmt->execute(); $check_result = $check_stmt->get_result(); if ($check_result->num_rows > 0) { $delete_query = "DELETE FROM photo_reactions WHERE photo_id = ? AND user_id = ?"; $delete_stmt = $conn->prepare($delete_query); $delete_stmt->bind_param("ii", $photo_id, $_SESSION['user_id']); $delete_stmt->execute(); } else { $insert_query = "INSERT INTO photo_reactions (photo_id, user_id, reaction_type) VALUES (?, ?, 'like')"; $insert_stmt = $conn->prepare($insert_query); $insert_stmt->bind_param("ii", $photo_id, $_SESSION['user_id']); $insert_stmt->execute(); } } } // Get active banner images $banners_query = "SELECT * FROM banner_images WHERE is_active = 1 ORDER BY sort_order ASC, id DESC"; $banners_result = $conn->query($banners_query); $banner_slides = []; if ($banners_result && $banners_result->num_rows > 0) { while ($row = $banners_result->fetch_assoc()) { $banner_slides[] = $row; } } // If no banners, use featured photos as fallback if (empty($banner_slides)) { $featured_query = "SELECT * FROM photos WHERE is_featured = 1 AND is_private = 0 ORDER BY upload_date DESC LIMIT 5"; $featured_result = $conn->query($featured_query); if ($featured_result && $featured_result->num_rows > 0) { while ($row = $featured_result->fetch_assoc()) { $banner_slides[] = [ 'title' => $row['title'], 'subtitle' => $row['description'] ?: 'A moment captured in time', 'image_path' => $row['file_path'], 'is_photo' => true ]; } } } // Get site statistics $stats = []; $countQuery = "SELECT COUNT(*) as count FROM photos WHERE file_type = 'image'"; $countResult = $conn->query($countQuery); $stats['total_photos'] = $countResult->fetch_assoc()['count']; $countQuery = "SELECT COUNT(*) as count FROM photos WHERE file_type = 'video'"; $countResult = $conn->query($countQuery); $stats['total_videos'] = $countResult->fetch_assoc()['count']; $viewQuery = "SELECT SUM(view_count) as total FROM photos"; $viewResult = $conn->query($viewQuery); $stats['total_views'] = $viewResult->fetch_assoc()['total'] ?? 0; // Fetch public media $publicQuery = "SELECT p.*, c.name as category_name, c.color as category_color, c.icon as category_icon, (SELECT COUNT(*) FROM photo_reactions pr WHERE pr.photo_id = p.id) as likes_count, (SELECT COUNT(*) FROM photo_reactions pr WHERE pr.photo_id = p.id AND pr.user_id = ?) as user_liked, (SELECT COUNT(*) FROM comments cm WHERE cm.photo_id = p.id) as comments_count FROM photos p LEFT JOIN categories c ON p.category_id = c.id WHERE p.is_private = 0 ORDER BY p.sort_order ASC, p.upload_date DESC LIMIT 20"; $stmt = $conn->prepare($publicQuery); $user_id_param = $isLoggedIn ? $_SESSION['user_id'] : 0; $stmt->bind_param("i", $user_id_param); $stmt->execute(); $publicMedia = $stmt->get_result(); // Fetch private media if authorized $privateMedia = null; if ($isLoggedIn && can_view_private_photos()) { $privateQuery = "SELECT p.*, c.name as category_name, c.color as category_color, c.icon as category_icon, (SELECT COUNT(*) FROM photo_reactions pr WHERE pr.photo_id = p.id) as likes_count, (SELECT COUNT(*) FROM photo_reactions pr WHERE pr.photo_id = p.id AND pr.user_id = ?) as user_liked, (SELECT COUNT(*) FROM comments cm WHERE cm.photo_id = p.id) as comments_count FROM photos p LEFT JOIN categories c ON p.category_id = c.id WHERE p.is_private = 1 ORDER BY p.sort_order ASC, p.upload_date DESC LIMIT 12"; $private_stmt = $conn->prepare($privateQuery); $private_stmt->bind_param("i", $_SESSION['user_id']); $private_stmt->execute(); $privateMedia = $private_stmt->get_result(); } ?> Bikram Thapa - Photo Gallery
$slide): ?>

Stunning Photos
Amazing Videos
Total Views

Welcome to Bikram's Gallery

Where memories come alive

📸 Ready for Photos
🎬 Video Stories
✨ Memories to Share
1): ?>
$slide): ?>
num_rows > 0): ?>