From 5933d98c8cdee9ef4b04eaf680a7d29cb4928cfc Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 10 May 2010 07:20:52 -0400
Subject: [PATCH] - it_IT update (#1486724)
---
program/include/rcube_imap_generic.php | 131 ++++++++++++-------------------------------
1 files changed, 38 insertions(+), 93 deletions(-)
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 0616b5a..6ca6c8f 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -186,8 +186,8 @@
$buffer = fgets($this->fp, $size);
if ($buffer === false) {
- fclose($this->fp);
- $this->fp = null;
+ @fclose($this->fp);
+ $this->fp = null;
break;
}
if (!empty($this->prefs['debug_mode'])) {
@@ -263,7 +263,7 @@
} else if ($res == 'BAD') {
return -2;
} else if ($res == 'BYE') {
- fclose($this->fp);
+ @fclose($this->fp);
$this->fp = null;
return -3;
}
@@ -286,7 +286,7 @@
}
if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) {
if (strtoupper($m[1]) == 'BYE') {
- fclose($this->fp);
+ @fclose($this->fp);
$this->fp = null;
}
return true;
@@ -311,7 +311,7 @@
}
if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) {
if (strtoupper($m[1]) == 'BYE') {
- fclose($this->fp);
+ @fclose($this->fp);
$this->fp = null;
}
return true;
@@ -394,14 +394,12 @@
// process result
$result = $this->parseResult($line);
if ($result == 0) {
- $this->error .= '';
- $this->errornum = 0;
+ $this->errornum = 0;
return $this->fp;
}
- $this->error .= 'Authentication for ' . $user . ' failed (AUTH): "';
- $this->error .= htmlspecialchars($line) . '"';
- $this->errornum = $result;
+ $this->error = "Authentication for $user failed (AUTH): $line";
+ $this->errornum = $result;
return $result;
}
@@ -416,17 +414,15 @@
$result = $this->parseResult($line);
if ($result == 0) {
- $this->error .= '';
- $this->errornum = 0;
+ $this->errornum = 0;
return $this->fp;
}
- fclose($this->fp);
+ @fclose($this->fp);
$this->fp = false;
- $this->error .= 'Authentication for ' . $user . ' failed (LOGIN): "';
- $this->error .= htmlspecialchars($line)."\"";
- $this->errornum = $result;
+ $this->error = "Authentication for $user failed (LOGIN): $line";
+ $this->errornum = $result;
return $result;
}
@@ -1616,6 +1612,16 @@
function listMailboxes($ref, $mailbox)
{
+ return $this->_listMailboxes($ref, $mailbox, false);
+ }
+
+ function listSubscribed($ref, $mailbox)
+ {
+ return $this->_listMailboxes($ref, $mailbox, true);
+ }
+
+ private function _listMailboxes($ref, $mailbox, $subscribed=false)
+ {
if (empty($mailbox)) {
$mailbox = '*';
}
@@ -1624,105 +1630,44 @@
$ref = $this->rootdir;
}
+ if ($subscribed) {
+ $key = 'lsb';
+ $command = 'LSUB';
+ }
+ else {
+ $key = 'lmb';
+ $command = 'LIST';
+ }
+
// send command
- if (!$this->putLine("lmb LIST \"". $this->escape($ref) ."\" \"". $this->escape($mailbox) ."\"")) {
+ if (!$this->putLine($key." ".$command." \"". $this->escape($ref) ."\" \"". $this->escape($mailbox) ."\"")) {
+ $this->error = "Couldn't send $command command";
return false;
}
- $i = 0;
// get folder list
do {
$line = $this->readLine(500);
$line = $this->multLine($line, true);
+ $a = explode(' ', $line);
- $a = explode(' ', $line);
- if (($line[0] == '*') && ($a[1] == 'LIST')) {
+ if (($line[0] == '*') && ($a[1] == $command)) {
$line = rtrim($line);
// split one line
$a = rcube_explode_quoted_string(' ', $line);
// last string is folder name
- $folders[$i] = preg_replace(array('/^"/', '/"$/'), '', $this->unEscape($a[count($a)-1]));
+ $folders[] = preg_replace(array('/^"/', '/"$/'), '', $this->unEscape($a[count($a)-1]));
// second from last is delimiter
$delim = trim($a[count($a)-2], '"');
- // is it a container?
- $i++;
}
- } while (!$this->startsWith($line, 'lmb', true));
+ } while (!$this->startsWith($line, $key, true));
if (is_array($folders)) {
- if (!empty($ref)) {
- // if rootdir was specified, make sure it's the first element
- // some IMAP servers (i.e. Courier) won't return it
- if ($ref[strlen($ref)-1]==$delim)
- $ref = substr($ref, 0, strlen($ref)-1);
- if ($folders[0]!=$ref)
- array_unshift($folders, $ref);
- }
return $folders;
} else if ($this->parseResult($line) == 0) {
- return array('INBOX');
+ return array();
}
- $this->error = $line;
- return false;
- }
-
- function listSubscribed($ref, $mailbox)
- {
- if (empty($mailbox)) {
- $mailbox = '*';
- }
- if (empty($ref) && $this->rootdir) {
- $ref = $this->rootdir;
- }
-
- $folders = array();
-
- // send command
- if (!$this->putLine('lsb LSUB "'. $this->escape($ref) . '" "' . $this->escape($mailbox).'"')) {
- $this->error = "Couldn't send LSUB command";
- return false;
- }
-
- $i = 0;
-
- // get folder list
- do {
- $line = $this->readLine(500);
- $line = $this->multLine($line, true);
- $a = explode(' ', $line);
-
- if (($line[0] == '*') && ($a[1] == 'LSUB' || $a[1] == 'LIST')) {
- $line = rtrim($line);
-
- // split one line
- $a = rcube_explode_quoted_string(' ', $line);
- // last string is folder name
- $folder = preg_replace(array('/^"/', '/"$/'), '', $this->UnEscape($a[count($a)-1]));
- // @TODO: do we need this check???
- if (!in_array($folder, $folders)) {
- $folders[$i] = $folder;
- }
- // second from last is delimiter
- $delim = trim($a[count($a)-2], '"');
- // is it a container?
- $i++;
- }
- } while (!$this->startsWith($line, 'lsb', true));
-
- if (is_array($folders)) {
- if (!empty($ref)) {
- // if rootdir was specified, make sure it's the first element
- // some IMAP servers (i.e. Courier) won't return it
- if ($ref[strlen($ref)-1]==$delim) {
- $ref = substr($ref, 0, strlen($ref)-1);
- }
- if ($folders[0]!=$ref) {
- array_unshift($folders, $ref);
- }
- }
- return $folders;
- }
$this->error = $line;
return false;
}
--
Gitblit v1.9.1