upgraded email filter to filter also wp hook

This commit is contained in:
asus
2024-03-05 09:55:54 +01:00
parent 63cc1f28c0
commit 39c9f492dc
2 changed files with 98 additions and 147 deletions

View File

@@ -29,8 +29,8 @@ PLGNTLS_class::set_root_dir( plugin_dir_path(__FILE__), plugin_dir_url(__FILE__)
/*
* general inclusions
*/
// utils :
include_once(PLGNTLS_class::get_path() . 'php/utils/globals.php');
include_once(PLGNTLS_class::get_path() . 'utils/console_log.php');
include_once(PLGNTLS_class::get_path() . 'php/admin_menu/example_menu.php');
@@ -44,157 +44,14 @@ include_once(PLGNTLS_class::get_path() . 'php/register_partenaires.php');
include_once(PLGNTLS_class::get_path() . 'php/redirections.php');
include_once(PLGNTLS_class::get_path() . 'php/author_restriction.php');
include_once(PLGNTLS_class::get_path() . 'php/reset_acf_fields.php');
include_once(PLGNTLS_class::get_path() . 'php/filter_mail.php');
// form builder patch :
//include_once(PLGNTLS_class::get_path() . 'php/form_builder_patch/url_validation.php');
include_once(PLGNTLS_class::get_path() . 'php/form_builder_patch/multiple_modals.php');
//include_once(PLGNTLS_class::get_path() . 'php/form_builder_patch/multiple_modals.php');
/*
* old version
* callback for filter_email_CIPF, that does not receive the user id
*/
function replace_words_CIPF($matches) {
$current_user = wp_get_current_user();
$query = $matches[1];
$result = $current_user->$query;
return $result;
}
function filter_email_CIPF($reply_body, $post_array) {
$id = $post_array['ID'];
error_log("---");
// pattern : anything surrounded by '$$', ex : $$value$$
$pattern = '/\$\$(.*?)\$\$/';
// old version, using an outside callback, better readibility but cannot pass $id
//$new_body = preg_replace_callback($pattern, 'replace_words_CIPF', $reply_body);
// inline callback, with 'use' to get the id
$new_body = preg_replace_callback($pattern, function($matches) use ($id) {
$current_user = get_user_by('id', $id);
$query = $matches[1];
$result = $current_user->$query;
return $result;
}, $reply_body);
error_log("new_body");
error_log($new_body);
return $new_body;
}
add_filter('df_confirmation_body', 'filter_email_CIPF', 10, 2);
/*
// Define your key-value pairs
$replacements = [
'name' => 'John',
'value' => '100',
];
// Define a regular expression to match $$keywords$$
// Define a callback function to replace the keywords with values
$replacement_function = function ($matches) use ($replacements) {
// $matches[1] contains the keyword without the $$ signs
$keyword = $matches[1];
// If the keyword exists in the replacements array, return its value
// Otherwise, return the original keyword (without the $$ signs)
return isset($replacements[$keyword]) ? $replacements[$keyword] : $matches[0];
};
// Replace the keywords using preg_replace_callback()
$new_string = preg_replace_callback($pattern, $replacement_function, $string);
// Output the new string
*/
/*
priority : 1
"Merci pour votre inscription."
{"ID":"24","user_login":"Hugogogo","user_pass":"$P$B1KLMir9WeEwvjmgJhQsT0o5ifXMUb.","user_nicename":"hugogogo","user_email":"hugogogo@protonmail.com","user_url":"","user_registered":"2024-02-19 10:55:38","user_activation_key":"","user_status":"0","display_name":"Hugogogo","field_title":["Pr\u00e9nom","Nom","Adresse","Adresse (compl\u00e9ment)","Code postal","Ville","Pays","T\u00e9l\u00e9phone","Adresse email","Fonction","\u00c9tablissement","Niveau d\u2019enseignement","10 ou 15 \u20ac ?","Nom de votre association","Pr\u00e9nom et nom du pr\u00e9sident","Adresse email de l\\'association pour la validation de votre statut","Obs","Photo d\\'identit\u00e9 pour la carte","Justificatif (ex : la copie de votre carte de travail)","Livraison","Moyen de paiement","Conditions g\u00e9n\u00e9rales de vente","Co\u00fbt"],"first_name":"Hugo","last_name":"lamy","user_meta":["de_fb_adresse_1","de_fb_adresse_2","de_fb_code_postal","de_fb_ville","de_fb_pays","de_fb_telephone","de_fb_fonction","de_fb_etablissement","de_fb_niveau_denseignement","de_fb_tarif","de_fb_nom_asso","de_fb_president_asso","de_fb_email_asso","de_fb_observations","de_fb_photo_du_profil","de_fb_justificatif","de_fb_livraison","de_fb_paiement","de_fb_cgv","de_fb_somme_a_regler"],"adresse_2":"","telephone":"","tarif_calc_value":"15","observations":"","livraison_calc_value":"0","somme_a_regler":""}
priority : 10
"Merci pour votre inscription."
{"ID":"24","user_login":"Hugogogo","user_pass":"$P$B1KLMir9WeEwvjmgJhQsT0o5ifXMUb.","user_nicename":"hugogogo","user_email":"hugogogo@protonmail.com","user_url":"","user_registered":"2024-02-19 10:55:38","user_activation_key":"","user_status":"0","display_name":"Hugogogo","field_title":["Pr\u00e9nom","Nom","Adresse","Adresse (compl\u00e9ment)","Code postal","Ville","Pays","T\u00e9l\u00e9phone","Adresse email","Fonction","\u00c9tablissement","Niveau d\u2019enseignement","10 ou 15 \u20ac ?","Nom de votre association","Pr\u00e9nom et nom du pr\u00e9sident","Adresse email de l\\'association pour la validation de votre statut","Obs","Photo d\\'identit\u00e9 pour la carte","Justificatif (ex : la copie de votre carte de travail)","Livraison","Moyen de paiement","Conditions g\u00e9n\u00e9rales de vente","Co\u00fbt"],"first_name":"Hugo","last_name":"lamy","user_meta":["de_fb_adresse_1","de_fb_adresse_2","de_fb_code_postal","de_fb_ville","de_fb_pays","de_fb_telephone","de_fb_fonction","de_fb_etablissement","de_fb_niveau_denseignement","de_fb_tarif","de_fb_nom_asso","de_fb_president_asso","de_fb_email_asso","de_fb_observations","de_fb_photo_du_profil","de_fb_justificatif","de_fb_livraison","de_fb_paiement","de_fb_cgv","de_fb_somme_a_regler"],"adresse_2":"","telephone":"","tarif_calc_value":"15","observations":"","livraison_calc_value":"0","somme_a_regler":""}
priority : 20
"Merci pour votre inscription."
{"ID":"24","user_login":"Hugogogo","user_pass":"$P$B1KLMir9WeEwvjmgJhQsT0o5ifXMUb.","user_nicename":"hugogogo","user_email":"hugogogo@protonmail.com","user_url":"","user_registered":"2024-02-19 10:55:38","user_activation_key":"","user_status":"0","display_name":"Hugogogo","field_title":["Pr\u00e9nom","Nom","Adresse","Adresse (compl\u00e9ment)","Code postal","Ville","Pays","T\u00e9l\u00e9phone","Adresse email","Fonction","\u00c9tablissement","Niveau d\u2019enseignement","10 ou 15 \u20ac ?","Nom de votre association","Pr\u00e9nom et nom du pr\u00e9sident","Adresse email de l\\'association pour la validation de votre statut","Obs","Photo d\\'identit\u00e9 pour la carte","Justificatif (ex : la copie de votre carte de travail)","Livraison","Moyen de paiement","Conditions g\u00e9n\u00e9rales de vente","Co\u00fbt"],"first_name":"Hugo","last_name":"lamy","user_meta":["de_fb_adresse_1","de_fb_adresse_2","de_fb_code_postal","de_fb_ville","de_fb_pays","de_fb_telephone","de_fb_fonction","de_fb_etablissement","de_fb_niveau_denseignement","de_fb_tarif","de_fb_nom_asso","de_fb_president_asso","de_fb_email_asso","de_fb_observations","de_fb_photo_du_profil","de_fb_justificatif","de_fb_livraison","de_fb_paiement","de_fb_cgv","de_fb_somme_a_regler"],"adresse_2":"","telephone":"","tarif_calc_value":"15","observations":"","livraison_calc_value":"0","somme_a_regler":""}
priority : 999
"Merci pour votre inscription."
{"ID":"24","user_login":"Hugogogo","user_pass":"$P$B1KLMir9WeEwvjmgJhQsT0o5ifXMUb.","user_nicename":"hugogogo","user_email":"hugogogo@protonmail.com","user_url":"","user_registered":"2024-02-19 10:55:38","user_activation_key":"","user_status":"0","display_name":"Hugogogo","field_title":["Pr\u00e9nom","Nom","Adresse","Adresse (compl\u00e9ment)","Code postal","Ville","Pays","T\u00e9l\u00e9phone","Adresse email","Fonction","\u00c9tablissement","Niveau d\u2019enseignement","10 ou 15 \u20ac ?","Nom de votre association","Pr\u00e9nom et nom du pr\u00e9sident","Adresse email de l\\'association pour la validation de votre statut","Obs","Photo d\\'identit\u00e9 pour la carte","Justificatif (ex : la copie de votre carte de travail)","Livraison","Moyen de paiement","Conditions g\u00e9n\u00e9rales de vente","Co\u00fbt"],"first_name":"Hugo","last_name":"lamy","user_meta":["de_fb_adresse_1","de_fb_adresse_2","de_fb_code_postal","de_fb_ville","de_fb_pays","de_fb_telephone","de_fb_fonction","de_fb_etablissement","de_fb_niveau_denseignement","de_fb_tarif","de_fb_nom_asso","de_fb_president_asso","de_fb_email_asso","de_fb_observations","de_fb_photo_du_profil","de_fb_justificatif","de_fb_livraison","de_fb_paiement","de_fb_cgv","de_fb_somme_a_regler"],"adresse_2":"","telephone":"","tarif_calc_value":"15","observations":"","livraison_calc_value":"0","somme_a_regler":""}
*/
/*
add_filter( 'df_confirmation_body', 'filter_email_CIPF', 1); // 8-9-10-11 : body email to prof
add_filter( 'df_confirmation_body', 'filter_email_CIPF', 1); // 8-9-10-11 : body email to prof
add_filter( 'df_notification_body', 'filter_email_CIPF', 1); // 1 : body email to diego
add_filter( 'df_notifcation_recipient', 'filter_email_CIPF', 1); // 2 : email to: (to diego)
*/
/*
used :
add_filter( 'df_confirmation_body', 'filter_email_CIPF', 1); // 8-9-10-11
- "Merci pour votre inscription."
add_filter( 'df_confirmation_body', 'filter_email_CIPF', 1); // 8-9-10-11
- "Merci pour votre inscription."
add_filter( 'df_confirmation_body', 'filter_email_CIPF', 1); // 8-9-10-11
- "Merci pour votre inscription."
add_filter( 'df_notifcation_recipient', 'filter_email_CIPF', 1); // 2
- "testi_le_testeur@proton.me"
add_filter( 'df_notification_body', 'filter_email_CIPF', 1); // 1
- "Commande \u00e0 v\u00e9rifier sur le site :lamy, Hugo a command\u00e9 sa carte."
not used :
add_filter( 'df_contact_recipient', 'filter_email_CIPF', 1); // 6-7
add_filter( 'df_contact_recipient', 'filter_email_CIPF', 1); // 6-7
add_filter( 'df_contact_body', 'filter_email_CIPF', 1); // 4-5
add_filter( 'df_contact_body', 'filter_email_CIPF', 1); // 4-5
add_filter( 'wpml_translate_single_string', 'filter_email_CIPF', 1); // 3
add_filter('df_contact_body', 'filter_email_CIPF', 1); // 0
*/
/*
1 $body = apply_filters( 'df_notification_body', $body, $post_array );
2 $email = apply_filters( 'df_notifcation_recipient', $email, $form_id, $post_array );
3 $title = apply_filters( 'wpml_translate_single_string', $title_get, 'divi-form-builder', 'Edit Post Button Title Text' );
4 $body = apply_filters( 'df_contact_body', $body, $post_array );
5 $body = apply_filters( 'df_contact_body', $body, $post_array );
6 $email = apply_filters( 'df_contact_recipient', $email, $form_id, $post_array );
7 $email = apply_filters( 'df_contact_recipient', $email, $form_id, $processed_post_array );
8 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
9 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
10 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
11 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
12 $message_content = apply_filters( 'the_content', get_post_field( 'post_content', $message_array['layout'] ) );
13 $content = apply_filters( 'the_content', get_post_field( 'post_content', $message_array['layout'] ) );
14 $content = apply_filters( 'the_content', get_post_field('post_content', $html_content_divi_layout));
*/
?>

View File

@@ -0,0 +1,94 @@
<?php
/*
* filter emails in the form-builder hook, before the wp_mail hook
* it receives the id of the user, no need to have the user still logged-in
*/
function filter_email_fb_CIPF($reply_body, $post_array) {
$id = $post_array['ID'];
// pattern : anything surrounded by '$$', ex : $$value$$
$pattern = '/\$\$(.*?)\$\$/';
// old version, using an outside callback, better readibility but cannot pass $id
//$new_body = preg_replace_callback($pattern, 'replace_words_CIPF', $reply_body);
// inline callback, with 'use' to get the id
$new_body = preg_replace_callback($pattern, function($matches) use ($id) {
$current_user = get_user_by('id', $id);
$query = $matches[1];
$result = $current_user->$query;
return $result;
}, $reply_body);
return $new_body;
}
add_filter('df_confirmation_body', 'filter_email_fb_CIPF', 10, 2); // the receive an email
add_filter('df_notification_body', 'filter_email_fb_CIPF', 10, 2); // the administrator receive a notification
/*
* callback to provide the user info corresponding to the $$key_word$$
*/
function replace_words_CIPF($matches) {
$current_user = wp_get_current_user();
if ($current_user->ID === 0)
return "[no user logged in]";
$query = $matches[1];
$result = $current_user->$query;
return $result;
}
/*
* filter emails at the final point : the wp_mail hook
* it uses a callback that rely on the logged-in user
* it will works well most of the time, but it's possible
* that a user logged out before the email is sent
* or event that a different user has already logged in
*/
function filter_email_wp_CIPF($args) {
error_log("in filter_email_wp_CIPF");
// pattern : anything surrounded by '$$', ex : $$value$$
$pattern = '/\$\$(.*?)\$\$/';
$old_body = $args['message'];
$new_body = preg_replace_callback($pattern, 'replace_words_CIPF', $old_body);
$args['message'] = $new_body;
return $args;
}
add_filter('wp_mail', 'filter_email_wp_CIPF', 10, 1);
/*
all filters in form_builder :
1 $body = apply_filters( 'df_notification_body', $body, $post_array );
2 $email = apply_filters( 'df_notifcation_recipient', $email, $form_id, $post_array );
3 $title = apply_filters( 'wpml_translate_single_string', $title_get, 'divi-form-builder', 'Edit Post Button Title Text' );
4 $body = apply_filters( 'df_contact_body', $body, $post_array );
5 $body = apply_filters( 'df_contact_body', $body, $post_array );
6 $email = apply_filters( 'df_contact_recipient', $email, $form_id, $post_array );
7 $email = apply_filters( 'df_contact_recipient', $email, $form_id, $processed_post_array );
8 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
9 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
10 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
11 $reply_body = apply_filters( 'df_confirmation_body', $reply_body, $post_array );
12 $message_content = apply_filters( 'the_content', get_post_field( 'post_content', $message_array['layout'] ) );
13 $content = apply_filters( 'the_content', get_post_field( 'post_content', $message_array['layout'] ) );
14 $content = apply_filters( 'the_content', get_post_field( 'post_content', $html_content_divi_layout) );
*/
?>