Example #1
0
function setCourseEvent(Course $course, vcalendar $ical, array $info)
{
    $startTime = semInfo($info['year'], $info['sem']);
    $lessons = $course->lessons;
    //add lessons
    foreach ($lessons as $lesson) {
        $lessonEvent =& $ical->newComponent('vevent');
        //set summary(name)
        $lessonEvent->setProperty('summary', $lesson->summary);
        //set start and end time.
        //start
        $start = fewDaysNextOrBefore($startTime, '+' . ($lesson->time->wkDay - 1) . ' days');
        $shour = $lesson->time->startTime / 100;
        $smin = $lesson->time->startTime % 100;
        $start['hour'] = $shour;
        $start['min'] = $smin;
        $start['sec'] = 0;
        $lessonEvent->setProperty('dtstart', $start);
        //end
        $end = fewDaysNextOrBefore($startTime, '+' . ($lesson->time->wkDay - 1) . ' days');
        $ehour = $lesson->time->endTime / 100;
        $emin = intval($lesson->time->endTime) % 100;
        $end['hour'] = $ehour;
        $end['min'] = $emin;
        $end['sec'] = 0;
        $lessonEvent->setProperty('dtend', $end);
        //set location
        $lessonEvent->setProperty('LOCATION', $lesson->venue);
        //set description
        $lessonEvent->setProperty('description', $lesson->description);
        //set week repeat
        if (!$lesson->wkRepeatValid) {
            continue;
        }
        $endTime = fewDaysNextOrBefore($startTime, '+14 weeks');
        $rule = array('FREQ' => 'WEEKLY', 'UNTIL' => $endTime['year'] . '/' . $endTime['month'] . '/' . $endTime['day']);
        $lessonEvent->setProperty("rrule", $rule);
        $exdate = array('year' => $start['year'], 'month' => $start['month'], 'day' => $start['day']);
        $recess = fewDaysNextOrBefore($exdate, '+7 weeks');
        $recess['hour'] = $shour;
        $recess['min'] = $smin;
        $recess['sec'] = 0;
        $wk = $lesson->time->wkRepeat;
        $exdates = array();
        array_push($exdates, $recess);
        for ($i = 0; $i < 13; $i++) {
            if ($i < 7) {
                $j = $i;
            } else {
                $j = $i + 1;
            }
            if (!$wk[$i]) {
                $w = fewDaysNextOrBefore($exdate, '+' . $j . ' weeks');
                $w['hour'] = $shour;
                $w['min'] = $smin;
                $w['sec'] = 0;
                array_push($exdates, $w);
            }
        }
        $lessonEvent->setProperty('exdate', $exdates, array('TZID' => $info['tz']));
    }
    //add examtime
    $examtime = $course->examTime;
    if ($examtime == null) {
        return;
    }
    $start = array('year' => $examtime->year, 'month' => $examtime->month, 'day' => $examtime->day, 'hour' => $examtime->startTime / 100, 'min' => $examtime->startTime % 100, 'sec' => 0);
    $end = array('year' => $examtime->year, 'month' => $examtime->month, 'day' => $examtime->day, 'hour' => $examtime->endTime / 100, 'min' => $examtime->endTime % 100, 'sec' => 0);
    $exam =& $ical->newComponent('vevent');
    $exam->setProperty('dtstart', $start);
    $exam->setProperty('dtend', $end);
    $exam->setProperty('summary', $course->code . ' EXAM!');
    $exam->setProperty('description', $course->code . ', ' . $course->name . ', ' . $course->au);
    return;
}
Example #2
0
echo 'Test Event Time Class: </br>';
$time = array('year' => '1995', 'month' => 'jan', 'day' => '28', 'startTime' => '0830', 'endTime' => '0930');
$eventTime = new EventTime($time);
echo 'Year: ' . $eventTime->year . '</br>';
echo $eventTime->toString();
echo '</br></br>';
echo 'Test Lesson Time Class: </br>';
echo 'Case 1: </br>';
$time = array('startTime' => '0830', 'endTime' => '0930', 'wkDay' => '01');
$lessonTime = new LessonTime($time);
echo 'Year: ' . $lessonTime->year . '</br>';
echo 'wkDay: ' . $lessonTime->wkDay . '</br>';
echo $lessonTime->toString();
echo 'Case 2: </br>';
$time = array('startTime' => '0830', 'endTime' => '0930', 'wkDay' => 'mon');
$lessonTime = new LessonTime($time);
$lessonTime->setWkRepeatTrueforThisWk(0);
echo 'Year: ' . $lessonTime->year . '</br>';
echo 'wkDay: ' . $lessonTime->wkDay . '</br>';
echo $lessonTime->toString();
echo '</br></br>';
echo 'Test semInfo: </br>';
$sem = semInfo('2013', '1');
echo 'Year: ' . $sem['year'] . '</br>';
echo 'Month: ' . $sem['month'] . '</br>';
echo 'Day: ' . $sem['day'] . '</br>';
echo '</br></br>';
echo 'Test fewDaysNextOrBefore: </br>';
$time = array('year' => '1995', 'month' => '02', 'day' => '28');
$newTime = fewDaysNextOrBefore($time, '-1 year');
echo 'Year: ', $newTime['year'];