本文整理汇总了PHP中Tinebase_Record_RecordSet::isRecurException方法的典型用法代码示例。如果您正苦于以下问题:PHP Tinebase_Record_RecordSet::isRecurException方法的具体用法?PHP Tinebase_Record_RecordSet::isRecurException怎么用?PHP Tinebase_Record_RecordSet::isRecurException使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tinebase_Record_RecordSet
的用法示例。
在下文中一共展示了Tinebase_Record_RecordSet::isRecurException方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: eventToIcal
/**
* eventToIcal
*
* @param Tinebase_Record_RecordSet|Calendar_Model_Event $_event
* @return qCal_Component_Vcalendar
*/
public function eventToIcal($_event)
{
if ($_event instanceof Tinebase_Record_RecordSet) {
foreach ($_event as $event) {
$this->eventToIcal($event);
}
return $this->_vcalendar;
}
// NOTE: we deliver events in originators tz
$_event->setTimezone($_event->originator_tz);
if (!in_array($_event->originator_tz, $this->_attachedTimezones)) {
$this->_vcalendar->attach(self::getVtimezone($_event->originator_tz));
$this->_attachedTimezones[] = $_event->originator_tz;
}
if ($_event->is_all_day_event) {
$dtstart = new qCal_Property_Dtstart($_event->dtstart->format('Ymd'), array('VALUE' => 'DATE'));
$dtend = new qCal_Property_Dtend($_event->dtend->format('Ymd'), array('VALUE' => 'DATE'));
} else {
$dtstart = new qCal_Property_Dtstart(qCal_DateTime::factory($_event->dtstart->format('Ymd\\THis'), $_event->originator_tz), array('TZID' => $_event->originator_tz));
$dtend = new qCal_Property_Dtend(qCal_DateTime::factory($_event->dtend->format('Ymd\\THis'), $_event->originator_tz), array('TZID' => $_event->originator_tz));
}
$vevent = new qCal_Component_Vevent(array('uid' => $_event->uid, 'sequence' => $_event->seq, 'summary' => $_event->summary, 'dtstart' => $dtstart, 'dtend' => $dtend));
foreach (self::$veventMap as $icalProp => $tineField) {
if (isset($_event[$tineField])) {
$vevent->addProperty($icalProp, $_event->{$tineField});
}
}
// rrule
if ($_event->rrule) {
$vevent->addProperty('rrule', preg_replace('/(UNTIL=)(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})/', '$1$2$3$4T$5$6$7Z', $_event->rrule));
if ($exdateArray = $_event->exdate) {
// use multiple EXDATE for the moment, as apple ical uses them
foreach ($_event->exdate as $exdate) {
$exdates = new qCal_Property_Exdate(qCal_DateTime::factory($exdate->format('Ymd\\THis'), $_event->originator_tz), array('TZID' => $_event->originator_tz));
$vevent->addProperty($exdates);
}
// $exdates = new qCal_Property_Exdate(qCal_DateTime::factory(array_shift($exdateArray)->format('Ymd\THis'), $_event->originator_tz), array('TZID' => $_event->originator_tz));
// foreach($exdateArray as $exdate) {
// $exdates->addValue(qCal_DateTime::factory($exdate->format('Ymd\THis'), $_event->originator_tz));
// }
//
// $vevent->addProperty($exdates);
}
}
// recurid
if ($_event->isRecurException()) {
$originalDtStart = $_event->getOriginalDtStart();
$originalDtStart->setTimezone($_event->originator_tz);
$vevent->addProperty(new qCal_Property_RecurrenceId(qCal_DateTime::factory($originalDtStart->format('Ymd\\THis'), $_event->originator_tz), array('TZID' => $_event->originator_tz)));
}
// organizer
$organizerId = $_event->organizer instanceof Addressbook_Model_Contact ? array($_event->organizer->getId()) : array($_event->organizer);
$organizer = Addressbook_Controller_Contact::getInstance()->getMultiple($organizerId, TRUE)->getFirstRecord();
if ($organizer && ($organizerEmail = $organizer->getPreferedEmailAddress())) {
$vevent->addProperty(new qCal_Property_Organizer("mailto:{$organizerEmail}", array('CN' => $organizer->n_fileas)));
}
// attendee
if ($_event->attendee) {
Calendar_Model_Attender::resolveAttendee($_event->attendee, FALSE);
foreach ($_event->attendee as $attender) {
$attenderEmail = $attender->getEmail();
if ($attenderEmail) {
$vevent->addProperty(new qCal_Property_Attendee("mailto:{$attenderEmail}", array('CN' => $attender->getName(), 'CUTYPE' => self::$cutypeMap[$attender->user_type], 'EMAIL' => $attenderEmail, 'PARTSTAT' => $attender->status, 'ROLE' => "{$attender->role}-PARTICIPANT", 'RSVP' => 'FALSE')));
}
}
}
// alarms
if ($_event->alarms) {
foreach ($_event->alarms as $alarm) {
$valarm = new qCal_Component_Valarm(array('ACTION' => 'DISPLAY', 'DESCRIPTION' => $_event->summary));
// qCal only support DURATION ;-(
$diffSeconds = $_event->dtstart->php52compat_diff($alarm->alarm_time);
$valarm->addProperty(new qCal_Property_Trigger($diffSeconds));
// if (is_numeric($alarm->minutes_before)) {
// $valarm->addProperty(new qCal_Property_Trigger("-PT{$alarm->minutes_before}M"));
// } else {
// $valarm->addProperty(new qCal_Property_Trigger(qCal_DateTime::factory($alarm->alarm_time->format('Ymd\THis'), $_event->originator_tz)), array('TZID' => $_event->originator_tz));
// }
$vevent->attach($valarm);
}
}
// @todo status
$this->_vcalendar->attach($vevent);
return $this->_vcalendar;
}