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

الوكالة الذرية تدين إيران لعدم امتثالها لمعاهدة حظر الانتشار النووي وسط تصاعد التوترات

الوكالة الذرية تدين إيران لعدم امتثالها لمعاهدة حظر الانتشار النووي وسط تصاعد التوترات

اعتمد مجلس محافظي الوكالة الدولية للطاقة الذرية قراراً يدين إيران بـ«عدم الامتثال» لالتزاماتها بموجب معاهدة حظر الانتشار النووي، في تحذير جديد قبل إحالة الملف إلى الأمم المتحدة.

أيدت النص الذي أعدته لندن وباريس وبرلين وواشنطن 19 دولة من أصل 35، على ما أفادت مصادر دبلوماسية عدة.

وصوّتت الصين وروسيا وبوركينا فاسو برفض النص، في حين امتنعت 11 دولة عن التصويت، حسبما صرح دبلوماسيون.

ولم تتمكن باراغواي وفنزويلا من المشاركة لعدم سدادهما الإسهامات المالية الكافية، وفقاً لوكالة الصحافة الفرنسية.

وهذه أحدث الخطوات الدبلوماسية في مساعٍ بدأت قبل سنوات لتقييد أنشطة إيران النووية، وسط مخاوف غربية من مساعٍ لطهران لتطوير أسلحة نووية وهو ما تنفيه طهران.

وتُخصّب إيران اليورانيوم بالفعل إلى درجة نقاء تصل إلى 60 في المائة، ويُمكن رفع هذه النسبة بسهولة إلى نحو 90 في المائة، وهي الدرجة اللازمة لصنع الأسلحة. ويُظهر معيار «الوكالة الدولية للطاقة الذرية» أن إيران لديها كمية من المواد عند هذا المستوى تكفي لصنع 10 أسلحة نووية إذا واصلت تخصيبها.

وتقول «الوكالة الذرية» إنها لا تستطيع حالياً «تقديم ضمانات بأن برنامج إيران النووي سلمي تماماً»، مؤكدة أنه لا يوجد بلد آخر خصَّب اليورانيوم إلى هذا المستوى العالي دون إنتاج أسلحة نووية.

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

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

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

أمّا دول الترويكا الأوروبية (فرنسا وألمانيا والمملكة المتحدة)، فقد دافعت عن تقرير غروسي، واصفة إياه بـ«المهني والحيادي»، وأعادت تأكيد دعمها لحل دبلوماسي شامل.

لكنها حذّرت في الوقت ذاته من أن «غياب التقدّم» قد يفتح الباب أمام تفعيل آلية «سناب باك» لإعادة فرض العقوبات الأممية. وأكدت الترويكا أن إيران ابتعدت عن التزاماتها بموجب الاتفاق النووي، وتواصل تقويض مهام التفتيش، وهو ما «يمنع (الوكالة) من تقديم ضمانات حول الطابع السلمي للبرنامج».

من جانبها، أكدت الولايات المتحدة عبر مبعوثها بالإنابة أن إيران «تواصل تسريع برنامجها النووي دون مبرّر مدني»، معتبراً أن تراكم اليورانيوم عالي التخصيب يثير «قلقاً بالغاً» بشأن نيات طهران.

وجددت واشنطن التزامها بمنع إيران من امتلاك سلاح نووي، داعية طهران إلى وقف التصعيد، والعودة الفورية للامتثال الكامل، وقبول مفتشي «الوكالة». وشددت على أن استمرار السلوك الإيراني الحالي «لن يقربها من أهدافها، ويقلّص فرص التوصل إلى اتفاق».

وقبيل التصويت هددت طهران بـ«الرد بقوة» عن طريق تقليص تعاونها مع الوكالة الدولية للطاقة الذرية في حال تبني القرار.

وقال دبلوماسيون إن القرار يهدف إلى زيادة الضغط على إيران. ويأتي القرار في خضم مباحثات بين إيران والولايات المتحدة بوساطة عُمان.

وأجرى البلدان 5 جولات تفاوض منذ أبريل (نيسان)، سعياً إلى إيجاد بديل لاتفاق 2015 الذي هدف إلى كبح برنامج إيران النووي مقابل تخفيف العقوبات المفروضة عليها.

وتتصاعد التوترات في الشرق الأوسط وقال الرئيس الأميركي دونالد ترمب إنه أصبح «أقل ثقة» بشأن التوصل إلى اتفاق مع إيران حول الملف النووي.

وهددت إيران، الأربعاء، باستهداف قواعد عسكرية أميركية في المنطقة في حال اندلاع نزاع.

ومن المقرر إجراء جولة جديدة من المحادثات بشأن الملف النووي في مسقط الأحد

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

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