From 8cb599bd96850f28c60cb9015e7f44ff3eee4409 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Mon, 4 Jun 2012 22:19:57 +0200 Subject: [PATCH] Replace deprecated PEAR::HTTP_Request with its successor HTTP_Request2 (#822) --- .../calendar/drivers/kolab/kolab_driver.php | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index d1ccb59c..42d758cd 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -907,7 +907,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'); + require_once('HTTP/Request2.php'); if (empty($email)/* || $end < time()*/) return false; @@ -920,17 +920,31 @@ class kolab_driver extends calendar_driver 'OOF' => calendar::FREEBUSY_OOF); // ask kolab server first - $request = new HTTP_Request($url = rcube_kolab::get_freebusy_url($email)); - $result = $request->sendRequest(true); + try { + $rcmail = rcube::get_instance(); + $request = new HTTP_Request2(kolab_storage::get_freebusy_url($email)); + $request->setConfig(array( + 'store_body' => true, + 'follow_redirects' => true, + 'ssl_verify_peer' => $rcmail->config->get('kolab_ssl_verify_peer', 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); + $response = $request->send(); + + // authentication required + if ($response->getStatus() == 401) { + $request->setAuth($this->rc->user->get_username(), $this->rc->decrypt($_SESSION['password'])); + $response = $request->send(); + } + + if ($response->getStatus() == 200) + $fbdata = $response->getBody(); + + unset($request, $response); + } + catch (Exception $e) { + PEAR::raiseError("Error fetching free/busy information: " . $e->getMessage()); } - - if (!PEAR::isError($result) && $request->getResponseCode() == 200) - $fbdata = $request->getResponseBody(); // get free-busy url from contacts if (!$fbdata) {