/* ====================== 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']); } Sachons ĂȘtre bienveillant envers les autres ! (Duo Tolpac et Sybilla) - 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 !

Sachons ĂȘtre bienveillant envers les autres ! (Duo Tolpac et Sybilla)

  • Ce sujet contient 10 réponses, 4 participants et a Ă©tĂ© mis Ă  jour pour la derniĂšre fois par Avatar photodouceur3, le 06-06-2021 18:08.
  • Créateur
    Sujet
  • #2685230
    Mascotte d'Oasis
    Avatar photodolores
    Membre Oasis
      • Sujet: 5304
      • RĂ©ponses: 62885

      Coup de coeur pour le Duo de Sybilla et Tolpac

      Sachons ĂȘtre bienveillant envers les autres ! (Duo Tolpac et Sybilla)

      [url=https://www.oasisdesartistes.org/modules/newbbex/viewtopic.php?viewmode=thread&topic_id=282493&forum=2]https://www.oasisdesartistes.org/modules/newbbex/viewtopic.php?viewmode=thread&topic_id=282493&forum=2[/url]

      [url=https://zupimages.net/viewer.php?id=21/21/gq3z.jpg][/url]

      Merci bisous

    Vous lisez 9 fils de discussion
    • Auteur
      Réponses
      • #3313895
        Webmaster
        Avatar photoeolienne
          • Sujet: 1579
          • RĂ©ponses: 57414
        • #3314039
          Mascotte d'Oasis
          Avatar photodolores
          Membre Oasis
            • Sujet: 5304
            • RĂ©ponses: 62885
          • #3314075
            Mascotte d'Oasis
            Avatar photodouceur3
            Membre Oasis
              • Sujet: 1828
              • RĂ©ponses: 21965

              je ne suis pas d’accord car les duo doivent ĂȘtre sur les poĂšmes a plusieurs
              pour ĂȘtre juste avec tout le monde, si moi je dĂ©poserais un duo dans poĂ©sie on me l’enlĂšverais tout suite
              Je comprend pas le pourquoi que c’est bon pour un et non pour les autres alors faudrait possiblement penser qu’ici c’est un site de poĂ©sie et non celui de rencontre.
              Je ne suis nullement jalouse mais je crois qu’il faut ĂȘtre juste envers tout le monde et je n’en veux aucunement a Tolpac et Sybilla que j’apprĂ©cie au plus haut point!

              Pour les nominĂ©s aussi c’est la mĂȘme chose, le site de poĂ©sie se doit ĂȘtre cordial et juste envers tous,
              ce qui est personnelle a leur amour ca ne nous regarde pas mais on peut les lire et commenter comme chacun a part!

              Assez c’est assez sinon moi je n’ai plus rien a faire ici !

              Lire, c?est rencontrer du monde, au plus profond de soi.
            • #3314214
              Webmaster
              Avatar photoeolienne
                • Sujet: 1579
                • RĂ©ponses: 57414
              • #3314219
                Mascotte d'Oasis
                Avatar photodouceur3
                Membre Oasis
                  • Sujet: 1828
                  • RĂ©ponses: 21965

                  alors merci et il faudrait le dire a tous les poetes

                  Lire, c?est rencontrer du monde, au plus profond de soi.
                • #3314358
                  Mascotte d'Oasis
                  Avatar photodouceur3
                  Membre Oasis
                    • Sujet: 1828
                    • RĂ©ponses: 21965

                    ce que je lis c’est que 5 jours plus tard ils sont transfĂ©rĂ©s par FĂ©linelove
                    5 jours plus tard ?

                    Merci

                    Lire, c?est rencontrer du monde, au plus profond de soi.
                  • #3314593
                    Mascotte d'Oasis
                    Avatar phototolpac
                    Membre Oasis
                      • Sujet: 3652
                      • RĂ©ponses: 28714

                      Bonjour Ă  tous

                      merci Ă  Dolores pour sa gentille intention, qui me touche beaucoup.

                      Ce texte a été écrit dans le seul but de ramener et de maintenir si possible une parfaite convivialité sur le site.

                      Par ailleurs en nos lignes ( contrairement Ă  ce que j’ai pu lire dans un commentaire ) il n ‘est nullement question dans nos propos d’amour ni mĂȘme de simple amitiĂ©.

                      A l’avenir afin de ne plus risquer de crĂ©er des jalousies ou animositĂ©s, je demande Ă  ce que plus aucune de mes pages d’Ă©critures ne soient nominĂ©es.

                      Pour ce qui est du positionnement des duos sur la page des poÚmes, puis de leur transfert sur celle des poÚmes à plusieurs, cette rÚgle du site est en vigueur depuis janvier 2018, des dizaines de duos de membres divers ayant déjà suivi cette procédure.

                      Donc le fait d’avoir dĂ©posĂ© notre duo en cette place ne fait que respecter le rĂšglement d’Oasis en vigueur.
                      Et d’ailleurs, hier soir, Sybilla a transfĂ©rĂ© notre duo dans les poĂ©sies Ă  plusieurs, puisque c’Ă©tait le cinquiĂšme jour.

                      Amitiés

                      Christian

                    • #3314693
                      Mascotte d'Oasis
                      Avatar photodouceur3
                      Membre Oasis
                        • Sujet: 1828
                        • RĂ©ponses: 21965

                        sache Christian et Sybilla ce n’est nullement de votre faute et je tiens a vous le mentionner
                        ce sont ceux ou celles qui confirme le tout,
                        il faut laisser aussi l’espace a d’autres poĂštes et j’en conviens que nullement j’ai laissĂ© ce commentaire dĂ©sobligeant
                        a vous faire du mal!

                        Je ne veux pas a cause de moi que tu refuses d’ĂȘtre nominĂ©
                        cela ne serait pas juste, et si tu as le mĂ©rites c’est que ta poĂ©sie est merveilleuse!

                        J’ai fait une montĂ©e de lait ici car il y a beaucoup de copinage et tu es nullement responsable de ceci!

                        Ceci dit je me retire pour laisser la place a d’autres !

                        Je reviendrai quand mon coeur sera plus serein et veille me pardonner mon écart de conduite en tant que mascotte mais il fallait que je le dise!

                        Lire, c?est rencontrer du monde, au plus profond de soi.
                      • #3315400
                        Mascotte d'Oasis
                        Avatar phototolpac
                        Membre Oasis
                          • Sujet: 3652
                          • RĂ©ponses: 28714

                          Bonjour Douceur3

                          comme tu as sans doute pu le constater depuis une douzaine d’annĂ©es de ma prĂ©sence sur Oasis, je ne suis pas quelqu’un qui court crocs en avant vers les honneurs, sachant n’avoir qu’un piĂštre talent d’Ă©criture, n’ayant absolument rien Ă  voir avec celui des grands poĂštes du site.

                          En consĂ©quence j’Ă©cris pour mon plaisir et pour celui d’Ă©ventuels lecteurs qui peuvent trouver Ă©galement le leur en lisant mes textes aux orientations diverses.

                          Je ne pense pas monopoliser la premiĂšre page des poĂšmes avec mes pages d’Ă©criture que je dĂ©pose seulement de temps en temps, ni par la remontĂ©e de mes anciens poĂšmes dont de nombreux n’ont mĂȘme pas Ă©tĂ© remerciĂ©s par un de mes commentaires, justement pour ne pas risquer qu’un trop grand nombre de mes  » productions » revenues en page premiĂšre, puisse ĂȘtre mal perçu par d’autres membres.

                          Donc je ne pense pas faire de l’ombre aux auteurs ni occuper une trop grande place par mes diffĂ©rents Ă©crits sur le site.

                          Pour ma part, je ne suis pas du tout des critĂšres de copinages dont tu fais mention, je commente qui je veux, quand je veux et comme cela me chante, sans faire usage de particularitĂ©s d’amitiĂ©s ou inimitiĂ©s dans mes choix de lectures et dĂ©pĂŽts d’apprĂ©ciations.

                          Tu n’as pas du tout Ă  te retirer pour laisser ta place Ă  d’autres, sachant qu’ici tout le monde qui le souhaite a sa place, mĂȘme si certains ( es ) ont plus de « succĂšs » avec leurs compositions littĂ©raires, ceci pour des raisons complexes et diverses, n’ayant pas toujours un rapport direct avec la qualitĂ© d’Ă©criture.

                          Amitiés

                          Christian

                        • #3315728
                          Mascotte d'Oasis
                          Avatar photodouceur3
                          Membre Oasis
                            • Sujet: 1828
                            • RĂ©ponses: 21965

                            merci Tolpac sur ce que tu mentionnes tu as tout a fait raison et ma rage n’Était pas de vous viser
                            mais que la modĂ©ration et nous les mascottes qu’on fassent de notre mieux pour diriger les mentionnĂ©s en honneurs
                            a plus de partage car on le sait bien qu’ici il y en a du copinage et j’envoie rĂ©guliĂšrement et ce n’est pas de toi et en toi ceci!

                            Mon crie est simplement de partager le plus possible avec d’autres membres qui apprĂ©cieraient aussi d’ĂȘtre nomminĂ©!

                            Merci mon ami!

                            Je sais que tu comprend ce que je veux dire!

                            Lire, c?est rencontrer du monde, au plus profond de soi.
                        Vous lisez 9 fils de discussion
                        • Vous devez être connecté pour répondre à ce sujet.