Code

Added fix for divlist department selection
[gosa.git] / include / class_mail-methods-cyrus.inc
index 4c77b2f77b76242d097f7cfa3c94d8c17b57d87b..1c361877b8e18009fb6074399c9644ef078d8b52 100644 (file)
@@ -36,7 +36,7 @@ class mailMethodCyrus extends mailMethod
     /* Connect to IMAP server. I don't want to see these warning here... */
     $this->gosaMailServer= $gosaMailServer;
     if (!isset($this->config[$gosaMailServer])){
-      print_red(_("Warning: Account has an invalid mailserver string! Please check the mail server settings in the mail tab."));
+      print_red(_("Warning: Account has an invalid mailserver string!"));
     } else {
       $cfg= $this->config[$gosaMailServer];
     }
@@ -70,16 +70,30 @@ class mailMethodCyrus extends mailMethod
     if(is_array($quota_value)) {
       if (isset($quota_value["STORAGE"]) && is_array($quota_value["STORAGE"])){
         /* use for PHP >= 4.3 */
-        $result['quotaUsage']=    $quota_value["STORAGE"]['usage'];
-        $result['gosaMailQuota']= $quota_value["STORAGE"]['limit'];
+        if($quota_value["STORAGE"]['limit'] == 2147483647){
+          $result['quotaUsage']=    (int) ($quota_value["STORAGE"]['usage'] / 1024);
+          $result['gosaMailQuota']= (int) ($quota_value["STORAGE"]['limit'] );
+        }else{
+          $result['quotaUsage']=    (int) ($quota_value["STORAGE"]['usage'] / 1024);
+          $result['gosaMailQuota']= (int) ($quota_value["STORAGE"]['limit'] / 1024);
+        }
       } else {
         /* backward icompatible */
-        $result['quotaUsage']=    $quota_value['usage'];
-        $result['gosaMailQuota']= $quota_value['limit'];
+        if($quota_value['usage'] == 2147483647){
+          $result['quotaUsage']=    (int) ($quota_value['usage'] / 1024);
+          $result['gosaMailQuota']= (int) ($quota_value['limit'] );
+        }else{
+          $result['quotaUsage']=    (int) ($quota_value['usage'] / 1024);
+          $result['gosaMailQuota']= (int) ($quota_value['limit'] / 1024);
+        }
       }
+    }elseif(!$quota_value){
+
+      /* If there is no quota defined for this account, the function imap_get_quota returns false. */
+      return(array("quotaUsage"=>"","gosaMailQuota"=>""));
     }
     error_reporting (E_ALL);
-
     return ($result);
   }
 
@@ -122,10 +136,13 @@ class mailMethodCyrus extends mailMethod
   function setQuota($folder, $gosaMailQuota)
   {
     /* Workaround for the php imap extension */
-    if ($gosaMailQuota == ""){
-      $gosaMailQuota= "-1";
+    if (($gosaMailQuota == "") || ($gosaMailQuota== "2147483647")){
+      $gosaMailQuota= "2147483647";
+    }elseif($gosaMailQuota > 0){
+      $gosaMailQuota = $gosaMailQuota *1024;
     }
-
+    
+    
     /* Write mail quota */
     if (!imap_set_quota($this->mbox, $folder, $gosaMailQuota)){
       print_red(sprintf(_("Can't write IMAP quota. Server says '%s'."), imap_last_error()));
@@ -147,9 +164,11 @@ class mailMethodCyrus extends mailMethod
       if (function_exists('imap_getacl')){
 
         /* Remove all acl's for this folder */
-        $users= imap_getacl ($this->mbox, $subfolder);
-        foreach ($users as $userid => $perms){
-          imap_setacl ($this->mbox, $subfolder, $userid, "");
+        $users= @imap_getacl ($this->mbox, $subfolder);
+        if(is_array($users)){
+          foreach ($users as $userid => $perms){
+            imap_setacl ($this->mbox, $subfolder, $userid, "");
+          }
         }
       } else {
         print_red (_("Warning: imap_getacl is not implemented, can't remove acl informations."));