$deleted = array($old);
$inserted = array($new);
- $imaptree = $GLOBALS['injector']->getInstance('IMP_Imap_Tree');
- $imaptree->setIteratorFilter(IMP_Imap_Tree::FLIST_NOCONTAINER | IMP_Imap_Tree::FLIST_UNSUB | IMP_Imap_Tree::FLIST_NOBASE, $old);
-
- /* Get list of any folders that are underneath this one. */
- $all_folders = array_merge(array($old), array_keys(iterator_to_array($imaptree)));
+ $all_folders = $this->getAllSubfolders($old);
try {
$GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->renameMailbox($old, $new);
return $msgcount ? $msgcount : false;
}
+ /**
+ * Get list of all folders under a given mailbox.
+ *
+ * @param string $mbox The base mailbox.
+ * @param boolean $include_base Include the base mailbox in results?
+ *
+ * @return array All mailboxes under the base mailbox.
+ */
+ public function getAllSubfolders($mbox, $include_base = true)
+ {
+ $imaptree = $GLOBALS['injector']->getInstance('IMP_Imap_Tree');
+ $imaptree->setIteratorFilter(IMP_Imap_Tree::FLIST_NOCONTAINER | IMP_Imap_Tree::FLIST_UNSUB | IMP_Imap_Tree::FLIST_NOBASE, $mbox);
+
+ $out = array_keys(iterator_to_array($imaptree));
+ if ($include_base && $this->exists($mbox)) {
+ $out = array_merge(array($mbox), $out);
+ }
+
+ return $out;
+ }
+
}