171 lines
4.6 KiB
PHP
171 lines
4.6 KiB
PHP
<?php
|
|
|
|
|
|
function unique_migration_persons()
|
|
{
|
|
$transient = 'f71r4_my_onetime_check_metiers_4577777';
|
|
if (!get_transient($transient)) {
|
|
set_transient($transient, 'locked', 600);
|
|
|
|
write_log("Migration started");
|
|
clean_persons();
|
|
populate_personns();
|
|
}
|
|
}
|
|
// add_action('init', 'unique_migration_persons');
|
|
|
|
function build_ids_from_csv($csv_file)
|
|
{
|
|
$postArray = [];
|
|
if (($handle = fopen($csv_file, 'r')) !== false) {
|
|
// Lire l'en-tête du CSV
|
|
$headers = fgetcsv($handle, 0, ',');
|
|
|
|
// Parcourir chaque ligne du CSV
|
|
while (($data = fgetcsv($handle, 0, ',')) !== false) {
|
|
$row = array_combine($headers, $data);
|
|
$post_fr_ID = $row['company_id (NEW)'];
|
|
$post_nl_ID = apply_filters('wpml_object_id', $post_fr_ID, 'artisans', FALSE, 'nl') ?? null;
|
|
|
|
if (!in_array($post_fr_ID, $postArray)) {
|
|
$postArray[] = $post_fr_ID;
|
|
}
|
|
if ($post_nl_ID && !in_array($post_nl_ID, $postArray)) {
|
|
$postArray[] = $post_nl_ID;
|
|
}
|
|
}
|
|
|
|
// Fermer le fichier CSV
|
|
fclose($handle);
|
|
}
|
|
return $postArray;
|
|
}
|
|
|
|
function clean_persons()
|
|
{
|
|
$csv_file = '/Users/martoni_sato/Local Sites/homegrade-multi/app/public/wp-content/themes/Metiers_du_patrimoine/datas/20241114_Consolidations_cleaned_persons.csv';
|
|
|
|
$postsIdArray = [];
|
|
$postsIdArray = build_ids_from_csv($csv_file);
|
|
|
|
foreach ($postsIdArray as $key => $postId) {
|
|
$persons = get_field('company_members', $postId);
|
|
if (!$persons) continue;
|
|
|
|
$field_key = 'field_670d268f2b324';
|
|
update_field($field_key, [], $postId);
|
|
// if ($postId === '119' || $postId === 8203) {
|
|
// }
|
|
}
|
|
}
|
|
|
|
function build_personn_fr($row)
|
|
{
|
|
$personn_data_fr = array(
|
|
'acf_fc_layout' => 'membre',
|
|
'genre' => $row['Sexe'] ?? "",
|
|
'first_name' => $row['first_name'] ?? "",
|
|
'last_name' => $row['last_name'] ?? "",
|
|
'description' => $row['formation_fr'] ?? "",
|
|
'member_gsm_number' => $row['gsm'] ?? "",
|
|
'old_website_person_id' => $row['person_id'] ?? "",
|
|
);
|
|
return $personn_data_fr;
|
|
}
|
|
function build_personn_nl($row)
|
|
{
|
|
$personn_data_nl = array(
|
|
'acf_fc_layout' => 'membre',
|
|
'genre' => $row['Sexe'] ?? "",
|
|
'first_name' => $row['first_name'] ?? "",
|
|
'last_name' => $row['last_name'] ?? "",
|
|
'description' => $row['formation_nl'] ?? "",
|
|
'member_gsm_number' => $row['gsm'] ?? "",
|
|
'old_website_person_id' => $row['person_id'] ?? "",
|
|
);
|
|
return $personn_data_nl;
|
|
}
|
|
|
|
function populate_personns()
|
|
{
|
|
// Chemin vers le fichier CSV
|
|
$csv_file = '/Users/martoni_sato/Local Sites/homegrade-multi/app/public/wp-content/themes/Metiers_du_patrimoine/datas/20241114_Consolidations_cleaned_persons.csv';
|
|
|
|
if (($handle = fopen($csv_file, 'r')) !== false) {
|
|
// Lire l'en-tête du CSV
|
|
$headers = fgetcsv($handle, 0, ',');
|
|
|
|
// Parcourir chaque ligne du CSV
|
|
while (($data = fgetcsv($handle, 0, ',')) !== false) {
|
|
$row = array_combine($headers, $data);
|
|
|
|
|
|
// if ($row['company_id (NEW)'] === '119') {
|
|
|
|
$post_fr_ID = $row['company_id (NEW)'] ?? null;
|
|
if (!$post_fr_ID) continue;
|
|
$post_nl_ID = apply_filters('wpml_object_id', $post_fr_ID, 'artisans', FALSE, 'nl');
|
|
|
|
|
|
|
|
// Récupérer les membres existants
|
|
$existing_members_fr = is_array(get_field('company_members', $post_fr_ID)) ? get_field('company_members', $post_fr_ID) : [];
|
|
$existing_members_nl = is_array(get_field('company_members', $post_nl_ID)) ? get_field('company_members', $post_nl_ID) : [];
|
|
|
|
// Build des données du contenu flexible
|
|
$user_data_fr = build_personn_fr($row);
|
|
$user_data_nl = build_personn_nl($row);
|
|
|
|
|
|
|
|
$updatedMembersArrayFr = $existing_members_fr;
|
|
$updatedMembersArrayNl = $existing_members_nl;
|
|
|
|
array_push($updatedMembersArrayFr, $user_data_fr);
|
|
array_push($updatedMembersArrayNl, $user_data_nl);
|
|
|
|
|
|
$field_key = 'field_670d268f2b324';
|
|
update_field($field_key, $updatedMembersArrayFr, $post_fr_ID);
|
|
update_field($field_key, $updatedMembersArrayNl, $post_nl_ID);
|
|
}
|
|
}
|
|
|
|
// Fermer le fichier CSV
|
|
fclose($handle);
|
|
// }
|
|
}
|
|
|
|
|
|
function get_multiple_members_from_artisans()
|
|
{
|
|
$args = array(
|
|
"status" => "publish",
|
|
"post_type" => "artisans",
|
|
"posts_per_page" => -1,
|
|
// "tax_query" => $taxQuery,
|
|
// "meta_query" => $metaQuery,
|
|
);
|
|
$newsPostsDatas = new WP_Query($args);
|
|
$filteredPosts = [];
|
|
|
|
foreach ($newsPostsDatas->posts as $key => $post) {
|
|
$persons = get_field('company_members', $post->ID);
|
|
if (!$persons) continue;
|
|
write_log(count($persons));
|
|
if (count($persons) > 1) {
|
|
write_log($post->ID);
|
|
}
|
|
}
|
|
|
|
|
|
return $filteredPosts;
|
|
|
|
}
|
|
|
|
function show_acf_repeator()
|
|
{
|
|
$repeater = get_field('company_members', 123);
|
|
write_log($repeater);
|
|
}
|