Don't store allow_folders value in $conf array
authorMichael M Slusarz <slusarz@curecanti.org>
Wed, 12 Jan 2011 20:17:13 +0000 (13:17 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Wed, 12 Jan 2011 20:18:02 +0000 (13:18 -0700)
15 files changed:
imp/compose-mimp.php
imp/compose.php
imp/folders-mimp.php
imp/folders.php
imp/lib/Application.php
imp/lib/IMP.php
imp/lib/Imap.php
imp/lib/Imap/Tree.php
imp/lib/Prefs/Identity.php
imp/lib/Prefs/Ui.php
imp/lib/Views/Compose.php
imp/mailbox.php
imp/message.php
imp/mobile.php
imp/templates/dimp/index.inc

index 96f544c..16f5c8d 100644 (file)
@@ -331,7 +331,7 @@ if ($vars->a == 'rc') {
 } else {
     $t->set('compose_enable', !$compose_disable);
     $t->set('msg', htmlspecialchars($msg));
-    $t->set('save_draft', $conf['user']['allow_folders'] && !$readonly_drafts);
+    $t->set('save_draft', $imp_imap->allowFolders() && !$readonly_drafts);
     $t->set('subject', htmlspecialchars($header['subject']));
 
     if (!$prefs->isLocked('default_identity')) {
index efc1877..71b8c5b 100644 (file)
@@ -746,7 +746,7 @@ if ($redirect) {
 
     $t->set('title', htmlspecialchars($title));
     $t->set('send_msg_ak', Horde::getAccessKeyAndTitle(_("_Send Message")));
-    if ($conf['user']['allow_folders'] && !$readonly_drafts) {
+    if ($imp_imap->allowFolders() && !$readonly_drafts) {
         $t->set('save_draft_ak', Horde::getAccessKeyAndTitle(_("Save _Draft")));
     }
     $t->set('help', Horde_Help::link('imp', 'compose-buttons'));
@@ -868,7 +868,7 @@ if ($redirect) {
     }
     $t->set('compose_options', $compose_options);
 
-    $t->set('ssm', ($conf['user']['allow_folders'] && !$prefs->isLocked('save_sent_mail')));
+    $t->set('ssm', ($imp_imap->allowFolders() && !$prefs->isLocked('save_sent_mail')));
     if ($t->get('ssm')) {
         if ($readonly_sentmail) {
             $notification->push(sprintf(_("Cannot save sent-mail message to \"%s\" as that mailbox is read-only.", $sent_mail_folder), 'horde.warning'));
index f6e202a..927f99a 100644 (file)
@@ -22,7 +22,7 @@ require_once dirname(__FILE__) . '/lib/Application.php';
 Horde_Registry::appInit('imp', array('impmode' => 'mimp'));
 
 /* Redirect back to the mailbox if folder use is not allowed. */
-if (empty($conf['user']['allow_folders'])) {
+if (!$injector->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()) {
     $notification->push(_("Folder use is not enabled."), 'horde.error');
     Horde::url('mailbox-mimp.php', true)->redirect();
 }
index a527085..9fd5f5e 100644 (file)
@@ -23,7 +23,8 @@ Horde_Registry::appInit('imp', array(
 Horde::addScriptFile('folders.js', 'imp');
 
 /* Redirect back to the mailbox if folder use is not allowed. */
-if (!$conf['user']['allow_folders']) {
+$imp_imap = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
+if (!$imp_imap->allowFolders()) {
     $notification->push(_("Folder use is not enabled."), 'horde.error');
     Horde::url('mailbox.php', true)->redirect();
 }
@@ -171,7 +172,6 @@ case 'rename_folder':
     if (!empty($new_names) &&
         !empty($old_names) &&
         ($iMax == count($old_names))) {
-        $imp_imap = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
         for ($i = 0; $i < $iMax; ++$i) {
             $old_name = IMP::formMbox($old_names[$i], false);
             $old_ns = $imp_imap->getNamespace($old_name);
index 8c904aa..a4cb88b 100644 (file)
@@ -242,7 +242,7 @@ class IMP_Application extends Horde_Registry_Application
      */
     public function menu($menu)
     {
-        global $conf, $injector, $prefs, $registry;
+        global $injector, $prefs, $registry;
 
         $menu_mailbox_url = Horde::url('mailbox.php');
 
@@ -292,7 +292,7 @@ class IMP_Application extends Horde_Registry_Application
             ));
         }
 
-        if ($conf['user']['allow_folders']) {
+        if ($injector->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()) {
             $menu->addArray(array(
                 'icon' => 'folders/folder.png',
                 'text' => _("_Folders"),
index 2c73629..53d8c33 100644 (file)
@@ -418,7 +418,7 @@ class IMP
     {
         $t = $GLOBALS['injector']->createInstance('Horde_Template');
         $t->set('forminput', Horde_Util::formInput());
-        $t->set('use_folders', ($GLOBALS['session']->get('imp', 'protocol') != 'pop') && $GLOBALS['conf']['user']['allow_folders'], true);
+        $t->set('use_folders', $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders(), true);
         if ($t->get('use_folders')) {
             Horde::addScriptFile('imp.js', 'imp');
             $menu_view = $GLOBALS['prefs']->getValue('menu_view');
index 061ec7a..a7619d6 100644 (file)
@@ -142,11 +142,10 @@ class IMP_Imap implements Serializable
      */
     protected function _postcreate()
     {
-        global $conf, $prefs;
+        global $prefs;
 
         if ($this->ob instanceof Horde_Imap_Client_Socket_Pop3) {
             /* Turn some options off if we are working with POP3. */
-            $conf['user']['allow_folders'] = false;
             $prefs->setValue('save_sent_mail', false);
             $prefs->setLocked('save_sent_mail', true);
             $prefs->setLocked('sent_mail_folder', true);
@@ -191,6 +190,17 @@ class IMP_Imap implements Serializable
     }
 
     /**
+     * Are folders allowed?
+     *
+     * @return boolean  True if folders are allowed.
+     */
+    public function allowFolders()
+    {
+        return !empty($GLOBALS['conf']['user']['allow_folders']) &&
+            !($this->ob instanceof Horde_Imap_Client_Socket_Pop3);
+    }
+
+    /**
      * Do a UIDVALIDITY check - needed if UIDs are passed between page
      * accesses.
      *
index 2671a78..0f293bf 100644 (file)
@@ -85,6 +85,13 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator, Serializable
     public $unseen = 0;
 
     /**
+     * Are folders allowed?
+     *
+     * @var boolean
+     */
+    protected $_allowFolders;
+
+    /**
      * Array containing the mailbox tree.
      *
      * @var array
@@ -165,12 +172,14 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator, Serializable
     public function __construct()
     {
         if ($GLOBALS['session']->get('imp', 'protocol') == 'imap') {
-            $ns = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->getNamespaceList();
+            $imp_imap = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create();
+            $ns = $imp_imap->getNamespaceList();
             $ptr = reset($ns);
+            $this->_allowFolders = $imp_imap->allowFolders();
             $this->_delimiter = $ptr['delimiter'];
-            $this->_namespaces = empty($GLOBALS['conf']['user']['allow_folders'])
-                ? array()
-                : $ns;
+            $this->_namespaces = $this->_allowFolders
+                ? $ns
+                : array();
         }
 
         $this->init();
@@ -203,8 +212,7 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator, Serializable
 
         /* Add INBOX and exit if folders aren't allowed or if we are using
          * POP3. */
-        if (empty($conf['user']['allow_folders']) ||
-            ($session->get('imp', 'protocol') == 'pop')) {
+        if (!$this->_allowFolders) {
             $this->_insertElt($this->_makeElt('INBOX', self::ELT_IS_SUBSCRIBED));
             return;
         }
@@ -1322,7 +1330,7 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator, Serializable
             $this->changed = true;
         }
 
-        if (empty($GLOBALS['conf']['user']['allow_folders'])) {
+        if (!$this->_allowFolders) {
             return;
         }
 
index 3e81c8c..40ff5e4 100644 (file)
@@ -563,11 +563,9 @@ class Imp_Prefs_Identity extends Horde_Core_Prefs_Identity
      */
     public function saveSentmail($ident = null)
     {
-        if (!$GLOBALS['conf']['user']['allow_folders']) {
-            return false;
-        }
-
-        return $this->getValue('save_sent_mail', $ident);
+        return $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()
+            ? $this->getValue('save_sent_mail', $ident)
+            : false;
     }
 
 }
index 49748b0..ece5d59 100644 (file)
@@ -161,7 +161,7 @@ class IMP_Prefs_Ui
             $ui->suppressGroups[] = 'smime';
         }
 
-        if (empty($conf['user']['allow_folders'])) {
+        if (!$injector->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()) {
             $ui->suppressGroups[] = 'searches';
         }
 
@@ -1023,13 +1023,15 @@ class IMP_Prefs_Ui
      */
     protected function _initialPage()
     {
-        $t = $GLOBALS['injector']->createInstance('Horde_Template');
+        global $injector, $prefs;
+
+        $t = $injector->createInstance('Horde_Template');
         $t->setOption('gettext', true);
 
-        if (empty($GLOBALS['conf']['user']['allow_folders'])) {
+        if (!$injector->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()) {
             $t->set('nofolder', true);
         } else {
-            $mailbox_selected = $GLOBALS['prefs']->getValue('initial_page');
+            $mailbox_selected = $prefs->getValue('initial_page');
             $t->set('folder_page', IMP::formMbox(self::PREF_FOLDER_PAGE, true));
             $t->set('folder_sel', $mailbox_selected == self::PREF_FOLDER_PAGE);
             $t->set('flist', IMP::flistSelect(array(
@@ -1445,9 +1447,11 @@ class IMP_Prefs_Ui
      */
     protected function _updateSentmail($ui)
     {
-        global $conf, $prefs;
+        global $injector, $prefs;
 
-        if (!$conf['user']['allow_folders'] ||
+        $imp_imap = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
+
+        if (!$imp_imap->allowFolders() ||
             $prefs->isLocked('sent_mail_folder')) {
             return false;
         }
@@ -1462,17 +1466,17 @@ class IMP_Prefs_Ui
             $sent_mail_folder = $sm_default;
         }
 
-        $sent_mail_folder = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->appendNamespace($sent_mail_folder);
+        $sent_mail_folder = $imp_imap->appendNamespace($sent_mail_folder);
 
         if ($sent_mail_folder) {
-            $imp_folder = $GLOBALS['injector']->getInstance('IMP_Folder');
+            $imp_folder = $injector->getInstance('IMP_Folder');
             if (!$imp_folder->exists($sent_mail_folder) &&
                 !$imp_folder->create($sent_mail_folder, $prefs->getValue('subscribe'), array('sent' => true))) {
                 return false;
             }
         }
 
-        return $GLOBALS['injector']->getInstance('IMP_Identity')->setValue('sent_mail_folder', $sent_mail_folder);
+        return $injector->getInstance('IMP_Identity')->setValue('sent_mail_folder', $sent_mail_folder);
     }
 
     /* Personal S/MIME certificate management. */
@@ -1934,9 +1938,11 @@ class IMP_Prefs_Ui
      */
     protected function _updateSpecialFolders($pref, $folder, $new, $type, $ui)
     {
-        global $prefs;
+        global $injector, $prefs;
+
+        $imp_imap = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
 
-        if (!$GLOBALS['conf']['user']['allow_folders'] ||
+        if (!$imp_imap->allowFolders() ||
             $prefs->isLocked($pref)) {
             return false;
         }
@@ -1949,8 +1955,8 @@ class IMP_Prefs_Ui
             $folder = substr($folder, strlen(self::PREF_SPECIALUSE));
         } elseif (!empty($new)) {
             $new = Horde_String::convertCharset($new, 'UTF-8', 'UTF7-IMAP');
-            $folder = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->appendNamespace($new);
-            if (!$GLOBALS['injector']->getInstance('IMP_Folder')->create($folder, $prefs->getValue('subscribe'), array($type => true))) {
+            $folder = $injector->getInstance('IMP_Injector_Factory_Imap')->create()->appendNamespace($new);
+            if (!$injector->getInstance('IMP_Folder')->create($folder, $prefs->getValue('subscribe'), array($type => true))) {
                 $folder = null;
             }
         }
index aa28bc3..342e11e 100644 (file)
@@ -140,7 +140,8 @@ class IMP_Views_Compose
                 $t->set('read_receipt_set', ($d_read != 'ask'));
             }
 
-            $t->set('save_sent_mail', ($conf['user']['allow_folders'] && !$prefs->isLocked('save_sent_mail')));
+            $imp_imap = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
+            $t->set('save_sent_mail', ($imp_imap->allowFolders() && !$prefs->isLocked('save_sent_mail')));
             $t->set('priority', $prefs->getValue('set_priority'));
             if (!$prefs->isLocked('default_encrypt') &&
                 ($prefs->getValue('use_pgp') || $prefs->getValue('use_smime'))) {
index 4dd4cd3..3ae3c51 100644 (file)
@@ -230,7 +230,7 @@ if ($do_filter) {
 }
 
 /* Generate folder options list. */
-if ($conf['user']['allow_folders']) {
+if ($imp_imap->allowFolders()) {
     $folder_options = IMP::flistSelect(array('heading' => _("Messages to"), 'new_folder' => true, 'inc_tasklists' => true, 'inc_notepads' => true));
 }
 
@@ -480,7 +480,7 @@ if ($pageOb['msgcount']) {
     $n_template->setOption('gettext', true);
     $n_template->set('id', 1);
     $n_template->set('sessiontag', Horde_Util::formInput());
-    $n_template->set('use_folders', $conf['user']['allow_folders']);
+    $n_template->set('use_folders', $imp_imap->allowFolders());
     $n_template->set('readonly', $readonly);
     $n_template->set('use_pop', $session->get('imp', 'protocol') == 'pop');
 
index 3975c44..1b1e0e7 100644 (file)
@@ -473,7 +473,7 @@ if (!$use_pop) {
     $n_template->set('flaglist_set', $form_set);
     $n_template->set('flaglist_unset', $form_unset);
 
-    if ($conf['user']['allow_folders']) {
+    if ($injector->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()) {
         $n_template->set('move', Horde::widget('#', _("Move to folder"), 'widget moveAction', '', '', _("Move"), true));
         $n_template->set('copy', Horde::widget('#', _("Copy to folder"), 'widget copyAction', '', '', _("Copy"), true));
         $n_template->set('options', IMP::flistSelect(array('heading' => _("This message to"), 'new_folder' => true, 'inc_tasklists' => true, 'inc_notepads' => true)));
index 71a1f6b..48330fe 100644 (file)
@@ -22,7 +22,7 @@ require $registry->get('templates', 'horde') . '/common-header-mobile.inc';
 $view = new Horde_View(array('templatePath' => IMP_TEMPLATES . '/mobile'));
 new Horde_View_Helper_Text($view);
 
-if (empty($conf['user']['allow_folders'])) {
+if (!$injector->getInstance('IMP_Injector_Factory_Imap')->create()->allowFolders()) {
     $view->allowFolders = false;
 } else {
     $view->allowFolders = true;
@@ -41,7 +41,7 @@ $view->portal = Horde::getServiceLink('portal', 'horde')->setRaw(false);
 $view->logout = Horde::getServiceLink('logout')->setRaw(false);
 
 echo $view->render('head.html.php');
-if (!empty($conf['user']['allow_folders'])) {
+if ($view->allowFolders) {
     echo $view->render('folders.html.php');
 }
 echo $view->render('mailbox.html.php');
index 1c6d409..4da7cf6 100644 (file)
@@ -14,12 +14,13 @@ $use_trash = $prefs->getValue('use_trash');
 $has_blacklist = $registry->hasMethod('mail/blacklistFrom');
 $has_whitelist = $registry->hasMethod('mail/whitelistFrom');
 
+$imp_imap = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
+
 // Quota information
 $show_quota = $session->get('imp', 'imap_quota')
     ? '<span class="used">' . Horde::img('quotauncover.gif') . '</span>'
     : '';
 
-
 function _simpleButton($id, $text, $image, $nodisplay = false)
 {
     $ak = Horde::getAccessKey($text, true);
@@ -317,7 +318,7 @@ function _simpleButton($id, $text, $image, $nodisplay = false)
  <a id="ctx_container_collapse"><span class="iconImg"></span><?php echo _("Collapse All") ?></a>
 </div>
 
-<?php if ($conf['user']['allow_folders']): ?>
+<?php if ($imp_imap->allowFolders()): ?>
 <div class="context" id="ctx_folderopts" style="display:none">
  <a id="ctx_folderopts_new"><span class="iconImg"></span><?php echo _("New Folder") ?></a>
 <?php if ($use_sub): ?>