45
45
#undef ERROR
46
46
#endif
47
47
#include "php_imap.h"
48
- #include "php_imap_arginfo.h"
49
48
50
49
#include <time.h>
51
50
#include <stdio.h>
@@ -67,6 +66,15 @@ MAILSTREAM DEFAULTPROTO;
67
66
#define SENDBUFLEN 16385
68
67
#endif
69
68
69
+ #define PHP_IMAP_OPENTIMEOUT 1
70
+ #define PHP_IMAP_READTIMEOUT 2
71
+ #define PHP_IMAP_WRITETIMEOUT 3
72
+ #define PHP_IMAP_CLOSETIMEOUT 4
73
+
74
+ #define SA_ALL SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY;
75
+
76
+ #include "php_imap_arginfo.h"
77
+
70
78
#if defined(__GNUC__ ) && __GNUC__ >= 4
71
79
# define PHP_IMAP_EXPORT __attribute__ ((visibility("default")))
72
80
#else
@@ -445,8 +453,6 @@ static PHP_GINIT_FUNCTION(imap)
445
453
/* {{{ PHP_MINIT_FUNCTION */
446
454
PHP_MINIT_FUNCTION (imap )
447
455
{
448
- unsigned long sa_all = SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY ;
449
-
450
456
REGISTER_INI_ENTRIES ();
451
457
452
458
#ifndef PHP_WIN32
@@ -487,8 +493,7 @@ PHP_MINIT_FUNCTION(imap)
487
493
imap_object_handlers .free_obj = imap_object_destroy ;
488
494
imap_object_handlers .clone_obj = NULL ;
489
495
490
- /* lets allow NIL */
491
- REGISTER_LONG_CONSTANT ("NIL" , NIL , CONST_PERSISTENT | CONST_CS | CONST_DEPRECATED );
496
+ register_php_imap_symbols (module_number );
492
497
493
498
/* plug in our gets */
494
499
mail_parameters (NIL , SET_GETS , (void * ) NIL );
@@ -499,182 +504,6 @@ PHP_MINIT_FUNCTION(imap)
499
504
mail_parameters (NIL , SET_WRITETIMEOUT , (void * ) FG (default_socket_timeout ));
500
505
mail_parameters (NIL , SET_CLOSETIMEOUT , (void * ) FG (default_socket_timeout ));
501
506
502
- /* timeout constants */
503
- REGISTER_LONG_CONSTANT ("IMAP_OPENTIMEOUT" , 1 , CONST_PERSISTENT | CONST_CS );
504
- REGISTER_LONG_CONSTANT ("IMAP_READTIMEOUT" , 2 , CONST_PERSISTENT | CONST_CS );
505
- REGISTER_LONG_CONSTANT ("IMAP_WRITETIMEOUT" , 3 , CONST_PERSISTENT | CONST_CS );
506
- REGISTER_LONG_CONSTANT ("IMAP_CLOSETIMEOUT" , 4 , CONST_PERSISTENT | CONST_CS );
507
-
508
- /* Open Options */
509
-
510
- REGISTER_LONG_CONSTANT ("OP_DEBUG" , OP_DEBUG , CONST_PERSISTENT | CONST_CS );
511
- /* debug protocol negotiations */
512
- REGISTER_LONG_CONSTANT ("OP_READONLY" , OP_READONLY , CONST_PERSISTENT | CONST_CS );
513
- /* read-only open */
514
- REGISTER_LONG_CONSTANT ("OP_ANONYMOUS" , OP_ANONYMOUS , CONST_PERSISTENT | CONST_CS );
515
- /* anonymous open of newsgroup */
516
- REGISTER_LONG_CONSTANT ("OP_SHORTCACHE" , OP_SHORTCACHE , CONST_PERSISTENT | CONST_CS );
517
- /* short (elt-only) caching */
518
- REGISTER_LONG_CONSTANT ("OP_SILENT" , OP_SILENT , CONST_PERSISTENT | CONST_CS );
519
- /* don't pass up events (internal use) */
520
- REGISTER_LONG_CONSTANT ("OP_PROTOTYPE" , OP_PROTOTYPE , CONST_PERSISTENT | CONST_CS );
521
- /* return driver prototype */
522
- REGISTER_LONG_CONSTANT ("OP_HALFOPEN" , OP_HALFOPEN , CONST_PERSISTENT | CONST_CS );
523
- /* half-open (IMAP connect but no select) */
524
- REGISTER_LONG_CONSTANT ("OP_EXPUNGE" , OP_EXPUNGE , CONST_PERSISTENT | CONST_CS );
525
- /* silently expunge recycle stream */
526
- REGISTER_LONG_CONSTANT ("OP_SECURE" , OP_SECURE , CONST_PERSISTENT | CONST_CS );
527
- /* don't do non-secure authentication */
528
-
529
- /*
530
- PHP re-assigns CL_EXPUNGE a custom value that can be used as part of the imap_open() bitfield
531
- because it seems like a good idea to be able to indicate that the mailbox should be
532
- automatically expunged during imap_open in case the script get interrupted and it doesn't get
533
- to the imap_close() where this option is normally placed. If the c-client library adds other
534
- options and the value for this one conflicts, simply make PHP_EXPUNGE higher at the top of
535
- this file
536
- */
537
- REGISTER_LONG_CONSTANT ("CL_EXPUNGE" , PHP_EXPUNGE , CONST_PERSISTENT | CONST_CS );
538
- /* expunge silently */
539
-
540
- /* Fetch options */
541
-
542
- REGISTER_LONG_CONSTANT ("FT_UID" , FT_UID , CONST_PERSISTENT | CONST_CS );
543
- /* argument is a UID */
544
- REGISTER_LONG_CONSTANT ("FT_PEEK" , FT_PEEK , CONST_PERSISTENT | CONST_CS );
545
- /* peek at data */
546
- REGISTER_LONG_CONSTANT ("FT_NOT" , FT_NOT , CONST_PERSISTENT | CONST_CS );
547
- /* NOT flag for header lines fetch */
548
- REGISTER_LONG_CONSTANT ("FT_INTERNAL" , FT_INTERNAL , CONST_PERSISTENT | CONST_CS );
549
- /* text can be internal strings */
550
- REGISTER_LONG_CONSTANT ("FT_PREFETCHTEXT" , FT_PREFETCHTEXT , CONST_PERSISTENT | CONST_CS );
551
- /* IMAP prefetch text when fetching header */
552
-
553
- /* Flagging options */
554
-
555
- REGISTER_LONG_CONSTANT ("ST_UID" , ST_UID , CONST_PERSISTENT | CONST_CS );
556
- /* argument is a UID sequence */
557
- REGISTER_LONG_CONSTANT ("ST_SILENT" , ST_SILENT , CONST_PERSISTENT | CONST_CS );
558
- /* don't return results */
559
- REGISTER_LONG_CONSTANT ("ST_SET" , ST_SET , CONST_PERSISTENT | CONST_CS );
560
- /* set vs. clear */
561
-
562
- /* Copy options */
563
-
564
- REGISTER_LONG_CONSTANT ("CP_UID" , CP_UID , CONST_PERSISTENT | CONST_CS );
565
- /* argument is a UID sequence */
566
- REGISTER_LONG_CONSTANT ("CP_MOVE" , CP_MOVE , CONST_PERSISTENT | CONST_CS );
567
- /* delete from source after copying */
568
-
569
- /* Search/sort options */
570
-
571
- REGISTER_LONG_CONSTANT ("SE_UID" , SE_UID , CONST_PERSISTENT | CONST_CS );
572
- /* return UID */
573
- REGISTER_LONG_CONSTANT ("SE_FREE" , SE_FREE , CONST_PERSISTENT | CONST_CS );
574
- /* free search program after finished */
575
- REGISTER_LONG_CONSTANT ("SE_NOPREFETCH" , SE_NOPREFETCH , CONST_PERSISTENT | CONST_CS );
576
- /* no search prefetching */
577
- REGISTER_LONG_CONSTANT ("SO_FREE" , SO_FREE , CONST_PERSISTENT | CONST_CS );
578
- /* free sort program after finished */
579
- REGISTER_LONG_CONSTANT ("SO_NOSERVER" , SO_NOSERVER , CONST_PERSISTENT | CONST_CS );
580
- /* don't do server-based sort */
581
-
582
- /* Status options */
583
-
584
- REGISTER_LONG_CONSTANT ("SA_MESSAGES" , SA_MESSAGES , CONST_PERSISTENT | CONST_CS );
585
- /* number of messages */
586
- REGISTER_LONG_CONSTANT ("SA_RECENT" , SA_RECENT , CONST_PERSISTENT | CONST_CS );
587
- /* number of recent messages */
588
- REGISTER_LONG_CONSTANT ("SA_UNSEEN" , SA_UNSEEN , CONST_PERSISTENT | CONST_CS );
589
- /* number of unseen messages */
590
- REGISTER_LONG_CONSTANT ("SA_UIDNEXT" , SA_UIDNEXT , CONST_PERSISTENT | CONST_CS );
591
- /* next UID to be assigned */
592
- REGISTER_LONG_CONSTANT ("SA_UIDVALIDITY" , SA_UIDVALIDITY , CONST_PERSISTENT | CONST_CS );
593
- /* UID validity value */
594
- REGISTER_LONG_CONSTANT ("SA_ALL" , sa_all , CONST_PERSISTENT | CONST_CS );
595
- /* get all status information */
596
-
597
- /* Bits for mm_list() and mm_lsub() */
598
-
599
- REGISTER_LONG_CONSTANT ("LATT_NOINFERIORS" , LATT_NOINFERIORS , CONST_PERSISTENT | CONST_CS );
600
- REGISTER_LONG_CONSTANT ("LATT_NOSELECT" , LATT_NOSELECT , CONST_PERSISTENT | CONST_CS );
601
- REGISTER_LONG_CONSTANT ("LATT_MARKED" , LATT_MARKED , CONST_PERSISTENT | CONST_CS );
602
- REGISTER_LONG_CONSTANT ("LATT_UNMARKED" , LATT_UNMARKED , CONST_PERSISTENT | CONST_CS );
603
-
604
- #ifdef LATT_REFERRAL
605
- REGISTER_LONG_CONSTANT ("LATT_REFERRAL" , LATT_REFERRAL , CONST_PERSISTENT | CONST_CS );
606
- #endif
607
-
608
- #ifdef LATT_HASCHILDREN
609
- REGISTER_LONG_CONSTANT ("LATT_HASCHILDREN" , LATT_HASCHILDREN , CONST_PERSISTENT | CONST_CS );
610
- #endif
611
-
612
- #ifdef LATT_HASNOCHILDREN
613
- REGISTER_LONG_CONSTANT ("LATT_HASNOCHILDREN" , LATT_HASNOCHILDREN , CONST_PERSISTENT | CONST_CS );
614
- #endif
615
-
616
- /* Sort functions */
617
-
618
- REGISTER_LONG_CONSTANT ("SORTDATE" , SORTDATE , CONST_PERSISTENT | CONST_CS );
619
- /* date */
620
- REGISTER_LONG_CONSTANT ("SORTARRIVAL" , SORTARRIVAL , CONST_PERSISTENT | CONST_CS );
621
- /* arrival date */
622
- REGISTER_LONG_CONSTANT ("SORTFROM" , SORTFROM , CONST_PERSISTENT | CONST_CS );
623
- /* from */
624
- REGISTER_LONG_CONSTANT ("SORTSUBJECT" , SORTSUBJECT , CONST_PERSISTENT | CONST_CS );
625
- /* subject */
626
- REGISTER_LONG_CONSTANT ("SORTTO" , SORTTO , CONST_PERSISTENT | CONST_CS );
627
- /* to */
628
- REGISTER_LONG_CONSTANT ("SORTCC" , SORTCC , CONST_PERSISTENT | CONST_CS );
629
- /* cc */
630
- REGISTER_LONG_CONSTANT ("SORTSIZE" , SORTSIZE , CONST_PERSISTENT | CONST_CS );
631
- /* size */
632
-
633
- REGISTER_LONG_CONSTANT ("TYPETEXT" , TYPETEXT , CONST_PERSISTENT | CONST_CS );
634
- REGISTER_LONG_CONSTANT ("TYPEMULTIPART" , TYPEMULTIPART , CONST_PERSISTENT | CONST_CS );
635
- REGISTER_LONG_CONSTANT ("TYPEMESSAGE" , TYPEMESSAGE , CONST_PERSISTENT | CONST_CS );
636
- REGISTER_LONG_CONSTANT ("TYPEAPPLICATION" , TYPEAPPLICATION , CONST_PERSISTENT | CONST_CS );
637
- REGISTER_LONG_CONSTANT ("TYPEAUDIO" , TYPEAUDIO , CONST_PERSISTENT | CONST_CS );
638
- REGISTER_LONG_CONSTANT ("TYPEIMAGE" , TYPEIMAGE , CONST_PERSISTENT | CONST_CS );
639
- REGISTER_LONG_CONSTANT ("TYPEVIDEO" , TYPEVIDEO , CONST_PERSISTENT | CONST_CS );
640
- REGISTER_LONG_CONSTANT ("TYPEMODEL" , TYPEMODEL , CONST_PERSISTENT | CONST_CS );
641
- REGISTER_LONG_CONSTANT ("TYPEOTHER" , TYPEOTHER , CONST_PERSISTENT | CONST_CS );
642
- /*
643
- TYPETEXT unformatted text
644
- TYPEMULTIPART multiple part
645
- TYPEMESSAGE encapsulated message
646
- TYPEAPPLICATION application data
647
- TYPEAUDIO audio
648
- TYPEIMAGE static image (GIF, JPEG, etc.)
649
- TYPEVIDEO video
650
- TYPEMODEL model
651
- TYPEOTHER unknown
652
- */
653
-
654
- REGISTER_LONG_CONSTANT ("ENC7BIT" , ENC7BIT , CONST_PERSISTENT | CONST_CS );
655
- REGISTER_LONG_CONSTANT ("ENC8BIT" , ENC8BIT , CONST_PERSISTENT | CONST_CS );
656
- REGISTER_LONG_CONSTANT ("ENCBINARY" , ENCBINARY , CONST_PERSISTENT | CONST_CS );
657
- REGISTER_LONG_CONSTANT ("ENCBASE64" , ENCBASE64 , CONST_PERSISTENT | CONST_CS );
658
- REGISTER_LONG_CONSTANT ("ENCQUOTEDPRINTABLE" , ENCQUOTEDPRINTABLE , CONST_PERSISTENT | CONST_CS );
659
- REGISTER_LONG_CONSTANT ("ENCOTHER" , ENCOTHER , CONST_PERSISTENT | CONST_CS );
660
- /*
661
- ENC7BIT 7 bit SMTP semantic data
662
- ENC8BIT 8 bit SMTP semantic data
663
- ENCBINARY 8 bit binary data
664
- ENCBASE64 base-64 encoded data
665
- ENCQUOTEDPRINTABLE human-readable 8-as-7 bit data
666
- ENCOTHER unknown
667
- */
668
-
669
- REGISTER_LONG_CONSTANT ("IMAP_GC_ELT" , GC_ELT , CONST_PERSISTENT | CONST_CS );
670
- REGISTER_LONG_CONSTANT ("IMAP_GC_ENV" , GC_ENV , CONST_PERSISTENT | CONST_CS );
671
- REGISTER_LONG_CONSTANT ("IMAP_GC_TEXTS" , GC_TEXTS , CONST_PERSISTENT | CONST_CS );
672
- /*
673
- GC_ELT message cache elements
674
- GC_ENV ENVELOPEs and BODYs
675
- GC_TEXTS texts
676
- */
677
-
678
507
if (!IMAPG (enable_rsh )) {
679
508
/* disable SSH and RSH, see https://bugs.php.net/bug.php?id=77153 */
680
509
mail_parameters (NIL , SET_RSHTIMEOUT , 0 );
@@ -2808,7 +2637,7 @@ PHP_FUNCTION(imap_status)
2808
2637
2809
2638
GET_IMAP_STREAM (imap_conn_struct , imap_conn_obj );
2810
2639
2811
- if (flags && ((flags & ~(SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY /*| SA_ALL*/ )) != 0 )) {
2640
+ if (flags && ((flags & ~(SA_ALL )) != 0 )) {
2812
2641
zend_argument_value_error (3 , "must be a bitmask of SA_* constants" );
2813
2642
RETURN_THROWS ();
2814
2643
}
0 commit comments