X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_servRepositorySetup.inc;h=6bbfb43483c57af16ed7b8474d89d583fb634d95;hb=5968d8b031057ae89dbb12ac0b734b5e4c7f82ad;hp=9330f48317b37d0917a92ec3e25ba70ed556551a;hpb=c1e4ce315463429bfc32d2c21818bad1954c9e00;p=gosa.git diff --git a/plugins/admin/systems/class_servRepositorySetup.inc b/plugins/admin/systems/class_servRepositorySetup.inc index 9330f4831..6bbfb4348 100644 --- a/plugins/admin/systems/class_servRepositorySetup.inc +++ b/plugins/admin/systems/class_servRepositorySetup.inc @@ -9,16 +9,17 @@ class servRepositorySetup extends plugin /* attribute list for save action */ var $ignore_account = TRUE; - var $attributes = array("Release","ParentServer","Url"); + var $attributes = array("Release","ParentServer","Url","cn"); var $objectclasses = array("whatever"); /* Attributes */ - var $Release =""; - var $ParentServer =""; - var $Url =""; - var $Sections =array(); - var $ParentServers =""; - var $initialy_was=false; + var $Release = ""; + var $ParentServer = ""; + var $Url = ""; + var $Sections = array(); + var $ParentServers = ""; + var $initialy_was = false; + var $cn = ""; function servRepositorySetup ($config, $dn= NULL,$data = false) { @@ -60,13 +61,34 @@ class servRepositorySetup extends plugin $smarty= get_smarty(); if((isset($_POST['AddSection']))&&(isset($_POST['SectionName']))&&(!empty($_POST['SectionName']))){ - $this->Sections[$_POST['SectionName']]=$_POST['SectionName']; + + /* Replace multiple spaces with a single, and cut of white spaces (trim)*/ + $val = preg_replace("/\ \ * /" , " ", trim($_POST['SectionName'])); + + /* check if there are more than one entry given ( "section1 section2 )*/ + if(preg_match("/ /",$val)){ + + /* Generate list of new section names */ + $vals = split(" ",$val); + + /* Add new entries */ + foreach($vals as $entry){ + $entry = trim($entry); + $this->Sections[$entry]=$entry; + } + }else{ + $this->Sections[$val]=$val; + } } foreach($_POST as $name => $value){ if(preg_match("/^delete_/",$name)){ - if(isset($this->Sections[$value])){ - unset($this->Sections[$value]); + + $val = preg_replace("/^delete_/","",$name); + $val = base64_decode(preg_replace("/_.*$/","",$val)); + + if(isset($this->Sections[$val])){ + unset($this->Sections[$val]); } } } @@ -79,7 +101,7 @@ class servRepositorySetup extends plugin foreach($this->Sections as $sec){ $divlist->AddEntry(array( array("string"=>$sec), - array("string"=>sprintf($dellink,$sec,$sec),"attach"=>"style='border-right:0px;width:20px;'") + array("string"=>sprintf($dellink,base64_encode($sec),$sec),"attach"=>"style='border-right:0px;width:20px;'") )); } @@ -89,9 +111,10 @@ class servRepositorySetup extends plugin $smarty->assign($attr ,$this->$attr); $smarty->assign($attr."ACL" ,chkacl($this->acl,$attr)); } - - $smarty->assign("ParentServers" ,$this->getParentServers()); - $smarty->assign("ParentServerKeys",array_flip($this->getParentServers())); + + $tmp = $this->getParentServers(); + $smarty->assign("ParentServers" ,$tmp); + $smarty->assign("ParentServerKeys",array_flip($tmp)); return($smarty->fetch(get_template_path('servRepositorySetup.tpl', TRUE))); } @@ -106,7 +129,8 @@ class servRepositorySetup extends plugin /* Check supplied data */ function check() { - $message= array(); + /* Call common method to give check the hook */ + $message= plugin::check(); if(empty($this->Release)){ $message[]=_("Please enter a value for 'release'."); @@ -138,9 +162,46 @@ class servRepositorySetup extends plugin $ldap->cd($this->config->current['BASE']); $ldap->search("(objectClass=FAIrepositoryServer)",array("*")); while($attr = $ldap->fetch()){ + if($attr['cn'][0] == $this->cn) continue; $ret[$attr['cn'][0]]= $attr['cn'][0]; } - $ret['none']= ""; + + $ret = array_merge($ret,$this->GetHookElements()); + + $ret['none']= " "; + asort($ret); + return($ret); + } + + /* this funtions calls a defined hook + and parses all additional serverdata + */ + function GetHookElements() + { + $ret = array(); + $cmd= search_config($this->config->data['TABS'], "servrepository", "REPOSITORY_HOOK"); + if(!empty($cmd)){ + $res = shell_exec($cmd); + $res2 = trim($res); + if(!$res){ + print_red(sprintf(_("Can't execute specified REPOSITORY_HOOK '%s'. Please check your gosa.conf."),$cmd)); + }elseif(empty($res2)){ + print_red(sprintf(_("The specified REPOSITORY_HOOK '%s', specified in your gosa.conf, returns an empty string."),$cmd)); + }else{ + $tmp = split("\n",$res); + foreach($tmp as $hook){ + /* skip empty */ + if(empty($hook)) continue; + + if(preg_match("/;/",$hook)){ + $hookinfo = split(";",$hook); + $ret[$hookinfo[0]] = $hookinfo[0]; + }else{ + $ret[$hook] = $hook; + } + } + } + } return($ret); }