From eabd44876c67239b1f27afc4acadf1d7e2001219 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 04 Jan 2011 05:48:27 -0500
Subject: [PATCH] - Extend getCapability() to return caps values or true/false

---
 program/include/rcube_imap_generic.php |   41 +++++++++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 9eeb028..b5fd968 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -371,10 +371,43 @@
         return false;
     }
 
-    function getCapability($name)
+    private function hasCapability($name)
     {
+        if (empty($this->capability) || $name == '') {
+            return false;
+        }
+
         if (in_array($name, $this->capability)) {
             return true;
+        }
+        else if (strpos($name, '=')) {
+            return false;
+        }
+
+        $result = array();
+        foreach ($this->capability as $cap) {
+            $entry = explode('=', $cap);
+            if ($entry[0] == $name) {
+                $result[] = $entry[1];
+            }
+        }
+
+        return !empty($result) ? $result : false;
+    }
+
+    /**
+     * Capabilities checker
+     *
+     * @param string $name Capability name
+     *
+     * @return mixed Capability values array for key=value pairs, true/false for others
+     */
+    function getCapability($name)
+    {
+        $result = $this->hasCapability($name);
+
+        if (!empty($result)) {
+            return $result;
         }
         else if ($this->capability_readed) {
             return false;
@@ -390,11 +423,7 @@
 
         $this->capability_readed = true;
 
-        if (in_array($name, $this->capability)) {
-            return true;
-        }
-
-        return false;
+        return $this->hasCapability($name);
     }
 
     function clearCapability()

--
Gitblit v1.9.1