Re: svn: /php/php-src/branches/PHP_5_3/ NEWS ext/imap/php_imap.c

From: Date: Mon, 21 Dec 2009 11:17:18 +0000
Subject: Re: svn: /php/php-src/branches/PHP_5_3/ NEWS ext/imap/php_imap.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-61362@lists.php.net to get a copy of this message
On 12/17/2009 07:28 PM, Pierre Joye wrote:
pajoye                                   Thu, 17 Dec 2009 17:28:26 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=292262 Log: - [DOC] add INTERNALDATE to imap_append (will merge to trunk later)
"Later" being this year or sometime in 2010? --Jani
Changed paths:
     U   php/php-src/branches/PHP_5_3/NEWS
     U   php/php-src/branches/PHP_5_3/ext/imap/php_imap.c
Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-12-17 17:25:07 UTC (rev 292261) +++ php/php-src/branches/PHP_5_3/NEWS 2009-12-17 17:28:26 UTC (rev 292262) @@ -9,6 +9,7 @@ - Changed "post_max_size" php.ini directive to allow unlimited post size by
    setting it to 0. (Rasmus)
+- Added INTERNALDATE support to imap_append. (nick at mailtrust dot com) - Added support for SHA-256 and SHA-512 to php's crypt. (Pierre) - Added realpath_cache_size() and realpath_cache_get() functions. (Stas) - Added FILTER_FLAG_STRIP_BACKTICK option to the filter extension. (Ilia) Modified: php/php-src/branches/PHP_5_3/ext/imap/php_imap.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/imap/php_imap.c 2009-12-17 17:25:07 UTC (rev 292261) +++ php/php-src/branches/PHP_5_3/ext/imap/php_imap.c 2009-12-17 17:28:26 UTC (rev 292262) @@ -41,6 +41,7 @@ #include "ext/standard/info.h" #include "ext/standard/file.h" #include "ext/standard/php_smart_str.h" +#include "ext/pcre/php_pcre.h" #ifdef ERROR #undef ERROR @@ -118,6 +119,7 @@ ZEND_ARG_INFO(0, folder) ZEND_ARG_INFO(0, message) ZEND_ARG_INFO(0, options) + ZEND_ARG_INFO(0, date) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_num_msg, 0, 0, 1) @@ -1265,25 +1267,48 @@ } /* }}} */ -/* {{{ proto bool imap_append(resource stream_id, string folder, string message [, string options]) +/* {{{ proto bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])
     Append a new message to a specified mailbox */
PHP_FUNCTION(imap_append) { zval *streamind; - char *folder, *message, *flags = NULL; - int folder_len, message_len, flags_len = 0; + char *folder, *message, *internal_date = NULL, *flags = NULL; + int folder_len, message_len, internal_date_len = 0, flags_len = 0; pils *imap_le_struct; STRING st; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|s",&streamind,&folder,&folder_len,&message,&message_len,&flags,&flags_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|ss",&streamind,&folder,&folder_len,&message,&message_len,&flags,&flags_len,&internal_date,&internal_date_len) == FAILURE) { return; } + char* regex = "/[0-3][0-9]-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-[0-9]{4} [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [+-][0-9]{4}/"; + int regex_len = strlen(regex); + pcre_cache_entry *pce; /* Compiled regex */ + zval *subpats = NULL; /* Parts (not used) */ + long regex_flags = 0; /* Flags (not used) */ + long start_offset = 0; /* Start offset (not used) */ + int global = 0; + + if (internal_date) { + /* Make sure the given internal_date string matches the RFC specifiedformat */ + if ((pce = pcre_get_compiled_regex_cache(regex, regex_len TSRMLS_CC))== NULL) { + RETURN_FALSE; + } + + php_pcre_match_impl(pce, internal_date, internal_date_len, return_value, subpats, global, + 0, regex_flags, start_offset TSRMLS_CC); + + if (!Z_LVAL_P(return_value)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "internal date not correctly formatted"); + internal_date = NULL; + } + } + ZEND_FETCH_RESOURCE(imap_le_struct, pils *,&streamind, -1, "imap", le_imap); INIT (&st, mail_string, (void *) message, message_len); - if (mail_append_full(imap_le_struct->imap_stream, folder, (flags ? flags : NIL), NIL,&st)) { + if (mail_append_full(imap_le_struct->imap_stream, folder, (flags ? flags : NIL), (internal_date ? internal_date : NIL),&st)) { RETURN_TRUE; } else { RETURN_FALSE;


« previous php.cvs (#61362) next »