X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Ffai%2Fclass_faiPartitionTable.inc;h=fc35fd188204f1ff3cc2218af40e4c03074100bd;hb=38e36135b451936d249b671857b133a7d55b7360;hp=db65fed8545ccba3f6e724d4a42bf8a208918ee3;hpb=1d9578d8ee2d5a59bd4f9777785ef8567ab8cef1;p=gosa.git diff --git a/plugins/admin/fai/class_faiPartitionTable.inc b/plugins/admin/fai/class_faiPartitionTable.inc index db65fed85..fc35fd188 100644 --- a/plugins/admin/fai/class_faiPartitionTable.inc +++ b/plugins/admin/fai/class_faiPartitionTable.inc @@ -11,7 +11,6 @@ class faiPartitionTable extends plugin var $ignore_account = TRUE; var $attributes = array("cn","description"); var $objectclasses = array("top","FAIclass","FAIpartitionTable"); - var $base64_encode = array("FAImountPoint","FAImountOptions","FAIfsOptions","description"); /* Specific attributes */ var $cn = ""; // The class name for this object @@ -65,21 +64,22 @@ class faiPartitionTable extends plugin $partition[$key] = $val[0]; } } + /* Append fetched partitions */ $partition['status']="edited"; - - foreach($this->base64_encode as $attrs){ - $partition[$attrs] = base64_decode($partition[$attrs]); - } $this->disks[$name]['partitions'][$partition['FAIpartitionNr']] = $partition; } } } + ksort($this->disks); } function execute() { + /* Call parent execute */ + plugin::execute(); + /* Fill templating stuff */ $smarty= get_smarty(); $display= ""; @@ -100,6 +100,11 @@ class faiPartitionTable extends plugin /* Edit disk. * Open dialog which allows us to edit the selected entry */ + + if($this->dn != "new"){ + $_SESSION['objectinfo']= $this->dn; + } + if((isset($_POST['EditDisk']))&&(isset($_POST['disks']))){ $usedDiskNames =array(); foreach($this->disks as $key=>$disk){ @@ -108,6 +113,7 @@ class faiPartitionTable extends plugin } } $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$_POST['disks']]); + $_SESSION['objectinfo'] = $this->disks[$_POST['disks']]['dn']; $this->is_dialog = true; } @@ -151,6 +157,7 @@ class faiPartitionTable extends plugin unset($this->dialog); $this->dialog = NULL; $this->is_dialog=false; + ksort($this->disks); } } @@ -215,9 +222,17 @@ class faiPartitionTable extends plugin } } if(!empty($disk['description'])){ - $a_return[$key]= $disk['cn']." [".$disk['description']."] - "._("Number of Partitions")." :".$cnt; + if($cnt == 1){ + $a_return[$key]= $disk['cn']." [".$disk['description']."], ".sprintf(_("%s partition"), $cnt); + }else{ + $a_return[$key]= $disk['cn']." [".$disk['description']."], ".sprintf(_("%s partition(s)"), $cnt); + } }else{ - $a_return[$key]= $disk['cn']." - "._("Number of Partitions")." :".$cnt; + if($cnt == 1){ + $a_return[$key]= $disk['cn'].", ".sprintf(_("%s partition"), $cnt); + }else{ + $a_return[$key]= $disk['cn'].", ".sprintf(_("%s partition(s)"), $cnt); + } } } } @@ -256,16 +271,6 @@ class faiPartitionTable extends plugin { $message= array(); - - $str = utf8_encode("üöä"); - if((empty($this->description))||(preg_match("/[^a-z0-9".$str."\.,;:\-_\? ]/i",$this->description))){ - $message[]=_("Please enter a valid description."); - } - - if((empty($this->cn))||(preg_match("/[^a-z0-9]/i",$this->cn))){ - $message[]=_("Please enter a valid name."); - } - return ($message); } @@ -284,8 +289,8 @@ class faiPartitionTable extends plugin $ldap = $this->config->get_ldap_link(); if($this->new){ - $ldap->cd($this->dn); - $ldap->create_missing_trees($this->dn); + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); $ldap->cd($this->dn); $ldap->add($this->attrs); show_ldap_error($ldap->get_error()); @@ -317,16 +322,29 @@ class faiPartitionTable extends plugin $disk_attrs['cn'] = $disk['cn']; $disk_attrs['description'] = $disk['description']; $disk_attrs['objectClass'] = array("top","FAIclass","FAIpartitionDisk"); - + + if($disk['status']=="new"){ + $ldap->cat($disk_dn); + if($ldap->count()){ + $disk['status']="edited"; + } + } + if($disk['status'] == "delete"){ $ldap->cd($disk_dn); $ldap->rmdir_recursive($disk_dn); }elseif($disk['status']== "edited"){ + if(empty($disk_attrs['description'])){ + $disk_attrs['description']=array(); + } $ldap->cd($disk_dn); $ldap->modify($disk_attrs); }elseif($disk['status']== "new"){ - $ldap->cd($disk_dn); - $ldap->create_missing_trees($disk_dn); + if(empty($disk_attrs['description'])){ + unset($disk_attrs['description']); + } + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $disk_dn)); $ldap->cd($disk_dn); $ldap->add($disk_attrs); }else{ @@ -339,10 +357,6 @@ class faiPartitionTable extends plugin foreach($disk['partitions'] as $key => $partition){ $partition_attrs = array(); - foreach($this->base64_encode as $attrs){ - $partition[$attrs] = base64_encode($partition[$attrs]); - } - foreach($partition as $key => $value){ if(!empty($value)){ $partition_attrs[$key]=$value; @@ -351,21 +365,39 @@ class faiPartitionTable extends plugin } } - $partition_dn = "cn=".$partition_attrs['cn'].",".$disk_dn; - $partition_attrs['objectClass'] = array("top","FAIclass","FAIpartitionEntry"); + $partition_dn= "FAIpartitionNr=".$partition_attrs['FAIpartitionNr'].",".$disk_dn; + $partition_attrs['objectClass']= array("top","FAIclass","FAIpartitionEntry"); + $partition_attrs['cn']= $partition_attrs['FAIpartitionNr']; unset($partition_attrs['status']); unset($partition_attrs['old_cn']); - + + if($partition['status']=="new"){ + $ldap->cat($partition_dn); + if($ldap->count()){ + $partition['status']="edited"; + } + } + + if((!isset($partition['FAImountPoint']))||(empty($partition['FAImountPoint']))){ + $partition_attrs['FAImountPoint']="swap"; + } + if(($partition['status'] == "delete")&&($disk['status']!="new")){ $ldap->cd($partition_dn); $ldap->rmdir_recursive($partition_dn); }elseif($partition['status'] == "new"){ - $ldap->cd($partition_dn); - $ldap->create_missing_trees($partition_dn); + if(empty($partition_attrs['description'])){ + unset($partition_attrs['description']); + } + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $partition_dn)); $ldap->cd($partition_dn); $ldap->add($partition_attrs); }elseif($partition['status'] == "edited"){ + if(empty($partition_attrs['description'])){ + $partition_attrs['description']=array(); + } $ldap->cd($partition_dn); $ldap->modify($partition_attrs); }