예제 #1
0
function process_event($id, $name, $event_date, $event_time)
{
    global $site_extras, $debug, $only_testing;
    global $EXTRA_REMINDER_WITH_OFFSET, $EXTRA_REMINDER_WITH_DATE;
    if ($debug) {
        printf("Event %d: \"%s\" at %s on %s <br />\n", $id, $name, $event_time, $event_date);
    }
    // Check to see if this event has any reminders
    $extras = get_site_extra_fields($id);
    for ($j = 0; $j < count($site_extras); $j++) {
        $extra_name = $site_extras[$j][0];
        $extra_type = $site_extras[$j][2];
        $extra_arg1 = $site_extras[$j][3];
        $extra_arg2 = $site_extras[$j][4];
        //if ( $debug )
        //  printf ( "  name: %s\n  type: %d\n  arg1: %s\n  arg2: %s\n",
        //  $extra_name, $extra_type, $extra_arg1, $extra_arg2 );
        if (!empty($extras[$extra_name]['cal_remind'])) {
            if ($debug) {
                echo "  Reminder set for event. <br />\n";
            }
            // how many minutes before event should we send the reminder?
            $ev_h = (int) ($event_time / 10000);
            $ev_m = $event_time / 100 % 100;
            $ev_year = substr($event_date, 0, 4);
            $ev_month = substr($event_date, 4, 2);
            $ev_day = substr($event_date, 6, 2);
            $event_time = mktime($ev_h, $ev_m, 0, $ev_month, $ev_day, $ev_year);
            if (($extra_arg2 & $EXTRA_REMINDER_WITH_OFFSET) > 0) {
                $minsbefore = $extras[$extra_name]['cal_data'];
                $remind_time = $event_time - $minsbefore * 60;
            } else {
                if (($extra_arg2 & $EXTRA_REMINDER_WITH_DATE) > 0) {
                    $rd = $extras[$extra_name]['cal_date'];
                    $r_year = substr($rd, 0, 4);
                    $r_month = substr($rd, 4, 2);
                    $r_day = substr($rd, 6, 2);
                    $remind_time = mktime(0, 0, 0, $r_month, $r_day, $r_year);
                } else {
                    $minsbefore = $extra_arg1;
                    $remind_time = $event_time - $minsbefore * 60;
                }
            }
            if ($debug) {
                echo "  Mins Before: {$minsbefore} <br />\n";
            }
            if ($debug) {
                echo "  Event time is: " . date("m/d/Y H:i", $event_time) . "<br />\n";
                echo "  Remind time is: " . date("m/d/Y H:i", $remind_time) . "<br />\n";
            }
            if (time() >= $remind_time) {
                // It's remind time or later. See if one has already been sent
                $last_sent = 0;
                $res = dbi_query("SELECT MAX(cal_last_sent) FROM " . "webcal_reminder_log WHERE cal_id = " . $id . " AND cal_event_date = {$event_date}" . " AND cal_name = '" . $extra_name . "'");
                if ($res) {
                    if ($row = dbi_fetch_row($res)) {
                        $last_sent = $row[0];
                    }
                    dbi_free_result($res);
                }
                if ($debug) {
                    echo "  Last sent on: " . date("m/d/Y H:i", $last_sent) . "<br />\n";
                }
                if ($last_sent < $remind_time) {
                    // Send a reminder
                    if ($debug) {
                        echo "  SENDING REMINDER! <br />\n";
                    }
                    send_reminder($id, $event_date);
                    // now update the db...
                    log_reminder($id, $extra_name, $event_date);
                }
            }
        }
    }
}
예제 #2
0
function send_expiry_reminder_email($member, $invoice)
{
    $name = config('name');
    $subject = "Votre adhésion à {$name} arrive à échéance";
    $message = "\n{$name} aimerait vous remercier pour le support que vous lui avez apporté il y a presque un an par votre adhésion en tant que membre. La portée des actions de {$name} est d'autant plus grande que le nombre d'adhérents est grand, et l'appui que vous nous donnez motive chacun de nous à continuer.\n\nNous sollicitons donc un renouvellement de votre adhésion à {$name}, qui arrive échéance le " . format_date($member['expiry_date']) . ".\n";
    send_reminder($member, $subject, $message, $invoice);
}
예제 #3
0
		JOIN custom_field_value cfv ON cfv.personid = p.id AND cfv.fieldid = ' . (int) $ini['CUSTOM_FIELD_ID'];
if ($ini['CC_STATUS']) {
    $map = array_flip(Person::getStatusOptions());
    $SQL .= '
			LEFT JOIN _person cc ON (
				LENGTH(cc.email) > 0
				AND cc.congregationid = p.congregationid
				AND cc.status = ' . $GLOBALS['db']->quote($map[$ini['CC_STATUS']]) . '
			)';
}
$SQL .= '
		WHERE cfv.value_date  = CURDATE() + INTERVAL ' . (int) $ini['REMINDER_OFFSET'] . ' DAY';
$res = $GLOBALS['db']->queryAll($SQL);
check_db_result($res);
foreach ($res as $row) {
    send_reminder($row);
}
function send_reminder($person)
{
    global $ini;
    $toEmail = $person['email'];
    if (!empty($ini['OVERRIDE_RECIPIENT'])) {
        $toEmail = $ini['OVERRIDE_RECIPIENT'];
    }
    if (!strlen($person['email'])) {
        if (!empty($ini['VERBOSE'])) {
            echo $person['first_name'] . ' ' . $person['last_name'] . " has no email address - skipping \n";
        }
        return;
    }
    $content = replace_keywords($ini['EMAIL_BODY'], $person);
function process_event($id, $name, $start, $end, $new_date = '')
{
    global $debug, $is_task, $only_testing;
    // Get reminders array.
    $reminder = getReminders($id);
    if (!empty($reminder)) {
        if ($debug) {
            echo " Reminder set for event.<br />\n";
        }
        $times_sent = $reminder['times_sent'];
        $repeats = $reminder['repeats'];
        $lastsent = $reminder['last_sent'];
        $related = $reminder['related'];
        // If we are working with a repeat or overdue task, and we have sent all the
        // reminders for the basic event, then reset the counter to 0.
        if (!empty($new_date)) {
            if ($times_sent == $repeats + 1) {
                if (!$is_task || $related == 'E' && date('Ymd', $new_date) != date('Ymd', $end)) {
                    // Tasks only.
                    $times_sent = 0;
                }
            }
            $new_offset = date_to_epoch($new_date) - ($start - $start % 86400);
            $start += $new_offset;
            $end += $new_offset;
        }
        if ($debug) {
            printf("Event %d: \"%s\" on %s at %s GMT<br />\n", $id, $name, gmdate('Ymd', $start), gmdate('H:i:s', $start));
        }
        // It is pointless to send reminders after this time!
        $pointless = $end;
        $remB4 = $reminder['before'] == 'Y';
        if (!empty($reminder['date'])) {
            // We're using a date.
            $remind_time = $reminder['timestamp'];
        } else {
            // We're using offsets.
            $offset = $reminder['offset'] * 60;
            // Convert to seconds.
            if ($related == 'S') {
                // Relative to start.
                $offset_msg = ($remB4 ? ' Mins Before Start: ' : ' Mins After Start: ') . $reminder['offset'];
                $remind_time = $remB4 ? $start - $offset : $start + $offset;
            } else {
                // Relative to end/due.
                $offset_msg = ($remB4 ? ' Mins Before End: ' : ' Mins After End: ') . $reminder['offset'];
                $remind_time = $remB4 ? $end - $offset : $end + $offset;
                $pointless = $remB4 ? $end : $end + $offset;
            }
        }
        // Factor in repeats if set.
        if ($repeats > 0 && $times_sent <= $repeats) {
            $remind_time += $reminder['duration'] * 60 * $times_sent;
        }
        if ($debug) {
            echo (empty($offset_msg) ? '' : $offset_msg . '<br />') . '
  Event ' . ($related == 'S' ? 'start time is: ' . gmdate('m/d/Y H:i', $start) : 'end time is: ' . gmdate('m/d/Y H:i', $end)) . ' GMT<br />
  Remind time is: ' . gmdate('m/d/Y H:i', $remind_time) . ' GMT<br />
  Effective delivery time is: ' . date('m/d/Y H:i T', $remind_time) . '<br />
  Last sent on: ' . ($lastsent == 0 ? 'NEVER' : date('m/d/Y H:i T', $lastsent)) . '<br /><br />
  times_sent = ' . $times_sent . '
  repeats = ' . $repeats . '
  time = ' . date('His', time()) . ' 
  remind_time = ' . date('His', $remind_time) . ' 
  lastsent = ' . ($lastsent > 0 ? date('Ymd His', $lastsent) : " NEVER ") . ' 
  pointless = ' . date('Ymd His', $pointless) . ' 
  is_task = ' . ($is_task ? 'true' : 'false') . '<br />';
        }
        if ($times_sent < $repeats + 1 && time() >= $remind_time && $lastsent <= $remind_time && (time() <= $pointless || $is_task)) {
            // Send a reminder.
            if ($debug) {
                echo ' SENDING REMINDER!<br />' . "\n";
            }
            send_reminder($id, $start);
            // Now update the db...
            if ($debug) {
                echo '<br /> LOGGING REMINDER!<br /><br />' . "\n";
            }
            log_reminder($id, $times_sent + 1);
        }
    }
}
예제 #5
0
        $varHour = substr($varTime, 0, 2);
        $varMin = substr($varTime, 3, 2);
        if ($varHour < 12) {
            $varHour = $varHour + 12;
        }
        $varRowTime = $varHour . ":" . $varMin;
        $time_diff = get_timedifference($time1, $varRowTime);
        echo $row["id"] . "time diff is" . $time_diff . "\n";
        if ($time_diff <= 40) {
            echo "reminder sent" . $row["id"] . "\n";
            $obj = new Clickatell();
            $phone_number_temp = $row["phone"];
            $phone_number = preg_replace("/[^0-9]/", "", $phone_number_temp);
            if (strlen($phone_number) == 10) {
                $phone_number = "1" . $phone_number;
            } else {
                $phone_number = $phone_number;
            }
            $obj->sendSms($phone_number, $text_msg);
            send_reminder($row["fname"], $row["email"]);
            $sql = "UPDATE Booking_details SET flag_reminder ='1' WHERE id='" . $row['id'] . "'";
            mysql_query($sql) or die("I cannot run , reason : " . mysql_error());
        }
    }
} else {
    echo "inside else";
}
?>