CVS update: php31/ext/imap
| From: | rasmus | Date: | Tue, 25 Aug 1998 02:44:11 +0000 |
| Subject: | CVS update: php31/ext/imap | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-562@lists.php.net to get a copy of this message | ||
Date: Monday August 24, 1998 @ 22:44
Author: rasmus
Update of /repository/php31/ext/imap
In directory asf:/export/home/rasmus/php31/ext/imap
Modified Files:
imap.c imap.h
Log Message:
Bring 3.0 imap.c changes into 3.1 tree
Index: php31/ext/imap/imap.c
diff -c php31/ext/imap/imap.c:2.1 php31/ext/imap/imap.c:2.2
*** php31/ext/imap/imap.c:2.1 Fri Jul 3 12:24:27 1998
--- php31/ext/imap/imap.c Mon Aug 24 22:44:11 1998
***************
*** 1,6 ****
/*
+----------------------------------------------------------------------+
! | PHP HTML Embedded Scripting Language Version 3.0 |
+----------------------------------------------------------------------+
| Copyright (c) 1997,1998 PHP Development Team (See Credits file) |
+----------------------------------------------------------------------+
--- 1,6 ----
/*
+----------------------------------------------------------------------+
! | PHP HTML Embedded Scripting Language Version 3.1 |
+----------------------------------------------------------------------+
| Copyright (c) 1997,1998 PHP Development Team (See Credits file) |
+----------------------------------------------------------------------+
***************
*** 23,53 ****
| If you did not, or have any questions about PHP licensing, please |
| contact core@php.net. |
+----------------------------------------------------------------------+
! | Authors: |
! | |
+----------------------------------------------------------------------+
*/
#include "php.h"
! #if HAVE_IMAP
! #include "imap.h"
! #include "modules.h"
! #include "php3_list.h"
#include <stdio.h>
#include <ctype.h>
#include <signal.h>
! #ifdef ERROR
! #undef ERROR
! #endif
#include "mail.h"
#include "rfc822.h"
! MAILSTREAM *mail_close_it (MAILSTREAM *stream);
#if (WIN32|WINNT)
#include "winsock.h"
- #define IMAP41
#endif
#ifdef IMAP41
--- 23,67 ----
| If you did not, or have any questions about PHP licensing, please |
| contact core@php.net. |
+----------------------------------------------------------------------+
! | Authors: Rex Logan <veebert@dimensional.com> |
! | Mark Musone <musone@afterfive.com> |
! | Brian Wang <brian@vividnet.com> |
! | Kaj-Michael Lang <milang@tal.org> |
! | Antoni Pamies Olive <toni@readysoft.net> |
! | Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
+----------------------------------------------------------------------+
*/
+ /* $Id: imap.c,v 2.2 1998/08/25 02:44:11 rasmus Exp $ */
+
+ #define IMAP41
+
+ #ifdef ERROR
+ #undef ERROR
+ #endif
+ #if !(WIN32|WINNT)
+ #include "config.h"
+ #endif
#include "php.h"
+ #include "internal_functions.h"
! #if COMPILE_DL
! #include "dl/phpdl.h"
! #endif
! #if HAVE_IMAP
+ #include <time.h>
#include <stdio.h>
#include <ctype.h>
#include <signal.h>
! #include "php3_list.h"
! #include "imap.h"
#include "mail.h"
#include "rfc822.h"
! #include "modules.h"
#if (WIN32|WINNT)
#include "winsock.h"
#endif
#ifdef IMAP41
***************
*** 65,70 ****
--- 79,87 ----
#define CONTENT_MSG_BODY contents.msg.body
#define IMAPVER "Imap 4"
#endif
+
+ #define PHP_EXPUNGE 32768
+
/*
* this array should be set up as:
* {"PHPScriptFunctionName",dllFunctionName,1}
***************
*** 76,126 ****
extern void rfc822_date(char *date);
extern char *cpystr(const char *string);
extern unsigned long find_rightmost_bit (unsigned long *valptr);
function_entry imap_functions[] =
{
! {"imap_open", php3_imap_open, NULL},
! {"imap_reopen", php3_imap_reopen, NULL},
! {"imap_num_msg", php3_imap_num_msg, NULL},
! {"imap_num_recent", php3_imap_num_recent, NULL},
! {"imap_headers", php3_imap_headers, NULL},
! {"imap_header", php3_imap_headerinfo, NULL},
! {"imap_headerinfo", php3_imap_headerinfo, NULL},
! {"imap_body", php3_imap_body, NULL},
! {"imap_fetchstructure", php3_imap_fetchstructure, NULL},
! {"imap_fetchbody", php3_imap_fetchbody, NULL},
! {"imap_expunge", php3_imap_expunge, NULL},
! {"imap_delete", php3_imap_delete, NULL},
! {"imap_undelete", php3_imap_undelete, NULL},
! {"imap_check", php3_imap_check, NULL},
! {"imap_close", php3_imap_close, NULL},
! {"imap_mail_copy", php3_imap_mail_copy, NULL},
! {"imap_mail_move", php3_imap_mail_move, NULL},
! {"imap_createmailbox", php3_imap_createmailbox, NULL},
! {"imap_renamemailbox", php3_imap_renamemailbox, NULL},
! {"imap_deletemailbox", php3_imap_deletemailbox, NULL},
! {"imap_listmailbox", php3_imap_list, NULL},
! {"imap_scanmailbox", php3_imap_listscan, NULL},
! {"imap_listsubscribed", php3_imap_lsub, NULL},
! {"imap_subscribe", php3_imap_subscribe, NULL},
! {"imap_unsubscribe", php3_imap_unsubscribe, NULL},
{"imap_append", php3_imap_append, NULL},
{"imap_ping", php3_imap_ping, NULL},
! {"imap_base64", php3_imap_base64, NULL},
{"imap_qprint", php3_imap_qprint, NULL},
{"imap_8bit", php3_imap_8bit, NULL},
! {NULL, NULL, NULL}
};
! php3_module_entry imap_module_entry = {
! IMAPVER, imap_functions, imap_init, NULL, NULL, NULL, NULL, 0, 0, 0, NULL
};
#if COMPILE_DL
! DLEXPORT php3_module_entry *get_module(void) { return &imap_module_entry; }
#endif
/*
--- 93,170 ----
extern void rfc822_date(char *date);
extern char *cpystr(const char *string);
extern unsigned long find_rightmost_bit (unsigned long *valptr);
+ extern void fs_give (void **block);
+ int add_assoc_object(pval *arg, char *key, pval tmp);
+ int add_next_index_object(pval *arg, pval tmp);
+ void imap_add_body( pval *arg, BODY *body );
+ typedef struct php3_imap_le_struct {
+ MAILSTREAM *imap_stream;
+ long flags;
+ } pils;
+ MAILSTREAM *mail_close_it (pils *imap_le_struct);
+
function_entry imap_functions[] =
{
! {"imap_open", php3_imap_open, NULL},
! {"imap_reopen", php3_imap_reopen, NULL},
! {"imap_num_msg", php3_imap_num_msg, NULL},
! {"imap_num_recent", php3_imap_num_recent, NULL},
! {"imap_headers", php3_imap_headers, NULL},
! {"imap_header", php3_imap_headerinfo, NULL},
! {"imap_headerinfo", php3_imap_headerinfo, NULL},
! {"imap_body", php3_imap_body, NULL},
! {"imap_fetchstructure", php3_imap_fetchstructure, NULL},
! {"imap_fetchbody", php3_imap_fetchbody, NULL},
! {"imap_expunge", php3_imap_expunge, NULL},
! {"imap_delete", php3_imap_delete, NULL},
! {"imap_undelete", php3_imap_undelete, NULL},
! {"imap_check", php3_imap_check, NULL},
! {"imap_close", php3_imap_close, NULL},
! {"imap_mail_copy", php3_imap_mail_copy, NULL},
! {"imap_mail_move", php3_imap_mail_move, NULL},
! {"imap_createmailbox", php3_imap_createmailbox, NULL},
! {"imap_renamemailbox", php3_imap_renamemailbox, NULL},
! {"imap_deletemailbox", php3_imap_deletemailbox, NULL},
! {"imap_listmailbox", php3_imap_list, NULL},
! {"imap_scanmailbox", php3_imap_listscan, NULL},
! {"imap_listsubscribed", php3_imap_lsub, NULL},
! {"imap_subscribe", php3_imap_subscribe, NULL},
! {"imap_unsubscribe", php3_imap_unsubscribe, NULL},
{"imap_append", php3_imap_append, NULL},
{"imap_ping", php3_imap_ping, NULL},
! {"imap_base64", php3_imap_base64, NULL},
{"imap_qprint", php3_imap_qprint, NULL},
{"imap_8bit", php3_imap_8bit, NULL},
! {"imap_binary", php3_imap_binary, NULL},
! {"imap_mailboxmsginfo", php3_imap_mailboxmsginfo, NULL},
! {"imap_rfc822_write_address", php3_imap_rfc822_write_address, NULL},
! {"imap_rfc822_parse_adrlist", php3_imap_rfc822_parse_adrlist, NULL},
! {"imap_setflag_full", php3_imap_setflag_full, NULL},
! {"imap_clearflag_full", php3_imap_clearflag_full, NULL},
! {"imap_sort", php3_imap_sort, NULL},
! {"imap_fetchheader", php3_imap_fetchheader, NULL},
! {"imap_fetchtext", php3_imap_body, NULL},
! {"imap_uid", php3_imap_uid, NULL},
! {"imap_msgno",php3_imap_msgno, NULL},
! {"imap_list", php3_imap_list, NULL},
! {"imap_scan", php3_imap_listscan, NULL},
! {"imap_lsub", php3_imap_lsub, NULL},
! {"imap_create", php3_imap_createmailbox, NULL},
! {"imap_rename", php3_imap_renamemailbox, NULL},
! {"imap_status", php3_imap_status, NULL},
! {NULL, NULL, NULL}
};
! php3_module_entry php3_imap_module_entry = {
! IMAPVER, imap_functions, imap_init, NULL, NULL, NULL,imap_info, 0, 0, 0, NULL
};
#if COMPILE_DL
! DLEXPORT php3_module_entry *get_module(void) { return &php3_imap_module_entry; }
#endif
/*
***************
*** 133,144 ****
char imap_password[80]="";
STRINGLIST *imap_folders=NIL;
STRINGLIST *imap_sfolders=NIL;
! MAILSTREAM *mail_close_it (MAILSTREAM *stream)
{
! return mail_close_full ( stream,NIL);
}
int imap_init(INIT_FUNC_ARGS)
{
#if WIN32|WINNT
--- 177,221 ----
char imap_password[80]="";
STRINGLIST *imap_folders=NIL;
STRINGLIST *imap_sfolders=NIL;
+ long status_flags;
+ unsigned long status_messages;
+ unsigned long status_recent;
+ unsigned long status_unseen;
+ unsigned long status_uidnext;
+ unsigned long status_uidvalidity;
+
+ MAILSTREAM *mail_close_it (pils *imap_le_struct)
+ {
+ MAILSTREAM *ret;
+ ret = mail_close_full (imap_le_struct->imap_stream,imap_le_struct->flags);
+ efree(imap_le_struct);
+ return ret;
+ }
+
+ inline int add_assoc_object(pval *arg, char *key, pval tmp)
+ {
+ return _php3_hash_update(arg->value.ht, key, strlen(key)+1, (void *) &tmp, sizeof(pval),
NULL);
+ }
! inline int add_next_index_object(pval *arg, pval tmp)
{
! return _php3_hash_next_index_insert( arg->value.ht, (void *) &tmp, sizeof(pval), NULL);
}
+
+ void imap_info(void)
+ {
+ php3_printf("Imap Support enabled<br>");
+ php3_printf("<table>");
+ php3_printf("<tr><td>Imap c-client Version:</td>");
+ #ifdef IMAP41
+ php3_printf("<td>Imap 4.1</td>");
+ #else
+ php3_printf("<td>Imap 4.0</td>");
+ #endif
+ php3_printf("</tr></table>");
+ }
+
int imap_init(INIT_FUNC_ARGS)
{
#if WIN32|WINNT
***************
*** 163,168 ****
--- 240,373 ----
#endif
mail_link (&dummydriver); /* link in the dummy driver */
auth_link (&auth_log); /* link in the log authenticator */
+ /* lets allow NIL */
+
+ REGISTER_MAIN_LONG_CONSTANT("NIL", NIL, CONST_PERSISTENT | CONST_CS);
+
+
+ /* Open Options */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_DEBUG", OP_DEBUG, CONST_PERSISTENT | CONST_CS);
+ /* debug protocol negotiations */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_READONLY", OP_READONLY, CONST_PERSISTENT |
CONST_CS);
+ /* read-only open */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_ANONYMOUS", OP_ANONYMOUS, CONST_PERSISTENT |
CONST_CS);
+ /* anonymous open of newsgroup */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_SHORTCACHE", OP_SHORTCACHE, CONST_PERSISTENT |
CONST_CS);
+
+ /* short (elt-only) caching */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_SILENT", OP_SILENT, CONST_PERSISTENT |
CONST_CS);
+ /* don't pass up events (internal use) */
+ REGISTER_MAIN_LONG_CONSTANT("OP_PROTOTYPE", OP_PROTOTYPE, CONST_PERSISTENT |
CONST_CS);
+ /* return driver prototype */
+ REGISTER_MAIN_LONG_CONSTANT("OP_HALFOPEN", OP_HALFOPEN, CONST_PERSISTENT |
CONST_CS);
+ /* half-open (IMAP connect but no select) */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_EXPUNGE", OP_EXPUNGE, CONST_PERSISTENT |
CONST_CS);
+ /* silently expunge recycle stream */
+
+ REGISTER_MAIN_LONG_CONSTANT("OP_SECURE", OP_SECURE, CONST_PERSISTENT | CONST_CS);
+ /* don't do non-secure authentication */
+
+ /*
+ PHP re-assigns CL_EXPUNGE a custom value that can be used as part of the imap_open() bitfield
+ because it seems like a good idea to be able to indicate that the mailbox should be
+ automatically expunged during imap_open in case the script get interrupted and it doesn't
get
+ to the imap_close() where this option is normally placed. If the c-client library adds other
+ options and the value for this one conflicts, simply make PHP_EXPUNGE higher at the top of
+ this file
+ */
+ REGISTER_MAIN_LONG_CONSTANT("CL_EXPUNGE", PHP_EXPUNGE, CONST_PERSISTENT |
CONST_CS);
+ /* expunge silently */
+
+
+ /* Fetch options */
+
+ REGISTER_MAIN_LONG_CONSTANT("FT_UID", FT_UID, CONST_PERSISTENT | CONST_CS);
+ /* argument is a UID */
+ REGISTER_MAIN_LONG_CONSTANT("FT_PEEK", FT_PEEK, CONST_PERSISTENT | CONST_CS);
+ /* peek at data */
+ REGISTER_MAIN_LONG_CONSTANT("FT_NOT", FT_NOT, CONST_PERSISTENT | CONST_CS);
+ /* NOT flag for header lines fetch */
+ REGISTER_MAIN_LONG_CONSTANT("FT_INTERNAL", FT_INTERNAL, CONST_PERSISTENT |
CONST_CS);
+ /* text can be internal strings */
+ REGISTER_MAIN_LONG_CONSTANT("FT_PREFETCHTEXT", FT_PREFETCHTEXT, CONST_PERSISTENT
| CONST_CS);
+ /* IMAP prefetch text when fetching header */
+
+
+ /* Flagging options */
+
+ REGISTER_MAIN_LONG_CONSTANT("ST_UID", ST_UID, CONST_PERSISTENT | CONST_CS);
+ /* argument is a UID sequence */
+ REGISTER_MAIN_LONG_CONSTANT("ST_SILENT", ST_SILENT, CONST_PERSISTENT |
CONST_CS);
+ /* don't return results */
+ REGISTER_MAIN_LONG_CONSTANT("ST_SET", ST_SET, CONST_PERSISTENT | CONST_CS);
+ /* set vs. clear */
+
+ /* Copy options */
+
+ REGISTER_MAIN_LONG_CONSTANT("CP_UID", CP_UID, CONST_PERSISTENT | CONST_CS);
+ /* argument is a UID sequence */
+ REGISTER_MAIN_LONG_CONSTANT("CP_MOVE", CP_MOVE, CONST_PERSISTENT | CONST_CS);
+ /* delete from source after copying */
+
+
+ /* Search/sort options */
+
+ REGISTER_MAIN_LONG_CONSTANT("SE_UID", SE_UID, CONST_PERSISTENT | CONST_CS);
+ /* return UID */
+ REGISTER_MAIN_LONG_CONSTANT("SE_FREE", SE_FREE, CONST_PERSISTENT | CONST_CS);
+ /* free search program after finished */
+ REGISTER_MAIN_LONG_CONSTANT("SE_NOPREFETCH", SE_NOPREFETCH, CONST_PERSISTENT |
CONST_CS);
+ /* no search prefetching */
+ REGISTER_MAIN_LONG_CONSTANT("SO_FREE", SO_FREE, CONST_PERSISTENT | CONST_CS);
+ /* free sort program after finished */
+ REGISTER_MAIN_LONG_CONSTANT("SO_NOSERVER", SO_NOSERVER, CONST_PERSISTENT |
CONST_CS);
+ /* don't do server-based sort */
+
+ /* Status options */
+
+ REGISTER_MAIN_LONG_CONSTANT("SA_MESSAGES",SA_MESSAGES , CONST_PERSISTENT |
CONST_CS);
+ /* number of messages */
+ REGISTER_MAIN_LONG_CONSTANT("SA_RECENT", SA_RECENT, CONST_PERSISTENT |
CONST_CS);
+ /* number of recent messages */
+ REGISTER_MAIN_LONG_CONSTANT("SA_UNSEEN",SA_UNSEEN , CONST_PERSISTENT |
CONST_CS);
+ /* number of unseen messages */
+ REGISTER_MAIN_LONG_CONSTANT("SA_UIDNEXT", SA_UIDNEXT, CONST_PERSISTENT |
CONST_CS);
+ /* next UID to be assigned */
+ REGISTER_MAIN_LONG_CONSTANT("SA_UIDVALIDITY",SA_UIDVALIDITY , CONST_PERSISTENT |
CONST_CS);
+ /* UID validity value */
+
+
+ /* Bits for mm_list() and mm_lsub() */
+
+ REGISTER_MAIN_LONG_CONSTANT("LATT_NOINFERIORS",LATT_NOINFERIORS ,
CONST_PERSISTENT | CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LATT_NOSELECT", LATT_NOSELECT, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LATT_MARKED", LATT_MARKED, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LATT_UNMARKED",LATT_UNMARKED , CONST_PERSISTENT |
CONST_CS);
+
+
+ /* Sort functions */
+
+ REGISTER_MAIN_LONG_CONSTANT("SORTDATE",SORTDATE , CONST_PERSISTENT | CONST_CS);
+ /* date */
+ REGISTER_MAIN_LONG_CONSTANT("SORTARRIVAL",SORTARRIVAL , CONST_PERSISTENT |
CONST_CS);
+ /* arrival date */
+ REGISTER_MAIN_LONG_CONSTANT("SORTFROM",SORTFROM , CONST_PERSISTENT | CONST_CS);
+ /* from */
+ REGISTER_MAIN_LONG_CONSTANT("SORTSUBJECT",SORTSUBJECT , CONST_PERSISTENT |
CONST_CS);
+ /* subject */
+ REGISTER_MAIN_LONG_CONSTANT("SORTTO",SORTTO , CONST_PERSISTENT | CONST_CS);
+ /* to */
+ REGISTER_MAIN_LONG_CONSTANT("SORTCC",SORTCC , CONST_PERSISTENT | CONST_CS);
+ /* cc */
+ REGISTER_MAIN_LONG_CONSTANT("SORTSIZE",SORTSIZE , CONST_PERSISTENT | CONST_CS);
+ /* size */
+
le_imap = register_list_destructors(mail_close_it,NULL);
return SUCCESS;
***************
*** 173,199 ****
pval *mailbox;
pval *user;
pval *passwd;
MAILSTREAM *imap_stream;
int ind;
!
! if (getParameters(ht, 3, &mailbox,&user,&passwd) == SUCCESS) {
convert_to_string(mailbox);
convert_to_string(user);
convert_to_string(passwd);
strcpy(imap_user,user->value.str.val);
strcpy(imap_password,passwd->value.str.val);
-
imap_stream = NIL;
! imap_stream = mail_open(imap_stream,mailbox->value.str.val,NIL);
if (imap_stream == NIL){
php3_error(E_WARNING,"Couldn't open stream %s\n",mailbox->value.str.val);
RETURN_FALSE;
}
! ind = php3_list_insert(imap_stream, le_imap);
RETURN_LONG(ind);
- } else {
- WRONG_PARAM_COUNT;
}
return;
}
--- 378,423 ----
pval *mailbox;
pval *user;
pval *passwd;
+ pval *options;
MAILSTREAM *imap_stream;
+ pils *imap_le_struct;
+ long flags=NIL;
+ long cl_flags=NIL;
+
int ind;
! int myargc=ARG_COUNT(ht);
!
! if (myargc <3 || myargc >4 || getParameters(ht, myargc,
&mailbox,&user,&passwd,&options) == FAILURE) {
! WRONG_PARAM_COUNT;
! } else {
convert_to_string(mailbox);
convert_to_string(user);
convert_to_string(passwd);
+ if(myargc ==4) {
+ convert_to_long(options);
+ flags = options->value.lval;
+ if(flags & PHP_EXPUNGE) {
+ cl_flags = CL_EXPUNGE;
+ flags ^= PHP_EXPUNGE;
+ }
+ }
strcpy(imap_user,user->value.str.val);
strcpy(imap_password,passwd->value.str.val);
imap_stream = NIL;
! imap_stream = mail_open(imap_stream,mailbox->value.str.val,flags);
!
if (imap_stream == NIL){
php3_error(E_WARNING,"Couldn't open stream %s\n",mailbox->value.str.val);
RETURN_FALSE;
}
! /* Note that if we ever come up with a persistent imap stream, the persistent version of this
! struct needs to be malloc'ed and not emalloc'ed */
! imap_le_struct = emalloc(sizeof(pils));
! imap_le_struct->imap_stream = imap_stream;
! imap_le_struct->flags = cl_flags;
! ind = php3_list_insert(imap_le_struct, le_imap);
RETURN_LONG(ind);
}
return;
}
***************
*** 203,233 ****
{
pval *streamind;
pval *mailbox;
! pval *user;
! pval *passwd;
MAILSTREAM *imap_stream;
int ind, ind_type;
! if (getParameters(ht, 4,&streamind, &mailbox,&user,&passwd) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
convert_to_string(mailbox);
! convert_to_string(user);
! convert_to_string(passwd);
! strcpy(imap_user,user->value.str.val);
! strcpy(imap_password,passwd->value.str.val);
!
! imap_stream = mail_open(imap_stream,mailbox->value.str.val,NIL);
! if (imap_stream == NIL){
php3_error(E_WARNING,"Couldn't re-open stream\n");
RETURN_FALSE;
}
--- 427,464 ----
{
pval *streamind;
pval *mailbox;
! pval *options;
MAILSTREAM *imap_stream;
+ pils *imap_le_struct;
int ind, ind_type;
+ long flags=NIL;
+ long cl_flags=NIL;
+ int myargc=ARG_COUNT(ht);
! if (myargc<2 || myargc>3 || getParameters(ht,myargc,&streamind, &mailbox,
&options) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
convert_to_string(mailbox);
! if(myargc == 3) {
! convert_to_long(options);
! flags = options->value.lval;
! if(flags & PHP_EXPUNGE) {
! cl_flags = CL_EXPUNGE;
! flags ^= PHP_EXPUNGE;
! }
! imap_le_struct->flags = cl_flags;
! }
! imap_stream = mail_open(imap_le_struct->imap_stream, mailbox->value.str.val, flags);
! if (imap_stream == NIL) {
php3_error(E_WARNING,"Couldn't re-open stream\n");
RETURN_FALSE;
}
***************
*** 236,270 ****
void php3_imap_append(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind,*folder, *message;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
!
! if ( ARG_COUNT(ht) != 3 || getParameters( ht, 3, &streamind, &folder, &message) ==
FAILURE) {
WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(folder);
! convert_to_string(message);
!
! ind = streamind->value.lval;
!
! imap_stream = ( MAILSTREAM *)php3_list_find( ind, &ind_type );
!
! if ( !imap_stream || ind_type != le_imap ) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! mail_append( imap_stream, folder->value.str.val, (STRING *)message->value.str.val );
! RETURN_TRUE;
}
void php3_imap_num_msg(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
WRONG_PARAM_COUNT;
--- 467,510 ----
void php3_imap_append(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind,*folder, *message,*flags;
! int ind, ind_type;
! pils *imap_le_struct;
! STRING st;
! int myargc=ARG_COUNT(ht);
!
! if ( myargc < 3 || myargc > 4 || getParameters( ht, myargc, &streamind, &folder,
&message,&flags) == FAILURE) {
WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(folder);
! convert_to_string(message);
! if (myargc == 4) convert_to_long(flags);
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find( ind, &ind_type );
!
! if ( !imap_le_struct || ind_type != le_imap ) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! INIT (&st,mail_string,(void *) message->value.str.val,message->value.str.len);
! if(mail_append_full(imap_le_struct->imap_stream,
folder->value.str.val,myargc==4?flags->value.str.val:NIL,NIL,&st))
! {
! RETURN_TRUE;
! }
! else
! {
! RETURN_FALSE;
! }
}
void php3_imap_num_msg(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 274,334 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! RETURN_LONG(imap_stream->nmsgs);
}
void php3_imap_ping(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
!
! if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long( streamind );
! ind = streamind->value.lval;
!
! imap_stream = ( MAILSTREAM *)php3_list_find( ind, &ind_type );
! if ( !imap_stream || ind_type != le_imap ) {
! php3_error( E_WARNING, "Unable to find stream pointer" );
! RETURN_FALSE;
! }
! RETURN_LONG( mail_ping( imap_stream ) );
}
void php3_imap_num_recent(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
! if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long(streamind);
! ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! RETURN_LONG(imap_stream->recent);
}
void php3_imap_expunge(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
WRONG_PARAM_COUNT;
--- 514,574 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! RETURN_LONG(imap_le_struct->imap_stream->nmsgs);
}
void php3_imap_ping(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind;
! int ind, ind_type;
! pils *imap_le_struct;
!
! if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long( streamind );
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find( ind, &ind_type );
! if ( !imap_le_struct || ind_type != le_imap ) {
! php3_error( E_WARNING, "Unable to find stream pointer" );
! RETURN_FALSE;
! }
! RETURN_LONG( mail_ping( imap_le_struct->imap_stream ) );
}
void php3_imap_num_recent(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind;
! int ind, ind_type;
! pils *imap_le_struct;
! if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long(streamind);
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! RETURN_LONG(imap_le_struct->imap_stream->recent);
}
void php3_imap_expunge(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 338,351 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! mail_expunge (imap_stream);
RETURN_TRUE;
}
--- 578,591 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! mail_expunge (imap_le_struct->imap_stream);
RETURN_TRUE;
}
***************
*** 353,365 ****
void php3_imap_close(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *ind;
! if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &ind) == FAILURE) {
WRONG_PARAM_COUNT;
}
! convert_to_long(ind);
! php3_list_delete(ind->value.lval);
RETURN_TRUE;
}
--- 593,625 ----
void php3_imap_close(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *options, *streamind;
! int ind, ind_type;
! pils *imap_le_struct=NULL;
! int myargcount=ARG_COUNT(ht);
! long flags = NIL;
! if (myargcount < 1 || myargcount > 2 || getParameters(ht, myargcount, &streamind,
&options) == FAILURE) {
WRONG_PARAM_COUNT;
}
! convert_to_long(streamind);
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct->imap_stream || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! if(myargcount==2) {
! convert_to_long(options);
! flags = options->value.lval;
! /* Do the translation from PHP's internal PHP_EXPUNGE define to c-client's CL_EXPUNGE
*/
! if(flags & PHP_EXPUNGE) {
! flags ^= PHP_EXPUNGE;
! flags |= CL_EXPUNGE;
! }
! imap_le_struct->flags = flags;
! }
! php3_list_delete(ind);
RETURN_TRUE;
}
***************
*** 368,385 ****
{
pval *streamind;
int ind, ind_type;
unsigned int msgno;
! MAILSTREAM *imap_stream;
char tmp[MAILTMPLEN];
- char tmp2[MAILTMPLEN];
- char tmp3[MAILTMPLEN];
- char tmp4[MAILTMPLEN];
- char mysubject[MAILTMPLEN];
- char myfrom[MAILTMPLEN];
- /* unused vars, left here just in case needed for some reason
- char *t;
- unsigned long i;
- */
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
WRONG_PARAM_COUNT;
--- 628,638 ----
{
pval *streamind;
int ind, ind_type;
+ unsigned long i;
+ char *t;
unsigned int msgno;
! pils *imap_le_struct;
char tmp[MAILTMPLEN];
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 389,397 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
--- 642,650 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct->imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
***************
*** 401,409 ****
RETURN_FALSE;
}
! for (msgno = 1; msgno <= imap_stream->nmsgs; msgno++) {
! MESSAGECACHE * cache = mail_elt (imap_stream,msgno);
! mail_fetchstructure (imap_stream,msgno,NIL);
tmp[0] = cache->recent ? (cache->seen ? 'R': 'N') : ' ';
tmp[1] = (cache->recent | cache->seen) ? ' ' : 'U';
tmp[2] = cache->flagged ? 'F' : ' ';
--- 654,662 ----
RETURN_FALSE;
}
! for (msgno = 1; msgno <= imap_le_struct->imap_stream->nmsgs; msgno++) {
! MESSAGECACHE * cache = mail_elt (imap_le_struct->imap_stream,msgno);
! mail_fetchstructure (imap_le_struct->imap_stream,msgno,NIL);
tmp[0] = cache->recent ? (cache->seen ? 'R': 'N') : ' ';
tmp[1] = (cache->recent | cache->seen) ? ' ' : 'U';
tmp[2] = cache->flagged ? 'F' : ' ';
***************
*** 413,439 ****
mail_date (tmp+11,cache);
tmp[17] = ' ';
tmp[18] = '\0';
! mail_fetchfrom (tmp2,imap_stream,msgno,(long) 30);
! sprintf(myfrom,"%-30s",tmp2);
! strcat(tmp,myfrom);
! strcat(tmp," ");
!
! /* Don't want user flags.
! if (i = cache->user_flags) {
strcat (tmp,"{");
while (i) {
! strcat (tmp,imap_stream->user_flags[find_rightmost_bit (&i)]);
if (i) strcat (tmp," ");
}
strcat (tmp,"} ");
}
! */
!
! mail_fetchsubject(tmp3,imap_stream,msgno,(long)25);
! sprintf(mysubject,"%-25s",tmp3);
! strcat(tmp,mysubject);
! sprintf (tmp4," %ld",cache->rfc822_size);
! strcat(tmp,tmp4);
add_next_index_string(return_value,tmp,1);
}
--- 666,683 ----
mail_date (tmp+11,cache);
tmp[17] = ' ';
tmp[18] = '\0';
! mail_fetchfrom (tmp+18,imap_le_struct->imap_stream,msgno,(long) 20);
! strcat (tmp," ");
! if ((i = cache->user_flags)) {
strcat (tmp,"{");
while (i) {
! strcat (tmp,imap_le_struct->imap_stream->user_flags[find_rightmost_bit (&i)]);
if (i) strcat (tmp," ");
}
strcat (tmp,"} ");
}
! mail_fetchsubject(t=tmp+strlen(tmp),imap_le_struct->imap_stream,msgno,(long)25);
! sprintf (t+=strlen(t)," (%ld chars)",cache->rfc822_size);
add_next_index_string(return_value,tmp,1);
}
***************
*** 441,491 ****
void php3_imap_body(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, * msgno;
int ind, ind_type;
! MAILSTREAM *imap_stream;
!
! if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
convert_to_long(msgno);
!
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! RETVAL_STRING(mail_fetchtext (imap_stream,msgno->value.lval),1);
}
! void php3_imap_mail_copy(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind,*seq, *folder;
int ind, ind_type;
! MAILSTREAM *imap_stream;
! if (ARG_COUNT(ht)!=3
! || getParameters(ht,3,&streamind,&seq,&folder) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
convert_to_string(seq);
convert_to_string(folder);
!
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_copy(imap_stream,seq->value.str.val,folder->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
--- 685,758 ----
void php3_imap_body(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, * msgno, *flags;
int ind, ind_type;
! pils *imap_le_struct;
! int myargc=ARG_COUNT(ht);
! if (myargc <2 || myargc > 3 ||
getParameters(ht,myargc,&streamind,&msgno,&flags) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
convert_to_long(msgno);
! if(myargc == 3) convert_to_long(flags);
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! RETVAL_STRING(mail_fetchtext_full (imap_le_struct->imap_stream,msgno->value.lval,NIL,myargc
== 3 ? flags->value.lval : NIL),1);
}
! void php3_imap_fetchtext_full(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, * msgno, *flags;
int ind, ind_type;
! pils *imap_le_struct;
! int myargcount = ARG_COUNT(ht);
! if (myargcount >3 || myargcount <2 ||
getParameters(ht,myargcount,&streamind,&msgno,&flags) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long(streamind);
! convert_to_long(msgno);
! if (myargcount == 3) convert_to_long(flags);
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! RETVAL_STRING(mail_fetchtext_full
(imap_le_struct->imap_stream,msgno->value.lval,NIL,myargcount==3?flags->value.lval:NIL),1);
! }
!
! void php3_imap_mail_copy(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *streamind,*seq, *folder, *options;
! int ind, ind_type;
! pils *imap_le_struct;
! int myargcount = ARG_COUNT(ht);
! if (myargcount > 4 || myargcount < 3
! || getParameters(ht,myargcount,&streamind,&seq,&folder,&options) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
convert_to_string(seq);
convert_to_string(folder);
! if(myargcount == 4) convert_to_long(options);
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if (
mail_copy_full(imap_le_struct->imap_stream,seq->value.str.val,folder->value.str.val,myargcount
== 4 ? options->value.lval : NIL)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
***************
*** 496,502 ****
{
pval *streamind,*seq, *folder;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht)!=3
|| getParameters(ht,3,&streamind,&seq,&folder) == FAILURE) {
--- 763,769 ----
{
pval *streamind,*seq, *folder;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht)!=3
|| getParameters(ht,3,&streamind,&seq,&folder) == FAILURE) {
***************
*** 509,520 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_move(imap_stream,seq->value.str.val,folder->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
--- 776,787 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_move(imap_le_struct->imap_stream,seq->value.str.val,folder->value.str.val)==T
) {
RETURN_TRUE;
} else {
RETURN_FALSE;
***************
*** 525,531 ****
{
pval *streamind, *folder;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
WRONG_PARAM_COUNT;
--- 792,798 ----
{
pval *streamind, *folder;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 536,547 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_create(imap_stream,folder->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
--- 803,814 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_create(imap_le_struct->imap_stream,folder->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
***************
*** 552,558 ****
{
pval *streamind, *old, *new;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht)!=3 || getParameters(ht,3,&streamind,&old,&new)==FAILURE){
WRONG_PARAM_COUNT;
--- 819,825 ----
{
pval *streamind, *old, *new;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht)!=3 || getParameters(ht,3,&streamind,&old,&new)==FAILURE){
WRONG_PARAM_COUNT;
***************
*** 564,575 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_rename(imap_stream,old->value.str.val,new->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
--- 831,842 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_rename(imap_le_struct->imap_stream,old->value.str.val,new->value.str.val)==T )
{
RETURN_TRUE;
} else {
RETURN_FALSE;
***************
*** 580,586 ****
{
pval *streamind, *folder;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
WRONG_PARAM_COUNT;
--- 847,853 ----
{
pval *streamind, *folder;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 591,602 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_delete(imap_stream,folder->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
--- 858,869 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if ( mail_delete(imap_le_struct->imap_stream,folder->value.str.val)==T ) {
RETURN_TRUE;
} else {
RETURN_FALSE;
***************
*** 606,614 ****
void php3_imap_list(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind, *ref, *pat;
- /* int i; unused */
int ind, ind_type;
! MAILSTREAM *imap_stream;
STRINGLIST *cur=NIL;
if (ARG_COUNT(ht)!=3
--- 873,880 ----
void php3_imap_list(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind, *ref, *pat;
int ind, ind_type;
! pils *imap_le_struct;
STRINGLIST *cur=NIL;
if (ARG_COUNT(ht)!=3
***************
*** 622,634 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
imap_folders = NIL;
! mail_list(imap_stream,ref->value.str.val,pat->value.str.val);
if (imap_folders == NIL) {
RETURN_FALSE;
}
--- 888,900 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
imap_folders = NIL;
! mail_list(imap_le_struct->imap_stream,ref->value.str.val,pat->value.str.val);
if (imap_folders == NIL) {
RETURN_FALSE;
}
***************
*** 640,691 ****
}
mail_free_stringlist (&imap_folders);
}
void php3_imap_listscan(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *ref, *pat, *content;
! /* int i; unused */
! int ind, ind_type;
! MAILSTREAM *imap_stream;
! STRINGLIST *cur=NIL;
!
! if (ARG_COUNT(ht)!=3
! || getParameters(ht,4,&streamind,&ref,&pat,&content) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(ref);
! convert_to_string(pat);
! convert_to_string(content);
!
! ind = streamind->value.lval;
!
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! imap_folders = NIL;
!
mail_scan(imap_stream,ref->value.str.val,pat->value.str.val,content->value.str.val);
! if (imap_folders == NIL) {
! RETURN_FALSE;
! }
! array_init(return_value);
! cur=imap_folders;
! while (cur != NIL ) {
! add_next_index_string(return_value,cur->LTEXT,1);
! cur=cur->next;
! }
! mail_free_stringlist (&imap_folders);
}
void php3_imap_check(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind;
int ind, ind_type;
! MAILSTREAM *imap_stream;
char date[50];
- /*char tmp[150]; unused */
if (ARG_COUNT(ht)!=1 || getParameters(ht,1,&streamind) == FAILURE) {
WRONG_PARAM_COUNT;
--- 906,955 ----
}
mail_free_stringlist (&imap_folders);
}
+
void php3_imap_listscan(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *ref, *pat, *content;
! int ind, ind_type;
! pils *imap_le_struct;
! STRINGLIST *cur=NIL;
!
! if (ARG_COUNT(ht)!=3 || getParameters(ht,4,&streamind,&ref,&pat,&content) ==
FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(ref);
! convert_to_string(pat);
! convert_to_string(content);
!
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! imap_folders = NIL;
!
mail_scan(imap_le_struct->imap_stream,ref->value.str.val,pat->value.str.val,content->value.str.val);
! if (imap_folders == NIL) {
! RETURN_FALSE;
! }
! array_init(return_value);
! cur=imap_folders;
! while (cur != NIL ) {
! add_next_index_string(return_value,cur->LTEXT,1);
! cur=cur->next;
! }
! mail_free_stringlist (&imap_folders);
}
void php3_imap_check(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind;
int ind, ind_type;
! pils *imap_le_struct;
char date[50];
if (ARG_COUNT(ht)!=1 || getParameters(ht,1,&streamind) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 695,717 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if (mail_ping (imap_stream) == NIL ) {
RETURN_FALSE;
}
! if (imap_stream && imap_stream->mailbox) {
rfc822_date (date);
object_init(return_value);
add_property_string(return_value,"Date",date,1);
! add_property_string(return_value,"Driver",imap_stream->dtb->name,1);
! add_property_string(return_value,"Mailbox",imap_stream->mailbox,1);
! add_property_long(return_value,"Nmsgs",imap_stream->nmsgs);
! add_property_long(return_value,"Recent",imap_stream->recent);
} else {
RETURN_FALSE;
}
--- 959,981 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! if (mail_ping (imap_le_struct->imap_stream) == NIL ) {
RETURN_FALSE;
}
! if (imap_le_struct->imap_stream && imap_le_struct->imap_stream->mailbox) {
rfc822_date (date);
object_init(return_value);
add_property_string(return_value,"Date",date,1);
!
add_property_string(return_value,"Driver",imap_le_struct->imap_stream->dtb->name,1);
!
add_property_string(return_value,"Mailbox",imap_le_struct->imap_stream->mailbox,1);
! add_property_long(return_value,"Nmsgs",imap_le_struct->imap_stream->nmsgs);
! add_property_long(return_value,"Recent",imap_le_struct->imap_stream->recent);
} else {
RETURN_FALSE;
}
***************
*** 722,728 ****
{
pval *streamind, * msgno;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
WRONG_PARAM_COUNT;
--- 986,992 ----
{
pval *streamind, * msgno;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 733,754 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! mail_setflag(imap_stream,msgno->value.str.val,"\\DELETED");
RETVAL_TRUE;
-
}
void php3_imap_undelete(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind, * msgno;
int ind, ind_type;
! MAILSTREAM *imap_stream;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
WRONG_PARAM_COUNT;
--- 997,1017 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! mail_setflag(imap_le_struct->imap_stream,msgno->value.str.val,"\\DELETED");
RETVAL_TRUE;
}
void php3_imap_undelete(INTERNAL_FUNCTION_PARAMETERS)
{
pval *streamind, * msgno;
int ind, ind_type;
! pils *imap_le_struct;
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 759,839 ****
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! mail_clearflag (imap_stream,msgno->value.str.val,"\\DELETED");
RETVAL_TRUE;
-
}
void php3_imap_headerinfo(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, * msgno;
int ind, ind_type;
! MAILSTREAM *imap_stream;
! STRINGLIST *lines=NULL;
MESSAGECACHE * cache;
char dummy[2000];
! if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&msgno)==FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
convert_to_long(msgno);
!
ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
-
- mail_fetchstructure (imap_stream,msgno->value.lval,NIL);
- cache = mail_elt (imap_stream,msgno->value.lval);
-
object_init(return_value);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr ("Date"));
- add_property_string(return_value,"Date"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr ("From"));
- add_property_string(return_value,"From"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr (">From"));
- add_property_string(return_value,"From2"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr ("Subject"));
- add_property_string(return_value,"Subject"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr ("To"));
- add_property_string(return_value,"To"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr ("cc"));
- add_property_string(return_value,"cc"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
- lines = mail_newstringlist ();
- lines->LSIZE = strlen (lines->LTEXT = (char *)cpystr ("Reply-To"));
- add_property_string(return_value,"ReplyTo"
- ,mail_fetchheader_full(imap_stream,msgno->value.lval,lines,NIL,NIL),1);
- mail_free_stringlist (&lines);
add_property_string(return_value,"Recent",cache->recent ? (cache->seen ?
"R": "N") : " ",1);
add_property_string(return_value,"Unseen",(cache->recent | cache->seen) ? "
" : "U",1);
add_property_string(return_value,"Flagged",cache->flagged ? "F" : "
",1);
--- 1022,1222 ----
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
! mail_clearflag (imap_le_struct->imap_stream,msgno->value.str.val,"\\DELETED");
RETVAL_TRUE;
}
void php3_imap_headerinfo(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, * msgno,to,tovals,from,fromvals,reply_to,reply_tovals,sender;
! pval *fromlength;
! pval *subjectlength;
! pval sendervals,return_path,return_pathvals;
! pval cc,ccvals,bcc,bccvals;
! pval *defaulthost;
int ind, ind_type;
! unsigned long length;
! pils *imap_le_struct;
MESSAGECACHE * cache;
+ char *mystring;
char dummy[2000];
! char fulladdress[MAILTMPLEN];
! ENVELOPE *en;
! ADDRESS *addresstmp;
! int myargc;
! myargc=ARG_COUNT(ht);
! if (myargc<2 || myargc>5 ||
getParameters(ht,myargc,&streamind,&msgno,&fromlength,&subjectlength,&defaulthost)==FAILURE)
{
WRONG_PARAM_COUNT;
}
convert_to_long(streamind);
convert_to_long(msgno);
! if(myargc >= 3) convert_to_long(fromlength); else fromlength=0x00;;
! if(myargc >= 4) convert_to_long(subjectlength); else subjectlength=0x00;
! if(myargc == 5) convert_to_string(defaulthost);
ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
php3_error(E_WARNING, "Unable to find stream pointer");
RETURN_FALSE;
}
+ if(msgno->value.lval && msgno->value.lval <=
imap_le_struct->imap_stream->nmsgs && mail_fetchstructure
(imap_le_struct->imap_stream,msgno->value.lval,NIL))
+ cache = mail_elt (imap_le_struct->imap_stream,msgno->value.lval);
+ else
+ RETURN_FALSE;
object_init(return_value);
+
+
mystring=mail_fetchheader_full(imap_le_struct->imap_stream,msgno->value.lval,NIL,&length,NIL);
+ if(myargc ==5)
+ rfc822_parse_msg (&en,NULL,mystring,length,NULL,defaulthost->value.str.val,NIL);
+ else
+ rfc822_parse_msg (&en,NULL,mystring,length,NULL,"UNKNOWN",NIL);
+
+ if(en->remail) add_property_string(return_value,"remail",en->remail,1);
+ if(en->date) add_property_string(return_value,"date",en->date,1);
+ if(en->date) add_property_string(return_value,"Date",en->date,1);
+ if(en->subject)add_property_string(return_value,"subject",en->subject,1);
+ if(en->subject)add_property_string(return_value,"Subject",en->subject,1);
+
if(en->in_reply_to)add_property_string(return_value,"in_reply_to",en->in_reply_to,1);
+
if(en->message_id)add_property_string(return_value,"message_id",en->message_id,1);
+
if(en->newsgroups)add_property_string(return_value,"newsgroups",en->newsgroups,1);
+
if(en->followup_to)add_property_string(return_value,"followup_to",en->followup_to,1);
+
if(en->references)add_property_string(return_value,"references",en->references,1);
+
+ if(en->to)
+ {
+ addresstmp=en->to;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "toaddress", fulladdress, 1);
+ array_init( &to );
+ do {
+ object_init( &tovals);
+ if(addresstmp->personal) add_property_string( &tovals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &tovals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &tovals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &tovals, "host",
addresstmp->host, 1);
+ add_next_index_object( &to, tovals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "to", to );
+ }
+
+ if(en->from)
+ {
+ addresstmp=en->from;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "fromaddress", fulladdress, 1);
+ array_init( &from );
+ do {
+ object_init( &fromvals);
+ if(addresstmp->personal) add_property_string( &fromvals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &fromvals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &fromvals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &fromvals, "host",
addresstmp->host, 1);
+ add_next_index_object( &from, fromvals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "from", from );
+ }
+
+ if(en->cc)
+ {
+ addresstmp=en->cc;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "ccaddress", fulladdress, 1);
+ array_init( &cc );
+ do {
+ object_init( &ccvals);
+ if(addresstmp->personal) add_property_string( &ccvals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &ccvals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &ccvals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &ccvals, "host",
addresstmp->host, 1);
+ add_next_index_object( &cc, ccvals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "cc", cc );
+ }
+
+ if(en->bcc)
+ {
+ addresstmp=en->bcc;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "bccaddress", fulladdress, 1);
+ array_init( &bcc );
+ do {
+ object_init( &bccvals);
+ if(addresstmp->personal) add_property_string( &bccvals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &bccvals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &bccvals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &bccvals, "host",
addresstmp->host, 1);
+ add_next_index_object( &bcc, bccvals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "bcc", bcc );
+ }
+
+ if(en->reply_to)
+ {
+ addresstmp=en->reply_to;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "reply_toaddress", fulladdress,
1);
+ array_init( &reply_to );
+ do {
+ object_init( &reply_tovals);
+ if(addresstmp->personal) add_property_string( &reply_tovals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &reply_tovals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &reply_tovals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &reply_tovals, "host",
addresstmp->host, 1);
+ add_next_index_object( &reply_to, reply_tovals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "reply_to", reply_to );
+ }
+
+ if(en->sender)
+ {
+ addresstmp=en->sender;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "senderaddress", fulladdress,
1);
+ array_init( &sender );
+ do {
+ object_init( &sendervals);
+ if(addresstmp->personal) add_property_string( &sendervals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &sendervals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &sendervals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &sendervals, "host",
addresstmp->host, 1);
+ add_next_index_object( &sender, sendervals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "sender", sender );
+ }
+
+ if(en->return_path)
+ {
+ addresstmp=en->return_path;
+ fulladdress[0]=0x00;
+ rfc822_write_address(fulladdress,addresstmp);
+ if(fulladdress) add_property_string( return_value, "return_pathaddress",
fulladdress, 1);
+ array_init( &return_path );
+ do {
+ object_init( &return_pathvals);
+ if(addresstmp->personal) add_property_string( &return_pathvals, "personal",
addresstmp->personal, 1);
+ if(addresstmp->adl) add_property_string( &return_pathvals, "adl",
addresstmp->adl, 1);
+ if(addresstmp->mailbox) add_property_string( &return_pathvals, "mailbox",
addresstmp->mailbox, 1);
+ if(addresstmp->host) add_property_string( &return_pathvals, "host",
addresstmp->host, 1);
+ add_next_index_object( &return_path, return_pathvals );
+ } while ( (addresstmp = addresstmp->next) );
+ add_assoc_object( return_value, "return_path", return_path );
+ }
add_property_string(return_value,"Recent",cache->recent ? (cache->seen ?
"R": "N") : " ",1);
add_property_string(return_value,"Unseen",(cache->recent | cache->seen) ? "
" : "U",1);
add_property_string(return_value,"Flagged",cache->flagged ? "F" : "
",1);
***************
*** 845,1177 ****
add_property_string(return_value,"MailDate",dummy,1);
sprintf (dummy,"%ld",cache->rfc822_size);
add_property_string(return_value,"Size",dummy,1);
}
/* KMLANG */
void php3_imap_lsub(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *ref, *pat;
! /* int i; unused */
! int ind, ind_type;
! MAILSTREAM *imap_stream;
! STRINGLIST *cur=NIL;
!
! if (ARG_COUNT(ht)!=3
! || getParameters(ht,3,&streamind,&ref,&pat) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(ref);
! convert_to_string(pat);
!
! ind = streamind->value.lval;
!
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! imap_sfolders = NIL;
! mail_lsub(imap_stream,ref->value.str.val,pat->value.str.val);
! if (imap_sfolders == NIL) {
! RETURN_FALSE;
! }
! array_init(return_value);
! cur=imap_sfolders;
! while (cur != NIL ) {
! add_next_index_string(return_value,cur->LTEXT,1);
! cur=cur->next;
! }
! mail_free_stringlist (&imap_sfolders);
}
void php3_imap_subscribe(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *folder;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
!
! if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(folder);
!
! ind = streamind->value.lval;
!
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! if ( mail_subscribe(imap_stream,folder->value.str.val)==T ) {
! RETURN_TRUE;
! } else {
! RETURN_FALSE;
! }
}
void php3_imap_unsubscribe(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *folder;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
!
! if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(folder);
!
! ind = streamind->value.lval;
!
! imap_stream = ( MAILSTREAM *)php3_list_find(ind, &ind_type);
! if (!imap_stream || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! if ( mail_unsubscribe(imap_stream,folder->value.str.val)==T ) {
! RETURN_TRUE;
! } else {
! RETURN_FALSE;
! }
! }
! inline int add_assoc_object(pval *arg, char *key, pval tmp)
! {
! return _php3_hash_update(arg->value.ht, key, strlen(key)+1, (void *) &tmp, sizeof(pval),
NULL);
! }
! inline int add_next_index_object(pval *arg, pval tmp)
! {
! return _php3_hash_next_index_insert( arg->value.ht, (void *) &tmp, sizeof(pval), NULL);
}
void imap_add_body( pval *arg, BODY *body )
{
! pval parametres, param, dparametres, dparam;
! PARAMETER *par, *dpar;
! PART *part;
!
! add_property_long( arg, "type", body->type );
! add_property_long( arg, "encoding", body->encoding );
!
! if ( body->subtype ){
! add_property_long( arg, "ifsubtype", 1 );
! add_property_string( arg, "subtype", body->subtype, 1 );
! } else {
! add_property_long( arg, "ifsubtype", 0 );
! }
!
! if ( body->description ){
! add_property_long( arg, "ifdescription", 1 );
! add_property_string( arg, "description", body->description, 1 );
! } else {
! add_property_long( arg, "ifdescription", 0 );
! }
! if ( body->id ){
! add_property_long( arg, "ifid", 1 );
! add_property_string( arg, "id", body->description, 1 );
! } else {
! add_property_long( arg, "ifid", 0 );
! }
! add_property_long( arg, "lines", body->size.lines );
! add_property_long( arg, "bytes", body->size.bytes );
#ifdef IMAP41
! if ( body->disposition.type ){
! add_property_long( arg, "ifdisposition", 1);
! add_property_string( arg, "disposition", body->disposition.type, 1);
! } else {
! add_property_long( arg, "ifdisposition", 0);
! }
!
! if ( body->disposition.parameter )
! {
! dpar = body->disposition.parameter;
! add_property_long( arg, "ifdparametres", 1);
! array_init( &dparametres );
! do {
! object_init( &dparam );
! add_property_string( &dparam, "attribute", dpar->attribute, 1);
! add_property_string( &dparam, "value", dpar->value, 1);
! add_next_index_object( &dparametres, dparam );
! } while ( dpar = dpar->next );
! add_assoc_object( arg, "dparametres", dparametres );
! }
! else
! {
! add_property_long( arg, "ifdparametres", 0);
! }
#endif
! if ( par = body->parameter ) {
! add_property_long( arg, "ifparametres", 1 );
! array_init( ¶metres );
! do{
! object_init( ¶m );
! add_property_string( ¶m, "attribute", par->attribute, 1 );
! add_property_string( ¶m, "value", par->value, 1 );
!
! add_next_index_object( ¶metres, param );
! } while ( par = par->next );
! add_assoc_object( arg, "parametres", parametres );
! } else {
! add_property_long( arg, "ifparametres", 0 );
! }
!
! /* multipart message ? */
!
! if ( body->type == TYPEMULTIPART ){
! array_init( ¶metres );
! for ( part = body->CONTENT_PART; part; part = part->next ){
! object_init( ¶m );
! imap_add_body( ¶m, &part->body );
! add_next_index_object( ¶metres, param );
! }
! add_assoc_object( arg, "parts", parametres );
! }
! /* encapsulated message ? */
! if ( ( body->type == TYPEMESSAGE ) && ( body = body->CONTENT_MSG_BODY )){
! object_init( ¶m );
! imap_add_body( ¶m, body );
! add_assoc_object( arg, "parts", param );
! }
}
void php3_imap_fetchstructure(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *msgno;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
! BODY *body;
! /* char dummy[100]; not used */
!
! if ( ARG_COUNT(ht) != 2 || getParameters( ht, 2, &streamind, &msgno ) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long( streamind );
! convert_to_long( msgno );
! object_init(return_value);
! ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find( ind, &ind_type );
! if ( !imap_stream || ind_type != le_imap ) {
! php3_error( E_WARNING, "Unable to find stream pointer" );
! RETURN_FALSE;
! }
! mail_fetchstructure( imap_stream, msgno->value.lval, &body );
! if ( !body ) {
! php3_error( E_WARNING, "No body information available" );
! RETURN_FALSE;
! }
! imap_add_body( return_value, body );
! // mail_free_body_data( body );
}
void php3_imap_fetchbody(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *msgno, *sec;
! int ind, ind_type;
! MAILSTREAM *imap_stream;
! char *body;
! unsigned long len;
!
! if ( ARG_COUNT(ht) != 3 || getParameters( ht, 3, &streamind, &msgno, &sec ) ==
FAILURE ) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long( streamind );
! convert_to_long( msgno );
! convert_to_string( sec );
! ind = streamind->value.lval;
! imap_stream = ( MAILSTREAM *)php3_list_find( ind, &ind_type );
! if ( !imap_stream || ind_type != le_imap ) {
! php3_error( E_WARNING, "Unable to find stream pointer" );
! RETURN_FALSE;
! }
! body = mail_fetchbody( imap_stream, msgno->value.lval, sec->value.str.val, &len );
! if ( !body ) {
! php3_error( E_WARNING, "No body information available" );
! RETURN_FALSE;
! }
! RETVAL_STRING( body ,1);
}
void php3_imap_base64(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *text;
! char *decode;
! unsigned long newlength;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string( text );
! object_init(return_value);
! decode = (char *) rfc822_base64((unsigned char *) text->value.str.val,
! text->value.str.len,&newlength);
! RETVAL_STRINGL(decode,newlength,1);
}
void php3_imap_qprint(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *text;
! char *decode;
! unsigned long newlength;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string( text );
! object_init(return_value);
! decode = (char *) rfc822_qprint((unsigned char *) text->value.str.val,
! text->value.str.len,&newlength);
! RETVAL_STRINGL(decode,newlength,1);
}
void php3_imap_8bit(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *text;
! char *decode;
! unsigned long newlength;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string( text );
! object_init(return_value);
! decode = (char *) rfc822_8bit((unsigned char *) text->value.str.val,
! text->value.str.len,&newlength);
! RETVAL_STRINGL(decode,newlength,1);
}
/* Interfaces to C-client */
--- 1228,1870 ----
add_property_string(return_value,"MailDate",dummy,1);
sprintf (dummy,"%ld",cache->rfc822_size);
add_property_string(return_value,"Size",dummy,1);
+ add_property_long(return_value,"udate",mail_longdate(cache));
+
+ if(en->from && fromlength)
+ {
+ fulladdress[0]=0x00;
+
mail_fetchfrom(fulladdress,imap_le_struct->imap_stream,msgno->value.lval,fromlength->value.lval);
+ add_property_string(return_value,"fetchfrom",fulladdress,1);
}
+ if(en->subject && subjectlength)
+ {
+ fulladdress[0]=0x00;
+
mail_fetchsubject(fulladdress,imap_le_struct->imap_stream,msgno->value.lval,subjectlength->value.lval);
+ add_property_string(return_value,"fetchsubject",fulladdress,1);
+ }
+ }
/* KMLANG */
void php3_imap_lsub(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *ref, *pat;
! int ind, ind_type;
! pils *imap_le_struct;
! STRINGLIST *cur=NIL;
!
! if (ARG_COUNT(ht)!=3 || getParameters(ht,3,&streamind,&ref,&pat) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(ref);
! convert_to_string(pat);
!
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! imap_sfolders = NIL;
! mail_lsub(imap_le_struct->imap_stream,ref->value.str.val,pat->value.str.val);
! if (imap_sfolders == NIL) {
! RETURN_FALSE;
! }
! array_init(return_value);
! cur=imap_sfolders;
! while (cur != NIL ) {
! add_next_index_string(return_value,cur->LTEXT,1);
! cur=cur->next;
! }
! mail_free_stringlist (&imap_sfolders);
}
void php3_imap_subscribe(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *folder;
! int ind, ind_type;
! pils *imap_le_struct;
!
! if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&streamind,&folder) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
! convert_to_string(folder);
!
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! if ( mail_subscribe(imap_le_struct->imap_stream,folder->value.str.val)==T ) {
! RETURN_TRUE;
! } else {
! RETURN_FALSE;
! }
}
+
void php3_imap_unsubscribe(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *folder;
! int ind, ind_type;
! pils *imap_le_struct;
! int myargc=ARG_COUNT(ht);
! if (myargc !=2 || getParameters(ht,myargc,&streamind,&folder) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long(streamind);
! convert_to_string(folder);
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if (!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
! if ( mail_unsubscribe(imap_le_struct->imap_stream,folder->value.str.val)==T ) {
! RETURN_TRUE;
! } else {
! RETURN_FALSE;
! }
}
void imap_add_body( pval *arg, BODY *body )
{
! pval parametres, param, dparametres, dparam;
! PARAMETER *par, *dpar;
! PART *part;
!
! if(body->type) add_property_long( arg, "type", body->type );
! if(body->encoding) add_property_long( arg, "encoding", body->encoding );
!
! if ( body->subtype ){
! add_property_long( arg, "ifsubtype", 1 );
! add_property_string( arg, "subtype", body->subtype, 1 );
! } else {
! add_property_long( arg, "ifsubtype", 0 );
! }
!
! if ( body->description ){
! add_property_long( arg, "ifdescription", 1 );
! add_property_string( arg, "description", body->description, 1 );
! } else {
! add_property_long( arg, "ifdescription", 0 );
! }
! if ( body->id ){
! add_property_long( arg, "ifid", 1 );
! if(body->description) add_property_string( arg, "id", body->description, 1 );
! } else {
! add_property_long( arg, "ifid", 0 );
! }
! if(body->size.lines) add_property_long( arg, "lines", body->size.lines );
! if(body->size.bytes) add_property_long( arg, "bytes", body->size.bytes );
#ifdef IMAP41
! if ( body->disposition.type ){
! add_property_long( arg, "ifdisposition", 1);
! add_property_string( arg, "disposition", body->disposition.type, 1);
! } else {
! add_property_long( arg, "ifdisposition", 0);
! }
!
! if ( body->disposition.parameter ) {
! dpar = body->disposition.parameter;
! add_property_long( arg, "ifdparameters", 1);
! array_init( &dparametres );
! do {
! object_init( &dparam );
! add_property_string( &dparam, "attribute", dpar->attribute, 1);
! add_property_string( &dparam, "value", dpar->value, 1);
! add_next_index_object( &dparametres, dparam );
! } while ( (dpar = dpar->next) );
! add_assoc_object( arg, "dparameters", dparametres );
! } else {
! add_property_long( arg, "ifdparameters", 0);
! }
#endif
! if ( (par = body->parameter) ) {
! add_property_long( arg, "ifparameters", 1 );
! array_init( ¶metres );
! do {
! object_init( ¶m );
! if(par->attribute) add_property_string( ¶m, "attribute",
par->attribute, 1 );
! if(par->value) add_property_string( ¶m, "value", par->value, 1 );
!
! add_next_index_object( ¶metres, param );
! } while ( (par = par->next) );
! } else {
! object_init(¶metres);
! add_property_long( arg, "ifparameters", 0 );
! }
! add_assoc_object( arg, "parameters", parametres );
!
! /* multipart message ? */
!
! if ( body->type == TYPEMULTIPART ) {
! array_init( ¶metres );
! for ( part = body->CONTENT_PART; part; part = part->next ) {
! object_init( ¶m );
! imap_add_body( ¶m, &part->body );
! add_next_index_object( ¶metres, param );
! }
! add_assoc_object( arg, "parts", parametres );
! }
! /* encapsulated message ? */
! if ( ( body->type == TYPEMESSAGE ) && (!strncasecmp(body->subtype,
"rfc822", 6))) {
! body=body->CONTENT_MSG_BODY;
! array_init(¶metres);
! object_init( ¶m );
! imap_add_body( ¶m, body );
! add_next_index_object(¶metres, param );
! add_assoc_object( arg, "parts", parametres );
! }
}
void php3_imap_fetchstructure(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *msgno,*flags;
! int ind, ind_type;
! pils *imap_le_struct;
! BODY *body;
! int myargc=ARG_COUNT(ht);
! if ( myargc < 2 || myargc > 3 || getParameters( ht, myargc, &streamind, &msgno
,&flags) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long( streamind );
! convert_to_long( msgno );
! if(myargc == 3) convert_to_long(flags);
! object_init(return_value);
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find( ind, &ind_type );
! if ( !imap_le_struct || ind_type != le_imap ) {
! php3_error( E_WARNING, "Unable to find stream pointer" );
! RETURN_FALSE;
! }
! mail_fetchstructure_full( imap_le_struct->imap_stream, msgno->value.lval, &body ,myargc
== 3 ? flags->value.lval : NIL);
! if ( !body ) {
! php3_error( E_WARNING, "No body information available" );
! RETURN_FALSE;
! }
! imap_add_body( return_value, body );
}
void php3_imap_fetchbody(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *streamind, *msgno, *sec,*flags;
! int ind, ind_type;
! pils *imap_le_struct;
! char *body;
! unsigned long len;
! int myargc=ARG_COUNT(ht);
! if(myargc < 3 || myargc >4 || getParameters( ht, myargc, &streamind, &msgno,
&sec,&flags ) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long( streamind );
! convert_to_long( msgno );
! convert_to_string( sec );
! if(myargc == 4) convert_to_long(flags);
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find( ind, &ind_type );
! if ( !imap_le_struct || ind_type != le_imap ) {
! php3_error( E_WARNING, "Unable to find stream pointer" );
! RETURN_FALSE;
! }
! body = mail_fetchbody_full( imap_le_struct->imap_stream, msgno->value.lval,
sec->value.str.val, &len,myargc == 4 ? flags->value.lval : NIL );
! if ( !body ) {
! php3_error( E_WARNING, "No body information available" );
! RETURN_FALSE;
! }
! RETVAL_STRINGL( body ,len,1);
}
void php3_imap_base64(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *text;
! char *decode;
! unsigned long newlength;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string( text );
! object_init(return_value);
! decode = (char *) rfc822_base64((unsigned char *) text->value.str.val,
text->value.str.len,&newlength);
! RETVAL_STRINGL(decode,newlength,1);
}
void php3_imap_qprint(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *text;
! char *decode;
! unsigned long newlength;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string( text );
! object_init(return_value);
! decode = (char *) rfc822_qprint((unsigned char *) text->value.str.val,
text->value.str.len,&newlength);
! RETVAL_STRINGL(decode,newlength,1);
}
void php3_imap_8bit(INTERNAL_FUNCTION_PARAMETERS)
{
! pval *text;
! char *decode;
! unsigned long newlength;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_string( text );
! object_init(return_value);
!
! decode = (char *) rfc822_8bit((unsigned char *) text->value.str.val,
text->value.str.len,&newlength);
! RETVAL_STRINGL(decode,newlength,1);
! }
!
! void php3_imap_binary(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *text;
! unsigned long len;
! if ( ARG_COUNT(ht) != 1 || getParameters( ht, 1, &text) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string(text);
! RETVAL_STRINGL(rfc822_binary(text->value.str.val,text->value.str.len,&len),len,1);
!
! }
!
!
! void php3_imap_mailboxmsginfo(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *streamind;
! char date[50];
! int ind, ind_type;
! unsigned int msgno;
! pils *imap_le_struct;
! unsigned unreadmsg,msize;
!
! if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
! WRONG_PARAM_COUNT;
! }
!
! convert_to_long(streamind);
!
! ind = streamind->value.lval;
!
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
!
! if(!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
!
! /* Initialize return array */
! if(object_init(return_value) == FAILURE) {
! RETURN_FALSE;
! }
! unreadmsg = 0;
! msize = 0;
! for (msgno = 1; msgno <= imap_le_struct->imap_stream->nmsgs; msgno++) {
! MESSAGECACHE * cache = mail_elt (imap_le_struct->imap_stream,msgno);
! mail_fetchstructure (imap_le_struct->imap_stream,msgno,NIL);
! unreadmsg = cache->recent ? (cache->seen ? unreadmsg : unreadmsg++) : unreadmsg;
! unreadmsg = (cache->recent | cache->seen) ? unreadmsg : unreadmsg++;
! msize = msize + cache->rfc822_size;
! }
! add_property_long(return_value,"Unread",unreadmsg);
! add_property_long(return_value,"Nmsgs",imap_le_struct->imap_stream->nmsgs);
! add_property_long(return_value,"Size",msize);
! rfc822_date (date);
! add_property_string(return_value,"Date",date,1);
!
add_property_string(return_value,"Driver",imap_le_struct->imap_stream->dtb->name,1);
!
add_property_string(return_value,"Mailbox",imap_le_struct->imap_stream->mailbox,1);
! add_property_long(return_value,"Recent",imap_le_struct->imap_stream->recent);
! }
!
! void php3_imap_rfc822_write_address(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *mailbox,*host,*personal;
! ADDRESS *addr;
! char string[MAILTMPLEN];
! int argc;
! argc=ARG_COUNT(ht);
! if ( argc <2 || argc>3 || getParameters( ht, argc, &mailbox,&host,&personal) ==
FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string(mailbox);
! convert_to_string(host);
! convert_to_string(personal);
! addr=mail_newaddr();
! if(mailbox) addr->mailbox = cpystr(mailbox->value.str.val);
! if(host) addr->host = cpystr(host->value.str.val);
! if(personal) addr->personal = cpystr(personal->value.str.val);
! addr->next=NIL;
! addr->error=NIL;
! addr->adl=NIL;
! string[0]=0x00;
!
! rfc822_write_address(string,addr);
! RETVAL_STRING(string,1);
! }
!
! void php3_imap_rfc822_parse_adrlist(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *string,*defaulthost;
! ENVELOPE *env;
! int argc;
!
! env=mail_newenvelope();
! argc=ARG_COUNT(ht);
! if ( argc != 2 || getParameters( ht, argc, &string,&defaulthost) == FAILURE ) {
! WRONG_PARAM_COUNT;
! }
! convert_to_string(string);
! convert_to_string(defaulthost);
! rfc822_parse_adrlist(&env->to,string->value.str.val,defaulthost->value.str.val);
! if(object_init(return_value) == FAILURE) {
! RETURN_FALSE;
! }
! if(env->to->mailbox)
add_property_string(return_value,"mailbox",env->to->mailbox,1);
! if(env->to->host) add_property_string(return_value,"host",env->to->host,1);
! if(env->to->personal)
add_property_string(return_value,"personal",env->to->personal,1);
! }
!
!
! void php3_imap_setflag_full(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *streamind;
! pval *sequence;
! pval *flag;
! pval *flags;
! int ind,ind_type;
! pils *imap_le_struct;
! int myargc=ARG_COUNT(ht);
!
! if (myargc < 3 || myargc > 4 || getParameters(ht, myargc,
&streamind,&sequence,&flag,&flags) ==FAILURE) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long(streamind);
! convert_to_string(sequence);
! convert_to_string(flag);
! if(myargc==4) convert_to_long(flags);
!
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if(!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
!
mail_setflag_full(imap_le_struct->imap_stream,sequence->value.str.val,flag->value.str.val,myargc
== 4 ? flags->value.lval : NIL);
! }
! void php3_imap_clearflag_full(INTERNAL_FUNCTION_PARAMETERS)
! {
! pval *streamind;
! pval *sequence;
! pval *flag;
! pval *flags;
! int ind,ind_type;
! pils *imap_le_struct;
! int myargc=ARG_COUNT(ht);
! if (myargc < 3 || myargc > 4 || getParameters(ht, myargc,
&streamind,&sequence,&flag,&flags) ==FAILURE) {
! WRONG_PARAM_COUNT;
! }
! convert_to_long(streamind);
! convert_to_string(sequence);
! convert_to_string(flag);
! if(myargc==4) convert_to_long(flags);
! ind = streamind->value.lval;
! imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
! if(!imap_le_struct || ind_type != le_imap) {
! php3_error(E_WARNING, "Unable to find stream pointer");
! RETURN_FALSE;
! }
!
mail_clearflag_full(imap_le_struct->imap_stream,sequence->value.str.val,flag->value.str.val,myargc
== 4 ? flags->value.lval : NIL);
}
+ void php3_imap_sort(INTERNAL_FUNCTION_PARAMETERS)
+ {
+ pval *streamind;
+ pval *pgm;
+ pval *rev;
+ pval *flags;
+ int ind,ind_type;
+ unsigned long *slst,*sl;
+ char mystring[100];
+ SORTPGM *mypgm;
+ pils *imap_le_struct;
+ int myargc=ARG_COUNT(ht);
+ if (myargc < 3 || myargc > 4 || getParameters(ht, myargc,
&streamind,&pgm,&rev,&flags) ==FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_long(streamind);
+ convert_to_long(rev);
+ convert_to_long(pgm);
+ if(myargc==4) convert_to_long(flags);
+ ind = streamind->value.lval;
+ imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if(!imap_le_struct || ind_type != le_imap) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+ mypgm=mail_newsortpgm();
+ mypgm->reverse=rev->value.lval;
+ mypgm->function=pgm->value.lval;
+ mypgm->next=NIL;
+ array_init(return_value);
+ slst=mail_sort(imap_le_struct->imap_stream,NIL,NIL,mypgm,myargc == 4 ?
flags->value.lval:NIL);
+ for (sl = slst; *sl; sl++) {
+ sprintf (mystring,"%lu",*sl);
+ add_next_index_string(return_value,mystring,1);
+ }
+ fs_give ((void **) &slst);
+ }
+ void php3_imap_fetchheader(INTERNAL_FUNCTION_PARAMETERS)
+ {
+ pval *streamind, * msgno, * flags;
+ int ind, ind_type;
+ pils *imap_le_struct;
+ int myargc = ARG_COUNT(ht);
+ if (myargc < 2 || myargc > 3 ||
getParameters(ht,myargc,&streamind,&msgno,&flags) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_long(streamind);
+ convert_to_long(msgno);
+ if(myargc == 3) convert_to_long(flags);
+ ind = streamind->value.lval;
+ imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!imap_le_struct || ind_type != le_imap) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+ RETVAL_STRING(mail_fetchheader_full
(imap_le_struct->imap_stream,msgno->value.lval,NIL,NIL,myargc == 3 ? flags->value.lval :
NIL),1);
+
+ }
+
+ void php3_imap_uid(INTERNAL_FUNCTION_PARAMETERS)
+ {
+ pval *streamind, *msgno;
+ int ind, ind_type;
+ pils *imap_le_struct;
+
+ if (ARG_COUNT(ht) != 2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_long(msgno);
+
+ ind = streamind->value.lval;
+
+ imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!imap_le_struct || ind_type != le_imap) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ RETURN_LONG(mail_uid(imap_le_struct->imap_stream, msgno->value.lval));
+ }
+
+ void php3_imap_msgno(INTERNAL_FUNCTION_PARAMETERS)
+ {
+ pval *streamind, *msgno;
+ int ind, ind_type;
+ pils *imap_le_struct;
+
+ if (ARG_COUNT(ht) != 2 || getParameters(ht,2,&streamind,&msgno) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_long(msgno);
+
+ ind = streamind->value.lval;
+
+ imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!imap_le_struct || ind_type != le_imap) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ RETURN_LONG(mail_msgno(imap_le_struct->imap_stream, msgno->value.lval));
+ }
+
+ void php3_imap_status(INTERNAL_FUNCTION_PARAMETERS)
+ {
+ pval *streamind, *mbx, *flags;
+ int ind, ind_type;
+ pils *imap_le_struct;
+ int myargc=ARG_COUNT(ht);
+ if (myargc != 3 || getParameters(ht,myargc,&streamind,&mbx,&flags) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_string(mbx);
+ convert_to_long(flags);
+ ind = streamind->value.lval;
+
+ imap_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!imap_le_struct || ind_type != le_imap) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ if(object_init(return_value) == FAILURE){
+ RETURN_FALSE;
+ }
+ if(mail_status(imap_le_struct->imap_stream, mbx->value.str.val, flags->value.lval))
+ {
+ add_property_long(return_value,"flags",status_flags);
+ if(status_flags & SA_MESSAGES)
add_property_long(return_value,"messages",status_messages);
+ if(status_flags & SA_RECENT)
add_property_long(return_value,"recent",status_recent);
+ if(status_flags & SA_UNSEEN)
add_property_long(return_value,"unseen",status_unseen);
+ if(status_flags & SA_UIDNEXT)
add_property_long(return_value,"uidnext",status_uidnext);
+ if(status_flags & SA_UIDVALIDITY)
add_property_long(return_value,"uidvalidity",status_uidvalidity);
+ }
+ else
+ {
+ RETURN_FALSE;
+ }
+ }
+
+
/* Interfaces to C-client */
***************
*** 1202,1213 ****
void mm_list (MAILSTREAM *stream,DTYPE delimiter,char *mailbox,long attributes)
{
STRINGLIST *cur=NIL;
! if (imap_folders == NIL) {
! imap_folders=mail_newstringlist();
! imap_folders->LSIZE=strlen(imap_folders->LTEXT=cpystr(mailbox));
! imap_folders->next=NIL;
} else {
! cur=imap_folders;
while (cur->next != NIL ) {
cur=cur->next;
}
--- 1895,1927 ----
void mm_list (MAILSTREAM *stream,DTYPE delimiter,char *mailbox,long attributes)
{
STRINGLIST *cur=NIL;
! if(!(attributes & LATT_NOSELECT)) {
! if (imap_folders == NIL) {
! imap_folders=mail_newstringlist();
! imap_folders->LSIZE=strlen(imap_folders->LTEXT=cpystr(mailbox));
! imap_folders->next=NIL;
! } else {
! cur=imap_folders;
! while (cur->next != NIL ) {
! cur=cur->next;
! }
! cur->next=mail_newstringlist ();
! cur=cur->next;
! cur->LSIZE = strlen (cur->LTEXT = cpystr (mailbox));
! cur->next = NIL;
! }
! }
! }
!
! void mm_lsub (MAILSTREAM *stream,DTYPE delimiter,char *mailbox,long attributes)
! {
! STRINGLIST *cur=NIL;
! if (imap_sfolders == NIL) {
! imap_sfolders=mail_newstringlist();
! imap_sfolders->LSIZE=strlen(imap_sfolders->LTEXT=cpystr(mailbox));
! imap_sfolders->next=NIL;
} else {
! cur=imap_sfolders;
while (cur->next != NIL ) {
cur=cur->next;
}
***************
*** 1218,1268 ****
}
}
- void mm_lsub (MAILSTREAM *stream,DTYPE delimiter,char *mailbox,long attributes)
- {
- STRINGLIST *cur=NIL;
- if (imap_sfolders == NIL) {
- imap_sfolders=mail_newstringlist();
- imap_sfolders->LSIZE=strlen(imap_sfolders->LTEXT=cpystr(mailbox));
- imap_sfolders->next=NIL;
- } else {
- cur=imap_sfolders;
- while (cur->next != NIL ) {
- cur=cur->next;
- }
- cur->next=mail_newstringlist ();
- cur=cur->next;
- cur->LSIZE = strlen (cur->LTEXT = cpystr (mailbox));
- cur->next = NIL;
- }
- }
-
-
void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
{
! }
void mm_log (char *string,long errflg)
{
! switch ((short) errflg) {
! case NIL:
! php3_error(E_NOTICE,string); /* messages */
! break;
! case PARSE:
! case WARN:
! php3_error(E_WARNING,string); /* warnings */
! break;
! case ERROR:
! php3_error(E_NOTICE,string); /* errors */
! break;
! }
}
-
void mm_dlog (char *string)
{
! php3_error(E_NOTICE,string);
}
void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
--- 1932,1967 ----
}
}
void mm_status (MAILSTREAM *stream,char *mailbox,MAILSTATUS *status)
{
! status_flags=status->flags;
! if(status_flags & SA_MESSAGES) status_messages=status->messages;
! if(status_flags & SA_RECENT) status_recent=status->recent;
! if(status_flags & SA_UNSEEN) status_unseen=status->unseen;
! if(status_flags & SA_UIDNEXT) status_uidnext=status->uidnext;
! if(status_flags & SA_UIDVALIDITY) status_uidvalidity=status->uidvalidity;
+ }
void mm_log (char *string,long errflg)
{
! switch ((short) errflg) {
! case NIL:
! php3_error(E_NOTICE,string); /* messages */
! break;
! case PARSE:
! case WARN:
! php3_error(E_WARNING,string); /* warnings */
! break;
! case ERROR:
! php3_error(E_NOTICE,string); /* errors */
! break;
! }
}
void mm_dlog (char *string)
{
! php3_error(E_NOTICE,string);
}
void mm_login (NETMBX *mb,char *user,char *pwd,long trial)
***************
*** 1296,1306 ****
{
}
! #endif /* HAVE_IMAP */
!
! /*
! * Local variables:
! * tab-width: 4
! * c-basic-offset: 4
! * End:
! */
--- 1995,1998 ----
{
}
! #endif
Index: php31/ext/imap/imap.h
diff -c php31/ext/imap/imap.h:2.0 php31/ext/imap/imap.h:2.1
*** php31/ext/imap/imap.h:2.0 Fri Jul 3 09:13:07 1998
--- php31/ext/imap/imap.h Mon Aug 24 22:44:11 1998
***************
*** 1,11 ****
#ifndef _INCLUDED_IMAP_H
#define _INCLUDED_IMAP_H
! #include "../phpdl.h"
/* Functions accessable to PHP */
extern int imap_init(INIT_FUNC_ARGS);
void php3_imap_open(INTERNAL_FUNCTION_PARAMETERS);
void php3_imap_reopen(INTERNAL_FUNCTION_PARAMETERS);
void php3_imap_close(INTERNAL_FUNCTION_PARAMETERS);
--- 1,26 ----
#ifndef _INCLUDED_IMAP_H
#define _INCLUDED_IMAP_H
! #if COMPILE_DL
! #undef HAVE_IMAP
! #define HAVE_IMAP 1
! #endif
!
! #if HAVE_IMAP
!
! #ifdef THREAD_SAFE
! #include "tls.h"
! #endif
! #ifndef MSVC5
! #include "build-defs.h"
! #endif
/* Functions accessable to PHP */
+ extern php3_module_entry php3_imap_module_entry;
+ #define php3_imap_module_ptr &php3_imap_module_entry
extern int imap_init(INIT_FUNC_ARGS);
+ extern void imap_info(void);
void php3_imap_open(INTERNAL_FUNCTION_PARAMETERS);
void php3_imap_reopen(INTERNAL_FUNCTION_PARAMETERS);
void php3_imap_close(INTERNAL_FUNCTION_PARAMETERS);
***************
*** 35,38 ****
--- 50,86 ----
void php3_imap_base64(INTERNAL_FUNCTION_PARAMETERS);
void php3_imap_qprint(INTERNAL_FUNCTION_PARAMETERS);
void php3_imap_8bit(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_binary(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_mailboxmsginfo(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_rfc822_write_address(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_rfc822_parse_adrlist(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_setflag_full(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_clearflag_full(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_sort(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_fetchtext(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_fetchheader(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_uid(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_msgno(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_fetchtext_full(INTERNAL_FUNCTION_PARAMETERS);
+ void php3_imap_status(INTERNAL_FUNCTION_PARAMETERS);
+
+ #else
+ #define php3_imap_module_ptr NULL
+ #endif /* HAVE_IMAP */
+
#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--
PHP Development Mailing List http://www.php.net/
To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net
For help: php-dev-help@lists.php.net