I noticed that using:
imap_setacl ($conn, $mbox, $userid, "")
will act like:
"deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
imap_setacl — Sets the ACL for a given mailbox
Sets the ACL for a giving mailbox.
imap
An IMAP\Connection instance.
mailbox
The mailbox name, see imap_open() for more information
Passing untrusted data to this parameter is insecure, unless imap.enable_insecure_rsh is disabled.
user_id
The user to give the rights to.
rights
The rights to give to the user. Passing an empty string will delete acl.
Returns true
on success or false
on failure.
Version | Description |
---|---|
8.1.0 |
The imap parameter expects an IMAP\Connection
instance now; previously, a valid imap resource was expected.
|
This function is currently only available to users of the c-client2000 or greater library.
I noticed that using:
imap_setacl ($conn, $mbox, $userid, "")
will act like:
"deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
After getting the ACL's from imap_getacl you want to set them for a user on any mailbox folder like this:
foreach ( $Folders as $key => $Maildir ) {
imap_setacl($domains , "user/john.doe/".$Maildir , $userid, "lrswipkxte");
}
You can use a form that translates the ACLs like the following (thanks to cyradm manual):
switch ($right) {
case "read" : $aclstring = "lrs";
break;
case "post" : $aclstring = "lrsp";
break;
case "append" : $aclstring = "lrsip";
break;
case "write" : $aclstring = "lrswipkxte";
break;
case "delete" : $aclstring = "lrxte";
break;
case "all" : $aclstring = "lrswipkxte";
break;
case "admin" : $aclstring = "lrswipkxtea";
break;
case "none" : $aclstring = "";
break;
}