From 727c39b30c5a3b9cc31e8ab95222c6b8a2d8f50a Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Wed, 12 Jan 2011 13:17:13 -0700 Subject: [PATCH] Don't store allow_folders value in $conf array --- imp/compose-mimp.php | 2 +- imp/compose.php | 4 ++-- imp/folders-mimp.php | 2 +- imp/folders.php | 4 ++-- imp/lib/Application.php | 4 ++-- imp/lib/IMP.php | 2 +- imp/lib/Imap.php | 14 ++++++++++++-- imp/lib/Imap/Tree.php | 22 +++++++++++++++------- imp/lib/Prefs/Identity.php | 8 +++----- imp/lib/Prefs/Ui.php | 32 +++++++++++++++++++------------- imp/lib/Views/Compose.php | 3 ++- imp/mailbox.php | 4 ++-- imp/message.php | 2 +- imp/mobile.php | 4 ++-- imp/templates/dimp/index.inc | 5 +++-- 15 files changed, 68 insertions(+), 44 deletions(-) diff --git a/imp/compose-mimp.php b/imp/compose-mimp.php index 96f544cbe..16f5c8dd6 100644 --- a/imp/compose-mimp.php +++ b/imp/compose-mimp.php @@ -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')) { diff --git a/imp/compose.php b/imp/compose.php index efc18770f..71b8c5b57 100644 --- a/imp/compose.php +++ b/imp/compose.php @@ -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')); diff --git a/imp/folders-mimp.php b/imp/folders-mimp.php index f6e202ab9..927f99ad9 100644 --- a/imp/folders-mimp.php +++ b/imp/folders-mimp.php @@ -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(); } diff --git a/imp/folders.php b/imp/folders.php index a527085ed..9fd5f5ef3 100644 --- a/imp/folders.php +++ b/imp/folders.php @@ -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); diff --git a/imp/lib/Application.php b/imp/lib/Application.php index 8c904aa63..a4cb88bc4 100644 --- a/imp/lib/Application.php +++ b/imp/lib/Application.php @@ -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"), diff --git a/imp/lib/IMP.php b/imp/lib/IMP.php index 2c7362950..53d8c33a4 100644 --- a/imp/lib/IMP.php +++ b/imp/lib/IMP.php @@ -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'); diff --git a/imp/lib/Imap.php b/imp/lib/Imap.php index 061ec7aac..a7619d6d6 100644 --- a/imp/lib/Imap.php +++ b/imp/lib/Imap.php @@ -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. * diff --git a/imp/lib/Imap/Tree.php b/imp/lib/Imap/Tree.php index 2671a7854..0f293bf1f 100644 --- a/imp/lib/Imap/Tree.php +++ b/imp/lib/Imap/Tree.php @@ -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; } diff --git a/imp/lib/Prefs/Identity.php b/imp/lib/Prefs/Identity.php index 3e81c8c4f..40ff5e4df 100644 --- a/imp/lib/Prefs/Identity.php +++ b/imp/lib/Prefs/Identity.php @@ -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; } } diff --git a/imp/lib/Prefs/Ui.php b/imp/lib/Prefs/Ui.php index 49748b023..ece5d5967 100644 --- a/imp/lib/Prefs/Ui.php +++ b/imp/lib/Prefs/Ui.php @@ -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; } } diff --git a/imp/lib/Views/Compose.php b/imp/lib/Views/Compose.php index aa28bc3e2..342e11eb6 100644 --- a/imp/lib/Views/Compose.php +++ b/imp/lib/Views/Compose.php @@ -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'))) { diff --git a/imp/mailbox.php b/imp/mailbox.php index 4dd4cd3fe..3ae3c5193 100644 --- a/imp/mailbox.php +++ b/imp/mailbox.php @@ -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'); diff --git a/imp/message.php b/imp/message.php index 3975c4409..1b1e0e785 100644 --- a/imp/message.php +++ b/imp/message.php @@ -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))); diff --git a/imp/mobile.php b/imp/mobile.php index 71a1f6b32..48330fee1 100644 --- a/imp/mobile.php +++ b/imp/mobile.php @@ -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'); diff --git a/imp/templates/dimp/index.inc b/imp/templates/dimp/index.inc index 1c6d40992..4da7cf6c6 100644 --- a/imp/templates/dimp/index.inc +++ b/imp/templates/dimp/index.inc @@ -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') ? '' . Horde::img('quotauncover.gif') . '' : ''; - function _simpleButton($id, $text, $image, $nodisplay = false) { $ak = Horde::getAccessKey($text, true); @@ -317,7 +318,7 @@ function _simpleButton($id, $text, $image, $nodisplay = false) - +allowFolders()): ?>