$name, 'description' => $description, 'date_from' => $date_from, 'date_to' => $date_time_stop, 'executed' => $executed, 'id_group' => $id_group, 'only_alerts' => $only_alerts ); $result = db_process_sql_update('tplanned_downtime', $values, array ('id' => $id_downtime)); } // INSERT A NEW DOWNTIME_AGENT ASSOCIATION if ($insert_downtime_agent == 1){ $agents = $_POST["id_agent"]; for ($a=0;$a $id_downtime, 'id_agent' => $id_agente_dt); $result = db_process_sql_insert('tplanned_downtime_agents', $values); } } // DELETE A DOWNTIME_AGENT ASSOCIATION if ($delete_downtime_agent == 1){ $id_da = get_parameter ("id_downtime_agent"); $result = db_process_sql_delete('tplanned_downtime_agents', array('id' => $id_da)); } // DELETE WHOLE DOWNTIME! if ($delete_downtime) { $result = db_process_sql_delete('tplanned_downtime', array('id' => $id_downtime)); $result2 = db_process_sql_delete('tplanned_downtime_agents', array('id' => $id_downtime)); if (($result === false) OR ($result2 === false)){ echo '

'.__('Not deleted. Error deleting data').'

'; } else { echo '

'.__('Successfully deleted').'

'; } } // UPDATE OR CREATE A DOWNTIME (MAIN DATA, NOT AGENT ASSOCIATION) if ($create_downtime || $update_downtime) { $description = (string) get_parameter ('description'); $name = (string) get_parameter ('name'); $check = db_get_value ('name', 'tplanned_downtime', 'name', $name); $datetime_from = strtotime ($date_from.' '.$time_from); $datetime_to = strtotime ($date_to.' '.$time_to); if ($datetime_from > $datetime_to) { echo '

'.__('Not created. Error inserting data').': START > END

'; } else { $sql = ''; if ($create_downtime) { if (trim(io_safe_output($name)) != '') { if (!$check) { $values = array( 'name' => $name, 'description' => $description, 'date_from' => $datetime_from, 'date_to' => $datetime_to, 'id_group' => $id_group, 'only_alerts' => (int)$only_alerts); $result = db_process_sql_insert('tplanned_downtime', $values); } else { echo "

".__('Each planned downtime must have a different name')."

"; } } else { echo '

'.__('Planned downtime must have a name').'

'; } } else if ($update_downtime) { if (trim(io_safe_output($name)) != '') { $values = array( 'name' => $name, 'description' => $description, 'date_from' => $datetime_from, 'date_to' => $datetime_to, 'id_group' => $id_group, 'only_alerts' => (int)$only_alerts); $result = db_process_sql_update('tplanned_downtime', $values, array('id' => $id_downtime)); } else { echo '

'.__('Planned downtime must have a name').'

'; } } if ($result === false) { if($create_downtime) { echo '

'.__('Could not be created').'

'; } else { echo '

'.__('Could not be updated').'

'; } } else { if($create_downtime && $name && !$check) { echo '

'.__('Successfully created').'

'; } else if ($update_downtime && $name) { echo '

'.__('Successfully updated').'

'; } } } } //////////////////////////////// // Show create / update form //////////////////////////////// if (($first_create != 0) OR ($first_update != 0)){ // Have any data to show ? if ($id_downtime > 0) { switch ($config["dbtype"]) { case "mysql": $sql = sprintf ("SELECT `id`, `name`, `description`, `date_from`, `date_to`, `id_group`, `only_alerts` FROM `tplanned_downtime` WHERE `id` = %d", $id_downtime); break; case "postgresql": $sql = sprintf ("SELECT \"id\", \"name\", \"description\", \"date_from\", \"date_to\", \"id_group\", \"only_alerts\" FROM \"tplanned_downtime\" WHERE \"id\" = %d", $id_downtime); break; case "oracle": $sql = sprintf ("SELECT id, name, description, date_from, date_to, id_group, only_alerts FROM tplanned_downtime WHERE id = %d", $id_downtime); break; } $result = db_get_row_sql ($sql); $name = $result["name"]; $description = $result["description"]; $date_from = strftime ('%Y-%m-%d', $result["date_from"]); $date_to = strftime ('%Y-%m-%d', $result["date_to"]); $time_from = strftime ('%I:%M%p', $result["date_from"]); $time_to = strftime ('%I:%M%p', $result["date_to"]); $only_alerts = $result["only_alerts"]; if ($id_group == 0) $id_group = $result['id_group']; } $table->class = 'databox_color'; $table->width = '98%'; $table->data = array (); $table->data[0][0] = __('Name'); $table->data[0][1] = html_print_input_text ('name', $name, '', 25, 40, true); $table->data[2][0] = __('Description'); $table->data[2][1] = html_print_textarea ('description', 3, 35, $description, '', true); $table->data[3][0] = __('Timestamp from'); $table->data[3][1] = html_print_input_text ('date_from', $date_from, '', 10, 10, true); $table->data[3][1] .= html_print_input_text ('time_from', $time_from, '', 7, 7, true); $table->data[4][0] = __('Timestamp to'); $table->data[4][1] = html_print_input_text ('date_to', $date_to, '', 10, 10, true); $table->data[4][1] .= html_print_input_text ('time_to', $time_to, '', 7, 7, true); $table->data[5][0] = __('Group'); $table->data[5][1] = html_print_select_groups(false, "AR", true, 'id_group', $id_group, '', '', 0, true); $table->data[6][0] = __('Only alerts'); $table->data[6][1] = html_print_checkbox('only_alerts', 1, $only_alerts, true); echo '
'; if ($id_downtime > 0){ echo ""; echo "
"; } //Editor form html_print_table ($table); html_print_input_hidden ('id_agent', $id_agent); echo '
'; if ($id_downtime) { html_print_input_hidden ('update_downtime', 1); html_print_input_hidden ('id_downtime', $id_downtime); html_print_submit_button (__('Update'), 'updbutton', false, 'class="sub upd"'); } else { html_print_input_hidden ('create_downtime', 1); html_print_submit_button (__('Add'), 'crtbutton', false, 'class="sub wand"'); } echo '
'; echo ''; if ($id_downtime > 0) { echo "
"; // Show available agents to include into downtime echo '

'.__('Available agents').':

'; $filter_group = get_parameter("filter_group", 0); $filter_cond = ''; if($filter_group > 0) $filter_cond = " AND id_grupo = $filter_group "; $sql = sprintf ("SELECT tagente.id_agente, tagente.nombre, tagente.id_grupo FROM tagente WHERE tagente.id_agente NOT IN ( SELECT tagente.id_agente FROM tagente, tplanned_downtime_agents WHERE tplanned_downtime_agents.id_agent = tagente.id_agente AND tplanned_downtime_agents.id_downtime = %d ) AND disabled = 0 $filter_cond ORDER by tagente.nombre", $id_downtime); $downtimes = db_get_all_rows_sql ($sql); $data = array (); if ($downtimes) { foreach ($downtimes as $downtime) { if (check_acl ($config["id_user"], $downtime['id_grupo'], "AR")) { $data[$downtime['id_agente']] = $downtime['nombre']; } } } $disabled_add_button = false; if (empty($data)) { $disabled_add_button = true; } echo "
"; html_print_select_groups(false, "AR", true, 'filter_group', $filter_group, '', '', '', false, false, true, '', false, 'width:180px'); echo "

"; html_print_submit_button (__('Filter by group'), '', false, 'class="sub next"',false); echo "
"; echo "
"; echo html_print_select ($data, "id_agent[]", '', '', '', 0, false, true, true, '', false, 'width: 180px;'); echo "


"; html_print_submit_button (__('Add'), '', $disabled_add_button, 'class="sub next"',false); echo "
"; echo "
"; //Start Overview of existing planned downtime echo '

'.__('Agents planned for this downtime').':

'; $sql = sprintf ("SELECT tagente.nombre, tplanned_downtime_agents.id, tagente.id_os, tagente.id_agente, tagente.id_grupo, tagente.ultimo_contacto FROM tagente, tplanned_downtime_agents WHERE tplanned_downtime_agents.id_agent = tagente.id_agente AND tplanned_downtime_agents.id_downtime = %d ",$id_downtime); $downtimes = db_get_all_rows_sql ($sql); if ($downtimes === false) { echo '
'. __('There are no scheduled downtimes').'
'; } else { $table->class = 'databox'; $table->width = '98%'; $table->data = array (); $table->head = array (); $table->head[0] = __('Name'); $table->head[1] = __('Group'); $table->head[2] = __('OS'); $table->head[3] = __('Last contact'); $table->head[4] = __('Remove'); $table->align[4] = "center";; foreach ($downtimes as $downtime) { $data = array (); $data[0] = $downtime['nombre']; $data[1] = db_get_sql ("SELECT nombre FROM tgrupo WHERE id_grupo = ". $downtime["id_grupo"]); $data[2] = ui_print_os_icon ($downtime["id_os"], true, true); $data[3] = $downtime["ultimo_contacto"]; $data[4] = '' . html_print_image("images/cross.png", true, array("border" => '0', "alt" => __('Delete'))); array_push ($table->data, $data); } html_print_table ($table); } } } else { // View available downtimes present in database (if any of them) $table->class = 'databox'; //Start Overview of existing planned downtime $table->width = '98%'; $table->data = array (); $table->head = array (); $table->head[0] = __('Name #Ag.'); $table->head[1] = __('Description'); $table->head[2] = __('Group'); $table->head[3] = __('From'); $table->head[4] = __('To'); $table->head[5] = __('Affect'); $table->head[6] = __('Delete'); $table->head[7] = __('Update'); $table->head[8] = __('Running'); $table->head[9] = __('Stop downtime'); $table->align[2] = "center"; $table->align[5] = "center"; $table->align[6] = "center"; $table->align[7] = "center"; $table->align[8] = "center"; $table->align[9] = "center"; if(!empty($groups)) { $sql = "SELECT * FROM tplanned_downtime WHERE id_group IN (" . implode (",", array_keys ($groups)) . ")"; $downtimes = db_get_all_rows_sql ($sql); } else { $downtimes = array(); } if (!$downtimes) { echo '
'.__('No planned downtime').'
'; } else { foreach ($downtimes as $downtime) { $data = array(); $total = db_get_sql ("SELECT COUNT(id_agent) FROM tplanned_downtime_agents WHERE id_downtime = ".$downtime["id"]); $data[0] = $downtime['name']. " ($total)"; $data[1] = $downtime['description']; $data[2] = ui_print_group_icon ($downtime['id_group'], true); $data[3] = date ("Y-m-d H:i", $downtime['date_from']); $data[4] = date ("Y-m-d H:i", $downtime['date_to']); if($downtime['only_alerts']) { $data[5] = __('Only alerts'); } else { $data[5] = __('All'); } if ($downtime["executed"] == 0){ $data[6] = '
' . html_print_image("images/cross.png", true, array("border" => '0', "alt" => __('Delete'))); $data[7] = '' . html_print_image("images/config.png", true, array("border" => '0', "alt" => __('Update'))) . ''; } else { $data[6]= "N/A"; $data[7]= "N/A"; } if ($downtime["executed"] == 0) $data[8] = html_print_image ("images/pixel_green.png", true, array ('width' => 20, 'height' => 20, 'alt' => __('Executed'))); else $data[8] = html_print_image ("images/pixel_red.png", true, array ('width' => 20, 'height' => 20, 'alt' => __('Not executed'))); if ($downtime["executed"] != 0) { $data[9] = '' . html_print_image("images/cancel.png", true, array("border" => '0', "alt" => __('Stop downtime'))); } array_push ($table->data, $data); } html_print_table ($table); } echo '
'; echo '
'; html_print_input_hidden ("first_create", 1); html_print_submit_button (__('Create'), 'create', false, 'class="sub next"'); echo '
'; echo '
'; } ui_require_css_file ('datepicker'); ui_require_jquery_file ('ui.core'); ui_require_jquery_file ('ui.datepicker'); ui_require_jquery_file ('timeentry'); ?>