<?php
/**
 * ملف للتحقق من الأخطاء في السجلات
 * استخدمه للبحث عن خطأ معين باستخدام معرف الخطأ
 * 
 * الاستخدام: 
 *   php check_error.php ERR_69b5cdf8ec2074.65251582
 *   أو افتحه في المتصفح: check_error.php?error_id=ERR_69b5cdf8ec2074.65251582
 */

header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>التحقق من الأخطاء</title>
    <style>
        body { font-family: Arial, sans-serif; padding: 20px; background: #f5f5f5; }
        .container { max-width: 1200px; margin: 0 auto; }
        .card { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); margin-bottom: 20px; }
        h1 { color: #333; }
        .error-id { background: #f0f0f0; padding: 10px; border-radius: 4px; font-family: monospace; margin: 10px 0; }
        pre { background: #f5f5f5; padding: 15px; border-radius: 4px; overflow-x: auto; direction: ltr; text-align: left; }
        .error-entry { border-left: 4px solid #d32f2f; padding: 10px; margin: 10px 0; background: #fff5f5; }
        .no-results { color: #666; text-align: center; padding: 40px; }
        input[type="text"] { width: 100%; padding: 10px; font-size: 16px; border: 1px solid #ddd; border-radius: 4px; }
        button { padding: 10px 20px; background: #1976d2; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; }
        button:hover { background: #1565c0; }
    </style>
</head>
<body>
    <div class="container">
        <div class="card">
            <h1>🔍 البحث عن خطأ في السجلات</h1>
            <form method="GET" action="">
                <input type="text" name="error_id" placeholder="أدخل معرف الخطأ (مثل: ERR_69b5cdf8ec2074.65251582)" 
                       value="<?php echo htmlspecialchars($_GET['error_id'] ?? '', ENT_QUOTES, 'UTF-8'); ?>" required>
                <br><br>
                <button type="submit">بحث</button>
            </form>
        </div>

        <?php
        if (isset($_GET['error_id']) && !empty($_GET['error_id'])) {
            $errorId = trim($_GET['error_id']);
            $logDir = __DIR__ . '/logs';
            $found = false;
            $results = [];

            if (is_dir($logDir)) {
                // البحث في جميع ملفات السجل
                $logFiles = glob($logDir . '/app_*.log');
                rsort($logFiles); // الأحدث أولاً

                foreach ($logFiles as $logFile) {
                    $content = @file_get_contents($logFile);
                    if ($content === false) continue;

                    $lines = explode("\n", $content);
                    foreach ($lines as $lineNum => $line) {
                        if (strpos($line, $errorId) !== false) {
                            $found = true;
                            // جلب السياق (السطور قبل وبعد)
                            $context = [];
                            $start = max(0, $lineNum - 5);
                            $end = min(count($lines) - 1, $lineNum + 10);
                            
                            for ($i = $start; $i <= $end; $i++) {
                                $context[] = [
                                    'line' => $i + 1,
                                    'content' => $lines[$i],
                                    'is_match' => ($i === $lineNum)
                                ];
                            }
                            
                            $results[] = [
                                'file' => basename($logFile),
                                'line' => $lineNum + 1,
                                'content' => $line,
                                'context' => $context
                            ];
                        }
                    }
                }
            }

            if ($found) {
                echo '<div class="card">';
                echo '<h2>✅ تم العثور على ' . count($results) . ' نتيجة</h2>';
                
                foreach ($results as $result) {
                    echo '<div class="error-entry">';
                    echo '<strong>الملف:</strong> ' . htmlspecialchars($result['file'], ENT_QUOTES, 'UTF-8') . '<br>';
                    echo '<strong>السطر:</strong> ' . $result['line'] . '<br><br>';
                    echo '<pre>';
                    foreach ($result['context'] as $ctx) {
                        $highlight = $ctx['is_match'] ? 'background: #ffeb3b;' : '';
                        echo '<span style="' . $highlight . '">[' . $ctx['line'] . '] ' . htmlspecialchars($ctx['content'], ENT_QUOTES, 'UTF-8') . '</span>' . "\n";
                    }
                    echo '</pre>';
                    echo '</div>';
                }
                echo '</div>';
            } else {
                echo '<div class="card">';
                echo '<div class="no-results">';
                echo '<h2>❌ لم يتم العثور على النتيجة</h2>';
                echo '<p>لم يتم العثور على معرف الخطأ <strong>' . htmlspecialchars($errorId, ENT_QUOTES, 'UTF-8') . '</strong> في ملفات السجل.</p>';
                echo '<p>الأسباب المحتملة:</p>';
                echo '<ul>';
                echo '<li>معرف الخطأ غير صحيح</li>';
                echo '<li>الخطأ حدث في ملف سجل قديم تم حذفه</li>';
                echo '<li>مجلد logs غير موجود أو غير قابل للقراءة</li>';
                echo '</ul>';
                echo '</div>';
                echo '</div>';
            }

            // عرض آخر 10 أخطاء حرجة
            echo '<div class="card">';
            echo '<h2>📋 آخر الأخطاء الحرجة</h2>';
            $criticalLog = $logDir . '/critical_' . date('Y-m-d') . '.log';
            if (file_exists($criticalLog)) {
                $criticalContent = @file_get_contents($criticalLog);
                if ($criticalContent) {
                    $criticalLines = explode("\n", $criticalContent);
                    $recentErrors = array_slice(array_filter($criticalLines), -10);
                    echo '<pre>';
                    foreach ($recentErrors as $errorLine) {
                        echo htmlspecialchars($errorLine, ENT_QUOTES, 'UTF-8') . "\n";
                    }
                    echo '</pre>';
                } else {
                    echo '<p>لا توجد أخطاء حرجة اليوم</p>';
                }
            } else {
                echo '<p>ملف الأخطاء الحرجة غير موجود</p>';
            }
            echo '</div>';
        }
        ?>
    </div>
</body>
</html>
