Path : /home/vishqocm/pcib.in/admin/
File Upload :
Current File : /home/vishqocm//pcib.in/admin/course-edit.php

<?php
// Start the session
session_start();

// Include database configuration
require_once 'database/db_config.php';

// Check if user is logged in and is an admin
if (!isset($_SESSION['user_id']) || !isset($_SESSION['role']) || ($_SESSION['role'] != 'admin' && $_SESSION['role'] != 'director')) {
    header('Location: login.php');
    exit;
}

// Check if course ID is provided
if (!isset($_GET['id']) || empty($_GET['id'])) {
    $_SESSION['error_message'] = "No course ID provided.";
    header('Location: courses.php');
    exit;
}

$course_id = (int)$_GET['id'];

// Get course data
$course_query = "SELECT * FROM courses WHERE id = ?";
$stmt = $conn->prepare($course_query);
$stmt->bind_param("i", $course_id);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 0) {
    $_SESSION['error_message'] = "Course not found.";
    header('Location: courses.php');
    exit;
}

$course = $result->fetch_assoc();

// Get course categories
$course_categories = array();
$cat_query = "SELECT category_id FROM course_categories WHERE course_id = ?";
$cat_stmt = $conn->prepare($cat_query);
$cat_stmt->bind_param("i", $course_id);
$cat_stmt->execute();
$cat_result = $cat_stmt->get_result();
if ($cat_result && $cat_result->num_rows > 0) {
    while ($cat_row = $cat_result->fetch_assoc()) {
        $course_categories[] = $cat_row['category_id'];
    }
}

// Process form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Get form data
    $title = $conn->real_escape_string($_POST['title']);
    $short_description = $conn->real_escape_string($_POST['short_description']);
    $description = $conn->real_escape_string($_POST['description']);
    $category = $conn->real_escape_string($_POST['category']); // Primary category
    $categories = isset($_POST['categories']) ? $_POST['categories'] : array(); // Multiple categories
    $price = (float) $_POST['price'];
    $discount_price = !empty($_POST['discount_price']) ? (float) $_POST['discount_price'] : NULL;
    $status = $conn->real_escape_string($_POST['status']);
    $level = $conn->real_escape_string($_POST['level']);
    $language = $conn->real_escape_string($_POST['language']);
    $lessons_count = (int) $_POST['lessons_count'];
    $certificate = isset($_POST['certificate']) ? 1 : 0;
    $duration = $conn->real_escape_string($_POST['duration']) . ' months'; // Add 'months' suffix
    $is_featured = isset($_POST['is_featured']) ? 1 : 0;
    $tags = $conn->real_escape_string($_POST['tags']);
    $course_code = $conn->real_escape_string($_POST['course_code']);
    
    // Handle image upload
    $image_path = $course['image']; // Default to current image
    if (isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
        $upload_dir = '../assets/img/courses/';
        
        // Create directory if it doesn't exist
        if (!file_exists($upload_dir)) {
            mkdir($upload_dir, 0777, true);
        }
        
        $file_name = time() . '_' . basename($_FILES['image']['name']);
        $target_file = $upload_dir . $file_name;
        $image_path = 'assets/img/courses/' . $file_name;
        
        // Check if file is an actual image
        $check = getimagesize($_FILES['image']['tmp_name']);
        if ($check === false) {
            $_SESSION['error_message'] = "File is not an image.";
            header('Location: course-edit.php?id=' . $course_id);
            exit;
        }
        
        // Check file size (max 5MB)
        if ($_FILES['image']['size'] > 5000000) {
            $_SESSION['error_message'] = "Sorry, your file is too large. Max size is 5MB.";
            header('Location: course-edit.php?id=' . $course_id);
            exit;
        }
        
        // Allow certain file formats
        $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
        if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" && $imageFileType != "webp") {
            $_SESSION['error_message'] = "Sorry, only JPG, JPEG, PNG, GIF & WebP files are allowed.";
            header('Location: course-edit.php?id=' . $course_id);
            exit;
        }
        
        // Upload the file
        if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_file)) {
            $_SESSION['error_message'] = "Sorry, there was an error uploading your file.";
            header('Location: course-edit.php?id=' . $course_id);
            exit;
        }
    }
    
    // Prepare the SQL query
    $sql = "UPDATE courses SET 
            title = ?, 
            short_description = ?, 
            description = ?, 
            category = ?, 
            price = ?, 
            discount_price = ?, 
            image = ?, 
            status = ?, 
            level = ?, 
            language = ?,
            lessons_count = ?,
            certificate = ?,
            duration = ?, 
            is_featured = ?,
            tags = ?,
            course_code = ?
            WHERE id = ?";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sssiidssssiiisssi", $title, $short_description, $description, $category, $price, $discount_price, $image_path, $status, $level, $language, $lessons_count, $certificate, $duration, $is_featured, $tags, $course_code, $course_id);
    
    if ($stmt->execute()) {
        // Update course categories
        // First delete existing categories
        $delete_cats = "DELETE FROM course_categories WHERE course_id = ?";
        $delete_stmt = $conn->prepare($delete_cats);
        $delete_stmt->bind_param("i", $course_id);
        $delete_stmt->execute();
        
        // Add primary category
        $insert_cat = "INSERT INTO course_categories (course_id, category_id) VALUES (?, ?)";
        $insert_stmt = $conn->prepare($insert_cat);
        $insert_stmt->bind_param("ii", $course_id, $cat_id);
        
        $cat_id = $category;
        $insert_stmt->execute();
        
        // Add additional categories
        if (!empty($categories)) {
            foreach ($categories as $cat_id) {
                if ($cat_id != $category) { // Skip primary category to avoid duplicates
                    $insert_stmt->execute();
                }
            }
        }
        
        $_SESSION['success_message'] = "Course updated successfully!";
        header('Location: courses.php');
        exit;
    } else {
        $_SESSION['error_message'] = "Error updating course: " . $conn->error;
        header('Location: course-edit.php?id=' . $course_id);
        exit;
    }
}

// Get all categories
$categories_query = "SELECT id, name FROM categories ORDER BY name";
$categories_result = $conn->query($categories_query);

// Include header
include 'includes/header.php';
?>

<!-- Begin Page Content -->
<div class="container-fluid">

    <!-- Page Heading -->
    <div class="d-sm-flex align-items-center justify-content-between mb-4">
        <h1 class="h3 mb-0 text-gray-800">Edit Course</h1>
        <a href="courses.php" class="d-none d-sm-inline-block btn btn-sm btn-secondary shadow-sm">
            <i class="fas fa-arrow-left fa-sm text-white-50"></i> Back to Courses
        </a>
    </div>

    <?php if (isset($_SESSION['error_message'])): ?>
    <div class="alert alert-danger alert-dismissible fade show" role="alert">
        <?php 
        echo $_SESSION['error_message']; 
        unset($_SESSION['error_message']);
        ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <?php endif; ?>

    <!-- Course Edit Form -->
    <div class="card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">Course Information</h6>
        </div>
        <div class="card-body">
            <form action="course-edit.php?id=<?php echo $course_id; ?>" method="POST" enctype="multipart/form-data">
                
                <div class="row">
                    <div class="col-md-8">
                        <div class="form-group">
                            <label for="title">Course Title*</label>
                            <input type="text" class="form-control" id="title" name="title" value="<?php echo htmlspecialchars($course['title']); ?>" required>
                        </div>
                        
                        <div class="form-group">
                            <label for="short_description">Short Description*</label>
                            <textarea class="form-control" id="short_description" name="short_description" rows="3" required><?php echo htmlspecialchars($course['short_description']); ?></textarea>
                            <small class="form-text text-muted">A brief summary of the course (max 255 characters)</small>
                        </div>
                        
                        <div class="form-group">
                            <label for="description">Full Description*</label>
                            <textarea class="form-control" id="description" name="description" rows="8" required><?php echo htmlspecialchars($course['description']); ?></textarea>
                        </div>
                    </div>
                    
                    <div class="col-md-4">
                        <div class="form-group">
                            <label for="image">Course Image</label>
                            <div class="custom-file">
                                <input type="file" class="custom-file-input" id="image" name="image" accept="image/*">
                                <label class="custom-file-label" for="image">Choose file...</label>
                            </div>
                            <small class="form-text text-muted">Recommended size: 1200x800 pixels (16:9)</small>
                            <div class="mt-2">
                                <img id="imagePreview" src="../<?php echo htmlspecialchars($course['image']); ?>" class="img-fluid img-thumbnail" style="max-height: 200px;">
                            </div>
                        </div>
                        
                        <div class="form-group">
                            <label for="category">Primary Category*</label>
                            <select class="form-control" id="category" name="category" required>
                                <option value="">Select Primary Category</option>
                                <?php 
                                if ($categories_result && $categories_result->num_rows > 0) {
                                    // Reset result pointer
                                    $categories_result->data_seek(0);
                                    while ($category = $categories_result->fetch_assoc()) {
                                        $selected = ($category['id'] == $course['category']) ? 'selected' : '';
                                        echo '<option value="' . $category['id'] . '" ' . $selected . '>' . htmlspecialchars($category['name']) . '</option>';
                                    }
                                }
                                ?>
                            </select>
                        </div>
                        
                        <div class="form-group">
                            <label for="categories">Additional Categories</label>
                            <select class="form-control" id="categories" name="categories[]" multiple size="5">
                                <?php 
                                if ($categories_result && $categories_result->num_rows > 0) {
                                    // Reset result pointer
                                    $categories_result->data_seek(0);
                                    while ($category = $categories_result->fetch_assoc()) {
                                        $selected = in_array($category['id'], $course_categories) ? 'selected' : '';
                                        echo '<option value="' . $category['id'] . '" ' . $selected . '>' . htmlspecialchars($category['name']) . '</option>';
                                    }
                                }
                                ?>
                            </select>
                            <small class="form-text text-muted">Hold Ctrl (Cmd on Mac) to select multiple categories</small>
                        </div>
                        
                        <div class="form-group">
                            <label for="course_code">Course Code</label>
                            <input type="text" class="form-control" id="course_code" name="course_code" maxlength="20" 
                                   value="<?php echo isset($course['course_code']) ? htmlspecialchars($course['course_code']) : 'C' . sprintf('%03d', $course_id); ?>">
                            <small class="form-text text-muted">Unique code used for enrollment numbers (e.g., CS101)</small>
                        </div>
                        
                        <div class="form-group">
                            <label for="level">Level*</label>
                            <select class="form-control" id="level" name="level" required>
                                <option value="beginner" <?php echo ($course['level'] == 'beginner') ? 'selected' : ''; ?>>Beginner</option>
                                <option value="intermediate" <?php echo ($course['level'] == 'intermediate') ? 'selected' : ''; ?>>Intermediate</option>
                                <option value="advanced" <?php echo ($course['level'] == 'advanced') ? 'selected' : ''; ?>>Advanced</option>
                                <option value="all-levels" <?php echo ($course['level'] == 'all-levels') ? 'selected' : ''; ?>>All Levels</option>
                            </select>
                        </div>
                        
                        <div class="form-group">
                            <label for="language">Language*</label>
                            <select class="form-control" id="language" name="language" required>
                                <option value="English" <?php echo ($course['language'] == 'English') ? 'selected' : ''; ?>>English</option>
                                <option value="Hindi" <?php echo ($course['language'] == 'Hindi') ? 'selected' : ''; ?>>Hindi</option>
                                <option value="Marathi" <?php echo ($course['language'] == 'Marathi') ? 'selected' : ''; ?>>Marathi</option>
                                <option value="Tamil" <?php echo ($course['language'] == 'Tamil') ? 'selected' : ''; ?>>Tamil</option>
                                <option value="Telugu" <?php echo ($course['language'] == 'Telugu') ? 'selected' : ''; ?>>Telugu</option>
                                <option value="Kannada" <?php echo ($course['language'] == 'Kannada') ? 'selected' : ''; ?>>Kannada</option>
                                <option value="Malayalam" <?php echo ($course['language'] == 'Malayalam') ? 'selected' : ''; ?>>Malayalam</option>
                                <option value="Gujarati" <?php echo ($course['language'] == 'Gujarati') ? 'selected' : ''; ?>>Gujarati</option>
                                <option value="Bengali" <?php echo ($course['language'] == 'Bengali') ? 'selected' : ''; ?>>Bengali</option>
                            </select>
                        </div>

                        <div class="form-group">
                            <label for="lessons_count">Number of Lessons</label>
                            <input type="number" class="form-control" id="lessons_count" name="lessons_count" min="0" value="<?php echo (int)$course['lessons_count']; ?>">
                            <small class="form-text text-muted">Enter the total number of lessons in this course</small>
                        </div>
                        
                        <div class="form-group">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" id="certificate" name="certificate" value="1" <?php echo ($course['certificate'] == 1) ? 'checked' : ''; ?>>
                                <label class="custom-control-label" for="certificate">Certificate Available</label>
                            </div>
                        </div>
                        
                        <div class="form-group">
                            <label for="duration">Duration (in months)*</label>
                            <input type="number" class="form-control" id="duration" name="duration" min="1" step="1" 
                                   value="<?php 
                                        $duration = $course['duration'];
                                        $duration = str_replace(' months', '', $duration);
                                        echo (int)$duration; 
                                   ?>" required>
                            <small class="form-text text-muted">Duration in months</small>
                        </div>

                        <div class="form-group">
                            <label for="tags">Course Tags (SEO)</label>
                            <input type="text" class="form-control" id="tags" name="tags" 
                                   value="<?php echo isset($course['tags']) ? htmlspecialchars($course['tags']) : ''; ?>">
                            <small class="form-text text-muted">Enter comma-separated tags for SEO</small>
                        </div>
                    </div>
                </div>
                
                <hr>
                
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="price">Price (INR)*</label>
                            <div class="input-group">
                                <div class="input-group-prepend">
                                    <span class="input-group-text">₹</span>
                                </div>
                                <input type="number" class="form-control" id="price" name="price" min="0" step="0.01" value="<?php echo $course['price']; ?>" required>
                            </div>
                            <small class="form-text text-muted">Set to 0 for free courses</small>
                        </div>
                    </div>
                    
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="discount_price">Discount Price (INR)</label>
                            <div class="input-group">
                                <div class="input-group-prepend">
                                    <span class="input-group-text">₹</span>
                                </div>
                                <input type="number" class="form-control" id="discount_price" name="discount_price" min="0" step="0.01" value="<?php echo $course['discount_price']; ?>">
                            </div>
                            <small class="form-text text-muted">Leave empty for no discount</small>
                        </div>
                    </div>
                </div>
                
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="status">Status*</label>
                            <select class="form-control" id="status" name="status" required>
                                <option value="draft" <?php echo ($course['status'] == 'draft') ? 'selected' : ''; ?>>Draft</option>
                                <option value="active" <?php echo ($course['status'] == 'active') ? 'selected' : ''; ?>>Published</option>
                                <option value="inactive" <?php echo ($course['status'] == 'inactive') ? 'selected' : ''; ?>>Inactive</option>
                            </select>
                        </div>
                    </div>
                    
                    <div class="col-md-6">
                        <div class="form-group">
                            <div class="custom-control custom-checkbox mt-4">
                                <input type="checkbox" class="custom-control-input" id="is_featured" name="is_featured" <?php echo ($course['is_featured'] == 1) ? 'checked' : ''; ?>>
                                <label class="custom-control-label" for="is_featured">Feature this course on homepage</label>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="form-group mt-4">
                    <button type="submit" class="btn btn-primary">Update Course</button>
                    <a href="courses.php" class="btn btn-secondary">Cancel</a>
                </div>
            </form>
        </div>
    </div>
</div>
<!-- /.container-fluid -->

<?php
// Include footer
include 'includes/footer.php';
?>

<script>
// Preview image before upload
document.getElementById('image').addEventListener('change', function(e) {
    const file = e.target.files[0];
    if (file) {
        const reader = new FileReader();
        reader.onload = function(e) {
            document.getElementById('imagePreview').src = e.target.result;
        }
        reader.readAsDataURL(file);
        
        // Update file input label
        const fileName = file.name;
        const fileLabel = document.querySelector('.custom-file-label');
        fileLabel.textContent = fileName;
    }
});

// Initialize rich text editor for description
$(document).ready(function() {
    if (typeof CKEDITOR !== 'undefined') {
        CKEDITOR.replace('description');
    }
});
</script>