// Only define DEBUG_MODE if it's not already defined if (!defined('DEBUG_MODE')) { define('DEBUG_MODE', false); } // Only show errors in development if (DEBUG_MODE === true) { ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); } // Check if article exists if (empty($article)) { // Article not found, show 404 page include_once FRONTEND_PATH . '/templates/404.php'; exit; } // Set page variables $pageTitle = $article['title'] . ' - ' . APP_NAME; $pageDescription = !empty($article['excerpt']) ? strip_tags($article['excerpt']) : truncate_text(strip_tags($article['content']), 160); // Clean any remaining HTML entities from the description $pageDescription = html_entity_decode(strip_tags($pageDescription)); $ogType = 'article'; $ogImage = !empty($article['featured_image']) ? 'https://' . $_SERVER['HTTP_HOST'] . '/' . $article['featured_image'] : null; $currentUrl = 'https://' . $_SERVER['HTTP_HOST'] . '/article/' . $article['slug']; $activeNav = ''; $showBreadcrumbs = true; // Set breadcrumbs $breadcrumbs = []; // Add category to breadcrumbs if available if (!empty($articleCategories) && count($articleCategories) > 0) { $category = $articleCategories[0]; // Use first category $breadcrumbs[] = [ 'title' => $category['name'], 'url' => '/category/' . $category['slug'] ]; } // Add article to breadcrumbs $breadcrumbs[] = [ 'title' => $article['title'], 'active' => true ]; // Generate schema.org markup for article $schemaMarkup = generate_article_schema($article); // The update_tags function has been moved to frontend/includes/functions.php // Debug: Before view count increment error_log("DEBUG: Before increment_article_views - Article ID: " . $article['id']); // Increment view count before displaying increment_article_views($article['id']); // Debug: After view count increment error_log("DEBUG: After increment_article_views - Article ID: " . $article['id']); // For debugging - create a debug log that will be displayed on the page $debugLog = []; $debugLog[] = "Debug: Article ID: " . $article['id']; // Get database connection global $db; // Initialize debug log $debugLog[] = "Using existing database connection via dbQuery"; // Debug: Database connection check error_log("DEBUG: Database connection check - DB is " . ($db ? "available" : "NOT available")); // Make sure article tags are loaded and initialized as an array if (!isset($articleTags)) { // Fetch existing tags for this article try { if ($db) { $tagQuery = "SELECT t.id, t.name, t.slug FROM tags t JOIN news_tags nt ON t.id = nt.tag_id WHERE nt.news_id = ?"; $tagStmt = $db->prepare($tagQuery); $tagStmt->execute([$article['id']]); $articleTags = $tagStmt->fetchAll(PDO::FETCH_ASSOC); } else { $articleTags = []; error_log('Database connection not available when fetching article tags'); } } catch (Exception $e) { // If there's an error, initialize as empty array $articleTags = []; error_log('Error fetching article tags: ' . $e->getMessage()); } } // Ensure $articleTags is always an array if (!is_array($articleTags)) { $articleTags = []; } // Debug: Before calling update_tags error_log("DEBUG: About to call update_tags function - Article ID: " . $article['id']); error_log("DEBUG: ArticleTags count before update: " . count($articleTags)); // Update article tags based on content $tagsUpdated = false; $tagsUpdated = update_tags(); error_log("DEBUG: update_tags function returned: " . ($tagsUpdated ? "TRUE" : "FALSE")); // Refresh article tags after potential updates if update was successful if ($tagsUpdated && $db) { error_log("DEBUG: Refreshing article tags after successful update"); try { $tagQuery = "SELECT t.id, t.name, t.slug FROM tags t JOIN news_tags nt ON t.id = nt.tag_id WHERE nt.news_id = ?"; $tagStmt = $db->prepare($tagQuery); $tagStmt->execute([$article['id']]); $articleTags = $tagStmt->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { // Log error but continue with existing tags error_log('Error refreshing article tags: ' . $e->getMessage()); } } // Update debug log with more information $debugLog[] = "Debug: Database connection: " . ($db ? "Available" : "NOT available"); $debugLog[] = "Debug: ArticleTags count: " . count($articleTags); // Add function call trace for debugging $debugLog[] = "Debug: Execution trace:"; $debugLog[] = "- Before increment_article_views"; $debugLog[] = "- After increment_article_views"; $debugLog[] = "- Database connection check: " . ($db ? "SUCCESS" : "FAILED"); $debugLog[] = "- Article tags loaded: " . (isset($articleTags) ? "YES" : "NO"); $debugLog[] = "- About to call update_tags"; $debugLog[] = "- update_tags result: " . ($tagsUpdated ? "SUCCESS" : "FAILED"); // Add database connection details $debugLog[] = "Debug: Database connection details:"; if ($db) { $debugLog[] = "- Connection type: " . get_class($db); $debugLog[] = "- Connection hash: " . spl_object_hash($db); } // Add more detailed database info if ($db) { try { $debugLog[] = "Debug: Database info:"; $stmt = $db->query("SELECT DATABASE() as db_name"); $dbInfo = $stmt->fetch(PDO::FETCH_ASSOC); $debugLog[] = "- Current database: " . ($dbInfo['db_name'] ?? 'unknown'); // Check if tags table exists and has data $stmt = $db->query("SELECT COUNT(*) as tag_count FROM tags"); $tagCount = $stmt->fetch(PDO::FETCH_ASSOC); $debugLog[] = "- Tags in database: " . ($tagCount['tag_count'] ?? 'unknown'); } catch (Exception $e) { $debugLog[] = "- Error getting DB info: " . $e->getMessage(); } } // Include header include_once FRONTEND_PATH . '/includes/header.php'; // Display debug information at the top of the page (only during development) if (defined('DEBUG_MODE') && DEBUG_MODE === true) { echo '
'; echo '

Debug Information

'; echo ''; // Direct test of update_tags function with sample data if ($db) { echo '

Direct Test of update_tags Function

'; // Create sample data with proper string values $sampleArticle = [ 'id' => $article['id'], 'title' => 'Sample Title for Testing', 'content' => 'This is sample content for testing the update_tags function.' ]; // Ensure all values are strings to avoid null values $sampleArticle['title'] = (string)$sampleArticle['title']; $sampleArticle['content'] = (string)$sampleArticle['content']; $sampleTags = []; // Try to get some real tags for testing try { $stmt = $db->query("SELECT id, name, slug FROM tags LIMIT 5"); $testTags = $stmt->fetchAll(PDO::FETCH_ASSOC); echo '

Test with ' . count($testTags) . ' sample tags:

'; echo ''; // Run the test echo '

Running test update_tags function...

'; // Set global variables for the test global $article, $articleTags; $originalArticle = $article; $originalTags = $articleTags; // Temporarily set global variables for the test $article = $sampleArticle; $articleTags = $sampleTags; // Run the test $testResult = update_tags(); // Restore original values $article = $originalArticle; $articleTags = $originalTags; echo '

Test result: ' . ($testResult ? 'SUCCESS' : 'FAILED') . '

'; } catch (Exception $e) { echo '

Error during test: ' . htmlspecialchars($e->getMessage()) . '

'; } } echo '
'; } ?>

مسؤول سوري سابق يكشف تفاصيل جديدة حول اختفاء الصحفي الأمريكي أوستن تايس: الأسد كان على علم بالخطف

مسؤول سوري سابق يكشف تفاصيل جديدة حول اختفاء الصحفي الأمريكي أوستن تايس: الأسد كان على علم بالخطف

اللواء صفوان بهلول يؤكد أنه لم يكن محتجزاً لدى المعارضة وإن الفيديو الذي نُشر زيَّفه مسؤول أمني

أثار المسؤولون الأميركيون في الأشهر الأخيرة، في محادثات مع القيادة السورية الجديدة، مصير الصحافي الأميركي أوستن تايس الذي اختفى عام 2012 في إحدى ضواحي دمشق. ولا يزال الجانب الأميركي يصر على أنه قد يكون على قيد الحياة، لأنه لا يوجد دليل على وفاته. غير أن مصدراً رفيعاً في جهاز الأمن التابع لبشار الأسد هو اللواء صفوان بهلول، يؤكد أن تايس لم يكن محتجزاً لدى جماعات المعارضة، بل لدى أمن النظام، وبعلم كامل من الأسد ولقد احتُجز لفترة من الوقت في مجمع أحد المساعدين المقربين من الرئيس المخلوع. ويكشف اللواء أيضاً مسؤوليته في الأمر، بحسب حديثه لمجلة «الإيكونوميست» التي حصلت على «واحدة من أولى الروايات العلنية الموثوقة بشأن الاختطاف، ونظرة ثاقبة على أحد أسرار النظام البائد الحالكة». علماً أن المقابلة مع اللواء بهلول، بحسب تنويه المجلة البريطانية الدولية، تأتي ضمن سلسلة بودكاست تنتجها «الإيكونوميست» حول اختفاء أوستن تايس ودولة بشار الأسد الاستخباراتية.

في صيف عام 2012، علم بسام الحسن، وهو مستشار غامض في الدائرة المقربة من الأسد، أن تايس كان في ضواحي دمشق. ووفقاً للواء بهلول، وضع الحسن خطة للقبض عليه. كان تايس، صحافياً مستقلاً يكتب لصحيفة «واشنطن بوست»، يستعد لتمضية عطلة في لبنان بعد فترة شاقة من التغطية الصحافية في المناطق التي تسيطر عليها المعارضة في سوريا. بحث عن وسيط لمساعدته في عبور الحدود، وتبين أن الوسيط كان يعمل لحساب حسن، بحسب اللواء. أسس بسام الحسن ميليشيا الدفاع الوطني بعد اندلاع الاحتجاجات الشعبية ضد النظام. واشتهرت المجموعة بارتكابها فظائع، بما في ذلك مذبحة في حي التضامن بدمشق. ويخضع الحسن الآن لعقوبات غربية.

وبحسب بهلول، احتُجز تايس، في مرآب داخل مجمع غير بعيد عن القصر الرئاسي، خارج نظام السجون الرسمي للنظام، وغير مسجل في السجلات الرسمية، ويقع تحت السيطرة المباشرة للموالين لبشار الأسد. هل كان الأسد على علم بالاختطاف؟ يقول اللواء: «كان على علم، بكل تأكيد، وكان سعيداً بالقبض عليه». وصل أمر للواء بهلول باستجواب تايس. كان الصحافي الأميركي «يمتلك جهاز اتصالات عبر الأقمار الاصطناعية، وهاتف (آيفون)، وهاتفاً صغيراً آخر». يقول بهلول: «بدأت تفحص دفتر هاتفه، محاولاً الحصول على دليل حول هويته». ويؤكد بهلول أن تايس تمكن من الهروب من زنزانته لمدة 24 ساعة (هذا ما ذكرته وكالة «رويترز» في الرواية الأصلية). ويشتبه أن اللواء نفسه ساعد في محاولة الهروب (وهو ما ينفيه)، لكن تمت تبرئته لاحقاً. وقال اللواء: «فرك تايس جسده بالصابون لتليين صدره عند عبور النافذة، واستخدم المنشفة، كان هناك زجاج مكسور ملتصق بالأسمنت فوق السياج. لذا؛ وضعه عليه، ثم تسلقه وألقى بنفسه إلى الجانب الآخر». ثم ألقي القبض عليه مجدداً.

اللواء بهلول، وهو من محبي الثقافة الإنجليزية ويتقن اللغة الإنجليزية بطلاقة، تلقى تدريبه في أكاديمية الدفاع البريطانية في شريفنهام Shrivenham قبل أن يترقى في الرتب العسكرية. يقول إنه كان من المقرر أن يتقاعد في 9 ديسمبر (كانون الأول)، أي في اليوم التالي لسقوط النظام. وقد سوّى اللواء بهلول أموره مع الحكام الجدد في سوريا، وهو أحد كبار الضباط القلائل الذين لم يفروا من البلاد. ويقول إنه لم ير تايس مرة أخرى بعد استجوابه الرابع والأخير. وكانت آخر معلومة مؤكدة عن الصحافي، هي مقطع فيديو تم تحميله على موقع «يوتيوب» في سبتمبر (أيلول) عام 2012، يظهر فيه معصوب العينين ومحاطاً برجال ملثمين يهتفون «الله أكبر». يعتقد المسؤولون الأميركيون أن الفيديو تم إخراجه ليبدو وكأن تايس قد وقع في قبضة فصيل معارض وليس النظام. يقول اللواء بهلول إن الفيديو تم إعداده من قبل الحسن وتم تصويره في ريف دمشق الشمالي.

في ديسمبر، ومع انهيار نظام الأسد، عندما هرب آلاف السجناء اليائسين من شبكة التعذيب والاحتجاز مترامية الأطراف في سوريا في ديسمبر إثر فرار الأسد إلى موسكو، تجددت الآمال في أن يكون الصحافي الأميركي تايس من بينهم. لكنه لم يكن كذلك. واليوم، تواصل إدارة الرئيس ترمب وعائلة تايس طرح الأسئلة. أحد الاحتمالات هو أنه على قيد الحياة ولا يزال في سوريا، ربما مختبئاً في مكان ما في الأراضي الزراعية النائية في قلب الساحل العلوي للبلاد، والتي لا تزال أجزاء منها خارج سيطرة قوات الأمن التابعة لأحمد الشرع. وهناك احتمال آخر، أنه نُقل خارج البلاد إلى إيران، أو إلى المناطق التي يسيطر عليها «حزب الله» في لبنان. أو ربما تُرك في سجن سري، أو قُتل في خضم فوضى الثورة، ليصبح ضحية أخرى لحكم الأسد. قد يكون هناك رجل واحد لديه الإجابة: بسام الحسن، المستشار الغامض، الذي يُعتقد أنه فرَّ إلى إيران وربما يكون الآن في بيروت.

مشاركة المقال:

Warning: Undefined variable $tagsUpdated in /home/comparecarriers/public_html/yallasyrianews.com/frontend/templates/article.php on line 419