Files
2024_WEBSITE_fipf/plugins/cipf_plugin/php/profs_handle_states.php
2024-04-10 21:04:52 +02:00

209 lines
4.4 KiB
PHP

<?php
/*
* it means someone outside wp is accessing the file, in this case kill it.
*/
if (!defined('ABSPATH')) {
die('You can not access this file!');
}
/*
* if the acf field for transfert validation is checked,
* it means we need to validate the transfert
*
*/
function handle_transfert_validation_CIPF($user_id) {
Plgntls::debug_infos();
/*
* check and reset the acf fielf for transfert
*
*/
if (false === is_transfert_success_CIPF($user_id)) {
return;
}
reset_acf_transfert_CIPF($user_id);
/*
* if the account is not in transfert state, nothing to do
*
*/
if (false === is_account_waiting_transfert_CIPF($user_id)) {
return;
}
/*
* set account valid
* create card number
* add one year
* change state 'commande'->'renouvellement'
*
*/
set_account_valid_CIPF($user_id);
update_card_date_expiration_CIPF($user_id);
set_card_number_CIPF($user_id);
set_card_renew_CIPF($user_id);
send_emails_CIPF('transfert_success', $user_id);
}
/*
* if card expire, makes some changes
*
*/
function handle_card_expire_CIPF($user_id) {
Plgntls::debug_infos();
if (false === isset_acf_card_expiration_CIPF($user_id)) {
return;
}
if (is_card_date_expired_CIPF($user_id)) {
if (is_account_waiting_transfert_CIPF($user_id)) {
set_account_waiting_invalid_CIPF($user_id);
}
else {
set_account_expired_CIPF($user_id);
}
send_emails_CIPF('account_expired', $user_id);
}
else {
if (is_account_waiting_transfert_CIPF($user_id)) {
set_account_waiting_valid_CIPF($user_id);
}
else {
set_account_valid_CIPF($user_id);
}
}
}
/*
* this function will delete the account if the deletion date is expired
* it is called both by e scheduled event, and every time a prof go on its page
*
*/
function handle_prof_account_deletion_CIPF($user_id) {
Plgntls::debug_infos();
/*
* check if account still exists
*
*/
if (false === get_user_by('id', $user_id)) {
return;
}
/*
* check if account should be deleted
*
*/
if (!is_prof_account_deletion_date_exceeded_CIPF($user_id)) {
return;
}
send_emails_CIPF('account_deleted', $user_id);
include_once(ABSPATH.'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
/*
* this function will check if users should be sent an email
* to remind them of their card expiration date
*
*/
function handle_reminders_before_card_expire_CIPF($user_id) {
Plgntls::debug_infos();
$card_reminders = Cipf::DURATION_REMINDERS_BEFORE_ACCOUNT_EXPIRE;
$emails_reminders = Cipf:: ACF_EMAILS_REMINDERS;
if (!isset_acf_card_expiration_CIPF($user_id)) {
return;
}
if (is_card_date_expired_CIPF($user_id)) {
return;
}
$date_limit = get_card_date_expiration_CIPF($user_id);
if (false === $date_limit) {
return;
}
foreach ($card_reminders as $duration) {
$date_reminder = $date_limit->modify($duration);
$date_diff = date_diff($date_limit, $date_reminder);
$date_diff = (int)$date_diff->format('%R%a');
$date_now = date_create('now');
$current_date_diff = date_diff($date_limit, $date_now);
$current_date_diff = (int)$current_date_diff->format('%R%a');
$diff = abs($current_date_diff - $date_diff);
if ($diff === 0) {
// send_emails_CIPF('card_will_expire', $user_id);
// return; // don't send multiple emails
}
}
}
/*
* this function will check if users should be sent an email
* to remind them of their account beeing soon deleted
*
*/
function handle_reminders_before_account_deleted_CIPF($user_id) {
Plgntls::debug_infos();
$account_reminders = Cipf::DURATION_REMINDERS_BEFORE_ACCOUNT_DELETE;
$duration_deletion = Cipf::DURATION_ACCOUNT_DELETE_AFTER_EXPIRE;
if (!isset_acf_card_expiration_CIPF($user_id)) {
return;
}
if (!is_card_date_expired_CIPF($user_id)) {
return;
}
$date_limit = get_card_date_expiration_CIPF($user_id);
if (false === $date_limit) {
return;
}
$date_deletion = $date_limit->modify($duration_deletion);
foreach ($account_reminders as $reminder) {
$date_reminder = $date_deletion->modify($reminder);
$date_diff = date_diff($date_deletion, $date_reminder);
$date_diff = (int)$date_diff->format('%R%a');
$date_now = date_create('now');
$current_date_diff = date_diff($date_deletion, $date_now);
$current_date_diff = (int)$current_date_diff->format('%R%a');
// i add +3 in case there is a difference of maximum 3 days between a 31 days month and a 28 days february
if (abs($current_date_diff) <= (abs($date_diff) + 3)) {
// send_emails_CIPF('account_will_be_deleted', $user_id);
// return; // don't send multiple emails
}
}
}
?>