break;
}
- $rte = $show_editor = ($prefs->getValue('compose_html') && $_SESSION['imp']['rteavail']);
+ $rte = $show_editor = ($prefs->getValue('compose_html') && $session['imp:rteavail']);
} else {
try {
$contents = $imp_ui->getContents($vars);
break;
case 'new':
- $rte = $show_editor = ($prefs->getValue('compose_html') && $_SESSION['imp']['rteavail']);
+ $rte = $show_editor = ($prefs->getValue('compose_html') && $session['imp:rteavail']);
break;
}
}
/* Add attachment. */
-if ($_SESSION['imp']['file_upload'] &&
+if ($session['imp:file_upload'] &&
!$imp_compose->addFilesFromUpload('upload_', $vars->a == _("Expand Names")) &&
($vars->a != _("Expand Names"))) {
$vars->a = null;
$t->set('title', $title);
/* Activate advanced compose attachments UI? */
-if ($_SESSION['imp']['file_upload']) {
+if ($session['imp:file_upload']) {
try {
if (Horde::callHook('mimp_advanced', array('compose_attach'), 'imp')) {
$t->set('attach', true);
/* Determine the composition type - text or HTML.
$rtemode is null if browser does not support it. */
$rtemode = null;
-if ($_SESSION['imp']['rteavail']) {
+if ($session['imp:rteavail']) {
if ($prefs->isLocked('compose_html')) {
$rtemode = $prefs->getValue('compose_html');
} else {
}
/* Update the file attachment information. */
-if ($_SESSION['imp']['file_upload']) {
+if ($session['imp:file_upload']) {
/* Only notify if we are reloading the compose screen. */
$notify = !in_array($vars->actionID, array('send_message', 'save_draft'));
/* Prepare the compose template. */
$tabindex = 0;
- $t->set('file_upload', $_SESSION['imp']['file_upload']);
+ $t->set('file_upload', $session['imp:file_upload']);
$t->set('forminput', Horde_Util::formInput());
$hidden = array(
'user' => $registry->getAuth()
);
- if ($_SESSION['imp']['file_upload']) {
- $hidden['MAX_FILE_SIZE'] = $_SESSION['imp']['file_upload'];
+ if (isset($session['imp:file_upload'])) {
+ $hidden['MAX_FILE_SIZE'] = $session['imp:file_upload'];
}
foreach (array('page', 'start', 'popup') as $val) {
$hidden[$val] = htmlspecialchars($vars->$val);
'label' => ''
);
}
- if ($_SESSION['imp']['file_upload']) {
+ if ($session['imp:file_upload']) {
$url = new Horde_Url('#attachments');
$compose_options[] = array(
'url' => $url->link(array('class' => 'widget')),
$t->set('vcard', Horde::label('vcard', _("Attach your contact information to the message?")));
$t->set('attach_vcard', $vars->vcard);
}
- if ($_SESSION['imp']['file_upload']) {
+ if ($session['imp:file_upload']) {
$localeinfo = Horde_Nls::getLocaleInfo();
try {
$t->set('selectlistlink', $registry->call('files/selectlistLink', array(_("Attach Files"), 'widget', 'compose', true)));
/* Decide whether or not to show all the unsubscribed folders */
$subscribe = $prefs->getValue('subscribe');
-$showAll = (!$subscribe || $_SESSION['imp']['showunsub']);
+$showAll = (!$subscribe || $session['imp:showunsub']);
/* Initialize the IMP_Imap_Tree object. */
$imptree = $injector->getInstance('IMP_Imap_Tree');
/* Toggle subscribed view, if necessary. */
if ($subscribe && Horde_Util::getFormData('ts')) {
$showAll = !$showAll;
- $_SESSION['imp']['showunsub'] = $showAll;
+ $session['imp:showunsub'] = $showAll;
$imptree->showUnsubscribed($showAll);
if ($showAll) {
$mask |= IMP_Imap_Tree::FLIST_UNSUB;
/* Decide whether or not to show all the unsubscribed folders */
$subscribe = $prefs->getValue('subscribe');
-$showAll = (!$subscribe || $_SESSION['imp']['showunsub']);
+$showAll = (!$subscribe || $session['imp:showunsub']);
$vars = Horde_Variables::getDefaultVariables();
case 'toggle_subscribed_view':
if ($subscribe) {
$showAll = !$showAll;
- $_SESSION['imp']['showunsub'] = $showAll;
+ $session['imp:showunsub'] = $showAll;
$imaptree->showUnsubscribed($showAll);
}
break;
$folders_url_ob = new Horde_Url($folders_url);
$folders_url_ob->add('folders_token', $folders_token);
-if ($_SESSION['imp']['file_upload'] && ($vars->actionID == 'import_mbox')) {
+if ($session['imp:file_upload'] && ($vars->actionID == 'import_mbox')) {
$title = _("Folder Navigator");
$menu = IMP::menu();
require IMP_TEMPLATES . '/common-header.inc';
}
$a_template->set('nav_poll', !$prefs->isLocked('nav_poll') && !$prefs->getValue('nav_poll_all'));
$a_template->set('notrash', !$prefs->getValue('use_trash'));
-$a_template->set('file_upload', $_SESSION['imp']['file_upload']);
+$a_template->set('file_upload', $session['imp:file_upload']);
$a_template->set('expand_all', Horde::widget($folders_url_ob->copy()->add(array('actionID' => 'expand_all_folders', 'folders_token' => $folders_token)), _("Expand All Folders"), 'widget', '', '', _("Expand All"), true));
$a_template->set('collapse_all', Horde::widget($folders_url_ob->copy()->add(array('actionID' => 'collapse_all_folders', 'folders_token' => $folders_token)), _("Collapse All Folders"), 'widget', '', '', _("Collapse All"), true));
$result->action = 'addAttachment';
$result->success = 0;
- if ($_SESSION['imp']['file_upload'] &&
+ if ($GLOBALS['session']['imp:file_upload'] &&
$imp_compose->addFilesFromUpload('file_')) {
$result->atc = end(IMP_Dimp::getAttachmentInfo($imp_compose));
$result->success = 1;
*/
protected function _getQuota()
{
- if (isset($_SESSION['imp']['imap']['quota']) &&
- is_array($_SESSION['imp']['imap']['quota'])) {
+ if ($GLOBALS['session']['imp:imap_quota']) {
$quotadata = IMP::quotaData(false);
if (!empty($quotadata)) {
return array(
? 0
: $GLOBALS['conf']['compose']['ac_browser'];
- if ($ac_browser && !isset($_SESSION['imp']['cache']['ac_ajax'])) {
+ if ($ac_browser && empty($GLOBALS['session']['imp:ac_ajax'])) {
$success = $use_ajax = true;
$sparams = IMP::getAddressbookSearchParams();
foreach ($sparams['fields'] as $val) {
$addrlist = IMP_Compose::getAddressList();
$use_ajax = count($addrlist) > $ac_browser;
}
- $_SESSION['imp']['cache']['ac_ajax'] = $use_ajax;
+ $GLOBALS['session']['imp:ac_ajax'] = $use_ajax;
}
- if (!$ac_browser || $_SESSION['imp']['cache']['ac_ajax']) {
+ if (!$ac_browser || $GLOBALS['session']['imp:ac_ajax']) {
$ret['ajax'] = 'ContactAutoCompleter';
$ret['params']['minChars'] = intval($GLOBALS['conf']['compose']['ac_threshold'] ? $GLOBALS['conf']['compose']['ac_threshold'] : 1);
} else {
*/
public function server()
{
- $imap_obj = unserialize($_SESSION['imp']['imap_ob'][$_SESSION['imp']['server_key']]);
+ $imap_ob = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create();
+
return array(
- 'hostspec' => $imap_obj->getParam('hostspec'),
- 'port' => $imap_obj->getParam('port'),
- 'protocol' => $_SESSION['imp']['protocol'],
- 'secure' => $imap_obj->getParam('secure')
+ 'hostspec' => $imap_ob->ob->getParam('hostspec'),
+ 'port' => $imap_ob->ob->getParam('port'),
+ 'protocol' => $GLOBALS['session']['imp:protocol'],
+ 'secure' => $imap_ob->ob->getParam('secure')
);
}
*/
public function flagList($mailbox = null)
{
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
return array();
}
{
/* Methods only available if admin config is set for this
* server/login. */
- if (empty($_SESSION['imp']['imap']['admin'])) {
+ if (!$GLOBALS['session']['imp:imap_admin']) {
$this->disabled = array_merge($this->disabled, array('authAddUser', 'authRemoveUser', 'authUserList'));
}
}
public function logout()
{
/* Clean up dangling IMP_Compose objects. */
- if (!empty($_SESSION['imp']['cache']['compose'])) {
- foreach (array_keys($_SESSION['imp']['cache']['compose']) as $key) {
- $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Compose')->create($key)->destroy('cancel');
- }
+ foreach (array_keys($GLOBALS['session']['imp:compose_cache;array']) as $key) {
+ $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Compose')->create($key)->destroy('cancel');
}
}
'url' => IMP::generateIMPUrl($menu_mailbox_url, 'INBOX')
));
- if ($_SESSION['imp']['protocol'] != 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] != 'pop') {
if ($prefs->getValue('use_trash') &&
($trash_folder = $prefs->getValue('trash_folder')) &&
$prefs->getValue('empty_trash_menu')) {
));
}
- if ($_SESSION['imp']['protocol'] != 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] != 'pop') {
$menu->addArray(array(
'icon' => 'search.png',
'text' =>_("_Search"),
));
if ($new_session) {
- $_SESSION['imp']['cache']['select_view'] = empty($credentials['imp_select_view'])
+ $GLOBALS['session']['imp:select_view'] = empty($credentials['imp_select_view'])
? ''
: $credentials['imp_select_view'];
}
)
);
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
return;
}
/* _createSession() will create the imp session variable, so there
* is no concern for an infinite loop here. */
- if (!isset($_SESSION['imp'])) {
+ if (!isset($GLOBALS['session']['imp:server_key'])) {
self::_createSession($credentials);
return true;
}
empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : ' (forwarded for [' . $_SERVER['HTTP_X_FORWARDED_FOR'] . '])',
$imap_ob ? $imap_ob->getParam('hostspec') : '',
$imap_ob ? $imap_ob->getParam('port') : '',
- empty($_SESSION['imp']['protocol']) ? '' : ' [' . $_SESSION['imp']['protocol'] . ']'
+ isset($GLOBALS['session:imp']['protocol']) ? ' [' . $GLOBALS['session']['imp:protocol'] . ']' : ''
);
Horde::logMessage($msg, $level);
* Set up the IMP session. Handle authentication, if required, and only do
* enough work to see if the user can log in.
*
- * Creates the 'imp' session variable with the following entries:
+ * The following is the list of session variables in the imp namespace:
* <pre>
- * 'cache' - (array) Various IMP libraries can use this variable to cache
- * data.
- * 'file_upload' - (integer) If file uploads are allowed, the max size.
- * 'filteravail' - (boolean) Can we apply filters manually?
- * 'imap' - (array) Config for various IMAP resources (acl, admin,
- * namespace, quota, thread)
- * 'imap_ob' - (array) The serialized Horde_Imap_Client objects. Stored
- * by server key.
- * 'maildomain' - (string) See config/backends.php.
- * 'notepadavail' - (boolean) Is listing of notepads available?
- * 'protocol' - (string) Either 'imap' or 'pop'.
- * 'rteavail' - (boolean) Is the HTML editor available?
- * 'search' - (string) The serialized IMP_Search object.
- * 'server_key' - (string) Server used to login.
- * 'smime' - (array) Settings related to the S/MIME viewer.
- * 'smtp' - (array) SMTP options ('host' and 'port')
- * 'showunsub' - (boolean) Show unsusubscribed mailboxes on the folders
- * screen.
- * 'tasklistavail' - (boolean) Is listing of tasklists available?
- * 'view' - (string) The imp view mode (dimp, imp, or mimp)
+ * compose_cache - (array) TODO
+ * file_upload - (integer) If file uploads are allowed, the max size.
+ * filteravail - (boolean) Can we apply filters manually?
+ * imap_acl - (boolean) TODO
+ * imap_admin - (array) TODO [params]
+ * imap_namespace - (array) TODO
+ * imap_ob/* - (Horde_Imap_Client_Base) The IMAP client objects. Stored by
+ * server key.
+ * imap_quota - (array) TODO [driver, hide_when_unlimited, params]
+ * imap_thread - (string) TODO
+ * maildomain - (string) See config/backends.php.
+ * notepadavail - (boolean) Is listing of notepads available?
+ * pgp - (array) TODO
+ * protocol - (string) Either 'imap' or 'pop'.
+ * rteavail - (boolean) Is the HTML editor available?
+ * search - (IMP_Search) The IMP_Search object.
+ * select_view - (string) TODO
+ * server_key - (string) Server used to login.
+ * smime - (array) Settings related to the S/MIME viewer.
+ * smtp - (array) SMTP options ('host' and 'port')
+ * showunsub - (boolean) Show unsusubscribed mailboxes on the folders
+ * screen.
+ * tasklistavail - (boolean) Is listing of tasklists available?
+ * view - (string) The imp view mode (dimp, imp, or mimp)
* </pre>
*
* @param array $credentials An array of login credentials.
*/
static protected function _createSession($credentials)
{
- global $conf;
-
- /* Create the imp session variable. */
- $_SESSION['imp'] = array(
- 'cache' => array(),
- 'imap' => array(),
- 'server_key' => $credentials['server'],
- 'showunsub' => false
- );
+ $GLOBALS['session']['imp:server_key'] = $credentials['server'];
/* Load the server configuration. */
$ptr = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->loadServerConfig($credentials['server']);
'userId' => $credentials['userId']
));
} catch (Horde_Auth_Exception $e) {
- unset($_SESSION['imp']);
+ unset($GLOBALS['session']['imp:']);
throw $e;
}
}
*/
static public function getInitialPage($url = false)
{
- switch ($_SESSION['imp']['view']) {
+ switch ($GLOBALS['session']['imp:view']) {
case 'dimp':
$page = 'index-dimp.php';
break;
break;
default:
- $init_url = ($_SESSION['imp']['protocol'] == 'pop')
+ $init_url = ($GLOBALS['session']['imp:protocol'] == 'pop')
? 'INBOX'
: $GLOBALS['prefs']->getValue('initial_page');
*/
static public function authenticateCallback()
{
- global $conf;
-
- $sess = &$_SESSION['imp'];
+ global $conf, $session;
$imp_imap = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create();
- $ptr = $imp_imap->loadServerConfig($sess['server_key']);
+ $ptr = $imp_imap->loadServerConfig($session['imp:server_key']);
if ($ptr === false) {
throw new Horde_Auth_Exception('', Horde_Auth::REASON_FAILED);
}
/* Set the protocol. */
- $sess['protocol'] = isset($ptr['protocol'])
+ $session['imp:protocol'] = isset($ptr['protocol'])
? $ptr['protocol']
: 'imap';
/* Set the maildomain. */
$maildomain = $GLOBALS['prefs']->getValue('mail_domain');
- $sess['maildomain'] = $maildomain
+ $session['imp:maildomain'] = $maildomain
? $maildomain
: $ptr['maildomain'];
/* Store some basic IMAP server information. */
- if ($sess['protocol'] == 'imap') {
+ if ($session['imp:protocol'] == 'imap') {
foreach (array('acl', 'admin', 'namespace', 'quota') as $val) {
- if (isset($ptr[$val])) {
- $sess['imap'][$val] = $ptr[$val];
+ if (!empty($ptr[$val])) {
+ $tmp = $ptr[$val];
/* 'admin' and 'quota' have password entries - encrypt
* these entries in the session if they exist. */
foreach (array('password', 'admin_password') as $key) {
if (isset($ptr[$val]['params'][$key])) {
$secret = $GLOBALS['injector']->getInstance('Horde_Secret');
- $sess['imap'][$val]['params'][$key] = $secret->write($secret->getKey('imp'), $ptr[$val]['params'][$key]);
+ $tmp['params'][$key] = $secret->write($secret->getKey('imp'), $ptr[$val]['params'][$key]);
}
}
+
+ $session['imp:imap_' . $val] = $tmp;
}
}
/* Set the IMAP threading algorithm. */
- $sess['imap']['thread'] = in_array(isset($ptr['thread']) ? strtoupper($ptr['thread']) : 'REFERENCES', $imp_imap->queryCapability('THREAD'))
+ $session['imp:imap_thread'] = in_array(isset($ptr['thread']) ? strtoupper($ptr['thread']) : 'REFERENCES', $imp_imap->queryCapability('THREAD'))
? 'REFERENCES'
: 'ORDEREDSUBJECT';
}
/* Set the SMTP options, if needed. */
if ($conf['mailer']['type'] == 'smtp') {
- $sess['smtp'] = array();
+ $smtp = array();
foreach (array('smtphost' => 'host', 'smtpport' => 'port') as $key => $val) {
if (!empty($ptr[$key])) {
- $sess['smtp'][$val] = $ptr[$key];
+ $smtp[$val] = $ptr[$key];
}
}
+
+ if (!empty($smtp)) {
+ $session['imp:smtp'] = $smtp;
+ }
}
/* Does the server allow file uploads? If yes, store the
* value, in bytes, of the maximum file size. */
- $sess['file_upload'] = $GLOBALS['browser']->allowFileUploads();
+ $session['imp:file_upload'] = $GLOBALS['browser']->allowFileUploads();
/* Is the 'mail/canApplyFilters' API call available? */
try {
if ($GLOBALS['registry']->call('mail/canApplyFilters')) {
- $sess['filteravail'] = true;
+ $session['imp:filteravail'] = true;
}
} catch (Horde_Exception $e) {}
/* Is the 'tasks/listTasklists' call available? */
if ($conf['tasklist']['use_tasklist'] &&
$GLOBALS['registry']->hasMethod('tasks/listTasklists')) {
- $sess['tasklistavail'] = true;
+ $session['imp:tasklistavail'] = true;
}
/* Is the 'notes/listNotepads' call available? */
if ($conf['notepad']['use_notepad'] &&
$GLOBALS['registry']->hasMethod('notes/listNotepads')) {
- $sess['notepadavail'] = true;
+ $session['imp:notepadavail'] = true;
}
/* Is the HTML editor available? */
$imp_ui = new IMP_Ui_Compose();
- $sess['rteavail'] = $GLOBALS['injector']->getInstance('Horde_Editor')->supportedByBrowser();
+ $session['imp:rteavail'] = $GLOBALS['injector']->getInstance('Horde_Editor')->supportedByBrowser();
/* Determine view. */
$setcookie = false;
if (empty($conf['user']['force_view'])) {
if (empty($conf['user']['select_view']) ||
- empty($sess['cache']['select_view'])) {
+ !$session['imp:select_view']) {
$view = $GLOBALS['browser']->isMobile()
? 'mimp'
: ($GLOBALS['prefs']->getValue('dynamic_view') ? 'dimp' : 'imp');
} else {
$setcookie = true;
- $view = $sess['cache']['select_view'];
+ $view = $session['imp:select_view'];
}
} else {
$view = $conf['user']['force_view'];
self::setViewMode($view);
if ($setcookie) {
- setcookie('default_imp_view', $sess['view'], time() + 30 * 86400, $conf['cookie']['path'], $conf['cookie']['domain']);
+ setcookie('default_imp_view', $session['imp:view'], time() + 30 * 86400, $conf['cookie']['path'], $conf['cookie']['domain']);
}
/* Indicate that notifications should use AJAX mode. */
- if ($sess['view'] == 'dimp') {
+ if ($session['imp:view'] == 'dimp') {
+ // TODO
$_SESSION['horde_notification']['override'] = array(
IMP_BASE . '/lib/Notification/Listener/AjaxStatus.php',
'IMP_Notification_Listener_AjaxStatus'
$GLOBALS['notification']->push(_("Your browser is too old to display the dynamic mode. Using traditional mode instead."), 'horde.warning');
}
- $_SESSION['imp']['view'] = $view;
+ $GLOBALS['session']['imp:view'] = $view;
}
}
protected function _content()
{
$imp_ui = new IMP_Ui_Block();
- list($html_out, $newmsgs) = $imp_ui->folderSummary($_SESSION['imp']['view']);
+ list($html_out, $newmsgs) = $imp_ui->folderSummary($GLOBALS['session']['imp:view']);
$html = '<table cellspacing="0" width="100%">';
$addr = $headers[$k];
if ($session) {
try {
- Horde_Mime::encodeAddress(self::formatAddr($addr), $charset, $_SESSION['imp']['maildomain']);
+ Horde_Mime::encodeAddress(self::formatAddr($addr), $charset, $GLOBALS['session']['imp:maildomain']);
} catch (Horde_Mime_Exception $e) {
throw new IMP_Compose_Exception(sprintf(_("Saving the draft failed. The %s header contains an invalid e-mail address: %s."), $k, $e->getMessage()), $e->getCode());
}
$imp_imap = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create();
try {
$imap_url = $imp_imap->getUtils()->createUrl(array(
- 'type' => $_SESSION['imp']['protocol'],
+ 'type' => $GLOBALS['session']['imp:protocol'],
'username' => $imp_imap->getParam('username'),
'hostspec' => $imp_imap->getParam('hostspec'),
'mailbox' => $this->getMetadata('mailbox'),
}
return $base->toString(array(
- 'defserver' => $session ? $_SESSION['imp']['maildomain'] : null,
+ 'defserver' => $session ? $GLOBALS['session']['imp:maildomain'] : null,
'headers' => $draft_headers
));
}
$reply_type = 'forward';
}
- if ($_SESSION['imp']['view'] == 'mimp') {
+ if ($GLOBALS['session']['imp:view'] == 'mimp') {
$compose_html = false;
} elseif ($prefs->getValue('compose_html')) {
$compose_html = true;
$imap_url = $imp_imap->getUtils()->parseUrl(rtrim(ltrim($val, '<'), '>'));
try {
- if (($imap_url['type'] == $_SESSION['imp']['protocol']) &&
+ if (($imap_url['type'] == $GLOBALS['session']['imp:protocol']) &&
($imap_url['username'] == $imp_imap->getParam('username')) &&
// Ignore hostspec and port, since these can change
// even though the server is the same. UIDVALIDITY should
}
}
- $barefrom = Horde_Mime_Address::bareAddress($header['from'], $_SESSION['imp']['maildomain']);
+ $barefrom = Horde_Mime_Address::bareAddress($header['from'], $GLOBALS['session']['imp:maildomain']);
$encrypt = empty($opts['encrypt']) ? 0 : $opts['encrypt'];
$recipients = implode(', ', $recip['list']);
}
/* Generate the message string. */
- $fcc = $mime_message->toString(array('defserver' => $_SESSION['imp']['maildomain'], 'headers' => $headers, 'stream' => true));
+ $fcc = $mime_message->toString(array('defserver' => $GLOBALS['session']['imp:maildomain'], 'headers' => $headers, 'stream' => true));
$imp_folder = $GLOBALS['injector']->getInstance('IMP_Folder');
/* Properly encode the addresses we're sending to. */
try {
- $email = Horde_Mime::encodeAddress($email, is_null($message) ? 'UTF-8' : $message->getHeaderCharset(), $_SESSION['imp']['maildomain']);
+ $email = Horde_Mime::encodeAddress($email, is_null($message) ? 'UTF-8' : $message->getHeaderCharset(), $GLOBALS['session']['imp:maildomain']);
/* Validate the recipient addresses. */
Horde_Mime_Address::parseAddressList($email, array(
- 'defserver' => $_SESSION['imp']['maildomain'],
+ 'defserver' => $GLOBALS['session']['imp:maildomain'],
'validate' => true
));
} catch (Horde_Mime_Exception $e) {
}
try {
- $r_array = Horde_Mime::encodeAddress($recipients, 'UTF-8', $_SESSION['imp']['maildomain']);
+ $r_array = Horde_Mime::encodeAddress($recipients, 'UTF-8', $GLOBALS['session']['imp:maildomain']);
$r_array = Horde_Mime_Address::parseAddressList($r_array, array('validate' => true));
} catch (Horde_Mime_Exception $e) {}
// Make sure we have a valid host.
$host = trim($ob['host']);
if (empty($host)) {
- $host = $_SESSION['imp']['maildomain'];
+ $host = $GLOBALS['session']['imp:maildomain'];
}
// Convert IDN hosts to ASCII.
$msg_post = '';
}
- if ($_SESSION['imp']['view'] == 'mimp') {
+ if ($GLOBALS['session']['imp:view'] == 'mimp') {
$compose_html = false;
} elseif (!empty($opts['format'])) {
$compose_html = ($opts['format'] == 'html');
" -----\n" . $this->_getMsgHeaders($h) . "\n";
$msg_post = "\n\n----- " . _("End forwarded message") . " -----\n";
- if ($_SESSION['imp']['view'] == 'mimp') {
+ if ($GLOBALS['session']['imp:view'] == 'mimp') {
$compose_html = false;
} elseif (!empty($opts['format'])) {
$compose_html = ($opts['format'] == 'html');
*/
public function maxAttachmentSize()
{
- $size = $_SESSION['imp']['file_upload'];
+ $size = $GLOBALS['session']['imp:file_upload'];
if (!empty($GLOBALS['conf']['compose']['attach_size_limit'])) {
return min($size, max($GLOBALS['conf']['compose']['attach_size_limit'] - $this->sizeOfAttachments(), 0));
$body_id = null;
$mode = 'text';
- if (!empty($options['html']) && $_SESSION['imp']['rteavail']) {
+ if (!empty($options['html']) && $GLOBALS['session']['imp:rteavail']) {
$body_id = $contents->findBody('html');
if (!is_null($body_id)) {
$mode = 'html';
$id = 'personal';
}
- if (!isset($_SESSION['imp']['cache']['pgp'][$type][$id])) {
+ if (!($cache = $GLOBALS['session']['imp:pgp']) ||
+ !isset($cache[$type][$id])) {
return null;
}
$secret = $GLOBALS['injector']->getInstance('Horde_Secret');
- return $secret->read($secret->getKey('imp'), $_SESSION['imp']['cache']['pgp'][$type][$id]);
+ return $secret->read($secret->getKey('imp'), $cache[$type][$id]);
}
/**
}
$secret = $GLOBALS['injector']->getInstance('Horde_Secret');
- $_SESSION['imp']['cache']['pgp'][$type][$id] = $secret->write($secret->getKey('imp'), $passphrase);
+
+ $cache = $GLOBALS['session']['imp:pgp;array'];
+ $cache[$type][$id] = $secret->write($secret->getKey('imp'), $passphrase);
+ $GLOBALS['session']['imp:pgp'] = $cache;
+
return true;
}
*/
public function unsetPassphrase($type, $id = null)
{
- if (($type == 'symmetric') && !is_null($id)) {
- unset($_SESSION['imp']['cache']['pgp']['symmetric'][$id]);
- } else {
- unset($_SESSION['imp']['cache']['pgp'][$type]);
+ if ($cache = $GLOBALS['session']['imp:pgp']) {
+ if (($type == 'symmetric') && !is_null($id)) {
+ unset($cache['symmetric'][$id]);
+ } else {
+ unset($cache[$type]);
+ }
+ $GLOBALS['session']['imp:pgp'] = $cache;
}
}
$addr_list = array();
foreach ($addresses as $val) {
- $addrOb = Horde_Mime_Address::bareAddress($val, $_SESSION['imp']['maildomain'], true);
+ $addrOb = Horde_Mime_Address::bareAddress($val, $GLOBALS['session']['imp:maildomain'], true);
$key_addr = array_pop($addrOb);
/* Get the public key for the address. */
protected function _encryptParameters($address)
{
/* We can only encrypt if we are sending to a single person. */
- $addrOb = Horde_Mime_Address::bareAddress($address, $_SESSION['imp']['maildomain'], true);
+ $addrOb = Horde_Mime_Address::bareAddress($address, $GLOBALS['session']['imp:maildomain'], true);
$key_addr = array_pop($addrOb);
$public_key = $this->getPublicKey($key_addr);
*/
public function getPassphrase()
{
+ global $session;
+
$private_key = $GLOBALS['prefs']->getValue('smime_private_key');
if (empty($private_key)) {
return false;
}
- if (isset($_SESSION['imp']['smime']['passphrase'])) {
+ if (isset($session['imp:smime_passphrase'])) {
$secret = $GLOBALS['injector']->getInstance('Horde_Secret');
- return $secret->read($secret->getKey('imp'), $_SESSION['imp']['smime']['passphrase']);
- } elseif (isset($_SESSION['imp']['smime']['null_passphrase'])) {
- return ($_SESSION['imp']['smime']['null_passphrase']) ? null : false;
- } else {
- $result = $this->verifyPassphrase($private_key, null);
- if (!isset($_SESSION['imp']['smime'])) {
- $_SESSION['imp']['smime'] = array();
- }
- $_SESSION['imp']['smime']['null_passphrase'] = ($result) ? null : false;
- return $_SESSION['imp']['smime']['null_passphrase'];
+ return $secret->read($secret->getKey('imp'), $session['imp:smime_passphrase']);
+ } elseif (!isset($session['imp:smime_null_passphrase'])) {
+ $session['imp:smime_null_passphrase'] = ($this->verifyPassphrase($private_key, null)
+ ? null
+ : false;
}
+
+ return $session['imp:smime_null_passphrase'];
}
/**
return false;
}
- if (!isset($_SESSION['imp']['smime'])) {
- $_SESSION['imp']['smime'] = array();
- }
-
$secret = $GLOBALS['injector']->getInstance('Horde_Secret');
- $_SESSION['imp']['smime']['passphrase'] = $secret->write($secret->getKey('imp'), $passphrase);
+ $GLOBALS['session']['imp:smime_passphrase'] = $secret->write($secret->getKey('imp'), $passphrase);
return true;
}
*/
public function unsetPassphrase()
{
- unset($_SESSION['imp']['smime']['null_passphrase'], $_SESSION['imp']['smime']['passphrase']);
+ global $session;
+
+ unset($session['imp:smime_null_passphrase'], $session['imp:smime_passphrase']);
}
/**
*/
public function filter($mbox)
{
- if (empty($_SESSION['imp']['filteravail'])) {
+ if (!$GLOBALS['session']['imp:filteravail']) {
return;
}
*/
static public function getViewMode()
{
- return isset($_SESSION['imp']['view'])
- ? $_SESSION['imp']['view']
+ return ($view = $GLOBALS['session']['imp:view'])
+ ? $view
: 'imp';
}
{
$t = $GLOBALS['injector']->createInstance('Horde_Template');
$t->set('forminput', Horde_Util::formInput());
- $t->set('use_folders', ($_SESSION['imp']['protocol'] != 'pop') && $GLOBALS['conf']['user']['allow_folders'], true);
+ $t->set('use_folders', ($GLOBALS['session']['imp:protocol'] != 'pop') && $GLOBALS['conf']['user']['allow_folders'], true);
if ($t->get('use_folders')) {
Horde::addScriptFile('imp.js', 'imp');
$menu_view = $GLOBALS['prefs']->getValue('menu_view');
*/
static public function quotaData($long = true)
{
- if (!isset($_SESSION['imp']['imap']['quota']) ||
- !is_array($_SESSION['imp']['imap']['quota'])) {
+ if (!$GLOBALS['session']['imp:imap_quota']) {
return false;
}
$ret['percent'] = sprintf("%.2f", $ret['percent']);
} else {
// Hide unlimited quota message?
- if (!empty($_SESSION['imp']['quota']['hide_when_unlimited'])) {
+ if ($GLOBALS['session']['imp:quota_hide_when_unlimited']) {
return false;
}
/* Restrict POP3 sorting to sequence only. Although possible to
* abstract other sorting methods, all other methods require a
* download of all messages, which is too much overhead.*/
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
$ob['by'] = Horde_Imap_Client::SORT_SEQUENCE;
return $ob;
}
* Horde_Imap_Client_Socket has a built-in ORDEREDSUBJECT
* implementation. We will always prefer REFERENCES, but will fallback
* to ORDEREDSUBJECT if the server doesn't support THREAD sorting. */
- return (($_SESSION['imp']['protocol'] == 'imap') &&
+ return (($GLOBALS['session']['imp:protocol'] == 'imap') &&
!$GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mbox));
}
$t->set('folders', $folders);
$imp_search = $GLOBALS['injector']->getInstance('IMP_Search');
- if (($_SESSION['imp']['protocol'] != 'pop') &&
+ if (($GLOBALS['session']['imp:protocol'] != 'pop') &&
($vinbox = $imp_search['vinbox']) &&
$vinbox->enabled) {
$t->set('vinbox', self::generateIMPUrl('mailbox.php', strval($vinbox))->link());
public function shutdown()
{
/* Only need to serialize object once a session. */
- if ($this->ob && isset($_SESSION['imp'])) {
- $_SESSION['imp']['imap_ob'][$this->_serverkey] = serialize($this->ob);
+ if ($this->ob) {
+ $GLOBALS['session']['imp:imap_ob/' . $this->_serverkey] = $this->ob;
}
}
*/
protected function _loadImapObject()
{
+ global $session;
+
if (!is_null($this->ob)) {
return true;
}
- if (empty($_SESSION['imp']) ||
- empty($_SESSION['imp']['imap_ob'][$this->_serverkey])) {
- return false;
- }
-
try {
- $this->ob = @unserialize($_SESSION['imp']['imap_ob'][$this->_serverkey]);
+ if (!($this->ob = $GLOBALS['session']['imp:imap_ob/' . $this->_serverkey])) {
+ return false;
+ }
} catch (Exception $e) {
/* Throw fatal error here - should never reach here and if we
* do, we are out of luck. */
throw new IMP_Exception(_("Could not acquire mail server credentials from the session."));
}
- $this->_postcreate($_SESSION['imp']['protocol']);
+ $this->_postcreate($session['imp:protocol']);
return true;
}
/* This check can only be done for regular IMAP mailboxes. */
// TODO: POP3 also?
if (!$res &&
- ($_SESSION['imp']['protocol'] == 'imap') &&
+ ($GLOBALS['session']['imp:protocol'] == 'imap') &&
!$GLOBALS['injector']->getInstance('IMP_Search')->isSearchMbox($mailbox)) {
try {
$status = $this->ob->status($mailbox, Horde_Imap_Client::STATUS_UIDNOTSTICKY);
*/
public function checkUidvalidity($mailbox)
{
+ global $session;
+
// TODO: POP3 also?
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($session['imp:protocol'] == 'pop') {
return;
}
if (!isset($this->_uidvalid[$mailbox])) {
$status = $this->ob->status($mailbox, Horde_Imap_Client::STATUS_UIDVALIDITY);
- $ptr = &$_SESSION['imp']['cache'];
- $val = isset($ptr['uidvalid'][$mailbox])
- ? $ptr['uidvalid'][$mailbox]
+ $val = isset($session['imp:uidvalid/' . $mailbox])
+ ? $session['imp:uidvalid/' . $mailbox]
: null;
- $ptr['uidvalid'][$mailbox] = $status['uidvalidity'];
+ $session['imp:uidvalid/' . $mailbox] = $status['uidvalidity'];
$this->_uidvalid[$mailbox] = (!is_null($val) && ($status['uidvalidity'] != $val));
}
throw new IMP_Exception(_("Mailbox structure on server has changed."));
}
- return $_SESSION['imp']['cache']['uidvalid'][$mailbox];
+ return $session['imp:uidvalid/' . $mailbox];
}
/**
public function getNamespaceList()
{
try {
- return $this->ob->getNamespaces(!empty($_SESSION['imp']['imap']['namespace']) ? $_SESSION['imp']['imap']['namespace'] : array());
+ return $this->ob->getNamespaces($GLOBALS['session']['imp:imap_namespace;array']);
} catch (Horde_Imap_Client_Exception $e) {
// @todo Error handling
return array();
*/
public function getNamespace($mailbox = null, $personal = false)
{
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
return null;
}
*/
public function defaultNamespace()
{
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
return null;
}
*/
public function __construct()
{
- if ($_SESSION['imp']['protocol'] != 'imap') {
+ if ($GLOBALS['session']['imp:protocol'] != 'imap') {
throw new IMP_Exception(_("ACL requires an IMAP server."));
}
- if (empty($_SESSION['imp']['imap']['acl'])) {
+ if (!$GLOBALS['session']['imp:imap_acl']) {
throw new IMP_Exception(_("ACLs not configured for this server."));
}
}
}
- if ($_SESSION['imp']['protocol'] == 'imap') {
+ if ($GLOBALS['session']['imp:protocol'] == 'imap') {
$flaglist = empty($options['flags'])
? array()
: array_map('strtolower', $options['flags']);
*/
public function __construct()
{
- if ($_SESSION['imp']['protocol'] == 'imap') {
+ if ($GLOBALS['session']['imp:protocol'] == 'imap') {
$ns = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->getNamespaceList();
$ptr = reset($ns);
$this->_delimiter = $ptr['delimiter'];
*/
public function init()
{
- $unsubmode = (($_SESSION['imp']['protocol'] == 'pop') ||
- !$GLOBALS['prefs']->getValue('subscribe') ||
- $_SESSION['imp']['showunsub']);
+ global $conf, $injector, $prefs, $session;
+
+ $unsubmode = (($session['imp:protocol'] == 'pop') ||
+ !$prefs->getValue('subscribe') ||
+ $session['imp:showunsub']);
/* Reset class variables to the defaults. */
$this->changed = true;
/* Add INBOX and exit if folders aren't allowed or if we are using
* POP3. */
- if (empty($GLOBALS['conf']['user']['allow_folders']) ||
- ($_SESSION['imp']['protocol'] == 'pop')) {
+ if (empty($conf['user']['allow_folders']) ||
+ ($session['imp:protocol'] == 'pop')) {
$this->_insertElt($this->_makeElt('INBOX', self::ELT_IS_SUBSCRIBED));
return;
}
/* Add namespace elements. */
foreach ($this->_namespaces as $key => $val) {
- if ($val['type'] != 'personal' &&
- $GLOBALS['prefs']->getValue('tree_view')) {
+ if (($val['type'] != 'personal') && $prefs->getValue('tree_view')) {
$elt = $this->_makeElt(
($val['type'] == 'other') ? self::OTHER_KEY : self::SHARED_KEY,
self::ELT_NOSELECT | self::ELT_NAMESPACE | self::ELT_NONIMAP | self::ELT_NOSHOW
$this->_insert($this->_getList($this->_showunsub), $this->_showunsub ? null : true);
/* Add virtual folders to the tree. */
- $imp_search = $GLOBALS['injector']->getInstance('IMP_Search');
+ $imp_search = $injector->getInstance('IMP_Search');
$imp_search->setIteratorFilter(IMP_Search::LIST_VFOLDER);
$this->updateVFolders(iterator_to_array($imp_search));
}
? $label
: substr($label, $pos + 1);
- if ($_SESSION['imp']['protocol'] != 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] != 'pop') {
try {
$this->_setInvisible($elt, !Horde::callHook('display_folder', array($elt['v']), 'imp'));
} catch (Horde_Exception_HookNotSet $e) {}
throw new IMP_Exception('No server parameters found.');
}
+ $aparams = $GLOBALS['session']['imp:imap_admin;array'];
+
$params = array_merge(
$params,
- $_SESSION['imp']['imap']['admin']['params'],
+ (isset($aparams['params']) ? $aparams['params'] : array()),
array(
'default_user' => $GLOBALS['registry']->getAuth(),
'logger' => $injector->getInstance('Horde_Log_Logger')
*/
public function shutdown()
{
+ $cache = $GLOBALS['session']['imp:compose_cache:array'];
+ $changed = false;
$obs = $this->_injector->getInstance('Horde_SessionObjects');
foreach ($this->_instances as $key => $val) {
case 'changed':
$val->changed = '';
$obs->overwrite($key, $val, false);
-
- $_SESSION['imp']['cache']['compose'][$key] = 1;
+ $cache[$key] = 1;
+ $changed = true;
break;
case 'deleted':
$obs->prune($key);
- unset($_SESSION['imp']['cache']['compose'][$key]);
+ unset($cache[$key]);
+ $changed = true;
break;
}
+
+ }
+
+ if ($changed) {
+ $GLOBALS['session']['imp:compose_cache'] = $cache;
}
}
*/
public function create($id = null)
{
- if (is_null($id)) {
- $id = isset($_SESSION['imp'])
- ? $_SESSION['imp']['server_key']
- : 'default';
+ if (is_null($id) && !($id = $GLOBALS['session']['imp:server_key'])) {
+ $id = 'default';
}
if (!isset($this->_instances[$id])) {
*/
public function create(Horde_Injector $injector)
{
+ global $session;
+
$instance = null;
/* If an IMP_Imap_Tree object is currently stored in the cache,
* re-create that object. Else, create a new instance. */
- if (empty($_SESSION['imp']['cache']['tree'])) {
- $_SESSION['imp']['cache']['tree'] = strval(new Horde_Support_Randomid());
- } else {
+ if (isset($session['imp:tree'])) {
/* Since IMAP tree generation is so expensive/time-consuming,
* fallback to storing in the session even if no permanent cache
* backend is setup. */
if ($cache instanceof Horde_Cache_Null) {
$cache = $injector->getInstance('Horde_Cache_Session');
}
+
try {
- $instance = @unserialize($cache->get($_SESSION['imp']['cache']['tree'], 86400));
+ $instance = @unserialize($cache->get($session['imp:tree'], 86400));
} catch (Exception $e) {
Horde::logMessage('Could not unserialize stored IMP_Imap_Tree object.', 'DEBUG');
}
+ } else {
+ $session['imp:tree'] = strval(new Horde_Support_Randomid());
}
if (!($instance instanceof IMP_Imap_Tree)) {
if ($cache instanceof Horde_Cache_Null) {
$cache = $injector->getInstance('Horde_Cache_Session');
}
- $cache->set($_SESSION['imp']['cache']['tree'], serialize($instance), 86400);
+ $cache->set($GLOBALS['session']['imp:tree'], serialize($instance), 86400);
}
}
/* Force the SMTP host and port value to the current SMTP server if
* one has been selected for this connection. */
- if (!empty($_SESSION['imp']['smtp'])) {
- $params = array_merge($params, $_SESSION['imp']['smtp']);
- }
+ $params = array_merge($params, $GLOBALS['session']['imp:smtp;array']);
/* If SMTP authentication has been requested, use either the username
* and password provided in the configuration or populate the username
case 'imp':
case 'mimp':
- $ob = null;
- if (isset($_SESSION['imp']['cache']['imp_mailbox'][$mailbox])) {
- try {
- $ob = @unserialize($_SESSION['imp']['cache']['imp_mailbox'][$mailbox]);
- } catch (Exception $e) {}
+ try {
+ $ob = $GLOBALS['session']['imp:imp_mailbox/' . $mailbox];
+ } catch (Exception $e) {
+ $ob = null;
}
- if (!$ob) {
+ if (is_null($ob)) {
$ob = new IMP_Mailbox_List_Track($mailbox);
}
break;
* unseen flag). */
foreach ($this->_instances as $key => $val) {
if ($val->changed) {
- $_SESSION['imp']['cache']['imp_mailbox'][$key] = serialize($val);
+ $GLOBALS['session']['imp:imp_mailbox/' . $key] = $val;
}
}
}
* Return the IMP_Quota instance.
*
* @return IMP_Quota The singleton instance.
+ * @throws IMP_Exception
*/
public function create(Horde_Injector $injector)
{
- $driver = $_SESSION['imp']['imap']['quota']['driver'];
- $params = isset($_SESSION['imp']['imap']['quota']['params'])
- ? $_SESSION['imp']['imap']['quota']['params']
+ $qparams = $GLOBALS['session']['imp:imap_quota'];
+
+ if (!isset($qparams['driver'])) {
+ throw new IMP_Exception('Quota config missing driver parameter.');
+ }
+ $driver = $qparams['driver'];
+ $params = isset($qparams['params'])
+ ? $qparams['params']
: array();
/* If 'password' exists in params, it has been encrypted in the
$params['password'] = $secret->read($secret->getKey('imp'), $params['password']);
}
+ $imap_ob = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
+
switch (Horde_String::lower($driver)) {
case 'imap':
- $params['imap_ob'] = $injector->getInstance('IMP_Injector_Factory_Imap')->create();
+ $params['imap_ob'] = $imap_ob;
$params['mbox'] = $injector->getInstance('IMP_Search')->isSearchMbox(IMP::$mailbox)
? 'INBOX'
: IMP::$mailbox;
break;
}
- $params['username'] = $injector->getInstance('IMP_Injector_Factory_Imap')->create()->getParam('username');
+ $params['username'] = $imap_ob->getParam('username');
return IMP_Quota::factory($driver, $params);
}
*/
public function create(Horde_Injector $injector)
{
- $instance = null;
-
- if (!empty($_SESSION['imp']['search'])) {
- try {
- $instance = @unserialize($_SESSION['imp']['search']);
- } catch (Exception $e) {
- Horde::logMessage('Could not unserialize stored IMP_Search object.', 'DEBUG');
- }
+ try {
+ $instance = $GLOBALS['session']['imp:search'];
+ } catch (Exception $e) {
+ Horde::logMessage('Could not unserialize stored IMP_Search object.', 'DEBUG');
+ $instance = null;
}
if (is_null($instance)) {
$instance = new IMP_Search();
}
- register_shutdown_function(array($this, 'shutdown'), $instance, $injector);
+ register_shutdown_function(array($this, 'shutdown'), $instance);
return $instance;
}
/**
* Store serialized version of object in the current session.
*
- * @param IMP_Search $instance Tree object.
- * @param Horde_Injector $injector Injector object.
+ * @param IMP_Search $instance Search object.
*/
- public function shutdown($instance, $injector)
+ public function shutdown($instance)
{
/* Only need to store the object if the object has changed. */
if ($instance->changed) {
- $_SESSION['imp']['search'] = serialize($instance);
+ $GLOBALS['session']['imp:search'] = $instance;
}
}
$threadob = $this->getThreadOb();
$this->_sorted = $threadob->messageList((bool)$sortpref['dir']);
} else {
- if (($_SESSION['imp']['protocol'] != 'pop') &&
+ if (($GLOBALS['session']['imp:protocol'] != 'pop') &&
IMP::hideDeletedMsgs($this->_mailbox)) {
$query = new Horde_Imap_Client_Search_Query();
$query->flag('\\deleted', false);
$page = ceil($start / $page_size);
} else {
/* Search for the last visited page first. */
- if (isset($_SESSION['imp']['cache']['mbox_page'][$this->_mailbox])) {
- $page = $_SESSION['imp']['cache']['mbox_page'][$this->_mailbox];
+ if (isset($GLOBALS['session']['imp:mbox_page/' . $this->_mailbox])) {
+ $page = $GLOBALS['session']['imp:mbox_page/' . $this->_mailbox];
} elseif ($this->_searchmbox) {
$page = 1;
} else {
}
/* Store the page value now. */
- $_SESSION['imp']['cache']['mbox_page'][$this->_mailbox] = $ret['page'];
+ $GLOBALS['session']['imp:mbox_page/' . $this->_mailbox] = $ret['page'];
return $ret;
}
{
if (is_null($this->_threadob)) {
try {
- $this->_threadob = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->thread($this->_mailbox, array('criteria' => $_SESSION['imp']['imap']['thread']));
+ $this->_threadob = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create()->thread($this->_mailbox, array('criteria' => $GLOBALS['session']['imp:imap_thread']));
} catch (Horde_Imap_Client_Exception $e) {
$GLOBALS['notification']->push($e);
return new Horde_Imap_Client_Thread(array(), 'uid');
*/
public function __construct()
{
- if ($_SESSION['imp']['protocol'] == 'pop') {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
$this->_usepop = true;
}
}
$data = $this->_IMPrender(true);
/* Catch case where using mimp on a javascript browser. */
- if ($_SESSION['imp']['view'] != 'mimp') {
+ if ($GLOBALS['session']['imp:view'] != 'mimp') {
$uid = strval(new Horde_Support_Randomid());
Horde::addScriptFile('imp.js', 'imp');
/* Don't do IMP DOM processing if in mimp mode or converting to
* text. */
- if (($_SESSION['imp']['view'] == 'mimp') ||
+ if (($GLOBALS['session']['imp:view'] == 'mimp') ||
(!$inline && Horde_Util::getFormData('convert_text'))) {
$this->_imptmp = null;
} else {
/* Sanitize the HTML. */
$data = $this->_cleanHTML($data, array(
- 'noprefetch' => ($inline && ($_SESSION['imp']['view'] != 'mimp')),
+ 'noprefetch' => ($inline && ($GLOBALS['session']['imp:view'] != 'mimp')),
'phishing' => $inline
));
}
// Create the HTML to display the iCal file.
- if ($_SESSION['imp']['view'] != 'imp' && !$full) {
+ if (!$full && ($GLOBALS['session']['imp:view'] != 'imp')) {
$url = $this->getConfigParam('imp_contents')->urlView($this->_mimepart, 'view_attach', array('params' => array('ajax' => 1, 'mode' => IMP_Contents::RENDER_INLINE)));
$onsubmit = ' onsubmit="DimpCore.submitForm(\'impMimeViewerItip\');return false"';
} else {
? 'mimePartWrapValid'
: 'mimePartWrapInvalid';
} else {
- switch ($_SESSION['imp']['view']) {
+ switch ($GLOBALS['session']['imp:view']) {
case 'imp':
$status[] = Horde::link(IMP::selfUrl()->add(array('pgp_verify_msg' => 1))) . _("Click HERE to verify the message.") . '</a>';
break;
$text = IMP::filterText($text);
/* Done processing if in mimp mode. */
- if ($_SESSION['imp']['view'] == 'mimp') {
+ if ($GLOBALS['session']['imp:view'] == 'mimp') {
return array(
$mime_id => array(
'data' => $text,
$status[] = $e->getMessage();
}
} else {
- switch ($_SESSION['imp']['view']) {
+ switch ($GLOBALS['session']['imp:view']) {
case 'imp':
$status[] = Horde::link(IMP::selfUrl()->add('smime_verify_msg', 1)) . _("Click HERE to verify the data.") . '</a>';
break;
}
try {
- $ob = Horde_Mime_Address::parseAddressList($address, array('defserver' => $_SESSION['imp']['maildomain']));
+ $ob = Horde_Mime_Address::parseAddressList($address, array('defserver' => $GLOBALS['session']['imp:maildomain']));
} catch (Horde_Mime_Exception $e) {
throw new Horde_Exception (_("Your From address is not a valid email address. This can be fixed in your Personal Information preferences page."));
}
}
if (!strstr($val, '@')) {
- $val .= '@' . $_SESSION['imp']['maildomain'];
+ $val .= '@' . $GLOBALS['session']['imp:maildomain'];
}
$this->_cached['fromList'][$ident] = $val;
break;
case 'delmove':
- if (isset($_SESSION['imp']['protocol']) &&
- ($_SESSION['imp']['protocol'] == 'pop')) {
+ if ($GLOBALS['session']['imp:protocol'] == 'pop') {
$tmp = $ui->prefs['delete_spam_after_report']['enum'];
unset($tmp[2]);
$ui->override['delete_spam_after_report'] = $tmp;
*/
public function prefsInit($ui)
{
- global $conf, $prefs, $registry;
+ global $conf, $prefs, $registry, $session;
- $pop3 = (isset($_SESSION['imp']['protocol']) && ($_SESSION['imp']['protocol'] == 'pop'));
+ $pop3 = ($session['imp:protocol'] == 'pop');
switch ($ui->group) {
case 'accounts':
break;
case 'filters':
- if (empty($_SESSION['imp']['filteravail'])) {
+ if (!$session['imp:filteravail']) {
$ui->suppress[] = 'filter_on_login';
$ui->suppress[] = 'filter_on_display';
$ui->suppress[] = 'filter_any_mailbox';
}
if ($prefs->isLocked('signature_html') ||
- empty($_SESSION['imp']['rteavail'])) {
+ !$session['imp:rteavail']) {
$ui->suppress[] = 'signature_html_select';
} else {
Horde::addScriptFile('signaturehtml.js', 'imp');
*/
public function prefsCallback($ui)
{
- global $prefs;
+ global $notification, $prefs, $registry, $session;
/* Always check to make sure we have a valid trash folder if delete to
* trash is active. */
if (($prefs->isDirty('use_trash') || $prefs->isDirty('trash_folder')) &&
$prefs->getValue('use_trash') &&
!$prefs->getValue('trash_folder')) {
- $GLOBALS['notification']->push(_("You have activated move to Trash but no Trash folder is defined. You will be unable to delete messages until you set a Trash folder in the preferences."), 'horde.warning');
+ $notification->push(_("You have activated move to Trash but no Trash folder is defined. You will be unable to delete messages until you set a Trash folder in the preferences."), 'horde.warning');
}
switch ($ui->group) {
$maildomain = preg_replace('/[^-\.a-z0-9]/i', '', $prefs->getValue('mail_domain'));
$prefs->setValue('maildomain', $maildomain);
if (!empty($maildomain)) {
- $_SESSION['imp']['maildomain'] = $maildomain;
+ $session['imp:maildomain'] = $maildomain;
}
}
break;
case 'dimp':
if ($prefs->isDirty('dynamic_view')) {
- $_SESSION['imp']['view'] = $prefs->getValue('dynamic_view')
+ $session['imp:view'] = $prefs->getValue('dynamic_view')
? 'dimp'
: ($GLOBALS['browser']->isMobile() ? 'mimp' : 'imp');
}
case 'display':
if ($prefs->isDirty('tree_view')) {
- $GLOBALS['registry']->getApiInstance('imp', 'application')->mailboxesChanged();
+ $registry->getApiInstance('imp', 'application')->mailboxesChanged();
}
break;
case 'server':
if ($prefs->isDirty('subscribe')) {
- $GLOBALS['registry']->getApiInstance('imp', 'application')->mailboxesChanged();
+ $registry->getApiInstance('imp', 'application')->mailboxesChanged();
}
break;
}
$t->set('canedit', $canEdit);
- if (empty($_SESSION['imp']['imap']['admin'])) {
- $t->set('noadmin', true);
- } else {
+ if ($session['imp:imap_admin']) {
$current_users = array_keys($curr_acl);
$new_user = array();
$new_user[] = htmlspecialchars($user);
}
$t->set('new_user', $new_user);
+ } else {
+ $t->set('noadmin', true);
}
$rightsval = array();
'$("create_pgp_key").observe("click", function(e) { if (!window.confirm(' . Horde_Serialize::serialize(_("Key generation may take a long time to complete. Continue with key generation?"), Horde_Serialize::JSON, 'UTF-8') . ')) { e.stop(); } })'
), 'dom');
- if ($_SESSION['imp']['file_upload']) {
+ if ($GLOBALS['session']['imp:file_upload']) {
$cacheSess = $GLOBALS['injector']->getInstance('Horde_SessionObjects');
Horde::addInlineScript(array(
'$("import_pgp_personal").observe("click", function(e) { ' . Horde::popupJs($pgp_url, array('params' => array('actionID' => 'import_personal_public_key', 'reload' => $cacheSess->storeOid($ui->selfUrl()->setRaw(true), false)), 'height' => 275, 'width' => 750, 'urlencode' => true)) . '; e.stop(); })'
$t->set('pubkey_list', $plist);
}
- if ($_SESSION['imp']['file_upload']) {
+ if ($GLOBALS['session']['imp:file_upload']) {
$t->set('can_import', true);
$t->set('no_source', !$GLOBALS['prefs']->getValue('add_source'));
if (!$t->get('no_source')) {
Horde::addInlineScript(array(
'$("delete_smime_personal").observe("click", function(e) { if (!window.confirm(' . Horde_Serialize::serialize(_("Are you sure you want to delete your keypair? (This is NOT recommended!)"), Horde_Serialize::JSON, 'UTF-8') . ')) { e.stop(); } })'
), 'dom');
- } elseif ($_SESSION['imp']['file_upload']) {
+ } elseif ($GLOBALS['session']['imp:file_upload']) {
$cacheSess = $GLOBALS['injector']->getInstance('Horde_SessionObjects');
$t->set('import-cert-help', Horde_Help::link('imp', 'smime-import-personal-certs'));
$t->set('pubkey_list', $plist);
}
- if ($_SESSION['imp']['file_upload']) {
+ if ($GLOBALS['session']['imp:file_upload']) {
$t->set('can_import', true);
$t->set('no_source', !$GLOBALS['prefs']->getValue('add_source'));
if (!$t->get('no_source')) {
if (isset($data['sources'])) {
$prefs->setValue('search_sources', $data['sources']);
- unset($_SESSION['imp']['cache']['ac_ajax']);
+ unset($GLOBALS['session']['imp:ac_ajax']);
$updated = true;
}
$imap_ob = $GLOBALS['injector']->getInstance('IMP_Injector_Factory_Imap')->create();
$userDetails = $this->_getUserDetails(
$this->_params['username'],
- $_SESSION['imp']['maildomain']
+ $GLOBALS['session']['imp:maildomain']
);
if ($userDetails !== false) {
* Although there is a fallback to a PHP-based display sort, for
* performance reasons only do a display sort if it is supported
* on the server. */
- if (($_SESSION['imp']['protocol'] == 'imap') && !empty($opts['sort'])) {
+ if (($GLOBALS['session']['imp:protocol'] == 'imap') &&
+ !empty($opts['sort'])) {
$sort_cap = $imp_imap->queryCapability('SORT');
if (is_array($sort_cap) && in_array('DISPLAY', $sort_cap)) {
}
foreach ($recipients as $addresses) {
- $addresses = Horde_Mime_Address::bareAddress($addresses, $_SESSION['imp']['maildomain'], true);
+ $addresses = Horde_Mime_Address::bareAddress($addresses, $GLOBALS['session']['imp:maildomain'], true);
foreach ($addresses as $recipient) {
$this->_log($action, $message_id, $recipient, $success);
}
/* Add the list of editable tasklists to the list. */
if ($this->getOption('inc_tasklists') &&
- !empty($_SESSION['imp']['tasklistavail'])) {
+ $GLOBALS['session']['imp:tasklistavail']) {
try {
$tasklists = $registry->call('tasks/listTasklists', array(false, Horde_Perms::EDIT));
/* Add the list of editable notepads to the list. */
if ($this->getOption('inc_notepads') &&
- !empty($_SESSION['imp']['notepadavail'])) {
+ $GLOBALS['session']['imp:notepadavail']) {
try {
$notepads = $registry->call('notes/listNotepads', array(false, Horde_Perms::EDIT));
foreach ($poll as $folder) {
if (isset($status[$folder]) &&
(($folder == 'INBOX') ||
- ($_SESSION['imp']['protocol'] != 'pop')) &&
+ ($GLOBALS['session']['imp:protocol'] != 'pop')) &&
(empty($this->_params['show_unread']) ||
!empty($status[$folder]['unseen']))) {
if (!empty($status[$folder]['recent'])) {
$add_link = null;
$addr_array = array();
- $mimp_view = ($_SESSION['imp']['view'] == 'mimp');
+ $mimp_view = ($GLOBALS['session']['imp:view'] == 'mimp');
/* Set up the add address icon link if contact manager is
* available. */
}
}
- if ($_SESSION['imp']['view'] == 'mimp') {
+ if ($GLOBALS['session']['imp:view'] == 'mimp') {
return implode(', ', $addr_array);
}
*/
public function moveAfterAction()
{
- return (($_SESSION['imp']['protocol'] != 'pop') &&
+ return (($GLOBALS['session']['imp:protocol'] != 'pop') &&
!IMP::hideDeletedMsgs(IMP::$mailbox) &&
!$GLOBALS['prefs']->getValue('use_trash'));
}
$result['js'][] = 'DIMP.conf_compose.qreply = 1';
}
- if ($_SESSION['imp']['rteavail']) {
+ if ($GLOBALS['session']['imp:rteavail']) {
$t->set('compose_html', $prefs->getValue('compose_html'));
$t->set('rte', true);
/* Run filters now. */
if (!$is_search &&
- !empty($_SESSION['imp']['filteravail']) &&
+ $GLOBALS['session']['imp:filteravail'] &&
!empty($args['applyfilter']) ||
(($mbox == 'INBOX') &&
$GLOBALS['prefs']->getValue('filter_on_display'))) {
while (list(,$ob) = each($overview['overview'])) {
/* Initialize the header fields. */
$msg = array(
- 'imapuid' => (($_SESSION['imp']['protocol'] == 'pop') ? $ob['uid'] : intval($ob['uid'])),
+ 'imapuid' => (($GLOBALS['session']['imp:protocol'] == 'pop') ? $ob['uid'] : intval($ob['uid'])),
'view' => $ob['mailbox'],
);
// 'rs' = run search
case 'rs':
- if (!empty($vars->search) &&
- ($_SESSION['imp']['protocol'] == 'imap')) {
+ if (!empty($vars->search) && ($session['imp:protocol'] == 'imap')) {
/* Create the search query and reset the global mailbox variable. */
$q_ob = $imp_search->createQuery(
array(new IMP_Search_Element_Text($vars->search, false)),
}
/* Add search link. */
-if ($_SESSION['imp']['protocol'] == 'imap') {
+if ($session['imp:protocol'] == 'imap') {
if ($search_mbox) {
$orig_mbox = reset($imp_search[IMP::$mailbox]->mboxes);
$menu[] = array(sprintf(_("New Search in %s"), IMP::getLabel($orig_mbox)), IMP::generateIMPUrl('mailbox-mimp.php', $orig_mbox)->add('a', 's'));
$mailbox_token = Horde::getRequestToken('imp.mailbox');
/* Deal with filter options. */
-if (!$readonly && !empty($_SESSION['imp']['filteravail'])) {
+if (!$readonly && $session['imp:filteravail']) {
/* Only allow filter on display for INBOX. */
if ((IMP::$mailbox == 'INBOX') &&
$prefs->getValue('filter_on_display')) {
$hdr_template->set('filter_img', Horde::img('filters.png', _("Apply Filters")));
}
$hdr_template->set('search', false);
-if ($_SESSION['imp']['protocol'] != 'pop') {
+if ($session['imp:protocol'] != 'pop') {
$hdr_template->set('search_img', Horde::img('search.png', _("Search")));
if (!$search_mbox) {
$n_template->set('sessiontag', Horde_Util::formInput());
$n_template->set('use_folders', $conf['user']['allow_folders']);
$n_template->set('readonly', $readonly);
- $n_template->set('use_pop', $_SESSION['imp']['protocol'] == 'pop');
+ $n_template->set('use_pop', $session['imp:protocol'] == 'pop');
if (!$n_template->get('use_pop')) {
$tmp = $imp_flags->getFlagList($search_mbox ? null : IMP::$mailbox);
$envelope = $fetch_ret[$uid]['envelope'];
$flags = $flags_ret[$uid]['flags'];
$mime_headers = reset($fetch_ret[$uid]['headertext']);
-$use_pop = ($_SESSION['imp']['protocol'] == 'pop');
+$use_pop = ($session['imp:protocol'] == 'pop');
/* Parse the message. */
try {
$envelope = $fetch_ret[$uid]['envelope'];
$flags = $flags_ret[$uid]['flags'];
$mime_headers = reset($fetch_ret[$uid]['headertext']);
-$use_pop = ($_SESSION['imp']['protocol'] == 'pop');
+$use_pop = ($session['imp:protocol'] == 'pop');
/* Get the title/mailbox label of the mailbox page. */
$page_label = IMP::getLabel(IMP::$mailbox);
));
/* This is an IMP-only script. */
-if ($_SESSION['imp']['view'] != 'imp') {
+if ($session['imp:view'] != 'imp') {
exit;
}
-if ($_SESSION['imp']['protocol'] == 'pop') {
+if ($session['imp:protocol'] == 'pop') {
$notification->push(_("Searching is not available with a POP3 server."), 'horde.error');
$from_message_page = true;
$actionID = $start = null;
/* Load basic search if javascript is not enabled or searching is not allowed
* (basic page will do the required redirection in the latter case). */
if (!$browser->hasFeature('javascript') ||
- ($_SESSION['imp']['protocol'] == 'pop')) {
+ ($session['imp:protocol'] == 'pop')) {
require IMP_BASE . '/search-basic.php';
exit;
}
$imp_search = $injector->getInstance('IMP_Search');
$vars = Horde_Variables::getDefaultVariables();
-$dimp_view = ($_SESSION['imp']['view'] == 'dimp');
+$dimp_view = ($session['imp:view'] == 'dimp');
$js_vars = array();
$search_mailbox = isset($vars->search_mailbox)
? $vars->search_mailbox
$t = $injector->createInstance('Horde_Template');
$t->setOption('gettext', true);
$t->set('action', Horde::url('search.php'));
-$t->set('virtualfolder', $_SESSION['imp']['protocol'] != 'pop');
+$t->set('virtualfolder', $session['imp:protocol'] != 'pop');
/* Determine if we are editing a search query. */
if ($vars->edit_query && $imp_search->isSearchMbox($vars->edit_query)) {
$has_whitelist = $registry->hasMethod('mail/whitelistFrom');
// Quota information
-$show_quota = (isset($_SESSION['imp']['imap']['quota']) && is_array($_SESSION['imp']['imap']['quota']));
+$show_quota = $session['imp:imap_quota'];
// Get application folders list.
$application_folders = array();
<?php echo _simpleButton('composelink', _("_New Message"), 'dimpactionCompose') ?>
<?php echo _simpleButton('checkmaillink', _("_Get Mail"), 'dimpactionCheckmail') ?>
<?php echo _simpleButton('alertsloglink', _("Alerts _Log"), 'infoIcon') ?>
-<?php if (!empty($_SESSION['imp']['filteravail'])): ?>
+<?php if ($session['imp:filteravail']): ?>
<?php echo _simpleButton('applyfilterlink', _("Apply Filters"), 'filtersIcon') ?>
<?php endif; ?>
</ul>
</ul>
</div>
<?php endif; ?>
-<?php if ($_SESSION['imp']['protocol'] != 'pop'): ?>
+<?php if ($session['imp:protocol'] != 'pop'): ?>
<div class="sepfull"></div>
<ul class="folderlist" id="normalfolders">
<li class="folder" id="folderopts">
</div>
<div class="dimpActions">
-<?php if ($_SESSION['imp']['protocol'] != 'pop'): ?>
+<?php if ($session['imp:protocol'] != 'pop'): ?>
<div id="qsearch">
<span id="qsearch_icon"></span>
<form action="#" method="post">
<a id="ctx_mboxsort_none"><?php echo _("Clear Sort") ?></a>
</div>
-<?php if ($_SESSION['imp']['protocol'] != 'pop'): ?>
+<?php if ($session['imp:protocol'] != 'pop'): ?>
<div class="context" id="ctx_qsearchopts" style="display:none">
<a id="ctx_qsearchopts_by"><?php echo _("Search By") ?></a>
<div class="sep"></div>
'login_view' => $GLOBALS['prefs']->getValue('dimp_login_view'),
'mbox_expand' => intval($GLOBALS['prefs']->getValue('nav_expanded') == 2),
'name' => $GLOBALS['registry']->get('name', 'imp'),
- 'pop3' => intval((isset($_SESSION['imp']) && ($_SESSION['imp']['protocol'] == 'pop'))),
+ 'pop3' => intval($GLOBALS['session']['imp:protocol'] == 'pop'),
'popup_height' => 610,
'popup_width' => 820,
'preview_pref' => $GLOBALS['prefs']->getValue('dimp_show_preview'),
$code = array(
/* Variables used in core javascript files. */
'conf' => array(
- 'pop3' => intval((isset($_SESSION['imp']) && ($_SESSION['imp']['protocol'] == 'pop'))),
+ 'pop3' => intval($GLOBALS['session']['imp:protocol'] == 'pop'),
'fixed_folders' => empty($GLOBALS['conf']['server']['fixed_folders'])
? array()
: $GLOBALS['conf']['server']['fixed_folders'],