summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0fbd682)
raw | patch | inline | side by side (parent: 0fbd682)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 9 Mar 2006 09:44:03 +0000 (09:44 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 9 Mar 2006 09:44:03 +0000 (09:44 +0000) |
Added lock, if someone wants to delete a used release
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@2828 594d385d-05f5-0310-b6e9-bd551577e9d8
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@2828 594d385d-05f5-0310-b6e9-bd551577e9d8
plugins/admin/systems/class_servRepository.inc | patch | blob | history |
diff --git a/plugins/admin/systems/class_servRepository.inc b/plugins/admin/systems/class_servRepository.inc
index 0186ee18f51e23cc287c811e9d20a0511bb72057..b97d3375de49f040dcef00fb4416eb5b03cf5b81 100644 (file)
}
if((preg_match("/^delete_/",$name))&&(!$once)){
-
+ $once = true;
$value = preg_replace("/delete_/","",$name);
$value = base64_decode(preg_replace("/_.*$/","",$value));
- if(isset($this->repositories[$value])){
- $once = true;
- unset($this->repositories[$value]);
+ $url = $this->repositories[$value]['Url'];
+ $release = $this->repositories[$value]['Release'];
+
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd ($this->config->current['BASE']);
+
+ $ldap->search("(&(objectClass=gotoWorkstation)(objectClass=FAIobject)(FAIdebianMirror=".$url."))",array("cn","FAIclass"));
+
+ $found = false;
+ $found_in = " ";
+ while($attrs = $ldap->fetch()){
+ foreach($attrs['FAIclass'] as $class){
+ if(preg_match("/".str_replace("/","\/",$release)."$/i",$class)){
+ $found = true;
+ $found_in .= $attrs['cn'][0]." ";
+ }
+ }
+ }
+
+ if($found){
+ print_red(sprintf(_("You can't delete this release, it is still used by these workstations [%s]. Please solve this dependencies first, to keep data base consistency."),$found_in));
+ }else{
+ if(isset($this->repositories[$value])){
+ // unset($this->repositories[$value]);
+ }
}
}
if((preg_match("/^edit_/",$name))&&(!$once)){
$value = preg_replace("/edit_/","",$name);
$value = base64_decode(preg_replace("/_.$/","",$value));
+
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd ($this->config->current['BASE']);
+
+ $url = $this->repositories[$value]['Url'];
+ $release = $this->repositories[$value]['Release'];
+
+ $ldap->search("(&(objectClass=gotoWorkstation)(objectClass=FAIobject)(FAIdebianMirror=".$url."))",array("cn","FAIclass"));
+
+ $found = false;
+ $found_in = " ";
+ while($attrs = $ldap->fetch()){
+ foreach($attrs['FAIclass'] as $class){
+ if(preg_match("/".str_replace("/","\/",$release)."$/i",$class)){
+ $found = true;
+ $found_in .= $attrs['cn'][0]." ";
+ }
+ }
+ }
+
+ if($found){
+ print_red(sprintf(_("Be carefull editing this release, it is still used by these workstations [%s]."),$found_in));
+ }
+
if(isset($this->repositories[$value])){
$once = true;
$obj = $this->repositories[$value];