Overview

Packages

  • Kronolith
  • None

Classes

  • Kronolith
  • Kronolith_Ajax_Application
  • Kronolith_Ajax_Imple_ContactAutoCompleter
  • Kronolith_Ajax_Imple_Embed
  • Kronolith_Ajax_Imple_TagActions
  • Kronolith_Ajax_Imple_TagAutoCompleter
  • Kronolith_Api
  • Kronolith_Calendar
  • Kronolith_Calendar_External
  • Kronolith_Calendar_External_Tasks
  • Kronolith_Calendar_Holiday
  • Kronolith_Calendar_Internal
  • Kronolith_Calendar_Remote
  • Kronolith_Calendar_Resource
  • Kronolith_Calendars_Base
  • Kronolith_Calendars_Default
  • Kronolith_Calendars_Kolab
  • Kronolith_Day
  • Kronolith_Driver
  • Kronolith_Driver_Holidays
  • Kronolith_Driver_Horde
  • Kronolith_Driver_Ical
  • Kronolith_Driver_Kolab
  • Kronolith_Driver_Mock
  • Kronolith_Driver_Resource
  • Kronolith_Driver_Sql
  • Kronolith_Event
  • Kronolith_Event_Holidays
  • Kronolith_Event_Horde
  • Kronolith_Event_Ical
  • Kronolith_Event_Kolab
  • Kronolith_Event_Resource
  • Kronolith_Event_Sql
  • Kronolith_Exception
  • Kronolith_Factory_Calendars
  • Kronolith_Factory_Geo
  • Kronolith_Form_CreateCalendar
  • Kronolith_Form_CreateResource
  • Kronolith_Form_CreateResourceGroup
  • Kronolith_Form_DeleteCalendar
  • Kronolith_Form_DeleteResource
  • Kronolith_Form_DeleteResourceGroup
  • Kronolith_Form_EditCalendar
  • Kronolith_Form_EditRemoteCalendar
  • Kronolith_Form_EditResource
  • Kronolith_Form_EditResourceGroup
  • Kronolith_Form_SubscribeRemoteCalendar
  • Kronolith_Form_UnsubscribeRemoteCalendar
  • Kronolith_FreeBusy
  • Kronolith_FreeBusy_View
  • Kronolith_FreeBusy_View_Day
  • Kronolith_FreeBusy_View_Month
  • Kronolith_FreeBusy_View_Week
  • Kronolith_FreeBusy_View_Workweek
  • Kronolith_Geo_Base
  • Kronolith_Geo_Mysql
  • Kronolith_Geo_Sql
  • Kronolith_LoginTasks_SystemTask_Upgrade
  • Kronolith_LoginTasks_Task_PurgeEvents
  • Kronolith_Notification_Listener_AjaxStatus
  • Kronolith_Resource
  • Kronolith_Resource_Base
  • Kronolith_Resource_Group
  • Kronolith_Resource_Single
  • Kronolith_Storage
  • Kronolith_Storage_Kolab
  • Kronolith_Storage_Sql
  • Kronolith_Tagger
  • Kronolith_Test
  • Kronolith_View_Day
  • Kronolith_View_DeleteEvent
  • Kronolith_View_EditEvent
  • Kronolith_View_Event
  • Kronolith_View_ExportEvent
  • Kronolith_View_Month
  • Kronolith_View_Week
  • Kronolith_View_WorkWeek
  • Kronolith_View_Year
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Copyright 2004-2012 Horde LLC (http://www.horde.org/)
  4:  *
  5:  * See the enclosed file COPYING for license information (GPL). If you
  6:  * did not receive this file, see http://www.horde.org/licenses/gpl.
  7:  *
  8:  * @author  Chuck Hagenbuch <chuck@horde.org>
  9:  * @author  Jan Schneider <jan@horde.org>
 10:  * @package Kronolith
 11:  */
 12: class Kronolith_Event_Ical extends Kronolith_Event
 13: {
 14:     /**
 15:      * The type of the calender this event exists on.
 16:      *
 17:      * @var string
 18:      */
 19:     public $calendarType = 'remote';
 20: 
 21:     /**
 22:      * The Horde_Perms permissions mask matching the CalDAV ACL of this event's
 23:      * calendar.
 24:      *
 25:      * @var integer
 26:      */
 27:     public $permission = 0;
 28: 
 29:     /**
 30:      * Imports a backend specific event object.
 31:      *
 32:      * @param Horde_Icalendar_Vevent  Backend specific event object that this
 33:      *                                object will represent.
 34:      */
 35:     public function fromDriver($vEvent)
 36:     {
 37:         $this->fromiCalendar($vEvent);
 38:         $this->initialized = true;
 39:         $this->stored = true;
 40:     }
 41: 
 42:     /**
 43:      * Encapsulates permissions checking.
 44:      *
 45:      * $user is being ignored.
 46:      *
 47:      * @param integer $permission  The permission to check for.
 48:      * @param string $user         The user to check permissions for.
 49:      *
 50:      * @return boolean
 51:      */
 52:     public function hasPermission($permission, $user = null)
 53:     {
 54:         return $this->permission & $permission;
 55:     }
 56: 
 57:     /**
 58:      * Returns the title of this event.
 59:      *
 60:      * @param string $user  The current user.
 61:      *
 62:      * @return string  The title of this event.
 63:      */
 64:     public function getTitle($user = null)
 65:     {
 66:         return !empty($this->title) ? $this->title : _("[Unnamed event]");
 67:     }
 68: 
 69:     /**
 70:      * @param array $params
 71:      *
 72:      * @return Horde_Url
 73:      */
 74:     public function getViewUrl($params = array(), $full = false, $encoded = true)
 75:     {
 76:         if ($this->url) {
 77:             return new Horde_Url($this->url, !$encoded);
 78:         }
 79:         return parent::getViewUrl($params, $full, $encoded);
 80:     }
 81: 
 82:     /**
 83:      * Parses the various exception related fields. Only deal with the EXDATE
 84:      * field here.
 85:      *
 86:      * @param Horde_Icalendar $vEvent  The vEvent part.
 87:      */
 88:     protected function _handlevEventRecurrence($vEvent)
 89:     {
 90:         // Recurrence.
 91:         try {
 92:             $rrule = $vEvent->getAttribute('RRULE');
 93:             if (!is_array($rrule)) {
 94:                 $this->recurrence = new Horde_Date_Recurrence($this->start);
 95:                 if (strpos($rrule, '=') !== false) {
 96:                     $this->recurrence->fromRRule20($rrule);
 97:                 } else {
 98:                     $this->recurrence->fromRRule10($rrule);
 99:                 }
100: 
101:                 // Exceptions. EXDATE represents deleted events, just add the
102:                 // exception, no new event is needed.
103:                 $exdates = $vEvent->getAttributeValues('EXDATE');
104:                 if (is_array($exdates)) {
105:                     foreach ($exdates as $exdate) {
106:                         if (is_array($exdate)) {
107:                             $this->recurrence->addException((int)$exdate['year'],
108:                                                             (int)$exdate['month'],
109:                                                             (int)$exdate['mday']);
110:                         }
111:                     }
112:                 }
113:             }
114:         } catch (Horde_Icalendar_Exception $e) {}
115:     }
116: 
117: }
118: 
API documentation generated by ApiGen