|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
/**
|
|
|
|
|
+-----------------------------------------------------------------------+
|
|
|
|
|
| This file is part of the Roundcube Webmail client |
|
|
|
|
|
| Copyright (C) 2005-2012, The Roundcube Dev Team |
|
|
|
|
@ -95,7 +95,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Magic getter for backward compat.
|
|
|
|
|
*
|
|
|
|
@ -108,7 +107,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Connect to an IMAP server
|
|
|
|
|
*
|
|
|
|
@ -203,7 +201,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Close IMAP connection.
|
|
|
|
|
* Usually done on script shutdown
|
|
|
|
@ -216,7 +213,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check connection state, connect if not connected.
|
|
|
|
|
*
|
|
|
|
@ -238,7 +234,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->is_connected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Checks IMAP connection.
|
|
|
|
|
*
|
|
|
|
@ -249,7 +244,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->connected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns code of last error
|
|
|
|
|
*
|
|
|
|
@ -260,7 +254,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->errornum;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns text of last error
|
|
|
|
|
*
|
|
|
|
@ -271,7 +264,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns code of last command response
|
|
|
|
|
*
|
|
|
|
@ -301,7 +293,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Activate/deactivate debug mode
|
|
|
|
|
*
|
|
|
|
@ -313,23 +304,21 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
$this->conn->setDebug($dbg, array($this, 'debug_handler'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set internal folder reference.
|
|
|
|
|
* All operations will be perfomed on this folder.
|
|
|
|
|
*
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
*/
|
|
|
|
|
public function set_folder($folder)
|
|
|
|
|
{
|
|
|
|
|
$this->folder = $folder;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Save a search result for future message listing methods
|
|
|
|
|
*
|
|
|
|
|
* @param array $set Search set, result from rcube_imap::get_search_set():
|
|
|
|
|
* @param array $set Search set, result from rcube_imap::get_search_set():
|
|
|
|
|
* 0 - searching criteria, string
|
|
|
|
|
* 1 - search result, rcube_result_index|rcube_result_thread
|
|
|
|
|
* 2 - searching character set, string
|
|
|
|
@ -352,7 +341,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return the saved search set as hash array
|
|
|
|
|
*
|
|
|
|
@ -373,7 +361,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the IMAP server's capability.
|
|
|
|
|
*
|
|
|
|
@ -397,14 +384,13 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $_SESSION[$sess_key];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Checks the PERMANENTFLAGS capability of the current folder
|
|
|
|
|
* and returns true if the given flag is supported by the IMAP server
|
|
|
|
|
*
|
|
|
|
|
* @param string $flag Permanentflag name
|
|
|
|
|
* @param string $flag Permanentflag name
|
|
|
|
|
*
|
|
|
|
|
* @return boolean True if this flag is supported
|
|
|
|
|
* @return boolean True if this flag is supported
|
|
|
|
|
*/
|
|
|
|
|
public function check_permflag($flag)
|
|
|
|
|
{
|
|
|
|
@ -415,11 +401,10 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $imap_flag && !empty($perm_flags) && in_array_nocase($imap_flag, $perm_flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns PERMANENTFLAGS of the specified folder
|
|
|
|
|
*
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
*
|
|
|
|
|
* @return array Flags
|
|
|
|
|
*/
|
|
|
|
@ -447,25 +432,22 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $permflags;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the delimiter that is used by the IMAP server for folder separation
|
|
|
|
|
*
|
|
|
|
|
* @return string Delimiter string
|
|
|
|
|
* @access public
|
|
|
|
|
* @return string Delimiter string
|
|
|
|
|
*/
|
|
|
|
|
public function get_hierarchy_delimiter()
|
|
|
|
|
{
|
|
|
|
|
return $this->delimiter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get namespace
|
|
|
|
|
*
|
|
|
|
|
* @param string $name Namespace array index: personal, other, shared, prefix
|
|
|
|
|
*
|
|
|
|
|
* @return array Namespace data
|
|
|
|
|
* @return array Namespace data
|
|
|
|
|
*/
|
|
|
|
|
public function get_namespace($name = null)
|
|
|
|
|
{
|
|
|
|
@ -479,7 +461,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $ns;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets delimiter and namespaces
|
|
|
|
|
*/
|
|
|
|
@ -560,7 +541,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
$_SESSION['imap_delimiter'] = $this->delimiter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get message count for a specific folder
|
|
|
|
|
*
|
|
|
|
@ -570,7 +550,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param boolean $status Enables storing folder status info (max UID/count),
|
|
|
|
|
* required for folder_status()
|
|
|
|
|
*
|
|
|
|
|
* @return int Number of messages
|
|
|
|
|
* @return int Number of messages
|
|
|
|
|
*/
|
|
|
|
|
public function count($folder='', $mode='ALL', $force=false, $status=true)
|
|
|
|
|
{
|
|
|
|
@ -581,7 +561,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->countmessages($folder, $mode, $force, $status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for getting nr of messages
|
|
|
|
|
*
|
|
|
|
@ -696,7 +675,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return (int)$count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Public method for listing message flags
|
|
|
|
|
*
|
|
|
|
@ -731,7 +709,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Public method for listing headers
|
|
|
|
|
*
|
|
|
|
@ -741,7 +718,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param string $sort_order Sort order [ASC|DESC]
|
|
|
|
|
* @param int $slice Number of slice items to extract from result array
|
|
|
|
|
*
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
*/
|
|
|
|
|
public function list_messages($folder='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
|
|
|
|
|
{
|
|
|
|
@ -752,7 +729,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->_list_messages($folder, $page, $sort_field, $sort_order, $slice);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for listing message headers
|
|
|
|
|
*
|
|
|
|
@ -762,8 +738,8 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param string $sort_order Sort order [ASC|DESC]
|
|
|
|
|
* @param int $slice Number of slice items to extract from result array
|
|
|
|
|
*
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @see rcube_imap::list_messages
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @see rcube_imap::list_messages
|
|
|
|
|
*/
|
|
|
|
|
protected function _list_messages($folder='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
|
|
|
|
|
{
|
|
|
|
@ -806,16 +782,15 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return array_values($a_msg_headers);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for listing message headers using threads
|
|
|
|
|
*
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param int $page Current page to list
|
|
|
|
|
* @param int $slice Number of slice items to extract from result array
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param int $page Current page to list
|
|
|
|
|
* @param int $slice Number of slice items to extract from result array
|
|
|
|
|
*
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @see rcube_imap::list_messages
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @see rcube_imap::list_messages
|
|
|
|
|
*/
|
|
|
|
|
protected function list_thread_messages($folder, $page, $slice=0)
|
|
|
|
|
{
|
|
|
|
@ -833,7 +808,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
/**
|
|
|
|
|
* Method for fetching threads data
|
|
|
|
|
*
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
*
|
|
|
|
|
* @return rcube_imap_thread Thread data object
|
|
|
|
|
*/
|
|
|
|
@ -857,11 +832,10 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->icache['threads'] = $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Method for direct fetching of threads data
|
|
|
|
|
*
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
*
|
|
|
|
|
* @return rcube_imap_thread Thread data object
|
|
|
|
|
*/
|
|
|
|
@ -876,7 +850,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
$this->options['skip_deleted'] ? 'UNDELETED' : '', true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for fetching threaded messages headers
|
|
|
|
|
*
|
|
|
|
@ -885,7 +858,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param int $page List page number
|
|
|
|
|
* @param int $slice Number of threads to slice
|
|
|
|
|
*
|
|
|
|
|
* @return array Messages headers
|
|
|
|
|
* @return array Messages headers
|
|
|
|
|
*/
|
|
|
|
|
protected function fetch_thread_headers($folder, $threads, $page, $slice=0)
|
|
|
|
|
{
|
|
|
|
@ -915,13 +888,12 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return array_values($a_msg_headers);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for setting threaded messages flags:
|
|
|
|
|
* depth, has_children and unread_children
|
|
|
|
|
*
|
|
|
|
|
* @param array $headers Reference to headers array indexed by message UID
|
|
|
|
|
* @param rcube_result_thread $threads Threads data object
|
|
|
|
|
* @param array $headers Reference to headers array indexed by message UID
|
|
|
|
|
* @param rcube_result_thread $threads Threads data object
|
|
|
|
|
*
|
|
|
|
|
* @return array Message headers array indexed by message UID
|
|
|
|
|
*/
|
|
|
|
@ -947,7 +919,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for listing a set of message headers (search results)
|
|
|
|
|
*
|
|
|
|
@ -955,7 +926,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param int $page Current page to list
|
|
|
|
|
* @param int $slice Number of slice items to extract from result array
|
|
|
|
|
*
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
*/
|
|
|
|
|
protected function list_search_messages($folder, $page, $slice=0)
|
|
|
|
|
{
|
|
|
|
@ -1140,7 +1111,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected method for listing a set of threaded message headers (search results)
|
|
|
|
|
*
|
|
|
|
@ -1148,7 +1118,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param int $page Current page to list
|
|
|
|
|
* @param int $slice Number of slice items to extract from result array
|
|
|
|
|
*
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @return array Indexed array with message header objects
|
|
|
|
|
* @see rcube_imap::list_search_messages()
|
|
|
|
|
*/
|
|
|
|
|
protected function list_search_thread_messages($folder, $page, $slice=0)
|
|
|
|
@ -1164,7 +1134,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->fetch_thread_headers($folder, clone $this->search_set, $page, $slice);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Fetches messages headers (by UID)
|
|
|
|
|
*
|
|
|
|
@ -1212,7 +1181,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $a_msg_headers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns current status of a folder (compared to the last time use)
|
|
|
|
|
*
|
|
|
|
@ -1260,7 +1228,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Stores folder statistic data in session
|
|
|
|
|
* @TODO: move to separate DB table (cache?)
|
|
|
|
@ -1274,7 +1241,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
$_SESSION['folders'][$folder][$name] = $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gets folder statistic data
|
|
|
|
|
*
|
|
|
|
@ -1291,7 +1257,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return sorted list of message UIDs
|
|
|
|
|
*
|
|
|
|
@ -1369,7 +1334,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->index_direct($folder, $this->sort_field, $this->sort_order);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return sorted list of message UIDs ignoring current search settings.
|
|
|
|
|
* Doesn't uses cache by default.
|
|
|
|
@ -1437,7 +1401,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $index;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return index of threaded message UIDs
|
|
|
|
|
*
|
|
|
|
@ -1468,7 +1431,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $threads;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sort threaded result, using THREAD=REFS method if available.
|
|
|
|
|
* If not, use any method and re-sort the result in THREAD=REFS way.
|
|
|
|
@ -1498,7 +1460,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Invoke search request to IMAP server
|
|
|
|
|
*
|
|
|
|
@ -1574,7 +1535,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $results;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Direct (real and simple) SEARCH request (without result sorting and caching).
|
|
|
|
|
*
|
|
|
|
@ -1609,7 +1569,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $index;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* protected search method
|
|
|
|
|
*
|
|
|
|
@ -1686,7 +1645,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $messages;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Converts charset of search criteria string
|
|
|
|
|
*
|
|
|
|
@ -1726,7 +1684,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Refresh saved search set
|
|
|
|
|
*
|
|
|
|
@ -1759,7 +1716,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return message headers object of a specific message
|
|
|
|
|
*
|
|
|
|
@ -1798,7 +1754,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $headers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Fetch message headers and body structure from the IMAP server and build
|
|
|
|
|
* an object structure similar to the one generated by PEAR::Mail_mimeDecode
|
|
|
|
@ -1924,7 +1879,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->icache['message'] = $headers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Build message part object
|
|
|
|
|
*
|
|
|
|
@ -1932,7 +1886,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
* @param int $count
|
|
|
|
|
* @param string $parent
|
|
|
|
|
*/
|
|
|
|
|
protected function structure_part($part, $count=0, $parent='', $mime_headers=null)
|
|
|
|
|
protected function structure_part($part, $count = 0, $parent = '', $mime_headers = null)
|
|
|
|
|
{
|
|
|
|
|
$struct = new rcube_message_part;
|
|
|
|
|
$struct->mime_id = empty($parent) ? (string)$count : "$parent.$count";
|
|
|
|
@ -2150,14 +2104,13 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $struct;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set attachment filename from message part structure
|
|
|
|
|
*
|
|
|
|
|
* @param rcube_message_part $part Part object
|
|
|
|
|
* @param string $headers Part's raw headers
|
|
|
|
|
* @param rcube_message_part $part Part object
|
|
|
|
|
* @param string $headers Part's raw headers
|
|
|
|
|
*/
|
|
|
|
|
protected function set_part_filename(&$part, $headers=null)
|
|
|
|
|
protected function set_part_filename(&$part, $headers = null)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($part->d_parameters['filename'])) {
|
|
|
|
|
$filename_mime = $part->d_parameters['filename'];
|
|
|
|
@ -2285,11 +2238,10 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get charset name from message structure (first part)
|
|
|
|
|
*
|
|
|
|
|
* @param array $structure Message structure
|
|
|
|
|
* @param array $structure Message structure
|
|
|
|
|
*
|
|
|
|
|
* @return string Charset name
|
|
|
|
|
*/
|
|
|
|
@ -2318,7 +2270,8 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
*
|
|
|
|
|
* @return string Message/part body if not printed
|
|
|
|
|
*/
|
|
|
|
|
public function get_message_part($uid, $part=1, $o_part=NULL, $print=NULL, $fp=NULL, $skip_charset_conv=false, $max_bytes=0, $formatted=true)
|
|
|
|
|
public function get_message_part($uid, $part = 1, $o_part = null, $print = null, $fp = null,
|
|
|
|
|
$skip_charset_conv = false, $max_bytes = 0, $formatted = true)
|
|
|
|
|
{
|
|
|
|
|
if (!$this->check_connection()) {
|
|
|
|
|
return null;
|
|
|
|
@ -2370,7 +2323,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $body;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the whole message source as string (or saves to a file)
|
|
|
|
|
*
|
|
|
|
@ -2390,7 +2342,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
true, $part, null, false, $fp);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the message headers as string
|
|
|
|
|
*
|
|
|
|
@ -2408,7 +2359,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->fetchPartHeader($this->folder, $uid, true, $part);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sends the whole message source to stdout
|
|
|
|
|
*
|
|
|
|
@ -2424,7 +2374,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
$this->conn->handlePartBody($this->folder, $uid, true, null, null, true, null, $formatted);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set message flag to one or several messages
|
|
|
|
|
*
|
|
|
|
@ -2484,7 +2433,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Append a mail message (source) to a specific folder
|
|
|
|
|
*
|
|
|
|
@ -2542,7 +2490,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $saved;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Move a message from one folder to another
|
|
|
|
|
*
|
|
|
|
@ -2620,7 +2567,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $moved;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copy a message from one folder to another
|
|
|
|
|
*
|
|
|
|
@ -2657,7 +2603,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $copied;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Mark messages as deleted and expunge them
|
|
|
|
|
*
|
|
|
|
@ -2715,7 +2660,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $deleted;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Send IMAP expunge command and clear cache
|
|
|
|
|
*
|
|
|
|
@ -2838,15 +2782,14 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $a_mboxes;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Method for direct folders listing (LSUB)
|
|
|
|
|
*
|
|
|
|
|
* @param string $root Optional root folder
|
|
|
|
|
* @param string $name Optional name pattern
|
|
|
|
|
* @param string $root Optional root folder
|
|
|
|
|
* @param string $name Optional name pattern
|
|
|
|
|
*
|
|
|
|
|
* @return array List of subscribed folders
|
|
|
|
|
* @see rcube_imap::list_folders_subscribed()
|
|
|
|
|
* @return array List of subscribed folders
|
|
|
|
|
* @see rcube_imap::list_folders_subscribed()
|
|
|
|
|
*/
|
|
|
|
|
public function list_folders_subscribed_direct($root='', $name='*')
|
|
|
|
|
{
|
|
|
|
@ -2907,7 +2850,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $a_folders;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get a list of all folders available on the server
|
|
|
|
|
*
|
|
|
|
@ -2976,15 +2918,14 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $a_mboxes;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Method for direct folders listing (LIST)
|
|
|
|
|
*
|
|
|
|
|
* @param string $root Optional root folder
|
|
|
|
|
* @param string $name Optional name pattern
|
|
|
|
|
* @param string $root Optional root folder
|
|
|
|
|
* @param string $name Optional name pattern
|
|
|
|
|
*
|
|
|
|
|
* @return array List of folders
|
|
|
|
|
* @see rcube_imap::list_folders()
|
|
|
|
|
* @return array List of folders
|
|
|
|
|
* @see rcube_imap::list_folders()
|
|
|
|
|
*/
|
|
|
|
|
public function list_folders_direct($root='', $name='*')
|
|
|
|
|
{
|
|
|
|
@ -3008,13 +2949,12 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Fix folders list by adding folders from other namespaces.
|
|
|
|
|
* Needed on some servers eg. Courier IMAP
|
|
|
|
|
*
|
|
|
|
|
* @param array $result Reference to folders list
|
|
|
|
|
* @param string $type Listing type (ext-subscribed, subscribed or all)
|
|
|
|
|
* @param array $result Reference to folders list
|
|
|
|
|
* @param string $type Listing type (ext-subscribed, subscribed or all)
|
|
|
|
|
*/
|
|
|
|
|
protected function list_folders_update(&$result, $type = null)
|
|
|
|
|
{
|
|
|
|
@ -3064,7 +3004,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Filter the given list of folders according to access rights
|
|
|
|
|
*
|
|
|
|
@ -3090,7 +3029,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $a_folders;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get mailbox quota information
|
|
|
|
|
*
|
|
|
|
@ -3107,7 +3045,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get folder size (size of all messages in a folder)
|
|
|
|
|
*
|
|
|
|
@ -3131,7 +3068,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Subscribe to a specific folder(s)
|
|
|
|
|
*
|
|
|
|
@ -3145,7 +3081,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->change_subscription($folders, 'subscribe');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Unsubscribe folder(s)
|
|
|
|
|
*
|
|
|
|
@ -3159,7 +3094,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->change_subscription($folders, 'unsubscribe');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a new folder on the server and register it in local cache
|
|
|
|
|
*
|
|
|
|
@ -3200,7 +3134,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set a new name to an existing folder
|
|
|
|
|
*
|
|
|
|
@ -3260,7 +3193,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Remove folder from server
|
|
|
|
|
*
|
|
|
|
@ -3308,7 +3240,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Detect special folder associations stored in storage backend
|
|
|
|
|
*/
|
|
|
|
@ -3353,7 +3284,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return array_merge($result, $special);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set special folder associations stored in storage backend
|
|
|
|
|
*/
|
|
|
|
@ -3392,7 +3322,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Checks if folder exists and is subscribed
|
|
|
|
|
*
|
|
|
|
@ -3446,7 +3375,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the namespace where the folder is in
|
|
|
|
|
*
|
|
|
|
@ -3477,7 +3405,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return 'personal';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Modify folder name according to namespace.
|
|
|
|
|
* For output it removes prefix of the personal namespace if it's possible.
|
|
|
|
@ -3516,7 +3443,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $folder;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gets folder attributes from LIST response, e.g. \Noselect, \Noinferiors
|
|
|
|
|
*
|
|
|
|
@ -3549,7 +3475,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return is_array($opts) ? $opts : array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gets connection (and current folder) data: UIDVALIDITY, EXISTS, RECENT,
|
|
|
|
|
* PERMANENTFLAGS, UIDNEXT, UNSEEN
|
|
|
|
@ -3589,7 +3514,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns extended information about the folder
|
|
|
|
|
*
|
|
|
|
@ -3685,7 +3609,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $options;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Synchronizes messages cache.
|
|
|
|
|
*
|
|
|
|
@ -3698,7 +3621,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get message header names for rcube_imap_generic::fetchHeader(s)
|
|
|
|
|
*
|
|
|
|
@ -3750,7 +3672,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->setACL($folder, $user, $acl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Removes any <identifier,rights> pair for the
|
|
|
|
|
* specified user from the ACL for the specified
|
|
|
|
@ -3775,7 +3696,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->deleteACL($folder, $user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the access control list for folder (GETACL)
|
|
|
|
|
*
|
|
|
|
@ -3797,7 +3717,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->getACL($folder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns information about what rights can be granted to the
|
|
|
|
|
* user (identifier) in the ACL for the folder (LISTRIGHTS)
|
|
|
|
@ -3821,7 +3740,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->listRights($folder, $user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the set of rights that the current user has to
|
|
|
|
|
* folder (MYRIGHTS)
|
|
|
|
@ -3844,7 +3762,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->conn->myRights($folder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets IMAP metadata/annotations (SETMETADATA/SETANNOTATION)
|
|
|
|
|
*
|
|
|
|
@ -3878,7 +3795,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Unsets IMAP metadata/annotations (SETMETADATA/SETANNOTATION)
|
|
|
|
|
*
|
|
|
|
@ -3912,7 +3828,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns IMAP metadata/annotations (GETMETADATA/GETANNOTATION)
|
|
|
|
|
*
|
|
|
|
@ -3985,7 +3900,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Converts the METADATA extension entry name into the correct
|
|
|
|
|
* entry-attrib names for older ANNOTATEMORE version.
|
|
|
|
@ -4115,7 +4029,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Getter for messages cache object
|
|
|
|
|
*/
|
|
|
|
@ -4134,7 +4047,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->mcache;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Clears the messages cache.
|
|
|
|
|
*
|
|
|
|
@ -4148,7 +4060,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Delete outdated cache entries
|
|
|
|
|
*/
|
|
|
|
@ -4178,7 +4089,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sort folders first by default folders and then in alphabethical order
|
|
|
|
|
*
|
|
|
|
@ -4265,12 +4175,11 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Find UID of the specified message sequence ID
|
|
|
|
|
*
|
|
|
|
|
* @param int $id Message (sequence) ID
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
* @param int $id Message (sequence) ID
|
|
|
|
|
* @param string $folder Folder name
|
|
|
|
|
*
|
|
|
|
|
* @return int Message UID
|
|
|
|
|
*/
|
|
|
|
@ -4295,7 +4204,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $uid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Subscribe/unsubscribe a list of folders and update local cache
|
|
|
|
|
*/
|
|
|
|
@ -4328,7 +4236,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $updated;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Increde/decrese messagecount for a specific folder
|
|
|
|
|
*/
|
|
|
|
@ -4359,7 +4266,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Remove messagecount of a specific folder from cache
|
|
|
|
|
*/
|
|
|
|
@ -4378,7 +4284,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Converts date string/object into IMAP date/time format
|
|
|
|
|
*/
|
|
|
|
@ -4401,7 +4306,6 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $date->format('d-M-Y H:i:s O');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This is our own debug handler for the IMAP connection
|
|
|
|
|
* @access public
|
|
|
|
@ -4531,7 +4435,7 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->mod_folder($folder, $mode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function mailbox_attributes($folder, $force=false)
|
|
|
|
|
public function mailbox_attributes($folder, $force = false)
|
|
|
|
|
{
|
|
|
|
|
return $this->folder_attributes($folder, $force);
|
|
|
|
|
}
|
|
|
|
@ -4551,9 +4455,8 @@ class rcube_imap extends rcube_storage
|
|
|
|
|
return $this->folder_sync($folder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function expunge($folder='', $clear_cache=true)
|
|
|
|
|
public function expunge($folder = '', $clear_cache = true)
|
|
|
|
|
{
|
|
|
|
|
return $this->expunge_folder($folder, $clear_cache);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|