From 4c0e4c001f1412a9c5b65e981e600bc18dbb86b8 Mon Sep 17 00:00:00 2001 From: asus Date: Mon, 8 Apr 2024 21:43:08 +0200 Subject: [PATCH] update acf field handling to centerize every call --- plugins/cipf_plugin/cipf_plugin.php | 12 +- .../php/_actions_scheduled_events.php | 167 ++++++++++++--- ...utils_states.php => _utils_acf_fields.php} | 109 ++++++++-- plugins/cipf_plugin/php/partners_page.php | 2 +- .../php/paypal/update_user_payment.php | 56 ++--- .../cipf_plugin/php/paypal/user_can_pay.php | 4 + plugins/cipf_plugin/php/profs_dates.php | 3 +- plugins/custer/admin_menu.html | 2 +- plugins/custer/admin_menu.php | 3 - plugins/custer/custer.php | 2 +- plugins/custer/custer_class.php | 107 ++++++---- ç | 197 ++++++++++++++++++ 12 files changed, 538 insertions(+), 126 deletions(-) rename plugins/cipf_plugin/php/{_utils_states.php => _utils_acf_fields.php} (82%) create mode 100644 ç diff --git a/plugins/cipf_plugin/cipf_plugin.php b/plugins/cipf_plugin/cipf_plugin.php index f8a8dde..1a980b7 100644 --- a/plugins/cipf_plugin/cipf_plugin.php +++ b/plugins/cipf_plugin/cipf_plugin.php @@ -40,7 +40,7 @@ include_once(Plgntls::root_path() . 'php/partners_register.php'); include_once(Plgntls::root_path() . 'php/partners_page.php'); include_once(Plgntls::root_path() . 'php/partners_form.php'); // utils -include_once(Plgntls::root_path() . 'php/_utils_states.php'); +include_once(Plgntls::root_path() . 'php/_utils_acf_fields.php'); include_once(Plgntls::root_path() . 'php/_utils_redirections.php'); include_once(Plgntls::root_path() . 'php/_utils_display_css.php'); include_once(Plgntls::root_path() . 'php/_utils_checks_roles.php'); @@ -81,6 +81,7 @@ class Cipf { const ACF_ACCOUNT_STATE = ['_name'=>'etat_compte', 'new'=>'nouveau prof', 'to_pay'=>'doit payer', 'valid'=>'carte valide', 'waiting_invalid'=>'en attente invalide', 'waiting_valid'=>'en attente valide', 'expired'=>'carte expiree']; const ACF_TRANSFERT_STATE = ['_name'=>'etat_virement', 'success'=>'virement validé']; const ACF_PAGE_STATE = ['_name'=>'etat_page_partenaire', 'publish'=>'Publiee', 'draft'=>'Brouillon']; + const ACF_CARD_ORDER_ID = ['_name'=>'order_id']; // META const META_PAYEMENT_STATUS = 'cipf_payement_status'; @@ -129,6 +130,15 @@ class Cipf { // SHORTCODES + // SCHEDULED EVENTS + const DURATION_OLD_ORDER_ID = '3 days'; + const DURATION_ACCOUNT_DELETE_AFTER_EXPIRE = '6 months'; + const DURATION_REMINDER_BEFORE_ACCOUNT_EXPIRE_FIRST = '1 month'; + const DURATION_REMINDER_BEFORE_ACCOUNT_EXPIRE_LAST = '7 days'; + const DURATION_REMINDER_BEFORE_ACCOUNT_DELETE_FIRST = '1 month'; + const DURATION_REMINDER_BEFORE_ACCOUNT_DELETE_LAST = '7 days'; + const DURATION_REMINDER_BEFORE_OFFER_EXPIRE = '7 days'; + // OPTIONS const OPTION_PAYPAL = [ '_name'=>'cipf_paypal_credentials', diff --git a/plugins/cipf_plugin/php/_actions_scheduled_events.php b/plugins/cipf_plugin/php/_actions_scheduled_events.php index 6042a5b..5fbc2a4 100644 --- a/plugins/cipf_plugin/php/_actions_scheduled_events.php +++ b/plugins/cipf_plugin/php/_actions_scheduled_events.php @@ -33,33 +33,15 @@ if (!defined('ABSPATH')) { /* * events and emails : * -* - payments : : suppress old order_ids -* - partners : email : offres temporaires -> gerer qu'elles disparaissent apres la date de validite -> la passer en masquer -* - partners : email : la gestion des offres à échéance -* - payments : email : schedule event pour supprimer le compte xx temps (6 mois ?) apres fin de validite de la carte -* - payments : email : schedule event pour supprimer les codes -* - payments : email : schedule event pour desactiver la carte -* - payments : email : faire rappels emails -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* +* 1. [/] payments : TIME_OLD_ORDER_ID - suppress old order_ids +* 2. [ ] prof (email) : TIME_ACCOUNT_DELETE_AFTER_EXPIRE - schedule event to suppress the account xx time (6 month ?) after end of validity of the card, and supress the codes +* 3. [ ] prof (email) : - schedule event to deactivate the card +* 4. [ ] prof (email) : TIME_REMINDER_BEFORE_ACCOUNT_EXPIRE_FIRST - send emails reminder before account deactivate +* 5. [ ] prof (email) : TIME_REMINDER_BEFORE_ACCOUNT_EXPIRE_LAST - send emails reminder before account deactivate +* 6. [ ] prof (email) : TIME_REMINDER_BEFORE_ACCOUNT_DELETE_FIRST - send emails reminder before account delete +* 7. [ ] prof (email) : TIME_REMINDER_BEFORE_ACCOUNT_DELETE_LAST - send emails reminder before account delete +* 8. [ ] partner (email) : TIME_REMINDER_BEFORE_OFFER_EXPIRE - send emails reminder before offer ends +* 9. [ ] partners (email) : - temp offers -> make them disappeay after end card validity -> put them in hidden * */ @@ -67,7 +49,7 @@ if (!defined('ABSPATH')) { /* -* add a schedule event to delete this order_id +* 1. prof, add a schedule event to delete this order_id * after 3 days ? * */ @@ -85,6 +67,135 @@ add_action('orderid_deletion_event_CIPF', 'delete_order_id_later_CIPF', 10, 2); +/* +* 2. prof, suppress account XX time after expiration, also email +* +*/ +function schedule_prof_account_suppression_CIPF($user_id) { + Plgntls::debug_infos(); + $duration_deletion = Cipf::DURATION_ACCOUNT_DELETE_AFTER_EXPIRE; + $date_limit = get_date_limit_CIPF($user_id); + $time_limit = $date_limit->getTimestamp(); + //$date_interval = date_interval_create_from_date_string($duration_deletion); + //$date_deletion = $date_limit->add($date_interval); + $date_deletion = $date_limit->modify('+'.$duration_deletion); + $time_deletion = $date_deletion->getTimestamp(); +//error_log("duration_deletion: " . json_encode($duration_deletion)); +//error_log("date_limit : " . json_encode($date_limit)); +//error_log("time_limit : " . json_encode($time_limit)); +////error_log("date_interval: " . json_encode($date_interval)); +//error_log("date_deletion: " . json_encode($date_deletion)); +//error_log("time_deletion: " . json_encode($time_deletion)); +/* +duration_deletion: "6 months" +date_limit : {"date":"2094-09-19 15:33:35.000000","timezone_type":3,"timezone":"UTC"} +time_limit : 3919851215 +date_deletion: {"date":"2094-09-19 15:33:35.000000","timezone_type":3,"timezone":"UTC"} +time_deletion: 3935748815 + +duration_deletion: "6 months" +date_limit : {"date":"2094-09-19 15:32:03.000000","timezone_type":3,"timezone":"UTC"} +time_limit : 3919851123 +date_deletion: {"date":"2094-09-19 15:32:03.000000","timezone_type":3,"timezone":"UTC"} +time_deletion: 3935748723 +*/ + //$delay = strtotime('+3 days'); +// wp_schedule_single_event($delay, 'scedule_event_CIPF', array($user_id)); +} +//function event_CIPF($user_id) { +// Plgntls::debug_infos(); +//} +//add_action('schedule_event_CIPF', 'event_CIPF', 10, 2); + + + + +/* +* 3. prof, deactivate card at expiration time, also email +* +function schedule__CIPF($user_id) { + Plgntls::debug_infos(); + $delay = strtotime('+3 days'); + wp_schedule_single_event($delay, 'scedule_event_CIPF', array($user_id)); +} +function event_CIPF($user_id) { + Plgntls::debug_infos(); +} +add_action('schedule_event_CIPF', 'event_CIPF', 10, 2); +*/ + + + + +/* +* 4. && 5. prof, send email reminder before account expire +* +function schedule__CIPF($user_id) { + Plgntls::debug_infos(); + $delay = strtotime('+3 days'); + wp_schedule_single_event($delay, 'scedule_event_CIPF', array($user_id)); +} +function event_CIPF($user_id) { + Plgntls::debug_infos(); +} +add_action('schedule_event_CIPF', 'event_CIPF', 10, 2); +*/ + + + + +/* +* 6. && 7. prof, send email reminder account deletion +* +function schedule__CIPF($user_id) { + Plgntls::debug_infos(); + $delay = strtotime('+3 days'); + wp_schedule_single_event($delay, 'scedule_event_CIPF', array($user_id)); +} +function event_CIPF($user_id) { + Plgntls::debug_infos(); +} +add_action('schedule_event_CIPF', 'event_CIPF', 10, 2); +*/ + + + + +/* +* 8. partner, send email before offer expire +* +function schedule__CIPF($user_id) { + Plgntls::debug_infos(); + $delay = strtotime('+3 days'); + wp_schedule_single_event($delay, 'scedule_event_CIPF', array($user_id)); +} +function event_CIPF($user_id) { + Plgntls::debug_infos(); +} +add_action('schedule_event_CIPF', 'event_CIPF', 10, 2); +*/ + + + + +/* +* 9. partner, handle offer expire, also sens email +* +function schedule__CIPF($user_id) { + Plgntls::debug_infos(); + $delay = strtotime('+3 days'); + wp_schedule_single_event($delay, 'scedule_event_CIPF', array($user_id)); +} +function event_CIPF($user_id) { + Plgntls::debug_infos(); +} +add_action('schedule_event_CIPF', 'event_CIPF', 10, 2); +*/ + + + + + diff --git a/plugins/cipf_plugin/php/_utils_states.php b/plugins/cipf_plugin/php/_utils_acf_fields.php similarity index 82% rename from plugins/cipf_plugin/php/_utils_states.php rename to plugins/cipf_plugin/php/_utils_acf_fields.php index edd4173..6b806a8 100644 --- a/plugins/cipf_plugin/php/_utils_states.php +++ b/plugins/cipf_plugin/php/_utils_acf_fields.php @@ -42,6 +42,8 @@ if (!defined('ABSPATH')) { * * [/] cgv * +* [/] order_id +* * */ @@ -83,7 +85,7 @@ function get_field_init_CIPF($acf_field_name, $acf_id) { * global 'setter' and 'izzer' for this file * */ -function is_acf_state_CIPF($acf_field, $state_name, $acf_id) { +function is_acf_field_CIPF($acf_field, $acf_value, $acf_id) { Plgntls::debug_infos(); /* @@ -101,14 +103,49 @@ function is_acf_state_CIPF($acf_field, $state_name, $acf_id) { */ $acf_state = get_field_init_CIPF($acf_field['_name'], $acf_id);; - if ($acf_state === $acf_field[$state_name]) { + if ($acf_state === $acf_field[$acf_value]) { return true; } return false; } -function set_acf_state_CIPF($acf_field, $state_name, $acf_id) { +/* +* some values are predefined in the plugin class for acf fields +* +*/ +function is_predefined_acf_state($acf_field, $acf_value) { Plgntls::debug_infos(); - update_field($acf_field['_name'], $acf_field[$state_name], $acf_id); + if (empty($acf_value)) { + return false; + } + if (!is_string($acf_value)) { + return false; + } + if(isset($acf_field[$acf_value])) { + return true; + } + return false; +} +function set_acf_field_CIPF($acf_field, $acf_value, $acf_id) { + Plgntls::debug_infos(); + + /* + * if acf_value is the name of a key in const acf_field, + * then we want to get its value from there, + * otherwise we just use it's value directly + * + */ + if (is_predefined_acf_state($acf_field, $acf_value)) { + $value = $acf_field[$acf_value]; + } + else { + $value = $acf_value; + } +error_log("acf_field: " . json_encode($acf_field)); + update_field($acf_field['_name'], $value, $acf_id); +} +function get_acf_field_CIPF($acf_field, $state_name, $acf_id) { + Plgntls::debug_infos(); + return get_field_init_CIPF($acf_field, $acf_id); } @@ -136,7 +173,7 @@ function is_account_state_CIPF($state_name, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - return is_acf_state_CIPF($acf_account_state, $state_name, $acf_id); + return is_acf_field_CIPF($acf_account_state, $state_name, $acf_id); } function is_account_new_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -183,7 +220,7 @@ function set_account_state_CIPF($state_name, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - set_acf_state_CIPF($acf_account_state, $state_name, $acf_id); + set_acf_field_CIPF($acf_account_state, $state_name, $acf_id); } function set_account_new_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -228,7 +265,7 @@ function is_card_state_CIPF($state, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - return is_acf_state_CIPF($acf_card_state, $state, $acf_id); + return is_acf_field_CIPF($acf_card_state, $state, $acf_id); } function is_card_new_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -248,7 +285,7 @@ function set_card_state_CIPF($state, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - set_acf_state_CIPF($acf_card_state, $state, $acf_id); + set_acf_field_CIPF($acf_card_state, $state, $acf_id); } function set_card_new_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -277,7 +314,7 @@ function is_page_state_CIPF($state, $post_id = null) { $post_id = get_the_ID(); } $acf_id = $post_id; - return is_acf_state_CIPF($acf_page_state, $state, $acf_id); + return is_acf_field_CIPF($acf_page_state, $state, $acf_id); } function is_page_publish_CIPF($post_id = null) { Plgntls::debug_infos(); @@ -297,7 +334,7 @@ function set_page_state_CIPF($state, $post_id = null) { $post_id = get_the_ID(); } $acf_id = $post_id; - set_acf_state_CIPF($acf_page_state, $state, $acf_id); + set_acf_field_CIPF($acf_page_state, $state, $acf_id); } function set_page_publish_CIPF($post_id = null) { Plgntls::debug_infos(); @@ -326,7 +363,7 @@ function is_card_method_CIPF($state, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - return is_acf_state_CIPF($acf_card_payment_method, $state, $acf_id); + return is_acf_field_CIPF($acf_card_payment_method, $state, $acf_id); } function is_payment_method_paypal_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -359,7 +396,7 @@ function is_payment_state_CIPF($type, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - return is_acf_state_CIPF($acf_card_payment_state, $type, $acf_id); + return is_acf_field_CIPF($acf_card_payment_state, $type, $acf_id); } function is_payment_started_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -387,7 +424,7 @@ function set_payment_state_CIPF($type, $user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - set_acf_state_CIPF($acf_card_payment_state, $type, $acf_id); + set_acf_field_CIPF($acf_card_payment_state, $type, $acf_id); } function set_payment_started_CIPF($user_id = null) { Plgntls::debug_infos(); @@ -425,7 +462,7 @@ function set_card_number_CIPF($user_id = null) { $date_now = date_create('today'); $card_id = $date_now->format('Ymd') . $user_id; - update_field($acf_card_number['_name'], $card_id, $acf_id); + set_acf_field_CIPF($acf_card_number, $card_id, $acf_id); } @@ -444,7 +481,46 @@ function reset_acf_cgv_CIPF($user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - update_field($acf_cgv['_name'], array(""), $acf_id); + set_acf_field_CIPF($acf_cgv, array(""), $acf_id); +} + + + + + +/* +* order_id +* +*/ +function reset_acf_order_id_CIPF($user_id = null) { + Plgntls::debug_infos(); + $acf_order_id = Cipf::ACF_CARD_ORDER_ID; + + if (is_null($user_id)) { + $user_id = get_current_user_id(); + } + $acf_id = 'user_'.$user_id; + set_acf_field_CIPF($acf_order_id, "", $acf_id); +} +function get_acf_order_id_CIPF($user_id = null) { + Plgntls::debug_infos(); + $acf_order_id = Cipf::ACF_CARD_ORDER_ID; + + if (is_null($user_id)) { + $user_id = get_current_user_id(); + } + $acf_id = 'user_'.$user_id; + return get_acf_field_CIPF($acf_order_id, $acf_id); +} +function set_acf_order_id_CIPF($order_id, $user_id = null) { + Plgntls::debug_infos(); + $acf_order_id = Cipf::ACF_CARD_ORDER_ID; + + if (is_null($user_id)) { + $user_id = get_current_user_id(); + } + $acf_id = 'user_'.$user_id; + set_acf_field_CIPF($acf_order_id, $order_id, $acf_id); } @@ -463,6 +539,7 @@ function is_transfert_success_CIPF($user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; + // we dont use the utility function 'get_acf_field_CIPF()' because we want to know if it was never init. Do we ? $transfert_state = get_field($acf_transfert_state['_name'], $acf_id); @@ -489,7 +566,7 @@ function reset_acf_transfert_CIPF($user_id = null) { $user_id = get_current_user_id(); } $acf_id = 'user_'.$user_id; - update_field($acf_transfert_state['_name'], array(""), $acf_id); + set_acf_field_CIPF($acf_transfert_state, array(""), $acf_id); } diff --git a/plugins/cipf_plugin/php/partners_page.php b/plugins/cipf_plugin/php/partners_page.php index 2c059eb..1b1c0a9 100644 --- a/plugins/cipf_plugin/php/partners_page.php +++ b/plugins/cipf_plugin/php/partners_page.php @@ -226,7 +226,7 @@ function toggle_partner_page_CIPF() { } -add_action('template_redirect', 'toggle_partner_page_CIPF'); +add_action('template_redirect', 'toggle_partner_page_CIPF', 5); diff --git a/plugins/cipf_plugin/php/paypal/update_user_payment.php b/plugins/cipf_plugin/php/paypal/update_user_payment.php index f52d7fe..3c0d92b 100644 --- a/plugins/cipf_plugin/php/paypal/update_user_payment.php +++ b/plugins/cipf_plugin/php/paypal/update_user_payment.php @@ -38,20 +38,17 @@ if (!defined('ABSPATH')) { function update_user_pre_order_CIPF($message) { Plgntls::debug_infos(); $acf_payment_status = Cipf::ACF_CARD_PAYMENT_STATE; - $meta_order_id = Cipf::META_ORDER_ID; $order_id = $message->id; $user_id = get_current_user_id(); - $acf_id = 'user_'.$user_id; /* - * - delete previous order ids - * ->if we are here it's because a new order will try to be created - * - addind order_id to cipf_order_id meta field + * set new order_id + * -> it will delete the previous one + * -> if we are here it's because a new order will try to be created * */ - delete_user_meta($user_id, $meta_order_id); - add_user_meta($user_id, $meta_order_id, $order_id); + set_acf_order_id_CIPF($order_id, $user_id); /* * create a meta field to check states of payements on prof author page : @@ -77,8 +74,9 @@ function update_user_post_capture_CIPF($message) { $order_id = $message->id; $user_id = get_current_user_id(); $status = null; - if (is_object($message) && isset($message->status)) + if (is_object($message) && isset($message->status)) { $status = $message->status; + } /* * capture status : https://developer.paypal.com/docs/api/orders/v2/#definition-order_status @@ -96,18 +94,14 @@ function update_user_post_capture_CIPF($message) { * -> it is at least necessary to find the user who did the purchase * */ - // find the user containing the order_id and delete this order_id $user_id_to_update = find_user_with_order_id_CIPF($user_id, $order_id); - if ($user_id_to_update === false) + if ($user_id_to_update === false) { throw new HttpException('cannot find user with this order_id', 502); + } if ($status === 'COMPLETED') { // proceed to validate payment for user success_payment_for_user_CIPF($user_id_to_update, $order_id); } - else if ($status === 'PENDING') { - // i don't know what to do yet, maybe make more checks and output a message to contact diego ? - // https://developer.paypal.com/docs/api/orders/v2/#definition-capture_status_details - } else { failure_payment_for_user_CIPF($user_id_to_update, $order_id, $status); } @@ -129,17 +123,10 @@ function update_user_post_capture_CIPF($message) { */ function failure_payment_for_user_CIPF($user_id, $order_id, $status) { Plgntls::debug_infos(); - $meta_order_id = Cipf::META_ORDER_ID; $acf_id = 'user_'.$user_id; - /* - * remove the order_id from user meta - * - */ - delete_user_meta($user_id, $meta_order_id, $order_id); - - + // schedule_delete_orderid_CIPF($user_id, $order_id) set_payment_failure_CIPF($user_id); set_account_to_pay_CIPF($user_id); send_emails_CIPF('payment_echec', $user_id); @@ -152,18 +139,11 @@ function failure_payment_for_user_CIPF($user_id, $order_id, $status) { */ function success_payment_for_user_CIPF($user_id, $order_id) { Plgntls::debug_infos(); - $meta_order_id = Cipf::META_ORDER_ID; $acf_id = 'user_'.$user_id; - /* - * remove the order_id from user meta - * - */ - delete_user_meta($user_id, $meta_order_id, $order_id); - - + // schedule_delete_orderid_CIPF($user_id, $order_id) update_card_expiration_CIPF($user_id); if (is_card_new_CIPF()) { @@ -188,10 +168,10 @@ function success_payment_for_user_CIPF($user_id, $order_id) { */ function find_user_with_order_id_CIPF($current_user_id, $order_id) { Plgntls::debug_infos(); - $meta_order_id = Cipf::META_ORDER_ID; + $acf_order_id = Cipf::ACF_CARD_ORDER_ID; $role_prof = Cipf::ROLE_PROF; - $user_metas = get_user_meta($current_user_id, $meta_order_id, false); + $user_metas = get_user_meta($current_user_id, $acf_order_id['_name'], false); if (in_array($order_id, $user_metas)) { return $current_user_id; } @@ -202,16 +182,18 @@ function find_user_with_order_id_CIPF($current_user_id, $order_id) { * https://developer.wordpress.org/reference/classes/WP_User_Query/prepare_query/ * */ - $users = get_users(array( + $user = get_users(array( 'role' => $role_prof, - 'meta_key' => $meta_order_id, + 'meta_key' => $acf_order_id, 'meta_value' => $order_id, 'fields' => 'ID', )); - if (count($users) > 1) + if (count($user) > 1) { throw new HttpException('multiple users with same order_id', 502); - else if (count($users) === 1) - return reset($users); + } + else if (count($user) === 1) { + return reset($user); + } return false; } diff --git a/plugins/cipf_plugin/php/paypal/user_can_pay.php b/plugins/cipf_plugin/php/paypal/user_can_pay.php index c77b807..6683279 100644 --- a/plugins/cipf_plugin/php/paypal/user_can_pay.php +++ b/plugins/cipf_plugin/php/paypal/user_can_pay.php @@ -54,6 +54,10 @@ function check_can_pay_CIPF() { $user_id = get_current_user_id(); $acf_id = 'user_' . $user_id; + + +schedule_prof_account_suppression_CIPF($user_id); + /* * check if payment is virement or immediat * diff --git a/plugins/cipf_plugin/php/profs_dates.php b/plugins/cipf_plugin/php/profs_dates.php index eff408d..4ea7ef9 100644 --- a/plugins/cipf_plugin/php/profs_dates.php +++ b/plugins/cipf_plugin/php/profs_dates.php @@ -148,6 +148,7 @@ function card_date_exists_CIPF($user_id = null) { * */ $date_now = date_create('today'); + // we dont use utility fonction 'get_acf_field_CIPF' because we want to know if it was not init. Do we ? $current_date = get_field($acf_card_expiration['_name'], $acf_id); if (empty($current_date)) { @@ -196,7 +197,7 @@ function update_card_expiration_CIPF($user_id = null) { * */ $date_plus_one_year = $current_date_limit->add(date_interval_create_from_date_string('+'.$card_duration)); - update_field($acf_card_expiration['_name'], $date_plus_one_year->format($acf_date_format), $acf_id); + set_acf_field_CIPF($acf_card_expiration, $date_plus_one_year->format($acf_date_format), $acf_id); } diff --git a/plugins/custer/admin_menu.html b/plugins/custer/admin_menu.html index 1ff2217..410c3b2 100644 --- a/plugins/custer/admin_menu.html +++ b/plugins/custer/admin_menu.html @@ -13,11 +13,11 @@ details:not([open]) { summary { margin: 0px; - cursor: grab; } } details { summary { + cursor: grab; h2 { display: inline; } diff --git a/plugins/custer/admin_menu.php b/plugins/custer/admin_menu.php index e398132..0a33803 100644 --- a/plugins/custer/admin_menu.php +++ b/plugins/custer/admin_menu.php @@ -30,8 +30,6 @@ function menu_content() { //delete_option($option_notice_object['_name']); $option_notice = \Plgntls_custer::get_option_safe($option_notice_object, true); -//error_log("option_notice[style]: " . $option_notice['style']); -//error_log("option_notice[html]: " . $option_notice['html']); ob_start(); include(\Plgntls_custer::root_path() . 'admin_menu.html'); @@ -39,7 +37,6 @@ function menu_content() { } -//function update_payment_messages_option_CIPF($request, $option_name, $option_data, $option_default) { diff --git a/plugins/custer/custer.php b/plugins/custer/custer.php index 1690ca4..31fc15d 100644 --- a/plugins/custer/custer.php +++ b/plugins/custer/custer.php @@ -4,7 +4,7 @@ Plugin Name: hggg_custer Plugin URI: Description: customize user : output infos on page, on email, and change current user id momentarly Author: hugogogo -Version: 0.2.3 +Version: 0.2.3.1 Author URI: */ diff --git a/plugins/custer/custer_class.php b/plugins/custer/custer_class.php index b9b2ad4..223b8ba 100644 --- a/plugins/custer/custer_class.php +++ b/plugins/custer/custer_class.php @@ -72,6 +72,15 @@ div.example { border-left: 1px solid black; margin-left: 20px; padding-left: 10px; +} +.flex { + display: flex; +} + .margin-right-10 { + margin-right: 10px; +} + .margin-top-20 { + margin-top: 20px; }', 'html'=> '

mode d\'emplois de custer

@@ -79,22 +88,22 @@ div.example {

1. emails : $$mot-clé$$

-

1.1. mots clés custer

+

1.1. mots-clés custer

-

dans les emails, aussi bien dans le message, que dans le sujet ou la personne destinataire, vous pouvez utiliser un mot-clé custer.

+

dans les emails, aussi bien dans le message, que dans le sujet ou la personne destinataire, on peut utiliser un mot-clé custer.

Qu\'est-ce que c\'est que ça ;) ?

- C\'est simplement un mot clé écrit entre doubles dollars : $$mot-clé$$
- Lorsque un email contient ce schéma de mot entouré par des doubles dollars, il essaye de trouver la valeur associée a ce mot-clé.
- Ces mots clés correspondent en fait aux données que wordpress enregistre sur chaque personne. + C\'est simplement un mot-clé écrit entre doubles dollars : $$mot-clé$$
+ Lorsque un email contient ce schéma de mot entouré par des doubles dollars, il essaye de trouver la valeur associée à ce mot-clé.
+ Ces mots-clés correspondent en fait aux données que wordpress enregistre sur chaque personne.

-

1.2. trouver les mots clés

+

1.2. trouver les mots-clés

-

Ce n\'est pas toujours facile de savoir les mots clés qui sont disponibles, sans aller voir le code directement, donc voici un exemple de liste de mots clés pour une utilisatrice fictive :

+

Ce n\'est pas toujours facile de savoir les mots-clés qui sont disponibles, sans aller voir le code directement, donc voici un exemple de liste de mots-clés pour une utilisatrice fictive :

exemples de mots-clés et leur valeurs (la liste exacte peut dépendre de la personne, mais cet exemple contient les valeurs les plus communes) @@ -173,37 +182,16 @@ div.example {

- Vous pouvez remarquer que certains mot clés sont sous la forme \'__mot_clé__\'
- Ce sont des mot clés qui ne sont pas définis par worpdress de base, mais rajoutés par ce plugin (custer), plus d\'explication plus bas, dans la section 1.3. + On peut remarquer que certains mot-clés sont sous la forme \'__mot_clé__\' avec deux doubles underscores avant et apres : "__"moit-clé"__"
+ Ce sont des mot-clés qui ne sont pas définis par worpdress de base, mais rajoutés par ce plugin (custer), plus d\'explication plus bas, dans la section suivante 1.3.

-

Une méthode pour voir tous les mots clés disponibles pour une personne connectée, c\'est d\'utiliser le shortcode [custer_user_info], comme expliqué dans la partie 2 de ce mode d\'emplois

+

Une méthode pour voir tous les mots-clés disponibles pour une personne connectée, c\'est d\'utiliser le shortcode [custer_user_info], comme expliqué dans la partie 2 de ce mode d\'emplois.

-

1.3. exemple dans un email

+

1.3. mots-clés speciaux \'__mot_clé__\'

-

Un exemple d\'utilisation dans un email, avec les données de l\'exemple precedent :

-
-
    -
  • destinataire : $$user_email$$
  • -
  • sujet : compte de $$nickname$$
  • -
  • message : Bonjour $$first_name$$ $$last_name$$, votre carte numero $$numero_de_la_carte$$ va bientot arriver a expiration, connectez-vous a votre compte pour la renouveler : $$__author_page_url__$$
  • -
-
-

et une fois les mot clés convertis, cet email devient :

-
-
    -
  • destinataire : temlevorku@gufum.com
  • -
  • sujet : compte de AnneM
  • -
  • message : Bonjour Anne Martin, votre carte numero 20240403154 va bientot arriver a expiration, connectez-vous a votre compte pour la renouveler : https://local-cipf-plugin.com/author/annem/
  • -
-
-
- -

1.4. mots clés speciaux \'__mot_clé__\'

- -
-

certains mot clés sont entourés par des doubles underscore : __mot_clé__, ce sont des mot clés definis par custer, voici leur signification :

+

Certains mot-clés sont entourés par des doubles underscore : __mot_clé__, ce sont des mot-clés definis par custer, voici leur signification :

  • __admin_email__ : l\'adresse email définie dans le menu \'Réglages\' > \'Général\' > \'Adresse e-mail d’administration\'
  • __author_page_url__ : la page de profil de la personne connectée, appellée \'page auteur\' par wordpress (c\'est une page un peu speciale, qui ne peut pas être construite comme les autres pages, mais par le theme directement) -> ici elle sert pour les profs, c\'est leur page de profile
  • @@ -212,6 +200,27 @@ div.example {

+ +

1.4. exemple dans un email

+ +
+

Un exemple d\'utilisation dans un email, avec les données de l\'exemple précédent :

+
+
    +
  • destinataire : $$user_email$$
  • +
  • sujet : compte de $$nickname$$
  • +
  • message : Bonjour $$first_name$$ $$last_name$$, votre carte numero $$numero_de_la_carte$$ va bientot arriver a expiration, connectez-vous a votre compte pour la renouveler : $$__author_page_url__$$
  • +
+
+

et une fois les mot-clés convertis, cet email devient :

+
+
    +
  • destinataire : temlevorku@gufum.com
  • +
  • sujet : compte de AnneM
  • +
  • message : Bonjour Anne Martin, votre carte numero 20240403154 va bientot arriver a expiration, connectez-vous a votre compte pour la renouveler : https://local-cipf-plugin.com/author/annem/
  • +
+
+
@@ -223,7 +232,7 @@ div.example {

Les shortcodes sont des \'petits codes\' qu\'on peut ecrire sur les pages front de wordpress, et qui vont executer un code côté serveur, et souvent être remplacés par le resultat de ce code.

-

C\'est à dire, plus concretement, qu\'on peut écrire une shortcode [mon-shortcode], et qu\'il se transformera en autre chose, par exemple \'salut\'.

+

C\'est à dire, plus concretement, qu\'on peut écrire un shortcode [mon-shortcode], et qu\'il se transformera en autre chose, par exemple \'salut\'.

Le shortcode de custer s\'appelle \'custer_user_info\', et il permet de retrouver la valeur du mot-clé qu\'on lui donne, les mêmes mots-clés que décrits dans la partie 1 de ce mode d\'emplois, à propos des emails.
Cette fois-ci, au lieu d\'ecrire le mot-clé entre double dollars $$mot_clé$$, on l\'écrit dans le shortcode : [custer_user_info mot-clé]. @@ -238,7 +247,20 @@ Mais pourquoi utiliser un shortcode ET une version avec les doubles dollars ? To

En utilisant le shortcode seul, c\'est à dire uniquement avec son nom et sans aucun autre argument : [custer_user_info], on obtient une liste de tous les mots-clés et leur valeur de quelqu\'un. De qui ? He bien, soit de la personne connectée, soit de la personne qui à ecrit la page, mais ce point est expliqué dans la section 2.4.

-

C\'est cette méthode, le shortcode de base, qui a été utilisée pour obtenir la liste montrée plus haut dans la section email.

+

C\'est cette méthode, le shortcode de base, qui a été utilisée pour obtenir la liste montrée plus haut dans la section email, et qui donne quelque chose comme :

+
+

[custer_user_info] -->

+
+display_name : AnneM
+etat_compte : carte valide
+fin_de_validite : 19/03/2094
+first_name : Anne
+fonction : Prof
+ID : 154
+nickname : AnneM
+... 
+			
+

Ce n\'est pas prévu pour être vraiment utilisé sur le site finale, uniquement comme un outil pour voir les valeurs disponibles.

@@ -247,6 +269,12 @@ Mais pourquoi utiliser un shortcode ET une version avec les doubles dollars ? To

C\'est sous cette forme de base que le shortcode va fonctionner : afficher la valeur d\'un mot-clé.

Par exemple, si la prof connectée s\'appelle AnneM sur le site, on peut obtenir ce surnom en ecrivant [custer_user_info nickname]

+

exemples :

+
    +
  • [custer_user_info nickname] --> AnneM
  • +
  • [custer_user_info first-name] --> Anne
  • +
  • [custer_user_info fonction] --> Prof
  • +

C\'est assez simple, cependant il y à un point important qui est expliqué dans la section suivante, c\'est de choisir de qui on affiche les infos.

@@ -284,7 +312,8 @@ Généralement les pages de profils ne sont pas visibles publiquement, mais une

Il y a un autre argument qu\'on peut rajouter à ce shortcode, c\'est la valeur qu\'on veut voir si le mot-clé ne trouve aucune valeur correspondante.

En effet, si on demande la description d\'une personne par exemple, et qu\'elle n\'est pas remplie, le shortcode va juste retourner rien du tout, par defaut.

Mais peut-etre qu\'on prefèrerait qu\'il affiche quelque chose comme \'description non-fournie\' ?

-

Dans ce cas c\'est très simple, il suffit de le préciser dans l\'arguement if_empty=\'description non-fournie\' (ça fonctionne avec id=\'\' aussi) :

+

Dans ce cas c\'est très simple, il suffit de le préciser dans l\'arguement if_empty=\'description non-fournie\' (ça fonctionne avec id=\'\' aussi)

+

Exemples si Hugo visite la page d\'une personne qui n\'a pas de description, et la description de Hugo est "hugogogo est un rigolo" :