function cron__check_for_session_reminders() { global $settings; $now = time(); $query = "SELECT " . table('sessions') . ".*, " . table('experiments') . ".*, count(participate_id) as num_reg\n \t\tFROM " . table('sessions') . ", " . table('participate_at') . ", " . table('experiments') . " \n \t\tWHERE " . table('sessions') . ".session_id=" . table('participate_at') . ".session_id\n\t\t\tAND " . table('sessions') . ".experiment_id = " . table('experiments') . ".experiment_id \n \t\tAND session_status='live' AND reminder_sent = 'n' AND reminder_checked='n' \n\t\t\tGROUP BY " . table('participate_at') . ".session_id"; $result = or_query($query); $mess = ""; while ($line = pdo_fetch_assoc($result)) { // is due? if (sessions__get_reminder_time($line) < $now && ortime__sesstime_to_unixtime($line['session_start']) > $now) { // ok: and now what to do? $number = -1; $done = false; $disclaimer = ""; switch ($line['send_reminder_on']) { case '0': case 'enough_participants_needed_plus_reserve': if ($line['num_reg'] >= $line['part_needed'] + $line['part_reserve']) { $number = experimentmail__send_session_reminders_to_queue($line); $done = experimentmail__send_reminder_notice($line, $number, true); } else { $done = experimentmail__send_reminder_notice($line, $number, false, 'part_reserve'); } break; case '1': case 'enough_participants_needed': if ($line['num_reg'] >= $line['part_needed']) { $number = experimentmail__send_session_reminders_to_queue($line); $done = experimentmail__send_reminder_notice($line, $number, true); } else { $disclaimer = lang('reminder_not_sent_part_needed'); $done = experimentmail__send_reminder_notice($line, $number, false, 'part_needed'); } break; case '2': case 'in_any_case_dont_ask': $number = experimentmail__send_session_reminders_to_queue($line); $done = experimentmail__send_reminder_notice($line, $number, true); break; default: // nothing } $done2 = experimentmail__set_reminder_checked($line['session_id']); $mess .= "found session " . session__build_name($line, $settings['admin_standard_language']) . "\n"; if ($number >= 0) { $mess .= "send " . $number . " mails to mail queue\n"; } if ($disclaimer) { $mess .= $disclaimer . "\n"; } if ($done) { $mess .= "sent notice to experimenter\n"; } } } return $mess; }
if (isset($_REQUEST['betternot']) && $_REQUEST['betternot']) { redirect('admin/experiment_participants_show.php?experiment_id=' . $session['experiment_id'] . '&session_id=' . $session_id); } } if ($proceed) { if (isset($_REQUEST['reallysend']) && $_REQUEST['reallysend']) { $reallysend = true; } else { $reallysend = false; } $allow = check_allow('session_send_reminder', 'experiment_participants_show.php?experiment_id=' . $session['experiment_id'] . '&session_id=' . $session_id); } if ($proceed) { if ($reallysend) { // send it out to mail queue $number = experimentmail__send_session_reminders_to_queue($session); message($number . ' ' . lang('xxx_session_reminder_emails_sent_out')); log__admin("session_send_reminder", "session:" . session__build_name($session, $settings['admin_standard_language']) . "\nsession_id:" . $session_id); redirect('admin/experiment_participants_show.php?experiment_id=' . $session['experiment_id'] . '&session_id=' . $session_id); } } if ($proceed) { // form echo ' <CENTER> <TABLE class="or_formtable"> <TR><TD colspan="2"> <TABLE width="100%" border=0 class="or_panel_title"><TR> <TD style="background: ' . $color['panel_title_background'] . '; color: ' . $color['panel_title_textcolor'] . '"> ' . lang('session_reminder_send') . ' ' . session__build_name($session) . ' </TD> </TR></TABLE>