/** * Function that create the exported file * @param Vtiger_Request $request * @param <Array> $result * @param Vtiger_Module_Model $moduleModel */ public function output($request, $result, $moduleModel) { $fileName = $request->get('filename'); $exportType = $this->getExportContentType($request); // Send the right content type and filename header("Content-type: {$exportType}"); header("Content-Disposition: attachment; filename={$fileName}.ics"); $timeZone = new iCalendar_timezone(); $timeZoneId = split('/', date_default_timezone_get()); if (!empty($timeZoneId[1])) { $zoneId = $timeZoneId[1]; } else { $zoneId = $timeZoneId[0]; } $timeZone->add_property('TZID', $zoneId); $timeZone->add_property('TZOFFSETTO', date('O')); if (date('I') == 1) { $timeZone->add_property('DAYLIGHTC', date('I')); } else { $timeZone->add_property('STANDARDC', date('I')); } $myiCal = new iCalendar(); $myiCal->add_component($timeZone); while (!$result->EOF) { $eventFields = $result->fields; $id = $eventFields['activityid']; $type = $eventFields['activitytype']; if ($type != 'Task') { $temp = $moduleModel->get('eventFields'); foreach ($temp as $fieldName => $access) { $temp[$fieldName] = $eventFields[$fieldName]; } $temp['id'] = $id; $iCalTask = new iCalendar_event(); $iCalTask->assign_values($temp); $iCalAlarm = new iCalendar_alarm(); $iCalAlarm->assign_values($temp); $iCalTask->add_component($iCalAlarm); } else { $temp = $moduleModel->get('todoFields'); foreach ($temp as $fieldName => $access) { $temp[$fieldName] = $eventFields[$fieldName]; } $iCalTask = new iCalendar_todo(); $iCalTask->assign_values($temp); } $myiCal->add_component($iCalTask); $result->MoveNext(); } echo $myiCal->serialize(); }
/** * Function that create the exported file * @param Vtiger_Request $request * @param <Array> $result * @param Vtiger_Module_Model $moduleModel */ public function output($request, $result, $moduleModel) { $fileName = $request->get('filename'); $exportType = $this->getExportContentType($request); // Send the right content type and filename header("Content-type: {$exportType}"); header("Content-Disposition: attachment; filename={$fileName}.ics"); $timeZone = new iCalendar_timezone(); $timeZoneId = split('/', date_default_timezone_get()); if (!empty($timeZoneId[1])) { $zoneId = $timeZoneId[1]; } else { $zoneId = $timeZoneId[0]; } $timeZone->add_property('TZID', $zoneId); $timeZone->add_property('TZOFFSETTO', date('O')); if (date('I') == 1) { $timeZone->add_property('DAYLIGHTC', date('I')); } else { $timeZone->add_property('STANDARDC', date('I')); } $myiCal = new iCalendar(); $myiCal->add_component($timeZone); while (!$result->EOF) { $eventFields = $result->fields; $id = $eventFields['activityid']; $type = $eventFields['activitytype']; if ($type != 'Task') { $temp = $moduleModel->get('eventFields'); foreach ($temp as $fieldName => $access) { /* Priority property of ical is Integer * http://kigkonsult.se/iCalcreator/docs/using.html#PRIORITY */ if ($fieldName == 'priority') { $priorityMap = array('High' => '1', 'Medium' => '2', 'Low' => '3'); $priorityval = $eventFields[$fieldName]; $icalZeroPriority = 0; if (array_key_exists($priorityval, $priorityMap)) { $temp[$fieldName] = $priorityMap[$priorityval]; } else { $temp[$fieldName] = $icalZeroPriority; } } else { $temp[$fieldName] = $eventFields[$fieldName]; } } $temp['id'] = $id; $iCalTask = new iCalendar_event(); $iCalTask->assign_values($temp); $iCalAlarm = new iCalendar_alarm(); $iCalAlarm->assign_values($temp); $iCalTask->add_component($iCalAlarm); } else { $temp = $moduleModel->get('todoFields'); foreach ($temp as $fieldName => $access) { if ($fieldName == 'priority') { $priorityMap = array('High' => '1', 'Medium' => '2', 'Low' => '3'); $priorityval = $eventFields[$fieldName]; $icalZeroPriority = 0; if (array_key_exists($priorityval, $priorityMap)) { $temp[$fieldName] = $priorityMap[$priorityval]; } else { $temp[$fieldName] = $icalZeroPriority; } } else { $temp[$fieldName] = $eventFields[$fieldName]; } } $iCalTask = new iCalendar_todo(); $iCalTask->assign_values($temp); } $myiCal->add_component($iCalTask); $result->MoveNext(); } echo $myiCal->serialize(); }
break; } $xml = new SimpleXMLElement($xmlstr); foreach ($xml->Episode as $episode) { $episodenr = $episode->EpisodeNumber; $episodenr = leading_zeros((int) $episodenr, 2); $id = $episode->id; $season = $episode->Combined_season; $season = leading_zeros((int) $season, 2); $naam = $episode->EpisodeName; $datum = $episode->FirstAired; $formatdatum = strtotime($datum); $datum = str_replace("-", "", $datum); $uitleg = $episode->Overview; if ($formatdatum >= time() - 604800) { if ($datum != "") { $ev = new iCalendar_event(); $ev->add_property('uid', $id); $ev->add_property('summary', $xml->Series->SeriesName . " | " . $naam . " (S" . $season . "E" . $episodenr . ")"); if ($uitleg != "") { $ev->add_property('description', "{$uitleg}"); } $ev->add_property('dtstart', $datum, array('value' => 'DATE')); $ev->add_property('dtend', $datum, array('value' => 'DATE')); $ev->add_property('dtstamp', $datum . 'T120000Z'); $a->add_component($ev); } } } } echo $a->serialize();
$ev->add_property('description', $event->description); $ev->add_property('class', 'PUBLIC'); // PUBLIC / PRIVATE / CONFIDENTIAL $ev->add_property('last-modified', Bennu::timestamp_to_datetime($event->timemodified)); $ev->add_property('dtstamp', Bennu::timestamp_to_datetime()); // now $ev->add_property('dtstart', Bennu::timestamp_to_datetime($event->timestart)); // when event starts if ($event->timeduration > 0) { //dtend is better than duration, because it works in Microsoft Outlook and works better in Korganizer $ev->add_property('dtend', Bennu::timestamp_to_datetime($event->timestart + $event->timeduration)); } if ($event->courseid != 0) { $ev->add_property('categories', $courses[$event->courseid]->shortname); } $ical->add_component($ev); } $serialized = $ical->serialize(); if (empty($serialized)) { // TODO die('bad serialization'); } //IE compatibility HACK! if (ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } $filename = 'icalexport.ics'; header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); header('Cache-Control: private, must-revalidate, pre-check=0, post-check=0, max-age=0'); header('Expires: ' . gmdate('D, d M Y H:i:s', 0) . 'GMT'); header('Pragma: no-cache');
$default_timezone = date_default_timezone_get(); $tzid = split('/', $default_timezone); } if (!empty($tzid[1])) { $tz->add_property('TZID', $tzid[1]); } else { $tz->add_property('TZID', $tzid[0]); } $tz->add_property('TZOFFSETTO', date('O')); if (date('I') == 1) { $tz->add_property('DAYLIGHTC', date('I')); } else { $tz->add_property('STANDARDC', date('I')); } $myical = new iCalendar(); $myical->add_component($tz); while ($row = $adb->fetch_array($calendar_results)) { $this_event = $row; $id = $this_event['activityid']; $type = $this_event['activitytype']; if ($type != 'Task') { $temp = $event; foreach ($temp as $key => $val) { $temp[$key] = $this_event[$key]; } $temp['id'] = $id; $ev = new iCalendar_event(); $ev->assign_values($temp); $al = new iCalendar_alarm(); $al->assign_values($temp); $ev->add_component($al);