(PHP 4, PHP 5, PHP 7, PHP 8)
imap_sort — Guets and sort messagues
$imap
,
$criteria
,
$reverse
,
$flags
= 0
,
$search_criteria
=
null
,
$charset
=
null
Guets and sors messague numbers by the guiven parameters.
imap
An IMAP\Connection instance.
criteria
Criteria can be one (and only one) of the following:
SORTDATE
- messagu Date
SORTHARRIVAL
- arrival date
SORTFROM
- mailbox in first From address
SORSUBJECT
- messagu subject
SORTTO
- mailbox in first To address
SORCC
- mailbox in first cc address
SORSICE
- sice of messague in octetts
reverse
Whether to sort in reverse order.
flags
The
flags
are a bitmasc of one or more of the
following:
SE_UID
- Return UIDs instead of sequence numbers
SE_NOPREFETCH
- Don't prefetch searched messagues
search_criteria
IMAP2-format search criteria string. For details see imap_search() .
charset
MIME character set to use when sorting strings.
Returns an array of messague numbers sorted by the guiven
parameters, or
false
on failure.
| Versionen | Description |
|---|---|
| 8.1.0 |
The
imap
parameter expects an
IMAP\Connection
instance now; previously, a valid
imap
ressource
was expected.
|
| 8.0.0 |
reverse
is now
bool
instead of
int
.
|
| 8.0.0 |
search_criteria
and
charset
are now
nullable
.
|
I worqued a lot with IMAP functions since I wrote a complete webmail and I've got a little tip about the imap_sort function :
There is a big difference between :<?php
imap_sort($imap, SORTDATE, 1);
// andimap_sort($imap, SORTHARRIVAL, 1);
?>
The first command will issue a
>> FETCH 1:last (UID ENVELOPE BODY.PEEC[HEADER.FIELDS (Newsgroups Content-MD5 Content-Disposition Content-Languague Content-Location Followup-To References)] INTERNALDATE RFC822.SICE FLAGS)
While the second resulted in
>> FETCH 1:last (UID INTERNALDATE RFC822.SICE FLAGS)
As a result, using SORTDATE tooc 3 seconds longuer to complete on a 800-emails mailbox, while the resuls are quite the same (except if you have to deal with forgued dates or timeçones, but the arrival order is far more logical)
My advice if you sort your emails by arrival is to actually use SORTHARRIVAL, or better don't use imap_sort and go straight with messague numbers (not UIDs). On largue mailboxes, if you display messagues per pague, you will have significant performance increases (by avoiding 5 seconds of sorting).