gunnar: server/php-kolab/Kolab_Freebusy/Freebusy Cache.php, 1.5, 1.6 Page.php, 1.3, 1.4

cvs at kolab.org cvs at kolab.org
Thu Feb 7 07:07:04 CET 2008


Author: gunnar

Update of /kolabrepository/server/php-kolab/Kolab_Freebusy/Freebusy
In directory doto:/tmp/cvs-serv5401/Freebusy

Modified Files:
	Cache.php Page.php 
Log Message:
Fixing the path logic for these classes.

Index: Cache.php
===================================================================
RCS file: /kolabrepository/server/php-kolab/Kolab_Freebusy/Freebusy/Cache.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Cache.php	5 Feb 2008 17:04:13 -0000	1.5
+++ Cache.php	7 Feb 2008 06:07:02 -0000	1.6
@@ -48,13 +48,11 @@
 
     function store($access) 
     {
-        $folder = $this->_getFolder($access);
-
         /* Now we really need the free/busy library */
         require_once('Horde/Kolab/Freebusy.php');
 
         $fb = &new Horde_Kolab_Freebusy();
-        $result = $fb->connect($folder);
+        $result = $fb->connect($access->imap_folder);
         if (is_a($result, 'PEAR_Error')) {
             return $result;
         }
@@ -65,7 +63,7 @@
             $vCal;
         }
 
-        $fbfilename = $this->_getFilename($folder, $access->owner);
+        $fbfilename = $this->_getFilename($access->folder, $access->owner);
         
         $c_pvcal = &new FreeBusyCacheFile_pvcal($this->_cache_dir, $fbfilename);
         $c_acl   = &new FreeBusyCacheFile_acl($this->_cache_dir, $fbfilename);
@@ -130,8 +128,8 @@
 
     function &loadPartial(&$access, $extended) 
     {
-        $folder = $this->_getFolder($access);
-        $file = $this->_getFilename($folder, $access->owner);
+        $fbfilename = $this->_getFilename($access->folder, $access->owner);
+
         $aclcache = &FreeBusyCacheDB_acl::singleton('acl', $this->_cache_dir);
 
         $relevant = false;
@@ -144,7 +142,7 @@
 
         if (!$relevant) {
             return PEAR::raiseError(sprintf(_("Folder %s is irrelevant for user %s."),
-                                            $folder, $access->user));
+                                            $access->imap_folder, $access->user));
         }
 
         if ($extended) {
@@ -171,16 +169,21 @@
         }
         $filesnames = array();
 
-        $c_file = $this->_getFilename($access->user, $access->owner);
+        $owner = $access->owner;
+        if (ereg('(.*)@(.*)', $owner, $regs)) {
+            $owner = $regs[2] . '/' . $regs[1];
+        }
+        $user = $access->user;
+        if (ereg('(.*)@(.*)', $user, $regs)) {
+            $user = $regs[2] . '/' . $regs[1];
+        }
+        $c_file = str_replace("\0", '', str_replace('.', '^', $user . '/' . $owner));
+
         $c_vcal = &new FreeBusyCacheFile_vcal($this->_cache_dir, $c_file);
 
         /* If the current vCal cache did not expire, we can deliver it */
         if (!$c_vcal->expired($files)) {
-            $vCal = $c_vcal->loadVcal();
-            if (is_a($vCal, 'PEAR_Error')) {
-                return $vCal;
-            }
-            return $vCal;
+            return $c_vcal->loadVcal();
         }
         
         // Create the new iCalendar.
@@ -276,52 +279,8 @@
         if (ereg('(.*)@(.*)', $owner, $regs)) {
             $owner = $regs[2] . '/' . $regs[1];
         }
-        if ($folder) {
-            if (ereg('(.*)@(.*)', $folder, $regs)) {
-                $folder = $regs[2] . '/' . $regs[1];
-            }
-            $filename = $owner . '/' . $folder;
-        }
         
-        return str_replace("\0", '', str_replace('.', '^', $filename));
-    }
-
-    function _getFolder($access) 
-    {
-        $userdom = false;
-        $ownerdom = false;
-        if (ereg( '(.*)@(.*)', $access->user, $regs)) {
-            // Regular user
-            $user = $regs[1];
-            $userdom  = $regs[2];
-        } else {
-            $user = $access->user;
-        }
-        
-        if(ereg( '(.*)@(.*)', $access->owner, $regs)) {      
-            // Regular owner
-            $owner = $regs[1];
-            $ownerdom = $regs[2];
-        } else {
-            $owner = $access->owner;
-        }
-
-        $fldrcomp = array();
-        if ($user == $owner) {
-            $fldrcomp[] = 'INBOX';
-        } else {
-            $fldrcomp[] = 'user';
-        }
-        
-        if (!empty($access->folder)) {
-            $fldrcomp[] = $access->folder;
-        }
-    
-        $folder = join('/', $fldrcomp);
-        if ($ownerdom && !$userdom) {
-            $folder .= '@' . $ownerdom;
-        }
-        return $folder;
+        return str_replace("\0", '', str_replace('.', '^', $owner . '/' . $folder));
     }
 
     function &_fetchRemote($servers, $access) 

Index: Page.php
===================================================================
RCS file: /kolabrepository/server/php-kolab/Kolab_Freebusy/Freebusy/Page.php,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Page.php	6 Feb 2008 08:00:27 -0000	1.3
+++ Page.php	7 Feb 2008 06:07:02 -0000	1.4
@@ -191,6 +191,13 @@
     var $folder;
 
     /**
+     * The IMAP path of folder we try to access
+     *
+     * @var string
+     */
+    var $imap_folder;
+
+    /**
      * The requested owner
      *
      * @var string
@@ -459,7 +466,48 @@
         } else {
             $this->groups[] = $this->user;
         }
+        $this->imap_folder = $this->_getImapFolder();
+    }
+
+    function _getImapFolder() 
+    {
+        $userdom = false;
+        $ownerdom = false;
+        if (ereg( '(.*)@(.*)', $this->user, $regs)) {
+            // Regular user
+            $user = $regs[1];
+            $userdom  = $regs[2];
+        } else {
+            $user = $this->user;
+        }
+        
+        if(ereg( '(.*)@(.*)', $this->owner, $regs)) {      
+            // Regular owner
+            $owner = $regs[1];
+            $ownerdom = $regs[2];
+        } else {
+            $owner = $this->owner;
+        }
+
+        $fldrcomp = array();
+        if ($user == $owner) {
+            $fldrcomp[] = 'INBOX';
+        } else {
+            $fldrcomp[] = 'user';
+            $fldrcomp[] = $owner;
+        }
+        
+        if (!empty($this->folder)) {
+            $fldrcomp[] = $this->folder;
+        }
+    
+        $folder = join('/', $fldrcomp);
+        if ($ownerdom && !$userdom) {
+            $folder .= '@' . $ownerdom;
+        }
+        return $folder;
     }
+
 }
 
 class FreeBusyView {





More information about the commits mailing list