/*
======================
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']);
}
bonjour - Oasis des Artistes. Le plus beau site de poésie
Aller au contenu
Ce sujet contient 9 réponses, 5 participants et a Ă©tĂ© mis Ă jour pour la derniĂšre fois par NoireLune , le 23-02-2022 07:38 .
Plume de diamant â
â
â
â
â
â
cyrael
Sujet: 14564 Réponses: 136022
bonjour
joli w end Ă vous tous..
pourquoi
ELTEOR PUBLIE
PUBLIE
ET NE VA PAS COMMENTER autrui ?
QUEL DEDAIN de sa part, alors que nous le commentons ! ! !
_____
il a osé écrire ce texte ::
L’indiffĂ©rence !
Les regards se croisent et se décroisent
Les paroles volent et d’autres s’envolent
Et il ne reste plus que de l’indiffĂ©rence !
On aime ou on croit aimer pour toujours
Toi et moi, cela fait deux et un jour loin de toi
Et il ne reste plus que l’indiffĂ©rence !
C’est comme l’amitiĂ© Ă la vie et Ă la mort
On était des frÚres pour finir frÚres ennemis
Et il ne reste plus que l’indiffĂ©rence !
L’indiffĂ©rence ! Et on n’a pas vu nos diffĂ©rences
On pense Ă l’autre mais l’autre pense Ă autre chose
Et il ne reste plus que l’indiffĂ©rence !
Et l’indiffĂ©rence est la pire des souffrances !
ELTEOR..
______________________________________________________________________________________
IL OSE ECRIRE : indifférence, sachant combien çà blesse ..
mais, qui va lui dire, qu’il doit aller commenter un ou deux auteurs, IL Y A DU CHOIX
J AI RECU des MESSAGES PRIVES
concernant son manque de commuication
n’a t il pas lu le rĂšglement?
qu’ il continue d’ ignorer
beaucoup d’amies se plaignent de lui, sa façon de poster sans cesse , sans faire d’effort
de partage, choque !!
dĂ©solĂ©e d’ĂȘtre FRANCHE
________
https://www.oasisdesartistes.org/userinfo.php?uid=24047
ELTEOR
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
Plume de diamant â
â
â
â
â
â
cyrael
Sujet: 14564 Réponses: 136022
PoĂšmes en ligne
( postĂ© ce jour …ESPRITS JAPONAIS__ il a eu le temps de commenter MELDOIS.. et le remercier le meme jour )
Esprits japonais
19/2/2022 9:48:44
PoĂšmes en ligneEsprits japonais
19/2/2022 9:31:53
PoĂšmes en ligneBelle rose
16/2/2022 8:50:29
PoĂšmes en ligneLe temps presse
15/2/2022 8:43:51
PoĂšmes en ligneMon amour !
14/2/2022 17:24:54
PoĂšmes en ligneL’indiffĂ©rence
13/2/2022 9:12:32
PoĂšmes en ligneRuban de nuit !
12/2/2022 12:05:19
PoÚmes en ligneDifférence
11/2/2022 9:01:03
PoĂšmes en ligneRe: GaĂŻa Terre-MĂšre
10/2/2022 8:51:38
tous les poÚmes postés, du 1O FEV au 19 FEVRIER
ll n’a commentĂ© —– aucun——- AUTRE POETE DU SITE…
depuis 8 jours
—–
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
dolores
Sujet: 5304 Réponses: 62885
tu as raison Maryjo malgrĂ© nos demandes de commenter autrui il ne le fait jamais alors j’ai dĂ©cidĂ© ce matin de nullement le commenter et de ne plus le faire Ă l’avenir …Bonne journĂ©e l’amie bisous
Plume de diamant â
â
â
â
â
â
cyrael
Sujet: 14564 Réponses: 136022
JE SUIS DESOLEE
mais tout le monde en messages privés
me parle de son
INDIFFERENCE
MERCI MARIE DOLORES
ce matin il poste, et il a le temps de mettre un mot
Ă MONSIEUR MELDOIS
mais jamais un seul petit commentaire pour LES AUTRES
que c est dur, d accepter son DEDAIN
reglement ////
Recevoir des commentaires est trÚs agréable alors, pensez au plaisir que vous allez faire aux autres membres en lisant leurs écrits et en commentant leurs textes.
Câest un Ă©change, un partage, et câest ce qui fait vivre le site de façon chaleureuse et conviviale.
Ecrivez des poĂšmes, lisez ceux des autres membres et commentez-les, ceci est une obligation.
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
Plume de diamant â
â
â
â
â
â
cyrael
Sujet: 14564 Réponses: 136022
MERCI SPHYRIA…j’ai bien recu votre message privĂ©
comme celui de MICKAELLE
et mes amies
merci TOMBELANUIT..
mais ne pas le commenter ce serait pas tout Ă fait juste
si sa plume aime écrire, composer
mais, je trouve que son DEDAIN S ‘affiche clairement dans OASIS
on a beau lui dire, il pourrait choisir un ou deux poĂšmes
et commenter?
lui rappeler le réglement, il semble ne pas du tout, en tenir compte
alors, faisant sourde oreille, il affiche bien, sa seule volonté c est poster des poÚmes
et afficher sa plume, sans jamais, faire un petit effort, il vient , il part.
le reste semble pour lui, ne pas avoir D’ intĂ©rĂȘt !
que dire de ce genre de comportement, j’avais mis un message sous SON POEME INDIFFERENCE
mon message a été effacé !
*
QUEL CULOT Ă©crire un texte sur L’ INDIFFERENCE …
alors qu’il est ce genre de poĂšte, qui se croit supĂ©rieur, et tellement au dessus des autres
il m’a dit en privĂ©, qu’il ne voulait pas commenter les autres, car il est un— POETE parmi les meilleurs !
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
Plume de diamant â
â
â
â
â
â
cyrael
Sujet: 14564 Réponses: 136022
merci A TOUS
merci pour ce moment partagé
merci SPHYRIA j’ai fait une mauvaise manipulation çà y est, j’ai retrouvĂ© tous les messages
j’ai retrouvĂ© mon message sous son texte ainsi que celui de NOEL OPAN
__________________________________________
j’espĂšre que ELTEOR va rĂ©agir
et se donner la peine de commenter un peu , bien sur, on va trier
et sélectionner
attendons de voir s’il y a une rĂ©action
MERCI A TOUS
l'Amour rayonne quand l'Ame s'?l?ve, citation maryjo
jessye
Sujet: 1332 Réponses: 28192
perso je ne le commente plus … j’aime pas l’indiffĂ©rence … bisous ma douce amie
C'est beau d'?tre seul(e).
?tre seul(e)ne signifie pas ?tre solitaire.
Cela signifie que l'esprit ne vit pas sous influence et qu'il n'est pas pollu?
par la soci?t?.
[Jiddu Krishnamurti]
Plume de diamant â
â
â
â
â
â
cyrael
Sujet: 14564 Réponses: 136022
Sybilla
Sujet: 17798 Réponses: 198089
Bonsoir chĂšre Maryjo,
Nous lui avons envoyé de nombreux mp afin de le faire réagir.
Parfois, il se dĂ©cide Ă faire un ou deux commentaires, mais c’est rare…
Belle soirée à vous deux !
Toutes mes amitiés
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.
Gérer le consentement