Sindbad~EG File Manager

Current Path : /home/copmadinaarea/thecopmadinaarea.org/portal/
Upload File :
Current File : /home/copmadinaarea/thecopmadinaarea.org/portal/system_status.php

<?php
/**
 * System Status Checker
 * Comprehensive check of all system components
 */

require_once 'config/config.php';
checkLogin();

$pageTitle = "System Status - " . APP_NAME;

// Initialize status array
$status = [
    'database' => ['status' => 'unknown', 'message' => '', 'details' => []],
    'sessions' => ['status' => 'unknown', 'message' => '', 'details' => []],
    'modules' => ['status' => 'unknown', 'message' => '', 'details' => []],
    'classes' => ['status' => 'unknown', 'message' => '', 'details' => []]
];

try {
    $db = Database::getInstance()->getConnection();
    
    // Check database connection
    $status['database']['status'] = 'success';
    $status['database']['message'] = 'Database connection successful';
    
    // Check if membershipcard_id column exists
    $checkStmt = $db->query("SHOW COLUMNS FROM members LIKE 'membershipcard_id'");
    $columnExists = $checkStmt->fetch() !== false;
    $status['database']['details']['membershipcard_id_column'] = $columnExists ? 'EXISTS' : 'MISSING';
    
    // Check table counts
    $tables = ['users', 'members', 'areas', 'districts', 'assemblies', 'membership_cards'];
    foreach ($tables as $table) {
        try {
            $stmt = $db->query("SELECT COUNT(*) as count FROM {$table}");
            $result = $stmt->fetch();
            $status['database']['details'][$table . '_count'] = $result['count'];
        } catch (PDOException $e) {
            $status['database']['details'][$table . '_count'] = 'ERROR: ' . $e->getMessage();
        }
    }
    
} catch (Exception $e) {
    $status['database']['status'] = 'error';
    $status['database']['message'] = 'Database error: ' . $e->getMessage();
}

// Check session variables
$sessionVars = ['user_id', 'username', 'full_name', 'access_level', 'area_id', 'district_id', 'assembly_id'];
$missingVars = [];
foreach ($sessionVars as $var) {
    if (!isset($_SESSION[$var])) {
        $missingVars[] = $var;
    }
}

if (empty($missingVars)) {
    $status['sessions']['status'] = 'success';
    $status['sessions']['message'] = 'All required session variables are set';
} else {
    $status['sessions']['status'] = 'warning';
    $status['sessions']['message'] = 'Some session variables are missing: ' . implode(', ', $missingVars);
}

$status['sessions']['details'] = [
    'user_id' => $_SESSION['user_id'] ?? 'NOT SET',
    'username' => $_SESSION['username'] ?? 'NOT SET',
    'full_name' => $_SESSION['full_name'] ?? 'NOT SET',
    'access_level' => $_SESSION['access_level'] ?? 'NOT SET'
];

// Check required classes
$requiredClasses = ['Auth', 'Database', 'AuditLog', 'MembershipCard', 'Notification'];
$missingClasses = [];
foreach ($requiredClasses as $class) {
    if (!class_exists($class)) {
        $missingClasses[] = $class;
    }
}

if (empty($missingClasses)) {
    $status['classes']['status'] = 'success';
    $status['classes']['message'] = 'All required classes are available';
} else {
    $status['classes']['status'] = 'error';
    $status['classes']['message'] = 'Missing classes: ' . implode(', ', $missingClasses);
}

// Check module accessibility
$modules = [
    'membership' => 'modules/membership/index.php',
    'users' => 'modules/users/index.php',
    'settings' => 'modules/settings/index.php',
    'audit' => 'modules/audit/index.php'
];

$moduleStatus = [];
foreach ($modules as $name => $path) {
    $moduleStatus[$name] = file_exists($path) ? 'EXISTS' : 'MISSING';
}

$status['modules']['status'] = in_array('MISSING', $moduleStatus) ? 'error' : 'success';
$status['modules']['message'] = $status['modules']['status'] === 'success' ? 'All modules exist' : 'Some modules are missing';
$status['modules']['details'] = $moduleStatus;

include 'includes/header.php';
?>

<?php include 'includes/sidebar.php'; ?>

<!-- Main Content -->
<main class="flex-1 md:ml-64 mt-16">
<div class="container mx-auto px-4 py-8">
    <div class="mb-6">
        <h1 class="text-3xl font-bold text-gray-800">
            <i class="fas fa-heartbeat mr-2 text-green-500"></i>System Status
        </h1>
        <p class="text-gray-600 mt-2">Comprehensive system health check</p>
    </div>
    
    <!-- Status Cards -->
    <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
        <?php foreach ($status as $component => $info): ?>
        <div class="bg-white rounded-xl shadow-lg p-6 border-l-4 <?php 
            echo $info['status'] === 'success' ? 'border-green-500' : 
                ($info['status'] === 'warning' ? 'border-yellow-500' : 'border-red-500'); 
        ?>">
            <div class="flex items-center justify-between mb-4">
                <h3 class="text-lg font-semibold text-gray-800 capitalize"><?php echo $component; ?></h3>
                <i class="fas fa-<?php 
                    echo $info['status'] === 'success' ? 'check-circle text-green-500' : 
                        ($info['status'] === 'warning' ? 'exclamation-triangle text-yellow-500' : 'times-circle text-red-500'); 
                ?>"></i>
            </div>
            <p class="text-sm text-gray-600 mb-3"><?php echo htmlspecialchars($info['message']); ?></p>
            
            <?php if (!empty($info['details'])): ?>
            <div class="text-xs">
                <strong>Details:</strong>
                <ul class="mt-1 space-y-1">
                    <?php foreach ($info['details'] as $key => $value): ?>
                    <li class="flex justify-between">
                        <span class="text-gray-500"><?php echo htmlspecialchars($key); ?>:</span>
                        <span class="font-mono <?php echo strpos($value, 'ERROR') !== false ? 'text-red-600' : 'text-gray-700'; ?>">
                            <?php echo htmlspecialchars($value); ?>
                        </span>
                    </li>
                    <?php endforeach; ?>
                </ul>
            </div>
            <?php endif; ?>
        </div>
        <?php endforeach; ?>
    </div>
    
    <!-- Actions -->
    <div class="bg-white rounded-xl shadow-lg p-6">
        <h2 class="text-xl font-bold text-gray-800 mb-4">System Actions</h2>
        <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
            <a href="database/check_schema.php" class="bg-blue-500 text-white px-4 py-3 rounded-lg hover:bg-blue-600 transition text-center">
                <i class="fas fa-database mr-2"></i>Check Database Schema
            </a>
            <a href="database/run_migration.php" class="bg-green-500 text-white px-4 py-3 rounded-lg hover:bg-green-600 transition text-center">
                <i class="fas fa-tools mr-2"></i>Run Migration
            </a>
            <a href="dashboard.php" class="bg-gray-500 text-white px-4 py-3 rounded-lg hover:bg-gray-600 transition text-center">
                <i class="fas fa-home mr-2"></i>Back to Dashboard
            </a>
        </div>
    </div>
</div>
</main>

<?php include 'includes/footer.php'; ?>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists