@@ -62,6 +62,9 @@ class Query {
62
62
/** @var int $fetch_flags */
63
63
protected $ fetch_flags = true ;
64
64
65
+ /** @var int $fetch_order */
66
+ protected $ fetch_order ;
67
+
65
68
/** @var string $date_format */
66
69
protected $ date_format ;
67
70
@@ -75,6 +78,12 @@ public function __construct(Client $client, $charset = 'UTF-8') {
75
78
76
79
if (ClientManager::get ('options.fetch ' ) === IMAP ::FT_PEEK ) $ this ->leaveUnread ();
77
80
81
+ if (ClientManager::get ('options.fetch_order ' ) === 'desc ' ) {
82
+ $ this ->fetch_order = 'desc ' ;
83
+ } else {
84
+ $ this ->fetch_order = 'asc ' ;
85
+ }
86
+
78
87
$ this ->date_format = ClientManager::get ('date_format ' , 'd M y ' );
79
88
80
89
$ this ->charset = $ charset ;
@@ -193,17 +202,16 @@ public function get() {
193
202
194
203
$ messages ->total ($ available_messages_count );
195
204
196
- $ options = ClientManager::get ('options ' );
197
-
198
- if (strtolower ($ options ['fetch_order ' ]) === 'desc ' ){
205
+ if ($ this ->fetch_order === 'desc ' ) {
199
206
$ available_messages = $ available_messages ->reverse ();
200
207
}
201
208
209
+ $ message_key = ClientManager::get ('options.message_key ' );
202
210
$ query =& $ this ;
203
211
204
- $ available_messages ->forPage ($ this ->page , $ this ->limit )->each (function ($ msgno , $ msglist ) use (&$ messages , $ options , $ query ) {
212
+ $ available_messages ->forPage ($ this ->page , $ this ->limit )->each (function ($ msgno , $ msglist ) use (&$ messages , $ message_key , $ query ) {
205
213
$ message = $ query ->getMessage ($ msgno , $ msglist );
206
- switch ($ options [ ' message_key ' ] ){
214
+ switch ($ message_key ){
207
215
case 'number ' :
208
216
$ message_key = $ message ->getMessageNo ();
209
217
break ;
@@ -468,4 +476,61 @@ public function setFetchFlags($fetch_flags) {
468
476
$ this ->fetch_flags = $ fetch_flags ;
469
477
return $ this ;
470
478
}
471
- }
479
+
480
+ /**
481
+ * @param string $fetch_order
482
+ * @return Query
483
+ */
484
+ public function setFetchOrder ($ fetch_order ) {
485
+ $ fetch_order = strtolower ($ fetch_order );
486
+
487
+ if (in_array ($ fetch_order , ['asc ' , 'desc ' ])) {
488
+ $ this ->fetch_order = $ fetch_order ;
489
+ }
490
+
491
+ return $ this ;
492
+ }
493
+
494
+ /**
495
+ * @param string $fetch_order
496
+ * @return Query
497
+ */
498
+ public function fetchOrder ($ fetch_order ) {
499
+ return $ this ->setFetchOrder ($ fetch_order );
500
+ }
501
+
502
+ /**
503
+ * @return string
504
+ */
505
+ public function getFetchOrder () {
506
+ return $ this ->fetch_order ;
507
+ }
508
+
509
+ /**
510
+ * @return Query
511
+ */
512
+ public function setFetchOrderAsc () {
513
+ return $ this ->setFetchOrder ('asc ' );
514
+ }
515
+
516
+ /**
517
+ * @return Query
518
+ */
519
+ public function fetchOrderAsc ($ fetch_order ) {
520
+ return $ this ->setFetchOrderAsc ();
521
+ }
522
+
523
+ /**
524
+ * @return Query
525
+ */
526
+ public function setFetchOrderDesc () {
527
+ return $ this ->setFetchOrder ('desc ' );
528
+ }
529
+
530
+ /**
531
+ * @return Query
532
+ */
533
+ public function fetchOrderDesc ($ fetch_order ) {
534
+ return $ this ->setFetchOrderDesc ();
535
+ }
536
+ }
0 commit comments