Hi,
  I attach the patch that adds imap_myrights function to IMAP module.
  MYRIGHTS is a standard IMAP command defined in RFC 2086.

diff -u -r php-5.2.6/ext/imap/php_imap.c php-myrights/ext/imap/php_imap.c
--- php-5.2.6/ext/imap/php_imap.c       Thu Apr 17 13:04:49 2008
+++ php-myrights/ext/imap/php_imap.c    Tue Jun  3 18:06:37 2008
@@ -154,6 +154,7 @@
        PHP_FE(imap_set_quota,                                                  
NULL)
        PHP_FE(imap_setacl,                                                     
        NULL)
        PHP_FE(imap_getacl,                                                     
        NULL)
+       PHP_FE(imap_myrights,                                                   
NULL)
 #endif
 
        PHP_FE(imap_mail,                                                       
        NULL)
@@ -413,6 +414,20 @@
 }
 /* }}} */
 
+/* {{{ mail_myrights
+ *
+ * Mail MYRIGHTS callback
+ * Called via the mail_parameter function in c-client:src/c-client/mail.c
+ */
+void mail_myrights(MAILSTREAM *stream, char *mailbox, char *rights)
+{
+       TSRMLS_FETCH();
+
+       ZVAL_STRING(IMAPG(imap_acl_list), rights, 1)
+
+}
+/* }}} */
+
 #endif
 
 
@@ -1087,6 +1102,35 @@
        mail_parameters(NIL, SET_ACL, (void *) mail_getacl);
        if(!imap_getacl(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox))) {
                php_error(E_WARNING, "c-client imap_getacl failed");
+               zval_dtor(return_value);
+               RETURN_FALSE;
+       }
+
+       IMAPG(imap_acl_list) = NIL;
+}
+/* }}} */
+
+/* {{{ proto string imap_myrights(resource stream_id, string mailbox)
+       Gets my rights (ACL) for a given mailbox */
+PHP_FUNCTION(imap_myrights)
+{
+       zval **streamind, **mailbox;
+       pils *imap_le_struct;
+
+       if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind, 
&mailbox) == FAILURE) {
+               ZEND_WRONG_PARAM_COUNT();
+       }
+
+       ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", 
le_imap);
+
+       convert_to_string_ex(mailbox);
+
+       IMAPG(imap_acl_list) = return_value;
+
+       /* set the callback for the GET_ACL function */
+       mail_parameters(NIL, SET_MYRIGHTS, (void *) mail_myrights);
+       if(!imap_myrights(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox))) {
+               php_error(E_WARNING, "c-client imap_myrights failed");
                zval_dtor(return_value);
                RETURN_FALSE;
        }
diff -u -r php-5.2.6/ext/imap/php_imap.h php-myrights/ext/imap/php_imap.h
--- php-5.2.6/ext/imap/php_imap.h       Mon Dec 31 08:20:07 2007
+++ php-myrights/ext/imap/php_imap.h    Tue Jun  3 18:05:14 2008
@@ -174,6 +174,7 @@
 PHP_FUNCTION(imap_set_quota);
 PHP_FUNCTION(imap_setacl);
 PHP_FUNCTION(imap_getacl);
+PHP_FUNCTION(imap_myrights);
 #endif
 
 


-- 
-----------------------
Diego Woitasen - XTECH
www.xtech.com.ar

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to