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

أبرز أحداث 29 نيسان عبر التاريخ: من حادثة المروحة إلى تتويج برشلونة

أبرز أحداث 29 نيسان عبر التاريخ: من حادثة المروحة إلى تتويج برشلونة

29 أبريل/نيسان، اليوم التاسع والعشرون من الشهر الرابع في التقويم الميلادي، يحمل في طياته أحداثًا تاريخية هامة ومتنوعة. نستعرض أبرز ما حدث في مثل هذا اليوم:

أحداث تاريخية

  • 1827: حادثة قصر القصبة (حادثة المروحة) تؤدي لاحتلال فرنسا للجزائر.
  • 1885: جامعة أوكسفورد تفتح أبوابها للطالبات لأول مرة.
  • 1891: نينوميا تشوهاتشي ينجح في الطيران بنموذج طائرة تعمل بقوة المطاط.
  • 1912: انفجار منجم فحم في اليابان يودي بحياة 276 شخصًا.
  • 1915: هزيمة الإيطاليين في معركة القرضابية بليبيا.
  • 1945: زواج أدولف هتلر وإيفا براون وانتحارهما في اليوم التالي.
  • 1949: اليابان تحصل على موافقة للانضمام إلى الألعاب الأولمبية.
  • 1954: الصين والهند توقعان معاهدة التعايش السلمي.
  • 1986: تشييع جثمان واليس دوقة وندسور.
  • 1988: معمر القذافي يهدم نقطة حدودية بين ليبيا وتونس.
  • 1991: إعصار قوي يضرب بنغلاديش ويقتل حوالي 138 ألف شخص. زلزال قوي يضرب جورجيا.
  • 1992: اضطرابات في لوس أنجلوس بعد تبرئة رجال الشرطة المتهمين بضرب رودني كينغ.
  • 2003: الكويت تسمح باستثمار جزء من أرباح صندوق التنمية في مشروعات البنية التحتية المحلية.
  • 2004: انسحاب القوات الأمريكية من الفلوجة. جوجل تطرح أسهمًا بقيمة 2.7 مليار دولار.
  • 2009: المحكمة الدولية الخاصة بلبنان تقرر إطلاق سراح الضباط الأربعة في قضية اغتيال رفيق الحريري.
  • 2010: بلجيكا تحظر النقاب في الأماكن العامة.
  • 2011: زفاف الأمير ويليام وكيت ميدلتون.
  • 2013: تفجير يستهدف موكب رئيس الوزراء السوري وائل الحلقي في دمشق.
  • 2014: مقتل أطفال في دمشق جراء سقوط قذائف هاون.
  • 2015: تغييرات في ولاية العهد في السعودية بتعيين الأمير محمد بن نايف وليًا للعهد والأمير محمد بن سلمان وليًا لولي العهد.
  • 2017: تركيا تحجب ويكيبيديا.
  • 2018: برشلونة يفوز بلقب الدوري الإسباني.
  • 2021: مصرع 45 شخصًا في تدافع في إسرائيل.
  • 2024: فيضانات مدمرة في البرازيل تخلف أكثر من 110 قتلى.

مواليد

شخصيات بارزة ولدت في 29 أبريل/نيسان:

  • ألكسندر الثاني (1818)، إمبراطور روسيا.
  • هنري بوانكاريه (1854)، عالم رياضيات وفيزياء فرنسي.
  • هيروهيتو (1901)، إمبراطور اليابان.
  • بيتر دايموند (1940)، اقتصادي أمريكي حائز على جائزة نوبل.
  • ميشيل فايفر (1958)، ممثلة أمريكية.
  • أندريه أغاسي (1970)، لاعب كرة مضرب أمريكي.
مشاركة المقال:

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