public $last_event_id; // int(11)
public $method; // string(128) not_null
- public $start;
- public $end;
###END_AUTOCODE
function notifytimesRange($advance) {
- error_log($advance);
- $this->start = date('Y-m-d H:i:s', max(strtotime("NOW - 24 HOURS"), strtotime($this->dtstart)));
- $this->end = date('Y-m-d H:i:s', min(strtotime("NOW + $advance DAYS"), strtotime($this->dtend)));
- error_log($this->start);
- error_log($this->end);
-
+
+ $start = date('Y-m-d H:i:s', max(strtotime("NOW - 24 HOURS"), strtotime($this->dtstart)));
+ $end = date('Y-m-d H:i:s', min(strtotime("NOW + $advance DAYS"), strtotime($this->dtend)));
+
}
function notifytimes($advance)
{
- error_log($this->start);
- error_log($this->end);
+
// make a list of datetimes when notifies need to be generated for.
// it starts 24 hours ago.. or when dtstart
- $this->notifytimesRange($advance);
+ list($start, $end) = $this->notifytimesRange($advance);
- if (strtotime($this->start) > strtotime($this->end)) {
+ if (strtotime($start) > strtotime($end)) {
return array(); // no data..
}
-
-
-
- switch($this->freq) {
- case 'HOURLY':
-
-
-
- // happens every day based on freq_hour.
- $hours = explode(',', $this->freq_hour);
- for ($day = date('Y-m-d', strtotime($start));
- strtotime($day) < strtotime($end);
- $day = date('Y-m-d', strtotime("$day + 1 DAY")))
- {
- foreach($hours as $h) {
- $hh = strpos($h,":") > 0 ? $h : "$H:00";
- $ret[] = $day . ' ' . $hh;
- }
- }
- return $this->applyTimezoneToList($ret);
-
- case 'DAILY':
- $hours = explode(',', $this->freq_hour);
- if (!$hours) {
- $hours = array(date('H:i', strtotime($this->dtstart)));
- }
-
- $days = explode(','. $this->freq_day);
-
- for ($day = date('Y-m-d', strtotime($start));
- strtotime($day) < strtotime($end);
- $day = date('Y-m-d', strtotime("$day + 1 DAY")))
- {
- // skip days not accounted for..
- if (!in_array(date('N', strtotime($day)), $days)) {
- continue;
- }
-
- foreach($hours as $h) {
- $hh = strpos($h,":") > 0 ? $h : "$H:00";
- $ret[] = $day . ' ' . $hh;
- }
- }
-
- return $this->applyTimezoneToList($ret);
-
-
- case 'MONTHLY': // ignored..
- case 'YEARLY': // ignored..
- break;
-
+ $ret = array();
+ $hours = array_unique(json_decode($this->freq_hour));
+ $days = json_decode($this->freq_day);
+ foreach($days as $d){
+ foreach($hours as $h){
+ $ret[] = date('Y-m-d', strtotime($d)) . ' ' . $h;
+ }
}
-
+ return $this->applyTimezoneToList($ret);
}
function applyTimezoneToList($ar)
{
$ret = array();
-
- $tz = explode($this->tz, ":");
- if ($tz < 0) {
-
- }
- $append = ($tz[0] < 0) ? " - " : " + ";
-
- $append .= abs($tz[0]) . " HOURS";
- if (!empty($tz[1])) {
- $append .= $tz[1] . " MINUTES";
- }
-
-
foreach($ar as $a) {
- $ret[] = date('Y-m-d H:i', strtotime($a . $append));
-
+ $date = new DateTime($a);
+ $date->setTimezone(new DateTimeZone($this->tz));
+ $ret[] = $date->format('Y-m-d H:i');
}
return $ret;
-
-
}
function generateNotifications(){
- //$this->notifytimes(2);
- $test = $this->notifytimes(2);
- foreach($test as $item){
- error_log($item);
- }
+ //DB_DataObject::debugLevel(1);
+ $w = DB_DataObject::factory($this->tableName());
+ $w->find();
+
+ while($w->fetch()){
+ $notifytime = $w->notifyTimes(2);
+ var_dump($notifytime);
+ }
}
}