> 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 //print_r($this); list($start, $end) = $this->notifytimesRange($advance); if (strtotime($start) > strtotime($end)) { return array(); // no data.. } print_r($this); $ret = array(); if($this->freq_day){ $hours = json_decode($this->freq_hour); //$dayAry = json_decode($this->freq_day); if (!$hours) { $hours = array(date('H:i', strtotime($this->dtstart))); } $days = json_decode($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); } if($this->freq_hour){ // happens every day based on freq_hour. $hours = json_decode($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); } // 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()){ $notifytime = $w->notifyTimes(2); var_dump($notifytime); // $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); //var_dump($w->notifytimes(2)); } // foreach($test as $item){ // error_log($item); // } } }