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

البابا فرنسيس: السلام مع الإسلام والإصلاحات الداخلية أبرز إرثه

نبالغ نحن، عرباً ومسلمين، في اكتشاف الإيجابيات وتقديرها، كما في النعي على السلبيات. والإيجابي الذي نتحدث عنه هنا تصريحات لعربٍ ومسلمين بعد وفاة البابا فرنسيس أنّ السلام مع الإسلام كان أولويته العظمى! وكما أعرف من خلال المتابعة الحثيثة منذ عام 2015 أنّ أولوية الكاردينال الأرجنتيني الذي تسنّم سدة البابوية عام 2013 على أثر استقالة سلفه بنديكتوس، كانت الإصلاح الداخلي في الكنيسة. وربما كان تركيزه الثاني على العلائق بالفئات المهمشة في العالم. ولا شكّ أنّ اهتمامه بالإسلام جاء بالمنزلة الثالثة في نشاطاته المتكاثرة إبّان بابويته وربما قبل ذلك.

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

لقد أطلتُ الاستطراد لأنّ البابا فرنسيس واعتبر السلام العالمي والسلام مع المسلمين بين أولوياته. واعتبر سيرة الأسيزي قدوةً له في حرصه على زيارة ديار الإسلام وطلبه للسلام. في خطبته الأولى بعد الانتخاب قال البابا فرنسيس إنّ السلام العالمي تحوط به أخطار كثيرة وكبيرة، ولا بد من صونه بكل سبيل؛ لأن الحرب شقاء ومعاناة وقتل للإنسان وتدمير للعمران، ولا بد من الالتفات إلى الشقاء بالحروب في ديار الإسلام، فلا سلام في العالم إلا بالسلام مع الإسلام والمسلمين. وتكررت نداءاته للسلام العالمي والسلام مع الإسلام في خطاباته السنوية. وقد زار خلال بابويته سبعة بلدان عربية وإسلامية. وفي كل رحلة كانت هناك الإشادة بالحوار وبالتعاون ومبادرات تقتضيها الرحمة الإلهية التي يقول بها المسيحيون والمسلمون باعتبارها مناط علاقة الله عز وجل ببني البشر. بيد أنّ ذروة رحلاته ومبادراته في نطاق الصداقة والتضامن والزمالة الدينية كانت في زيارته لأبوظبي وإعلانه عن وثيقة الأخوة الإنسانية مع شيخ الأزهر أحمد الطيب في 4 فبراير (شباط) 2019.

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

ذكر لنا يوأنّس الكاهن المصري الأصل الذي كان وقت توقيع الوثيقة سكرتيراً للبابا فرنسيس أنّ الوثيقة اقتضت شجاعةً ونزاهةً من الطرفين. ومما له دلالته أن يكون مبدأ الأخوة (الذي يعتنقه المسلمون) هو عنوان الوثيقة وخاتمتها.

في رسائل البابا فرنسيس السنوية ظل يعود لوثيقة الأخوة ذكراً واقتباساً، ويقرن ذلك بقيم الجوار والضيافة التي ينبغي أن تسود في العلاقة بالمهاجرين. وعندما زار مخيمات لاجئي الروهينغا في بنغلادش على الحدود مع ميانمار التي فروا منها؛ قال إنّ إنكار الأخوة بين البشر هو تنكرٌ لإنسانية الإنسان!

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

كان البابا فرنسيس – بحسب شيخ الأزهر والملك المغربي – هو رجل الدين المسيحي الأكثر حساسيةً تجاه آلام المسلمين ومشكلاتهم منذ مجمع الفاتيكان الثاني. والأمل أن تبقى مواريثه في الكنيسة العريقة.

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

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