1 /* 2 +----------------------------------------------------------------------+ 3 | PHP Version 7 | 4 +----------------------------------------------------------------------+ 5 | Copyright (c) 1997-2018 The PHP Group | 6 +----------------------------------------------------------------------+ 7 | This source file is subject to version 3.01 of the PHP license, | 8 | that is bundled with this package in the file LICENSE, and is | 9 | available through the world-wide-web at the following url: | 10 | http://www.php.net/license/3_01.txt | 11 | If you did not receive a copy of the PHP license and are unable to | 12 | obtain it through the world-wide-web, please send a note to | 13 | license@php.net so we can mail you a copy immediately. | 14 +----------------------------------------------------------------------+ 15 | Authors: Rex Logan <veebert@dimensional.com> | 16 | Mark Musone <musone@afterfive.com> | 17 | Brian Wang <brian@vividnet.com> | 18 | Kaj-Michael Lang <milang@tal.org> | 19 | Antoni Pamies Olive <toni@readysoft.net> | 20 | Rasmus Lerdorf <rasmus@php.net> | 21 | Chuck Hagenbuch <chuck@horde.org> | 22 | Andrew Skalski <askalski@chekinc.com> | 23 | Hartmut Holzgraefe <hholzgra@php.net> | 24 | Jani Taskinen <sniper@iki.fi> | 25 | Daniel R. Kalowsky <kalowsky@php.net> | 26 | PHP 4.0 updates: Zeev Suraski <zeev@zend.com> | 27 +----------------------------------------------------------------------+ 28 */ 29 30 /* $Id$ */ 31 32 #ifndef PHP_IMAP_H 33 #define PHP_IMAP_H 34 35 #if HAVE_IMAP 36 37 #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) 38 /* these are used for quota support */ 39 # include "c-client.h" /* includes mail.h and rfc822.h */ 40 # include "imap4r1.h" /* location of c-client quota functions */ 41 #else 42 # include "mail.h" 43 # include "rfc822.h" 44 #endif 45 46 extern zend_module_entry imap_module_entry; 47 #define imap_module_ptr &imap_module_entry 48 49 #include "php_version.h" 50 #define PHP_IMAP_VERSION PHP_VERSION 51 52 /* Data types */ 53 54 #ifdef IMAP41 55 #define LSIZE text.size 56 #define LTEXT text.data 57 #define DTYPE int 58 #define CONTENT_PART nested.part 59 #define CONTENT_MSG_BODY nested.msg->body 60 #define IMAPVER "Imap 4R1" 61 #else 62 #define LSIZE size 63 #define LTEXT text 64 #define DTYPE char 65 #define CONTENT_PART contents.part 66 #define CONTENT_MSG_BODY contents.msg.body 67 #define IMAPVER "Imap 4" 68 #endif 69 70 71 /* Determines how mm_list() and mm_lsub() are to return their results. */ 72 typedef enum { 73 FLIST_ARRAY, 74 FLIST_OBJECT 75 } folderlist_style_t; 76 77 typedef struct php_imap_le_struct { 78 MAILSTREAM *imap_stream; 79 long flags; 80 } pils; 81 82 typedef struct php_imap_mailbox_struct { 83 SIZEDTEXT text; 84 DTYPE delimiter; 85 long attributes; 86 struct php_imap_mailbox_struct *next; 87 } FOBJECTLIST; 88 89 typedef struct php_imap_error_struct { 90 SIZEDTEXT text; 91 long errflg; 92 struct php_imap_error_struct *next; 93 } ERRORLIST; 94 95 typedef struct _php_imap_message_struct { 96 unsigned long msgid; 97 struct _php_imap_message_struct *next; 98 } MESSAGELIST; 99 100 101 /* Functions */ 102 103 PHP_MINIT_FUNCTION(imap); 104 PHP_RINIT_FUNCTION(imap); 105 PHP_RSHUTDOWN_FUNCTION(imap); 106 PHP_MINFO_FUNCTION(imap); 107 108 PHP_FUNCTION(imap_open); 109 PHP_FUNCTION(imap_popen); 110 PHP_FUNCTION(imap_reopen); 111 PHP_FUNCTION(imap_num_msg); 112 PHP_FUNCTION(imap_num_recent); 113 PHP_FUNCTION(imap_headers); 114 PHP_FUNCTION(imap_headerinfo); 115 PHP_FUNCTION(imap_rfc822_parse_headers); 116 PHP_FUNCTION(imap_body); 117 PHP_FUNCTION(imap_fetchstructure); 118 PHP_FUNCTION(imap_fetchbody); 119 PHP_FUNCTION(imap_fetchmime); 120 PHP_FUNCTION(imap_savebody); 121 PHP_FUNCTION(imap_gc); 122 PHP_FUNCTION(imap_expunge); 123 PHP_FUNCTION(imap_delete); 124 PHP_FUNCTION(imap_undelete); 125 PHP_FUNCTION(imap_check); 126 PHP_FUNCTION(imap_close); 127 PHP_FUNCTION(imap_mail_copy); 128 PHP_FUNCTION(imap_mail_move); 129 PHP_FUNCTION(imap_createmailbox); 130 PHP_FUNCTION(imap_renamemailbox); 131 PHP_FUNCTION(imap_deletemailbox); 132 PHP_FUNCTION(imap_listmailbox); 133 PHP_FUNCTION(imap_scanmailbox); 134 PHP_FUNCTION(imap_subscribe); 135 PHP_FUNCTION(imap_unsubscribe); 136 PHP_FUNCTION(imap_append); 137 PHP_FUNCTION(imap_ping); 138 PHP_FUNCTION(imap_base64); 139 PHP_FUNCTION(imap_qprint); 140 PHP_FUNCTION(imap_8bit); 141 PHP_FUNCTION(imap_binary); 142 PHP_FUNCTION(imap_mailboxmsginfo); 143 PHP_FUNCTION(imap_rfc822_write_address); 144 PHP_FUNCTION(imap_rfc822_parse_adrlist); 145 PHP_FUNCTION(imap_setflag_full); 146 PHP_FUNCTION(imap_clearflag_full); 147 PHP_FUNCTION(imap_sort); 148 PHP_FUNCTION(imap_fetchheader); 149 PHP_FUNCTION(imap_fetchtext); 150 PHP_FUNCTION(imap_uid); 151 PHP_FUNCTION(imap_msgno); 152 PHP_FUNCTION(imap_list); 153 PHP_FUNCTION(imap_list_full); 154 PHP_FUNCTION(imap_listscan); 155 PHP_FUNCTION(imap_lsub); 156 PHP_FUNCTION(imap_lsub_full); 157 PHP_FUNCTION(imap_create); 158 PHP_FUNCTION(imap_rename); 159 PHP_FUNCTION(imap_status); 160 PHP_FUNCTION(imap_bodystruct); 161 PHP_FUNCTION(imap_fetch_overview); 162 PHP_FUNCTION(imap_mail_compose); 163 PHP_FUNCTION(imap_alerts); 164 PHP_FUNCTION(imap_errors); 165 PHP_FUNCTION(imap_last_error); 166 PHP_FUNCTION(imap_mail); 167 PHP_FUNCTION(imap_search); 168 PHP_FUNCTION(imap_utf8); 169 PHP_FUNCTION(imap_utf7_decode); 170 PHP_FUNCTION(imap_utf7_encode); 171 #ifdef HAVE_IMAP_MUTF7 172 PHP_FUNCTION(imap_utf8_to_mutf7); 173 PHP_FUNCTION(imap_mutf7_to_utf8); 174 #endif 175 PHP_FUNCTION(imap_mime_header_decode); 176 PHP_FUNCTION(imap_thread); 177 PHP_FUNCTION(imap_timeout); 178 179 #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) 180 PHP_FUNCTION(imap_get_quota); 181 PHP_FUNCTION(imap_get_quotaroot); 182 PHP_FUNCTION(imap_set_quota); 183 PHP_FUNCTION(imap_setacl); 184 PHP_FUNCTION(imap_getacl); 185 #endif 186 187 188 ZEND_BEGIN_MODULE_GLOBALS(imap) 189 char *imap_user; 190 char *imap_password; 191 192 STRINGLIST *imap_alertstack; 193 ERRORLIST *imap_errorstack; 194 195 STRINGLIST *imap_folders; 196 STRINGLIST *imap_folders_tail; 197 STRINGLIST *imap_sfolders; 198 STRINGLIST *imap_sfolders_tail; 199 MESSAGELIST *imap_messages; 200 MESSAGELIST *imap_messages_tail; 201 FOBJECTLIST *imap_folder_objects; 202 FOBJECTLIST *imap_folder_objects_tail; 203 FOBJECTLIST *imap_sfolder_objects; 204 FOBJECTLIST *imap_sfolder_objects_tail; 205 206 folderlist_style_t folderlist_style; 207 long status_flags; 208 unsigned long status_messages; 209 unsigned long status_recent; 210 unsigned long status_unseen; 211 unsigned long status_uidnext; 212 unsigned long status_uidvalidity; 213 #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) 214 zval **quota_return; 215 zval *imap_acl_list; 216 #endif 217 /* php_stream for php_mail_gets() */ 218 php_stream *gets_stream; 219 zend_bool enable_rsh; 220 ZEND_END_MODULE_GLOBALS(imap) 221 222 #ifdef ZTS 223 # define IMAPG(v) TSRMG(imap_globals_id, zend_imap_globals *, v) 224 #else 225 # define IMAPG(v) (imap_globals.v) 226 #endif 227 228 #else 229 230 #define imap_module_ptr NULL 231 232 #endif 233 234 #define phpext_imap_ptr imap_module_ptr 235 236 #endif /* PHP_IMAP_H */ 237