示例#1
0
 /**
  * Find's messages in a given mailbox
  * 
  * @param Account $account
  * @param string $mailbox
  * @param int $start
  * @param int $limit
  * @param sring $sortField See constants in \GO\Base\Mail\Imap::SORT_*
  * @param boolean $descending Sort descending
  * @param string $query
  * @param string $searchIn In what folder(s) are we searching ('current', 'all', 'recursive')
  * @return array
  */
 public function find(Account $account, $mailbox = "INBOX", $start = 0, $limit = 50, $sortField = \GO\Base\Mail\Imap::SORT_DATE, $descending = true, $query = 'ALL', $searchIn = 'current')
 {
     $results = array();
     if ($searchIn == "all") {
         foreach ($account->getRootMailboxes(false, true) as $mailbox) {
             //only search visable mailboxes not subscriptions
             if (!$mailbox->isVisible() || $mailbox->noselect) {
                 continue;
             }
             $results = array_merge($results, $this->find($account, $mailbox->name, $start, $limit, $sortField, $descending, $query, 'recursive'));
         }
         return $results;
     }
     /** @var $imap \GO\Base\Mail\Imap */
     $imap = $account->openImapConnection($mailbox);
     $headersSet = $imap->get_message_headers_set($start, $limit, $sortField, $descending, $query);
     foreach ($headersSet as $uid => $headers) {
         $message = ImapMessage::model()->createFromHeaders($account, $mailbox, $headers);
         $results[] = $message;
     }
     \GO::debug($mailbox);
     //find recursive in subfolders
     if ($searchIn === 'recursive') {
         $mailboxObj = new ImapMailbox($account, array('name' => $mailbox));
         $children = $mailboxObj->getChildren(true, false);
         foreach ($children as $child) {
             //only search visible mailboxes not subscriptions
             if (!$child->isVisible() || $child->noselect) {
                 continue;
             }
             $results = array_merge($results, $this->find($account, $child->name, $start, $limit, $sortField, $descending, $query, 'recursive'));
         }
     }
     return $results;
 }