diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index f94438ff7f0..2d23ff90d63 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -132,6 +132,7 @@ function_entry imap_functions[] = { #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) PHP_FE(imap_get_quota, NULL) PHP_FE(imap_set_quota, NULL) + PHP_FE(imap_setacl, NULL) #endif #ifndef PHP_WIN32 @@ -1058,6 +1059,36 @@ PHP_FUNCTION(imap_set_quota) RETURN_LONG(imap_setquota(imap_le_struct->imap_stream, Z_STRVAL_PP(qroot), &limits)); } /* }}} */ + + +/* {{{ proto int imap_setacl(int stream_id, string mailbox, string id, string rights) + Sets the ACL for a giving mailbox */ +PHP_FUNCTION(imap_setacl) +{ + zval **streamind, **mailbox, **id, **rights; + int ind, ind_type; + pils *imap_le_struct; + + if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &streamind, &mailbox, &id, &rights) == FAILURE) { + ZEND_WRONG_PARAM_COUNT(); + } + + convert_to_long_ex(streamind); + convert_to_string_ex(mailbox); + convert_to_string_ex(id); + convert_to_string_ex(rights); + + ind = Z_LVAL_PP(streamind); + imap_le_struct = (pils *) zend_list_find(ind, &ind_type); + if (!imap_le_struct || !IS_STREAM(ind_type)) { + php_error(E_WARNING, "Unable to find stream pointer"); + RETURN_FALSE; + } + + RETURN_LONG(imap_setacl(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox), Z_STRVAL_PP(id), Z_STRVAL_PP(rights))); +} +/* }}} */ + #endif diff --git a/ext/imap/php_imap.h b/ext/imap/php_imap.h index 16485537e2c..cd33a518fbd 100644 --- a/ext/imap/php_imap.h +++ b/ext/imap/php_imap.h @@ -178,6 +178,7 @@ PHP_FUNCTION(imap_thread); #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) PHP_FUNCTION(imap_get_quota); PHP_FUNCTION(imap_set_quota); +PHP_FUNCTION(imap_setacl); #endif