/* ====================== 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']); } Information pour toute l'Ă©quipe d'administration - 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 !

Information pour toute l’Ă©quipe d’administration

  • Ce sujet contient 8 réponses, 4 participants et a Ă©tĂ© mis Ă  jour pour la derniĂšre fois par Avatar photoSybilla, le 27-08-2024 00:05.
  • Créateur
    Sujet
  • #2714198
    Mascotte d'Oasis
    Avatar photojugurtha
    Membre Oasis
      • Sujet: 1188
      • RĂ©ponses: 5414

      Depuis longtemps, je constate qu’il y a des poĂštes ou des adhĂ©rents du site qui viennent chaque jour commenter une panoplie de poĂšmes , faisant redescendre nos Ă©crits ( particuliĂšrement moi et quelques autres).
      Qu’ils commentent c’est trĂšs bien mais qu’ils Ă©crivent aussi et comme ça ,ce sera lĂ©gitime.
      Je vous Ă©cris en toute honnĂȘtetĂ© pour se pencher sur cette situation que je trouve xĂ©nophobie, raciste ,et INIQUE

      Je vous remercie

      Je ne parle pas des modérateurs.

      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

    Vous lisez 7 fils de discussion
    • Auteur
      Réponses
      • #3528865
        Mascotte d'Oasis
        Avatar photoISABELLE59
        Membre Oasis
          • Sujet: 8036
          • RĂ©ponses: 36626

          j’espĂšre que ton message sera lu et entendu, poĂšte Salah…

        • #3529202
          Mascotte d'Oasis
          Avatar photojugurtha
          Membre Oasis
            • Sujet: 1188
            • RĂ©ponses: 5414

            Il est de respect pour remercier de votre commentaire..
            Mon message n’est pas une dolĂ©ance mais juste une remarque qui va dans le bon sens.

            Merci poétesse Isabelle

            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

          • #3530281
            Mascotte d'Oasis
            Avatar photojugurtha
            Membre Oasis
              • Sujet: 1188
              • RĂ©ponses: 5414

              Bonjour chÚre poétesse Sphyria
              Je vous remercie pour votre sentiment sympathique sur mon post
              Je sais que ma doléance intellectuelle est entendue

              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

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

                Bonjour Cher Ami Salah,

                Que dire ?
                Que faire ?

                La modération envoie réguliÚrement des messages privés pour inciter les poÚtes à faire des commentaires.

                Il est difficile de leur dire d’Ă©crire…
                Peut-ĂȘtre un manque d’inspiration…? Et puis, en cette pĂ©riode estivale, beaucoup en profitent pour sortir se promener.

                Aurais-tu une suggestion Ă  nous faire ?

                Belle journée Cher Ami poÚte Salah !
                Toutes mes amitiés
                Gros bisous amicaux
                Sybilla

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

                  Bonsoir Cher Ami Daniel,

                  Marie et moi avons répondu à Salah.

                  Comment obliger des personnes Ă  Ă©crire si elles ne le dĂ©sirent pas…?

                  Si Salah ou toi ou d’autres mascottes avez une suggestion Ă  faire, nous sommes Ă  votre Ă©coute.

                  Ce n’est dĂ©jĂ  pas Ă©vident d’inciter certaines personnes Ă  commenter.
                  Alors pour Ă©crire…

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

                  Le r?ve est le poumon de ma vie (Citation de Sybilla)
                • #3530405
                  Mascotte d'Oasis
                  Avatar phototerry
                  Membre Oasis
                    • Sujet: 2010
                    • RĂ©ponses: 13996

                    bonjour Ami trĂšs cher Jugurtha
                    je ne comprends pas trĂšs bien cette remarque!
                    pour ma part
                    j ‘ Ă©cris
                    je commente ceux qui ont eu la gentillese de me lire
                    dont vous mĂȘme que j ‘ apprĂ©cie
                    puis d’autres poĂštes font autant
                    donc chaque poĂšme descend
                    ainsi !
                    pourquoi parler de racisme ?
                    je n’en vois aucun
                    je réponds à mes frÚres Musulmans quelqu »ils soient
                    du reste leurs poĂšmes sont extras !

                    d ‘autres poĂštes par contre ignorent………dans ce cas Alors point de retour !
                    expliuez – ce que vous feriez ?

                    merciAmi Jugurtha
                    chaque question
                    appelle mure réflexion

                    on ne peut pas
                    Ă©tre[ toujours au haut de l ‘ affiche
                    sauf lors des nominations !

                    merci mon Ami, j ‘essaie de comprendree
                    Terry

                  • #3530445
                    Mascotte d'Oasis
                    Avatar photojugurtha
                    Membre Oasis
                      • Sujet: 1188
                      • RĂ©ponses: 5414

                      ChÚre Amie poétesse Terry

                      Je sais que vous ĂȘtes sincĂšre dans chacun de vos mots
                      NĂ©anmoins j’invective ceux qui ne publient pas oĂč rarement et qui viennent commenter une frange bien spĂ©cifique portant atteinte Ă  nos Ă©crits

                      Et si j’ai Ă©voquĂ© racisme ou xĂ©nophobie, ça ne concerne que le domaine littĂ©raire.. quant Ă  la vie de tous les jours, chacun est libre de sa boussole.
                      Merci Ă  vous

                      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

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

                        Bonsoir Chers Amis,

                        Nous en parlerons sur la modération pour étudier la question !

                        Douce nuit et gros bisous Ă  vous tous

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