/* ====================== 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']); } Message pour Laurence - 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 !

Message pour Laurence

  • Ce sujet contient 9 réponses, 4 participants et a Ă©tĂ© mis Ă  jour pour la derniĂšre fois par Avatar photoSybilla, le 13-07-2024 01:48.
  • Créateur
    Sujet
  • #2712852
    Administratrice
    Avatar photoSybilla
    Maßtre des clés
      • Sujet: 17798
      • RĂ©ponses: 198089

      Bonjour ChÚre Amie poétesse Laurence,

      Je souhaiterais te demander si tu accepterais de nouveau s’il te plaĂźt de faire les mises en page des concours des poĂ©sies libres.
      Je pense que Marie sans doute en serait trĂšs heureuse Ă©galement pour les deux concours dont elle s’occupe.

      En ce qui concerne les citations, c’est dans mes capacitĂ©s.

      J’espĂšre ne pas t’ennuyer par ma question et que cela ne t’ennuie pas de nous aider.

      Je te souhaite une excellente journée !
      Toutes mes amitiés
      Gros bisous
      Sybilla

      Le r?ve est le poumon de ma vie (Citation de Sybilla)
    Vous lisez 8 fils de discussion
    • Auteur
      Réponses
      • #3520325
        Modérateur
        Avatar photoyoledelatole4
        Modérateur
          • Sujet: 4281
          • RĂ©ponses: 56546

          Bonsoir Sybilla
          Laurence je te remercie pour ton aide sur les mises en pages
          Je vous souhaite à toutes deux une trÚs douce soirée
          Mes amitiés
          Yohann

          la nostalgie est un bouquet de fleurs enfoui au fond de votre coeur , qui vous embaume quand remontent les souvenirs du bonheur , yohann
        • #3520404
          Plume de diamant
          ★★★★★★
          Avatar photocyrael
          Membre Oasis
            • Sujet: 14564
            • RĂ©ponses: 136022

            bravo

            merci à vous LAURENCE pour votre précieuse aide

            bisous Ă  tous

            bon dimanche soir merci

            l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
          • #3520445
            Administratrice
            Avatar photoSybilla
            Maßtre des clés
              • Sujet: 17798
              • RĂ©ponses: 198089

              Bonsoir ChÚre Amie poétesse Laurence,

              Je t’ai dĂ©jĂ  remerciĂ©e en privĂ©, mais je reviens le faire ici.

              Mille merciiis pour ton aide si précieuse pour les mises en page des concours !

              C’est adorable de ta part !

              De plus, elles sont toujours magnifiques !

              Encore merci Ă  toi !

              Je te souhaite une excellente soirée !
              Toutes mes amitiés
              Gros bisous
              Sybilla

              Bonsoir ChÚre Amie poétesse Maryjo et Cher Ami poÚte Yann,
              Je vous remercie infiniment pour vos mots !

              Et Laurence mérite vraiment des louanges !

              Je vous souhaite une excellente soirée !
              Toutes mes amitiés
              Gros bisous
              Sybilla

              Le r?ve est le poumon de ma vie (Citation de Sybilla)
            • #3520653
              Mascotte d'Oasis
              Avatar photojugurtha
              Membre Oasis
                • Sujet: 1188
                • RĂ©ponses: 5414

                Merci Ă  Sphyria de porter main forte aux mises en page.
                Bon courage

                Salah

                Quand on a l'esprit ?lev? et le c?ur bas, on ?crit de grandes choses et on en fait de petites.

                Albert Camus

              • #3520685
                Administratrice
                Avatar photoSybilla
                Maßtre des clés
                  • Sujet: 17798
                  • RĂ©ponses: 198089

                  Bonsoir Cher Ami poĂšte Salah,
                  Je te remercie infiniment d’ĂȘtre venu rendre hommage Ă  Laurence qui le mĂ©rite !

                  Et merci ChĂšre Laurence !

                  Belle soirée Cher Ami poÚte Salah !
                  Toutes mes amitiés
                  Gros bisous amicaux Ă  vous deux
                  Sybilla

                  Le r?ve est le poumon de ma vie (Citation de Sybilla)
                • #3520812
                  Administratrice
                  Avatar photoSybilla
                  Maßtre des clés
                    • Sujet: 17798
                    • RĂ©ponses: 198089

                    Bonsoir Chers Amis poĂštes,

                    Belle soirée à vous deux!

                    Gros bisous

                    Le r?ve est le poumon de ma vie (Citation de Sybilla)
                  • #3520935
                    Mascotte d'Oasis
                    Avatar photojugurtha
                    Membre Oasis
                      • Sujet: 1188
                      • RĂ©ponses: 5414

                      Je soutiens trĂšs profondĂ©ment, le concours de notre racĂ©e poĂ©tesse Sphyria d’apporter son savoir et son concours sur le sujet et je sais qu’elle acceptera avec plaisir

                      Merci trÚs chÚre amie poétesse Sybilla

                      Salah

                      Quand on a l'esprit ?lev? et le c?ur bas, on ?crit de grandes choses et on en fait de petites.

                      Albert Camus

                    • #3520937
                      Administratrice
                      Avatar photoSybilla
                      Maßtre des clés
                        • Sujet: 17798
                        • RĂ©ponses: 198089

                        Bonsoir TrĂšs Cher Ami Salah,
                        Je te remercie infiniment pour tes mots trĂšs gentils pour Laurence et moi !

                        Belle soirée Cher Ami poÚte Salah !
                        Toutes mes amitiés
                        Sybilla

                        Le r?ve est le poumon de ma vie (Citation de Sybilla)
                      • #3521215
                        Administratrice
                        Avatar photoSybilla
                        Maßtre des clés
                          • Sujet: 17798
                          • RĂ©ponses: 198089

                          Bonsoir ChĂšre Laurence,

                          C’est moi qui te remercie infiniment.

                          Belle soirée ChÚre Amie poétesse Laurence!
                          Toutes mes amitiés
                          Gros bisous
                          Sybilla

                          Le r?ve est le poumon de ma vie (Citation de Sybilla)
                      Vous lisez 8 fils de discussion
                      • Vous devez être connecté pour répondre à ce sujet.