--- Kolab/Freebusy/Cache.php.orig	2008-10-10 17:46:50.000000000 +0200
+++ Kolab/Freebusy/Cache.php	2008-10-10 19:30:40.000000000 +0200
@@ -104,7 +104,10 @@
                 return $acl;
             }
 
-            $result = $c_acl->storeACL($acl, $relevance);
+            $append = !(isset($acl[$access->user])
+                      && strpos($acl[$access->user], 'a') !== false);
+
+            $result = $c_acl->storeACL($acl, $relevance, $append);
             if (is_a($result, 'PEAR_Error')) {
                 return $result;
             }
@@ -131,19 +134,6 @@
 
         $aclcache = &FreeBusyCacheDB_acl::singleton('acl', $this->_cache_dir);
 
-        $relevant = false;
-        foreach ($access->groups as $id) {
-            if ($aclcache->has($file, $id)) {
-                $relevant = true;
-                break;
-                }
-        }
-
-        if (!$relevant) {
-            return PEAR::raiseError(sprintf(_("Folder %s is irrelevant for user %s."),
-                                            $access->imap_folder, $access->user));
-        }
-
         if ($extended) {
             $extended = $this->_allowExtended($file, $access);
         }
@@ -798,10 +788,14 @@
         return parent::purge();
     }
     
-    function storeACL(&$acl, $relevance) 
+    function storeACL(&$acl, $relevance, $append = false) 
     {
-        $oldacl = $this->load();
-        if (is_a($oldacl, 'PEAR_Error')) {
+        if (!$append) {
+            $oldacl = $this->load();
+            if (is_a($oldacl, 'PEAR_Error')) {
+                $oldacl = array();
+            }
+        } else {
             $oldacl = array();
         }
 
--- Horde/Kolab/Freebusy.php.orig	2008-08-11 12:52:29.000000000 +0200
+++ Horde/Kolab/Freebusy.php	2008-10-10 18:02:51.000000000 +0200
@@ -223,7 +223,12 @@
 
         $acl = $this->_store->_imap->getACL($this->_folder);
         if (is_a($acl, 'PEAR_Error')) {
-            return $acl;
+            $my_rights = $this->_store->_imap->getMyrights($this->_folder);
+            if (is_a($my_rights, 'PEAR_Error')) {
+                return $my_rights;
+            }
+            $acl = array();
+            $acl[Auth::getAuth()] = $my_rights;
         }
 
         if (empty($acl)) {
