s. * @param array $blocks The blocks array to add to. * @param array, content: string}> $code_blocks The code blocks array to add to. * * @return void */ private function process_content( $element, &$blocks, $code_blocks ): void { // Build a list of elements that should be skipped (already in code blocks). $skip_elements = $this->content_processor->determine_elements_to_skip( $code_blocks ); // PHASE 1: First pass to identify nested list groups and track positions. $nested_list_data = $this->nested_list_creator->process_nested_lists( $element ); $list_groups = $nested_list_data['list_groups']; $nodes_to_skip = $nested_list_data['nodes_to_skip']; // Determine Google Document TOC nodes to be skipped and considered as paragraph elements. $toc_sections = $this->content_processor->get_toc_nodes( $element ); // Combine the TOC nodes into the nodes to skip. foreach ( $toc_sections as $toc_section ) { $toc_nodes = \array_column( $toc_section, 'node' ); $nodes_to_skip = \array_merge( $nodes_to_skip, $toc_nodes ); } // PHASE 2: Process all content and create positioned blocks. // This array allows us to maintain correct ordering of mixed content types. $positioned_blocks = []; // Reset position counter for the main content processing pass. $current_position = 0; if ( $element->childNodes->length !== 0 ) { foreach ( $element->childNodes as $node ) { // Skip non-element nodes. if ( $node->nodeType !== \XML_ELEMENT_NODE ) { continue; } // Check if this is the position where a list group should be inserted. foreach ( $list_groups as $group_index => $group ) { if ( isset( $group['position'] ) && $group['position'] === $current_position ) { $positioned_blocks[] = [ 'content' => $this->nested_list_creator->create_nested_list_block( $group['lists'], $this->content_processor, $this->dom_processor ), 'position' => $current_position, ]; // Remove this group so we don't process it again. unset( $list_groups[ $group_index ] ); break; } } // Add the TOC block if it exists and is at the current position. foreach ( $toc_sections as $toc_section ) { // Only check if the first position of the section is encountered. if ( $toc_section[0]['position'] === $current_position ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_toc_block( $element ), 'position' => $current_position, ]; } } // Keep track of position for element nodes. ++$current_position; // Skip elements that are part of code blocks. if ( \in_array( $node, $skip_elements, true ) ) { // If this is the last element of a code block, add the code block. foreach ( $code_blocks as $code_block ) { $last_element = \end( $code_block['elements'] ); if ( $node === $last_element ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_code_block( $code_block['content'] ), 'position' => ( $current_position - 1 ), ]; break; } } continue; } // Skip nodes that will be processed as part of nested lists. if ( \in_array( $node, $nodes_to_skip, true ) ) { continue; } // Check for paragraphs with only an image. if ( $node->nodeName === 'p' ) { $spans = $node->getElementsByTagName( 'span' ); $processed = false; if ( $spans->length !== 0 ) { foreach ( $spans as $span ) { if ( $span->getElementsByTagName( 'img' )->length > 0 ) { $image_block = $this->content_processor->extract_image_from_paragraph( $node ); if ( $image_block !== '' ) { $positioned_blocks[] = [ 'content' => $image_block, 'position' => ( $current_position - 1 ), ]; $processed = true; break; } } } } // If already processed as an image block, continue. if ( $processed ) { continue; } // Check for bookmark paragraph structure - any paragraph with span + anchor with ID. $bookmark_block = $this->content_processor->create_bookmark_paragraph( $node ); if ( $bookmark_block !== '' ) { $positioned_blocks[] = [ 'content' => $bookmark_block, 'position' => ( $current_position - 1 ), ]; continue; } } // Process regular lists (ul or ol) that aren't part of a nested group. if ( ( $node->nodeName === 'ul' || $node->nodeName === 'ol' ) && ! \in_array( $node, $nodes_to_skip, true ) ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_list_block( $node, $this->dom_processor ), 'position' => ( $current_position - 1 ), ]; continue; } // Process table elements. if ( $node->nodeName === 'table' ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_table_block( $node, $this->dom_processor ), 'position' => ( $current_position - 1 ), ]; continue; } // Process horizontal line. if ( $node->nodeName === 'hr' ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_separator_block(), 'position' => ( $current_position - 1 ), ]; continue; } // Process links. if ( $node->nodeName === 'a' ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_paragraph_with_link( $node ), 'position' => ( $current_position - 1 ), ]; continue; } // Process headings. if ( \preg_match( '/h[1-6]/', $node->nodeName ) ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_heading_block( $node, $this->dom_processor ), 'position' => ( $current_position - 1 ), ]; continue; } // Process paragraphs that weren't already processed as image blocks. if ( $node->nodeName === 'p' && \trim( $node->textContent ) !== '' ) { $positioned_blocks[] = [ 'content' => $this->content_processor->create_paragraph_block( $node, $this->dom_processor ), 'position' => ( $current_position - 1 ), ]; continue; } } } // Add any remaining list groups that weren't processed in the main loop. foreach ( $list_groups as $group ) { $positioned_blocks[] = [ 'content' => $this->nested_list_creator->create_nested_list_block( $group['lists'], $this->content_processor, $this->dom_processor ), 'position' => $group['position'], ]; } /** * Sort all blocks by position to maintain the original document order. * This ensures elements appear in the same order as they did in the source HTML. * Which is essential for preserving content flow and semantic relationships. */ \usort( $positioned_blocks, static function ( $a, $b ) { return ( $a['position'] - $b['position'] ); }, ); if ( ! empty( $positioned_blocks ) ) { // Finally, add all blocks to the output array in correct sequence. foreach ( $positioned_blocks as $block ) { // Revert escaped script tags. if ( \strpos( $block['content'], '[encoded_script_open]' ) !== false ) { $block['content'] = \str_replace( [ '[encoded_script_open]', '[encoded_script_close]' ], [ '<script>', '</script>' ], $block['content'], ); } $blocks[] = $block['content']; } } } }
Warning: Cannot modify header information - headers already sent by (output started at /htdocs/wp-content/plugins/wordpress-seo/src/llms-txt/infrastructure/file/wordpress-file-system-adapter.php:1) in /htdocs/wp-includes/feed-rss2.php on line 8
حافلات والونيا Archives - ArabVoice.be https://www.arabvoice.be/tag/حافلات-والونيا/ صوت العرب في بلجيكا Wed, 04 Feb 2026 21:30:26 +0000 ar hourly 1 https://www.arabvoice.be/wp-content/uploads/2025/08/ArabVoice-icon-512.jpg حافلات والونيا Archives - ArabVoice.be https://www.arabvoice.be/tag/حافلات-والونيا/ 32 32 248800160 إضراب واسع يربك النقل العمومي في بلجيكا بين 26 و30 يناير https://www.arabvoice.be/greve-transports-belgique-janvier/ https://www.arabvoice.be/greve-transports-belgique-janvier/#respond Sun, 25 Jan 2026 21:53:53 +0000 https://www.arabvoice.be/?p=7856 تشهد بلجيكا اضطرابات واسعة في النقل العمومي مع إضراب يشمل القطارات وحافلات TEC من 26 إلى 30 يناير. الخدمة ستكون جزئية عبر خطط بديلة، ما يفرض على المسافرين متابعة التحديثات اليومية قبل التنقل.

The post إضراب واسع يربك النقل العمومي في بلجيكا بين 26 و30 يناير appeared first on ArabVoice.be.

]]>
تستعد بلجيكا لأسبوع صعب على مستوى التنقل، مع انطلاق إضراب واسع في قطاع النقل العمومي يشمل السكك الحديدية وحافلات النقل في والونيا. الإضراب يبدأ مساء الأحد 25 يناير عند الساعة العاشرة ليلا. كما يستمر إلى غاية مساء الجمعة 30 يناير، ما ينذر باضطرابات متواصلة في حركة المسافرين داخل البلاد.

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

حركة القطارات تحت الضغط

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

يوم الاثنين، من المنتظر أن تعمل ثلاثة قطارات IC من أصل أربعة بين المدن الكبرى. إلى جانب ذلك سيتم تشغيل حوالي ثلثي القطارات المحلية من نوع L وS. في المقابل، ستتأثر قطارات الذروة بشكل أوضح. وسيتم تأمين عدد محدود فقط من الرحلات، وهو ما قد يربك تنقل العمال والطلبة.

أما الرحلات الطلابية مساء الأحد، خاصة نحو بروكسل، لوفان، غنت، لييج ولوفان-لا-نوف، فستُحافظ SNCB على جزء منها. يتم ذلك لتفادي شلل كامل في بداية الأسبوع.

تأثيرات تمتد إلى النقل الدولي

الاضطرابات لن تقتصر على الرحلات الداخلية. عدد من قطارات EuroCity نحو هولندا سيواصل السير لكن بوتيرة مخففة. في حين ينتظر أن تعمل قطارات ICE وOUIGO بشكل عادي. في المقابل، ألغيت بعض رحلات TGV INOUI بين بلجيكا ومدينة نانت. كما سيقتصر مسار قطار Nightjet على كولونيا خلال بعض أيام الإضراب.

خلفية اجتماعية متوترة

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

إضراب متزامن في شبكة TEC

في والونيا، أعلنت نقابات النقل العمومي عن إضراب يشمل كامل شبكة حافلات TEC من الاثنين إلى الجمعة. التحرك يأتي احتجاجا على إجراءات تقشفية مطروحة من طرف المشغل العمومي، تشمل مراجعة جداول العمل وبعض التعويضات الاجتماعية.

إدارة TEC أقرت بإمكانية تسجيل «اضطرابات قوية»، ودعت المسافرين إلى البحث عن حلول بديلة طيلة الأسبوع. جاء ذلك في انتظار ما ستؤول إليه المفاوضات الجارية مع النقابات.

وضع أقل توترا في بروكسل

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

The post إضراب واسع يربك النقل العمومي في بلجيكا بين 26 و30 يناير appeared first on ArabVoice.be.

]]>
https://www.arabvoice.be/greve-transports-belgique-janvier/feed/ 0 7856