X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_config.inc;h=80d51ebc717c2f8496b6008c9b698f72772fd7d8;hb=e7d6908869b80f28daea77c5cb5f2977df7fdada;hp=42e0c3dbee493b5b3dda9a6a7e6bf4503b942211;hpb=7be97aaeb1f7c590965d89533491833ec3199298;p=gosa.git diff --git a/gosa-core/include/class_config.inc b/gosa-core/include/class_config.inc index 42e0c3dbe..80d51ebc7 100644 --- a/gosa-core/include/class_config.inc +++ b/gosa-core/include/class_config.inc @@ -70,6 +70,22 @@ class config { function check_and_reload() { + global $ui; + + /* Check if class_location.inc has changed, this is the case + if we have installed or removed plugins. + */ + if(session::is_set("class_location.inc:timestamp")){ + $tmp = stat("../include/class_location.inc"); + if($tmp['mtime'] != session::get("class_location.inc:timestamp")){ + session::un_set("plist"); + } + } + $tmp = stat("../include/class_location.inc"); + session::set("class_location.inc:timestamp",$tmp['mtime']); + + + if($this->filename != "" && filemtime($this->filename) != $this->last_modified){ $this->config_found= FALSE; @@ -366,12 +382,18 @@ class config { if ($this->current['MAILMETHOD'] == ""){ $ldap->search ("(objectClass=goMailServer)", array('cn')); $this->data['SERVERS']['IMAP']= array(); - error_reporting(0); while ($attrs= $ldap->fetch()){ $name= $attrs['cn'][0]; - $this->data['SERVERS']['IMAP'][$name]= $name; + $this->data['SERVERS']['IMAP'][$name]= + array( + "server_dn" => $attrs['dn'], + "connect" => "", + "admin" => "", + "password" => "", + "sieve_server"=> "", + "sieve_option"=> "", + "sieve_port" => ""); } - error_reporting(E_ALL); } else { $ldap->search ("(&(objectClass=goImapServer)(goImapSieveServer=*))", array('goImapName', 'goImapConnect', 'goImapAdmin', 'goImapPassword', @@ -400,6 +422,7 @@ class config { $this->data['SERVERS']['IMAP'][$imap_server]= array( + "server_dn" => $attrs['dn'], "connect" => $imap_connect, "admin" => $imap_admin, "password" => $pwd, @@ -760,7 +783,7 @@ class config { } /* Fix name, if it contains a replace tag */ - $name= @LDAP::fix($name); + $name= preg_replace('/\\\\,/', ',', @LDAP::fix($name)); /* Check if current name is too long, then cut it */ if(mb_strlen($name, 'UTF-8')> $max_size){ @@ -792,7 +815,7 @@ class config { */ function getShareList($listboxEntry = false) { - $tmp = get_sub_list("(&(objectClass=goShareServer)(goExportEntry=*))","server",get_ou("serverou"), + $tmp = get_sub_list("(&(objectClass=goShareServer)(goExportEntry=*))","server/goShareServer",get_ou("serverou"), $this->current['BASE'],array("goExportEntry","cn"), GL_NONE); $return =array(); foreach($tmp as $entry){ @@ -826,18 +849,27 @@ class config { { global $config; $return = array(); + $ui = get_userinfo(); $base = $config->current['BASE']; $res= get_sub_list("(&(objectClass=goShareServer)(goExportEntry=*))", "server", - get_ou("serverou"), $base,array("goExportEntry","cn"),GL_NONE); + get_ou("serverou"), $base,array("goExportEntry","cn"),GL_NONE | GL_NO_ACL_CHECK); foreach($res as $entry){ + + $acl = $ui->get_permissions($entry['dn'],"server",""); if(isset($entry['goExportEntry']['count'])){ unset($entry['goExportEntry']['count']); } foreach($entry['goExportEntry'] as $share){ $a_share = split("\|",$share); $sharename = $a_share[0]; - $return[$entry['cn'][0]."|".$sharename] = $entry['cn'][0]." [".$sharename."]"; + $data= array(); + $data['NAME'] = $sharename; + $data['ACL'] = $acl; + $data['SERVER'] = $entry['cn']['0']; + $data['SHARE'] = $sharename; + $data['DISPLAY']= $entry['cn'][0]." [".$sharename."]"; + $return[$entry['cn'][0]."|".$sharename] = $data; } } return($return);