$user, 'permission' => $permission, 'mailbox' => $mbox, 'type'=>'change');
} else {
$errormsg[] = sprintf( _("Failed to give user %s %s permission for folder %s."),
$user, _(ucfirst($permission)), imap_utf7_decode_local($mbox));
}
} elseif($ret = set_permission($imapConnection, $mbox, $user, $permission)) {
/* Successfully added acl for user */
$successmsg[] = sprintf( _("User %s has been given %s permisssion for folder %s."),
$user, _(ucfirst($permission)), imap_utf7_decode_local($mbox));
$notify_users[] = array('user' => $user, 'permission' => $permission, 'mailbox' => $mbox, 'type'=>'new');
} else {
/* User does not exist */
$errormsg[] = sprintf( _("Failed to give user %s %s permission for folder %s."),
$user, _(ucfirst($permission)), imap_utf7_decode_local($mbox));
$errormsg[] = _("Specified user does not exist.");
}
}
}
/* --- Main --- */
/* ------------- Business Logic --------- */
$boxes = sqimap_mailbox_list($imapConnection);
for ($boxnum = 0; $boxnum < count($boxes); $boxnum++) {
$mbox = $boxes[$boxnum]['unformatted'];
if(!strstr($mbox, 'INBOX') ||
$mbox == 'INBOX' ||
in_array('noselect', $boxes[$boxnum]['flags'])) {
unset($boxes[$boxnum]);
}
}
// print_r($boxes);
$boxes = array_values($boxes);
//print "reorderred";
//print_r($boxes);
$usernames = array(); /* Array to gather all usernames together */
foreach($boxes as $no=>$box) {
$mbox = $box['unformatted'];
/* Get ACLs only for subfolders of INBOX */
/* FIXME: Alternate namespace */
if(strstr($mbox, 'INBOX') && $mbox != 'INBOX' ) {
sqimap_getacl($imapConnection, $mbox, $out);
if(array_key_exists($username, $out)) {
unset($out[$username]);
}
$perm[$mbox] = $out;
}
}
$perm_array = create_human_readable_permarray($perm);
sqimap_logout($imapConnection);
if(isset($ldap)) {
/* We require directory plugin */
require_once(SM_PATH . 'plugins/directory/functions.php');
/* Ask user full names so as to display nicely */
foreach($perm as $mbox=>$pe) {
$usernames = array_merge($usernames, array_keys($pe));
}
$usernames=array_unique($usernames);
$usernames=array_values($usernames);
if (!isset($ldap)) {
if(!($ldap=ldap_connect($ldap_server[$ldap_server_no]['host'], $ldap_server[$ldap_server_no]['port']))) {
print "Could not connect to LDAP server.";
}
if (isset($ldap_server[$ldap_server_no]['binddn'])) {
if (!ldap_bind($ldap, $ldap_server[$ldap_server_no]['binddn'], $ldap_server[$ldap_server_no]['bindpw'])) {
print "Could not bind to LDAP server.";
}
}
}
$filter = '(|(uid=';
$filter .= implode(')(uid=', $usernames);
$filter .= '))';
if($show_ldap_cn == true) {
$attributes = array('cn', 'uid', 'mail');
} else {
$attributes = array('uid', 'mail');
}
if (!($sr = ldap_search($ldap, $ldap_server[$ldap_server_no]['base'], $filter, $attributes))) {
print "Could not search for usernames.";
}
$entries = ldap_get_entries ($ldap, $sr);
$names = array();
$mails = array();
for($i=0; $i<$entries['count']; $i++) {
if($show_ldap_cn == true) {
if(isset($entries[$i]['cn;lang-'.$lang][0])) {
$names[$entries[$i]['uid'][0]] =
directory_string_convert($entries[$i]['cn;lang-'.$lang][0],
$ldap_server[$ldap_server_no]['charset'], $charset);
} elseif(isset($entries[$i]['cn'][0])) {
$names[$entries[$i]['uid'][0]] = $entries[$i]['cn'][0];
}
}
if(isset($entries[$i]['mail'][0])) {
$mails[$entries[$i]['uid'][0]] = $entries[$i]['mail'][0];
}
}
ldap_close($ldap);
}
/* --- Mail Notification --- */
/**
* If there is mail notification to send, display the reminder/notice.
*/
if(isset($notify_users) && $notify) {
require_once(SM_PATH . 'class/deliver/Deliver.class.php');
require_once(SM_PATH . 'functions/mime.php');
require_once(SM_PATH . 'functions/identity.php');
/*
print "";
print_r($notify_users);
// $idents = get_identities();
// print_r($idents);
// if(sizeof($idents) == 1 ) {
// print "one identity";
// }
print "
";
*/
foreach($notify_users as $n=>$info) {
// print "
Notify ". $no['user'].", ".$no['permission'].", ".$no['mailbox']."
";
$notifyMessage = new Message();
$rfc822_header = new Rfc822Header();
$notifyMessage->rfc822_header = $rfc822_header;
$notifyMessage->reply_rfc822_header = '';
$body = useracl_prepare_notify_message($info);
if(isset($mails)) {
/* uids=>mails, taken from LDAP */
$send_to = $mails[$info['user']];
} else {
$send_to = $info['user']. "@noc.edunet.gr";
}
/* Debug: */
$send_to_cc = "avel@noc.edunet.gr";
/*
if($check_user_method == 'ldap') {
if (!isset($ldap)) {
if(!($ldap=ldap_connect($ldap_server[$ldap_server_no]['host'], $ldap_server[$ldap_server_no]['port']))) {
print "Could not connect to LDAP server.";
}
ldap_search
*/
if($info['type'] == 'change' && $info['permission'] == 'none') {
/* 'remove' */
$subject = sprintf("Notification for removal of access to shared folder, by user: %s, Folder: %s",
$username, imap_utf7_decode_local($info['mailbox']));
} elseif($info['type'] == 'change') {
/* 'change' */
$subject = sprintf("Notification for changes in access to shared folder, by user: %s, Folder: %s",
$username, imap_utf7_decode_local($info['mailbox']));
} else {
/* 'new' */
$subject = sprintf("Notification for new shared folder by user: %s, folder: %s",
$username, imap_utf7_decode_local($info['mailbox']));
}
$Result = deliverMessage($notifyMessage);
if (! $Result) {
$failnotify[] = $info;
} else {
$successnotify[] = $info;
}
unset($notifyMessage);
}
if(isset($failnotify)) {
foreach($failnotify as $n=>$info) {
if(isset($names[$info['user']])) {
$info['printname'] = $info['user'] . ' ('.$names[$info['user']].')';
} else {
$info['printname'] = $info['user'];
}
}
if(sizeof($failnotify) == 1) {
$errormsg[] = sprintf( _("Failed to send notification message to user %s"), $info['printname']);
} elseif(sizeof($failnotify) > 1) {
foreach($failnotify as $n=>$info) {
$printnames[] = $info['printname'];
}
$errormsg[] = sprintf( _("Failed to send notification message to users: %s"), implode(', ',$printnames));
}
}
if(isset($successnotify)) {
foreach($successnotify as $n=>$info) {
if(isset($names[$info['user']])) {
$info['printname'] = $info['user'] . ' ('.$names[$info['user']].')';
$successprint[] = $info['user'] . ' ('.$names[$info['user']].')';
} else {
$info['printname'] = $info['user'];
$successprint[] = $info['user'];
}
}
if(sizeof($successprint) == 1) {
$successmsg[] = sprintf( _("Successfully sent notification message to user %s"), $successprint[0]);
} elseif(sizeof($successprint) > 1) {
$successmsg[] = sprintf( _("Successfully sent notification message to users: %s"), implode(', ',$successprint));
}
}
/*
echo ''
. '