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)
#endifPHP_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
Diego Woitasen kirjoitti:
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)
#endifPHP_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
Does this really work? You're blindly overwriting the acl global, AFAICT..?
Or is that intentional?
@@ -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;
+}
+/* }}} */
..and again..
+/* {{{ 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);
SET? Not GET? In what c-client version was this added anyway..?
--Jani
- 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 kirjoitti:
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)
#endifPHP_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
Does this really work? You're blindly overwriting the acl global,
AFAICT..?
Or is that intentional?
Yes, it works. I use the imap_getacl() function as example to write
imap_myrights(). What's the problem with overwriting acl global?
@@ -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;
+}
+/* }}} */..and again..
+/* {{{ 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);
SET? Not GET? In what c-client version was this added anyway..?
Yes, if I didn't misundertand the API. GET/SET are used to set or get API
parameters, they don't anything at IMAP protocol. See imap_getacl()
function for example.
I'm using imap 2006k.
--Jani
- 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 - Soluciones Linux para empresas
(54) 011 5219-0678
Diego Woitasen wrote:
Diego Woitasen kirjoitti:
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)
#endifPHP_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
Does this really work? You're blindly overwriting the acl global,
AFAICT..?
Or is that intentional?Yes, it works. I use the imap_getacl() function as example to write
imap_myrights(). What's the problem with overwriting acl global?
So you don't use imap_setacl/imap_getacl ?? Or care if someone else
does? I'm not sure how this really works, but it doesn't sound quite right..
--Jani
Diego Woitasen wrote:
Diego Woitasen kirjoitti:
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)
#endifPHP_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
Does this really work? You're blindly overwriting the acl global,
AFAICT..?
Or is that intentional?Yes, it works. I use the imap_getacl() function as example to write
imap_myrights(). What's the problem with overwriting acl global?So you don't use imap_setacl/imap_getacl ?? Or care if someone else
does? I'm not sure how this really works, but it doesn't sound quite
right..--Jani
I looked at the code again. imap_acl_list contains the last value returned
by imap_getacl() (and imap_myrights() with the patch). I don't undertand
why writing that variable is a problem.
GETACL and MYRIGHTS have different meanings, the first gets all ACLs of a
folder and the second just only the ACLs of the current user. If the users
doesn't have permissions or isn't the owner, GETACL fails and MYRIGHTS no.
--
Diego Woitasen
XTECH - Soluciones Linux para empresas
(54) 011 5219-0678