Move imp_search from global to injectable
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 27 Apr 2010 04:37:01 +0000 (22:37 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Thu, 29 Apr 2010 17:18:58 +0000 (11:18 -0600)
30 files changed:
imp/folders.php
imp/lib/Ajax/Application.php
imp/lib/Api.php
imp/lib/Application.php
imp/lib/Auth.php
imp/lib/Block/Newmail.php
imp/lib/Filter.php
imp/lib/Folder.php
imp/lib/IMP.php
imp/lib/Imap.php
imp/lib/Imap/Tree.php
imp/lib/Injector/Binder/Search.php [new file with mode: 0644]
imp/lib/LoginTasks/SystemTask/GarbageCollection.php
imp/lib/LoginTasks/SystemTask/UpgradeFromImp4.php
imp/lib/LoginTasks/Task/PurgeSentmail.php
imp/lib/LoginTasks/Task/PurgeSpam.php
imp/lib/LoginTasks/Task/PurgeTrash.php
imp/lib/Mailbox.php
imp/lib/Message.php
imp/lib/Mime/Viewer/Partial.php
imp/lib/Prefs/Ui.php
imp/lib/Quota/Imap.php
imp/lib/Ui/Search.php
imp/lib/Views/ListMessages.php
imp/mailbox-mimp.php
imp/mailbox.php
imp/message.php
imp/rss.php
imp/search-basic.php
imp/search.php

index c312614..6c21a91 100644 (file)
@@ -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") . '</a>';
         $val['editvfolder'] = Horde::link($imp_search->editUrl($val['value']), _("Edit Virtual Folder")) . _("Edit") . '</a>';
     }
index fde643e..27a02fa 100644 (file)
@@ -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;
index 54e2d2c..2b06a58 100644 (file)
@@ -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);
     }
 
     /**
index 631c6f2..54d53f0 100644 (file)
@@ -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. */
index 6b65757..5b4b721 100644 (file)
@@ -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. */
index 58392ab..3738a8a 100644 (file)
@@ -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 = '<table cellspacing="0" width="100%">';
         if (empty($ids)) {
index f21fe7d..ce15e8b 100644 (file)
@@ -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) {
index e1d9786..a3bc490 100644 (file)
@@ -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;
     }
index 45cb3b8..fe5afa8 100644 (file)
@@ -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));
index 7450acd..25ffb5e 100644 (file)
@@ -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'];
index 68fa5c9..5ac8540 100644 (file)
@@ -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 (file)
index 0000000..e983509
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Binder for IMP_Search::.
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @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;
+    }
+
+}
index 07ff01e..f9e54e6 100644 (file)
@@ -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));
         }
index 09fae39..3861c78 100644 (file)
@@ -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);
         }
     }
 
index 9f81531..55cbf2a 100644 (file)
@@ -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;
             }
index e21cf39..9e1098a 100644 (file)
@@ -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;
         }
index 7c74137..4f6eb6a 100644 (file)
@@ -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;
         }
index e113eae..a6819d0 100644 (file)
@@ -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');
index 7404de9..c934bd5 100644 (file)
@@ -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;
index 67b9926..f7a72e5 100644 (file)
@@ -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. */
index cf97683..4b8c8e6 100644 (file)
@@ -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')) {
index a8860c4..1fae102 100644 (file)
@@ -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"));
         }
index af44491..4880a91 100644 (file)
@@ -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);
     }
 
 }
index ebc1411..3817dc3 100644 (file)
@@ -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. */
index 40ffbbe..18d3b69 100644 (file)
@@ -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();
 
index 8bad753..4441d96 100644 (file)
@@ -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);
index 90088a6..59bcae1 100644 (file)
@@ -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) . '</a>]';
 }
 
index 7663e90..08cad82 100644 (file)
@@ -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()
index 87ce1cd..3df5738 100644 (file)
@@ -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;
 }
 
index 97d72b4..a05b502 100644 (file)
@@ -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. */