summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: df48c3b)
raw | patch | inline | side by side (parent: df48c3b)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 6 Jan 2010 11:48:13 +0000 (11:48 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 6 Jan 2010 11:48:13 +0000 (11:48 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@15083 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-plugins/fai/admin/fai/class_faiManagement.inc | patch | blob | history |
diff --git a/gosa-plugins/fai/admin/fai/class_faiManagement.inc b/gosa-plugins/fai/admin/fai/class_faiManagement.inc
index 08e50cf9bd502a648507637de909c7f6e82b6caa..f148505b1d4f019d6d9cc03be996f80fb4163c28 100644 (file)
}
+ function removeFAIObjects($to_delete)
+ {
+ // Do not allow to remove objects with state freeezed
+ $errors=array();
+ foreach($to_delete as $obj){
+ if(isset($obj['FAIstate']) && preg_match('/^freeze/', $obj['FAIstate'])){
+ $errors[] = $obj['dn'];
+ }else{
+ $this->dns[] = $obj['dn'];
+ }
+ }
+ if(count($errors)){
+ msg_dialog::display(_("Branch locked"),
+ sprintf(_("The following entries are locked, you can't remove them %s."),msgPool::buildList($errors)),INFO_DIALOG);
+ }
+
+ // Check entry locking
+ if(count($this->dns)){
+ if ($user= get_multiple_locks($this->dns)){
+ return(gen_locked_message($user,$this->dns));
+ }
+ if(count($this->dns)){
+ $smarty = get_smarty();
+ $dns_names = array();
+ foreach($this->dns as $dn){
+ add_lock ($dn, $this->ui->dn);
+ $dns_names[] = LDAP::fix($dn);
+ }
+ $smarty->assign("info",msgPool::deleteInfo($dns_names,_("FAI object")));
+ $smarty->assign("multiple", true);
+ return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
+ }
+ }
+
+ }
+
function removeEntryRequested($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="")
{
/* Collect objects to delete and check if objects are freezed
*/
- $errors = "";
$headpage = $this->getHeadpage();
$to_delete = array();
foreach($target as $id){
$object = $headpage->getEntry($id);
if(in_array("FAKE_OC_FAI", $object['objectClass'])){
foreach($object['GROUPS'] as $entry){
-
- // Only allow to remove FAI classes
array_push($to_delete, $entry);
}
}
}
-
- foreach($to_delete as $obj){
- if(isset($obj['FAIstate']) && preg_match('/^freeze/', $obj['FAIstate'])){
- $errors .= $obj['cn'].", ";
- }else{
- $this->dns[] = $obj['dn'];
- }
- }
-
- if($errors != ""){
- msg_dialog::display(_("Branch locked"),sprintf(_("The following entries are locked, you can't remove them %s."),
- "<br><br>".trim($errors,", ")),INFO_DIALOG);
- }
- /* Check locking
- */
- if(count($this->dns)){
- if ($user= get_multiple_locks($this->dns)){
- return(gen_locked_message($user,$this->dns));
- }
- if(count($this->dns)){
- $smarty = get_smarty();
- $dns_names = array();
- foreach($this->dns as $dn){
- add_lock ($dn, $this->ui->dn);
- $dns_names[] = LDAP::fix($dn);
- }
- $smarty->assign("info",msgPool::deleteInfo($dns_names,_("FAI object")));
- $smarty->assign("multiple", true);
- return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
- }
- }
-
+ return($this->removeFAIObjects($to_delete));
+
}else{
// Try to remove a single object, only FAI objects can be removed!
if($str) return($str);
$this->tabObject->by_object[$type[1]]->FAIstate = $data['FAIstate'];
$this->tabObject->read_only = preg_match("/freeze/i", $data['FAIstate']);
-
}elseif($this->dialogObject instanceOf faiGroupHandle && $this->dialogObject->get_mode() == "remove"){
$this->dialogObject->save_object();
$to_delete = $entry = $this->dialogObject->get_selected();
- $dns = array();
-
-
- // Check FAIstate to ensure that we do not remove frozen objects
- // additionally check ACLs
- $locked = array();
- $disallowed = array();
- foreach($to_delete as $obj){
- if(isset($obj['FAIstate']) && preg_match('/^freeze/', $obj['FAIstate'])){
- $locked[] = $obj['dn'];
- }else{
- $type = $this->get_type($obj);
- $acl = $this->ui->get_permissions($obj['dn'], 'acl/'.$type[1]);
- if(!preg_match("/d/",$acl)){
- $disallowed[] = $obj['dn'];
- }else{
- $dns[] = $obj['dn'];
- }
- }
- }
-
- // Display info dialog about locked and not removeable entries
- if(count($locked)){
- msg_dialog::display(_("Branch locked"),sprintf(_("The following entries are locked, you can't remove them %s."),
- msgPool::buildList($locked)));
- }
-
- // Display info dialog about not removeable entries due to permissions
- if(count($disallowed)){
- msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG);
- }
-
- // There are entries left to be removed
- if(count($dns)){
- $this->closeDialogs();
- $this->dns = $dns;
-
- @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,$target,"Entry removel requested!");
-
- // check locks
- if ($user= get_multiple_locks($this->dns)){
- return(gen_locked_message($user,$this->dns));
- }
-
- // Add locks
- $dns_names = array();
- foreach($this->dns as $dn){
- $dns_names[] =LDAP::fix($dn);
- }
- add_lock ($this->dns, $this->ui->dn);
-
- // Display confirmation dialog.
- $smarty = get_smarty();
- $smarty->assign("info", msgPool::deleteInfo($dns_names,_($this->objectName)));
- $smarty->assign("multiple", true);
- return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
- }else{
- $this->closeDialogs();
- }
+ return($this->removeFAIObjects($to_delete));
}
}