| | |
| | | public function index_direct($folder, $sort_field = null, $sort_order = null, $search = null) |
| | | { |
| | | if (!empty($search)) { |
| | | $search = $this->search_set->get_compressed(); |
| | | $search = $search->get_compressed(); |
| | | } |
| | | |
| | | // use message index sort as default sorting |
| | |
| | | for ($i=1; $i<count($part); $i++) { |
| | | if (!is_array($part[$i])) { |
| | | $struct->ctype_secondary = strtolower($part[$i]); |
| | | |
| | | // read content type parameters |
| | | if (is_array($part[$i+1])) { |
| | | $struct->ctype_parameters = array(); |
| | | for ($j=0; $j<count($part[$i+1]); $j+=2) { |
| | | $param = strtolower($part[$i+1][$j]); |
| | | $struct->ctype_parameters[$param] = $part[$i+1][$j+1]; |
| | | } |
| | | } |
| | | |
| | | break; |
| | | } |
| | | } |
| | |
| | | /** |
| | | * Returns the whole message source as string (or saves to a file) |
| | | * |
| | | * @param int $uid Message UID |
| | | * @param resource $fp File pointer to save the message |
| | | * @param int $uid Message UID |
| | | * @param resource $fp File pointer to save the message |
| | | * @param string $part Optional message part ID |
| | | * |
| | | * @return string Message source string |
| | | */ |
| | | public function get_raw_body($uid, $fp=null) |
| | | public function get_raw_body($uid, $fp=null, $part = null) |
| | | { |
| | | if (!$this->check_connection()) { |
| | | return null; |
| | | } |
| | | |
| | | return $this->conn->handlePartBody($this->folder, $uid, |
| | | true, null, null, false, $fp); |
| | | true, $part, null, false, $fp); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns the message headers as string |
| | | * |
| | | * @param int $uid Message UID |
| | | * @param int $uid Message UID |
| | | * @param string $part Optional message part ID |
| | | * |
| | | * @return string Message headers string |
| | | */ |
| | | public function get_raw_headers($uid) |
| | | public function get_raw_headers($uid, $part = null) |
| | | { |
| | | if (!$this->check_connection()) { |
| | | return null; |
| | | } |
| | | |
| | | return $this->conn->fetchPartHeader($this->folder, $uid, true); |
| | | return $this->conn->fetchPartHeader($this->folder, $uid, true, $part); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | $result = $this->conn->createFolder($folder, $type ? array("\\" . ucfirst($type)) : null); |
| | | |
| | | // it's quite often situation that we're trying to create and subscribe |
| | | // a folder that already exist, but is unsubscribed |
| | | if (!$result) { |
| | | if ($this->get_response_code() == rcube_storage::ALREADYEXISTS |
| | | || preg_match('/already exists/i', $this->get_error_str()) |
| | | ) { |
| | | $result = true; |
| | | } |
| | | } |
| | | |
| | | // try to subscribe it |
| | | if ($result) { |
| | |
| | | |
| | | // @TODO: Honor MAXSIZE and DEPTH options |
| | | foreach ($queries as $attrib => $entry) { |
| | | if ($result = $this->conn->getAnnotation($folder, $entry, $attrib)) { |
| | | $res = array_merge_recursive($res, $result); |
| | | $result = $this->conn->getAnnotation($folder, $entry, $attrib); |
| | | |
| | | // an error, invalidate any previous getAnnotation() results |
| | | if (!is_array($result)) { |
| | | return null; |
| | | } |
| | | else { |
| | | foreach ($result as $fldr => $data) { |
| | | $res[$fldr] = array_merge((array) $res[$fldr], $data); |
| | | } |
| | | } |
| | | } |
| | | } |