/* ====================== REPLIES + CONTENT (OPTIMISÉ) ====================== */ private function migrateReplies(){ global $wpdb; // đŸ”č dernier topic WP traitĂ© $last_topic_wp = (int) $this->getLast_Topic(); // ====================== // STEP 1 : batch topics WP // ====================== $topic_rows = $wpdb->get_results($wpdb->prepare(" SELECT p.ID AS wp_topic_id, pm.meta_value AS xoops_topic_id FROM {$wpdb->posts} p JOIN {$wpdb->postmeta} pm ON pm.post_id = p.ID AND pm.meta_key = 'bbex_topic_id' WHERE p.post_type = 'topic' AND p.ID > %d ORDER BY p.ID ASC LIMIT 2000 ", $last_topic_wp)); if(!$topic_rows){ $this->log('🏁 REPLIES DONE → plus aucun topic WP Ă  traiter'); update_option('bbex_replies_done', 1, false); return; } // ====================== // BUILD MAP // ====================== $topic_map = []; $xoops_topic_ids = []; foreach($topic_rows as $t){ $topic_map[(int)$t->xoops_topic_id] = (int)$t->wp_topic_id; $xoops_topic_ids[] = (int)$t->xoops_topic_id; } $ids_sql = implode(',', $xoops_topic_ids); $this->log("🔄 REPLIES BATCH START"); $this->log("WP topics batch: " . count($topic_rows)); $this->log("XOOPS topics batch: " . count($xoops_topic_ids)); $this->log("XOOPS range: " . (min($xoops_topic_ids) ?? 0) . " → " . (max($xoops_topic_ids) ?? 0)); // ====================== // STEP 2 : GET POSTS // ====================== $posts = $wpdb->get_results(" SELECT p.post_id, p.topic_id AS xoops_topic_id, p.uid, p.pid, p.post_time, pt.post_text FROM {$this->getTable('posts')} p JOIN {$this->getTable('posts_text')} pt ON pt.post_id = p.post_id WHERE p.topic_id IN ($ids_sql) ORDER BY p.post_id ASC "); if(!$posts){ $max_wp_topic = max(array_column($topic_rows, 'wp_topic_id')); $this->setLast_Topic($max_wp_topic); $this->log("⚠ Aucun post trouvĂ©"); $this->log("âžĄïž Skip batch → last_topic_wp=$max_wp_topic"); return; } // ====================== // STATS // ====================== $inserted = 0; $skipped = 0; $updated = 0; $total = count($posts); $i = 0; // ====================== // PROCESS // ====================== foreach($posts as $p){ $i++; // đŸ”č progression % if($i % 200 === 0 || $i === $total){ $pct = round(($i / $total) * 100, 2); $this->log("⏳ Progress replies: $i/$total ($pct%) | inserted=$inserted skipped=$skipped updated=$updated"); } // user check if(empty($this->user_map[$p->uid])){ $skipped++; continue; } $wp_tid = $topic_map[(int)$p->xoops_topic_id] ?? 0; if(!$wp_tid){ $skipped++; continue; } // ====================== // MAIN TOPIC POST → CONTENT // ====================== if($p->pid == 0){ $wpdb->query($wpdb->prepare(" UPDATE {$wpdb->posts} SET post_content = IF(post_content = '', %s, post_content) WHERE ID = %d ", $p->post_text, $wp_tid)); $updated++; continue; } // ====================== // ANTI DOUBLON (IMPORTANT FIX) // ====================== $exists = $wpdb->get_var($wpdb->prepare(" SELECT 1 FROM bbex_post_lookup WHERE xoops_post_id = %d AND type = 'reply' LIMIT 1 ", $p->post_id)); if($exists){ $skipped++; continue; } // ====================== // INSERT REPLY // ====================== $wpdb->insert($wpdb->posts, [ 'post_author' => $this->user_map[$p->uid], 'post_date' => date('Y-m-d H:i:s', $p->post_time), 'post_content' => $p->post_text, 'post_status' => 'publish', 'post_type' => 'reply', 'post_parent' => $wp_tid ]); $rid = (int) $wpdb->insert_id; if(!$rid){ $skipped++; continue; } $inserted++; // meta topic $wpdb->insert($wpdb->postmeta,[ 'post_id' => $rid, 'meta_key' => '_bbp_topic_id', 'meta_value' => $wp_tid ]); // forum $forum_id = $wpdb->get_var($wpdb->prepare(" SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d ", $wp_tid)); if($forum_id){ $wpdb->insert($wpdb->postmeta,[ 'post_id' => $rid, 'meta_key' => '_bbp_forum_id', 'meta_value' => $forum_id ]); } // lookup $wpdb->query($wpdb->prepare(" INSERT INTO bbex_post_lookup (xoops_post_id, wp_post_id, type) VALUES (%d, %d, 'reply') ON DUPLICATE KEY UPDATE wp_post_id = wp_post_id ", $p->post_id, $rid)); } // ====================== // SAVE PROGRESSION // ====================== $max_wp_topic = max(array_column($topic_rows, 'wp_topic_id')); $this->setLast_Topic($max_wp_topic); // ====================== // FINAL LOG // ====================== $this->log("===================================="); $this->log("🏁 REPLIES BATCH FINISHED"); $this->log("📊 total=$total | inserted=$inserted | updated=$updated | skipped=$skipped"); $this->log("âžĄïž last_topic_wp=$max_wp_topic"); $this->log("===================================="); } add_action('init', function(){ if(!isset($_GET['bbex_batch_sans_mirror'])) return; if($_GET['bbex_batch_sans_mirror'] !== 'run') return; if(!isset($_GET['key']) || $_GET['key'] !== 'oasis-cron'){ die('clĂ© invalide'); } $migration = new BBExBatchMigration(); $migration->setSource('live'); $migration->run(); echo "Batch LIVE exĂ©cutĂ©"; exit; });private function migrateReplies(){ global $wpdb; // đŸ”č dernier topic WP traitĂ© pour les replies $last_topic_wp = (int) $this->getLast_Topic(); // STEP 1 : batch topics WP $topic_rows = $wpdb->get_results($wpdb->prepare(" SELECT p.ID AS wp_topic_id, pm.meta_value AS xoops_topic_id FROM {$wpdb->posts} p JOIN {$wpdb->postmeta} pm ON pm.post_id = p.ID AND pm.meta_key = 'bbex_topic_id' WHERE p.post_type = 'topic' AND p.ID > %d ORDER BY p.ID ASC LIMIT 2000 ", $last_topic_wp)); if(!$topic_rows){ $this->log('🏁 REPLIES DONE → plus aucun topic WP Ă  traiter'); update_option('bbex_replies_done', 1, false); return; } // BUILD MAP $topic_map = []; $xoops_topic_ids = []; foreach($topic_rows as $t){ $topic_map[(int)$t->xoops_topic_id] = (int)$t->wp_topic_id; $xoops_topic_ids[] = (int)$t->xoops_topic_id; } $ids_sql = implode(',', $xoops_topic_ids); $this->log("🔄 REPLIES BATCH START"); $this->log("WP topics batch: " . count($topic_rows)); $this->log("XOOPS topics batch: " . count($xoops_topic_ids)); $this->log("XOOPS range: " . (min($xoops_topic_ids) ?? 0) . " → " . (max($xoops_topic_ids) ?? 0)); // STEP 2 : GET POSTS (LIVE XOOPSEOL) $posts = $wpdb->get_results(" SELECT p.post_id, p.topic_id AS xoops_topic_id, p.uid, p.pid, p.post_time, pt.post_text FROM {$this->getTable('posts')} p JOIN {$this->getTable('posts_text')} pt ON pt.post_id = p.post_id WHERE p.topic_id IN ($ids_sql) ORDER BY p.post_id ASC "); if(!$posts){ $max_wp_topic = max(array_column($topic_rows, 'wp_topic_id')); $this->setLast_Topic($max_wp_topic); $this->log("⚠ Aucun post trouvĂ©"); $this->log("âžĄïž Skip batch → last_topic_wp=$max_wp_topic"); return; } $inserted = 0; $skipped = 0; $updated = 0; $total = count($posts); $i = 0; foreach($posts as $p){ $i++; if($i % 200 === 0 || $i === $total){ $pct = round(($i / $total) * 100, 2); $this->log("⏳ Progress replies: $i/$total ($pct%) | inserted=$inserted skipped=$skipped updated=$updated"); } // user check if(empty($this->user_map[$p->uid])){ $skipped++; continue; } $wp_tid = $topic_map[(int)$p->xoops_topic_id] ?? 0; if(!$wp_tid){ $skipped++; continue; } // MAIN TOPIC POST → CONTENT if($p->pid == 0){ $wpdb->query($wpdb->prepare(" UPDATE {$wpdb->posts} SET post_content = IF(post_content = '', %s, post_content) WHERE ID = %d ", $p->post_text, $wp_tid)); $updated++; continue; } // ANTI DOUBLON $exists = $wpdb->get_var($wpdb->prepare(" SELECT 1 FROM bbex_post_lookup WHERE xoops_post_id = %d AND type = 'reply' LIMIT 1 ", $p->post_id)); if($exists){ $skipped++; continue; } // INSERT REPLY $wpdb->insert($wpdb->posts, [ 'post_author' => $this->user_map[$p->uid], 'post_date' => date('Y-m-d H:i:s', $p->post_time), 'post_content' => $p->post_text, 'post_status' => 'publish', 'post_type' => 'reply', 'post_parent' => $wp_tid ]); $rid = (int) $wpdb->insert_id; if(!$rid){ $skipped++; continue; } $inserted++; // meta topic $wpdb->insert($wpdb->postmeta,[ 'post_id' => $rid, 'meta_key' => '_bbp_topic_id', 'meta_value' => $wp_tid ]); // forum $forum_id = $wpdb->get_var($wpdb->prepare(" SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d ", $wp_tid)); if($forum_id){ $wpdb->insert($wpdb->postmeta,[ 'post_id' => $rid, 'meta_key' => '_bbp_forum_id', 'meta_value' => $forum_id ]); } // lookup $wpdb->query($wpdb->prepare(" INSERT INTO bbex_post_lookup (xoops_post_id, wp_post_id, type) VALUES (%d, %d, 'reply') ON DUPLICATE KEY UPDATE wp_post_id = wp_post_id ", $p->post_id, $rid)); } $max_wp_topic = max(array_column($topic_rows, 'wp_topic_id')); $this->setLast_Topic($max_wp_topic); $this->log("===================================="); $this->log("🏁 REPLIES BATCH FINISHED"); $this->log("📊 total=$total | inserted=$inserted | updated=$updated | skipped=$skipped"); $this->log("âžĄïž last_topic_wp=$max_wp_topic"); $this->log("===================================="); } if(isset($_GET['source'])){ $migration->setSource($_GET['source']); } La plume et l’enfant - Oasis des Artistes. Le plus beau site de poĂ©sie

Oasis des Artistes. Le plus beau site de poésie

Oasis des artistes: PoĂ©sie en ligne, Concours de poĂšmes en ligne – membres !

La plume et l’enfant

  • Ce sujet contient 11 réponses, 9 participants et a Ă©tĂ© mis Ă  jour pour la derniĂšre fois par Avatar photoAncielo, le 01-06-2023 08:58.
  • Créateur
    Sujet
  • #2700126
    Plume d'or
    ★★★★☆☆
    Avatar photoalexcris16
      • Sujet: 246
      • RĂ©ponses: 704

      La plume et l’enfant

      Il était une fois, une plume magique,
      Que dame nature m’offrit, pour Ă©crire ma musique,
      Faire danser les prairies, et faire chanter le vent,
      Pour apaiser mon cƓur à l’aube de mes dix ans.

      A l’aube de mes dix ans, c’était une plume blanche,
      Qui racontait l’histoire, les douceurs des dimanches,
      Qui distillait l’espoir, et l’amour à tout va,
      Avant que la tempĂȘte, en noir la colora.

      La noirceur de sa pointe, s’enivrait de mes peines,
      Et son sang jaillissait, comme il coule dans mes veines,
      Je lui donnais accÚs, à mon réseau sous-terrain,
      On ne faisait plus qu’un, la plume et mon chagrin.

      C’est alors que naquit, une fĂ©e ingĂ©nue,
      Redonna Ă  ma plume, une candeur absolue,
      Fit s’envoler la brume, en l’entourant toujours,
      De ses mains salvatrices, et de son cƓur-amour.

      Elle a trouvé sa plume, elle fait chanter les mots,
      Elle a su reproduire, l’éloquent Cyrano,
      Quand je la vois conduire, ses histoires Ă  douze ans,
      Je suis fier à présent, de la plume de mon enfant.

      Alexandre

    Vous lisez 10 fils de discussion
    • Auteur
      Réponses
      • #3433067
        Administratrice
        Avatar photoSybilla
        Maßtre des clés
          • Sujet: 17798
          • RĂ©ponses: 198089

          Bonsoir Alexandre,

          La plume et l’enfant, ton enfant Ă  qui tu rends un merveilleux hommage !

          C’est une magnifique poĂ©sie en partage oĂč l’on ressent ta fiertĂ© pour lui et toute ta tendresse paternelle !

          J’ai adorĂ© te lire !

          Belle soirée cher ami poÚte Alexandre !
          Toutes mes amitiés
          Sybilla

          Le r?ve est le poumon de ma vie (Citation de Sybilla)
        • #3433088
          Mascotte d'Oasis
          Avatar photoAncielo
          Membre Oasis
            • Sujet: 2541
            • RĂ©ponses: 20308

            Un fort touchant poĂšme que j’ai apprĂ©ciĂ© lire.

          • #3433091
            Plume de platine
            ★★★★★☆
            Avatar photoalaplume
            Membre Oasis
              • Sujet: 469
              • RĂ©ponses: 6576

              Beaucoup de belles tournures, sans les Ă©numĂ©rer mais ma prĂ©fĂ©rĂ©e reste  » la noirceur de sa pointe s’enivrait de mes peines, et son sang jaillissait comme il coule en mes veines… »
              Une Ă©criture fluide, lui donnant la sincĂ©ritĂ©, j’aime beaucoup.

              c'est toujours quand il est parti qu'on se rend compte que le bonheur ?tait l?!
            • #3433096
              Plume de diamant
              ★★★★★★
              Avatar photoSympatique
              Membre Oasis
                • Sujet: 1846
                • RĂ©ponses: 29792

                oui on le ressent

              • #3433102
                Mascotte d'Oasis
                Avatar photoISABELLE59
                Membre Oasis
                  • Sujet: 8036
                  • RĂ©ponses: 36626

                  ĂȘtre fier ….de la plume de son enfant…
                  j’aime vraiment beaucoup de poĂšme d’amour parental…

                • #3433137
                  Plume d'or
                  ★★★★☆☆
                  Avatar photoalexcris16
                    • Sujet: 246
                    • RĂ©ponses: 704

                    Merci infiniment Ă  vous tous..ce texte sorti du cƓur m a Ă©tĂ© dicte par l amour que j ai pour l Ă©criture et ma fille qui prend le mĂȘme chemin

                  • #3433153
                    Plume de diamant
                    ★★★★★★
                    Avatar photocyrael
                    Membre Oasis
                      • Sujet: 14564
                      • RĂ©ponses: 136022

                      bonjour comment ne pas etre touché

                      par la plume de votre petite fille

                      elle laisse s’exprimer son coeur, son papa est heureux

                      bravo

                      c ‘est

                      mon coup de coeur du matin

                      l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
                    • #3433203
                      Plume de diamant
                      ★★★★★★
                      Avatar photopoetal
                      Membre Oasis
                        • Sujet: 7608
                        • RĂ©ponses: 17193

                        un joyau poétique

                        [email]domi.gondrand@laposte.net[/email]
                      • #3433372
                        Plume d'or
                        ★★★★☆☆
                        Avatar photoalexcris16
                          • Sujet: 246
                          • RĂ©ponses: 704

                          Je suis trĂšs touchĂ© et Ă©mu d’avoir touchĂ© et Ă©mu toutes ces belles personnes qui ont Ă©lu mon texte coup de coeur.

                          Merci infiniment Ă  vous tous pour vos beaux commentaires….

                          TrĂšs bon week end Ă  tous…

                          Alexandre

                        • #3438659
                          Plume de diamant
                          ★★★★★★
                          Avatar photoEvilFranck
                          Membre Oasis
                            • Sujet: 903
                            • RĂ©ponses: 126340

                            Bonsoir alexcris16, superbe poĂšme

                            Amicalement

                            La po?sie, c'est comme la cuisine, le mot faitout 00063312-1
                          • #3438663
                            Mascotte d'Oasis
                            Avatar photoAncielo
                            Membre Oasis
                              • Sujet: 2541
                              • RĂ©ponses: 20308

                              Un sublime poĂšme.

                          Vous lisez 10 fils de discussion
                          • Vous devez être connecté pour répondre à ce sujet.