Aleksander Machniak
2012-08-14 c965c8abe1aa55a70844e2c95de9bb8d8293e9eb
program/include/rcube_imap_generic.php
@@ -313,8 +313,12 @@
                else {
                    $this->resultcode = null;
                    // parse response for [APPENDUID 1204196876 3456]
                    if (preg_match("/^\[APPENDUID [0-9]+ ([0-9,:*]+)\]/i", $str, $m)) {
                    if (preg_match("/^\[APPENDUID [0-9]+ ([0-9]+)\]/i", $str, $m)) {
                        $this->data['APPENDUID'] = $m[1];
                    }
                    // parse response for [COPYUID 1204196876 3456:3457 123:124]
                    else if (preg_match("/^\[COPYUID [0-9]+ ([0-9,:]+) ([0-9,:]+)\]/i", $str, $m)) {
                        $this->data['COPYUID'] = array($m[1], $m[2]);
                    }
                }
                $this->result = $str;
@@ -1472,14 +1476,31 @@
     */
    function enable($extension)
    {
        if (empty($extension))
        if (empty($extension)) {
            return false;
        }
        if (!$this->hasCapability('ENABLE'))
        if (!$this->hasCapability('ENABLE')) {
            return false;
        }
        if (!is_array($extension))
        if (!is_array($extension)) {
            $extension = array($extension);
        }
        if (!empty($this->extensions_enabled)) {
            // check if all extensions are already enabled
            $diff = array_diff($extension, $this->extensions_enabled);
            if (empty($diff)) {
                return $extension;
            }
            // Make sure the mailbox isn't selected, before enabling extension(s)
            if ($this->selected !== null) {
                $this->close();
            }
        }
        list($code, $response) = $this->execute('ENABLE', $extension);
@@ -1487,7 +1508,9 @@
            $response = substr($response, 10); // remove prefix "* ENABLED "
            $result   = (array) $this->tokenizeResponse($response);
            return $result;
            $this->extensions_enabled = array_unique(array_merge((array)$this->extensions_enabled, $result));
            return $this->extensions_enabled;
        }
        return false;
@@ -1931,6 +1954,9 @@
     */
    function copy($messages, $from, $to)
    {
        // Clear last COPYUID data
        unset($this->data['COPYUID']);
        if (!$this->select($from)) {
            return false;
        }
@@ -3176,10 +3202,10 @@
     */
    static function getStructurePartData($structure, $part)
    {
       $part_a = self::getStructurePartArray($structure, $part);
       $data   = array();
        $part_a = self::getStructurePartArray($structure, $part);
        $data   = array();
       if (empty($part_a)) {
        if (empty($part_a)) {
            return $data;
        }
@@ -3212,13 +3238,13 @@
    static function getStructurePartArray($a, $part)
    {
       if (!is_array($a)) {
        if (!is_array($a)) {
            return false;
        }
        if (empty($part)) {
          return $a;
       }
            return $a;
        }
        $ctype = is_string($a[0]) && is_string($a[1]) ? $a[0] . '/' . $a[1] : '';
@@ -3226,20 +3252,17 @@
            $a = $a[8];
        }
       if (strpos($part, '.') > 0) {
          $orig_part = $part;
          $pos       = strpos($part, '.');
          $rest      = substr($orig_part, $pos+1);
          $part      = substr($orig_part, 0, $pos);
        if (strpos($part, '.') > 0) {
            $orig_part = $part;
            $pos       = strpos($part, '.');
            $rest      = substr($orig_part, $pos+1);
            $part      = substr($orig_part, 0, $pos);
          return self::getStructurePartArray($a[$part-1], $rest);
       }
            return self::getStructurePartArray($a[$part-1], $rest);
        }
        else if ($part > 0) {
          if (is_array($a[$part-1]))
                return $a[$part-1];
          else
                return $a;
       }
            return (is_array($a[$part-1])) ? $a[$part-1] : $a;
        }
    }
    /**