<?php
session_start();
require_once '../../admin/database/db_config.php';
// Check if user is logged in and is admin or developer
if (!isset($_SESSION['user_id']) || ($_SESSION['role'] !== 'admin' && $_SESSION['role'] !== 'developer')) {
header('Location: ../admin/login.php');
exit();
}
// Add header
include_once '../header.php';
$success = false;
$error = '';
// Check current role enum values
$check_enum_query = "SHOW COLUMNS FROM users WHERE Field = 'role'";
$result = $conn->query($check_enum_query);
if ($result && $row = $result->fetch_assoc()) {
$current_enum = $row['Type'];
// Check if the roles already exist
if (strpos($current_enum, 'director') !== false && strpos($current_enum, 'developer') !== false) {
$error = 'The roles "director" and "developer" already exist in the ENUM.';
} else {
// Extract current enum values
preg_match("/^enum\(\'(.*)\'\)$/", $current_enum, $matches);
if (isset($matches[1])) {
$enum_values = explode("','", $matches[1]);
// Check if individual roles exist
$director_exists = in_array('director', $enum_values);
$developer_exists = in_array('developer', $enum_values);
// Add missing roles
if (!$director_exists) {
$enum_values[] = 'director';
}
if (!$developer_exists) {
$enum_values[] = 'developer';
}
// Create new enum string
$new_enum_values = "'" . implode("','", $enum_values) . "'";
// Alter table to update enum
$alter_query = "ALTER TABLE users MODIFY COLUMN role ENUM($new_enum_values) NOT NULL DEFAULT 'student'";
if ($conn->query($alter_query)) {
$success = true;
} else {
$error = "Failed to update role ENUM: " . $conn->error;
}
} else {
$error = "Could not parse current ENUM values.";
}
}
} else {
$error = "Failed to get role column information: " . $conn->error;
}
?>
<!-- Breadcrumb -->
<nav aria-label="breadcrumb" class="mb-4">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../index.php">Debug Tools</a></li>
<li class="breadcrumb-item active">Add User Roles</li>
</ol>
</nav>
<div class="container">
<div class="card shadow-sm">
<div class="card-header">
<h5 class="mb-0">Add User Roles: Director and Developer</h5>
</div>
<div class="card-body">
<?php if ($success): ?>
<div class="alert alert-success">
<i class="fas fa-check-circle me-2"></i> Successfully added "director" and "developer" roles to user role options.
</div>
<h6 class="mt-4">Updated Role Options:</h6>
<div class="table-responsive mt-3">
<table class="table table-bordered">
<thead>
<tr>
<th>Available User Roles</th>
</tr>
</thead>
<tbody>
<?php foreach ($enum_values as $role): ?>
<tr>
<td><?php echo ucfirst($role); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<div class="mt-4">
<p><strong>Next Steps:</strong></p>
<ul>
<li>You can now assign the "Director" or "Developer" role to users</li>
<li>Update any role-based access control in your application if needed</li>
<li>Check admin user management screens to ensure they display the new roles</li>
</ul>
</div>
<?php elseif ($error): ?>
<div class="alert alert-danger">
<i class="fas fa-exclamation-triangle me-2"></i> <?php echo $error; ?>
</div>
<?php endif; ?>
</div>
<div class="card-footer">
<a href="../index.php" class="btn btn-primary">
<i class="fas fa-arrow-left me-2"></i> Back to Debug Tools
</a>
<?php if ($success): ?>
<a href="../../admin/users.php" class="btn btn-success ms-2">
<i class="fas fa-users me-2"></i> Go to User Management
</a>
<?php endif; ?>
</div>
</div>
</div>
<?php
// Add footer
include_once '../footer.php';
?>