X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=php-imap-annotations.patch;fp=php-imap-annotations.patch;h=0000000000000000000000000000000000000000;hb=af4b4043e31c73aa2409a03c8bea8215f9e36b7d;hp=d94dcbd637f937778ac12bf116047ca5fdca52e5;hpb=94fddfd7fd8befff8756d45ac484c4e03e69c44c;p=packages%2Fphp.git diff --git a/php-imap-annotations.patch b/php-imap-annotations.patch deleted file mode 100644 index d94dcbd..0000000 --- a/php-imap-annotations.patch +++ /dev/null @@ -1,305 +0,0 @@ -Provides get/set ANNOTATIONS support to PHP. [Version: 5.2.6] - -diff -r 76412c484360 ext/imap/php_imap.c ---- a/ext/imap/php_imap.c Wed Dec 23 22:18:41 2009 +0100 -+++ b/ext/imap/php_imap.c Wed Dec 23 22:46:34 2009 +0100 -@@ -161,6 +161,22 @@ - ZEND_ARG_INFO(0, mailbox) - ZEND_END_ARG_INFO() - #endif -+#if defined(HAVE_IMAP2005) -+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_setannotation, 0, 0, 5) -+ ZEND_ARG_INFO(0, stream_id) -+ ZEND_ARG_INFO(0, mailbox) -+ ZEND_ARG_INFO(0, entry) -+ ZEND_ARG_INFO(0, attr) -+ ZEND_ARG_INFO(0, value) -+ZEND_END_ARG_INFO() -+ -+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_getannotation, 0, 0, 4) -+ ZEND_ARG_INFO(0, stream_id) -+ ZEND_ARG_INFO(0, mailbox) -+ ZEND_ARG_INFO(0, entry) -+ ZEND_ARG_INFO(0, attr) -+ZEND_END_ARG_INFO() -+#endif - - ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_expunge, 0, 0, 1) - ZEND_ARG_INFO(0, stream_id) -@@ -402,6 +418,11 @@ - ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_status, 0, 0, 3) - ZEND_ARG_INFO(0, stream_id) - ZEND_ARG_INFO(0, mailbox) -+ ZEND_ARG_INFO(0, options) -+ZEND_END_ARG_INFO() -+ -+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_status_current, 0, 0, 2) -+ ZEND_ARG_INFO(0, stream_id) - ZEND_ARG_INFO(0, options) - ZEND_END_ARG_INFO() - -@@ -504,6 +525,7 @@ - PHP_FE(imap_binary, arginfo_imap_binary) - PHP_FE(imap_utf8, arginfo_imap_utf8) - PHP_FE(imap_status, arginfo_imap_status) -+ PHP_FE(imap_status_current, arginfo_imap_status_current) - PHP_FE(imap_mailboxmsginfo, arginfo_imap_mailboxmsginfo) - PHP_FE(imap_setflag_full, arginfo_imap_setflag_full) - PHP_FE(imap_clearflag_full, arginfo_imap_clearflag_full) -@@ -534,6 +556,10 @@ - PHP_FE(imap_setacl, arginfo_imap_setacl) - PHP_FE(imap_getacl, arginfo_imap_getacl) - #endif -+#if defined(HAVE_IMAP2005) -+ PHP_FE(imap_setannotation, arginfo_imap_setannotation) -+ PHP_FE(imap_getannotation, arginfo_imap_getannotation) -+#endif - - PHP_FE(imap_mail, arginfo_imap_mail) - -@@ -795,6 +821,30 @@ - /* }}} */ - #endif - -+#if defined(HAVE_IMAP2005) -+/* {{{ mail_getannotation -+ * -+ * Mail GET_ANNOTATION callback -+ * Called via the mail_parameter function in c-client:src/c-client/mail.c -+ */ -+void mail_getannotation(MAILSTREAM *stream, ANNOTATION *alist) -+{ -+ ANNOTATION_VALUES *cur; -+ -+ TSRMLS_FETCH(); -+ -+ /* walk through the ANNOTATION_VALUES */ -+ -+ for(cur = alist->values; cur; cur = cur->next) { -+ if (cur->value) -+ add_assoc_stringl(IMAPG(imap_annotation_list), cur->attr, cur->value, strlen(cur->value), 1); -+ else -+ add_assoc_stringl(IMAPG(imap_annotation_list), cur->attr, "", 0, 1); -+ } -+} -+/* }}} */ -+#endif -+ - /* {{{ PHP_GINIT_FUNCTION - */ - static PHP_GINIT_FUNCTION(imap) -@@ -820,6 +870,7 @@ - #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) - imap_globals->quota_return = NIL; - imap_globals->imap_acl_list = NIL; -+ imap_globals->imap_annotation_list = NIL; - #endif - imap_globals->gets_stream = NIL; - } -@@ -1475,7 +1526,119 @@ - } - /* }}} */ - #endif /* HAVE_IMAP2000 || HAVE_IMAP2001 */ -- -+ -+#if defined(HAVE_IMAP2005) -+ -+/* {{{ proto bool imap_setannotation(resource stream_id, string mailbox, string entry, string attr, string value) -+ Sets an annotation for a given mailbox */ -+PHP_FUNCTION(imap_setannotation) -+{ -+ zval **streamind, **mailbox, **entry, **attr, **value; -+ pils *imap_le_struct; -+ long ret; -+ -+ // TODO: Use zend_parse_parameters here -+ if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &streamind, &mailbox, &entry, &attr, &value) == FAILURE) { -+ ZEND_WRONG_PARAM_COUNT(); -+ } -+ -+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); -+ -+ convert_to_string_ex(mailbox); -+ convert_to_string_ex(entry); -+ convert_to_string_ex(attr); -+ convert_to_string_ex(value); -+ -+ // create annotation object -+ ANNOTATION *annotation = mail_newannotation(); -+ if (!annotation) -+ RETURN_FALSE; -+ annotation->values = mail_newannotationvalue(); -+ if (!annotation->values) { -+ mail_free_annotation(&annotation); -+ RETURN_FALSE; -+ } -+ -+ // fill in annotation values -+ annotation->mbox = Z_STRVAL_PP(mailbox); -+ annotation->entry = Z_STRVAL_PP(entry); -+ annotation->values->attr = Z_STRVAL_PP(attr); -+ annotation->values->value = Z_STRVAL_PP(value); -+ -+ ret = imap_setannotation(imap_le_struct->imap_stream, annotation); -+ -+ // make sure mail_free_annotation doesn't free our variables -+ annotation->mbox = NULL; -+ annotation->entry = NULL; -+ annotation->values->attr = NULL; -+ annotation->values->value = NULL; -+ mail_free_annotation(&annotation); -+ -+ RETURN_BOOL(ret); -+} -+/* }}} */ -+ -+/* {{{ proto array imap_getannotation(resource stream_id, string mailbox, string entry, string attr) -+ Gets the ACL for a given mailbox */ -+PHP_FUNCTION(imap_getannotation) -+{ -+ zval **streamind, **mailbox, **entry, **attr; -+ pils *imap_le_struct; -+ long ret; -+ -+ if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &streamind, &mailbox, &entry, &attr) == FAILURE) { -+ ZEND_WRONG_PARAM_COUNT(); -+ } -+ -+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); -+ -+ convert_to_string_ex(mailbox); -+ convert_to_string_ex(entry); -+ convert_to_string_ex(attr); -+ -+ /* initializing the special array for the return values */ -+ if (array_init(return_value) == FAILURE) { -+ RETURN_FALSE; -+ } -+ -+ // fillup calling parameters -+ STRINGLIST *entries = mail_newstringlist(); -+ if (!entries) -+ RETURN_FALSE; -+ -+ STRINGLIST *cur = entries; -+ cur->text.data = (unsigned char *)cpystr(Z_STRVAL_PP(entry)); -+ cur->text.size = Z_STRLEN_PP(entry); -+ cur->next = NIL; -+ -+ STRINGLIST *attributes = mail_newstringlist(); -+ if (!attributes) -+ RETURN_FALSE; -+ cur = attributes; -+ cur->text.data = (unsigned char *)cpystr (Z_STRVAL_PP(attr)); -+ cur->text.size = Z_STRLEN_PP(attr); -+ cur->next = NIL; -+ -+ IMAPG(imap_annotation_list) = return_value; -+ -+ /* set the callback for the GET_ANNOTATION function */ -+ mail_parameters(NIL, SET_ANNOTATION, (void *) mail_getannotation); -+ ret = imap_getannotation(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox), entries, attributes); -+ -+ mail_free_stringlist(&entries); -+ mail_free_stringlist(&attributes); -+ -+ if (!ret) { -+ zval_dtor(return_value); -+ RETURN_FALSE; -+ } -+ -+ IMAPG(imap_annotation_list) = NIL; -+} -+/* }}} */ -+ -+#endif /* HAVE_IMAP2005 */ -+ - /* {{{ proto bool imap_expunge(resource stream_id) - Permanently delete all messages marked for deletion */ - PHP_FUNCTION(imap_expunge) -@@ -3118,6 +3281,42 @@ - } - /* }}} */ - -+/* {{{ proto object imap_status_current(resource stream_id, int options) -+ Get (cached) status info from current mailbox */ -+PHP_FUNCTION(imap_status_current) -+{ -+ zval **streamind, **pflags; -+ pils *imap_le_struct; -+ long flags = 0L; -+ -+ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind, &pflags) == FAILURE) { -+ ZEND_WRONG_PARAM_COUNT(); -+ } -+ -+ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); -+ -+ convert_to_long_ex(pflags); -+ flags = Z_LVAL_PP(pflags); -+ -+ if (object_init(return_value) == FAILURE) { -+ RETURN_FALSE; -+ } -+ -+ if (flags & SA_MESSAGES) { -+ add_property_long(return_value, "messages", imap_le_struct->imap_stream->nmsgs); -+ } -+ if (flags & SA_RECENT) { -+ add_property_long(return_value, "recent", imap_le_struct->imap_stream->recent); -+ } -+ if (flags & SA_UIDNEXT) { -+ add_property_long(return_value, "uidnext", imap_le_struct->imap_stream->uid_last+1); -+ } -+ if (flags & SA_UIDVALIDITY) { -+ add_property_long(return_value, "uidvalidity", imap_le_struct->imap_stream->uid_validity); -+ } -+} -+/* }}} */ -+ - /* {{{ proto object imap_status(resource stream_id, string mailbox, int options) - Get status info from a mailbox */ - PHP_FUNCTION(imap_status) -diff -r 76412c484360 ext/imap/php_imap.h ---- a/ext/imap/php_imap.h Wed Dec 23 22:18:41 2009 +0100 -+++ b/ext/imap/php_imap.h Wed Dec 23 22:46:34 2009 +0100 -@@ -153,6 +153,7 @@ - PHP_FUNCTION(imap_lsub_full); - PHP_FUNCTION(imap_create); - PHP_FUNCTION(imap_rename); -+PHP_FUNCTION(imap_status_current); - PHP_FUNCTION(imap_status); - PHP_FUNCTION(imap_bodystruct); - PHP_FUNCTION(imap_fetch_overview); -@@ -173,6 +174,9 @@ - PHP_FUNCTION(imap_thread); - PHP_FUNCTION(imap_timeout); - -+// TODO: Needs fixing in configure in -+#define HAVE_IMAP2005 1 -+ - #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) - PHP_FUNCTION(imap_get_quota); - PHP_FUNCTION(imap_get_quotaroot); -@@ -180,7 +184,10 @@ - PHP_FUNCTION(imap_setacl); - PHP_FUNCTION(imap_getacl); - #endif -- -+#if defined(HAVE_IMAP2005) -+PHP_FUNCTION(imap_setannotation); -+PHP_FUNCTION(imap_getannotation); -+#endif - - ZEND_BEGIN_MODULE_GLOBALS(imap) - char *imap_user; -@@ -211,6 +218,9 @@ - zval **quota_return; - zval *imap_acl_list; - #endif -+#if defined(HAVE_IMAP2005) -+ zval *imap_annotation_list; -+#endif - /* php_stream for php_mail_gets() */ - php_stream *gets_stream; - ZEND_END_MODULE_GLOBALS(imap)