exec("CREATE TABLE IF NOT EXISTS users ( // id INT AUTO_INCREMENT PRIMARY KEY, // username VARCHAR(255) NOT NULL UNIQUE, // email VARCHAR(255) NOT NULL UNIQUE, // password VARCHAR(255) NOT NULL, // role_id INT, // first_name VARCHAR(255), // last_name VARCHAR(255), // created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, // FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE SET NULL //)"); // Fetch all roles for the dropdown $roles = $pdo->query("SELECT * FROM roles ORDER BY role_name")->fetchAll(); // Function to log activity function log_activity($user_id, $action) { global $pdo; $stmt = $pdo->prepare("INSERT INTO activities (user_id, action) VALUES (:user_id, :action)"); $stmt->execute(['user_id' => $user_id, 'action' => $action]); } // Handle Create and Update if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['add_user'])) { $username = trim($_POST['username']); $email = trim($_POST['email']); $password = $_POST['password']; $role_id = $_POST['role_id']; $first_name = trim($_POST['first_name']); $last_name = trim($_POST['last_name']); if (!empty($username) && !empty($email) && !empty($password) && !empty($role_id)) { $hashed_password = password_hash($password, PASSWORD_DEFAULT); $stmt = $pdo->prepare("INSERT INTO users (username, email, password, role_id, first_name, last_name) VALUES (:username, :email, :password, :role_id, :first_name, :last_name)"); $stmt->execute([ 'username' => $username, 'email' => $email, 'password' => $hashed_password, 'role_id' => $role_id, 'first_name' => $first_name, 'last_name' => $last_name ]); $new_user_id = $pdo->lastInsertId(); log_activity($_SESSION['user_id'], "Created user {$username} (ID: {$new_user_id})"); } } elseif (isset($_POST['update_user'])) { $id = $_POST['user_id']; $username = trim($_POST['username']); $email = trim($_POST['email']); $password = $_POST['password']; $role_id = $_POST['role_id']; $first_name = trim($_POST['first_name']); $last_name = trim($_POST['last_name']); if (!empty($id) && !empty($username) && !empty($email) && !empty($role_id)) { if (!empty($password)) { $hashed_password = password_hash($password, PASSWORD_DEFAULT); $stmt = $pdo->prepare("UPDATE users SET username = :username, email = :email, password = :password, role_id = :role_id, first_name = :first_name, last_name = :last_name WHERE id = :id"); $stmt->execute([ 'username' => $username, 'email' => $email, 'password' => $hashed_password, 'role_id' => $role_id, 'first_name' => $first_name, 'last_name' => $last_name, 'id' => $id ]); } else { $stmt = $pdo->prepare("UPDATE users SET username = :username, email = :email, role_id = :role_id, first_name = :first_name, last_name = :last_name WHERE id = :id"); $stmt->execute([ 'username' => $username, 'email' => $email, 'role_id' => $role_id, 'first_name' => $first_name, 'last_name' => $last_name, 'id' => $id ]); } log_activity($_SESSION['user_id'], "Updated user {$username} (ID: {$id})"); } elseif (isset($_POST['link_parent_child'])) { $parent_id = $_POST['parent_id']; $child_id = $_POST['child_id']; if (!empty($parent_id) && !empty($child_id)) { $stmt = $pdo->prepare("INSERT INTO parent_child (parent_id, child_id) VALUES (:parent_id, :child_id)"); $stmt->execute(['parent_id' => $parent_id, 'child_id' => $child_id]); log_activity($_SESSION['user_id'], "Linked parent (ID: {$parent_id}) to child (ID: {$child_id})"); } header("Location: users.php?link_success=1"); exit; } header("Location: users.php"); exit; } // Handle Delete if (isset($_GET['delete_id'])) { $id = $_GET['delete_id']; // Get username for logging $stmt = $pdo->prepare("SELECT username FROM users WHERE id = :id"); $stmt->execute(['id' => $id]); $deleted_user = $stmt->fetch(); $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id"); $stmt->execute(['id' => $id]); if ($deleted_user) { log_activity($_SESSION['user_id'], "Deleted user {$deleted_user['username']} (ID: {$id})"); } header("Location: users.php"); exit; } // Fetch all users with their role names $users = $pdo->query(" SELECT users.*, roles.role_name AS role_name FROM users LEFT JOIN roles ON users.role_id = roles.id ORDER BY users.id DESC ")->fetchAll(); // Fetch all parents and students $parents = $pdo->query("SELECT u.id, u.first_name, u.last_name FROM users u JOIN roles r ON u.role_id = r.id WHERE r.role_name = 'parent'")->fetchAll(); $students = $pdo->query("SELECT u.id, u.first_name, u.last_name FROM users u JOIN roles r ON u.role_id = r.id WHERE r.role_name = 'student'")->fetchAll(); // Fetch user for editing $editing_user = null; if (isset($_GET['edit_id'])) { $id = $_GET['edit_id']; $stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id"); $stmt->execute(['id' => $id]); $editing_user = $stmt->fetch(); } } catch (PDOException $e) { die("Database error: " . $e->getMessage()); } ?> مدیریت کاربران

فهرست کاربران

# نام کاربری ایمیل نقش عملیات
ویرایش حذف

>
انصراف

Link Parent to Child

Parent and child linked successfully.