summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2011-01-04 10:48:27 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2011-01-04 10:48:27 +0000
commit55c17c36edd4da23b16eab53d99f179c39a87f65 (patch)
treef30d71b59cb79df8dfd66e26a134182b544960e9 /roundcubemail/program/include
parent86e6aeaa48495686069e724b7a4c664256eccf56 (diff)
- Extend getCapability() to return caps values or true/false
git-svn-id: https://svn.roundcube.net/trunk@4388 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include')
-rw-r--r--roundcubemail/program/include/rcube_imap_generic.php41
1 files changed, 35 insertions, 6 deletions
diff --git a/roundcubemail/program/include/rcube_imap_generic.php b/roundcubemail/program/include/rcube_imap_generic.php
index 9eeb028bf..b5fd96871 100644
--- a/roundcubemail/program/include/rcube_imap_generic.php
+++ b/roundcubemail/program/include/rcube_imap_generic.php
@@ -371,11 +371,44 @@ class rcube_imap_generic
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 @@ class rcube_imap_generic
$this->capability_readed = true;
- if (in_array($name, $this->capability)) {
- return true;
- }
-
- return false;
+ return $this->hasCapability($name);
}
function clearCapability()