/home/techb158/workloadmatch.com/Admin
Edit: /home/techb158/workloadmatch.com/Admin/pages.php (15822B)
prepare("SELECT page_id FROM pages_control WHERE page_key = ? LIMIT 1");
$chk->bind_param('s', $key);
$chk->execute();
$chk->store_result();
if ($chk->num_rows > 0) {
set_flash_msg("Page key '$key' already exists.", 'danger');
$chk->close();
header('Location: pages.php'); exit();
}
$chk->close();
$stmt = $mysqli->prepare("INSERT INTO pages_control (page_name, page_key, module, status) VALUES (?, ?, ?, 1)");
$stmt->bind_param('sss', $name, $key, $module);
if ($stmt->execute()) {
set_flash_msg("Page '$name' created successfully.", 'success');
log_activity($mysqli, 'create', 'page', $stmt->insert_id, $name);
} else {
set_flash_msg('Error creating page: ' . $stmt->error, 'danger');
}
$stmt->close();
header('Location: pages.php'); exit();
}
if (isset($_POST['edit_page'])) {
$id = (int)$_POST['page_id'];
$name = trim($_POST['page_name']);
$key = trim($_POST['page_key']);
$module = $_POST['module'];
$chk = $mysqli->prepare("SELECT page_id FROM pages_control WHERE page_key = ? AND page_id != ? LIMIT 1");
$chk->bind_param('si', $key, $id);
$chk->execute();
$chk->store_result();
if ($chk->num_rows > 0) {
set_flash_msg("Page key '$key' already in use by another page.", 'danger');
$chk->close();
header('Location: pages.php'); exit();
}
$chk->close();
$stmt = $mysqli->prepare("UPDATE pages_control SET page_name=?, page_key=?, module=? WHERE page_id=?");
$stmt->bind_param('sssi', $name, $key, $module, $id);
if ($stmt->execute()) {
set_flash_msg("Page '$name' updated.", 'success');
log_activity($mysqli, 'edit', 'page', $id, $name);
} else {
set_flash_msg('Error updating page.', 'danger');
}
$stmt->close();
header('Location: pages.php'); exit();
}
if (isset($_GET['toggle']) && isset($_GET['pid'])) {
$pid = (int)$_GET['pid'];
$stmt = $mysqli->prepare("SELECT page_name, status FROM pages_control WHERE page_id=?");
$stmt->bind_param('i', $pid);
$stmt->execute();
$stmt->bind_result($pname, $pstatus);
$stmt->fetch();
$stmt->close();
if ($pname !== null) {
$newStatus = $pstatus == 1 ? 0 : 1;
$upd = $mysqli->prepare("UPDATE pages_control SET status=? WHERE page_id=?");
$upd->bind_param('ii', $newStatus, $pid);
$upd->execute();
$upd->close();
$action = $newStatus == 1 ? 'enable' : 'disable';
set_flash_msg("Page '$pname' " . ($newStatus == 1 ? 'enabled' : 'disabled') . '.', 'success');
log_activity($mysqli, $action, 'page', $pid, $pname);
}
header('Location: pages.php'); exit();
}
if (isset($_GET['delete']) && isset($_GET['pid'])) {
$pid = (int)$_GET['pid'];
$stmt = $mysqli->prepare("SELECT page_name FROM pages_control WHERE page_id=?");
$stmt->bind_param('i', $pid);
$stmt->execute();
$stmt->bind_result($pname);
$stmt->fetch();
$stmt->close();
if ($pname !== null) {
$mysqli->query("DELETE FROM page_role_assignments WHERE page_id = $pid");
$del = $mysqli->prepare("DELETE FROM pages_control WHERE page_id=?");
$del->bind_param('i', $pid);
if ($del->execute()) {
set_flash_msg("Page '$pname' deleted.", 'success');
log_activity($mysqli, 'delete', 'page', $pid, $pname);
}
$del->close();
}
header('Location: pages.php'); exit();
}
if (isset($_POST['assign_roles'])) {
$pageId = (int)$_POST['page_id'];
$roleIds = $_POST['role_ids'] ?? [];
$mysqli->query("DELETE FROM page_role_assignments WHERE page_id = $pageId");
$ins = $mysqli->prepare("INSERT INTO page_role_assignments (page_id, role_id, can_access) VALUES (?, ?, 1)");
foreach ($roleIds as $rid) {
$rid = (int)$rid;
$ins->bind_param('ii', $pageId, $rid);
$ins->execute();
}
$ins->close();
set_flash_msg('Role assignments updated.', 'success');
log_activity($mysqli, 'assign_roles', 'page', $pageId, "Page #$pageId");
header('Location: pages.php'); exit();
}
$totalPages = $mysqli->query("SELECT COUNT(*) FROM pages_control")->fetch_row()[0];
$enabledPages = $mysqli->query("SELECT COUNT(*) FROM pages_control WHERE status = 1")->fetch_row()[0];
$disabledPages = $mysqli->query("SELECT COUNT(*) FROM pages_control WHERE status = 0")->fetch_row()[0];
?>
Admin | Pages Control
| ID | Page Name | Page Key | Module | Status | Assigned Roles | Actions |
query("SELECT p.page_id, p.page_name, p.page_key, p.module, p.status, GROUP_CONCAT(DISTINCT r.role_name SEPARATOR ', ') AS role_names FROM pages_control p LEFT JOIN page_role_assignments pra ON p.page_id = pra.page_id LEFT JOIN roles r ON pra.role_id = r.role_id GROUP BY p.page_id ORDER BY p.page_name");
while ($p = $pages->fetch_assoc()) {
$pid = $p['page_id'];
$pname = htmlspecialchars($p['page_name']);
$pkey = htmlspecialchars($p['page_key']);
$mod = htmlspecialchars($p['module'] ?? 'all');
$status = $p['status'] == 1 ? 'Enabled' : 'Disabled';
$roles = $p['role_names'] ? htmlspecialchars($p['role_names']) : 'None';
$toggleLabel = $p['status'] == 1 ? 'Disable' : 'Enable';
$toggleClass = $p['status'] == 1 ? 'btn-warning' : 'btn-success';
$toggleIcon = $p['status'] == 1 ? 'fa-ban' : 'fa-check';
echo "
| $pid |
$pname |
$pkey |
$mod |
$status |
$roles |
|
";
}
?>