/*
======================
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']);
}
AUX LETTRES DE TON PRENOM - Oasis des Artistes. Le plus beau site de poésie
Aller au contenu
- Ce sujet contient 8 réponses, 3 participants et a Ă©tĂ© mis Ă jour pour la derniĂšre fois par
cyrael, le 28-02-2021 10:14.
-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
PAS encore NOMINE EN 2O21
https://www.oasisdesartistes.org/modules/newbbex/viewtopic.php?viewmode=flat&topic_id=268923&forum=2
IMAGE ET POEME
TOUT est déjà illustré
Lettres…
Parce que tu es tous ces mots d’envie
Pour moi qui voyage lĂ dans ta vie,
Ne sois pas si surprise de l’idĂ©e
D’Ă©clairer deux finales en premier,
S’Ă©rigeant aussi dans le mot poĂ©sie.
En ton prénom venu du fond des ùges
D’une femme qui se fit la plus sage,
Elles rayonnent loin dans ma pensĂ©e…
D’un nom magique aux lettres si jolies,
LĂ , au pluriel passant sans s’installer,
S’effacant dans un singulier poli
Et puis revenir au commencement
De celles qui s’Ă©lancent s’Ă©crivant
Ma… dans la joie d’une union si sacrĂ©e
Au matin colorĂ© d’un sentiment…
En restait donc encore une Ă placer,
Qui s’illumine au centre du tien…
Je l’avais juste gardĂ© pour la fin…
Le roi de coeur, lui, l’indique si bien
Au quatre coins Ă©crits de ses dessins…
A toi …
A l’un des plus beaux prĂ©noms qu’il soit de porter…
Pascal
(Bellosogno)
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
-
-
Moi Ă©coutez je vais jouer les troubles fĂȘte ! Bellosogno pas nominĂ© en 2021 ????
mais dites moi un peu quand il commente ??? les membres et lit nos écrits..
franchement je suis pas d’accord sur la nomination..non pas par la qualitĂ© de la plume, mais son absence et son manque de participation sur le site.
Mise Ă part quelques Ă©lus qu’il commente ! mais vraiment j’appelle pas cela du partage.
-
il commente malgré tout !!!
-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
Résultats de la recherche
(Afficher 1 – 20)
PoĂšmes en ligne
PoĂšmes en ligne Re: Violet
Bellosogno (21/2/2021 19:20:58)
PoĂšmes en ligne Re: Le PoĂšte…
Bellosogno (21/2/2021 19:04:55)
PoĂšmes en ligne Re: A Tristan
Bellosogno (21/2/2021 19:00:51)
PoĂšmes en ligne Re: A Tristan
Bellosogno (21/2/2021 19:00:40)
PoĂšmes en ligne Re: A Tristan
Bellosogno (21/2/2021 18:58:07)
PoĂšmes en ligne Re: Sarah Brightman – SCARBOROUGH FAIR
Bellosogno (21/2/2021 18:56:04)
PoĂšmes en ligne Re: Je tue … nous …
Bellosogno (21/2/2021 18:43:20)
PoĂšmes en ligne Re: Aujourd’hui…
Bellosogno (21/2/2021 18:32:48)
PoĂšmes en ligne Re: Katie Melua ( blowing in the wind)
Bellosogno (18/2/2021 19:15:14)
PoĂšmes en ligne John Mayer/Keith Urban – don’t let me Down (Beatles cover)
Bellosogno (18/2/2021 18:58:28)
PoĂšmes en ligne Re: Tous les deux
Bellosogno (17/2/2021 23:02:20)
PoĂšmes en ligne Re: NATASHA ST-PIER JE N’AI QUE MON ĂME
Bellosogno (17/2/2021 22:57:25)
PoĂšmes en ligne Billy preston – My sweet lord (George Harrison)
Bellosogno (17/2/2021 22:48:38)
PoĂšmes en ligne Re: MylĂšne Farmer – RĂȘver
Bellosogno (16/2/2021 15:26:45)
PoÚmes en ligne Jim croce (opérator)
Bellosogno (16/2/2021 15:20:28)
PoÚmes en ligne Re: Annabelle 28 ans, droguée prostituée.
Bellosogno (16/2/2021 13:58:41)
PoĂšmes en ligne Re: Je me souviens
Bellosogno (16/2/2021 13:46:24)
PoÚmes en ligne Re: Dilemme (choix cornélien!) (repost)
Bellosogno (16/2/2021 12:42:34)
PoĂšmes en ligne Aujourd’hui…
Bellosogno (14/2/2021 16:17:49)
PoĂšmes en ligne Re: Larmes de jasmin
Bellosogno (13/2/2021 11:48:11)
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
Merci pour ces avis précieux
en effet, il commente un peu
mais,
d’autres comme* poĂšte * PALMIER *
que j’ai commentĂ© plusieurs fois
jamais, n’est venu me commenter
alors, dans le site bien sur, ils sont nombreux ceux qui postent
et puis s’en vont
mais, un petit coup de pouce,
et qui le sait?
peut etre qu’ils feront des efforts
MERCI A VOUS POUR VOS COMMENTAIRES
au sujet de cette nomination
________________________________
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
Je reste sur ma position…
il commente peu, se retire souvent…
et commente jusqu’Ă trois fois, sur le mĂȘme poĂšme une poĂ©tesse, si vous fouillez un peu vous vous rendrez compte…
aprĂšs nominez le … et des efforts je ne vois pas pourquoi il en ferait, ça marche trĂšs bien comme ça pour lui…
aprĂšs ! je ne suis qu’une petite mascotte … et mon avis compte qu’un tout petit peu.
quoiqu’il en soit merci d’avoir rĂ©pondu Ă nos  » critiques  »…
Bonne soirée à vous
-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
merci pour ces réponses constructives
on aime bien , lire les avis de chacun et chacune
hélas, vu le NOMBRE DE MASCOTTES , je me demande pourquoi les autres sont absents
car je ne vois que ……certaines mascottes, venir voter, …dans ce coin prĂ©vu pour partager
*
comme je vote ici, sans rien cacher , bien entendu , je peux ĂȘtre critiquĂ©e
cela, m’apporte aussi du positif, car de toute discussion” il en sortira du BON ..
rien n’est PARFAIT…
MERCI A VOUS pour vos échanges ..
bisous
JOLI JOUR A ISABELLE
MICHELE
beau w end Ă tous , EOLIENNE et tous ceux qui Ćuvrent dans OASIS DES ARTISTES
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
merci MICHELE pour ton petit mot
MAIS oĂč sont passĂ©es toutes les mascottes ?
viennent elles , lire commenter et participer?
merci MICHELE je te souhaite un doux et beau W end
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

- Vous devez être connecté pour répondre à ce sujet.
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
LâaccĂšs ou le stockage technique est strictement nĂ©cessaire dans la finalitĂ© dâintĂ©rĂȘt lĂ©gitime de permettre lâutilisation dâun service spĂ©cifique explicitement demandĂ© par lâabonnĂ© ou lâutilisateur, ou dans le seul but dâeffectuer la transmission dâune communication sur un rĂ©seau de communications Ă©lectroniques.
LâaccĂšs ou le stockage technique est nĂ©cessaire dans la finalitĂ© dâintĂ©rĂȘt lĂ©gitime de stocker des prĂ©fĂ©rences qui ne sont pas demandĂ©es par lâabonnĂ© ou lâinternaute.
Le stockage ou lâaccĂšs technique qui est utilisĂ© exclusivement Ă des fins statistiques.
Le stockage ou lâaccĂšs technique qui est utilisĂ© exclusivement dans des finalitĂ©s statistiques anonymes. En lâabsence dâune assignation Ă comparaĂźtre, dâune conformitĂ© volontaire de la part de votre fournisseur dâaccĂšs Ă internet ou dâenregistrements supplĂ©mentaires provenant dâune tierce partie, les informations stockĂ©es ou extraites Ă cette seule fin ne peuvent gĂ©nĂ©ralement pas ĂȘtre utilisĂ©es pour vous identifier.
LâaccĂšs ou le stockage technique est nĂ©cessaire pour crĂ©er des profils dâinternautes afin dâenvoyer des publicitĂ©s, ou pour suivre lâutilisateur sur un site web ou sur plusieurs sites web ayant des finalitĂ©s marketing similaires.