X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Ffai%2Fclass_faiPackage.inc;h=d2fe6bac321db3ae79789cea38e31bdb74b915f7;hb=78fd52f682986d25fb95c171757d58384f7f58f8;hp=7e72481f99b84beb4fe34b651cc44e2977d07add;hpb=3b0f21230c9ac05e3acb964ef13ea3b4d4cb2781;p=gosa.git diff --git a/plugins/admin/fai/class_faiPackage.inc b/plugins/admin/fai/class_faiPackage.inc index 7e72481f9..d2fe6bac3 100644 --- a/plugins/admin/fai/class_faiPackage.inc +++ b/plugins/admin/fai/class_faiPackage.inc @@ -101,36 +101,40 @@ class faiPackage extends plugin } - /* Create one filter with all package names, - instead of calling $ldap->search for every single package - */ - $PackageFilter = ""; - foreach($this->usedPackages as $name){ - $PackageFilter .= "(FAIpackage=".$name.")"; - } - $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))"; - - /* Search for configuration objects */ - $ldap = $this->config->get_ldap_link(); - $ldap->search($PackageFilter,array("FAIvariable","FAIvariableType","FAIvariableContent","FAIpackage","FAIdebianSection")); + if($dn != "new"){ - /* Walk through configurations and append them to our list of ConfiguredPackages */ - while($attr = $ldap->fetch()){ - $tmp =array(); - $tmp['Name'] = $attr['FAIvariable'][0]; - $tmp['Type'] = $attr['FAIvariableType'][0]; + /* Create one filter with all package names, + instead of calling $ldap->search for every single package + */ + $PackageFilter = ""; + foreach($this->usedPackages as $name){ + $PackageFilter .= "(FAIpackage=".$name.")"; + } + $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))"; - if (isset($attr['FAIvariableContent'][0])){ - if(!in_array($attr['FAIvariableType'],array("multiselect"))){ - $tmp['Value'] = $attr['FAIvariableContent'][0]; - }else{ - $content = array(); - unset($attr['FAIvariableContent']['count']); - foreach($attr['FAIvariableContent'] as $attr){ - $tmp['Value'][] = $attr; + /* Search for configuration objects */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->search($PackageFilter,array("FAIvariable","FAIvariableType","FAIvariableContent","FAIpackage","FAIdebianSection")); + + /* Walk through configurations and append them to our list of ConfiguredPackages */ + while($attr = $ldap->fetch()){ + $tmp =array(); + $tmp['Name'] = $attr['FAIvariable'][0]; + $tmp['Type'] = $attr['FAIvariableType'][0]; + + if (isset($attr['FAIvariableContent'][0])){ + if(!in_array($attr['FAIvariableType'],array("multiselect"))){ + $tmp['Value'] = $attr['FAIvariableContent'][0]; + }else{ + $content = array(); + unset($attr['FAIvariableContent']['count']); + foreach($attr['FAIvariableContent'] as $attr){ + $tmp['Value'][] = $attr; + } } + $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp; } - $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp; } } @@ -273,6 +277,23 @@ class faiPackage extends plugin $this->is_dialog =true; } + /* Configuration dialog open*/ + if($this->FAIstate != "freeze"){ + if((isset($_POST['Markpkg']))&&(isset($_POST['usedPackages']))&&(!empty($_POST['usedPackages']))){ + foreach($_POST['usedPackages'] as $pkg){ + if (isset($this->usedPackages[$pkg])){ + unset($this->usedPackages[$pkg]); + if (preg_match('/^-/', $pkg)){ + $pkg= preg_replace('/^-/', '', $pkg); + } else { + $pkg= preg_replace('/^/', '-', $pkg); + } + $this->usedPackages[$pkg]= $pkg; + } + } + } + } + /* Save Configuration */ if(isset($_POST['SaveObjectConfig'])){ if($this->FAIstate != "freeze"){ @@ -321,6 +342,7 @@ class faiPackage extends plugin $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->dn); $ldap->rmdir_recursive($this->dn); + show_ldap_error($ldap->get_error(), _("Removing FAI package base failed")); $this->handle_post_events("remove"); } @@ -377,10 +399,17 @@ class faiPackage extends plugin $c_str = " - "._("package is configured"); } + /* Adapt used name if we're marked for removal */ + $dsc= ""; + if (preg_match('/^-/', $usedName)){ + $dsc= " - "._("Package marked for removal"); + $usedName= preg_replace('/^-/', '! ', $usedName); + } + if(isset($this->list[$usedName][1])){ - $a_ret[$usedName] = $usedName." [".$this->list[$usedName][1]."]".$c_str; + $a_ret[$usedName] = $usedName." [".$this->list[$usedName][1]."]".$c_str.$dsc; }else{ - $a_ret[$usedName] = $usedName.$c_str; + $a_ret[$usedName] = $usedName.$c_str.$dsc; } } } @@ -443,7 +472,7 @@ class faiPackage extends plugin // $this->attrs["FAIinstallMethod"]= "aptitude"; - $ldap->cat($this->dn); + $ldap->cat($this->dn, array('dn')); if($ldap->count()!=0){ /* Write FAIscript to ldap*/ $ldap->cd($this->dn); @@ -457,18 +486,25 @@ class faiPackage extends plugin $ldap->cd($this->dn); $ldap->add($this->attrs); } - show_ldap_error($ldap->get_error()); + show_ldap_error($ldap->get_error(), _("Saving FAI package base failed")); + + /* Do object tagging */ + $this->handle_object_tagging(); + $ldap->cd($this->dn); /* Save Package configurations */ foreach($this->ConfiguredPackages as $pkgname => $attrs){ foreach($attrs as $name => $attr){ + + $pkgattrs = array(); foreach($attr as $n=>$v){ if(empty($v)) $v = array(); } /* Set attributes */ - $pkgattrs['objectClass'] = "FAIdebconfInfo"; + $pkgattrs['objectClass'][] = "FAIdebconfInfo"; + $pkgattrs['FAIpackage'] = $pkgname; $pkgattrs['FAIvariable'] = $name; $pkgattrs['FAIvariableType'] = $attr['Type']; @@ -476,7 +512,14 @@ class faiPackage extends plugin $pkgdn = "FAIvariable=".$name.",".$this->dn; /* cehck if object already exists */ - $ldap->cat($pkgdn); + $ldap->cat($pkgdn,array("objectClass")); + + /* Workaround for missing "gosaAdministrativeUnitTag" */ + $attrs = $ldap->fetch(); + if((isset($attrs['objectClass'])) && (in_array_ics("gosaAdministrativeUnitTag",$attrs['objectClass']))){ + $pkgattrs['objectClass'][] = "gosaAdministrativeUnitTag"; + } + if($ldap->count()!=0){ $ldap->cd($pkgdn); $this->cleanup(); @@ -488,7 +531,10 @@ class faiPackage extends plugin $ldap->cd($pkgdn); $ldap->add($pkgattrs); } - show_ldap_error($ldap->get_error()); + show_ldap_error($ldap->get_error(), _("Saving FAI package entry failed")); + + /* Handle tagging */ + $this->handle_object_tagging($pkgdn, $this->gosaUnitTag); } }