| | |
| | | { |
| | | public $multi = true; |
| | | public $sets = array(); |
| | | public $incomplete = false; |
| | | public $folder; |
| | | |
| | | protected $meta = array(); |
| | |
| | | */ |
| | | public function add($result) |
| | | { |
| | | if ($count = $result->count()) { |
| | | $this->sets[] = $result; |
| | | $this->meta['count'] += $count; |
| | | $this->sets[] = $result; |
| | | |
| | | // append UIDs to global index |
| | | $folder = $result->get_parameters('MAILBOX'); |
| | | $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get()); |
| | | $this->index = array_merge($this->index, $index); |
| | | if ($result->count()) { |
| | | $this->append_result($result); |
| | | } |
| | | else if ($result->incomplete) { |
| | | $this->incomplete = true; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Append message UIDs from the given result to our index |
| | | */ |
| | | protected function append_result($result) |
| | | { |
| | | $this->meta['count'] += $result->count(); |
| | | |
| | | // append UIDs to global index |
| | | $folder = $result->get_parameters('MAILBOX'); |
| | | $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get()); |
| | | $this->index = array_merge($this->index, $index); |
| | | } |
| | | |
| | | /** |
| | |
| | | return $params; |
| | | } |
| | | |
| | | /** |
| | | * Returns the stored result object for a particular folder |
| | | * |
| | | * @param string $folder Folder name |
| | | * @return false|obejct rcube_result_* instance of false if none found |
| | | */ |
| | | public function get_set($folder) |
| | | { |
| | | foreach ($this->sets as $set) { |
| | | if ($set->get_parameters('MAILBOX') == $folder) { |
| | | return $set; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * Returns length of internal data representation |
| | |
| | | { |
| | | return $this->count(); |
| | | } |
| | | |
| | | |
| | | /* Serialize magic methods */ |
| | | |
| | | public function __sleep() |
| | | { |
| | | return array('sets','folders','sorting','order'); |
| | | } |
| | | |
| | | public function __wakeup() |
| | | { |
| | | // restore index from saved result sets |
| | | $this->meta = array('count' => 0); |
| | | |
| | | foreach ($this->sets as $result) { |
| | | if ($result->count()) { |
| | | $this->append_result($result); |
| | | } |
| | | else if ($result->incomplete) { |
| | | $this->incomplete = true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |