80 lines
2.1 KiB
PHP
80 lines
2.1 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
$db_host = 'localhost';
|
|
$db_user = 'root'; // Change if needed
|
|
$db_pass = '@Samui@10742'; // Change if needed
|
|
$db_name = 'student_assignment_notify';
|
|
|
|
try {
|
|
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
|
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS settings (
|
|
setting_key VARCHAR(50) PRIMARY KEY,
|
|
setting_value TEXT
|
|
)");
|
|
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS activity_logs (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NULL,
|
|
action VARCHAR(100) NOT NULL,
|
|
details TEXT,
|
|
ip_address VARCHAR(45),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
|
|
} catch (PDOException $e) {
|
|
die("Database Connection failed: " . $e->getMessage());
|
|
}
|
|
|
|
// Helper function to get setting
|
|
function getSetting($pdo, $key)
|
|
{
|
|
$stmt = $pdo->prepare("SELECT setting_value FROM settings WHERE setting_key = ?");
|
|
$stmt->execute([$key]);
|
|
$result = $stmt->fetch();
|
|
return $result ? $result['setting_value'] : null;
|
|
}
|
|
|
|
// Helper function to log activity
|
|
function logActivity($pdo, $action, $details = '')
|
|
{
|
|
$user_id = $_SESSION['user_id'] ?? null;
|
|
$ip_address = $_SERVER['REMOTE_ADDR'] ?? 'Unknown';
|
|
|
|
try {
|
|
$stmt = $pdo->prepare("INSERT INTO activity_logs (user_id, action, details, ip_address) VALUES (?, ?, ?, ?)");
|
|
$stmt->execute([$user_id, $action, $details, $ip_address]);
|
|
} catch (PDOException $e) {
|
|
// Silently ignore log insertion errors to prevent breaking the app
|
|
}
|
|
}
|
|
|
|
// Helper function to check login
|
|
function isLoggedIn()
|
|
{
|
|
return isset($_SESSION['user_id']);
|
|
}
|
|
|
|
function requireLogin()
|
|
{
|
|
if (!isLoggedIn()) {
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function isAdmin()
|
|
{
|
|
return isset($_SESSION['role']) && $_SESSION['role'] === 'admin';
|
|
}
|
|
|
|
function requireAdmin()
|
|
{
|
|
if (!isAdmin()) {
|
|
die("Unauthorized access.");
|
|
}
|
|
}
|