| | |
| | | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | program/include/rcube_result_index.php | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2005-2011, The Roundcube Dev Team | |
| | | | Copyright (C) 2011, Kolab Systems AG | |
| | |
| | | | | |
| | | | PURPOSE: | |
| | | | SORT/SEARCH/ESEARCH response handler | |
| | | | | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | | Author: Aleksander Machniak <alec@alec.pl> | |
| | | +-----------------------------------------------------------------------+ |
| | | */ |
| | | |
| | | |
| | | /** |
| | | * Class for accessing IMAP's SORT/SEARCH/ESEARCH result |
| | |
| | | */ |
| | | class rcube_result_index |
| | | { |
| | | public $incomplete = false; |
| | | |
| | | protected $raw_data; |
| | | protected $mailbox; |
| | | protected $meta = array(); |
| | |
| | | |
| | | |
| | | /** |
| | | * Filters data set. Removes elements listed in $ids list. |
| | | * Filters data set. Removes elements not listed in $ids list. |
| | | * |
| | | * @param array $ids List of IDs to remove. |
| | | */ |
| | | public function filter($ids = array()) |
| | | { |
| | | $data = $this->get(); |
| | | $data = array_diff($data, $ids); |
| | | |
| | | $this->meta = array(); |
| | | $this->meta['count'] = count($data); |
| | | $this->raw_data = implode(self::SEPARATOR_ELEMENT, $data); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Filters data set. Removes elements not listed in $ids list. |
| | | * |
| | | * @param array $ids List of IDs to keep. |
| | | */ |
| | | public function intersect($ids = array()) |
| | | { |
| | | $data = $this->get(); |
| | | $data = array_intersect($data, $ids); |
| | |
| | | if (empty($this->raw_data)) { |
| | | return array(); |
| | | } |
| | | |
| | | return explode(self::SEPARATOR_ELEMENT, $this->raw_data); |
| | | } |
| | | |