/** * Sort threaded result, using THREAD=REFS method if available. * If not, use any method and re-sort the result in THREAD=REFS way. * * @param rcube_result_thread $threads Threads result set */ protected function sort_threads($threads) { if ($threads->is_empty()) { return; } // THREAD=ORDEREDSUBJECT: sorting by sent date of root message // THREAD=REFERENCES: sorting by sent date of root message // THREAD=REFS: sorting by the most recent date in each thread if ($this->threading != 'REFS' || $this->sort_field && $this->sort_field != 'date') { $sortby = $this->sort_field ? $this->sort_field : 'date'; $index = $this->index($this->folder, $sortby, $this->sort_order, true, true); if (!$index->is_empty()) { $threads->sort($index); } } else { if ($this->sort_order != $threads->get_parameters('ORDER')) { $threads->revert(); } } }
/** * Sort threaded result, using THREAD=REFS method * * @param rcube_result_thread $threads Threads result set */ protected function sort_threads($threads) { if ($threads->is_empty()) { return; } // THREAD=ORDEREDSUBJECT: sorting by sent date of root message // THREAD=REFERENCES: sorting by sent date of root message // THREAD=REFS: sorting by the most recent date in each thread if ($this->sort_field && ($this->sort_field != 'date' || $this->get_capability('THREAD') != 'REFS')) { $index = $this->index_direct($this->folder, $this->sort_field, $this->sort_order, false); if (!$index->is_empty()) { $threads->sort($index); } } else { if ($this->sort_order != $threads->get_parameters('ORDER')) { $threads->revert(); } } }