1 /* 2 +----------------------------------------------------------------------+ 3 | PHP Version 7 | 4 +----------------------------------------------------------------------+ 5 | Copyright (c) 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@php.net> | 27 +----------------------------------------------------------------------+ 28 */ 29 30 #ifndef PHP_IMAP_H 31 #define PHP_IMAP_H 32 33 #if HAVE_IMAP 34 35 #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) 36 37 /* For now these appear on Windows, remove this check if it appears outside */ 38 # ifdef PHP_WIN32 39 /* Undefine these LOG defines to avoid warnings */ 40 # undef LOG_EMERG 41 # undef LOG_CRIT 42 # undef LOG_ERR 43 # undef LOG_WARNING 44 # undef LOG_NOTICE 45 # undef LOG_DEBUG 46 47 /* c-client also redefines its own ftruncate */ 48 # undef ftruncate 49 # endif 50 51 /* these are used for quota support */ 52 # include "c-client.h" /* includes mail.h and rfc822.h */ 53 # include "imap4r1.h" /* location of c-client quota functions */ 54 #else 55 # include "mail.h" 56 # include "rfc822.h" 57 #endif 58 59 extern zend_module_entry imap_module_entry; 60 #define imap_module_ptr &imap_module_entry 61 62 #include "php_version.h" 63 #define PHP_IMAP_VERSION PHP_VERSION 64 65 /* Data types */ 66 67 #ifdef IMAP41 68 #define LSIZE text.size 69 #define LTEXT text.data 70 #define DTYPE int 71 #define CONTENT_PART nested.part 72 #define CONTENT_MSG_BODY nested.msg->body 73 #define IMAPVER "Imap 4R1" 74 #else 75 #define LSIZE size 76 #define LTEXT text 77 #define DTYPE char 78 #define CONTENT_PART contents.part 79 #define CONTENT_MSG_BODY contents.msg.body 80 #define IMAPVER "Imap 4" 81 #endif 82 83 84 /* Determines how mm_list() and mm_lsub() are to return their results. */ 85 typedef enum { 86 FLIST_ARRAY, 87 FLIST_OBJECT 88 } folderlist_style_t; 89 90 typedef struct php_imap_le_struct { 91 MAILSTREAM *imap_stream; 92 long flags; 93 } pils; 94 95 typedef struct php_imap_mailbox_struct { 96 SIZEDTEXT text; 97 DTYPE delimiter; 98 long attributes; 99 struct php_imap_mailbox_struct *next; 100 } FOBJECTLIST; 101 102 typedef struct php_imap_error_struct { 103 SIZEDTEXT text; 104 long errflg; 105 struct php_imap_error_struct *next; 106 } ERRORLIST; 107 108 typedef struct _php_imap_message_struct { 109 unsigned long msgid; 110 struct _php_imap_message_struct *next; 111 } MESSAGELIST; 112 113 114 /* Functions */ 115 116 PHP_MINIT_FUNCTION(imap); 117 PHP_RINIT_FUNCTION(imap); 118 PHP_RSHUTDOWN_FUNCTION(imap); 119 PHP_MINFO_FUNCTION(imap); 120 121 PHP_FUNCTION(imap_open); 122 PHP_FUNCTION(imap_popen); 123 PHP_FUNCTION(imap_reopen); 124 PHP_FUNCTION(imap_num_msg); 125 PHP_FUNCTION(imap_num_recent); 126 PHP_FUNCTION(imap_headers); 127 PHP_FUNCTION(imap_headerinfo); 128 PHP_FUNCTION(imap_rfc822_parse_headers); 129 PHP_FUNCTION(imap_body); 130 PHP_FUNCTION(imap_fetchstructure); 131 PHP_FUNCTION(imap_fetchbody); 132 PHP_FUNCTION(imap_fetchmime); 133 PHP_FUNCTION(imap_savebody); 134 PHP_FUNCTION(imap_gc); 135 PHP_FUNCTION(imap_expunge); 136 PHP_FUNCTION(imap_delete); 137 PHP_FUNCTION(imap_undelete); 138 PHP_FUNCTION(imap_check); 139 PHP_FUNCTION(imap_close); 140 PHP_FUNCTION(imap_mail_copy); 141 PHP_FUNCTION(imap_mail_move); 142 PHP_FUNCTION(imap_createmailbox); 143 PHP_FUNCTION(imap_renamemailbox); 144 PHP_FUNCTION(imap_deletemailbox); 145 PHP_FUNCTION(imap_listmailbox); 146 PHP_FUNCTION(imap_scanmailbox); 147 PHP_FUNCTION(imap_subscribe); 148 PHP_FUNCTION(imap_unsubscribe); 149 PHP_FUNCTION(imap_append); 150 PHP_FUNCTION(imap_ping); 151 PHP_FUNCTION(imap_base64); 152 PHP_FUNCTION(imap_qprint); 153 PHP_FUNCTION(imap_8bit); 154 PHP_FUNCTION(imap_binary); 155 PHP_FUNCTION(imap_mailboxmsginfo); 156 PHP_FUNCTION(imap_rfc822_write_address); 157 PHP_FUNCTION(imap_rfc822_parse_adrlist); 158 PHP_FUNCTION(imap_setflag_full); 159 PHP_FUNCTION(imap_clearflag_full); 160 PHP_FUNCTION(imap_sort); 161 PHP_FUNCTION(imap_fetchheader); 162 PHP_FUNCTION(imap_fetchtext); 163 PHP_FUNCTION(imap_uid); 164 PHP_FUNCTION(imap_msgno); 165 PHP_FUNCTION(imap_list); 166 PHP_FUNCTION(imap_list_full); 167 PHP_FUNCTION(imap_listscan); 168 PHP_FUNCTION(imap_lsub); 169 PHP_FUNCTION(imap_lsub_full); 170 PHP_FUNCTION(imap_create); 171 PHP_FUNCTION(imap_rename); 172 PHP_FUNCTION(imap_status); 173 PHP_FUNCTION(imap_bodystruct); 174 PHP_FUNCTION(imap_fetch_overview); 175 PHP_FUNCTION(imap_mail_compose); 176 PHP_FUNCTION(imap_alerts); 177 PHP_FUNCTION(imap_errors); 178 PHP_FUNCTION(imap_last_error); 179 PHP_FUNCTION(imap_mail); 180 PHP_FUNCTION(imap_search); 181 PHP_FUNCTION(imap_utf8); 182 PHP_FUNCTION(imap_utf7_decode); 183 PHP_FUNCTION(imap_utf7_encode); 184 #ifdef HAVE_IMAP_MUTF7 185 PHP_FUNCTION(imap_utf8_to_mutf7); 186 PHP_FUNCTION(imap_mutf7_to_utf8); 187 #endif 188 PHP_FUNCTION(imap_mime_header_decode); 189 PHP_FUNCTION(imap_thread); 190 PHP_FUNCTION(imap_timeout); 191 192 #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) 193 PHP_FUNCTION(imap_get_quota); 194 PHP_FUNCTION(imap_get_quotaroot); 195 PHP_FUNCTION(imap_set_quota); 196 PHP_FUNCTION(imap_setacl); 197 PHP_FUNCTION(imap_getacl); 198 #endif 199 200 201 ZEND_BEGIN_MODULE_GLOBALS(imap) 202 char *imap_user; 203 char *imap_password; 204 205 STRINGLIST *imap_alertstack; 206 ERRORLIST *imap_errorstack; 207 208 STRINGLIST *imap_folders; 209 STRINGLIST *imap_folders_tail; 210 STRINGLIST *imap_sfolders; 211 STRINGLIST *imap_sfolders_tail; 212 MESSAGELIST *imap_messages; 213 MESSAGELIST *imap_messages_tail; 214 FOBJECTLIST *imap_folder_objects; 215 FOBJECTLIST *imap_folder_objects_tail; 216 FOBJECTLIST *imap_sfolder_objects; 217 FOBJECTLIST *imap_sfolder_objects_tail; 218 219 folderlist_style_t folderlist_style; 220 long status_flags; 221 unsigned long status_messages; 222 unsigned long status_recent; 223 unsigned long status_unseen; 224 unsigned long status_uidnext; 225 unsigned long status_uidvalidity; 226 #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) 227 zval **quota_return; 228 zval *imap_acl_list; 229 #endif 230 /* php_stream for php_mail_gets() */ 231 php_stream *gets_stream; 232 zend_bool enable_rsh; 233 ZEND_END_MODULE_GLOBALS(imap) 234 235 #if defined(ZTS) && defined(COMPILE_DL_IMAP) 236 ZEND_TSRMLS_CACHE_EXTERN() 237 #endif 238 239 ZEND_EXTERN_MODULE_GLOBALS(imap) 240 #define IMAPG(v) ZEND_MODULE_GLOBALS_ACCESSOR(imap, v) 241 242 #else 243 244 #define imap_module_ptr NULL 245 246 #endif 247 248 #define phpext_imap_ptr imap_module_ptr 249 250 #endif /* PHP_IMAP_H */ 251