> 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"), strtotime($this->dtstart))); $end = date('Y-m-d H:i:s', min(strtotime("NOW + $advance DAYS"), strtotime($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; } function generateNotifications(){ //$this->notifytimes(2); //DB_DataObject::debugLevel(1); $w = DB_DataObject::factory($this->tableName()); //$this->notifytimes(2); $w->find(); //$test = $w->fetchAll(); //$test = $this->notifytimes(2); $test = array(); while($w->fetch()){ $this->id = $w->id; $this->person_id = $w->person_id; $this->dtstart = $w->dtstart; $this->dtend = $w->dtend; $this->tz = $w->tz; $this->updated_dt = $w->updated_dt; $this->last_applied_dt = $w->last_applied_dt; $this->freq = $w->freq; $this->freq_day = $w->freq_day; $this->freq_hour = $w->freq_hour; $this->onid = $w->onid; $this->ontable = $w->ontable; $this->last_event_id = $w->last_event_id; $this->method = $w->method; //$this->dtstart = $w->dtstart; //$this->dtend = $w->dtend; //$this = clone($w); $w->notifytimes(2); error_log($this->dtstart); } // foreach($test as $item){ // error_log($item); // } } }