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

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

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

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

من المظاهرات إلى العمل المسلح

وفي حديث خاص إلى منصة “سوريا 24″، يستذكر عامر الفج، شقيق الشهيد أحمد الفج، بدايات الحراك الثوري في المدينة، وأكد أن أبناء الأتارب خرجوا منذ الأيام الأولى للمطالبة بالحرية والكرامة، لكنهم واجهوا قمعًا عنيفًا من أجهزة النظام، مما دفع الحراك إلى التحول التدريجي نحو العمل المسلح. وأوضح الفج أن لحظة انشقاق الشهيد أحمد الفج ورفاقه خلال مظاهرة حاشدة في 12 شباط 2012، شكلت نقطة تحول بارزة في مسيرة المدينة الثورية. وأشار إلى أن المقاومة في بداياتها كانت بدائية للغاية، حيث تصدى الأهالي للأرتال الأمنية بالحجارة والمولوتوف، ما أسفر عن سقوط شهداء، أبرزهم عبد الله الفج. وأضاف أن قوات النظام اقتحمت الأتارب لاحقًا، وارتكبت عمليات قمع ممنهجة، قبل أن ينجح شباب المدينة في تنظيم معركة تحرير كبرى، قادها الشهيد النقيب مصطفى عبد الرزاق، الذي ارتقى خلال المواجهات المباشرة.

قصف ممنهج ونزوح قاسٍ

وأشار عامر الفج، خلال حديثه إلى “سوريا 24″، إلى أن الأتارب بعد التحرير دخلت في مرحلة جديدة من المعاناة نتيجة القصف اليومي العنيف، خصوصًا من الفوج 46، ما تسبب بمجازر مروعة، أبرزها مجزرة سوق المدينة.

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

مقاومة حرفت مسار الثورة

من جانبه، أشار الناشط محمد شاكردي، في حديثه لمنصة “سوريا 24″، إلى أن شباب الأتارب لعبوا دورًا كبيرًا في حماية الثورة من محاولات التشويه والانحراف، ووقفوا سدًا منيعًا ضد كل المشاريع الإيدلوجية. وأوضح شاكردي أن حملة “لا لتهميش الأتارب” التي نظمها ناشطون قبل سقوط النظام بأسابيع، جاءت لتسليط الضوء على أهمية المدينة الثورية ودورها السياسي والاجتماعي. وأكد أن الأتارب كانت الشرارة الأولى لمقاومة تنظيم داعش في ريف حلب الغربي، حيث شن الأهالي عملية عسكرية شعبية انتهت بتحرير المدينة خلال 24 ساعة، واستمرت المعارك لمدة شهرين حتى طُرد التنظيم من كامل القرى المحيطة. وأضاف أن مقاومة التنظيم تمت رغم استخدامه المفخخات والانتحاريين، ما يؤكد صمود الأهالي وإصرارهم على حماية مدينتهم وهويتهم الثورية.

تراجع الواقع الخدمي والمطالب الملحة

وحول الواقع الاقتصادي، دعا عبد القادر أحمد، أحد وجهاء المدينة، في تصريح لـ”سوريا 24″، إلى ضرورة دعم الأتارب اقتصاديًا وإعادة تنشيط مؤسساتها الحكومية. وأشار إلى أن المدينة كانت قبل الثورة بوابة حلب الاقتصادية ومركزًا نابضًا بالتجارة، لكنها اليوم تعاني من تراجع شديد رغم بعض التحسن المحدود في المنطقة الصناعية ووسط السوق.

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

الواقع الخدمي ومطالب المجلس المحلي

وفي السياق ذاته، تحدث وائل الحاج بكور، رئيس مجلس مدينة الأتارب، إلى منصة “سوريا 24″، مؤكدًا أن الواقع الخدمي مقبول إلى جيد، لكن التحديات لا تزال كبيرة. وأشار إلى أن الكهرباء متوفرة بشكل جيد، بينما تغطي المياه حوالي 60% من حاجة السكان، مع الحاجة إلى دعم كلف التشغيل ومنظومات الطاقة الشمسية لتخفيف الأعباء على الأهالي. وأوضح الحاج بكور أن البنية التحتية تعاني، إذ يحتاج الصرف الصحي إلى صيانة عاجلة، فيما الطرق بحاجة إلى إعادة تزفيت وتركيب بلاط انترلوك. كما لفت إلى وجود فرن واحد فقط يعمل حاليًا، بينما لا يزال الفرن الآخر خارج الخدمة منذ قصفه عام 2013.

وبيّن أن القطاع التعليمي في المدينة جيد نسبيًا، مع وجود مدرستين رئيسيتين (الشمالية والجنوبية) بحاجة إلى ترميم. وكشف أن عدد سكان الأتارب حاليًا يقارب 97 ألف نسمة، منهم 32 ألف نازح، مشيرًا إلى ضغط متزايد على الإيجارات بسبب عودة العديد من النازحين إلى المدينة.

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

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

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