projects
/
squirrelmail.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cache $PHP_SELF value, add ability to make custom changes to $PHP_SELF by putting...
[squirrelmail.git]
/
functions
/
imap_mailbox.php
diff --git
a/functions/imap_mailbox.php
b/functions/imap_mailbox.php
index f2fb50270e450cba7617c61c3da8c3b748a0827c..9b2f2b84a54d6ce7da38cbb7cad3fc5d195edf5e 100755
(executable)
--- a/
functions/imap_mailbox.php
+++ b/
functions/imap_mailbox.php
@@
-5,7
+5,7
@@
*
* This implements all functions that manipulate mailboxes
*
*
* This implements all functions that manipulate mailboxes
*
- * @copyright 1999-20
11
The SquirrelMail Project Team
+ * @copyright 1999-20
20
The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
@@
-410,10
+410,18
@@
function sqimap_mailbox_exists ($imap_stream, $mailbox, $mailboxlist=null) {
* Before 1.3.0 used more arguments and returned data depended on those arguments.
* @param stream $imap_stream imap connection resource
* @param string $mailbox mailbox name
* Before 1.3.0 used more arguments and returned data depended on those arguments.
* @param stream $imap_stream imap connection resource
* @param string $mailbox mailbox name
+ * @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 results of select command (on success - permanentflags, flags and rights)
* @return array results of select command (on success - permanentflags, flags and rights)
+ * (on failure (and when $handle_errors is false), empty array)
* @since 1.0 or older
*/
* @since 1.0 or older
*/
-function sqimap_mailbox_select ($imap_stream, $mailbox) {
+function sqimap_mailbox_select ($imap_stream, $mailbox
, $handle_errors=true
) {
if (empty($mailbox)) {
return;
}
if (empty($mailbox)) {
return;
}
@@
-432,14
+440,14
@@
function sqimap_mailbox_select ($imap_stream, $mailbox) {
*/
if (strstr($mailbox, '../') || substr($mailbox, 0, 1) == '/') {
global $oTemplate;
*/
if (strstr($mailbox, '../') || substr($mailbox, 0, 1) == '/') {
global $oTemplate;
- error_box(sprintf(_("Invalid mailbox name: %s"),
htmlspecial
chars($mailbox)));
+ error_box(sprintf(_("Invalid mailbox name: %s"),
sm_encode_html_special_
chars($mailbox)));
sqimap_logout($imap_stream);
$oTemplate->display('footer.tpl');
die();
}
$read = sqimap_run_command($imap_stream, 'SELECT ' . sqimap_encode_mailbox_name($mailbox),
sqimap_logout($imap_stream);
$oTemplate->display('footer.tpl');
die();
}
$read = sqimap_run_command($imap_stream, 'SELECT ' . sqimap_encode_mailbox_name($mailbox),
-
true
, $response, $message);
+
$handle_errors
, $response, $message);
$result = array();
for ($i = 0, $cnt = count($read); $i < $cnt; $i++) {
if (preg_match('/^\*\s+OK\s\[(\w+)\s(\w+)\]/',$read[$i], $regs)) {
$result = array();
for ($i = 0, $cnt = count($read); $i < $cnt; $i++) {
if (preg_match('/^\*\s+OK\s\[(\w+)\s(\w+)\]/',$read[$i], $regs)) {
@@
-456,7
+464,7
@@
function sqimap_mailbox_select ($imap_stream, $mailbox) {
}
}
}
}
}
}
- if (!isset($result['PERMANENTFLAGS'])) {
+ if (!
empty($result) && !
isset($result['PERMANENTFLAGS'])) {
$result['PERMANENTFLAGS'] = $result['FLAGS'];
}
if (preg_match('/^\[(.+)\]/',$message, $regs)) {
$result['PERMANENTFLAGS'] = $result['FLAGS'];
}
if (preg_match('/^\[(.+)\]/',$message, $regs)) {
@@
-656,7
+664,10
@@
function sqimap_mailbox_parse ($line) {
global $folder_prefix, $delimiter;
/* Process each folder line */
global $folder_prefix, $delimiter;
/* Process each folder line */
- for ($g = 0, $cnt = count($line); $g < $cnt; ++$g) {
+ ksort($line); // get physical ordering same as alphabetical sort we did before now (might be a better place for this)
+ foreach ($line as $g => $l)
+ // was this but array not guaranteed to be contiguous: for ($g = 0, $cnt = count($line); $g < $cnt; ++$g)
+ {
/* Store the raw IMAP reply */
if (isset($line[$g])) {
$boxesall[$g]['raw'] = $line[$g];
/* Store the raw IMAP reply */
if (isset($line[$g])) {
$boxesall[$g]['raw'] = $line[$g];
@@
-784,7
+795,7
@@
function sqimap_mailbox_option_array($imap_stream, $folder_skip = 0, $boxes = 0,
// i18n: Name of Drafts folder
$box2 = $pad . _("Drafts");
} else {
// i18n: Name of Drafts folder
$box2 = $pad . _("Drafts");
} else {
- $box2 = str_replace('&nbsp;&nbsp;', '. ',
htmlspecial
chars($boxes_part['formatted']));
+ $box2 = str_replace('&nbsp;&nbsp;', '. ',
sm_encode_html_special_
chars($boxes_part['formatted']));
}
break;
case SMPREF_MAILBOX_SELECT_INDENTED:
}
break;
case SMPREF_MAILBOX_SELECT_INDENTED:
@@
-798,16
+809,16
@@
function sqimap_mailbox_option_array($imap_stream, $folder_skip = 0, $boxes = 0,
$pad = str_pad('',12 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),' ');
$box2 = $pad . _("Drafts");
} else {
$pad = str_pad('',12 * (count(explode($delimiter,$boxes_part['unformatted-dm']))-1),' ');
$box2 = $pad . _("Drafts");
} else {
- $box2 = str_replace('&nbsp;&nbsp;', ' ',
htmlspecial
chars($boxes_part['formatted']));
+ $box2 = str_replace('&nbsp;&nbsp;', ' ',
sm_encode_html_special_
chars($boxes_part['formatted']));
}
break;
default: /* default, long names, style = 0 */
}
break;
default: /* default, long names, style = 0 */
- $box2 = str_replace(' ', ' ',
htmlspecial
chars(imap_utf7_decode_local($boxes_part['unformatted-disp'])));
+ $box2 = str_replace(' ', ' ',
sm_encode_html_special_
chars(imap_utf7_decode_local($boxes_part['unformatted-disp'])));
break;
}
}
break;
}
}
- $a[
htmlspecial
chars($box)] = $box2;
+ $a[
sm_encode_html_special_
chars($box)] = $box2;
}
}
}
}
@@
-843,12
+854,12
@@
function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_sk
$str = '';
foreach ($boxes as $value=>$option) {
$str = '';
foreach ($boxes as $value=>$option) {
- $lowerbox = strtolower(
htmlspecial
chars($value));
+ $lowerbox = strtolower(
sm_encode_html_special_
chars($value));
$sel = false;
if ($show_selected != 0) {
reset($show_selected);
while (!$sel && (list($x, $val) = each($show_selected))) {
$sel = false;
if ($show_selected != 0) {
reset($show_selected);
while (!$sel && (list($x, $val) = each($show_selected))) {
- if (strtolower($value) == strtolower(
htmlspecial
chars($val))) {
+ if (strtolower($value) == strtolower(
sm_encode_html_special_
chars($val))) {
$sel = true;
}
}
$sel = true;
}
}
@@
-1088,7
+1099,9
@@
function sqimap_get_mailboxes($imap_stream,$force=false,$show_only_subscribed=tr
$cnt = count($boxesall);
$used = array_pad($used,$cnt,false);
$has_inbox = false;
$cnt = count($boxesall);
$used = array_pad($used,$cnt,false);
$has_inbox = false;
- for($k = 0; $k < $cnt; ++$k) {
+ foreach ($boxesall as $k => $b)
+ // was this but array not guaranteed to be contiguous: for($k = 0; $k < $cnt; ++$k)
+ {
if (strtoupper($boxesall[$k]['unformatted']) == 'INBOX') {
$boxesnew[] = $boxesall[$k];
$used[$k] = true;
if (strtoupper($boxesall[$k]['unformatted']) == 'INBOX') {
$boxesnew[] = $boxesall[$k];
$used[$k] = true;
@@
-1117,7
+1130,9
@@
function sqimap_get_mailboxes($imap_stream,$force=false,$show_only_subscribed=tr
/* List special folders and their subfolders, if requested. */
if ($list_special_folders_first) {
/* List special folders and their subfolders, if requested. */
if ($list_special_folders_first) {
- for($k = 0; $k < $cnt; ++$k) {
+ foreach ($boxesall as $k => $b)
+ // was this but array not guaranteed to be contiguous: for($k = 0; $k < $cnt; ++$k)
+ {
if (!$used[$k] && isSpecialMailbox($boxesall[$k]['unformatted'])) {
$boxesnew[] = $boxesall[$k];
$used[$k] = true;
if (!$used[$k] && isSpecialMailbox($boxesall[$k]['unformatted'])) {
$boxesnew[] = $boxesall[$k];
$used[$k] = true;
@@
-1126,7
+1141,9
@@
function sqimap_get_mailboxes($imap_stream,$force=false,$show_only_subscribed=tr
}
/* Find INBOX's children */
}
/* Find INBOX's children */
- for($k = 0; $k < $cnt; ++$k) {
+ foreach ($boxesall as $k => $b)
+ // was this but array not guaranteed to be contiguous: for($k = 0; $k < $cnt; ++$k)
+ {
$isboxbelow=isBoxBelow(strtoupper($boxesall[$k]['unformatted']),'INBOX');
if (strtoupper($boxesall[$k]['unformatted']) == 'INBOX') {
$is_inbox=1;
$isboxbelow=isBoxBelow(strtoupper($boxesall[$k]['unformatted']),'INBOX');
if (strtoupper($boxesall[$k]['unformatted']) == 'INBOX') {
$is_inbox=1;
@@
-1141,7
+1158,9
@@
function sqimap_get_mailboxes($imap_stream,$force=false,$show_only_subscribed=tr
}
/* Rest of the folders */
}
/* Rest of the folders */
- for($k = 0; $k < $cnt; $k++) {
+ foreach ($boxesall as $k => $b)
+ // was this but array not guaranteed to be contiguous: for($k = 0; $k < $cnt; ++$k)
+ {
if (!$used[$k]) {
$boxesnew[] = $boxesall[$k];
}
if (!$used[$k]) {
$boxesnew[] = $boxesall[$k];
}