Sindbad~EG File Manager

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

<?php
/**
 * SMS Management System Installer
 * Run this file once to set up SMS management
 */

require_once 'config/config.php';

checkLogin();

// Only superusers can install
if (!isSuperuser()) {
    redirect('dashboard.php');
}

$db = Database::getInstance()->getConnection();
$errors = [];
$success = [];
$warnings = [];

// Read SQL file
$sqlFile = __DIR__ . '/sql/sms_management.sql';
if (!file_exists($sqlFile)) {
    die('Error: SQL file not found at ' . $sqlFile);
}

$sql = file_get_contents($sqlFile);

// Split SQL into individual statements
$statements = array_filter(array_map('trim', explode(';', $sql)));

try {
    $db->beginTransaction();
    
    // Execute each statement
    foreach ($statements as $statement) {
        if (!empty($statement) && stripos($statement, '--') !== 0) {
            try {
                $db->exec($statement);
            } catch (PDOException $e) {
                // Skip if table already exists
                if ($e->getCode() == '42S01' || strpos($e->getMessage(), 'already exists') !== false) {
                    $warnings[] = 'Some database objects already exist (this is normal for re-installation)';
                } else {
                    throw $e;
                }
            }
        }
    }
    
    // Check if SMS Management module already exists
    $stmt = $db->prepare("SELECT id FROM module_management WHERE module_url = 'modules/sms/index.php' LIMIT 1");
    $stmt->execute();
    $moduleId = $stmt->fetchColumn();
    
    if ($moduleId) {
        // Module exists, just update it
        $stmt = $db->prepare("
            UPDATE module_management 
            SET module_name = 'SMS Management',
                module_icon = 'sms',
                category = 'Communication',
                display_order = 160,
                is_active = 1
            WHERE id = ?
        ");
        $stmt->execute([$moduleId]);
        $warnings[] = 'SMS Management module already exists - updated existing entry';
    } else {
        // Module doesn't exist, create it
        $stmt = $db->prepare("
            INSERT INTO module_management (module_name, module_url, module_icon, display_order, category, is_active)
            VALUES ('SMS Management', 'modules/sms/index.php', 'sms', 160, 'Communication', 1)
        ");
        $stmt->execute();
        $moduleId = $db->lastInsertId();
        $success[] = 'SMS Management module registered';
    }
    
    // Set access levels for SMS Management
    if ($moduleId) {
        // Allow all access levels to use SMS Management
        $accessLevels = ['assembly', 'district', 'area', 'superuser'];
        foreach ($accessLevels as $level) {
            $stmt = $db->prepare("
                INSERT INTO module_access_levels (module_id, access_level, is_enabled, enabled_by)
                VALUES (?, ?, 1, 1)
                ON DUPLICATE KEY UPDATE is_enabled = 1
            ");
            $stmt->execute([$moduleId, $level]);
        }
    }
    
    $db->commit();
    $success[] = 'SMS Management System installed successfully!';
    $success[] = 'Database tables created';
    $success[] = 'Default templates added';
    $success[] = 'Module registered in system';
    
} catch (PDOException $e) {
    if ($db->inTransaction()) {
        $db->rollBack();
    }
    $errors[] = 'Database error: ' . $e->getMessage();
} catch (Exception $e) {
    if ($db->inTransaction()) {
        $db->rollBack();
    }
    $errors[] = 'Error: ' . $e->getMessage();
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Install SMS Management</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
    <style>
        * { font-family: 'Inter', sans-serif; }
        .gradient-bg { background: linear-gradient(135deg, #1E40AF 0%, #9333EA 50%, #F97316 100%); }
    </style>
</head>
<body class="gradient-bg min-h-screen flex items-center justify-center p-4">
    <div class="bg-white rounded-2xl shadow-2xl p-8 max-w-2xl w-full">
        <div class="text-center mb-8">
            <div class="inline-block p-4 bg-gradient-to-r from-blue-600 to-purple-600 rounded-full mb-4">
                <i class="fas fa-sms text-5xl text-white"></i>
            </div>
            <h1 class="text-3xl font-bold text-gray-800">SMS Management System</h1>
            <p class="text-gray-600 mt-2">Installation Complete</p>
        </div>

        <?php if (!empty($success)): ?>
            <div class="bg-green-100 border border-green-400 text-green-800 px-6 py-4 rounded-lg mb-6">
                <div class="flex items-start">
                    <i class="fas fa-check-circle text-2xl mr-4 mt-1"></i>
                    <div class="flex-1">
                        <h3 class="font-bold text-lg mb-2">Installation Successful!</h3>
                        <ul class="space-y-2">
                            <?php foreach ($success as $msg): ?>
                                <li class="flex items-center">
                                    <i class="fas fa-check mr-2 text-green-600"></i>
                                    <?php echo htmlspecialchars($msg); ?>
                                </li>
                            <?php endforeach; ?>
                        </ul>
                    </div>
                </div>
            </div>
        <?php endif; ?>

        <?php if (!empty($errors)): ?>
            <div class="bg-red-100 border border-red-400 text-red-800 px-6 py-4 rounded-lg mb-6">
                <div class="flex items-start">
                    <i class="fas fa-exclamation-circle text-2xl mr-4 mt-1"></i>
                    <div class="flex-1">
                        <h3 class="font-bold text-lg mb-2">Installation Errors</h3>
                        <ul class="space-y-2">
                            <?php foreach ($errors as $error): ?>
                                <li class="flex items-start">
                                    <i class="fas fa-times mr-2 text-red-600 mt-1"></i>
                                    <?php echo htmlspecialchars($error); ?>
                                </li>
                            <?php endforeach; ?>
                        </ul>
                    </div>
                </div>
            </div>
        <?php endif; ?>

        <?php if (!empty($warnings)): ?>
            <div class="bg-yellow-100 border border-yellow-400 text-yellow-800 px-6 py-4 rounded-lg mb-6">
                <div class="flex items-start">
                    <i class="fas fa-exclamation-triangle text-2xl mr-4 mt-1"></i>
                    <div class="flex-1">
                        <h3 class="font-bold text-lg mb-2">Warnings</h3>
                        <ul class="space-y-2">
                            <?php foreach (array_unique($warnings) as $warning): ?>
                                <li class="flex items-start">
                                    <i class="fas fa-info-circle mr-2 text-yellow-600 mt-1"></i>
                                    <?php echo htmlspecialchars($warning); ?>
                                </li>
                            <?php endforeach; ?>
                        </ul>
                    </div>
                </div>
            </div>
        <?php endif; ?>

        <!-- Features List -->
        <div class="bg-blue-50 rounded-lg p-6 mb-6">
            <h3 class="font-bold text-gray-800 mb-4 flex items-center">
                <i class="fas fa-star text-yellow-500 mr-2"></i>Features Installed
            </h3>
            <div class="grid md:grid-cols-2 gap-3">
                <div class="flex items-center">
                    <i class="fas fa-check-circle text-green-600 mr-2"></i>
                    <span class="text-sm">Multiple African Gateways</span>
                </div>
                <div class="flex items-center">
                    <i class="fas fa-check-circle text-green-600 mr-2"></i>
                    <span class="text-sm">SMS Queue System</span>
                </div>
                <div class="flex items-center">
                    <i class="fas fa-check-circle text-green-600 mr-2"></i>
                    <span class="text-sm">SMS Templates</span>
                </div>
                <div class="flex items-center">
                    <i class="fas fa-check-circle text-green-600 mr-2"></i>
                    <span class="text-sm">SMS Logs & Analytics</span>
                </div>
                <div class="flex items-center">
                    <i class="fas fa-check-circle text-green-600 mr-2"></i>
                    <span class="text-sm">Test Mode</span>
                </div>
                <div class="flex items-center">
                    <i class="fas fa-check-circle text-green-600 mr-2"></i>
                    <span class="text-sm">Bulk SMS Sending</span>
                </div>
            </div>
        </div>

        <!-- Supported Gateways -->
        <div class="bg-purple-50 rounded-lg p-6 mb-6">
            <h3 class="font-bold text-gray-800 mb-4 flex items-center">
                <i class="fas fa-network-wired text-purple-600 mr-2"></i>Supported Gateways
            </h3>
            <div class="grid grid-cols-2 md:grid-cols-3 gap-4">
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">🌍</div>
                    <div class="text-xs font-semibold">Africa's Talking</div>
                    <div class="text-xs text-gray-500">Kenya, Nigeria, etc.</div>
                </div>
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">☁️</div>
                    <div class="text-xs font-semibold">Twilio</div>
                    <div class="text-xs text-gray-500">Global</div>
                </div>
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">πŸ‡³πŸ‡¬</div>
                    <div class="text-xs font-semibold">BulkSMS Nigeria</div>
                    <div class="text-xs text-gray-500">Nigeria</div>
                </div>
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">πŸ‡¬πŸ‡­</div>
                    <div class="text-xs font-semibold">Hubtel</div>
                    <div class="text-xs text-gray-500">Ghana</div>
                </div>
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">πŸ“±</div>
                    <div class="text-xs font-semibold">Clickatell</div>
                    <div class="text-xs text-gray-500">Global</div>
                </div>
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">πŸ‡ΏπŸ‡¦</div>
                    <div class="text-xs font-semibold">SMS Portal</div>
                    <div class="text-xs text-gray-500">South Africa</div>
                </div>
                <div class="text-center p-3 bg-white rounded-lg shadow-sm">
                    <div class="text-2xl mb-1">πŸ‡¬πŸ‡­</div>
                    <div class="text-xs font-semibold">Arkesel</div>
                    <div class="text-xs text-gray-500">Ghana</div>
                </div>
            </div>
        </div>

        <!-- Next Steps -->
        <div class="bg-gradient-to-r from-blue-50 to-purple-50 rounded-lg p-6 mb-6">
            <h3 class="font-bold text-gray-800 mb-3 flex items-center">
                <i class="fas fa-list-check text-blue-600 mr-2"></i>Next Steps
            </h3>
            <ol class="space-y-2 text-sm">
                <li class="flex items-start">
                    <span class="bg-blue-600 text-white rounded-full w-6 h-6 flex items-center justify-center mr-3 mt-0.5 flex-shrink-0">1</span>
                    <span>Go to SMS Settings and configure your preferred gateway</span>
                </li>
                <li class="flex items-start">
                    <span class="bg-blue-600 text-white rounded-full w-6 h-6 flex items-center justify-center mr-3 mt-0.5 flex-shrink-0">2</span>
                    <span>Enable SMS service and set test mode ON for testing</span>
                </li>
                <li class="flex items-start">
                    <span class="bg-blue-600 text-white rounded-full w-6 h-6 flex items-center justify-center mr-3 mt-0.5 flex-shrink-0">3</span>
                    <span>Send a test SMS to verify your configuration</span>
                </li>
                <li class="flex items-start">
                    <span class="bg-blue-600 text-white rounded-full w-6 h-6 flex items-center justify-center mr-3 mt-0.5 flex-shrink-0">4</span>
                    <span>Disable test mode when ready to send real SMS</span>
                </li>
                <li class="flex items-start">
                    <span class="bg-blue-600 text-white rounded-full w-6 h-6 flex items-center justify-center mr-3 mt-0.5 flex-shrink-0">5</span>
                    <span>Customize SMS templates for your church needs</span>
                </li>
            </ol>
        </div>

        <!-- Action Buttons -->
        <div class="flex flex-col sm:flex-row gap-3">
            <a href="modules/sms/settings.php" class="flex-1 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white text-center px-6 py-3 rounded-lg font-semibold transition duration-200 transform hover:scale-105 shadow-lg">
                <i class="fas fa-cog mr-2"></i>Configure SMS Settings
            </a>
            <a href="modules/sms/index.php" class="flex-1 bg-gradient-to-r from-green-600 to-green-700 hover:from-green-700 hover:to-green-800 text-white text-center px-6 py-3 rounded-lg font-semibold transition duration-200 transform hover:scale-105 shadow-lg">
                <i class="fas fa-sms mr-2"></i>Go to SMS Management
            </a>
        </div>

        <div class="mt-6 text-center">
            <a href="dashboard.php" class="text-gray-600 hover:text-gray-800 font-medium inline-flex items-center">
                <i class="fas fa-arrow-left mr-2"></i>Back to Dashboard
            </a>
        </div>

        <!-- Delete Installer Warning -->
        <div class="mt-8 p-4 bg-yellow-50 border-l-4 border-yellow-500 rounded">
            <p class="text-sm text-yellow-800">
                <i class="fas fa-exclamation-triangle mr-2"></i>
                <strong>Security:</strong> For security reasons, consider deleting or renaming this installer file after installation.
            </p>
        </div>
    </div>
</body>
</html>

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