Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
<?php
/**
* Database schema checker - verifies all required columns exist
*/
require_once 'includes/classes/Databases.php';
try {
$db = Database::getInstance();
$pdo = $db->getPDO();
echo "<h2>Database Schema Check</h2>\n";
echo "<h3>Tasks Table Structure:</h3>\n";
// Get the tasks table structure
$stmt = $pdo->query("DESCRIBE tasks");
$columns = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<table border='1' style='border-collapse: collapse; margin: 20px 0;'>\n";
echo "<tr style='background: #f0f0f0;'><th>Field</th><th>Type</th><th>Null</th><th>Key</th><th>Default</th><th>Extra</th></tr>\n";
$requiredColumns = [
'id', 'title', 'description', 'date', 'end_date', 'start_time',
'end_time', 'location', 'volunteers_needed', 'is_recurring',
'recurring_series_id', 'recurrence_type', 'created_at', 'updated_at'
];
$foundColumns = [];
foreach ($columns as $column) {
$field = $column['Field'];
$foundColumns[] = $field;
// Highlight required recurring columns
$isRecurringColumn = in_array($field, ['is_recurring', 'recurring_series_id', 'recurrence_type', 'end_date']);
$style = $isRecurringColumn ? 'background: #e8f5e8;' : '';
echo "<tr style='$style'>";
echo "<td><strong>{$column['Field']}</strong></td>";
echo "<td>{$column['Type']}</td>";
echo "<td>{$column['Null']}</td>";
echo "<td>{$column['Key']}</td>";
echo "<td>{$column['Default']}</td>";
echo "<td>{$column['Extra']}</td>";
echo "</tr>\n";
}
echo "</table>\n";
// Check for missing required columns
$missingColumns = array_diff($requiredColumns, $foundColumns);
echo "<h3>Column Status Check:</h3>\n";
echo "<div style='margin: 20px 0;'>\n";
$recurringColumns = ['is_recurring', 'recurring_series_id', 'recurrence_type', 'end_date'];
foreach ($recurringColumns as $col) {
$exists = in_array($col, $foundColumns);
$icon = $exists ? "✅" : "❌";
$status = $exists ? "EXISTS" : "MISSING";
$color = $exists ? "green" : "red";
echo "<div style='color: $color; margin: 5px 0;'>";
echo "$icon <strong>$col</strong>: $status";
echo "</div>\n";
}
echo "</div>\n";
if (empty($missingColumns)) {
echo "<div style='background: #d4edda; color: #155724; padding: 15px; border-radius: 5px; margin: 20px 0;'>\n";
echo "<h4>✅ Database Schema is Complete!</h4>\n";
echo "<p>All required columns for recurring tasks are present in the database.</p>\n";
echo "<p><strong>Recurring task functionality should now work properly.</strong></p>\n";
echo "</div>\n";
} else {
echo "<div style='background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px; margin: 20px 0;'>\n";
echo "<h4>❌ Missing Required Columns:</h4>\n";
echo "<ul>\n";
foreach ($missingColumns as $col) {
echo "<li><strong>$col</strong></li>\n";
}
echo "</ul>\n";
echo "<p>Please add the missing columns to enable full functionality.</p>\n";
echo "</div>\n";
}
// Test the Task class methods
echo "<h3>Task Class Functionality Test:</h3>\n";
require_once 'includes/classes/Task.php';
$taskManager = new Task($pdo);
echo "<div style='margin: 20px 0;'>\n";
// Test hasEndDateColumn method
$hasEndDate = $taskManager->hasEndDateColumn();
$endDateIcon = $hasEndDate ? "✅" : "❌";
echo "<div style='margin: 5px 0;'>$endDateIcon <strong>End Date Support:</strong> " . ($hasEndDate ? "Enabled" : "Disabled") . "</div>\n";
// Test createTask method with recurring parameters
echo "<div style='margin: 5px 0;'>🔧 <strong>Testing Recurring Task Creation...</strong></div>\n";
try {
// Test if we can create a recurring task (dry run - we won't actually create it)
$reflection = new ReflectionMethod($taskManager, 'createTask');
$parameters = $reflection->getParameters();
$hasRecurringParams = false;
foreach ($parameters as $param) {
if ($param->getName() === 'recurringSeriesId') {
$hasRecurringParams = true;
break;
}
}
$recurringIcon = $hasRecurringParams ? "✅" : "❌";
echo "<div style='margin: 5px 0;'>$recurringIcon <strong>Recurring Parameters:</strong> " . ($hasRecurringParams ? "Supported" : "Not Supported") . "</div>\n";
} catch (Exception $e) {
echo "<div style='color: red; margin: 5px 0;'>❌ <strong>Task Class Error:</strong> " . $e->getMessage() . "</div>\n";
}
echo "</div>\n";
// Check other tables
echo "<h3>Other Tables:</h3>\n";
$tables = ['users', 'task_assignments', 'activity_logs'];
foreach ($tables as $table) {
try {
$stmt = $pdo->query("SELECT COUNT(*) as count FROM $table");
$result = $stmt->fetch();
echo "<div style='margin: 5px 0;'>✅ <strong>$table:</strong> {$result['count']} records</div>\n";
} catch (Exception $e) {
echo "<div style='color: red; margin: 5px 0;'>❌ <strong>$table:</strong> " . $e->getMessage() . "</div>\n";
}
}
} catch (Exception $e) {
echo "<div style='background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px;'>\n";
echo "<h4>❌ Database Connection Error:</h4>\n";
echo "<p>" . $e->getMessage() . "</p>\n";
echo "</div>\n";
}
?>