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

جورج جبور يكتب عن زيارته الأولى لاتحاد الكتاب العرب في عهده الجديد ودعوة لتقييم تجربة البعث

جورج جبور يكتب عن زيارته الأولى لاتحاد الكتاب العرب في عهده الجديد ودعوة لتقييم تجربة البعث

أ. د. جورج جبور

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

يوم أمس الأحد 27 نيسان، قررت أن الوقت قد حان للتعرف على وجوه القيادة الجديدة.

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

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

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

إنها لسانحة إذن في أول لقاء لي مع القيادة الجديدة، وأمام مسؤول فيها، ها هي الإعداد القديمة من الموقف الأدبي. إذن، فلأبحث بنفسي فيها عن المقال.

قبل التوقف مع مجلة الموقف الأدبي، أو بعده، لا أذكر بالضبط، سألت مضيفي أن يحدثني عن نفسه.

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

يفتخر محمد منصور بأنه تتلمذ على العلامة غسان المالح. كيف يمكن له ألا يكون منفتحا على العالم، على ثقافة العالم؟

ازداد ارتياحي في مجلس المسؤول الجديد.

ثم ما لبث أن وضع بين يدي ورقة أنيقة. هي دعوة إلى كتابة مادة لمجلة الموقف الأدبي في عدد خاص عن تجربة البعث خلال ثمانية عقود.

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

تقييم تجربة البعث.

ولم لا؟ من الجهة الأجدر من الاتحاد للقيام بعملية التعرف على الذاكرة السورية وعلى التعريف بها.

ما تنوي القيام به يا أ. محمد عمل كبير بل جليل. حاذر من المطبات. هذا ما لم أقله له. ما لم أقله له بعد.

في وقت لاحق بعثت إليه بالرسالة التالية:

أحييك أ. محمد وأشكرك على حفاوة الاستقبال.

يتجه تفكيري إلى كتابة نص عن مشروعي مؤسستين فكريتين كانتا موضع ترحيب لكنهما لم تنجزا. ثم أكمل بالصعوبات التي واجهتني من "مفكري" الحزب لدى محاولتي نشر رسالتي للدكتوراه عن سورية.

هل لديك اطلاع على ملف أصدرته مجلة الآداب اللبنانية عن الرقابة في سورية؟

مودتي وتقديري. جورج جبور.

فكانت منه الإجابة التالية:

إذا دكتور. سيكون نصك في باب الشهادات الشخصية. وهو الأجمل في العدد كما أتصور لأنه ينتقد ثقافة البعث عبر سرد التجارب. أتمنى عليك في هذه الحال أن يكون النص مكثفا وأن يخلو من المقدمة بحيث يأخذ شكل الشهادة عن التجربة الشخصية.

أعود إلى واقعة الزيارة الأولى. وافاني د. عبد الله شاهر إلى مكتب أ. منصور. وضع المضيف بين يديه الدعوة ذاتها التي وضعها بين يدي. غادرت وصديقي مبنى الاتحاد وهو يقول لي: ما أكثر المرات التي قلت فيها للمسؤولين: "علينا تقييم مسيرة البعث!"

… وفاتني ذكر أنني لم أشأ مغادرة جناح القيادة في الاتحاد دون لقاء د. الحوراني في مكتبه الجديد، لأحييه على الواقف قبل أن أغادر الطابق مختتما الزيارة الأولى إلى الاتحاد في عهد القيادة الجديدة.

ملاحظة ختامية. كتبت النص إعلاه بروح أدبية، وسأوزعه بتلك الروح. يعني ذلك عمليا أنني لن أسأل من ورد ذكرهم في النص أن يجيزوه أو ينقحوه. باختصار: لم أحترم خصوصية حديث ثنائي. ولكل من يشاء الاعتراض.

الكاتب: عضو الاتحاد بين 1971 و 1996, المتقاعد فيه منذئذ وإلى أن يشاء الله.

صباح الاثنين. 28 نيسان 2025.

(موقع أخبار سوريا الوطن-١)

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

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