Skip to content

Commit 812ed75

Browse files
committed
Legacy protocol support updated
1 parent 7b77e0e commit 812ed75

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

src/Connection/Protocols/LegacyProtocol.php

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function login($user, $password) {
9191
throw new AuthFailedException($message);
9292
}
9393

94-
return !$this->stream;
94+
return $this->stream;
9595
}
9696

9797
/**
@@ -199,8 +199,12 @@ public function examineFolder($folder = 'INBOX') {
199199
* @return array
200200
*/
201201
public function content($uids, $rfc = "RFC822") {
202-
$content = \imap_fetchbody($this->stream, $uids[0], "", IMAP::FT_UID);
203-
return [$uids[0] => $content];
202+
$result = [];
203+
$uids = is_array($uids) ? $uids : [$uids];
204+
foreach ($uids as $uid) {
205+
$result[$uid] = \imap_fetchbody($this->stream, $uid, "", IMAP::NIL);
206+
}
207+
return $result;
204208
}
205209

206210
/**
@@ -211,8 +215,12 @@ public function content($uids, $rfc = "RFC822") {
211215
* @return array
212216
*/
213217
public function headers($uids, $rfc = "RFC822"){
214-
$headers = \imap_fetchheader($this->stream, $uids[0], IMAP::FT_UID);
215-
return [$uids[0] => $headers];
218+
$result = [];
219+
$uids = is_array($uids) ? $uids : [$uids];
220+
foreach ($uids as $uid) {
221+
$result[$uid] = \imap_fetchheader($this->stream, $uid, IMAP::NIL);
222+
}
223+
return $result;
216224
}
217225

218226
/**
@@ -222,17 +230,23 @@ public function headers($uids, $rfc = "RFC822"){
222230
* @return array
223231
*/
224232
public function flags($uids){
225-
$flags = \imap_fetch_overview($this->stream, $uids[0], IMAP::FT_UID);
226233
$result = [];
227-
if (is_array($flags) && isset($flags[0])) {
228-
$flags = (array) $flags[0];
229-
foreach($flags as $flag => $value) {
230-
if ($value === 1 && in_array($flag, ["size", "uid", "msgno", "update"]) === false){
231-
$result[] = "\\".ucfirst($flag);
234+
$uids = is_array($uids) ? $uids : [$uids];
235+
foreach ($uids as $uid) {
236+
$raw_flags = \imap_fetch_overview($this->stream, $uid, IMAP::NIL);
237+
$flags = [];
238+
if (is_array($raw_flags) && isset($raw_flags[0])) {
239+
$raw_flags = (array) $raw_flags[0];
240+
foreach($raw_flags as $flag => $value) {
241+
if ($value === 1 && in_array($flag, ["size", "uid", "msgno", "update"]) === false){
242+
$flags[] = "\\".ucfirst($flag);
243+
}
232244
}
233245
}
246+
$result[$uid] = $flags;
234247
}
235-
return [$uids[0] => $result];
248+
249+
return $result;
236250
}
237251

238252
/**
@@ -309,12 +323,12 @@ public function folders($reference = '', $folder = '*') {
309323
* @return bool|array new flags if $silent is false, else true or false depending on success
310324
*/
311325
public function store(array $flags, $from, $to = null, $mode = null, $silent = true) {
312-
$flag = "\\".trim(is_array($flags) ? implode(" \\", $flags) : $flags);
326+
$flag = trim(is_array($flags) ? implode(" ", $flags) : $flags);
313327

314328
if ($mode == "+"){
315-
$status = \imap_setflag_full($this->stream, $from, $flag, IMAP::SE_UID);
329+
$status = \imap_setflag_full($this->stream, $from, $flag, IMAP::NIL);
316330
}else{
317-
$status = \imap_clearflag_full($this->stream, $from, $flag, IMAP::SE_UID);
331+
$status = \imap_clearflag_full($this->stream, $from, $flag, IMAP::NIL);
318332
}
319333

320334
if ($silent === true) {
@@ -464,7 +478,7 @@ public function done() {
464478
* @return array message ids
465479
*/
466480
public function search(array $params) {
467-
return \imap_search($this->stream, $params[0], IMAP::SE_UID);
481+
return \imap_search($this->stream, $params[0], IMAP::NIL);
468482
}
469483

470484
/**

0 commit comments

Comments
 (0)