/*
======================
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']);
}
11 novembre - Oasis des Artistes. Le plus beau site de poésie
Aller au contenu
- Ce sujet contient 7 réponses, 4 participants et a Ă©tĂ© mis Ă jour pour la derniĂšre fois par
Sybilla, le 16-11-2023 16:38.
-
meldois
- Sujet: 1185
- Réponses: 15294
Bonsoir l’Ă©quipe de modĂ©ration,
J’ai un coup de coeur pour le poĂšme de EltĂ©or qui n’a pas Ă©tĂ© nominĂ© au mois de novembre.
Il s’appelle :
LA PEUR ( pas d’illustration)
Merci beaucoup pour mon vote.
Bonne soirée.
Alain
L'aiglon de MEAUX "
-
-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
bonsoir,
ELTEOR mérite bien sur _______nomination_________
_____________________________________
https://www.oasisdesartistes.org/modules/newbbex/viewtopic.php?topic_id=315153&forum=2#forumpost3285378
__________________________________________________________________________________________________________________________________________
( mais , je vois qu’il ne commente pas ____ou une juste….une seule fois … )
par rapport Ă tout ce qu’il a dĂ©jĂ Ă©crit, postĂ© , comme poĂšmes …
il semble qu’il ___________n’aime pas commenter les autres
c ‘est bien dommage__
___ car on lui a déjà , adressé des messages privés
pour lui demander ,____ d’ etre plus actif__________
mais…il semble ne pas vouloir , ______ participer .._______
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
https://www.oasisdesartistes.org/modules/newbbex/viewtopic.php?topic_id=315153&forum=2#forumpost3285378
_____________________________________________________
je regarde encore une fois pour voir s’il est plus actif
______________________NON ___________
PoĂšmes en ligne
PoĂšmes en ligne11 NOVEMBRE
11/11/2023 8:08:33
PoĂšmes en ligneLa bonne direction
10/11/2023 18:30:01
PoĂšmes en ligneDans le square
6/11/2023 20:47:51
PoĂšmes en ligneĂ douceur du temps
4/11/2023 8:40:33
PoĂšmes en ligneIMPRESSIONS
2/11/2023 10:34:28
PoĂšmes en ligneSpleen de vie
1/11/2023 18:26:50
PoÚmes en ligneUne autre humanité
24/10/2023 22:03:28
PoĂšmes en ligneJe d’ombre
22/10/2023 11:32:38
PoĂšmes en ligneLes invisibles
20/10/2023 10:48:57
il a posté tous ces poÚmes, et je ne vois aucune trace
de commentaires chez les autres lecteurs
donc , _______________________________________________
je ne suis pas du tout , enchantée de le voir nominé
________JE SUIS FRANCHE__________
___________________________________________________
mais c est Ă EOLIENNE et
_____ Ă l ‘Ă©quipe des modĂ©ratrices modĂ©rateurs d’en dĂ©cider
____
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
la peur d’elteor
https://www.oasisdesartistes.org/modules/newbbex/viewtopic.php?topic_id=315153&forum=2#forumpost3285378
La peur
Je mâappelle Hans et je suis allemand
Mon pÚre a péri dans les tranchées de Verdun
TuĂ© au cĆur dâun coup de couteau par un Poilu
Je ne lâai pas connu, je nâavais que cinq ans.
EnrÎlé dans la Wehrmacht, nous avons envahi
En un mois la Pologne, la guerre commence
DĂ©clenchĂ©e par la folie dâun homme dĂ©nommĂ©
Hitler, six annĂ©es dâhorreurs absolues.
Je nâai rien demandĂ©, seulement subi
Je lâavoue, endoctrinĂ© par un fanatique
Le peuple a suivi le FĂŒhrer vers lâenfer
Atteint par les maux les plus infects.
Pourquoi ? Ai-je participĂ© Ă lâabominable
Au pire, Ă la nĂ©gation totale dâĂȘtres humains
A leur méthodique anéantissement programmé
On se disait supérieur à eux, mais en quoi ?
Aujourd’hui !
Nous sommes petits enfants de boches et poilus
Nous ne voulons plus de guerre, mais que la paix
Nous pensons Ă tous ces morts, pour notre salut
Plus jamais çà ! Ils méritent notre respect !
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
BONSOIR
je viens d’avoir _________un message privĂ© de MELDOIS_______________
qui me dit, qu’il vient de lire ___ce que je viens de publier..
_________donc, il pense qu’il ne mĂ©rite pas de nomination________________
je vous prie de croire, en toute ma sincérité
d’ailleurs par message privĂ©, le poĂšte MELDOIS vous le confirmera
voilĂ pourquoi il est trĂšs important de savoir communiquer
et expliquer les choses comme elles sont
on sait pas tout, donc, ce que j’aime c est que la situation soit claire et nette
merci Ă tous
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo

-
-
Plume de diamantâ
â
â
â
â
â
cyrael
- Sujet: 14564
- Réponses: 136022
-
Sybilla
- Sujet: 17798
- Réponses: 198089
Bonsoir Chers Amis poĂštes,
Ok !
Belle soirée Chers Amis poÚtes !
Toutes mes amitiés
Gros bisous
Sybilla
Le r?ve est le poumon de ma vie (Citation de Sybilla)
- 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.