Example #1
0
 function PHPTest()
 {
     $result = '';
     $rule = new RRule(new iCalDate($this->dtstart), $this->recur);
     $i = 0;
     do {
         $date = $rule->GetNext();
         if (isset($date)) {
             if ($i++ % 4 == 0) {
                 $result .= "\n";
             }
             $result .= "   " . $date->Render();
         }
     } while (isset($date) && $i < 30);
     return $result;
 }
Example #2
0
 function rrule($sn = '', $recurrence = '', $allDay = null)
 {
     global $xoopsDB, $xoopsUser;
     include_once XOOPS_ROOT_PATH . "/modules/tad_cal/class/rrule.php";
     include_once XOOPS_ROOT_PATH . "/modules/tad_cal/class/ical.php";
     if (empty($sn) or empty($recurrence)) {
         return;
     }
     // die($recurrence);
     $ical = new ical();
     $ical->parse($recurrence);
     $rrule_array = $ical->get_all_data();
     // die('[rrule_array]' . var_export($rrule_array));
     foreach ($rrule_array['']['RRULE'] as $key => $val) {
         $all[] = "{$key}={$val}";
     }
     $rrule = 'RRULE:' . implode(";", $all);
     // die($rrule_array['']['DTSTART']['unixtime']);
     $start = substr(str_replace(":", "", str_replace("-", "", date("c", $rrule_array['']['DTSTART']['unixtime']))), 0, 15);
     $endTime = $rrule_array['']['DTEND']['unixtime'] - $rrule_array['']['DTSTART']['unixtime'];
     // die($start . "====" . $rrule);
     // echo "<p>start= $start</p>";
     // echo "<p>rrule= $rrule</p>";
     $rule = new RRule($start, $rrule);
     $i = 0;
     while ($date = $rule->GetNext()) {
         if ($i > 300) {
             break;
         }
         $new_date = $date->Render();
         // echo "<p>new_date= $new_date</p>";
         if (empty($new_date)) {
             continue;
         }
         $end = date("Y-m-d H:i", strtotime($new_date) + $endTime);
         $allday = is_null($allDay) ? isAllDay($new_date, $end) : $allDay;
         $allDate[] = "('{$sn}','{$new_date}','{$end}','{$allday}')";
         $i++;
     }
     // exit;
     $sql_data = implode(",", $allDate);
     if (empty($sql_data)) {
         return;
     }
     $sql = "delete from " . $xoopsDB->prefix("tad_cal_repeat") . " where `sn`='{$sn}'";
     $xoopsDB->queryF($sql) or web_error($sql);
     $sql = "insert into " . $xoopsDB->prefix("tad_cal_repeat") . "\n        (`sn` , `start` , `end` , `allday`)\n        values{$sql_data}";
     // echo "<p>$sql</p>";
     $xoopsDB->queryF($sql) or web_error($sql);
 }
Example #3
0
 /**
  * Return true if $date is an occurrence.
  *
  * @param mixed $date
  * @return bool
  */
 public function occursAt($date)
 {
     $date = RRule::parseDate($date);
     if (in_array($date, $this->cache)) {
         // in the cache (whether cache is complete or not)
         return true;
     } elseif ($this->total !== null) {
         // cache complete and not in cache
         return false;
     }
     // test if it *should* occur (before exclusion)
     $occurs = false;
     foreach ($this->rdates as $rdate) {
         if ($rdate == $date) {
             $occurs = true;
             break;
         }
     }
     if (!$occurs) {
         foreach ($this->rrules as $rrule) {
             if ($rrule->occursAt($date)) {
                 $occurs = true;
                 break;
             }
         }
     }
     // if it should occur, test if it's excluded
     if ($occurs) {
         foreach ($this->exdates as $exdate) {
             if ($exdate == $date) {
                 return false;
             }
         }
         foreach ($this->exrules as $exrule) {
             if ($exrule->occursAt($date)) {
                 return false;
             }
         }
     }
     return $occurs;
 }