Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
<?php
// Setup the database tables
require_once 'includes/classes/Databases.php';
$db = Database::getInstance();
$pdo = $db->getPDO();
// Drop existing tables to ensure clean setup
$pdo->exec("DROP TABLE IF EXISTS task_assignments");
$pdo->exec("DROP TABLE IF EXISTS tasks");
$pdo->exec("DROP TABLE IF EXISTS activity_logs");
$pdo->exec("DROP TABLE IF EXISTS users");
// Create users table
$pdo->exec("
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
role ENUM('admin', 'volunteer') DEFAULT 'volunteer',
is_approved TINYINT(1) DEFAULT 0,
reset_token VARCHAR(100) NULL,
reset_expires DATETIME NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)");
// Create tasks table
$pdo->exec("
CREATE TABLE IF NOT EXISTS tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description TEXT,
date DATE NOT NULL,
end_date DATE NULL,
start_time TIME NOT NULL,
end_time TIME NOT NULL,
location VARCHAR(100) NOT NULL,
volunteers_needed INT NOT NULL DEFAULT 1,
is_recurring TINYINT(1) DEFAULT 0,
recurring_series_id VARCHAR(50) NULL,
recurrence_type ENUM('daily', 'weekly', 'monthly') NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)");
// Create task assignments table
$pdo->exec("
CREATE TABLE IF NOT EXISTS task_assignments (
id INT AUTO_INCREMENT PRIMARY KEY,
task_id INT NOT NULL,
user_id INT NOT NULL,
status ENUM('pending', 'confirmed', 'rejected') DEFAULT 'confirmed',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
UNIQUE KEY unique_assignment (task_id, user_id)
)");
// Create activity logs table
$pdo->exec("
CREATE TABLE IF NOT EXISTS activity_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
action VARCHAR(50) NOT NULL,
description TEXT,
ip_address VARCHAR(45),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
)");
// Create default admin user if it doesn't exist
$checkAdmin = $pdo->query("SELECT COUNT(*) FROM users WHERE role = 'admin'")->fetchColumn();
if ($checkAdmin == 0) {
$passwordHash = password_hash('admin123', PASSWORD_DEFAULT);
$pdo->exec("INSERT INTO users (first_name, last_name, email, password_hash, role, is_approved)
VALUES ('Admin', 'User', 'admin@degoudenschoen.nl', '$passwordHash', 'admin', 1)");
echo "Default admin user created: admin@degoudenschoen.nl / admin123";
}
// Create sample tasks
$taskCount = $pdo->query("SELECT COUNT(*) FROM tasks")->fetchColumn();
if ($taskCount == 0) {
// Create some sample tasks
$sampleTasks = [
[
'title' => 'Kantinedienst',
'description' => 'Help met het serveren van drankjes en snacks in de kantine tijdens de wedstrijden. Je werkt samen met een ervaren kantinemedewerker en zorgt voor een gezellige sfeer.',
'date' => date('Y-m-d', strtotime('+3 days')),
'start_time' => '14:00:00',
'end_time' => '18:00:00',
'location' => 'Clubhuis',
'volunteers_needed' => 2
],
[
'title' => 'WedstrijdcoΓΆrdinatie',
'description' => 'Zorg voor een soepel verloop van de wedstrijden. Ontvang bezoekende teams, wijs kleedkamers toe en houd het wedstrijdschema in de gaten.',
'date' => date('Y-m-d', strtotime('+5 days')),
'start_time' => '09:00:00',
'end_time' => '13:00:00',
'location' => 'Veld 1',
'volunteers_needed' => 3
],
[
'title' => 'Schoonmaakploeg',
'description' => 'Help mee om de kleedkamers en kantine schoon te maken na een drukke wedstrijddag.',
'date' => date('Y-m-d', strtotime('+7 days')),
'start_time' => '18:00:00',
'end_time' => '20:00:00',
'location' => 'Clubhuis en kleedkamers',
'volunteers_needed' => 4
]
];
$stmt = $pdo->prepare("INSERT INTO tasks (title, description, date, start_time, end_time, location, volunteers_needed)
VALUES (?, ?, ?, ?, ?, ?, ?)");
foreach ($sampleTasks as $task) {
$stmt->execute([
$task['title'],
$task['description'],
$task['date'],
$task['start_time'],
$task['end_time'],
$task['location'],
$task['volunteers_needed']
]);
}
echo "<br>Sample tasks created.";
}
echo "<br>Database setup completed successfully!";