-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathannouncements_list.php
More file actions
137 lines (123 loc) · 5.32 KB
/
Copy pathannouncements_list.php
File metadata and controls
137 lines (123 loc) · 5.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
/**
* Announcements List
* Visible to all roles
*/
require_once 'config/config.php';
require_once 'config/db.php';
require_once 'includes/auth.php';
requireLogin();
$page = intval($_GET['page'] ?? 1);
if ($page < 1) $page = 1;
$offset = ($page - 1) * RECORDS_PER_PAGE;
// Get total announcements
$count_result = $mysqli->query("SELECT COUNT(*) as total FROM announcements");
$total_records = $count_result->fetch_assoc()['total'];
$total_pages = ceil($total_records / RECORDS_PER_PAGE);
// Get announcements
$stmt = $mysqli->prepare("
SELECT a.id, a.title, a.message, a.posted_by, a.posted_at, u.full_name
FROM announcements a
JOIN users u ON a.posted_by = u.id
ORDER BY a.posted_at DESC
LIMIT ?, ?
");
$records_per_page = RECORDS_PER_PAGE;
$stmt->bind_param("ii", $offset, $records_per_page);
$stmt->execute();
$announcements = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
$stmt->close();
$page_title = 'Announcements';
include 'includes/header.php';
include 'includes/nav.php';
?>
<div class="container-fluid mt-4">
<div class="row mb-3">
<div class="col-md-8">
<h2>Announcements</h2>
</div>
<div class="col-md-4 text-end">
<?php if (isAdmin() || isTeacher()): ?>
<a href="announcement_create.php" class="btn btn-primary">Create Announcement</a>
<?php endif; ?>
</div>
</div>
<!-- Announcements -->
<div class="row">
<div class="col-md-8">
<?php if (count($announcements) > 0): ?>
<?php foreach ($announcements as $announcement): ?>
<div class="card mb-3">
<div class="card-header">
<div class="d-flex justify-content-between align-items-start">
<div>
<h5 class="mb-1"><?php echo htmlspecialchars($announcement['title']); ?></h5>
<small class="text-muted">
Posted by <?php echo htmlspecialchars($announcement['full_name']); ?>
on <?php echo date('M d, Y \a\t g:i A', strtotime($announcement['posted_at'])); ?>
</small>
</div>
<?php if ((isAdmin() || isTeacher()) && (isAdmin() || $_SESSION['user_id'] == $announcement['posted_by'])): ?>
<div>
<a href="announcement_edit.php?id=<?php echo $announcement['id']; ?>" class="btn btn-sm btn-warning">Edit</a>
<a href="announcement_delete.php?id=<?php echo $announcement['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('Delete?');">Delete</a>
</div>
<?php endif; ?>
</div>
</div>
<div class="card-body">
<p class="card-text"><?php echo nl2br(htmlspecialchars($announcement['message'])); ?></p>
</div>
</div>
<?php endforeach; ?>
<?php else: ?>
<div class="alert alert-info" role="alert">
No announcements yet.
</div>
<?php endif; ?>
</div>
<div class="col-md-4">
<div class="card sticky-top" style="top: 20px;">
<div class="card-header">
<h5 class="mb-0">Announcements Info</h5>
</div>
<div class="card-body">
<p class="text-muted">
All announcements are visible to everyone in the system. Teachers and admins can post announcements.
</p>
</div>
</div>
</div>
</div>
<!-- Pagination -->
<?php if ($total_pages > 1): ?>
<nav aria-label="Page navigation" class="mt-4">
<ul class="pagination justify-content-center">
<?php if ($page > 1): ?>
<li class="page-item">
<a class="page-link" href="?page=1">First</a>
</li>
<li class="page-item">
<a class="page-link" href="?page=<?php echo $page - 1; ?>">Previous</a>
</li>
<?php endif; ?>
<?php for ($i = max(1, $page - 2); $i <= min($total_pages, $page + 2); $i++): ?>
<li class="page-item <?php echo $i === $page ? 'active' : ''; ?>">
<a class="page-link" href="?page=<?php echo $i; ?>">
<?php echo $i; ?>
</a>
</li>
<?php endfor; ?>
<?php if ($page < $total_pages): ?>
<li class="page-item">
<a class="page-link" href="?page=<?php echo $page + 1; ?>">Next</a>
</li>
<li class="page-item">
<a class="page-link" href="?page=<?php echo $total_pages; ?>">Last</a>
</li>
<?php endif; ?>
</ul>
</nav>
<?php endif; ?>
</div>
<?php include 'includes/footer.php'; ?>