2 commits - plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Tue May 8 08:36:24 CEST 2012


 plugins/calendar/drivers/kolab/kolab_driver.php |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit 86743991882236ea1dfe14c1dccda95032b50265
Merge: 8a7eb6a d5c5194
Author: Thomas B <roundcube at gmail.com>
Date:   Tue May 8 08:36:07 2012 +0200

    Merge branch 'master' of ssh://git.kolabsys.com/git/roundcube



commit 8a7eb6a6c34d1ef35a2a3b677eda1184478b84f6
Author: Thomas B <roundcube at gmail.com>
Date:   Tue May 8 08:34:29 2012 +0200

    Send user authentication if required for free-busy download; uses PEAR HTTP_Request class

diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index adca962..0dd4877 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -901,6 +901,7 @@ class kolab_driver extends calendar_driver
   public function get_freebusy_list($email, $start, $end)
   {
     require_once('Horde/iCalendar.php');
+    require_once('HTTP/Request.php');
 
     if (empty($email)/* || $end < time()*/)
       return false;
@@ -913,7 +914,17 @@ class kolab_driver extends calendar_driver
       'OOF' => calendar::FREEBUSY_OOF);
 
     // ask kolab server first
-    $fbdata = @file_get_contents(rcube_kolab::get_freebusy_url($email));
+    $request = new HTTP_Request($url = rcube_kolab::get_freebusy_url($email));
+    $result = $request->sendRequest(true);
+
+    // authentication required
+    if (!PEAR::isError($result) && $request->getResponseCode() == 401) {
+        $request->setBasicAuth($this->rc->user->get_username(), $this->rc->decrypt($_SESSION['password']));
+        $result = $request->sendRequest(true);
+    }
+
+    if (!PEAR::isError($result) && $request->getResponseCode() == 200)
+        $fbdata = $request->getResponseBody();
 
     // get free-busy url from contacts
     if (!$fbdata) {





More information about the commits mailing list