Seditio Source
Root |
./othercms/b2evolution_7.2.3/inc/cron/views/_cronjob_settings.form.php
<?php
/**
 * This file implements the UI view for the settings of cron jobs.
 *
 * This file is part of the evoCore framework - {@link http://evocore.net/}
 * See also {@link https://github.com/b2evolution/b2evolution}.
 *
 * @license GNU GPL v2 - {@link http://b2evolution.net/about/gnu-gpl-license}
 *
 * @copyright (c)2003-2020 by Francois Planque - {@link http://fplanque.com/}
 *
 * @package admin
 */
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );


global
$Settings, $admin_url;

$Form = new Form( NULL, 'cron_settings_checkchanges' );

$Form->begin_form( 'fform' );

$Form->add_crumb( 'cronsettings' );
$Form->hidden( 'ctrl', 'crontab' );
$Form->hidden( 'tab', get_param( 'tab' ) );
$Form->hidden( 'action', 'settings' );

$cron_jobs = get_cron_jobs_config( 'name' );
foreach(
$cron_jobs as $cron_job_key => $cron_job_name )
{
   
$Form->begin_fieldset( $cron_job_name.cron_job_manual_link( $cron_job_key ) );

       
// Additional settings per cron job:
       
switch( $cron_job_key )
        {
            case
'send-email-campaign':
               
// Send a chunk of x emails for the campaign:
               
if( check_user_perm( 'emails', 'edit' ) )
                {    
// Allow to edit email cron settings only if user has a permission:
                   
$Form->text_input( 'email_campaign_chunk_size', $Settings->get( 'email_campaign_chunk_size' ), 5, TB_('Chunk Size'), TB_('emails at a time'), array( 'maxlength' => 10 ) );
                }
                elseif(
check_user_perm( 'emails', 'view' ) )
                {    
// Only display setting value:
                   
$Form->info( TB_('Chunk Size'), $Settings->get( 'email_campaign_chunk_size' ), TB_('emails at a time') );
                }
               
$Form->duration_input( 'email_campaign_cron_repeat', $Settings->get( 'email_campaign_cron_repeat' ), TB_('Delay between chunks'), 'days', 'minutes', array( 'note' => TB_('timing between scheduled job runs') ) );
               
$Form->duration_input( 'email_campaign_cron_limited', $Settings->get( 'email_campaign_cron_limited' ), TB_('Delay in case all remaining recipients have reached max # of emails for the current day'), 'days', 'minutes', array( 'note' => TB_('timing between scheduled job runs') ) );
                if(
check_user_perm( 'emails', 'edit' ) )
                {    
// Allow to edit email cron settings only if user has a permission:
                   
$Form->text_input( 'email_campaign_max_domain', $Settings->get( 'email_campaign_max_domain' ), 5, TB_('Max emails to same domain'), TB_('In each chunk, avoid sending too many emails to same recipient domain (Useful to avoid balcklisting from gmail.com, hotmail.com, etc.)'), array( 'maxlength' => 10 ) );
                }
                elseif(
check_user_perm( 'emails', 'view' ) )
                {    
// Only display setting value:
                   
$Form->info( TB_('Max emails to same domain'), $Settings->get( 'email_campaign_max_domain' ) );
                }
                break;

            case
'prune-old-hits-and-sessions':
               
// Prune old hits & sessions (includes OPTIMIZE):
               
$oldest_session_period = max( $Settings->get( 'auto_prune_stats' ) * 86400, $Settings->get( 'timeout_sessions' ) );
               
$Form->text_input( 'auto_prune_stats', $Settings->get( 'auto_prune_stats' ), 5, TB_('Keep detailed logs for'), TB_('days').'. '.sprintf( TB_('Note: <a %s>logged-in Sessions</a> will be kept for %s.'), 'href="'.$admin_url.'?ctrl=usersettings"', seconds_to_period( $oldest_session_period ) ) );
                break;

            case
'prune-recycled-comments':
               
// Prune recycled comments:
               
$Form->text_input( 'auto_empty_trash', $Settings->get( 'auto_empty_trash' ), 5, TB_('Prune recycled comments after'), TB_('days').'.' );
                break;

            case
'cleanup-scheduled-jobs':
               
// Clean up scheduled jobs older than a threshold:
               
$Form->text_input( 'cleanup_jobs_threshold', $Settings->get( 'cleanup_jobs_threshold' ), 5, TB_('Keep normally finished tasks for'), TB_('days').'. '.TB_('The successfully finished scheduled jobs older than the selected number of days will be removed.') );
               
$Form->text_input( 'cleanup_jobs_threshold_failed', $Settings->get( 'cleanup_jobs_threshold_failed' ), 5, TB_('Keep other tasks for'), TB_('days').'. '.TB_('The failed scheduled jobs older than the selected number of days will be removed.') );
                break;

            case
'cleanup-email-logs':
               
// Clean up email logs older than a threshold:
               
$Form->duration_input( 'cleanup_email_logs_threshold', $Settings->get( 'cleanup_email_logs_threshold' ), TB_('Delete after'), 'days', 'minutes' );
                break;

            case
'send-non-activated-account-reminders':
               
// Send reminders about non-activated accounts:
               
$Form->duration_input( 'activate_account_reminder_threshold', $Settings->get( 'activate_account_reminder_threshold' ), TB_('Trigger after'), 'days', 'minutes', array( 'note' => TB_('A user will receive Account activation reminders if his account has remained non-activated for the selected period.') ) );
               
// Get array of account activation reminder settings:
               
$activate_account_reminder_config = $Settings->get( 'activate_account_reminder_config' );
               
$config_count = count( $activate_account_reminder_config );
               
$reminder_config_label = TB_('Reminder #%d');
               
$reminder_config_params = array(
                       
'note'             => TB_('After last notification'),
                       
'none_title_label' => TB_('Don\'t send'),
                    );
                foreach(
$activate_account_reminder_config as $c => $config_value )
                {
                    if(
$c == $config_count - 3 )
                    {    
// This option is used for failed activation threshold:
                       
$Form->duration_input( 'activate_account_reminder_config_'.$c, 0, sprintf( $reminder_config_label, $c + 1 ), '', '', $reminder_config_params );
                       
$Form->duration_input( 'activate_account_reminder_config_'.( $c + 1 ), $config_value, TB_('Mark as Failed / Pending delete'), '', '', array_merge( $reminder_config_params, array(
                               
'allow_none_value' => false,
                               
'allow_none_title' => false,
                            ) ) );
                    }
                    elseif(
$c == $config_count - 2 )
                    {    
// This option is used for delete warning threshold:
                       
$Form->duration_input( 'activate_account_reminder_config_'.( $c + 1 ), $config_value, TB_('Delete warning'), '', '', array_merge( $reminder_config_params, array(
                               
'note' => TB_('After marking as "Pending Delete"'),
                            ) ) );
                    }
                    elseif(
$c == $config_count - 1 )
                    {    
// Last option is used for delete account threshold:
                       
$Form->duration_input( 'activate_account_reminder_config_'.( $c + 1 ), $config_value, TB_('Delete account'), '', '', array(
                               
'note'             => TB_('After last notification/warning'),
                               
'none_title_label' => TB_('Don\'t delete'),
                            ) );
                    }
                    else
                    {    
// Not last options for reminders:
                       
$Form->duration_input( 'activate_account_reminder_config_'.$c, $config_value, sprintf( $reminder_config_label, $c + 1 ), '', '', $reminder_config_params );
                    }
                }
               
$Form->hidden( 'activate_account_reminder_config_num', $config_count );
                break;

            case
'send-inactive-account-reminders':
               
$Form->duration_input( 'inactive_account_reminder_threshold', $Settings->get( 'inactive_account_reminder_threshold' ), TB_('Trigger every'), 'days', 'minutes', array( 'note' => TB_('An inactive account is an account that has been activated but the user hasn\'t connected for an extended period.') ) );
                break;

            case
'send-unmoderated-comments-reminders':
               
// Send reminders about comments awaiting moderation:
               
$Form->duration_input( 'comment_moderation_reminder_threshold', $Settings->get( 'comment_moderation_reminder_threshold' ), TB_('Trigger after'), 'days', 'minutes', array( 'note' => TB_('A moderator will receive Comment moderation reminders if there are comments awaiting moderation at least as old as the selected period.') ) );
                break;

            case
'send-unmoderated-posts-reminders':
               
// Send reminders about posts awaiting moderation:
               
$Form->duration_input( 'post_moderation_reminder_threshold', $Settings->get( 'post_moderation_reminder_threshold' ), TB_('Trigger after'), 'days', 'minutes', array( 'note' => TB_('A moderator will receive Post moderation reminders if there are posts awaiting moderation at least as old as the selected period.') ) );
                break;

            case
'send-unread-messages-reminders':
               
// Send reminders about unread messages:
               
$Form->duration_input( 'unread_message_reminder_threshold', $Settings->get( 'unread_message_reminder_threshold' ), TB_('Trigger after'), 'days', 'minutes', array( 'note' => TB_('A user will receive unread message reminders if it has unread private messages at least as old as the selected period.') ) );
               
// Get array of the unread private messages reminder delay settings:
               
$unread_message_reminder_delay = $Settings->get( 'unread_message_reminder_delay' );
               
$config_count = count( $unread_message_reminder_delay );
               
$d = 1;
                foreach(
$unread_message_reminder_delay as $delay_day => $delay_spacing )
                {
                   
$n = ( $d == $config_count ? ( 11 -  $config_count ) : 1 );
                    for(
$i = 0; $i < $n; $i++ )
                    {
                       
$Form->begin_line( sprintf( TB_('Reminder #%d'), $d ) );
                           
$Form->text_input( 'unread_message_reminder_delay_day_'.$d, $i == 0 ? $delay_day : '', 3,
                               
/* TRANS: Full string is "Reminder #1: if user was not logged in last X days then sent every X days"*/TB_('if user was not logged in last'), '', array(
                                   
'input_suffix' => ' '.TB_('days'),
                                   
'maxlength'    => 10,
                                ) );
                           
$Form->text_input( 'unread_message_reminder_delay_spacing_'.$d, $i == 0 ? $delay_spacing : '', 3,
                               
/* TRANS: Full string is "Reminder #1: if user was not logged in last X days then sent every X days"*/TB_('then sent every'), '', array(
                                   
'input_suffix' => ' '.TB_('days'),
                                   
'note'         => TB_('Leave empty if you don\'t want to use this reminder.'),
                                   
'maxlength'    => 5,
                                ) );
                       
$Form->end_line();
                       
$d++;
                    }
                }
                break;

            case
'manage-email-statuses':
               
// Manage email address statuses:
               
$Form->duration_input( 'manage_email_statuses_min_delay', $Settings->get( 'manage_email_statuses_min_delay' ), TB_('Minimum delay since last error'), 'days', 'minutes', array( 'note' => TB_('<code>Warning</code> or <code>Suspicious</code> addresses may return to <code>Unknown</code> after this delay.') ) );
               
$Form->text_input( 'manage_email_statuses_min_sends', $Settings->get( 'manage_email_statuses_min_sends' ), 5, TB_('Minimum sends since last error'), TB_('<code>Warning</code> or <code>Suspicious</code> addresses may return to <code>Unknown</code> after this number of new (presumed successful) email sends.'), array( 'type' => 'number', 'min' => 1, 'max' => 999999999 ) );
                break;
        }

       
$Form->duration_input( 'cjob_timeout_'.$cron_job_key, $Settings->get( 'cjob_timeout_'.$cron_job_key ), TB_('Max execution time'), 'days', 'minutes', array( 'note' => TB_( 'Leave empty for no limit' ) ) );

        if(
$Settings->get( 'cjob_maxemail_'.$cron_job_key ) !== NULL )
        {    
// Setting only for cron jobs that use email sending:
           
$Form->text_input( 'cjob_maxemail_'.$cron_job_key, $Settings->get( 'cjob_maxemail_'.$cron_job_key ), 10, TB_('Max emails to send'), TB_('Leave empty for no limit'), array( 'type' => 'number', 'min' => 0 ) );
        }

        if(
$Settings->get( 'cjob_imap_error_'.$cron_job_key ) !== NULL )
        {    
// Setting only for cron jobs that use IMAP email sending:
           
$Form->text_input( 'cjob_imap_error_'.$cron_job_key, $Settings->get( 'cjob_imap_error_'.$cron_job_key ), 5, TB_('Do not notify IMAP errors before'), '', array( 'input_suffix' => ' '.TB_('consecutive errors'), 'type' => 'number', 'min' => 1 ) );
        }

   
$Form->end_fieldset();
}

$buttons = array();
if(
check_user_perm( 'options', 'edit' ) )
{    
// Allow to save cron settings only if user has a permission:
   
$buttons[] = array( 'submit', '', TB_('Save Changes!'), 'SaveButton' );
}

$Form->end_form( $buttons );
?>