Example #1
0
 /**
  * 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
     }
 }