// 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 '
'; } ?>

لبنان على القائمة الأوروبية للدول عالية المخاطر: تداعيات اقتصادية وحصار مالي محتمل

لبنان على القائمة الأوروبية للدول عالية المخاطر: تداعيات اقتصادية وحصار مالي محتمل

ماهر سلامة

شهد لبنان تصعيداً في الأيام الأخيرة، بإضافته إلى قائمة الاتحاد الأوروبي للدول "العالية المخاطر" في ما يخصّ عمليات غسيل الأموال وتمويل الإرهاب.

يواجه البلد ضغوطات خارجية كبيرة لـ"تحسين" أدائه في هذا الملف، على شكل هذه التصنيفات وغيرها من التصنيفات التي تصدرها منظمات دولية مختلفة في السياق نفسه، مثل اللائحة الرمادية التي تصدرها "مجموعة العمل المالي".

ولا يمكن فصل هذه الضغوطات عن الضغوطات السياسية التي يتعرض لها البلد بعد الحرب الأخيرة ومحاولة إحكام الحصار عليه، والذي يربط أي نهوض في مجال إعادة الإعمار والإصلاح وغيره، بمسألة "السلاح".

تصنف المفوضية الأوروبية الدول ضمن لائحة "العالية المخاطر" (High-risk jurisdictions) عندما تكون أنظمتها المحلية لمكافحة غسيل الأموال وتمويل الإرهاب (AML/CFT) تحتوي على "مشكلات إستراتيجية" تستدعي تحقيقات ومراقبة مشدّدة من قبل الجهات المالية في الاتحاد الأوروبي.

ويهدف هذا التصنيف إلى "حماية النظام والقوانين المالية الأوروبية من استغلالها في عمليات غسيل أموال أو تمويل جماعات متطرفة" بحسب المفوضية. ويستند هذا التصنيف، جزئياً، إلى تقييمات فرقة العمل المعنية بالإجراءات المالية (FATF) إضافة إلى معايير فنية وقانونية تنظم فعالية الأطر الوطنية للشفافية والرقابة.

سترتفع كلفة التحويلات المالية من الاتحاد الأوروبي التي تشكّل نحو 19% من إجمالي التحويلات إلى لبنان.

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

وبحسب الاتحاد الأوروبي، يتعين على المصارف والمؤسسات المالية في الاتحاد الأوروبي تطبيق إجراءات "العناية الواجبة المعززة" (Enhanced Vigilance) على جميع العمليات المالية المرتبطة بلبنان وباقي الدول المصنّفة جديداً، ومن ضمنها فتح حسابات جديدة أو تحويل الأموال من وإلى البلد، ما قد يؤدي إلى تأخيرات أو رفض معاملات في حال عدم استيفاء الشروط.

انعكاسات هذه الخطوة متعددة. أولها ارتفاع في كلفة التحويلات المالية (remittances) من الاتحاد الأوروبي. فقد اعتمد الاقتصاد اللبناني في السنوات الأخيرة على تحويلات المغتربين، إذ أصبح كثير من الأُسر يعتمد على هذه التحويلات التي أصبحت تشكّل نحو 25% من الناتج المحلي.

أما التحويلات من أوروبا، والتي سترتفع كلفتها بنتيجة هذا القرار، فهي تمثّل نحو 19% من مجمل تحويلات المغتربين، ما يسهم في تقلص قيمها، علماً بأنه قد يدفع المحولين نحو طرق غير تقليدية، لتحويل الأموال من دون المرور بالنظام المالي، إذا كانوا قادرين على إيجاد ثغرات تتيح لهم القيام بهذا الأمر.

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

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

في الواقع، يظهر بوضوح أن مسألة التصنيف تستخدم كورقة ضغط في المفاوضات الديبلوماسية بين لبنان والاتحاد الأوروبي، خاصةً ضمن مناقشات منح المساعدات المالية أو التبادل التجاري.

إن بقاء لبنان في هذه القائمة لمدة طويلة قد يضرّ بسمعته الدولية ويضعف موقفه عند التفاوض على تسهيلات مالية أو قروض من جهات دولية.

وهذا الضغط يتناغم مع ضغوط أميركية وضغوط تمارسها منظمات أخرى تهيمن عليها أميركا والاتحاد الأوروبي، في إطار تحقيق أهداف ذات طابع سياسي أمني وعسكري، إذ بات واضحاً بأن أي خطوة في اتجاه النهوض سواء في ملف إعادة الإعمار، أو في الإصلاحات الاقتصادية والمالية، أو حتى في أي مساعدات غربية، يتم ربطه مباشرة بمسألة "السلاح".

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

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