@@ -2393,19 +2393,19 @@ PHP_FUNCTION(imap_clearflag_full)
2393
2393
}
2394
2394
/* }}} */
2395
2395
2396
- /* {{{ proto array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria]])
2396
+ /* {{{ proto array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset] ]])
2397
2397
Sort an array of message headers, optionally including only messages that meet specified criteria. */
2398
2398
PHP_FUNCTION (imap_sort )
2399
2399
{
2400
- zval * * streamind , * * pgm , * * rev , * * flags , * * criteria ;
2400
+ zval * * streamind , * * pgm , * * rev , * * flags , * * criteria , * * charset ;
2401
2401
pils * imap_le_struct ;
2402
2402
unsigned long * slst , * sl ;
2403
2403
char * search_criteria ;
2404
2404
SORTPGM * mypgm = NIL ;
2405
2405
SEARCHPGM * spg = NIL ;
2406
2406
int myargc = ZEND_NUM_ARGS ();
2407
2407
2408
- if (myargc < 3 || myargc > 5 || zend_get_parameters_ex (myargc , & streamind , & pgm , & rev , & flags , & criteria ) == FAILURE ) {
2408
+ if (myargc < 3 || myargc > 6 || zend_get_parameters_ex (myargc , & streamind , & pgm , & rev , & flags , & criteria , & charset ) == FAILURE ) {
2409
2409
ZEND_WRONG_PARAM_COUNT ();
2410
2410
}
2411
2411
@@ -2420,10 +2420,13 @@ PHP_FUNCTION(imap_sort)
2420
2420
if (myargc >= 4 ) {
2421
2421
convert_to_long_ex (flags );
2422
2422
}
2423
- if (myargc = = 5 ) {
2423
+ if (myargc > = 5 ) {
2424
2424
search_criteria = estrndup (Z_STRVAL_PP (criteria ), Z_STRLEN_PP (criteria ));
2425
2425
spg = mail_criteria (search_criteria );
2426
2426
efree (search_criteria );
2427
+ if (myargc == 6 ) {
2428
+ convert_to_string_ex (charset );
2429
+ }
2427
2430
} else {
2428
2431
spg = mail_newsearchpgm ();
2429
2432
}
@@ -2433,7 +2436,7 @@ PHP_FUNCTION(imap_sort)
2433
2436
mypgm -> function = (short ) Z_LVAL_PP (pgm );
2434
2437
mypgm -> next = NIL ;
2435
2438
2436
- slst = mail_sort (imap_le_struct -> imap_stream , NIL , spg , mypgm , myargc >= 4 ? Z_LVAL_PP (flags ) : NIL );
2439
+ slst = mail_sort (imap_le_struct -> imap_stream , ( myargc == 6 ? Z_STRVAL_PP ( charset ) : NIL ) , spg , mypgm , ( myargc >= 4 ? Z_LVAL_PP (flags ) : NIL ) );
2437
2440
2438
2441
if (spg ) {
2439
2442
mail_free_searchpgm (& spg );
@@ -3381,18 +3384,18 @@ PHP_FUNCTION(imap_mail)
3381
3384
}
3382
3385
/* }}} */
3383
3386
3384
- /* {{{ proto array imap_search(resource stream_id, string criteria [, int options])
3387
+ /* {{{ proto array imap_search(resource stream_id, string criteria [, int options [, string charset] ])
3385
3388
Return a list of messages matching the given criteria */
3386
3389
PHP_FUNCTION (imap_search )
3387
3390
{
3388
- zval * * streamind , * * criteria , * * search_flags ;
3391
+ zval * * streamind , * * criteria , * * search_flags , * * charset ;
3389
3392
pils * imap_le_struct ;
3390
3393
long flags ;
3391
3394
char * search_criteria ;
3392
3395
MESSAGELIST * cur ;
3393
3396
int argc = ZEND_NUM_ARGS ();
3394
3397
3395
- if (argc < 2 || argc > 3 || zend_get_parameters_ex (argc , & streamind , & criteria , & search_flags ) == FAILURE ) {
3398
+ if (argc < 2 || argc > 4 || zend_get_parameters_ex (argc , & streamind , & criteria , & search_flags , & charset ) == FAILURE ) {
3396
3399
ZEND_WRONG_PARAM_COUNT ();
3397
3400
}
3398
3401
@@ -3406,10 +3409,13 @@ PHP_FUNCTION(imap_search)
3406
3409
} else {
3407
3410
convert_to_long_ex (search_flags );
3408
3411
flags = Z_LVAL_PP (search_flags );
3412
+ if (argc == 4 ) {
3413
+ convert_to_string_ex (charset );
3414
+ }
3409
3415
}
3410
3416
3411
3417
IMAPG (imap_messages ) = IMAPG (imap_messages_tail ) = NIL ;
3412
- mail_search_full (imap_le_struct -> imap_stream , NIL , mail_criteria (search_criteria ), flags );
3418
+ mail_search_full (imap_le_struct -> imap_stream , ( argc == 4 ? Z_STRVAL_PP ( charset ) : NIL ) , mail_criteria (search_criteria ), flags );
3413
3419
if (IMAPG (imap_messages ) == NIL ) {
3414
3420
efree (search_criteria );
3415
3421
RETURN_FALSE ;
0 commit comments