ldc-groupe/content/plugins/ldc-messages/cron.php

81 lines
2.7 KiB
PHP

<?php
require_once __DIR__ . '/contact-list.php';
add_filter( 'cron_schedules', function ( $schedules ) {
$schedules['everyweek'] = array(
'interval' => WEEK_IN_SECONDS,
'display' => __( 'Every Week' )
);
return $schedules;
} );
function ldc_m_plugin_activation() {
// CRON RAPPEL NB MESSAGES
if (!wp_next_scheduled ( 'nb_messages_ldc_m' )) {
wp_schedule_event(strtotime('4:30:00'), 'everyweek', 'nb_messages_ldc_m');
}
// CRON SUPPRESSION ARCHIVES > 2 ans
if (!wp_next_scheduled ( 'nb_messages_ldc_m_archives' )) {
wp_schedule_event(strtotime('4:30:00'), 'everyweek', 'nb_messages_ldc_m_archives');
}
}
register_activation_hook(WP_CONTENT_DIR . '/plugins/ldc-messages/ldc-messages.php', 'ldc_m_plugin_activation');
// ---- unschedule event upon plugin deactivation
function ldc_m_plugin_deactivation() {
// CRON RAPPEL NB MESSAGES
$timestamp = wp_next_scheduled ('nb_messages_ldc_m');
wp_unschedule_event ($timestamp, 'nb_messages_ldc_m');
// CRON SUPPRESSION ARCHIVES > 2 ans
$timestamp = wp_next_scheduled ('nb_messages_ldc_m_archives');
wp_unschedule_event ($timestamp, 'nb_messages_ldc_m_archives');
}
register_deactivation_hook (WP_CONTENT_DIR . '/plugins/ldc-messages/ldc-messages.php', 'ldc_m_plugin_deactivation');
function sendNotificationWeek($MessageTypeID)
{
foreach (getContactsList() as $contactsList) {
if (in_array($contactsList['MessageTypeID'], $MessageTypeID)) {
return $contactsList['contacts'];
}
}
return [];
}
function NbMessages_ldc_m(){
global $wpdb;
$messages = $wpdb->get_results("SELECT ref, date, type_id FROM wp_messages WHERE STATUS = 0 ORDER BY type_id");
$groupMsg = [];
for ($i = 0; $i < count($messages); $i++){
$groupMsg[] = $messages[$i]->ref . " | " . date('d-m-Y H:i', strtotime($messages[$i]->date));
if ($messages[$i]->type_id !== $messages[$i + 1]->type_id){
$email = sendNotificationWeek($messages[$i]->type_id);
wp_mail($email, "[RAPPEL] Vous avez ". count($groupMsg) ." message(s) à traiter sur le site LDC", implode('<br>', $groupMsg));
$groupMsg = [];
}
}
if (!wp_next_scheduled ( 'nb_messages_ldc_m' )) {
wp_schedule_event(strtotime('4:30:00'), 'everyweek', 'nb_messages_ldc_m');
}
}
add_action ('nb_messages_ldc_m', 'NbMessages_ldc_m');
function NbMessagesArchives_ldc_m(){
global $wpdb;
$wpdb->query("DELETE FROM wp_messages WHERE DATE < CURDATE() - INTERVAL 2 YEAR");
if (!wp_next_scheduled ( 'nb_messages_ldc_m_archives' )) {
wp_schedule_event(strtotime('4:30:00'), 'everyweek', 'nb_messages_ldc_m_archives');
}
}
add_action ('nb_messages_ldc_m_archives', 'NbMessagesArchives_ldc_m');