From d85770597d54b104c430af5d817efb57b45ca6d9 Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 9 Mar 2006 09:44:03 +0000 Subject: [PATCH] Added warning when editing used releases ... 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 --- .../admin/systems/class_servRepository.inc | 54 +++++++++++++++++-- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/plugins/admin/systems/class_servRepository.inc b/plugins/admin/systems/class_servRepository.inc index 0186ee18f..b97d3375d 100644 --- a/plugins/admin/systems/class_servRepository.inc +++ b/plugins/admin/systems/class_servRepository.inc @@ -117,19 +117,65 @@ class servrepository extends plugin } 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]; -- 2.30.2