From: Michael M Slusarz Date: Tue, 27 Apr 2010 04:37:01 +0000 (-0600) Subject: Move imp_search from global to injectable X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=1187e8f4e759f9ee21a6b03574f12ca881a6e7aa;p=horde.git Move imp_search from global to injectable --- diff --git a/imp/folders.php b/imp/folders.php index c31261409..6c21a912b 100644 --- a/imp/folders.php +++ b/imp/folders.php @@ -100,6 +100,7 @@ case 'delete_folder': case 'delete_search_query': $queryid = Horde_Util::getFormData('queryid'); if (!empty($queryid)) { + $imp_search = $injector->getInstance('IMP_Search'); $notification->push(sprintf(_("Deleted Virtual Folder \"%s\"."), $imp_search->getLabel($queryid)), 'horde.success'); $imp_search->deleteSearchQuery($queryid); } @@ -437,6 +438,7 @@ $rowct = 0; foreach ($raw_rows as $key => $val) { $val['nocheckbox'] = !empty($val['vfolder']); if (!empty($val['vfolder']) && $val['editvfolder']) { + $imp_search = $injector->getInstance('IMP_Search'); $val['delvfolder'] = Horde::link($imp_search->deleteUrl($val['value']), _("Delete Virtual Folder")) . _("Delete") . ''; $val['editvfolder'] = Horde::link($imp_search->editUrl($val['value']), _("Edit Virtual Folder")) . _("Edit") . ''; } diff --git a/imp/lib/Ajax/Application.php b/imp/lib/Ajax/Application.php index fde643ed8..27a02fae4 100644 --- a/imp/lib/Ajax/Application.php +++ b/imp/lib/Ajax/Application.php @@ -113,9 +113,11 @@ class IMP_Ajax_Application extends Horde_Ajax_Application_Base $imptree = $GLOBALS['injector']->getInstance('IMP_Imap_Tree'); $imptree->eltDiffStart(); - if ($GLOBALS['imp_search']->isEditableVFolder($this->_vars->mbox)) { - $GLOBALS['notification']->push(sprintf(_("Deleted Virtual Folder \"%s\"."), $GLOBALS['imp_search']->getLabel($this->_vars->mbox)), 'horde.success'); - $GLOBALS['imp_search']->deleteSearchQuery($this->_vars->mbox); + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + + if ($imp_search->isEditableVFolder($this->_vars->mbox)) { + $GLOBALS['notification']->push(sprintf(_("Deleted Virtual Folder \"%s\"."), $imp_search->getLabel($this->_vars->mbox)), 'horde.success'); + $imp_search->deleteSearchQuery($this->_vars->mbox); $result = true; } else { $result = $GLOBALS['injector']->getInstance('IMP_Folder')->delete(array($this->_vars->mbox)); @@ -1678,7 +1680,7 @@ class IMP_Ajax_Application extends Horde_Ajax_Application_Base protected function _changed($rw = null) { /* Only update search mailboxes on forced refreshes. */ - if ($GLOBALS['imp_search']->isSearchMbox($this->_vars->view)) { + if ($GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($this->_vars->view)) { return ($this->_action == 'viewPort') || $this->_vars->forceUpdate; } @@ -1894,7 +1896,7 @@ class IMP_Ajax_Application extends Horde_Ajax_Application_Base $ob->po = 1; } if ($elt['vfolder']) { - $ob->v = $GLOBALS['imp_search']->isEditableVFolder($elt['value']) ? 2 : 1; + $ob->v = $GLOBALS['injector']->getInstance('IMP_Search')->isEditableVFolder($elt['value']) ? 2 : 1; } if (!$elt['sub']) { $ob->un = 1; diff --git a/imp/lib/Api.php b/imp/lib/Api.php index 54e2d2ca6..2b06a58ce 100644 --- a/imp/lib/Api.php +++ b/imp/lib/Api.php @@ -156,7 +156,7 @@ class IMP_Api extends Horde_Registry_Api */ public function searchMailbox($mailbox, $query) { - return $GLOBALS['imp_search']->runSearchQuery($query, $mailbox); + return $GLOBALS['injector']->getInstance('IMP_Search')->runSearchQuery($query, $mailbox); } /** diff --git a/imp/lib/Application.php b/imp/lib/Application.php index 631c6f20f..54d53f004 100644 --- a/imp/lib/Application.php +++ b/imp/lib/Application.php @@ -86,7 +86,6 @@ class IMP_Application extends Horde_Registry_Application * Global variables defined: * $imp_imap - An IMP_Imap object * $imp_mbox - Current mailbox information - * $imp_search - An IMP_Search object */ protected function _init() { @@ -101,6 +100,7 @@ class IMP_Application extends Horde_Registry_Application 'IMP_Imap_Tree' => new IMP_Injector_Binder_Imaptree(), 'IMP_Mailbox' => new IMP_Injector_Binder_Mailbox(), 'IMP_Quota' => new IMP_Injector_Binder_Quota(), + 'IMP_Search' => new IMP_Injector_Binder_Search(), 'IMP_Sentmail' => new IMP_Injector_Binder_Sentmail() ); @@ -492,7 +492,7 @@ class IMP_Application extends Horde_Registry_Application { $this->init(); $this->mailboxesChanged(); - $GLOBALS['imp_search']->initialize(true); + $GLOBALS['injector']->getInstance('IMP_Search')->initialize(true); } /* Helper methods. */ diff --git a/imp/lib/Auth.php b/imp/lib/Auth.php index 6b65757a5..5b4b721ab 100644 --- a/imp/lib/Auth.php +++ b/imp/lib/Auth.php @@ -335,11 +335,13 @@ class IMP_Auth ? 'INBOX' : $GLOBALS['prefs']->getValue('initial_page'); + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + if (!$GLOBALS['prefs']->getValue('use_vinbox') && - $GLOBALS['imp_search']->isVINBOXFolder($init_url)) { + $imp_search->isVINBOXFolder($init_url)) { $init_url = 'folders.php'; - } elseif (($GLOBALS['imp_search']->createSearchID($init_url) == $init_url) && - !$GLOBALS['imp_search']->isVFolder($init_url)) { + } elseif (($imp_search->createSearchID($init_url) == $init_url) && + !$imp_search->isVFolder($init_url)) { $init_url = 'INBOX'; if (!$GLOBALS['prefs']->isLocked('initial_page')) { $GLOBALS['prefs']->setValue('initial_page', $init_url); @@ -487,7 +489,7 @@ class IMP_Auth } /* Set up search information for the session. */ - $GLOBALS['imp_search']->initialize(); + $GLOBALS['injector']->getInstance('IMP_Search')->initialize(); /* If the user wants to run filters on login, make sure they get run. */ diff --git a/imp/lib/Block/Newmail.php b/imp/lib/Block/Newmail.php index 58392ab3e..3738a8a6f 100644 --- a/imp/lib/Block/Newmail.php +++ b/imp/lib/Block/Newmail.php @@ -22,7 +22,7 @@ class IMP_Block_Newmail extends Horde_Block $query = new Horde_Imap_Client_Search_Query(); $query->flag('\\seen', false); - $ids = $GLOBALS['imp_search']->runSearchQuery($query, 'INBOX', Horde_Imap_Client::SORT_SEQUENCE, 1); + $ids = $GLOBALS['injector']->getInstance('IMP_Search')->runSearchQuery($query, 'INBOX', Horde_Imap_Client::SORT_SEQUENCE, 1); $html = ''; if (empty($ids)) { diff --git a/imp/lib/Filter.php b/imp/lib/Filter.php index f21fe7d79..ce15e8bca 100644 --- a/imp/lib/Filter.php +++ b/imp/lib/Filter.php @@ -35,8 +35,9 @@ class IMP_Filter return; } - $mbox_list = $GLOBALS['imp_search']->isSearchMbox($mbox) - ? $GLOBALS['imp_search']->getSearchFolders($mbox) + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + $mbox_list = $imp_search->isSearchMbox($mbox) + ? $imp_search->getSearchFolders($mbox) : array($mbox); foreach ($mbox_list as $val) { diff --git a/imp/lib/Folder.php b/imp/lib/Folder.php index e1d97860c..a3bc4907e 100644 --- a/imp/lib/Folder.php +++ b/imp/lib/Folder.php @@ -195,7 +195,7 @@ class IMP_Folder $this->clearFlistCache(); /* Recreate Virtual Folders. */ - $GLOBALS['imp_search']->initialize(true); + $GLOBALS['injector']->getInstance('IMP_Search')->initialize(true); /* Clear the folder from the sort prefs. */ foreach ($deleted as $val) { @@ -264,7 +264,7 @@ class IMP_Folder $GLOBALS['injector']->getInstance('IMP_Imap_Tree')->insert($folder); /* Recreate Virtual Folders. */ - $GLOBALS['imp_search']->initialize(true); + $GLOBALS['injector']->getInstance('IMP_Search')->initialize(true); return true; } diff --git a/imp/lib/IMP.php b/imp/lib/IMP.php index 45cb3b86e..fe5afa844 100644 --- a/imp/lib/IMP.php +++ b/imp/lib/IMP.php @@ -78,7 +78,7 @@ class IMP static public function getLabel($mbox) { $label = IMP_Search::isSearchMbox($mbox) - ? $GLOBALS['imp_search']->getLabel($mbox) + ? $GLOBALS['injector']->getInstance('IMP_Search')->getLabel($mbox) : self::displayFolder($mbox); try { @@ -195,15 +195,16 @@ class IMP /* Add the list of virtual folders to the list. */ if (!empty($options['inc_vfolder'])) { - $vfolders = $GLOBALS['imp_search']->listQueries(IMP_Search::LIST_VFOLDER); + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + $vfolders = $imp_search->listQueries(IMP_Search::LIST_VFOLDER); if (!empty($vfolders)) { $vfolder_list = array(); - $vfolder_sel = $GLOBALS['imp_search']->searchMboxID(); + $vfolder_sel = $imp_search->searchMboxID(); foreach ($vfolders as $id => $val) { $vfolder_list[] = array( 'l' => Horde_Text_Filter::filter($val, 'space2html', array('charset' => Horde_Nls::getCharset(), 'encode' => true)), 'sel' => ($vfolder_sel == $id), - 'v' => htmlspecialchars($GLOBALS['imp_search']->createSearchID($id)) + 'v' => htmlspecialchars($imp_search->createSearchID($id)) ); } $t->set('vfolder', $vfolder_list); @@ -487,7 +488,7 @@ class IMP $prefs->getValue('empty_trash_menu')) { $mailbox = null; if ($prefs->getValue('use_vtrash')) { - $mailbox = $GLOBALS['imp_search']->createSearchID($prefs->getValue('vtrash_id')); + $mailbox = $GLOBALS['injector']->getInstance('IMP_Search')->createSearchID($prefs->getValue('vtrash_id')); } else { $trash_folder = self::folderPref($prefs->getValue('trash_folder'), true); if (!is_null($trash_folder)) { @@ -695,7 +696,7 @@ class IMP } else { /* We are dealing with format #2. */ while (list($key, $val) = each($indices)) { - if ($GLOBALS['imp_search']->isSearchMbox($key)) { + if ($GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($key)) { $msgList += self::parseIndicesList($val); } else { /* Make sure we don't have any duplicate keys. */ @@ -816,12 +817,12 @@ class IMP if (is_null($delhide) || $force) { if ($GLOBALS['prefs']->getValue('use_vtrash')) { - $delhide = !$GLOBALS['imp_search']->isVTrashFolder(); + $delhide = !$GLOBALS['injector']->getInstance('IMP_Search')->isVTrashFolder(); } else { $sortpref = self::getSort(); $delhide = ($GLOBALS['prefs']->getValue('delhide') && !$GLOBALS['prefs']->getValue('use_trash') && - ($GLOBALS['imp_search']->isSearchMbox($mbox) || + ($GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mbox) || ($sortpref['by'] != Horde_Imap_Client::SORT_THREAD))); } } @@ -897,7 +898,7 @@ class IMP $mbox = $GLOBALS['imp_mbox']['mailbox']; } - $search_mbox = $GLOBALS['imp_search']->isSearchMbox($mbox); + $search_mbox = $GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mbox); $prefmbox = $search_mbox ? $mbox : self::folderPref($mbox, false); @@ -973,10 +974,10 @@ class IMP * implementation. We will always prefer REFERENCES, but will fallback * to ORDEREDSUBJECT if the server doesn't support THREAD sorting. */ return ($_SESSION['imp']['protocol'] == 'imap') && - !$GLOBALS['imp_search']->isSearchMbox($mbox) && + !$GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mbox) && (!$GLOBALS['prefs']->getValue('use_trash') || !$GLOBALS['prefs']->getValue('use_vtrash') || - $GLOBALS['imp_search']->isVTrashFolder($mbox)); + $GLOBALS['injector']->getInstance('IMP_Search')->isVTrashFolder($mbox)); } /** @@ -998,7 +999,7 @@ class IMP $mbox = $GLOBALS['imp_mbox']['mailbox']; } - $prefmbox = $GLOBALS['imp_search']->isSearchMbox($mbox) + $prefmbox = $GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mbox) ? $mbox : self::folderPref($mbox, false); @@ -1041,7 +1042,6 @@ class IMP /** * Sets mailbox/index information for current page load. - * Sets the global $imp_search object. * * The global $imp_mbox objects will contain an array with the following * elements: @@ -1069,9 +1069,6 @@ class IMP 'uid' => null ); } - - // Initialize IMP_Search object. - $GLOBALS['imp_search'] = new IMP_Search(array('id' => (isset($_SESSION['imp']) && IMP_Search::isSearchMbox($GLOBALS['imp_mbox']['mailbox'])) ? $GLOBALS['imp_mbox']['mailbox'] : null)); } /** @@ -1155,7 +1152,7 @@ class IMP if (($_SESSION['imp']['protocol'] != 'pop') && $GLOBALS['prefs']->getValue('use_vinbox') && ($vinbox_id = $GLOBALS['prefs']->getValue('vinbox_id'))) { - $t->set('vinbox', Horde::link(self::generateIMPUrl('mailbox.php', $GLOBALS['imp_search']->createSearchID($vinbox_id))->add('no_newmail_popup', 1))); + $t->set('vinbox', Horde::link(self::generateIMPUrl('mailbox.php', $GLOBALS['injector']->getInstance('IMP_Search')->createSearchID($vinbox_id))->add('no_newmail_popup', 1))); } } else { $t->set('msg', ($var == 1) ? _("You have 1 new message.") : sprintf(_("You have %s new messages."), $var)); diff --git a/imp/lib/Imap.php b/imp/lib/Imap.php index 7450acdcb..25ffb5e00 100644 --- a/imp/lib/Imap.php +++ b/imp/lib/Imap.php @@ -286,7 +286,7 @@ class IMP_Imap // TODO: POP3 also? if (!$res && ($_SESSION['imp']['protocol'] == 'imap') && - !$GLOBALS['imp_search']->isSearchMbox($mailbox)) { + !$GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mailbox)) { try { $status = $this->_ob->status($mailbox, Horde_Imap_Client::STATUS_UIDNOTSTICKY); $res = $status['uidnotsticky']; diff --git a/imp/lib/Imap/Tree.php b/imp/lib/Imap/Tree.php index 68fa5c905..5ac85407c 100644 --- a/imp/lib/Imap/Tree.php +++ b/imp/lib/Imap/Tree.php @@ -280,7 +280,7 @@ class IMP_Imap_Tree $this->_insert($this->_getList($this->_showunsub), $this->_showunsub ? null : true); /* Add virtual folders to the tree. */ - $this->insertVFolders($GLOBALS['imp_search']->listQueries(IMP_Search::LIST_VFOLDER)); + $this->insertVFolders($GLOBALS['injector']->getInstance('IMP_Search')->listQueries(IMP_Search::LIST_VFOLDER)); } @@ -787,7 +787,7 @@ class IMP_Imap_Tree $id = $this->_convertName($id, true); $vfolder_base = ($id == self::VFOLDER_KEY); - $search_id = $GLOBALS['imp_search']->createSearchID($id); + $search_id = $GLOBALS['injector']->getInstance('IMP_Search')->createSearchID($id); if ($vfolder_base || (isset($this->_tree[$search_id]) && @@ -1211,7 +1211,7 @@ class IMP_Imap_Tree if ($changed) { $GLOBALS['prefs']->setValue('nav_poll', serialize($this->_poll)); - $GLOBALS['imp_search']->createVINBOXFolder(); + $GLOBALS['injector']->getInstance('IMP_Search')->createVINBOXFolder(); $this->changed = true; } } @@ -1247,7 +1247,7 @@ class IMP_Imap_Tree if ($removed) { $GLOBALS['prefs']->setValue('nav_poll', serialize($this->_poll)); - $GLOBALS['imp_search']->createVINBOXFolder(); + $GLOBALS['injector']->getInstance('IMP_Search')->createVINBOXFolder(); $this->changed = true; } } @@ -1513,7 +1513,7 @@ class IMP_Imap_Tree $adds = $id = array(); foreach ($id_list as $key => $val) { - $id[$GLOBALS['imp_search']->createSearchID($key)] = $val; + $id[$GLOBALS['injector']->getInstance('IMP_Search')->createSearchID($key)] = $val; } foreach (array_keys($id) as $key) { @@ -1954,14 +1954,16 @@ class IMP_Imap_Tree /* Virtual folders. */ if ($this->isVFolder($mailbox)) { + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + $row['vfolder'] = true; - $row['editvfolder'] = $GLOBALS['imp_search']->isEditableVFolder($mailbox['v']); - if ($GLOBALS['imp_search']->isVTrashFolder($mailbox['v'])) { + $row['editvfolder'] = $imp_search->isEditableVFolder($mailbox['v']); + if ($imp_search->isVTrashFolder($mailbox['v'])) { $row['specialvfolder'] = true; $row['icon'] = 'folders/trash.png'; $row['alt'] = _("Virtual Trash Folder"); $row['class'] = 'trashImg'; - } elseif ($GLOBALS['imp_search']->isVINBOXFolder($mailbox['v'])) { + } elseif ($imp_search->isVINBOXFolder($mailbox['v'])) { $row['specialvfolder'] = true; $row['icon'] = 'folders/inbox.png'; $row['alt'] = _("Virtual INBOX Folder"); diff --git a/imp/lib/Injector/Binder/Search.php b/imp/lib/Injector/Binder/Search.php new file mode 100644 index 000000000..e98350960 --- /dev/null +++ b/imp/lib/Injector/Binder/Search.php @@ -0,0 +1,31 @@ + + * @package IMP + */ +class IMP_Injector_Binder_Search implements Horde_Injector_Binder +{ + /** + */ + public function create(Horde_Injector $injector) + { + return new IMP_Search(array( + 'id' => (isset($_SESSION['imp']) && IMP_Search::isSearchMbox($GLOBALS['imp_mbox']['mailbox'])) ? $GLOBALS['imp_mbox']['mailbox'] : null + )); + } + + /** + */ + public function equals(Horde_Injector_Binder $binder) + { + return false; + } + +} diff --git a/imp/lib/LoginTasks/SystemTask/GarbageCollection.php b/imp/lib/LoginTasks/SystemTask/GarbageCollection.php index 07ff01e62..f9e54e6f8 100644 --- a/imp/lib/LoginTasks/SystemTask/GarbageCollection.php +++ b/imp/lib/LoginTasks/SystemTask/GarbageCollection.php @@ -39,15 +39,18 @@ class IMP_LoginTasks_SystemTask_GarbageCollection extends Horde_LoginTasks_Syste } /* Purge non-existent search sorts. */ + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); $update = false; $sortpref = @unserialize($GLOBALS['prefs']->getValue('sortpref')); + foreach (array_keys($sortpref) as $key) { - if ($GLOBALS['imp_search']->isSearchMbox($key) && - !$GLOBALS['imp_search']->isEditableVFolder($key)) { + if ($imp_search->isSearchMbox($key) && + !$imp_search->isEditableVFolder($key)) { unset($sortpref[$key]); $update = true; } } + if ($update) { $GLOBALS['prefs']->setValue('sortpref', serialize($sortpref)); } diff --git a/imp/lib/LoginTasks/SystemTask/UpgradeFromImp4.php b/imp/lib/LoginTasks/SystemTask/UpgradeFromImp4.php index 09fae39a7..3861c78d7 100644 --- a/imp/lib/LoginTasks/SystemTask/UpgradeFromImp4.php +++ b/imp/lib/LoginTasks/SystemTask/UpgradeFromImp4.php @@ -263,7 +263,7 @@ class IMP_LoginTasks_SystemTask_UpgradeFromImp4 extends Horde_LoginTasks_SystemT /* This will overwrite the existing entry. */ $query = $imp_ui_search->createQuery($rules); - $GLOBALS['imp_search']->addVFolder($query, $ui['folders'], $rules, $ui['vfolder_label'], $id); + $GLOBALS['injector']->getInstance('IMP_Search')->addVFolder($query, $ui['folders'], $rules, $ui['vfolder_label'], $id); } } diff --git a/imp/lib/LoginTasks/Task/PurgeSentmail.php b/imp/lib/LoginTasks/Task/PurgeSentmail.php index 9f81531c0..55cbf2a69 100644 --- a/imp/lib/LoginTasks/Task/PurgeSentmail.php +++ b/imp/lib/LoginTasks/Task/PurgeSentmail.php @@ -55,7 +55,7 @@ class IMP_LoginTasks_Task_PurgeSentmail extends Horde_LoginTasks_Task * than 'purge_sentmail_keep' days. */ $query = new Horde_Imap_Client_Search_Query(); $query->dateSearch($del_time, Horde_Imap_Client_Search_Query::DATE_BEFORE); - $msg_ids = $GLOBALS['imp_search']->runSearchQuery($query, $mbox); + $msg_ids = $GLOBALS['injector']->getInstance('IMP_Search')->runSearchQuery($query, $mbox); if (empty($msg_ids)) { continue; } diff --git a/imp/lib/LoginTasks/Task/PurgeSpam.php b/imp/lib/LoginTasks/Task/PurgeSpam.php index e21cf3973..9e1098a95 100644 --- a/imp/lib/LoginTasks/Task/PurgeSpam.php +++ b/imp/lib/LoginTasks/Task/PurgeSpam.php @@ -53,7 +53,7 @@ class IMP_LoginTasks_Task_PurgeSpam extends Horde_LoginTasks_Task /* Get the list of messages older than 'purge_spam_keep' days. */ $query = new Horde_Imap_Client_Search_Query(); $query->dateSearch($del_time, Horde_Imap_Client_Search_Query::DATE_BEFORE); - $msg_ids = $GLOBALS['imp_search']->runSearchQuery($query, $spam_folder); + $msg_ids = $GLOBALS['injector']->getInstance('IMP_Search')->runSearchQuery($query, $spam_folder); if (empty($msg_ids)) { return false; } diff --git a/imp/lib/LoginTasks/Task/PurgeTrash.php b/imp/lib/LoginTasks/Task/PurgeTrash.php index 7c7413718..4f6eb6aec 100644 --- a/imp/lib/LoginTasks/Task/PurgeTrash.php +++ b/imp/lib/LoginTasks/Task/PurgeTrash.php @@ -53,7 +53,7 @@ class IMP_LoginTasks_Task_PurgeTrash extends Horde_LoginTasks_Task /* Get the list of messages older than 'purge_trash_keep' days. */ $query = new Horde_Imap_Client_Search_Query(); $query->dateSearch($del_time, Horde_Imap_Client_Search_Query::DATE_BEFORE); - $msg_ids = $GLOBALS['imp_search']->runSearchQuery($query, $trash_folder); + $msg_ids = $GLOBALS['injector']->getInstance('IMP_Search')->runSearchQuery($query, $trash_folder); if (empty($msg_ids)) { return false; } diff --git a/imp/lib/Mailbox.php b/imp/lib/Mailbox.php index e113eaed7..a6819d098 100644 --- a/imp/lib/Mailbox.php +++ b/imp/lib/Mailbox.php @@ -72,7 +72,7 @@ class IMP_Mailbox public function __construct($mailbox, $uid = null) { $this->_mailbox = $mailbox; - $this->_searchmbox = $GLOBALS['imp_search']->isSearchMbox($mailbox); + $this->_searchmbox = $GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mailbox); if (is_null($uid)) { unset($_SESSION['imp']['cache']['imp_mailbox'][$mailbox]); @@ -296,7 +296,7 @@ class IMP_Mailbox } try { - foreach ($GLOBALS['imp_search']->runSearch($query, $this->_mailbox) as $val) { + foreach ($GLOBALS['injector']->getInstance('IMP_Search')->runSearch($query, $this->_mailbox) as $val) { list($idx, $mbox) = explode(IMP::IDX_SEP, $val); $this->_sorted[] = $idx; $this->_sortedMbox[] = $mbox; @@ -317,7 +317,7 @@ class IMP_Mailbox $query->flag('\\deleted', false); } try { - $res = $GLOBALS['imp_search']->imapSearch($this->_mailbox, $query, array('sort' => array($sortpref['by']), 'reverse' => (bool)$sortpref['dir'])); + $res = $GLOBALS['injector']->getInstance('IMP_Search')->imapSearch($this->_mailbox, $query, array('sort' => array($sortpref['by']), 'reverse' => (bool)$sortpref['dir'])); $this->_sorted = $res['sort']; } catch (Horde_Imap_Client_Exception $e) { $GLOBALS['notification']->push(_("Mailbox listing failed") . ': ' . $e->getMessage(), 'horde.error'); diff --git a/imp/lib/Message.php b/imp/lib/Message.php index 7404de9c3..c934bd5f6 100644 --- a/imp/lib/Message.php +++ b/imp/lib/Message.php @@ -238,7 +238,7 @@ class IMP_Message if ($this->_usepop || !empty($options['nuke']) || ($use_trash && ($mbox == $trash)) || - ($use_vtrash && ($GLOBALS['imp_search']->isVTrashFolder()))) { + ($use_vtrash && ($GLOBALS['injector']->getInstance('IMP_Search')->isVTrashFolder()))) { /* Purge messages immediately. */ $expunge_now = true; } else { @@ -540,7 +540,7 @@ class IMP_Message /* If in Virtual Inbox, we need to reset flag to unseen so that it * appears again in the mailbox list. */ - if ($GLOBALS['imp_search']->isVINBOXFolder($mbox) && + if ($GLOBALS['injector']->getInstance('IMP_Search')->isVINBOXFolder($mbox) && ($pos = array_search('\\seen', $res['flags']))) { unset($res['flags'][$pos]); } @@ -678,12 +678,13 @@ class IMP_Message return $msg_list ? array() : null; } + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); $process_list = $update_list = array(); foreach (array_keys($mbox_list) as $key) { if (!$GLOBALS['imp_imap']->isReadOnly($key)) { - if ($GLOBALS['imp_search']->isSearchMbox($key)) { - foreach ($GLOBALS['imp_search']->getSearchFolders($key) as $skey) { + if ($imp_search->isSearchMbox($key)) { + foreach ($imp_search->getSearchFolders($key) as $skey) { $process_list[$skey] = $mbox_list[$key]; } } else { @@ -723,8 +724,9 @@ class IMP_Message */ public function emptyMailbox($mbox_list) { - global $imp_search, $notification, $prefs; + global $notification, $prefs; + $imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); $trash_folder = ($prefs->getValue('use_trash')) ? IMP::folderPref($prefs->getValue('trash_folder'), true) : null; diff --git a/imp/lib/Mime/Viewer/Partial.php b/imp/lib/Mime/Viewer/Partial.php index 67b992670..f7a72e5cf 100644 --- a/imp/lib/Mime/Viewer/Partial.php +++ b/imp/lib/Mime/Viewer/Partial.php @@ -87,7 +87,7 @@ class IMP_Horde_Mime_Viewer_Partial extends Horde_Mime_Viewer_Driver /* Perform the search to find the other parts of the message. */ $query = new Horde_Imap_Client_Search_Query(); $query->headerText('Content-Type', $id); - $indices = $GLOBALS['imp_search']->runSearchQuery($query, $mbox); + $indices = $GLOBALS['injector']->getInstance('IMP_Search')->runSearchQuery($query, $mbox); /* If not able to find the other parts of the message, prepare a * status message. */ diff --git a/imp/lib/Prefs/Ui.php b/imp/lib/Prefs/Ui.php index cf97683ae..4b8c8e6b6 100644 --- a/imp/lib/Prefs/Ui.php +++ b/imp/lib/Prefs/Ui.php @@ -481,7 +481,7 @@ class IMP_Prefs_Ui $ui->suppress = array_diff($ui->suppress, array('trashselect', 'empty_trash_menu')); } if ($prefs->isDirty('use_vtrash')) { - $GLOBALS['imp_search']->initialize(true); + $GLOBALS['injector']->getInstance('IMP_Search')->initialize(true); } break; @@ -493,7 +493,7 @@ class IMP_Prefs_Ui case 'server': if ($prefs->isDirty('use_vinbox')) { - $GLOBALS['imp_search']->initialize(true); + $GLOBALS['injector']->getInstance('IMP_Search')->initialize(true); } if ($prefs->isDirty('subscribe')) { diff --git a/imp/lib/Quota/Imap.php b/imp/lib/Quota/Imap.php index a8860c426..1fae10280 100644 --- a/imp/lib/Quota/Imap.php +++ b/imp/lib/Quota/Imap.php @@ -26,7 +26,7 @@ class IMP_Quota_Imap extends IMP_Quota public function getQuota() { try { - $quota = $GLOBALS['imp_imap']->ob()->getQuotaRoot($GLOBALS['imp_search']->isSearchMbox($GLOBALS['imp_mbox']['mailbox']) ? 'INBOX' : $GLOBALS['imp_mbox']['mailbox']); + $quota = $GLOBALS['imp_imap']->ob()->getQuotaRoot($GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($GLOBALS['imp_mbox']['mailbox']) ? 'INBOX' : $GLOBALS['imp_mbox']['mailbox']); } catch (Horde_Imap_Client_Exception $e) { throw new IMP_Exception(_("Unable to retrieve quota")); } diff --git a/imp/lib/Ui/Search.php b/imp/lib/Ui/Search.php index af4449163..4880a912f 100644 --- a/imp/lib/Ui/Search.php +++ b/imp/lib/Ui/Search.php @@ -25,8 +25,8 @@ class IMP_Ui_Search $query = new Horde_Imap_Client_Search_Query(); $search_array = array(); - $search_fields = $GLOBALS['imp_search']->searchFields(); - $flag_fields = $GLOBALS['imp_search']->flagFields(); + $search_fields = $GLOBALS['injector']->getInstance('IMP_Search')->searchFields(); + $flag_fields = $GLOBALS['injector']->getInstance('IMP_Search')->flagFields(); $imp_flags = $GLOBALS['injector']->getInstance('IMP_Imap_Flags'); $or_search = false; @@ -138,7 +138,7 @@ class IMP_Ui_Search $c_list = array(); if ($criteria) { - $search_fields = $GLOBALS['imp_search']->searchFields(); + $search_fields = $GLOBALS['injector']->getInstance('IMP_Search')->searchFields(); $tmp = new stdClass; $tmp->t = $criteria; $tmp->v = ($search_fields[$criteria]['type'] == 'size') @@ -158,7 +158,7 @@ class IMP_Ui_Search } /* Set the search in the IMP session. */ - return $GLOBALS['imp_search']->createSearchQuery($this->createQuery($c_list), array($mbox), $c_list, _("Search Results"), IMP_Search::MBOX_PREFIX . IMP_Search::BASIC_SEARCH); + return $GLOBALS['injector']->getInstance('IMP_Search')->createSearchQuery($this->createQuery($c_list), array($mbox), $c_list, _("Search Results"), IMP_Search::MBOX_PREFIX . IMP_Search::BASIC_SEARCH); } } diff --git a/imp/lib/Views/ListMessages.php b/imp/lib/Views/ListMessages.php index ebc14119f..3817dc30a 100644 --- a/imp/lib/Views/ListMessages.php +++ b/imp/lib/Views/ListMessages.php @@ -68,10 +68,10 @@ class IMP_Views_ListMessages /* Set the search in the IMP session. */ if ($is_search) { - $GLOBALS['imp_search']->createSearchQuery($query, array($args['qsearchmbox']), array(), _("Search Results"), $mbox); + $GLOBALS['injector']->getInstance('IMP_Search')->createSearchQuery($query, array($args['qsearchmbox']), array(), _("Search Results"), $mbox); } } else { - $is_search = $GLOBALS['imp_search']->isSearchMbox($mbox); + $is_search = $GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mbox); } /* Set the current time zone. */ diff --git a/imp/mailbox-mimp.php b/imp/mailbox-mimp.php index 40ffbbeb6..18d3b693a 100644 --- a/imp/mailbox-mimp.php +++ b/imp/mailbox-mimp.php @@ -24,6 +24,8 @@ require_once dirname(__FILE__) . '/lib/Application.php'; Horde_Registry::appInit('imp', array('impmode' => 'mimp')); Horde_Nls::setTimeZone(); + +$imp_search = $injector->getInstance('IMP_Search'); $imp_ui_mimp = $injector->getInstance('IMP_Ui_Mimp'); $vars = Horde_Variables::getDefaultVariables(); diff --git a/imp/mailbox.php b/imp/mailbox.php index 8bad7531c..4441d96bd 100644 --- a/imp/mailbox.php +++ b/imp/mailbox.php @@ -47,6 +47,7 @@ try { } catch (Horde_Exception_HookNotSet $e) {} /* Is this a search mailbox? */ +$imp_search = $injector->getInstance('IMP_Search'); $search_mbox = $imp_search->isSearchMbox($imp_mbox['mailbox']); $vfolder = $imp_search->isVFolder(); @@ -184,7 +185,7 @@ case 'empty_mailbox': break; case 'view_messages': - $redirect = IMP::generateIMPUrl('thread.php', $imp_mbox['mailbox'], null, null, false)->setRaw(true)->add(array('mode' => 'msgview', 'msglist' => $GLOBALS['imp_imap']->ob()->utils->toSequenceString(IMP::parseIndicesList($indices), array('mailbox' => true)))); + $redirect = IMP::generateIMPUrl('thread.php', $imp_mbox['mailbox'], null, null, false)->setRaw(true)->add(array('mode' => 'msgview', 'msglist' => $imp_imap->ob()->utils->toSequenceString(IMP::parseIndicesList($indices), array('mailbox' => true)))); header('Location: ' . $redirect); exit; } @@ -227,7 +228,7 @@ $sortpref = IMP::getSort($imp_mbox['mailbox']); /* Determine if we are going to show the Hide/Purge Deleted Message links. */ if (!$prefs->getValue('use_trash') && - !$GLOBALS['imp_search']->isVINBOXFolder()) { + !$imp_search->isVINBOXFolder()) { $showdelete = array('hide' => ($sortpref['by'] != Horde_Imap_Client::SORT_THREAD), 'purge' => true); } else { $showdelete = array('hide' => false, 'purge' => false); diff --git a/imp/message.php b/imp/message.php index 90088a623..59bcae1ca 100644 --- a/imp/message.php +++ b/imp/message.php @@ -27,8 +27,8 @@ Horde_Nls::setTimeZone(); /* We know we are going to be exclusively dealing with this mailbox, so * select it on the IMAP server (saves some STATUS calls). Open R/W to clear * the RECENT flag. */ -if (!$imp_search->isSearchMbox($imp_mbox['mailbox'])) { - $imp_imap->ob()->openMailbox($imp_mbox['mailbox'], Horde_Imap_Client::OPEN_READWRITE); +if (!($search_mbox = $injector->getInstance('IMP_Search')->isSearchMbox($imp_mbox['mailbox']))) { + $injector->getInstance('IMP_Imap')->getOb()->openMailbox($imp_mbox['mailbox'], Horde_Imap_Client::OPEN_READWRITE); } /* Make sure we have a valid index. */ @@ -401,7 +401,7 @@ foreach ($flag_parse as $val) { * message in the header. */ $h_page_label = htmlspecialchars($page_label); $header_label = $h_page_label; -if ($imp_search->isSearchMbox($imp_mbox['mailbox'])) { +if ($search_mbox) { $header_label .= ' [' . Horde::link(Horde::applicationUrl('mailbox.php')->add('mailbox', $mailbox_name)) . IMP::displayFolder($mailbox_name) . ']'; } diff --git a/imp/rss.php b/imp/rss.php index 7663e9001..08cad8290 100644 --- a/imp/rss.php +++ b/imp/rss.php @@ -42,8 +42,10 @@ if (!empty($request)) { $new_mail = (isset($request_parts[1]) && ($request_parts[1] === 'new')); } -/* Obtain some information describing the mailbox state. */ $imp_mailbox = $injector->getInstance('IMP_Mailbox')->getOb($mailbox); +$imp_search = $injector->getInstance('IMP_Search'); + +/* Obtain some information describing the mailbox state. */ $total_num = $imp_mailbox->getMessageCount(); $unseen_num = ($imp_search->isVINBOXFolder($mailbox)) ? $imp_mailbox->getMessageCount() diff --git a/imp/search-basic.php b/imp/search-basic.php index 87ce1cdf1..3df573835 100644 --- a/imp/search-basic.php +++ b/imp/search-basic.php @@ -24,6 +24,8 @@ if ($_SESSION['imp']['protocol'] == 'pop') { exit; } +$imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + /* If search_basic_mbox is set, we are processing the search query. */ $search_mailbox = Horde_Util::getFormData('search_basic_mbox'); if ($search_mailbox) { @@ -31,7 +33,7 @@ if ($search_mailbox) { $id = $imp_ui_search->processBasicSearch($search_mailbox, Horde_Util::getFormData('search_criteria'), Horde_Util::getFormData('search_criteria_text'), Horde_Util::getFormData('search_criteria_not'), Horde_Util::getFormData('search_flags')); /* Redirect to the mailbox screen. */ - header('Location: ' . Horde::applicationUrl('mailbox.php', true)->setRaw(true)->add('mailbox', $GLOBALS['imp_search']->createSearchID($id))); + header('Location: ' . Horde::applicationUrl('mailbox.php', true)->setRaw(true)->add('mailbox', $imp_search->createSearchID($id))); exit; } diff --git a/imp/search.php b/imp/search.php index 97d72b4a8..a05b502fa 100644 --- a/imp/search.php +++ b/imp/search.php @@ -39,6 +39,8 @@ if (!$browser->hasFeature('javascript') || exit; } +$imp_search = $GLOBALS['injector']->getInstance('IMP_Search'); + $charset = Horde_Nls::getCharset(); $criteria = Horde_Util::getFormData('criteria_form'); $dimp_view = ($_SESSION['imp']['view'] == 'dimp'); @@ -72,7 +74,7 @@ if (!empty($criteria)) { } /* Redirect to the mailbox page. */ - $id = $GLOBALS['imp_search']->createSearchID($id); + $id = $imp_search->createSearchID($id); if ($dimp_view) { /* Output javascript code to close the IFRAME and load the search * mailbox in DIMP. */