/** * Searches the Mail Box with the query * @param String $query - imap search format * @param MailManager_Model_Folder $folder - folder instance * @param Integer $start - Page number * @param Integer $maxLimit - Number of mails */ function searchMails($query, $folder, $start, $maxLimit) { // JFV - enable UTF imap search // $nos = imap_search($this->mBox, $query); $nos = imap_search($this->mBox, $query, SE_FREE, 'UTF-8'); // JFV END if (!empty($nos)) { $nmsgs = count($nos); $reverse_start = $nmsgs - $start * $maxLimit; $reverse_end = $reverse_start - $maxLimit; if ($reverse_start < 1) { $reverse_start = 1; } if ($reverse_end < 1) { $reverse_end = 0; } if ($nmsgs > 1) { $nos = array_slice($nos, $reverse_end, $reverse_start - $reverse_end); } // Reverse order the messages rsort($nos, SORT_NUMERIC); $mails = array(); $records = imap_fetch_overview($this->mBox, implode(',', $nos)); foreach ($records as $result) { array_unshift($mails, MailManager_Model_Message::parseOverview($result)); } $folder->setMails($mails); $folder->setPaging($reverse_end, $reverse_start, $maxLimit, $nmsgs, $start); //-1 as it starts from 0 } }