ldap_functions = new ldap_functions;
$this->imap_functions = new imap_functions;
$this->functions = new functions;
}
function create($params)
{
$params['uid'] = $this->get_shared_mail2uid($params);
$return = $this->ldap_functions->create_shared_accounts($params);
if( $return['status'] ){
//Create mailbox
$mailquota = 10;
$return = $this->imap_functions->create($params['uid'], $params['mailquota']);
$owners_acl_new = unserialize($params['owners_acl']);
//add new users e set permissions
foreach($owners_acl_new as $user => $acl){
$result &= $this->imap_functions->setaclfrombox($user,$acl,$params['uid']);
}
}
return $return;
}
function save($params)
{
$params['uid'] = $this->get_shared_mail2uid($params);
$params['old_uid'] = $this->get_shared_dn2uid($params['anchor']);
$result = $this->ldap_functions->save_shared_accounts($params);
if( $result['status']){
$result = $this->imap_functions->save_shared_account($params);
}
return $result;
}
function get($params)
{
if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'list_institutional_accounts'))
{
$return['status'] = false;
$return['msg'] = $this->functions->lang('You do not have right to list institutional accounts') . ".";
return $return;
}
$input = $params['input'];
$justthese = array("cn", "mail", "uid");
$trs = array();
foreach ($this->manager_contexts as $idx=>$context)
{
$shared_accounts = ldap_search($this->ldap, $context, ("(&(phpgwAccountType=s)(|(mail=$input*)(cn=*$input*)))"), $justthese);
$entries = ldap_get_entries($this->ldap, $shared_accounts);
for ($i=0; $i<$entries['count']; $i++)
{
$tr = "
" . $entries[$i]['cn'][0] . " | " . $entries[$i]['mail'][0] . " | |
";
$trs[$tr] = $entries[$i]['cn'][0];
}
}
$trs_string = '';
if (count($trs))
{
natcasesort($trs);
foreach ($trs as $tr=>$cn)
{
$trs_string .= $tr;
}
}
$return['status'] = 'true';
$return['trs'] = $trs_string;
return $return;
}
function get_data($params)
{
$return = $this->ldap_functions->get_shared_account_data($params);
$owners_acl = $this->imap_functions->getaclfrombox($params);
$quota = $this->imap_functions->get_user_info($params['uid']);
$return['mailquota'] = $quota['mailquota'];
$return['display_empty_inbox'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'empty_shared_accounts_inbox') ? 'block' : 'none';
$return['allow_edit_shared_account_acl'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'edit_shared_accounts_acl');
$return['mailquota_used'] = $quota['mailquota_used'];
$i = 0;
if( is_array($owners_acl) ){
foreach($owners_acl as $key => $value)
{
$cn = $this->ldap_functions->uid2cn($key);
$return['owners_options'] .= '';
$return['owners'][$i] .= $key;
$return['owners_acl'][$i] .= $value;
$i++;
}
} else {
$return['owners_options'] = false;
$return['owners'] = false;
$return['owners_acl'] = false;
}
return $return;
}
function delete($params){
$result = $this->ldap_functions->delete_shared_account_data($params);
if( $result['status'] ) $result = $this->imap_functions->delete_mailbox($params['uid']);
return $result;
}
//Get the shared uid from mail
function get_shared_mail2uid($params){
list($uid) = explode("@",$params['mail']);
if( preg_match("/^(ou|dc)=(\w+),.*/", $params['context'], $match) ){
$uid = $uid."_".$match[2];
}
return $uid;
}
function get_shared_dn2uid($dn){
$uid = "";
list($uid) = explode(",", str_replace("uid=","", $dn));
return $uid;
}
function empty_inbox($params){
$params['uid'] = $this->get_shared_dn2uid($params['uid']);
return $this->imap_functions->empty_shared_account_inbox($params);
}
}
?>