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:  * Horde Kronolith free/busy driver for the Kolab IMAP Server.
 4:  * Copyright 2004-2012 Horde LLC (http://www.horde.org/)
 5:  *
 6:  * See the enclosed file COPYING for license information (GPL). If you
 7:  * not receive such a file, see also http://www.horde.org/licenses/gpl.
 8:  *
 9:  * @author  Stuart Binge <omicron@mighty.co.za>
10:  * @package Kronolith
11:  */
12: class Kronolith_Storage_Kolab extends Kronolith_Storage
13: {
14:     protected $_params = array();
15: 
16:     public function __construct($user, array $params = array())
17:     {
18:         $this->_user = $user;
19:         $this->_params = $params;
20:     }
21: 
22:     /**
23:      * @throws Kronolith_Exception
24:      */
25:     public function search($email, $private_only = false)
26:     {
27:         global $conf;
28: 
29:         if (class_exists('Horde_Kolab_Session')) {
30:             $session = Horde_Kolab_Session::singleton();
31:             $server = $session->freebusy_server;
32:         } else {
33:             $server = sprintf('%s://%s:%d/freebusy/',
34:                               $conf['storage']['freebusy']['protocol'],
35:                               Kolab::getServer('imap'),
36:                               $conf['storage']['freebusy']['port']);
37:         }
38: 
39:         $fb_url = sprintf('%s/%s.xfb', $server, $email);
40: 
41:         $options['method'] = 'GET';
42:         $options['timeout'] = 5;
43:         $options['allowRedirects'] = true;
44: 
45:         if (!empty($GLOBALS['conf']['http']['proxy']['proxy_host'])) {
46:             $options = array_merge($options, $GLOBALS['conf']['http']['proxy']);
47:         }
48: 
49:         $http = new HTTP_Request($fb_url, $options);
50:         $http->setBasicAuth($GLOBALS['registry']->getAuth(), $GLOBALS['registry']->getAuthCredential('password'));
51:         @$http->sendRequest();
52:         if ($http->getResponseCode() != 200) {
53:             throw new Horde_Exception_NotFound();
54:         }
55:         $vfb_text = $http->getResponseBody();
56: 
57:         $iCal = new Horde_Icalendar;
58:         $iCal->parsevCalendar($vfb_text);
59: 
60:         $vfb = $iCal->findComponent('VFREEBUSY');
61:         if ($vfb === false) {
62:             throw new Horde_Exception_NotFound();
63:         }
64: 
65:         return $vfb;
66:     }
67: 
68:     public function store($email, $vfb, $public = false)
69:     {
70:         // We don't care about storing FB info at the moment; we rather let
71:         // Kolab's freebusy.php script auto-generate it for us.
72:     }
73: 
74: }
75: 
API documentation generated by ApiGen