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 — Legt die ACL (Zugriffsrechte) für ein Postfach fest
Legt die ACL (Zugriffsrechte) für das angegebene Postfach fest.
imap
Eine IMAP\Connection-Instanz.
mailbox
Der Name des Postfachs, siehe imap_open() für nähere Informationen.
Die Übergabe von nicht vertrauenswürdigen Daten an diesen Parameter ist unsicher,falls imap.enable_insecure_rsh nicht deaktiviert ist.
user_id
Der Benutzer, dessen Berechtigungen geändert werden sollen.
rights
Die Berechtigungen, die dem Benutzer gewährt werden sollen. Durch die Übergabe eines leeren Strings wird die ACL entfernt, d. h. alle Berechtigungen werden entzogen.
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Version | Beschreibung |
---|---|
8.1.0 |
Der Parameter imap erwartet nun eine
IMAP\Connection-Instanz; vorher wurde eine gültige
imap -Ressource erwartet.
|
Diese Funktion ist derzeit nur ab der Bibliotheksversion c-client2000 verfügbar.
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;
}