Path : /home/vishqocm/pcib.in/admin/
File Upload :
Current File : /home/vishqocm/pcib.in/admin/courses.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 for success or error messages
$success_message = '';
$error_message = '';

if (isset($_SESSION['success_message'])) {
    $success_message = $_SESSION['success_message'];
    unset($_SESSION['success_message']);
}

if (isset($_SESSION['error_message'])) {
    $error_message = $_SESSION['error_message'];
    unset($_SESSION['error_message']);
}

// 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">Course Management</h1>
        <a href="course-add.php" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">
            <i class="fas fa-plus fa-sm text-white-50"></i> Add New Course
        </a>
</div>

    <?php if (!empty($success_message)): ?>
    <div class="alert alert-success alert-dismissible fade show" role="alert">
        <?php echo $success_message; ?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
<?php endif; ?>

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

    <!-- Content Row -->
    <div class="row">
        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-primary shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-primary text-uppercase mb-1">
                                Total Courses</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM courses";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-book-open fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-success shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-success text-uppercase mb-1">
                                Published Courses</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM courses WHERE status = 'active'";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-check-circle fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-info shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-info text-uppercase mb-1">
                                Featured Courses</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM courses WHERE is_featured = 1";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-star fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-warning shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-warning text-uppercase mb-1">
                                Total Enrollments</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800">
                                <?php
                                $query = "SELECT COUNT(*) as count FROM enrollments";
                                $result = $conn->query($query);
                                $row = $result->fetch_assoc();
                                echo $row['count'];
                                ?>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-user-graduate fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Course Filter Options -->
    <div class="card shadow mb-4">
        <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
            <h6 class="m-0 font-weight-bold text-primary">Filter Courses</h6>
            <div class="dropdown no-arrow">
                <a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink"
                    data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                    <i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
                </a>
                <div class="dropdown-menu dropdown-menu-right shadow animated--fade-in"
                    aria-labelledby="dropdownMenuLink">
                    <div class="dropdown-header">Filter Options:</div>
                    <a class="dropdown-item" href="?status=all">Show All</a>
                    <a class="dropdown-item" href="?status=active">Published Only</a>
                    <a class="dropdown-item" href="?status=draft">Drafts Only</a>
                    <div class="dropdown-divider"></div>
                    <a class="dropdown-item" href="?featured=1">Featured Only</a>
                </div>
            </div>
        </div>
        <div class="card-body">
            <form action="" method="GET" class="mb-3">
                <div class="row">
                    <div class="col-md-3 mb-3">
                        <select name="status" class="form-control">
                            <option value="all" <?php echo isset($_GET['status']) && $_GET['status'] == 'all' ? 'selected' : ''; ?>>All Statuses</option>
                            <option value="active" <?php echo isset($_GET['status']) && $_GET['status'] == 'active' ? 'selected' : ''; ?>>Published</option>
                            <option value="draft" <?php echo isset($_GET['status']) && $_GET['status'] == 'draft' ? 'selected' : ''; ?>>Draft</option>
                            <option value="inactive" <?php echo isset($_GET['status']) && $_GET['status'] == 'inactive' ? 'selected' : ''; ?>>Inactive</option>
                        </select>
                    </div>
                    <div class="col-md-3 mb-3">
                        <select name="category" class="form-control">
                            <option value="all">All Categories</option>
                            <?php
                            $cat_query = "SELECT * FROM categories ORDER BY name";
                            $cat_result = $conn->query($cat_query);
                            if ($cat_result && $cat_result->num_rows > 0) {
                                while ($cat = $cat_result->fetch_assoc()) {
                                    $selected = (isset($_GET['category']) && $_GET['category'] == $cat['id']) ? 'selected' : '';
                                    echo '<option value="' . $cat['id'] . '" ' . $selected . '>' . htmlspecialchars($cat['name']) . '</option>';
                                }
                            }
                            ?>
                        </select>
                    </div>
                    <div class="col-md-4 mb-3">
                        <input type="text" name="search" class="form-control" placeholder="Search by title..." 
                        value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>">
                    </div>
                    <div class="col-md-2 mb-3">
                        <button type="submit" class="btn btn-primary btn-block">Filter</button>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <!-- Course List -->
    <div class="card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">All Courses</h6>
        </div>
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-bordered" id="coursesTable" width="100%" cellspacing="0">
                    <thead>
                        <tr>
                            <th>Title</th>
                            <th>Category</th>
                            <th>Price</th>
                            <th>Status</th>
                            <th>Featured</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        // Build the query based on filters
                        $sql = "SELECT c.*, cat.name as category_name 
                                FROM courses c
                                LEFT JOIN categories cat ON c.category = cat.id
                                WHERE 1=1";
                        
                        // Status filter
                        if (isset($_GET['status']) && $_GET['status'] != 'all') {
                            $status = $conn->real_escape_string($_GET['status']);
                            $sql .= " AND c.status = '$status'";
                        }
                        
                        // Category filter
                        if (isset($_GET['category']) && $_GET['category'] != 'all') {
                            $category = $conn->real_escape_string($_GET['category']);
                            $sql .= " AND c.category = '$category'";
                        }
                        
                        // Featured filter
                        if (isset($_GET['featured']) && $_GET['featured'] == '1') {
                            $sql .= " AND c.is_featured = 1";
                        }
                        
                        // Search filter
                        if (isset($_GET['search']) && !empty($_GET['search'])) {
                            $search = $conn->real_escape_string($_GET['search']);
                            $sql .= " AND (c.title LIKE '%$search%' OR c.short_description LIKE '%$search%')";
                        }
                        
                        $sql .= " ORDER BY c.id DESC";
                        
                        $result = $conn->query($sql);
                        
                        if ($result && $result->num_rows > 0) {
                            while ($row = $result->fetch_assoc()) {
                        ?>
                        <tr>
                            <td>
                                <img src="<?php echo !empty($row['image']) ? '../' . $row['image'] : '../assets/img/defaults/default-course-image.jpg'; ?>" 
                                    alt="<?php echo htmlspecialchars($row['title']); ?>" class="img-thumbnail mr-2" style="width: 50px; height: 50px; object-fit: cover;">
                                <?php echo htmlspecialchars($row['title']); ?>
                            </td>
                            <td><?php echo htmlspecialchars($row['category_name'] ?? 'Uncategorized'); ?></td>
                            <td>
                                <?php 
                                if ($row['price'] > 0) {
                                    echo "₹" . number_format($row['price'], 2);
                                    if (!empty($row['discount_price']) && $row['discount_price'] > 0 && $row['discount_price'] < $row['price']) {
                                        echo " <span class='text-danger'><del>₹" . number_format($row['discount_price'], 2) . "</del></span>";
                                    }
                                } else {
                                    echo '<span class="badge badge-success">Free</span>';
                                }
                                ?>
                            </td>
                            <td>
                                <?php 
                                $status_badge = '';
                                switch ($row['status']) {
                                    case 'active':
                                        $status_badge = 'badge-success';
                                        $status_text = 'Published';
                                        break;
                                    case 'draft':
                                        $status_badge = 'badge-secondary';
                                        $status_text = 'Draft';
                                        break;
                                    case 'inactive':
                                        $status_badge = 'badge-danger';
                                        $status_text = 'Inactive';
                                        break;
                                    default:
                                        $status_badge = 'badge-info';
                                        $status_text = ucfirst($row['status']);
                                }
                                ?>
                                <span class="badge <?php echo $status_badge; ?>"><?php echo $status_text; ?></span>
                            </td>
                            <td class="text-center">
                                <form action="course-feature-toggle.php" method="POST" class="d-inline">
                                    <input type="hidden" name="course_id" value="<?php echo $row['id']; ?>">
                                    <input type="hidden" name="featured" value="<?php echo $row['is_featured'] ? '0' : '1'; ?>">
                                    <button type="submit" class="btn btn-sm btn-link p-0" title="<?php echo $row['is_featured'] ? 'Remove from featured' : 'Add to featured'; ?>">
                                        <i class="fas fa-star <?php echo $row['is_featured'] ? 'text-warning' : 'text-muted'; ?>"></i>
                                    </button>
                                </form>
                            </td>
                            <td>
                                <a href="course-edit.php?id=<?php echo $row['id']; ?>" class="btn btn-sm btn-primary">
                                    <i class="fas fa-edit"></i> Edit
                                </a>
                                <a href="../course-details.php?id=<?php echo $row['id']; ?>" class="btn btn-sm btn-info" target="_blank">
                                    <i class="fas fa-eye"></i> View
                                </a>
                                <button type="button" class="btn btn-sm btn-danger" onclick="confirmDelete(<?php echo $row['id']; ?>)">
                                    <i class="fas fa-trash"></i> Delete
                                </button>
                            </td>
                        </tr>
                        <?php
                    }
                } else {
                    ?>
                    <tr>
                    <td colspan="7" class="text-center">No courses found</td>
                    </tr>
                    <?php
                }
                ?>
            </tbody>
        </table>
    </div>
</div>
</div>
<!-- /.container-fluid -->

<!-- Delete Confirmation Modal -->
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                <h5 class="modal-title" id="deleteModalLabel">Confirm Delete</h5>
                <button class="close" type="button" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">×</span>
                </button>
                </div>
            <div class="modal-body">Are you sure you want to delete this course? This action cannot be undone.</div>
                <div class="modal-footer">
                <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
                <a class="btn btn-danger" id="confirmDeleteBtn" href="#">Delete</a>
            </div>
        </div>
                    </div>
                </div>

<script>
// Function to confirm deletion
function confirmDelete(id) {
    document.getElementById('confirmDeleteBtn').href = 'course-delete.php?id=' + id;
    $('#deleteModal').modal('show');
}

// Initialize DataTables
$(document).ready(function() {
    $('#coursesTable').DataTable({
        "order": [[ 0, "asc" ]],
        "pageLength": 25
        });
    });
</script>

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