Пример #1
0
 // create a new calendar object instance
 $v->setProperty("method", "PUBLISH");
 // required of some calendar software
 $v->setProperty("x-wr-calname", $tables[0]['stuname'] . "的课表 " . $tables[0]['year'] . '-' . $tables[0]['term']);
 // required of some calendar software
 $v->setProperty("X-WR-CALDESC", "");
 // required of some calendar software
 $v->setProperty("X-WR-TIMEZONE", "Asia/Shanghai");
 // required of some calendar software
 foreach ($t1 as $o) {
     $odata = array('name' => $o->name, 'credit' => $o->credit, 'tutor' => $o->tutor, 'schedule' => $o->schedule);
     if (count($o->schedule)) {
         foreach ($o->schedule as $os) {
             $startTimeTrans = array([], ['8', '00'], ['8', '50'], ['9', '50'], ['10', '40'], ['11', '30'], ['13', '20'], ['14', '10'], ['15', '10'], ['16', '00'], ['16', '50'], ['18', '30'], ['19', '20'], ['20', '10']);
             $endTimeTrans = array([], ['8', '45'], ['9', '35'], ['10', '35'], ['11', '25'], ['12', '15'], ['14', '05'], ['14', '55'], ['15', '55'], ['16', '45'], ['17', '35'], ['19', '15'], ['20', '05'], ['20', '55']);
             $dateArr = $school->getSchoolCalendar2Date($tables[0]['year'], $tables[0]['term'], $os->week[0], $os->day);
             $vevent = $v->newComponent("vevent");
             // create an event calendar component
             $vevent->setProperty("dtstart", array("year" => $dateArr[0], "month" => $dateArr[1], "day" => $dateArr[2], "hour" => $startTimeTrans[$os->startTime][0], "min" => $startTimeTrans[$os->startTime][1], "sec" => 0));
             $vevent->setProperty("dtend", array("year" => $dateArr[0], "month" => $dateArr[1], "day" => $dateArr[2], "hour" => $endTimeTrans[$os->startTime][0], "min" => $endTimeTrans[$os->startTime + $os->durationTime - 1][1], "sec" => 0));
             $vevent->setProperty("LOCATION", $os->location);
             // property name - case independent
             $vevent->setProperty("summary", $o->name);
             $vevent->setProperty("description", $o->tutor);
             if (count($os->week) > 1) {
                 // Set recurrence rule
                 $endWeek = $os->week[count($os->week) - 1];
                 $iWeek = $os->week[0];
                 $weekdayTrans = array('', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU');
                 $vevent->setProperty("RRULE", array("FREQ" => "WEEKLY", "COUNT" => $endWeek - $iWeek + 1, "INTERVAL" => 1, "WKST" => $weekdayTrans[$os->day]));
                 for (; $iWeek < $endWeek; $iWeek++) {