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']); } C'est dans la poche !! - 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 !

C’est dans la poche !!

đŸ‘ïž 4129 vues

39 rĂ©flexions au sujet de “C’est dans la poche !!”

  1. bravo joli jeu de mots et jolie photo

    un bien joli gros plan (mais pas gros du tout)

    amitiés

  2. bravo joli jeu de mots et jolie photo

    un bien joli gros plan (mais pas gros du tout)

    amitiés

  3. parle Ă  mon c…. ma tĂȘte est malade

    lĂ  on s’adresse aux deux, c’est trĂšs bien

    enchanté !!!

  4. parle Ă  mon c…. ma tĂȘte est malade

    lĂ  on s’adresse aux deux, c’est trĂšs bien

    enchanté !!!

  5. gabin disait; » t’as d’beaux yeux tu sais » je serais tentĂ©e de dire t’as un beau …. pantalon tu sais!!

    mes amitiés K.

  6. gabin disait; » t’as d’beaux yeux tu sais » je serais tentĂ©e de dire t’as un beau …. pantalon tu sais!!

    mes amitiés K.

  7. TrĂšs belle crĂ©ation…J’aime
    AmitiĂ© ♥ *Žš)
    ž. ‱®¾.♥ ‱®¹) ♥ž. ‱*š)(ž.♥ ‱®* ‱.ž
    (ž.♥ ‱® (ž.♥ ‱® (ž.♥ ‱*ÂŽÂŻ`(ž.♥ ‱*ÂŽÂŻ`*♥‱Francine‱*♥ ♥ ♥.ž.‱®♥

  8. TrĂšs belle crĂ©ation…J’aime
    AmitiĂ© ♥ *Žš)
    ž. ‱®¾.♥ ‱®¹) ♥ž. ‱*š)(ž.♥ ‱®* ‱.ž
    (ž.♥ ‱® (ž.♥ ‱® (ž.♥ ‱*ÂŽÂŻ`(ž.♥ ‱*ÂŽÂŻ`*♥‱Francine‱*♥ ♥ ♥.ž.‱®♥

  9. [color=0033FF]coucou mon trĂšs cher clown Nr 1 :clindoeil:

     » CŽest dans la poche !!  »

    Non, cÂŽĂ©tait pour rire !…

    JÂŽadoooooooooooooooooooooooooooore

    Et je vote 10

    Baiser papillon

    ton clown (seulement) Nr 2 ! [/color]

  10. [color=0033FF]coucou mon trĂšs cher clown Nr 1 :clindoeil:

     » CŽest dans la poche !!  »

    Non, cÂŽĂ©tait pour rire !…

    JÂŽadoooooooooooooooooooooooooooore

    Et je vote 10

    Baiser papillon

    ton clown (seulement) Nr 2 ! [/color]

Laisser un commentaire