summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f92f4e7)
raw | patch | inline | side by side (parent: f92f4e7)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 16 Jul 2008 06:49:50 +0000 (06:49 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 16 Jul 2008 06:49:50 +0000 (06:49 +0000) |
-Remove was implemented twice, once for single delete and once for multi delete.
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@11673 594d385d-05f5-0310-b6e9-bd551577e9d8
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@11673 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-plugins/systems/admin/systems/class_systemManagement.inc | patch | blob | history |
diff --git a/gosa-plugins/systems/admin/systems/class_systemManagement.inc b/gosa-plugins/systems/admin/systems/class_systemManagement.inc
index fbb80498e035f1d3a8af36c520a02cd65deacc5c..988d0b6e55f77396ad19784103d16a60c6af3eb3 100644 (file)
Delete MULTIPLE entries requested, display confirm dialog
********************/
- if ($s_action=="del_multiple"){
+ if ($s_action=="del_multiple" || $s_action == "del"){
$this->dns = array();
- $ids = $this->list_get_selected_items();
+
+ if($s_action == "del_multiple"){
+ $ids = $this->list_get_selected_items();
+ }else{
+ $ids = array($s_entry);
+ }
$ui = get_userinfo();
$tabs = array(
}
- /********************
- Delete system, confirm dialog
- ********************/
-
- /* Remove terminal was requested */
- if ($s_action=="del"){
-
- /* Get 'dn' from posted termlinst */
- $this->dn = $this->terminals[$s_entry]['dn'];
- $attrs = $this->terminals[$s_entry];
-
-
-
- $type= $this->get_system_type($attrs);
- $ui = get_userinfo();
- $tabs = array(
- "ArpNewDevice"=> array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "incoming/systems"),
- "NewDevice" => array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "incoming/systems"),
- "terminal" => array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "terminal/termgeneric"),
- "workstation" => array("CLASS"=>"WORKTABS", "TABCLASS" =>"worktabs", "ACL"=> "workstation/workgeneric"),
- "server" => array("CLASS"=>"SERVTABS", "TABCLASS" =>"servtabs", "ACL"=> "server/servgeneric"),
- "printer" => array("CLASS"=>"PRINTTABS", "TABCLASS" =>"printtabs", "ACL"=> "printer/printgeneric"),
- "phone" => array("CLASS"=>"PHONETABS", "TABCLASS" =>"phonetabs", "ACL"=> "phone/phoneGeneric"),
- "winstation" => array("CLASS"=>"WINTABS", "TABCLASS" =>"wintabs", "ACL"=> "winworkstation/wingeneric"),
- "component" => array("CLASS"=>"COMPONENTTABS","TABCLASS" =>"componenttabs", "ACL"=> "component/componentGeneric"));
-
- /* get object type */
- $tabtype = "termtabs";
- $tabobj = "TERMTABS";
- $tabacl = "";
- if(isset($tabs[$type])){
- $tabtype = $tabs[$type]['TABCLASS'];
- $tabobj = $tabs[$type]['CLASS'];
- $tabacl = $ui->get_permissions($this->dn,$tabs[$type]['ACL']);
- }
-
- /* Load permissions for selected 'dn' and check if
- we're allowed to remove this 'dn' */
- if(preg_match("/d/",$tabacl)){
-
- /* Check locking, save current plugin in 'back_plugin', so
- the dialog knows where to return. */
- if (($user= get_lock($this->dn)) != ""){
- return(gen_locked_message ($user, $this->dn));
- }
-
- /* Lock the current entry, so nobody will edit it during deletion */
- add_lock ($this->dn, $this->ui->dn);
- $smarty->assign("warning", msgPool::deleteInfo(@LDAP::fix($this->dn)));
- $smarty->assign("multiple", false);
- return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
- } else {
-
- /* Obviously the user isn't allowed to delete. Show message and
- clean session. */
- msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG);
- }
- }
-
-
- /********************
- Delete system, confirmed
- ********************/
- /* Confirmation for deletion has been passed. Terminal should be deleted. */
- if (isset($_POST['delete_terminal_confirm'])){
-
- /* Find out more about the object type */
- $ldap= $this->config->get_ldap_link();
- $ldap->cat($this->dn, array('objectClass'));
- $attrs= $ldap->fetch();
- $type= $this->get_system_type($attrs);
-
- $ui = get_userinfo();
-
- $tabs = array(
- "ArpNewDevice"=> array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "incoming/systems"),
- "NewDevice" => array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "incoming/systems"),
- "terminal" => array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "terminal/termgeneric"),
- "workstation" => array("CLASS"=>"WORKTABS", "TABCLASS" =>"worktabs", "ACL"=> "workstation/workgeneric"),
- "server" => array("CLASS"=>"SERVTABS", "TABCLASS" =>"servtabs", "ACL"=> "server/servgeneric"),
- "printer" => array("CLASS"=>"PRINTTABS", "TABCLASS" =>"printtabs", "ACL"=> "printer/printgeneric"),
- "phone" => array("CLASS"=>"PHONETABS", "TABCLASS" =>"phonetabs", "ACL"=> "phone/phoneGeneric"),
- "winstation" => array("CLASS"=>"WINTABS", "TABCLASS" =>"wintabs", "ACL"=> "winworkstation/wingeneric"),
- "component" => array("CLASS"=>"COMPONENTTABS","TABCLASS" =>"componenttabs", "ACL"=> "component/componentGeneric"));
-
- /* get object type */
- $tabtype = "termtabs";
- $tabobj = "TERMTABS";
- $tabacl = "";
- if(isset($tabs[$type])){
- $tabtype = $tabs[$type]['TABCLASS'];
- $tabobj = $tabs[$type]['CLASS'];
- $tabacl = $ui->get_permissions($this->dn,$tabs[$type]['ACL']);
- }
-
- /* Check if we are allowed to remove this object */
- if(preg_match("/d/",$tabacl)){
-
- /* Delete request is permitted, perform LDAP action */
- if(in_array($type,array("ArpNewDevice","NewDevice")) && class_available("termgeneric")){
- $this->systab= new termgeneric($this->config, $this->dn);
- $this->systab->set_acl_base($this->dn);
- $this->systab->remove_from_parent();
- }elseif($tabtype=="phonetabs"){
- $this->systab= new $tabtype($this->config, $this->config->data['TABS'][$tabobj], $this->dn,$type);
- $this->systab->set_acl_base($this->dn);
- $this->systab->by_object['phoneGeneric']->remove_from_parent ();
- }else{
- $this->systab= new $tabtype($this->config,$this->config->data['TABS'][$tabobj], $this->dn,$type);
- $this->systab->set_acl_base($this->dn);
- $this->systab->delete();
- }
- unset ($this->systab);
- $this->systab= NULL;
-
- /* Terminal list has changed, reload it. */
- } else {
-
- /* Normally this shouldn't be reached, send some extra
- logs to notify the administrator */
- msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG);
- new log("security","systems/".get_class($this),$dn,array(),"Tried to trick deletion.");
- }
-
- /* Remove lock file after successfull deletion */
- $this->remove_lock();
- }
-
-
/********************
Edit system type finished, check if everything went ok
********************/