steffen: server/kolab-resource-handlers/kolab-resource-handlers/resmgr resmgr.php, 1.12, 1.13

cvs at intevation.de cvs at intevation.de
Tue Aug 31 05:55:33 CEST 2004


Author: steffen

Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr
In directory doto:/tmp/cvs-serv10308/kolab-resource-handlers/kolab-resource-handlers/resmgr

Modified Files:
	resmgr.php 
Log Message:
group/resource fixes

Index: resmgr.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/resmgr.php,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- resmgr.php	19 Aug 2004 23:28:52 -0000	1.12
+++ resmgr.php	31 Aug 2004 03:55:31 -0000	1.13
@@ -259,6 +259,35 @@
     return $cleartext;
 }
 
+function getResourceUid()
+{
+    global $resource, $params;
+
+    // Connect to the LDAP server and retrieve the users' password
+    $ldap = ldap_connect($params['ldap_uri']);
+    if (!ldap_bind($ldap, $params['bind_dn'], $params['bind_pw'])) {
+        myLog('Unable to contact LDAP server: ' . ldap_error($ldap));
+        return false;
+    }
+
+    $result = ldap_search($ldap, $params['base_dn'], "(&(objectClass=kolabInetOrgPerson)(mail=$resource))", array("uid"));
+    if (!$result) {
+        myLog('Unable to perform LDAP search: ' . ldap_error($ldap));
+        return false;
+    }
+
+    $entries = ldap_get_entries($ldap, $result);
+    if ($entries['count'] != 1) {
+        myLog("More than one object returned for $resource");
+        return false;
+    }
+
+    $uid = $entries[0]['uid'][0];
+    ldap_close($ldap);
+    if( $uid ) return $uid; 
+    else return $resource;
+}
+
 function getRequest()
 {
     global $requestText;
@@ -392,7 +421,7 @@
     myLog("Using f/b URL $url", RM_LOG_DEBUG);
 
     $parsed = parse_url($url);
-    $parsed['user'] = $params['calendar_user'];
+    $parsed['user'] = $params['calendar_uid'];
     $parsed['pass'] = $params['calendar_pass'];
     $url = assembleUri($parsed);
 
@@ -400,6 +429,7 @@
     if ($text == false || empty($text)) {
         myLog("Unable to retrieve free/busy information for $resource", RM_LOG_ERROR);	
         //shutdown(1, "Unable to retrieve free/busy information for $resource");
+        return false;
     }
 
     $iCalendar = &new Horde_iCalendar();
@@ -564,11 +594,11 @@
     @imap_reopen($imap, $fullmbox, CL_EXPUNGE);
     $errors = imap_errors();
     if (count($errors)) {
-        myLog('IMAP Errors from reopen: ' . join(', ', $errors));
+        myLog('IMAP Errors from reopen: ' . @join(', ', $errors));
 
         // Try create the Calendar folder
         @imap_createmailbox($imap, $fullmbox);
-        myLog('IMAP Errors from createmailbox: ' . join(', ', imap_errors()));
+        myLog('IMAP Errors from createmailbox: ' . @join(', ', imap_errors()));
 
         $status = @imap_status($imap, $fullmbox, SA_ALL);
         myLog('New folder status: ' . print_r($status, true));
@@ -713,6 +743,7 @@
 init();
 
 $params['calendar_user'] = $resource;
+$params['calendar_uid'] = getResourceUid();
 $params['calendar_pass'] = getImapPassword();
 
 require_once HORDE_BASE . '/lib/core.php';
@@ -781,6 +812,10 @@
         if ($params['action'] != RM_ACT_ALWAYS_ACCEPT) {
             // Get the resource's free/busy list
             $vfb = &getFreeBusy();
+
+	    if( !$vfb ) {
+	      shutdown(1,"Error building free/busy list");
+	    }
 
             $vfbstart = $vfb->getAttributeDefault('DTSTART', 0);
             $vfbend = $vfb->getAttributeDefault('DTEND', 0);





More information about the commits mailing list