0% found this document useful (0 votes)
9 views6 pages

Add Announcement Management System

This PHP script allows an admin to add announcements to a database, including handling file uploads for images and PDFs. It checks for user login, processes form submissions, and provides feedback on success or failure of the operations. The page includes a sidebar for navigation and uses Bootstrap for styling.

Uploaded by

Keyko IhsanAR
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views6 pages

Add Announcement Management System

This PHP script allows an admin to add announcements to a database, including handling file uploads for images and PDFs. It checks for user login, processes form submissions, and provides feedback on success or failure of the operations. The page includes a sidebar for navigation and uses Bootstrap for styling.

Uploaded by

Keyko IhsanAR
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

<?

php
// admin/add_announcement.php
session_start();
require_once '../includes/db_connection.php';

function check_login() {
if (!isset($_SESSION['user_id'])) {
header('Location: [Link]');
exit;
}
}
check_login();

$username = $_SESSION['username'];
$user_id = $_SESSION['user_id'];
$message = '';
$message_type = ''; // success or danger

if ($_SERVER['REQUEST_METHOD'] === 'POST') {


$title = trim($_POST['title']);
$content = trim($_POST['content']);
$published = isset($_POST['published']) ? 1 : 0; // Checkbox value
$upload_date = date('Y-m-d H:i:s'); // Tanggal dan waktu upload saat ini

$image_url = null;
$pdf_url = null;

// Penanganan upload file gambar


if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
$file_name = $_FILES['image']['name'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];

if (in_array($file_ext, $allowed_ext)) {
$new_file_name = uniqid('img_', true) . '.' . $file_ext;
$upload_dir = '../uploads/announcements/';
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
$destination = $upload_dir . $new_file_name;

if (move_uploaded_file($file_tmp, $destination)) {
$image_url = 'uploads/announcements/' . $new_file_name;
} else {
$message = "Gagal mengunggah gambar.";
$message_type = "danger";
}
} else {
$message = "Format gambar tidak didukung. Hanya JPG, JPEG, PNG, GIF.";
$message_type = "danger";
}
}

// Penanganan upload file PDF


if (isset($_FILES['pdf']) && $_FILES['pdf']['error'] === UPLOAD_ERR_OK) {
$file_name = $_FILES['pdf']['name'];
$file_tmp = $_FILES['pdf']['tmp_name'];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$allowed_ext = ['pdf'];

if (in_array($file_ext, $allowed_ext)) {
$new_file_name = uniqid('pdf_', true) . '.' . $file_ext;
$upload_dir = '../uploads/announcements/';
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
$destination = $upload_dir . $new_file_name;

if (move_uploaded_file($file_tmp, $destination)) {
$pdf_url = 'uploads/announcements/' . $new_file_name;
} else {
$message = "Gagal mengunggah PDF.";
$message_type = "danger";
}
} else {
$message = "Format file tidak didukung. Hanya PDF.";
$message_type = "danger";
}
}

if (empty($message)) { // Lanjutkan jika tidak ada error upload


try {
$stmt = $pdo->prepare("INSERT INTO announcements (title, content,
image_url, pdf_url, published, upload_date, user_id) VALUES
(:title, :content, :image_url, :pdf_url, :published, :upload_date, :user_id)");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->bindParam(':image_url', $image_url);
$stmt->bindParam(':pdf_url', $pdf_url);
$stmt->bindParam(':published', $published);
$stmt->bindParam(':upload_date', $upload_date);
$stmt->bindParam(':user_id', $user_id);

if ($stmt->execute()) {
// Log histori
$announcement_id = $pdo->lastInsertId();
$log_stmt = $pdo->prepare("INSERT INTO logs (user_id, action_type,
object_type, object_id) VALUES
(:user_id, :action_type, :object_type, :object_id)");
$log_stmt->execute([
':user_id' => $user_id,
':action_type' => 'CREATE',
':object_type' => 'Announcement',
':object_id' => $announcement_id
]);

$message = "Pengumuman berhasil ditambahkan!";


$message_type = "success";
// Clear form after successful submission
$title = $content = '';
$image_url = $pdf_url = null; // Reset for display
} else {
$message = "Gagal menambahkan pengumuman.";
$message_type = "danger";
}
} catch (PDOException $e) {
$message = "Terjadi kesalahan database: " . $e->getMessage();
$message_type = "danger";
error_log("Error adding announcement: " . $e->getMessage());
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tambah Pengumuman - STMIK Kaputama</title>
<link rel="stylesheet"
href="[Link]
<link rel="stylesheet" href="[Link]
awesome/5.15.3/css/[Link]">
<style>
body { display: flex; min-height: 100vh; }
.sidebar {
width: 250px; background-color: #343a40; color: #fff; padding-top:
20px;
transition: all 0.3s ease; flex-shrink: 0;
}
.[Link] { width: 60px; }
.sidebar .nav-link { color: #fff; padding: 10px 15px; }
.sidebar .nav-link:hover { background-color: #495057; }
.sidebar .nav-link i { margin-right: 10px; }
.[Link] .nav-link span { display: none; }
.[Link] .nav-link i { margin-right: 0; width: 100%; text-align:
center; }
.content { flex-grow: 1; padding: 20px; background-color: #f8f9fa; }
.navbar { background-color: #fff; border-bottom: 1px solid #ddd; margin-
bottom: 20px; }
.toggle-sidebar-btn {
background: none; border: none; color: #fff; font-size: 1.5em;
cursor: pointer; padding: 0 15px; text-align: center; display: block;
width: 100%; margin-bottom: 10px;
}
.sidebar-header {
display: flex; justify-content: space-between; align-items: center;
padding: 10px 15px;
}
.[Link] .sidebar-header h4 { display: none; }
.[Link] .toggle-sidebar-btn { text-align: center; padding: 0; }
.navbar-brand img { max-height: 40px; }
</style>
<script
src="[Link]
tinymce/6/[Link]" referrerpolicy="origin"></script>
<script>
[Link]({
selector: '#announcementContent',
plugins: 'advlist autolink lists link image charmap preview anchor
pagebreak codesample',
toolbar_mode: 'floating',
height: 300,
// Tambahkan opsi lain sesuai kebutuhan Anda
});
</script>
</head>
<body>

<div class="sidebar" id="sidebar">


<div class="sidebar-header">
<h4>Admin Panel</h4>
<button class="toggle-sidebar-btn" id="toggleSidebarBtn"><i class="fas
fa-bars"></i></button>
</div>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link" href="[Link]">
<i class="fas fa-tachometer-alt"></i> <span>Dashboard</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="manage_announcements.php">
<i class="fas fa-bullhorn"></i> <span>Kelola Pengumuman</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="manage_schedules.php?type=kuliah">
<i class="fas fa-calendar-alt"></i> <span>Jadwal Kuliah</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="manage_schedules.php?type=bimbingan">
<i class="fas fa-book-reader"></i> <span>Jadwal
Bimbingan</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="manage_activities.php">
<i class="fas fa-camera"></i> <span>Foto Kegiatan</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="manage_profile.php">
<i class="fas fa-building"></i> <span>Profil Kampus</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="manage_running_text.php">
<i class="fas fa-scroll"></i> <span>Running Text</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="manage_users.php">
<i class="fas fa-users"></i> <span>Manajemen User</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../display/[Link]" target="_blank">
<i class="fas fa-tv"></i> <span>Lihat Display</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="[Link]">
<i class="fas fa-sign-out-alt"></i> <span>Logout</span>
</a>
</li>
</ul>
</div>

<div class="content">
<nav class="navbar navbar-expand-lg navbar-light">
<a class="navbar-brand" href="#">
<img src="../assets/images/[Link]" alt="Logo STMIK
Kaputama">
</a>
<span class="navbar-text ml-auto">
Selamat Datang, **<?php echo htmlspecialchars($username); ?>**!
</span>
</nav>

<div class="container-fluid">
<h3>Tambah Pengumuman Baru</h3>
<p>Isi detail pengumuman yang akan ditampilkan.</p>

<?php if ($message): ?>


<div class="alert alert-<?php echo $message_type; ?>" role="alert">
<?php echo $message; ?>
</div>
<?php endif; ?>

<div class="card bg-white p-4">


<form action="add_announcement.php" method="POST"
enctype="multipart/form-data">
<div class="form-group">
<label for="title">Judul Pengumuman:</label>
<input type="text" class="form-control" id="title"
name="title" required value="<?php echo htmlspecialchars($title ?? ''); ?>">
</div>
<div class="form-group">
<label for="announcementContent">Isi Pengumuman:</label>
<textarea class="form-control" id="announcementContent"
name="content" rows="8"><?php echo htmlspecialchars($content ?? ''); ?></textarea>
<small class="form-text text-muted">Anda bisa mengetik
teks, atau mengunggah gambar/PDF sebagai pengganti.</small>
</div>
<div class="form-group">
<label for="image">Unggah Gambar (Opsional):</label>
<input type="file" class="form-control-file" id="image"
name="image" accept="image/*">
<small class="form-text text-muted">Format: JPG, JPEG, PNG,
GIF. (Jika diisi, ini akan menjadi elemen visual utama)</small>
</div>
<div class="form-group">
<label for="pdf">Unggah File PDF (Opsional):</label>
<input type="file" class="form-control-file" id="pdf"
name="pdf" accept="application/pdf">
<small class="form-text text-muted">Format: PDF. (Jika
diisi, ini akan menjadi elemen visual utama)</small>
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input"
id="published" name="published" value="1" checked>
<label class="form-check-label"
for="published">Publikasikan Langsung</label>
<small class="form-text text-muted">Centang untuk langsung
menampilkan pengumuman di display.</small>
</div>
<button type="submit" class="btn btn-success"><i class="fas fa-
save"></i> Simpan Pengumuman</button>
<a href="manage_announcements.php" class="btn btn-secondary"><i
class="fas fa-arrow-left"></i> Kembali</a>
</form>
</div>
</div>
</div>

<script src="[Link]
<script
src="[Link]
script>
<script
src="[Link]
script>
<script>
// JavaScript untuk toggle sidebar
$(document).ready(function() {
const sidebar = $('#sidebar');
const toggleBtn = $('#toggleSidebarBtn');

const isSidebarHidden = [Link]('sidebarHidden') ===


'true';
if (isSidebarHidden) {
[Link]('hidden');
}

[Link]('click', function() {
[Link]('hidden');
[Link]('sidebarHidden', [Link]('hidden'));
});
});
</script>
</body>
</html>

You might also like