X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Fgoto%2Faddons%2Fgoto%2Fclass_gotomasses.inc;h=e168b880eecb143abb367b61be94bee7848a07a8;hb=1678e943f2d883e3a01d9eeaef76f69f61b4ff2c;hp=e1556f54b305e2188de14b1afc2d9cb9e6b9d6f3;hpb=f513211908f96acf7d1be71a2a27be83513d17cb;p=gosa.git diff --git a/gosa-plugins/goto/addons/goto/class_gotomasses.inc b/gosa-plugins/goto/addons/goto/class_gotomasses.inc index e1556f54b..e168b880e 100644 --- a/gosa-plugins/goto/addons/goto/class_gotomasses.inc +++ b/gosa-plugins/goto/addons/goto/class_gotomasses.inc @@ -49,15 +49,13 @@ class gotomasses extends plugin { /* Include config object */ $this->config= &$config; - $this->o_queue = new gosaSupportDaemon(TRUE,10); + $this->o_queue = new gosaSupportDaemon(TRUE,5); $this->events = DaemonEvent::get_event_types( SYSTEM_EVENT); /* Get tags that will be used in queue searches */ $this->event_tags = array("none"); - foreach($this->events['BY_CLASS'] as $evt){ - if(isset($evt['s_Queued_Action'])){ - $this->event_tags[] = $evt['s_Queued_Action']; - } + foreach($this->events['SCHEDULED'] as $evt){ + $this->event_tags[] = $evt['s_Queued_Action']; } } @@ -166,10 +164,9 @@ class gotomasses extends plugin $type = FALSE; if(isset($this->entries[$id])){ $event = $this->entries[$s_entry]; - - - if($event['STATUS'] == "waiting" && isset($this->events['BY_QUEUED_ACTION'][$event['HEADERTAG']])){ - $type = $this->events['BY_QUEUED_ACTION'][$event['HEADERTAG']]; + if($event['STATUS'] == "waiting" && isset($this->events['QUEUED'][$event['HEADERTAG']])){ + $evt_name = $this->events['QUEUED'][$event['HEADERTAG']]; + $type = $this->events['BY_CLASS'][$evt_name]; $this->dialog = new $type['CLASS_NAME']($this->config,$event); } } @@ -183,7 +180,7 @@ class gotomasses extends plugin if($s_action == "remove_multiple" || $s_action == "remove"){ if(!$this->acl_is_removeable()){ - msg_dialog::display(_("Permission error"), _("You have no permission to delete this entry!"), ERROR_DIALOG); + msg_dialog::display(_("Permission"), msgPool::permDelete(), ERROR_DIALOG); }else{ if($s_action == "remove"){ @@ -192,6 +189,8 @@ class gotomasses extends plugin $ids = $this->list_get_selected_items(); } + $this->ids_to_remove = array(); + if(count($ids)){ $ret = $this->o_queue->ids_exist($ids); $ret = $this->o_queue->get_entries_by_id($ret); @@ -202,8 +201,9 @@ class gotomasses extends plugin /* Only remove WAITING or ERROR entries */ if(in_array($task['STATUS'],array("waiting","error"))){ $this->ids_to_remove[] = $task['ID']; - if(isset($this->events['BY_QUEUED_ACTION'][$task['HEADERTAG']])){ - $evt = $this->events['BY_QUEUED_ACTION'][$task['HEADERTAG']]; + if(isset($this->events['QUEUED'][$task['HEADERTAG']])){ + $evt_name = $this->events['QUEUED'][$task['HEADERTAG']]; + $evt = $this->events['BY_CLASS'][$evt_name]; $tmp.= "\n".$task['ID']." - ".$evt['s_Menu_Name']." ".$task['MACADDRESS']; }else{ $tmp.= "\n".$task['ID']." - ".$task['HEADERTAG']." ".$task['MACADDRESS']; @@ -220,6 +220,27 @@ class gotomasses extends plugin /* Remove specified tasks */ if(count($this->ids_to_remove) && isset($_POST['delete_multiple_confirm'])){ + + /* Reboot hosts with not yet startet installations and timestamps in the past + */ + timezone::get_default_timezone(); + foreach($this->ids_to_remove as $id){ + $entry = $this->o_queue->get_entries_by_id(array($id)); + if(isset($entry['ANSWER1'])){ + $entry = $entry['ANSWER1']; + if( $entry['STATUS'] == "wating" && + $entry['HEADERTAG'] == "trigger_action_reinstall"){ + $evt = new DaemonEvent_reinstall($this->config,$entry); + if($evt->get_timestamp(FALSE) < time()){ + $r_evt = new DaemonEvent_localboot($this->config); + $r_evt->add_targets(array($entry['MACADDRESS'])); + $r_evt->set_type(TRIGGERED_EVENT); + $this->o_queue->append($r_evt); + } + } + } + } + $this->o_queue->remove_entries($this->ids_to_remove); $this->save(); } @@ -273,7 +294,8 @@ class gotomasses extends plugin $divlist->SetHeadpageMode(); $s = ".|"._("Actions")."|\n"; $s.= "..| "._("Create")."\n"; - foreach($this->events['BY_CLASS'] as $name => $event){ + + foreach($this->events['SCHEDULED'] as $name => $event){ $s.= "...|".$event['MenuImage']." ".$event['s_Menu_Name']."|add_event_".$name."\n"; } if($this->acl_is_removeable()){ @@ -282,10 +304,10 @@ class gotomasses extends plugin } if(preg_match("/w/",$this->getacl(""))){ $s.= "..|---|\n"; - $s.= "..| "._("Resume all")."|resume_all\n"; - $s.= "..| "._("Pause all")."|pause_all\n"; - $s.= "..| "._("Abort all")."|abort_process_all\n"; - $s.= "..| "._("Execute all")."|execute_process_all\n"; + $s.= "..| "._("Resume")."|resume_all\n"; + $s.= "..| "._("Pause")."|pause_all\n"; + $s.= "..| "._("Abort")."|abort_process_all\n"; + $s.= "..| "._("Execute")."|execute_process_all\n"; } $divlist->SetDropDownHeaderMenu($s); @@ -387,9 +409,10 @@ class gotomasses extends plugin /* Check if this event exists as Daemon class * In this case, display a more accurate entry. */ - if(isset($this->events['BY_QUEUED_ACTION'][$task['HEADERTAG']]['s_Menu_Name'])){ - $event_type = $this->events['BY_QUEUED_ACTION'][$task['HEADERTAG']]; - $display2= $event_type['s_Menu_Name']; + if(isset($this->events['QUEUED'][$task['HEADERTAG']])){ + $evt_name = $this->events['QUEUED'][$task['HEADERTAG']]; + $event_type = $this->events['BY_CLASS'][$evt_name]; + $display2 = $event_type['s_Menu_Name']; if(strlen($display2) > 20){ $display2 = substr($display2,0,18)."..."; @@ -444,7 +467,7 @@ class gotomasses extends plugin "9999" => "*")); $count = $this->o_queue->number_of_queued_entries(); - $smarty->assign("range_selector", range_selector($count, $this->start, $this->range,"range")); + $divlist->SetListFooter(range_selector($count, $this->start, $this->range,"range")); $smarty->assign("range",$this->range); $smarty->assign("div",$divlist->Draw()); return($smarty->fetch (get_template_path('gotomasses.tpl', TRUE, dirname(__FILE__)))); @@ -513,7 +536,7 @@ class gotomasses extends plugin */ if(count($update_ids)){ if(!$this->o_queue->update_entries($update_ids,$data)){ - msg_dialog::display(_("Error"), sprintf(_("Could not update queue entry: %s"),$id) , ERROR_DIALOG); + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG); return(FALSE); } } @@ -549,7 +572,7 @@ class gotomasses extends plugin */ if(count($update_ids)){ if(!$this->o_queue->update_entries($update_ids,$data)){ - msg_dialog::display(_("Error"), sprintf(_("Could not update queue entries.")) , ERROR_DIALOG); + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entries.")) , ERROR_DIALOG); return(FALSE); } } @@ -589,13 +612,14 @@ class gotomasses extends plugin if(class_available("DaemonEvent_faireboot")){ $tmp = new DaemonEvent_faireboot($this->config); $tmp->add_targets($update_ids); + $tmp->set_type(TRIGGERED_EVENT); if(!$this->o_queue->append($tmp)){ - msg_dialog::display(_("Error"), sprintf(_("Could not update queue entry: %s"),$id) , ERROR_DIALOG); + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG); return(FALSE); } }else{ msg_dialog::display(_("Error"), - sprintf(_("The Job could not be aborted, the '%s' event class was not found."), + sprintf(_("The job could not be aborted, the required class '%s' was not found."), "DaemonEvent_faireboot") , ERROR_DIALOG); } } @@ -630,7 +654,7 @@ class gotomasses extends plugin */ if(count($update_ids)){ if(!$this->o_queue->update_entries($update_ids,$data)){ - msg_dialog::display(_("Error"), sprintf(_("Could not update queue entry: %s"),$id) , ERROR_DIALOG); + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG); return(FALSE); } }