From 318edb5b6c97f8615a4c3d3941175d982ce5bd4a Mon Sep 17 00:00:00 2001 From: Antoine M Date: Tue, 3 Jun 2025 16:43:18 +0200 Subject: [PATCH] REFACTOR Refining comments for better understandability --- includes/revue.php | 50 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/includes/revue.php b/includes/revue.php index 50b6b8e..179122d 100644 --- a/includes/revue.php +++ b/includes/revue.php @@ -9,16 +9,24 @@ function dynamiques_revue_save_post($post_id) $post_type = get_post_type($post_id); if ($post_type !== 'revues') return; - // DE-LINK ARTICLES NOT USED IN THE ACF CHAPTER HANDLER IN REVUE POST ('articles' field) + // Remove articles that are no longer associated with the current review dynamiques_revue_empty_unmapped_articles($current_revue_ID); + + // Link articles to the current review dynamiques_revue_link_mapped_articles($current_revue_ID); } add_action('acf/save_post', 'dynamiques_revue_save_post', 20); +//*******************************************************************************************************/ +// Compare the articles linked to the current review being saved and remove those that are no longer associated +//*******************************************************************************************************/ + + function dynamiques_revue_empty_unmapped_articles($current_revue_ID) { $articles = get_field('articles', $current_revue_ID); + if (!$articles) return; // GET ALL ARTICLES RELATED TO THE REVUE AND CHECK IF THEY ARE HANDLED BY THE PARENT REVUE IN THE ARTICLE FIELD @@ -58,6 +66,7 @@ function dynamiques_revue_empty_unmapped_articles($current_revue_ID) function dynamiques_revue_link_mapped_articles($current_revue_ID) { $articles = get_field('articles', $current_revue_ID); + if (!$articles) return; foreach ($articles as $article) { $article_id = $article->ID; @@ -65,3 +74,42 @@ function dynamiques_revue_link_mapped_articles($current_revue_ID) update_field('related_revue', $current_revue_ID, $article_id); } } + + +//*******************************************************************************************************/ +// Check if the issue number is already used by another revue +//*******************************************************************************************************/ + +add_filter('acf/validate_value/name=issue_number', 'dynamiques_revue_check_issue_number', 10, 4); + +function dynamiques_revue_check_issue_number($valid, $value, $field, $input) +{ + if (!$valid) { + return $valid; + } + + // Récupère l'ID du post en cours d'édition + $current_revue_ID = isset($_POST['post_ID']) ? intval($_POST['post_ID']) : 0; + + // Recherche d'autres revues avec le même numéro + $args = array( + 'post_type' => 'revues', + 'post_status' => 'any', + 'posts_per_page' => 1, + 'post__not_in' => array($current_revue_ID), + 'meta_query' => array( + array( + 'key' => 'issue_number', + 'value' => $value, + 'compare' => '=', + ), + ), + ); + $query = new WP_Query($args); + + if ($query->have_posts()) { + return 'Ce numéro de revue existe déjà.'; + } + + return $valid; +}