Metiers_du_patrimoine_theme/includes/factories.php
Nonimart f57d20dae7
All checks were successful
continuous-integration/drone/push Build is passing
REFACTOR Cleaning comments and write logs
2025-07-31 17:53:05 +02:00

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);
}