2.0
This commit is contained in:
parent
a60b54ddf4
commit
db1d5e038b
108
dashboard.php
108
dashboard.php
@ -8,6 +8,42 @@ if (!isset($_SESSION['user_id'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$userId = $_SESSION['user_id'];
|
$userId = $_SESSION['user_id'];
|
||||||
|
$message = '';
|
||||||
|
$message_type = '';
|
||||||
|
|
||||||
|
// Handle Enrollment
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['enroll_skill_id'])) {
|
||||||
|
$skillId = $_POST['enroll_skill_id'];
|
||||||
|
|
||||||
|
// Check if already enrolled
|
||||||
|
$stmt = db()->prepare("SELECT id FROM enrollments WHERE user_id = ? AND skill_id = ?");
|
||||||
|
$stmt->execute([$userId, $skillId]);
|
||||||
|
if ($stmt->fetch()) {
|
||||||
|
$_SESSION['message'] = "You are already enrolled in this skill.";
|
||||||
|
$_SESSION['message_type'] = 'warning';
|
||||||
|
} else {
|
||||||
|
// Enroll user
|
||||||
|
$stmt = db()->prepare("INSERT INTO enrollments (user_id, skill_id, progress, date_enrolled) VALUES (?, ?, 0, NOW())");
|
||||||
|
if ($stmt->execute([$userId, $skillId])) {
|
||||||
|
$_SESSION['message'] = "Enrollment successful! You can now continue learning from your dashboard.";
|
||||||
|
$_SESSION['message_type'] = 'success';
|
||||||
|
} else {
|
||||||
|
$_SESSION['message'] = "An error occurred. Please try again.";
|
||||||
|
$_SESSION['message_type'] = 'danger';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
header("Location: dashboard.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SESSION['message'])) {
|
||||||
|
$message = $_SESSION['message'];
|
||||||
|
$message_type = $_SESSION['message_type'];
|
||||||
|
unset($_SESSION['message']);
|
||||||
|
unset($_SESSION['message_type']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$stmt = db()->prepare("SELECT * FROM users WHERE id = ?");
|
$stmt = db()->prepare("SELECT * FROM users WHERE id = ?");
|
||||||
$stmt->execute([$userId]);
|
$stmt->execute([$userId]);
|
||||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
@ -18,11 +54,29 @@ if (!$user) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch all skills
|
// Fetch all skills, excluding those the user is already enrolled in for the explorer
|
||||||
|
$enrolled_skill_ids = [];
|
||||||
|
$stmt_enrolled_ids = db()->prepare("SELECT skill_id FROM enrollments WHERE user_id = ?");
|
||||||
|
$stmt_enrolled_ids->execute([$userId]);
|
||||||
|
$enrolled_skill_ids = $stmt_enrolled_ids->fetchAll(PDO::FETCH_COLUMN);
|
||||||
|
|
||||||
$skills_by_category = [];
|
$skills_by_category = [];
|
||||||
$stmt = db()->query("SELECT * FROM skills ORDER BY category, title");
|
$sql = "SELECT * FROM skills";
|
||||||
|
if (!empty($enrolled_skill_ids)) {
|
||||||
|
$placeholders = implode(',', array_fill(0, count($enrolled_skill_ids), '?'));
|
||||||
|
$sql .= " WHERE id NOT IN ($placeholders)";
|
||||||
|
}
|
||||||
|
$sql .= " ORDER BY category, title";
|
||||||
|
|
||||||
|
$stmt = db()->prepare($sql);
|
||||||
|
if (!empty($enrolled_skill_ids)) {
|
||||||
|
$stmt->execute($enrolled_skill_ids);
|
||||||
|
} else {
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
$all_skills = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$all_skills = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
|
||||||
foreach ($all_skills as $skill) {
|
foreach ($all_skills as $skill) {
|
||||||
$skills_by_category[$skill['category']][] = $skill;
|
$skills_by_category[$skill['category']][] = $skill;
|
||||||
}
|
}
|
||||||
@ -83,6 +137,13 @@ $enrolled_skills = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|||||||
<h1 class="h2">Welcome, <?php echo htmlspecialchars($user['username']); ?>!</h1>
|
<h1 class="h2">Welcome, <?php echo htmlspecialchars($user['username']); ?>!</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<?php if ($message): ?>
|
||||||
|
<div class="alert alert-<?php echo $message_type; ?> alert-dismissible fade show" role="alert">
|
||||||
|
<?php echo htmlspecialchars($message); ?>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<!-- Quick Access Buttons -->
|
<!-- Quick Access Buttons -->
|
||||||
<div class="row mb-4">
|
<div class="row mb-4">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
@ -132,23 +193,36 @@ $enrolled_skills = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|||||||
<!-- Skill Explorer Section -->
|
<!-- Skill Explorer Section -->
|
||||||
<section id="skill-explorer">
|
<section id="skill-explorer">
|
||||||
<h2 class="h4">Skill Explorer</h2>
|
<h2 class="h4">Skill Explorer</h2>
|
||||||
<?php foreach ($skills_by_category as $category => $skills): ?>
|
<?php if (empty($all_skills)): ?>
|
||||||
<h3 class="h5 mt-4"><?php echo htmlspecialchars($category); ?></h3>
|
<div class="col">
|
||||||
<div class="row">
|
<div class="card">
|
||||||
<?php foreach ($skills as $skill): ?>
|
<div class="card-body text-center">
|
||||||
<div class="col-md-6 col-lg-3 mb-3">
|
<p class="card-text">You've enrolled in all available skills. Great job!</p>
|
||||||
<div class="card h-100">
|
</div>
|
||||||
<img src="<?php echo htmlspecialchars($skill['thumbnail']); ?>" class="card-img-top" alt="<?php echo htmlspecialchars($skill['title']); ?>">
|
</div>
|
||||||
<div class="card-body d-flex flex-column">
|
</div>
|
||||||
<h5 class="card-title"><?php echo htmlspecialchars($skill['title']); ?></h5>
|
<?php else: ?>
|
||||||
<p class="card-text flex-grow-1"><?php echo htmlspecialchars($skill['description']); ?></p>
|
<?php foreach ($skills_by_category as $category => $skills): ?>
|
||||||
<a href="#" class="btn btn-outline-primary mt-auto">Enroll</a>
|
<h3 class="h5 mt-4"><?php echo htmlspecialchars($category); ?></h3>
|
||||||
|
<div class="row">
|
||||||
|
<?php foreach ($skills as $skill): ?>
|
||||||
|
<div class="col-md-6 col-lg-3 mb-3">
|
||||||
|
<div class="card h-100">
|
||||||
|
<img src="<?php echo htmlspecialchars($skill['thumbnail']); ?>" class="card-img-top" alt="<?php echo htmlspecialchars($skill['title']); ?>">
|
||||||
|
<div class="card-body d-flex flex-column">
|
||||||
|
<h5 class="card-title"><?php echo htmlspecialchars($skill['title']); ?></h5>
|
||||||
|
<p class="card-text flex-grow-1"><?php echo htmlspecialchars($skill['description']); ?></p>
|
||||||
|
<form method="POST" action="dashboard.php" class="mt-auto">
|
||||||
|
<input type="hidden" name="enroll_skill_id" value="<?php echo $skill['id']; ?>">
|
||||||
|
<button type="submit" class="btn btn-outline-primary">Enroll</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<?php endforeach; ?>
|
||||||
<?php endforeach; ?>
|
</div>
|
||||||
</div>
|
<?php endforeach; ?>
|
||||||
<?php endforeach; ?>
|
<?php endif; ?>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user