> must.. * freq_hourly = 'what hours' << OR IF EMPTY USES TIME FROM DTSTART * /* the code above is auto generated do not remove the tag below */ function notifytimesRange($advance) { $start = date('Y-m-d H:i:s', max(strtotime("NOW - 24 HOURS"), sttotime($this->dtstart))); $end = date('Y-m-d H:i:s', min(strtotime("NOW + $advance DAYS"), sttotime($this->dtend))); } function notifytimes($advance) { // make a list of datetimes when notifies need to be generated for. // it starts 24 hours ago.. or when dtstart list($start, $end) = $this->notifytimesRange($advance); 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; } } 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)); } return $ret; } }