IMP_Ftree::sortList PHP Method

sortList() public method

Sorts a list of mailboxes.
public sortList ( &$mbox, IMP_Ftree_Element $base = false )
$base IMP_Ftree_Element The base element.
    public function sortList(&$mbox, $base = false)
    {
        if (count($mbox) < 2) {
            return;
        }
        if (!$base || !$base->base_elt && !$base->remote_auth) {
            $list_ob = new Horde_Imap_Client_Mailbox_List($mbox);
            $mbox = $list_ob->sort();
            return;
        }
        $prefix = $base->base_elt ? '' : strval($this->getAccount($base)) . "";
        $basesort = $othersort = array();
        /* INBOX always appears first. */
        $sorted = array($prefix . 'INBOX');
        foreach ($mbox as $key => $val) {
            $ob = $this[$val];
            if ($ob->nonimap) {
                $othersort[$key] = $ob->mbox_ob->label;
            } elseif ($val !== $prefix . 'INBOX') {
                $basesort[$key] = $ob->mbox_ob->label;
            }
        }
        natcasesort($basesort);
        natcasesort($othersort);
        foreach (array_merge(array_keys($basesort), array_keys($othersort)) as $key) {
            $sorted[] = $mbox[$key];
        }
        $mbox = $sorted;
    }

Usage Example

示例#1
0
文件: Poll.php 项目: DSNS-LAB/Dmail
 /**
  * Returns the list of mailboxes to poll.
  *
  * @param boolean $sort  Sort the directory list?
  *
  * @return array  The list of mailboxes to poll (IMP_Mailbox objects).
  */
 public function getPollList($sort = false)
 {
     global $injector;
     $iterator = new IMP_Ftree_IteratorFilter($injector->getInstance('IMP_Ftree'));
     $iterator->add(array($iterator::CONTAINERS, $iterator::NONIMAP));
     if ($this->_data !== true) {
         $iterator->add($iterator::POLLED);
     }
     $plist = array_map('strval', iterator_to_array($iterator, false));
     if ($sort) {
         $this->_ftree->sortList($plist, $this->_ftree[IMP_Ftree::BASE_ELT]);
     }
     return IMP_Mailbox::get($plist);
 }