* This contains functions that display mailbox information, such as the
* table row that has sender, date, subject, etc...
*
- * @copyright 1999-2010 The SquirrelMail Project Team
+ * @copyright 1999-2018 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @param string $mailbox mailbox to select and retrieve message headers from
* @param array $aConfig array with system config settings and incoming vars
* @param array $aProps mailbox specific properties
+ * @param boolean $handle_errors When TRUE, IMAP errors
+ * are handled herein, causing
+ * an error to be displayed on
+ * screen and execution to stop
+ * and when FALSE, error status
+ * is returned to the caller
+ * (OPTIONAL; default is TRUE)
*
* @return array $aMailbox mailbox array with all relevant information
+ * (if $handle_errors is false and there was an
+ * error, the array will be empty)
*
* @since 1.5.1
* @author Marc Groot Koerkamp
*/
-function sqm_api_mailbox_select($imapConnection,$account,$mailbox,$aConfig,$aProps) {
+function sqm_api_mailbox_select($imapConnection,$account,$mailbox,$aConfig,$aProps,$handle_errors=true) {
/**
* NB: retrieve this from the session before accessing this function
$iSetIndx = $aConfig['setindex'];
- $aMbxResponse = sqimap_mailbox_select($imapConnection, $mailbox);
+ $aMbxResponse = sqimap_mailbox_select($imapConnection, $mailbox, $handle_errors);
+ if (empty($aMbxResponse))
+ return $aMbxResponse;
if ($mailbox_cache) {
if (isset($mailbox_cache[$account.'_'.$mailbox])) {
$sMailbox = (isset($aAddr[SQM_ADDR_MAILBOX])) ? $aAddr[SQM_ADDR_MAILBOX] : '';
$sHost = (isset($aAddr[SQM_ADDR_HOST])) ? $aAddr[SQM_ADDR_HOST] : '';
if ($sPersonal) {
- $title .= htmlspecialchars($sMailbox.'@'.$sHost).', ';
+ $title .= sm_encode_html_special_chars($sMailbox.'@'.$sHost).', ';
} else {
// if $value gets truncated we need to add the addresses with no
// personal name as well
- $title_maybe .= htmlspecialchars($sMailbox.'@'.$sHost).', ';
+ $title_maybe .= sm_encode_html_special_chars($sMailbox.'@'.$sHost).', ';
}
}
if ($title) {
$sTmp = $sTrunc;
}
}
- $value = ($sTmp) ? $sTmp : $sUnknown;
+ $value = ($sTmp) ? (substr($sTmp, 0, 6) == '"' && substr($sTmp, -6) == '"' ? substr(substr($sTmp, 0, -6), 6) : $sTmp) : $sUnknown;
break;
case SQM_COL_SUBJ:
// subject is mime encoded, decode it.
if (isset($aColumnDesc[$k]['truncate']) && $aColumnDesc[$k]['truncate']) {
$sTmp = sm_truncate_string($value, $aColumnDesc[$k]['truncate']-$iIndent, '...', TRUE);
// drop any double spaces since these will be displayed in the title
- $title = ($sTmp != $value) ? preg_replace('/\s{2,}/', ' ', $value) : '';
+ // Nah, it's nice to always have a roll-over
+ //$title = ($sTmp != $value) ? preg_replace('/\s{2,}/', ' ', $value) : '';
+ $title = preg_replace('/\s{2,}/', ' ', $value);
$value = $sTmp;
}
/* generate the link to the message */
break;
case SQM_COL_DATE:
case SQM_COL_INT_DATE:
- $value = getDateString(getTimeStamp(explode(' ',trim($value))));
+ $value = getTimeStamp(explode(' ',trim($value)));
+ $title = getDateString($value, TRUE);
+ $value = getDateString($value);
break;
case SQM_COL_FLAGS:
$aFlagColumn = array('seen' => false,
$trash_folder) ? true : false; //
$showUndelete = (!$aMailbox['AUTO_EXPUNGE'] && $aMailbox['RIGHTS'] != 'READ-ONLY' &&
- in_array('\\deleted',$aMailbox['PERMANENTFLAGS'], true) && !$trash_folder) ? true : false;
+ in_array('\\deleted',$aMailbox['PERMANENTFLAGS'], true) /* trash folder unrelated methinks: && !$trash_folder*/) ? true : false;
$showMove = ($aMailbox['RIGHTS'] != 'READ-ONLY') ? true : false;
$showExpunge = (!$aMailbox['AUTO_EXPUNGE'] && $aMailbox['RIGHTS'] != 'READ-ONLY' &&
in_array('\\deleted',$aMailbox['PERMANENTFLAGS'], true)) ? true : false;
// don't do anything to any messages until we have done security check
// FIXME: not sure this code really belongs here, but there's nowhere else to put it with this architecture
sqgetGlobalVar('smtoken', $submitted_token, SQ_FORM, '');
- sm_validate_security_token($submitted_token, 3600, TRUE);
+ sm_validate_security_token($submitted_token, -1, TRUE);
// make sure message UIDs are sanitized (BIGINT)
foreach ($aUid as $i => $uid)