alert template schedule pandora_enterprise#3943

This commit is contained in:
Daniel Barbero Martin 2022-02-01 11:29:25 +01:00
parent 5eb719ecaa
commit 645257f9dc
4 changed files with 107 additions and 127 deletions

View File

@ -206,105 +206,15 @@ $data[0] = $condition;
$table_conditions->data[] = $data;
// DAYS
$table_days->class = 'databox alert_days';
$table_days->width = '100%';
$table_days->size = [];
$table_days->data = [];
$table_days->style = [];
$table_days->styleTable = 'padding: 1px; margin: 0px; text-align: center; height: 80px;';
$table_days->head[0] = __('Mon');
$table_days->head[1] = __('Tue');
$table_days->head[2] = __('Wed');
$table_days->head[3] = __('Thu');
$table_days->head[4] = __('Fri');
$table_days->head[5] = __('Sat');
$table_days->head[6] = __('Sun');
$table_days->data[0] = array_fill(0, 7, html_print_image('images/blade.png', true));
$days = [];
if ($template['monday']) {
$table_days->data[0][0] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['tuesday']) {
$table_days->data[0][1] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['wednesday']) {
$table_days->data[0][2] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['thursday']) {
$table_days->data[0][3] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['friday']) {
$table_days->data[0][4] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['saturday']) {
$table_days->data[0][5] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['sunday']) {
$table_days->data[0][6] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
$data[0] = html_print_table($table_days, true);
unset($table_days);
// TIME
$table_time->class = 'databox alert_time';
$table_time->width = '100%';
$table_time->size = [];
$table_time->data = [];
$table_time->style = [];
$table_time->styleTable = 'padding: 1px; margin: 0px; text-align: center; height: 80px; width: 100%;';
// $data[0] = __('Time from') . ' / ' . __('Time to');
if ($template['time_from'] == $template['time_to']) {
$table_time->head[0] = '00:00:00<br>-<br>23:59:59';
$table_time->data[0][0] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
} else {
$from_array = explode(':', $template['time_from']);
$from = ($from_array[0] * SECONDS_1HOUR + $from_array[1] * SECONDS_1MINUTE + $from_array[2]);
$to_array = explode(':', $template['time_to']);
$to = ($to_array[0] * SECONDS_1HOUR + $to_array[1] * SECONDS_1MINUTE + $to_array[2]);
if ($to > $from) {
if ($template['time_from'] != '00:00:00') {
$table_time->head[0] = '00:00:00<br>-<br>'.$template['time_from'];
$table_time->data[0][0] = html_print_image('images/blade.png', true);
}
$table_time->head[1] = $template['time_from'].'<br>-<br>'.$template['time_to'];
$table_time->data[0][1] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
if ($template['time_to'] != '23:59:59') {
$table_time->head[2] = $template['time_to'].'<br>-<br>23:59:59';
$table_time->data[0][2] = html_print_image('images/blade.png', true);
}
} else {
if ($template['time_to'] != '00:00:00') {
$table_time->head[0] = '00:00:00<br>-<br>'.$template['time_to'];
$table_time->data[0][0] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
$table_time->head[1] = $template['time_to'].'<br>-<br>'.$template['time_from'];
$table_time->data[0][1] = html_print_image('images/blade.png', true, ['class' => 'invert_filter']);
if ($template['time_from'] != '23:59:59') {
$table_time->head[2] = $template['time_from'].'<br>-<br>23:59:59';
$table_time->data[0][2] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
}
$data[1] = $template['time_from'].' / '.$template['time_to'];
}
$data[1] = html_print_table($table_time, true);
unset($table_time);
$table_conditions->colspan[1][0] = 2;
$schedule = json_decode(
io_safe_output(
$template['schedule']
),
true
);
$data[0] = drawInfoSchedule($schedule, 'databox alert_days');
$data[1] = '';
$table_conditions->data[] = $data;
$data[0] = __('Use special days list');

View File

@ -1,16 +1,31 @@
<?php
/**
* Alerts templates.
*
* @category Alerts
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Load global vars.
global $config;
@ -43,14 +58,14 @@ if (defined('LAST_STEP') === false) {
define('LAST_STEP', 3);
}
if ($duplicate_template) {
if ($duplicate_template === true) {
$source_id = (int) get_parameter('source_id');
$a_template = alerts_get_alert_template($source_id);
} else {
$a_template = alerts_get_alert_template($id);
}
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$sec = 'advanced';
} else {
$sec = 'galertas';
@ -64,7 +79,7 @@ if (check_acl_restricted_all($config['id_user'], 0, 'LM')) {
if ($a_template !== false) {
// If user tries to duplicate/edit a template with group=ALL.
if ($a_template['id_group'] == 0) {
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
alerts_meta_print_header();
} else {
if ($step == 1) {
@ -96,7 +111,7 @@ if ($a_template !== false) {
// Then template group have to be in his own groups.
if ($is_in_group) {
// Header.
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
alerts_meta_print_header();
} else {
ui_print_page_header(
@ -120,7 +135,7 @@ if ($a_template !== false) {
// This prevents to duplicate the header in case duplicate/edit_template action is performed.
} else {
// Header.
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
alerts_meta_print_header();
} else {
if ($step == 1) {
@ -172,7 +187,7 @@ function print_alert_template_steps($step, $id)
{
echo '<ol class="steps">';
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$sec = 'advanced';
} else {
$sec = 'galertas';
@ -256,7 +271,7 @@ function update_template($step)
return false;
}
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$sec = 'advanced';
} else {
$sec = 'galertas';
@ -558,7 +573,7 @@ $table = new stdClass();
$table->id = 'template';
$table->width = '100%';
$table->class = 'databox filters';
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$table->head[0] = __('Create Template');
$table->head_colspan[0] = 4;
$table->headstyle[0] = 'text-align: center';
@ -623,7 +638,7 @@ if ($step == 2) {
'',
true
);
$table->data[1][1] .= '<div id="calendar_map"></div>';
$table->data[1][1] .= '<div id="calendar_map" style="width: 90%;"></div>';
$table->data[1][1] .= html_print_input_hidden('schedule', $schedule, true);
$table->colspan['threshold'][1] = 3;
@ -716,8 +731,7 @@ if ($step == 2) {
);
$sql_query = sprintf(
'
SELECT id, name
'SELECT id, name
FROM talert_actions
WHERE id_group IN (%s)
ORDER BY name',
@ -1085,7 +1099,7 @@ if ($step == 2) {
(!$is_management_allowed | $disabled)
);
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$table->data[3][0] = __('Wizard level');
$wizard_levels = [
'nowizard' => __('No wizard'),

View File

@ -3390,3 +3390,62 @@ function alerts_get_templates_name_array($array_ids)
return $result;
}
/**
* Draw schedule info
*
* @param array $schedule
*
* @return string
*/
function drawInfoSchedule($schedule, $class='info_table')
{
$table_days = new stdClass();
$table_days->width = '100%';
$table_days->class = $class;
$table_days->data = [];
$table_days->styleTable = 'text-align: center;';
$table_days->head['monday'] = __('Mon');
$table_days->head['tuesday'] = __('Tue');
$table_days->head['wednesday'] = __('Wed');
$table_days->head['thursday'] = __('Thu');
$table_days->head['friday'] = __('Fri');
$table_days->head['saturday'] = __('Sat');
$table_days->head['sunday'] = __('Sun');
$week = [
'monday',
'tuesday',
'wednesday',
'thursday',
'friday',
'saturday',
'sunday',
];
foreach ($week as $day) {
$table_days->data[0][$day] = html_print_image(
'images/blade.png',
true,
['class' => 'invert_filter']
);
}
foreach ($schedule as $day => $sch) {
if (isset($sch) === true && empty($sch) === false) {
$table_days->data[0][$day] = '';
foreach ($sch as $value) {
$table_days->data[0][$day] .= '<p>';
$table_days->data[0][$day] .= '<span>'.__('From').': </span>';
$table_days->data[0][$day] .= '<span>'.$value['start'].'</span>';
$table_days->data[0][$day] .= '<span> '.__('To').': </span>';
$table_days->data[0][$day] .= '<span>'.$value['end'].'</span>';
$table_days->data[0][$day] .= '</p>';
}
}
}
return \html_print_table($table_days, true);
}

View File

@ -248,14 +248,11 @@ div#rules.show {
}
.info-item {
width: 25%;
}
.info-days {
width: 65%;
width: 100%;
}
.info-item table.info_table thead tr th {
min-width: 150px;
text-align: center;
}