diff --git a/extras/build_rpm_rhel7.sh b/extras/build_rpm_rhel7.sh new file mode 100755 index 0000000000..6bb65d816d --- /dev/null +++ b/extras/build_rpm_rhel7.sh @@ -0,0 +1,26 @@ +#!/bin/bash +source build_vars.sh + +if [ ! -d $RPMHOME/RPMS ]; then + mkdir -p $RPMHOME/RPMS || exit 1 +fi + +echo "Creating RPM packages in $RPMHOME/RPMS" + +# Console +rpmbuild -ba $CODEHOME/pandora_console/pandora_console.rhel7.spec || exit 1 + +# Server +rpmbuild -ba $CODEHOME/pandora_server/pandora_server.rhel7.spec || exit 1 + +# Unix agent +rpmbuild -ba $CODEHOME/pandora_agents/unix/pandora_agent.rhel7.spec || exit 1 + +# Enterprise console +rpmbuild -ba $PANDHOME_ENT/pandora_console/enterprise/pandora_console_enterprise.rhel7.spec || exit 1 + +# Enterprise server +rpmbuild -ba $PANDHOME_ENT/pandora_server/PandoraFMS-Enterprise/pandora_server_enterprise.rhel7.spec || exit 1 + +exit 0 + diff --git a/extras/pandora_update_version.sh b/extras/pandora_update_version.sh index 7d143f0f03..33e0c891f7 100755 --- a/extras/pandora_update_version.sh +++ b/extras/pandora_update_version.sh @@ -26,6 +26,7 @@ $CODEHOME/pandora_server/pandora_server.spec \ $PANDHOME_ENT/pandora_console/enterprise/pandora_console_enterprise.spec \ $PANDHOME_ENT/pandora_server/PandoraFMS-Enterprise/pandora_server_enterprise.spec \ $CODEHOME/pandora_console/pandora_console.redhat.spec \ +$CODEHOME/pandora_console/pandora_console.rhel7.spec \ $CODEHOME/pandora_agents/unix/pandora_agent.redhat.spec \ $CODEHOME/pandora_server/pandora_server.redhat.spec \ $PANDHOME_ENT/pandora_console/enterprise/pandora_console_enterprise.redhat.spec \ diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 9fa2a98d18..ccc4c495a3 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.733-190402 +Version: 7.0NG.733-190405 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 1e632346c8..8780e8a466 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.733-190402" +pandora_version="7.0NG.733-190405" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 15af33e430..ed8965a652 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.733'; -use constant AGENT_BUILD => '190402'; +use constant AGENT_BUILD => '190405'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 49d1ffb1ac..eaf92c3ca5 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.733 -%define release 190402 +%define release 190405 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 34bb201378..a12a113b92 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.733 -%define release 190402 +%define release 190405 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 72097cde2c..2b6ba8babf 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.733" -PI_BUILD="190402" +PI_BUILD="190405" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/bin/pandora_agent.conf b/pandora_agents/win32/bin/pandora_agent.conf index 12ccb4e91b..3ec2bf3880 100644 --- a/pandora_agents/win32/bin/pandora_agent.conf +++ b/pandora_agents/win32/bin/pandora_agent.conf @@ -44,6 +44,8 @@ remote_config 0 #agent_name_cmd cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\agentname.vbs" agent_name_cmd __rand__ +# Agent alias. Name should be unique rather than alias. Hostname by default +# agent_alias $Alias$ #Parent agent_name #parent_agent_name caprica diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 02d0b4098e..9dadbf90fd 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190402} +{190405} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index a77673ee25..f4f3ddac52 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.733(Build 190402)") +#define PANDORA_VERSION ("7.0NG.733(Build 190405)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index d881ed70d4..4bdc9a4096 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.733(Build 190402))" + VALUE "ProductVersion", "(7.0NG.733(Build 190405))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 3a1b872021..9a41b31fe5 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.733-190402 +Version: 7.0NG.733-190405 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index deb3d165bd..3907e8f72c 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.733-190402" +pandora_version="7.0NG.733-190405" package_pear=0 package_pandora=1 diff --git a/pandora_console/extras/mr/27.sql b/pandora_console/extras/mr/27.sql index d8b1f66b6e..729d63c884 100644 --- a/pandora_console/extras/mr/27.sql +++ b/pandora_console/extras/mr/27.sql @@ -11,4 +11,30 @@ ALTER TABLE `tagente_estado` ADD COLUMN `ff_critical` int(4) unsigned default '0 UPDATE tuser_task SET parameters = 'a:5:{i:0;a:6:{s:11:\"description\";s:28:\"Report pending to be created\";s:5:\"table\";s:7:\"treport\";s:8:\"field_id\";s:9:\"id_report\";s:10:\"field_name\";s:4:\"name\";s:4:\"type\";s:3:\"int\";s:9:\"acl_group\";s:8:\"id_group\";}i:1;a:2:{s:11:\"description\";s:46:\"Send to email addresses (separated by a comma)\";s:4:\"type\";s:4:\"text\";}i:2;a:2:{s:11:\"description\";s:7:\"Subject\";s:8:\"optional\";i:1;}i:3;a:3:{s:11:\"description\";s:7:\"Message\";s:4:\"type\";s:4:\"text\";s:8:\"optional\";i:1;}i:4;a:2:{s:11:\"description\";s:11:\"Report Type\";s:4:\"type\";s:11:\"report_type\";}}' where function_name = "cron_task_generate_report"; +ALTER TABLE `treport_content` ADD COLUMN `total_time` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_in_unknown_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_of_not_initialized_module` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_of_downtime` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `total_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `checks_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `checks_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `unknown_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `agent_max_value` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `agent_min_value` TINYINT(1) DEFAULT '1'; + +ALTER TABLE `treport_content_template` ADD COLUMN `total_time` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_in_unknown_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_of_not_initialized_module` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_of_downtime` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `total_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `checks_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `checks_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `unknown_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `agent_max_value` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `agent_min_value` TINYINT(1) DEFAULT '1'; + COMMIT; \ No newline at end of file diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index a83ff9f6bc..74f12fcf2f 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -766,6 +766,18 @@ ALTER TABLE treport_content_template ADD COLUMN `lapse_calc` tinyint(1) default ALTER TABLE treport_content_template ADD COLUMN `lapse` int(11) default '300'; ALTER TABLE treport_content_template ADD COLUMN `visual_format` tinyint(1) default '0'; ALTER TABLE treport_content_template ADD COLUMN `hide_no_data` tinyint(1) default '0'; +ALTER TABLE `treport_content_template` ADD COLUMN `total_time` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_in_unknown_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_of_not_initialized_module` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `time_of_downtime` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `total_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `checks_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `checks_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `unknown_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `agent_max_value` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `agent_min_value` TINYINT(1) DEFAULT '1'; -- ----------------------------------------------------- -- Table `treport_content_sla_com_temp` (treport_content_sla_combined_template) @@ -1389,6 +1401,18 @@ ALTER TABLE treport_content ADD COLUMN `hide_no_data` tinyint(1) default '0'; ALTER TABLE treport_content ADD COLUMN `recursion` tinyint(1) default NULL; ALTER TABLE treport_content ADD COLUMN `show_extended_events` tinyint(1) default '0'; UPDATE `treport_content` SET type="netflow_summary" WHERE type="netflow_pie" OR type="netflow_statistics"; +ALTER TABLE `treport_content` ADD COLUMN `total_time` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_in_unknown_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_of_not_initialized_module` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `time_of_downtime` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `total_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `checks_failed` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `checks_in_ok_status` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `unknown_checks` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `agent_max_value` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `agent_min_value` TINYINT(1) DEFAULT '1'; -- --------------------------------------------------------------------- -- Table `tmodule_relationship` diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index ee92aac2c4..d3bf94ddc1 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -591,9 +591,7 @@ if ($config['menu_type'] == 'classic') { if (fixed_header) { $('div#head').addClass('fixed_header'); - $('div#page') - .css('padding-top', $('div#head').innerHeight() + 'px') - .css('position', 'relative'); + $('div#main').css('padding-top', $('div#head').innerHeight() + 'px'); } check_new_chats_icon('icon_new_messages_chat'); diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index 62d58c9261..85b5ee128d 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -119,6 +119,20 @@ $visual_format = 0; // Others $filter_search = ''; +// Added for select fields. +$total_time = true; +$time_failed = true; +$time_in_ok_status = true; +$time_in_unknown_status = true; +$time_of_not_initialized_module = true; +$time_of_downtime = true; +$total_checks = true; +$checks_failed = true; +$checks_in_ok_status = true; +$unknown_checks = true; +$agent_max_value = true; +$agent_min_value = true; + switch ($action) { case 'new': $actionParameter = 'save'; @@ -501,6 +515,18 @@ switch ($action) { $sunday = $item['sunday']; $time_from = $item['time_from']; $time_to = $item['time_to']; + $total_time = $item['total_time']; + $time_failed = $item['time_failed']; + $time_in_ok_status = $item['time_in_ok_status']; + $time_in_unknown_status = $item['time_in_unknown_status']; + $time_of_not_initialized_module = $item['time_of_not_initialized_module']; + $time_of_downtime = $item['time_of_downtime']; + $total_checks = $item['total_checks']; + $checks_failed = $item['checks_failed']; + $checks_in_ok_status = $item['checks_in_ok_status']; + $unknown_checks = $item['unknown_checks']; + $agent_max_value = $item['agent_max_value']; + $agent_min_value = $item['agent_min_value']; break; case 'group_report': @@ -1597,20 +1623,6 @@ $class = 'databox filters'; REPORT_EXCEPTION_CONDITION_NOT_OK => __('Not OK'), ]; html_print_select($list_exception_condition, 'exception_condition', $exception_condition); - - - /* - echo ; - html_print_radio_button ('radiobutton_exception_condition', 0, '', $exception_condition); - echo __('>='); - html_print_radio_button ('radiobutton_exception_condition', 1, '', $exception_condition); - echo __('<'); - html_print_radio_button ('radiobutton_exception_condition', 2, '', $exception_condition); - echo __('OK'); - html_print_radio_button ('radiobutton_exception_condition', 3, '', $exception_condition); - echo __('Not OK'); - html_print_radio_button ('radiobutton_exception_condition', 4, '', $exception_condition); - */ ?> @@ -1620,6 +1632,65 @@ $class = 'databox filters'; + + + + + + + + + + + + +
+

+ +

+
+

+ +

+
+

+ +

+
+

+ +

+
+

+ +

+
+

+ +

+
+ + @@ -1629,7 +1700,7 @@ $class = 'databox filters'; + + + + Select fields to show

'); + ?> + + + + + + + +
+

+ +

+
+

+ +

+
+

+ +

+
+

+ +

+
+
+ + + + + Select fields to show

'); + ?> + + + + + +
+

+ +

+
+

+ +

+
+
+ + @@ -2625,6 +2769,17 @@ $(document).ready (function () { } }); + + $("#checkbox-checkbox_show_resume").change(function(){ + if($(this).is(":checked")){ + $("#row_select_fields2").show(); + $("#row_select_fields3").show(); + } + else{ + $("#row_select_fields2").hide(); + $("#row_select_fields3").hide(); + } + }); }); @@ -3139,6 +3294,9 @@ function chooseType() { $("#row_event_type").hide(); $("#row_event_status").hide(); $("#row_source").hide(); + $('#row_select_fields').hide(); + $("#row_select_fields2").hide(); + $("#row_select_fields3").hide(); // SLA list default state $("#sla_list").hide(); @@ -3547,6 +3705,15 @@ function chooseType() { $("#row_show_resume").show(); $("#row_working_time").show(); $('#row_hide_notinit_agents').show(); + $('#row_select_fields').show(); + if($("#checkbox-checkbox_show_resume").is(":checked")){ + $("#row_select_fields2").show(); + $("#row_select_fields3").show(); + } + else{ + $("#row_select_fields2").hide(); + $("#row_select_fields3").hide(); + } $("#row_historical_db_check").hide(); break; diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index 3acfee7c88..0d591f390f 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -70,7 +70,7 @@ global $config; // IMPORTANT NOTE: All reporting pages are used also for metaconsole reporting functionality // So, it's very important to specify full url and paths to resources because metaconsole has a different // entry point: enterprise/meta/index.php than normal console !!! -// Login check +// Login check. check_login(); enterprise_hook('open_meta_frame'); @@ -89,7 +89,7 @@ if (!$report_r && !$report_w && !$report_m) { require_once $config['homedir'].'/include/functions_reports.php'; -// Load enterprise extensions +// Load enterprise extensions. enterprise_include('operation/reporting/custom_reporting.php'); enterprise_include_once('include/functions_metaconsole.php'); @@ -98,7 +98,7 @@ if (enterprise_include_once('include/functions_reporting.php') !== ENTERPRISE_NO $enterpriseEnable = true; } -// Constant with fonts directory +// Constant with fonts directory. define('_MPDF_TTFONTPATH', 'include/fonts/'); $activeTab = get_parameter('tab', 'main'); @@ -162,6 +162,10 @@ if ($idReport != 0) { $edit = true; } break; + + default: + // Default. + break; } if (! $edit) { @@ -227,6 +231,10 @@ switch ($action) { ORDER BY "order"' ); break; + + default: + // Default. + break; } if ($items === false) { @@ -234,7 +242,7 @@ switch ($action) { } - // Clean the repeated order values + // Clean the repeated order values. $order_temp = 1; foreach ($items as $item) { switch ($config['dbtype']) { @@ -254,6 +262,10 @@ switch ($action) { ['id_rc' => $item['id_rc']] ); break; + + default: + // Default. + break; } $order_temp++; @@ -281,6 +293,10 @@ switch ($action) { ORDER BY "order"' ); break; + + default: + // Default. + break; } if ($items === false) { @@ -344,6 +360,10 @@ switch ($action) { ['id_rc' => $id] ); break; + + default: + // Default. + break; } } @@ -415,6 +435,10 @@ switch ($action) { } } break; + + default: + // Default. + break; } } break; @@ -444,9 +468,9 @@ switch ($action) { break; } - // Page header for metaconsole - if ($enterpriseEnable and defined('METACONSOLE')) { - // Bread crumbs + // Page header for metaconsole. + if ($enterpriseEnable && defined('METACONSOLE')) { + // Bread crumbs. ui_meta_add_breadcrumb( [ 'link' => 'index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&pure='.$pure, @@ -456,10 +480,11 @@ switch ($action) { ui_meta_print_page_header($nav_bar); - // Print header + // Print header. ui_meta_print_header(__('Reporting'), '', $buttons); } - // Page header for normal console + + // Page header for normal console. else { ui_print_page_header(__('Custom reporting'), 'images/op_reporting.png', false, '', false, $buttons, false, '', 60); } @@ -471,7 +496,7 @@ switch ($action) { case 'group_view': if ($config['id_user'] == $report['id_user'] || is_user_admin($config['id_user'])) { $delete = true; - // owner can delete + // Owner can delete. } else { $delete = check_acl( $config['id_user'], @@ -484,7 +509,7 @@ switch ($action) { case 'group_edit': if ($config['id_user'] == $report['id_user'] || is_user_admin($config['id_user'])) { $delete = true; - // owner can delete + // Owner can delete. } else { $delete = check_acl( $config['id_user'], @@ -501,6 +526,10 @@ switch ($action) { $delete = true; } break; + + default: + // Default. + break; } if (! $delete) { @@ -571,7 +600,7 @@ switch ($action) { ui_require_jquery_file('bgiframe'); ui_require_jquery_file('autocomplete'); - // Show only selected groups + // Show only selected groups. if ($id_group > 0) { $group = ["$id_group" => $id_group]; } else { @@ -595,7 +624,7 @@ switch ($action) { } // Fix : group filter was not working - // Show only selected groups + // Show only selected groups. if ($id_group > 0) { $group = ["$id_group" => $id_group]; $filter['id_group'] = $id_group; @@ -603,8 +632,8 @@ switch ($action) { $group = false; } - // Filter normal and metaconsole reports - if ($config['metaconsole'] == 1 and defined('METACONSOLE')) { + // Filter normal and metaconsole reports. + if ($config['metaconsole'] == 1 && defined('METACONSOLE')) { $filter['metaconsole'] = 1; } else { $filter['metaconsole'] = 0; @@ -670,12 +699,12 @@ switch ($action) { $table->size['csv'] = '5%'; $next = 4; - // Calculate dinamically the number of the column + // Calculate dinamically the number of the column. if (enterprise_hook('load_custom_reporting_1') !== ENTERPRISE_NOT_HOOK) { $next = 7; } - // Admin options only for RM flag + // Admin options only for RM flag. if (check_acl($config['id_user'], 0, 'RM')) { $table->head[$next] = __('Private'); $table->size[$next] = '2%'; @@ -743,7 +772,7 @@ switch ($action) { $data[1] = ui_print_truncate_text($report['description'], 70); - // Remove html and xml button if items are larger than limit + // Remove html and xml button if items are larger than limit. $item_count = db_get_num_rows('SELECT * FROM treport_content WHERE id_report='.$report['id_report']); $report['overload'] = $item_count >= $config['report_limit']; if ($report['overload']) { @@ -752,7 +781,7 @@ switch ($action) { } else if (!$report['non_interactive']) { $data[2] = ''.html_print_image('images/html.png', true, ['title' => __('HTML view')]).''; $data[3] = ''.html_print_image('images/xml.png', true, ['title' => __('Export to XML')]).''; - // I chose ajax.php because it's supposed to give XML anyway + // I chose ajax.php because it's supposed to give XML anyway. } else { $data[2] = html_print_image( 'images/html_disabled.png', @@ -765,14 +794,14 @@ switch ($action) { } - // Calculate dinamically the number of the column + // Calculate dinamically the number of the column. $next = 4; if (enterprise_hook('load_custom_reporting_2') !== ENTERPRISE_NOT_HOOK) { $next = 7; } - // Admin options only for RM flag + // Admin options only for RM flag. if (check_acl($config['id_user'], 0, 'RM')) { if ($report['private'] == 1) { $data[$next] = __('Yes'); @@ -820,6 +849,10 @@ switch ($action) { $delete = true; } break; + + default: + // Default. + break; } if ($edit || $delete) { @@ -915,7 +948,6 @@ switch ($action) { } enterprise_hook('close_meta_frame'); - return; break; @@ -943,6 +975,10 @@ switch ($action) { $idGroupReport = $report['id_group']; $description = $report['description']; break; + + default: + // Default. + break; } break; @@ -976,6 +1012,10 @@ switch ($action) { $id_group_edit = 0; $private = 1; break; + + default: + // Default. + break; } if ($action == 'update') { @@ -1026,10 +1066,10 @@ switch ($action) { $action = 'edit'; } else if ($action == 'save') { if ($reportName != '' && $idGroupReport != '') { - // This flag allow to differentiate between normal console and metaconsole reports + // This flag allow to differentiate between normal console and metaconsole reports. $metaconsole_report = (int) is_metaconsole(); - // Juanma (07/05/2014) New feature: Custom front page for reports + // Juanma (07/05/2014) New feature: Custom front page for reports. if ($config['custom_report_front']) { $custom_font = $config['custom_report_front_font']; $logo = $config['custom_report_front_logo']; @@ -1098,7 +1138,6 @@ switch ($action) { $good_format = false; switch ($action) { case 'update': - $values = []; $values['id_report'] = $idReport; // --------------------------------------------------- @@ -1132,7 +1171,6 @@ switch ($action) { break; case 'event_report_log': - $agents_to_report = get_parameter('id_agents3'); $source = get_parameter('source', ''); $search = get_parameter('search', ''); @@ -1154,7 +1192,7 @@ switch ($action) { $values['top_n_value'] = get_parameter('quantity'); $interval_max = get_parameter('max_interval'); $interval_min = get_parameter('min_interval'); - // Checks intervals fields + // Checks intervals fields. if (preg_match('/^(\-)*[0-9]*\.?[0-9]+$/', $interval_max) and preg_match('/^(\-)*[0-9]*\.?[0-9]+$/', $interval_min)) { $good_format = true; } @@ -1221,9 +1259,21 @@ switch ($action) { case 'availability': // HACK it is saved in show_graph field. - // Show interfaces instead the modules + // Show interfaces instead the modules. $values['show_graph'] = get_parameter('checkbox_show_address_agent'); $values['period'] = get_parameter('period'); + $values['total_time'] = get_parameter('total_time'); + $values['time_failed'] = get_parameter('time_failed'); + $values['time_in_ok_status'] = get_parameter('time_in_ok_status'); + $values['time_in_unknown_status'] = get_parameter('time_in_unknown_status'); + $values['time_of_not_initialized_module'] = get_parameter('time_of_not_initialized_module'); + $values['time_of_downtime'] = get_parameter('time_of_downtime'); + $values['total_checks'] = get_parameter('total_checks'); + $values['checks_failed'] = get_parameter('checks_failed'); + $values['checks_in_ok_status'] = get_parameter('checks_in_ok_status'); + $values['unknown_checks'] = get_parameter('unknown_checks'); + $values['agent_max_value'] = get_parameter('agent_max_value'); + $values['agent_min_value'] = get_parameter('agent_min_value'); $good_format = true; break; @@ -1258,6 +1308,7 @@ switch ($action) { $values['text'] = get_parameter('text'); $values['show_graph'] = get_parameter('combo_graph_options'); $good_format = true; + break; } $values['id_agent'] = get_parameter('id_agent'); @@ -1282,6 +1333,19 @@ switch ($action) { $values['friday'] = get_parameter('friday', 0); $values['saturday'] = get_parameter('saturday', 0); $values['sunday'] = get_parameter('sunday', 0); + $values['total_time'] = get_parameter('total_time', 0); + $values['time_failed'] = get_parameter('time_failed', 0); + $values['time_in_ok_status'] = get_parameter('time_in_ok_status', 0); + $values['time_in_unknown_status'] = get_parameter('time_in_unknown_status', 0); + $values['time_of_not_initialized_module'] = get_parameter('time_of_not_initialized_module', 0); + $values['time_of_downtime'] = get_parameter('time_of_downtime', 0); + $values['total_checks'] = get_parameter('total_checks', 0); + $values['checks_failed'] = get_parameter('checks_failed', 0); + $values['checks_in_ok_status'] = get_parameter('checks_in_ok_status', 0); + $values['unknown_checks'] = get_parameter('unknown_checks', 0); + $values['agent_max_value'] = get_parameter('agent_max_value', 0); + $values['agent_min_value'] = get_parameter('agent_min_value', 0); + switch ($config['dbtype']) { case 'mysql': case 'postgresql': @@ -1293,6 +1357,10 @@ switch ($action) { $values['time_from'] = '#to_date(\''.get_parameter('time_from').'\',\'hh24:mi:ss\')'; $values['time_to'] = '#to_date(\''.get_parameter('time_to').'\', \'hh24:mi:ss\')'; break; + + default: + // Default. + break; } $values['group_by_agent'] = get_parameter('checkbox_row_group_by_agent'); @@ -1313,7 +1381,7 @@ switch ($action) { $values['server_name'] = get_parameter('combo_server'); } - if ((($values['type'] == 'custom_graph') or ($values['type'] == 'automatic_custom_graph')) && ($values['id_gs'] == 0 || $values['id_gs'] == '')) { + if ((($values['type'] == 'custom_graph') || ($values['type'] == 'automatic_custom_graph')) && ($values['id_gs'] == 0 || $values['id_gs'] == '')) { $resultOperationDB = false; break; } @@ -1330,7 +1398,7 @@ switch ($action) { $event_filter_search = get_parameter('filter_search', ''); - // If metaconsole is activated + // If metaconsole is activated. if ($config['metaconsole'] == 1 && defined('METACONSOLE')) { if (($values['type'] == 'custom_graph') or ($values['type'] == 'automatic_custom_graph')) { $id_gs = substr($values['id_gs'], 0, strpos($values['id_gs'], '|')); @@ -1341,7 +1409,7 @@ switch ($action) { } } - // Get agent and server name + // Get agent and server name. $agent_name_server = io_safe_output(get_parameter('agent')); if (isset($agent_name_server)) { @@ -1351,7 +1419,7 @@ switch ($action) { $server_name = substr($agent_name_server, $separator_pos); $server_name = str_replace('(', '', $server_name); $server_name = str_replace(')', '', $server_name); - // Will update server_name variable + // Will update server_name variable. $values['server_name'] = trim($server_name); $agent_name = substr($agent_name_server, 0, $separator_pos); } @@ -1447,6 +1515,10 @@ switch ($action) { $style['label'] = ''; } break; + + default: + // Default. + break; } $values['style'] = io_safe_input(json_encode($style)); @@ -1461,6 +1533,10 @@ switch ($action) { unset($values['type']); } break; + + default: + // Default. + break; } $resultOperationDB = db_process_sql_update( @@ -1482,7 +1558,7 @@ switch ($action) { $values['description'] = get_parameter('description'); $label = get_parameter('label', ''); - // Add macros name + // Add macros name. $items_label = []; $items_label['type'] = get_parameter('type'); $items_label['id_agent'] = get_parameter('id_agent'); @@ -1492,7 +1568,7 @@ switch ($action) { $values['name'] = reporting_label_macro($items_label, $name_it); // Support for projection graph, prediction date and SLA reports - // 'top_n_value', 'top_n' and 'text' fields will be reused for these types of report + // 'top_n_value', 'top_n' and 'text' fields will be reused for these types of report. switch ($values['type']) { case 'projection_graph': $values['period'] = get_parameter('period1'); @@ -1594,7 +1670,7 @@ switch ($action) { case 'availability': $values['period'] = get_parameter('period'); // HACK it is saved in show_graph field. - // Show interfaces instead the modules + // Show interfaces instead the modules. $values['show_graph'] = get_parameter('checkbox_show_address_agent'); $good_format = true; break; @@ -1669,6 +1745,10 @@ switch ($action) { $values['only_display_wrong'] = $only_display_wrong_tmp; } break; + + default: + // Default. + break; } $values['monday'] = get_parameter('monday', 0); @@ -1678,6 +1758,18 @@ switch ($action) { $values['friday'] = get_parameter('friday', 0); $values['saturday'] = get_parameter('saturday', 0); $values['sunday'] = get_parameter('sunday', 0); + $values['total_time'] = get_parameter('total_time', 0); + $values['time_failed'] = get_parameter('time_failed', 0); + $values['time_in_ok_status'] = get_parameter('time_in_ok_status', 0); + $values['time_in_unknown_status'] = get_parameter('time_in_unknown_status', 0); + $values['time_of_not_initialized_module'] = get_parameter('time_of_not_initialized_module', 0); + $values['time_of_downtime'] = get_parameter('time_of_downtime', 0); + $values['total_checks'] = get_parameter('total_checks', 0); + $values['checks_failed'] = get_parameter('checks_failed', 0); + $values['checks_in_ok_status'] = get_parameter('checks_in_ok_status', 0); + $values['unknown_checks'] = get_parameter('unknown_checks', 0); + $values['agent_max_value'] = get_parameter('agent_max_value', 0); + $values['agent_min_value'] = get_parameter('agent_min_value', 0); switch ($config['dbtype']) { case 'mysql': case 'postgresql': @@ -1689,6 +1781,10 @@ switch ($action) { $values['time_from'] = '#to_date(\''.get_parameter('time_from').'\',\'hh24:mi:ss\')'; $values['time_to'] = '#to_date(\''.get_parameter('time_to').'\', \'hh24:mi:ss\')'; break; + + default: + // Default. + break; } $values['group_by_agent'] = get_parameter('checkbox_row_group_by_agent', 0); @@ -1716,8 +1812,8 @@ switch ($action) { } } - if (($values['type'] == 'sql') or ($values['type'] == 'sql_graph_hbar') - or ($values['type'] == 'sql_graph_vbar') or ($values['type'] == 'sql_graph_pie') + if (($values['type'] == 'sql') || ($values['type'] == 'sql_graph_hbar') + || ($values['type'] == 'sql_graph_vbar') || ($values['type'] == 'sql_graph_pie') ) { $values['treport_custom_sql_id'] = get_parameter('id_custom'); if ($values['treport_custom_sql_id'] == 0) { @@ -1759,7 +1855,7 @@ switch ($action) { $event_filter_search = get_parameter('filter_search', ''); - // Added for events items + // Added for events items. $style['show_summary_group'] = $show_summary_group; $style['filter_event_severity'] = json_encode($filter_event_severity); $style['filter_event_type'] = json_encode($filter_event_type); @@ -1781,6 +1877,10 @@ switch ($action) { $style['label'] = ''; } break; + + default: + // Default. + break; } break; @@ -1825,6 +1925,10 @@ switch ($action) { $style['label'] = ''; } break; + + default: + // Default. + break; } $values['style'] = io_safe_input(json_encode($style)); @@ -1839,6 +1943,10 @@ switch ($action) { unset($values['type']); } break; + + default: + // Default. + break; } $result = db_process_sql_insert( @@ -1868,6 +1976,10 @@ switch ($action) { WHERE id_report = '.$idReport ); break; + + default: + // Default. + break; } if ($max === false) { @@ -1893,6 +2005,10 @@ switch ($action) { ['id_rc' => $idItem] ); break; + + default: + // Default. + break; } $resultOperationDB = true; @@ -1900,7 +2016,8 @@ switch ($action) { break; } - // If fields dont have good format + + // If fields dont have good format. else { $resultOperationDB = false; } @@ -1908,7 +2025,7 @@ switch ($action) { break; default: - if ($enterpriseEnable and $activeTab != 'advanced') { + if ($enterpriseEnable && $activeTab != 'advanced') { $resultOperationDB = reporting_enterprise_update_action(); } break; @@ -1966,7 +2083,7 @@ switch ($action) { case 'agent': case 'type': - // Sort functionality for normal console + // Sort functionality for normal console. if (!defined('METACONSOLE')) { switch ($field) { case 'module': @@ -2000,6 +2117,10 @@ switch ($action) { case 'type': $sql = 'SELECT id_rc FROM treport_content WHERE %s ORDER BY type %s'; break; + + default: + // Default. + break; } $sql = sprintf($sql, 'id_report = '.$idReport, '%s'); @@ -2011,11 +2132,15 @@ switch ($action) { case 'down': $sql = sprintf($sql, 'DESC'); break; + + default: + // Default. + break; } $ids = db_get_all_rows_sql($sql); } - // Sort functionality for metaconsole + // Sort functionality for metaconsole. else if ($config['metaconsole'] == 1) { switch ($field) { case 'agent': @@ -2033,14 +2158,14 @@ switch ($action) { foreach ($report_items as $report_item) { $connection = metaconsole_get_connection($report_item['server_name']); if (metaconsole_load_external_db($connection) != NOERR) { - // ui_print_error_message ("Error connecting to ".$server_name); + // ui_print_error_message ("Error connecting to ".$server_name);. } switch ($field) { case 'agent': $agents_name = agents_get_agents(['id_agente' => $report_item['id_agent']], 'nombre'); - // Item without agent + // Item without agent. if (!$agents_name) { $element_name = ''; } else { @@ -2052,13 +2177,17 @@ switch ($action) { case 'module': $module_name = modules_get_agentmodule_name($report_item['id_agent_module']); - // Item without module + // Item without module. if (!$module_name) { $element_name = ''; } else { $element_name = $module_name; } break; + + default: + // Default. + break; } metaconsole_restore_db(); @@ -2066,7 +2195,7 @@ switch ($action) { $temp_sort[$report_item['id_rc']] = $element_name; } - // Performes sorting + // Performes sorting. switch ($dir) { case 'up': asort($temp_sort); @@ -2075,6 +2204,10 @@ switch ($action) { case 'down': arsort($temp_sort); break; + + default: + // Default. + break; } foreach ($temp_sort as $temp_element_key => $temp_element_val) { @@ -2083,13 +2216,13 @@ switch ($action) { $i++; } - // Free resources + // Free resources. unset($temp_sort); unset($report_items); } break; - // Type case only depends of local database + // Type case only depends of local database. case 'type': $sql = 'SELECT id_rc FROM treport_content @@ -2108,10 +2241,13 @@ switch ($action) { case 'down': $sql = sprintf($sql, 'DESC'); break; + + default: + // Default. + break; } $ids = db_get_all_rows_sql($sql); - break; } } @@ -2150,6 +2286,10 @@ switch ($action) { WHERE id_rc = '.$idItem ); break; + + default: + // Default. + break; } // db_get_value_filter('order', 'treport_content', array('id_rc' => $idItem)); @@ -2161,6 +2301,10 @@ switch ($action) { case 'down': $newOrder = ($oldOrder + 1); break; + + default: + // Default. + break; } switch ($config['dbtype']) { @@ -2198,6 +2342,10 @@ switch ($action) { false ); break; + + default: + // Default. + break; } if ($resultOperationDB !== false) { @@ -2227,13 +2375,17 @@ switch ($action) { false ); break; + + default: + // Default. + break; } } break; } break; - // Added for report templates + // Added for report templates. default: if ($enterpriseEnable) { $buttons = [ @@ -2257,7 +2409,7 @@ switch ($action) { break; } - // Page header for metaconsole + // Page header for metaconsole. if ($enterpriseEnable and defined('METACONSOLE')) { // Bread crumbs ui_meta_add_breadcrumb( @@ -2269,10 +2421,10 @@ switch ($action) { ui_meta_print_page_header($nav_bar); - // Print header + // Print header. ui_meta_print_header(__('Reporting'), '', $buttons); } - // Page header for normal console + // Page header for normal console. else { ui_print_page_header($subsection, 'images/op_reporting.png', false, '', false, $buttons, false, '', 60); } @@ -2335,9 +2487,9 @@ if ($idReport != 0) { $textReportName = __('Create Custom Report'); } -// Page header for metaconsole +// Page header for metaconsole. if ($enterpriseEnable and defined('METACONSOLE')) { - // Bread crumbs + // Bread crumbs. ui_meta_add_breadcrumb( [ 'link' => 'index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&pure='.$pure, @@ -2347,7 +2499,7 @@ if ($enterpriseEnable and defined('METACONSOLE')) { ui_meta_print_page_header($nav_bar); - // Print header + // Print header. ui_meta_print_header(__('Reporting').$textReportName, '', $buttons); } else { ui_print_page_header( diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 0f0f8d3872..a72e7ee8ab 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC190402'; +$build_version = 'PC190405'; $pandora_version = 'v7.0NG.733'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index a2775f5bfb..67ad7b949c 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -434,15 +434,15 @@ function agents_get_agents( $filter_nogroup = $filter; // Get user groups - $groups = array_keys(users_get_groups($config['id_user'], $access, true)); + $groups = array_keys(users_get_groups($config['id_user'], $access, false)); // If no group specified, get all user groups - if (isset($filter['id_grupo']) === false) { + if (empty($filter['id_grupo'])) { $all_groups = true; $filter['id_grupo'] = $groups; } else if (! is_array($filter['id_grupo'])) { $all_groups = false; - // If group is specified but not allowed, return false. + // If group is specified but not allowed, return false if (! in_array($filter['id_grupo'], $groups)) { return false; } @@ -466,6 +466,11 @@ function agents_get_agents( $filter['id_group'] = $filter['id_grupo']; + if (in_array(0, $filter['id_grupo'])) { + unset($filter['id_grupo']); + unset($filter['id_group']); + } + if (!is_array($fields)) { $fields = []; $fields[0] = 'id_agente'; diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index f3dc6efde2..8c155a208f 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -8830,7 +8830,14 @@ function api_set_alert_actions($id, $id2, $other, $trash1) } $firesMin = $other['data'][2]; + if (!$firesMin) { + $firesMin = 0; + } + $firesMax = $other['data'][3]; + if (!$firesMax) { + $firesMax = 0; + } $values = [ 'id_alert_template_module' => $idAlertTemplateModule, diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index dc69af7baf..0182c2141b 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -3167,8 +3167,7 @@ function events_page_general($event) $table_general->data[] = $data; - $event['owner_user'] = $event['id_usuario']; - + // $event['owner_user'] = $event['id_usuario']; $data = []; $data[0] = __('Owner'); if (empty($event['owner_user'])) { diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index 9b19dec55a..0dbe1049bc 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -59,11 +59,11 @@ function menu_print_menu(&$menu) $allsec2 = $sec2; } - // Open list of menu + // Open list of menu. echo ''; // Use $config because a global var is required because normal - // and godmode menu are painted separately + // and godmode menu are painted separately. if (!isset($config['count_main_menu'])) { $config['count_main_menu'] = 0; } @@ -128,7 +128,7 @@ function menu_print_menu(&$menu) if (! $submenu) { $main['sub'] = []; - // Empty array won't go through foreach + // Empty array won't go through foreach. } $submenu_output = ''; @@ -140,12 +140,12 @@ function menu_print_menu(&$menu) foreach ($main['sub'] as $subsec2 => $sub) { $count_sub++; - // Init some variables + // Init some variables. $visible = false; $selected = false; $subsec2 = io_safe_output($subsec2); - // Choose valid suboptions (sec2) + // Choose valid suboptions (sec2). $check_2 = true; if (isset($sub['sub2'])) { $check_2 = false; @@ -155,7 +155,7 @@ function menu_print_menu(&$menu) continue; } - // We store the first subsection to use it if the main section has not access + // We store the first subsection to use it if the main section has not access. if ($count_sub_access == 0) { $first_sub_sec2 = $subsec2; } @@ -175,7 +175,7 @@ function menu_print_menu(&$menu) $sec2 = ' '; } - // Check if some submenu was selected to mark this (the parent) as selected + // Check if some submenu was selected to mark this (the parent) as selected. foreach (array_keys($sub['sub2']) as $key) { if (strpos($key, $sec2) !== false) { $selected_submenu2 = true; @@ -184,13 +184,13 @@ function menu_print_menu(&$menu) } } - // Create godmode option if submenu has godmode on + // Create godmode option if submenu has godmode on. if (isset($sub['subsecs'])) { // Sometimes you need to add all paths because in the // same dir are code from visual console and reports - // for example + // for example. if (is_array($sub['subsecs'])) { - // Compare each string + // Compare each string. foreach ($sub['subsecs'] as $god_path) { if (strpos($sec2, $god_path) !== false) { $selected_submenu2 = true; @@ -198,19 +198,19 @@ function menu_print_menu(&$menu) } } } else { - // If there is only a string just compare + // If there is only a string just compare. if (strpos($sec2, $sub['subsecs']) !== false) { $selected_submenu2 = true; } } } - // Set class + // Set class. if (($sec2 == $subsec2 || $allsec2 == $subsec2 || $selected_submenu2) && isset($sub[$subsec2]['options']) && ( get_parameter_get($sub[$subsec2]['options']['name']) == $sub[$subsec2]['options']['value']) ) { - // If the subclass is selected and there are options and that options value is true + // If the subclass is selected and there are options and that options value is true. $class .= 'submenu_selected selected'; $menu_selected = true; $selected = true; @@ -231,7 +231,7 @@ function menu_print_menu(&$menu) $selected = true; $visible = true; } else { - // Else it's not selected + // Else it's not selected. $class .= 'submenu_not_selected'; } @@ -239,7 +239,7 @@ function menu_print_menu(&$menu) $sub['refr'] = 0; } - // Define submenu class to draw tree image + // Define submenu class to draw tree image. if ($count_sub >= count($main['sub'])) { $sub_tree_class = 'submenu_text submenu_text_last'; } else { @@ -247,7 +247,7 @@ function menu_print_menu(&$menu) } if (isset($sub['type']) && $sub['type'] == 'direct') { - // This is an external link + // This is an external link. $submenu_output .= '
  • '; if (isset($sub['subtype']) && $sub['subtype'] == 'nolink') { @@ -258,7 +258,7 @@ function menu_print_menu(&$menu) $submenu_output .= '
    '.$sub['text'].'
    '; } } else { - // This is an internal link + // This is an internal link. if (isset($sub[$subsec2]['options'])) { $link_add = '&'.$sub[$subsec2]['options']['name'].'='.$sub[$subsec2]['options']['value']; } else { @@ -267,7 +267,7 @@ function menu_print_menu(&$menu) $submenu_output .= '
  • '; - // Ini Add icon extension + // Ini Add icon extension. $secExtension = null; if (array_key_exists('extension', $sub)) { $secExtensionBool = $sub['extension']; @@ -275,7 +275,7 @@ function menu_print_menu(&$menu) $secExtensionBool = false; } - // DISABLE SUBMENU IMAGES + // DISABLE SUBMENU IMAGES. $secExtensionBool = false; if ($secExtensionBool) { @@ -328,7 +328,7 @@ function menu_print_menu(&$menu) } } - // Print second level submenu + // Print second level submenu. if (isset($sub['sub2'])) { $submenu2_list = ''; @@ -354,7 +354,7 @@ function menu_print_menu(&$menu) $class .= ' selected'; } - // Define submenu2 class to draw tree image + // Define submenu2 class to draw tree image. if ($count_sub2 >= count($sub['sub2'])) { $sub_tree_class = 'submenu_text submenu2_text_last'; } else { @@ -372,7 +372,7 @@ function menu_print_menu(&$menu) $sub_title = ''; } - // Add submenu2 to submenu string + // Add submenu2 to submenu string. $submenu_output .= ''; @@ -382,7 +382,7 @@ function menu_print_menu(&$menu) $submenu_output .= '
  • '; } - // Choose valid section (sec) + // Choose valid section (sec). if (enterprise_hook('enterprise_acl', [$config['id_user'], $mainsec, $main['sec2']]) == false) { if ($count_sub_access > 0) { // If any susection have access but main section not, we change main link to first subsection found @@ -398,7 +398,7 @@ function menu_print_menu(&$menu) $seleccionado = ''; } - // Print out the first level + // Print out the first level. $output .= '
  • '; // onclick="location.href=\'index.php?sec='.$mainsec.'&sec2='.$main["sec2"].($main["refr"] ? '&refr='.$main["refr"] : '').'\'">'; $length = strlen(__($main['text'])); @@ -419,7 +419,7 @@ function menu_print_menu(&$menu) $length = 0; // $output .= html_print_image("include/styles/images/toggle.png", true, array("class" => "toggle", "alt" => "toogle")); if ($submenu_output != '') { - // WARNING: IN ORDER TO MODIFY THE VISIBILITY OF MENU'S AND SUBMENU'S (eg. with cookies) YOU HAVE TO ADD TO THIS ELSEIF. DON'T MODIFY THE CSS + // WARNING: IN ORDER TO MODIFY THE VISIBILITY OF MENU'S AND SUBMENU'S (eg. with cookies) YOU HAVE TO ADD TO THIS ELSEIF. DON'T MODIFY THE CSS. if ($visible || in_array('selected', $classes)) { $visible = true; } @@ -439,9 +439,9 @@ function menu_print_menu(&$menu) $menu_selected = false; } - // Finish menu + // Finish menu. echo ''; - // Invisible UL for adding border-top + // Invisible UL for adding border-top. echo ''; } @@ -541,7 +541,7 @@ function menu_add_extras(&$menu) $menu_extra['workspace']['sub']['operation/incidents/incident_detail']['text'] = __('Manage incident'); - // Duplicate extensions as sec=extension to check it from url + // Duplicate extensions as sec=extension to check it from url. foreach ($menu as $k => $m) { if (!isset($m['sub'])) { continue; @@ -585,7 +585,7 @@ function menu_get_sec($with_categories=false) if ($with_categories) { if (!$in_godmode && $k[0] == 'g') { // Hack to dont confuse with gis activated because godmode - // sec starts with g (like gismaps) + // sec starts with g (like gismaps). if ($k != 'gismaps') { $in_godmode = true; } @@ -654,17 +654,17 @@ function menu_get_sec_pages($sec, $menu_hash=false) $sec2_array = []; if (isset($sec)) { - // Get the sec2 of the main section + // Get the sec2 of the main section. $sec2_array[$menu[$sec]['sec2']] = $menu[$sec]['text']; - // Get the sec2 of the subsections + // Get the sec2 of the subsections. foreach ($menu[$sec]['sub'] as $k => $v) { - // Avoid special cases of standalone windows + // Avoid special cases of standalone windows. if (preg_match('/^javascript:/', $k) || preg_match('/\.php/', $k)) { continue; } - // If this value has various parameters, we only get the first + // If this value has various parameters, we only get the first. $k = explode('&', $k); $k = $k[0]; @@ -672,6 +672,7 @@ function menu_get_sec_pages($sec, $menu_hash=false) } } + $sec2_array = array_unique($sec2_array); return $sec2_array; } @@ -698,8 +699,8 @@ function menu_get_sec2_pages($sec, $sec2, $menu_hash=false) $sec3_array = []; - if (isset($menu[$sec]['sub']) and isset($menu[$sec]['sub'][$sec2]['sub2'])) { - // Get the sec2 of the subsections + if (isset($menu[$sec]['sub']) && isset($menu[$sec]['sub'][$sec2]['sub2'])) { + // Get the sec2 of the subsections. foreach ($menu[$sec]['sub'][$sec2]['sub2'] as $k => $v) { $sec3_array[$k] = $v['text']; } @@ -721,7 +722,7 @@ function menu_sec2_in_sec($sec, $sec2) { $sec2_array = menu_get_sec_pages($sec); - // If this value has various parameters, we only get the first + // If this value has various parameters, we only get the first. $sec2 = explode('&', $sec2); $sec2 = $sec2[0]; @@ -737,7 +738,7 @@ function menu_sec3_in_sec2($sec, $sec2, $sec3) { $sec3_array = menu_get_sec2_pages($sec, $sec2, $menu_hash = false); - // If this value has various parameters, we only get the first + // If this value has various parameters, we only get the first. $sec3 = explode('&', $sec3); $sec3 = $sec3[0]; diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 1ff0529651..502da22326 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -41,11 +41,11 @@ require_once $config['homedir'].'/include/functions_network.php'; // // CONSTANTS DEFINITIONS // // -// Priority modes +// Priority modes. define('REPORT_PRIORITY_MODE_OK', 1); define('REPORT_PRIORITY_MODE_UNKNOWN', 2); -// Status +// Status. define('REPORT_STATUS_ERR', 0); define('REPORT_STATUS_OK', 1); define('REPORT_STATUS_UNKNOWN', 2); @@ -62,7 +62,7 @@ function reporting_user_can_see_report($id_report, $id_user=null) $id_user = $config['id_user']; } - // Get Report record (to get id_group) + // Get Report record (to get id_group). $report = db_get_row('treport', 'id_report', $id_report); // Check ACL on the report to see if user has access to the report. @@ -108,6 +108,10 @@ function reporting_get_type($content) case REPORT_OLD_TYPE_SUMATORY: $content['type'] = 'sumatory'; break; + + default: + // Default. + break; } return $content['type']; @@ -205,7 +209,7 @@ function reporting_make_reporting_data( $server_name = $content['server_name']; // General reports with 0 period means last value - // Avoid to overwrite it by template value + // Avoid to overwrite it by template value. if (!empty($period) && ($content['type'] !== 'general' && $content['period'] != 0)) { $content['period'] = $period; } @@ -229,7 +233,7 @@ function reporting_make_reporting_data( if (in_array('label', $content['style'])) { if ($content['id_agent'] == 0) { - // Metaconsole connection + // Metaconsole connection. if ($metaconsole_on && $server_name != '') { $connection = metaconsole_get_connection($server_name); if (!metaconsole_load_external_db($connection)) { @@ -240,7 +244,7 @@ function reporting_make_reporting_data( array_push($agents_to_macro, modules_get_agentmodule_agent($graph_item['id_agent_module'])); if ($metaconsole_on) { - // Restore db connection + // Restore db connection. metaconsole_restore_db(); } } @@ -291,7 +295,7 @@ function reporting_make_reporting_data( $content['name'] = reporting_label_macro($items_label, $content['style']['name_label']); if ($metaconsole_on) { - // Restore db connection + // Restore db connection. metaconsole_restore_db(); } } @@ -781,6 +785,10 @@ function reporting_make_reporting_data( $pdf ); break; + + default: + // Default. + break; } $index_content++; @@ -847,7 +855,7 @@ function reporting_SLA( include_once $config['homedir'].'/include/functions_planned_downtimes.php'; $metaconsole_on = is_metaconsole(); - // checking if needed to show graph or table + // checking if needed to show graph or table. if ($content['show_graph'] == 0 || $content['show_graph'] == 1) { $show_table = 1; } else { @@ -1241,7 +1249,6 @@ function reporting_SLA( } $return['charts'] = $temp; - break; case 2: @@ -1278,7 +1285,10 @@ function reporting_SLA( } $return['charts'] = $temp; + break; + default: + // Default. break; } } @@ -1317,7 +1327,7 @@ function reporting_event_top_n( case REPORT_TOP_N_AVG: default: - // If nothing is selected then it will be shown the average data + // If nothing is selected then it will be shown the average data. $type_top_n = __('Avg'); break; } @@ -1334,7 +1344,7 @@ function reporting_event_top_n( $return['top_n'] = $content['top_n_value']; if (empty($content['subitems'])) { - // Get all the related data + // Get all the related data. $sql = sprintf( 'SELECT id_agent_module, server_name FROM treport_content_item @@ -1347,7 +1357,7 @@ function reporting_event_top_n( $tops = $content['subitems']; } - // Get chart + // Get chart. reporting_set_conf_charts( $width, $height, @@ -1371,7 +1381,7 @@ function reporting_event_top_n( $data_top = []; foreach ($tops as $key => $row) { - // Metaconsole connection + // Metaconsole connection. $server_name = $row['server_name']; if (($config['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) { $connection = metaconsole_get_connection($server_name); @@ -1401,7 +1411,7 @@ function reporting_event_top_n( case REPORT_TOP_N_AVG: default: - // If nothing is selected then it will be shown the average data + // If nothing is selected then it will be shown the average data. $value = reporting_get_agentmodule_data_average($row['id_agent_module'], $content['period']); break; } @@ -1415,7 +1425,7 @@ function reporting_event_top_n( $units[$key] = $unit; } - // Restore dbconnection + // Restore dbconnection. if (($config['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) { metaconsole_restore_db(); } @@ -1428,21 +1438,25 @@ function reporting_event_top_n( // Order to show. switch ($order_uptodown) { - // Descending + // Descending. case 1: array_multisort($data_top, SORT_DESC, $agent_name, SORT_ASC, $module_name, SORT_ASC, $id_agent_module, SORT_ASC, $units, SORT_ASC); break; - // Ascending + // Ascending. case 2: array_multisort($data_top, SORT_ASC, $agent_name, SORT_ASC, $module_name, SORT_ASC, $id_agent_module, SORT_ASC, $units, SORT_ASC); break; - // By agent name or without selection + // By agent name or without selection. case 0: case 3: array_multisort($agent_name, SORT_ASC, $data_top, SORT_ASC, $module_name, SORT_ASC, $id_agent_module, SORT_ASC, $units, SORT_ASC); break; + + default: + // Default. + break; } array_splice($data_top, $top_n_value); @@ -1458,7 +1472,7 @@ function reporting_event_top_n( $data_top_values['id_agent_module'] = $id_agent_module; $data_top_values['units'] = $units; - // Define truncate size depends the graph width + // Define truncate size depends the graph width. $truncate_size = ($width / (4 * ($config['font_size'])) - 1); if ($order_uptodown == 1 || $order_uptodown == 2) { @@ -1584,7 +1598,7 @@ function reporting_event_top_n( $ttl ); - // Display bars graph + // Display bars graph. $return['charts']['bars'] = hbar_graph( $data_hbar, $width, @@ -1609,7 +1623,7 @@ function reporting_event_top_n( $return['resume'] = null; if ($content['show_resume'] && count($data_top_values) > 0) { - // Get the very first not null value + // Get the very first not null value. $i = 0; do { $min = $data_top_values['data_top'][$i]; @@ -1689,14 +1703,14 @@ function reporting_event_report_group( $event_filter = $content['style']; $return['show_summary_group'] = $event_filter['show_summary_group']; - // filter + // Filter. $show_summary_group = $event_filter['show_summary_group']; $filter_event_severity = json_decode($event_filter['filter_event_severity'], true); $filter_event_type = json_decode($event_filter['filter_event_type'], true); $filter_event_status = json_decode($event_filter['filter_event_status'], true); $filter_event_filter_search = $event_filter['event_filter_search']; - // graphs + // Graphs. $event_graph_by_agent = $event_filter['event_graph_by_agent']; $event_graph_by_user_validator = $event_filter['event_graph_by_user_validator']; $event_graph_by_criticity = $event_filter['event_graph_by_criticity']; @@ -1858,7 +1872,7 @@ function reporting_event_report_group( metaconsole_restore_db(); } - // total_events + // total_events. if ($return['data'] != '') { $return['total_events'] = count($return['data']); } else { @@ -1911,14 +1925,14 @@ function reporting_event_report_module( $event_filter = $content['style']; $return['show_summary_group'] = $event_filter['show_summary_group']; - // filter + // Filter. $show_summary_group = $event_filter['show_summary_group']; $filter_event_severity = json_decode($event_filter['filter_event_severity'], true); $filter_event_type = json_decode($event_filter['filter_event_type'], true); $filter_event_status = json_decode($event_filter['filter_event_status'], true); $filter_event_filter_search = $event_filter['event_filter_search']; - // graphs + // Graphs. $event_graph_by_user_validator = $event_filter['event_graph_by_user_validator']; $event_graph_by_criticity = $event_filter['event_graph_by_criticity']; $event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated']; @@ -1930,7 +1944,7 @@ function reporting_event_report_module( $metaconsole_dbtable = false; } - // data events + // Data events. $data = reporting_get_module_detailed_event( $content['id_agent_module'], $content['period'], @@ -1959,7 +1973,7 @@ function reporting_event_report_module( metaconsole_restore_db(); } - // total_events + // Total_events. if ($return['data'][0]['data'] != '') { $return['total_events'] = count($return['data'][0]['data']); } else { @@ -2276,6 +2290,10 @@ function reporting_exception( $return['subtitle'] = __('Exception - Modules at critical or warning status'); $return['subtype'] = __('Modules at critical or warning status'); break; + + default: + // Default. + break; } $return['description'] = $content['description']; @@ -2286,7 +2304,7 @@ function reporting_exception( $return['resume'] = []; if (empty($content['subitems'])) { - // Get all the related data + // Get all the related data. $sql = sprintf( ' SELECT id_agent_module, server_name, operation @@ -2303,10 +2321,10 @@ function reporting_exception( if ($exceptions === false) { $return['failed'] = __('There are no Agent/Modules defined'); } else { - // Get the very first not null value + // Get the very first not null value. $i = 0; do { - // Metaconsole connection + // Metaconsole connection. $server_name = $exceptions[$i]['server_name']; if (($config['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) { $connection = metaconsole_get_connection($server_name); @@ -2340,12 +2358,16 @@ function reporting_exception( $content['period'] ); break; + + default: + // Default. + break; } } $i++; - // Restore dbconnection + // Restore dbconnection. if (($config['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) { metaconsole_restore_db(); } @@ -2357,7 +2379,7 @@ function reporting_exception( $i = 0; foreach ($exceptions as $exc) { - // Metaconsole connection + // Metaconsole connection. $server_name = $exc['server_name']; if (($config['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) { $connection = metaconsole_get_connection($server_name); @@ -6270,6 +6292,19 @@ function reporting_availability($report, $content, $date=false, $time=false) $return['resume']['avg'] = $avg; $return['resume']['max_text'] = $max_text; $return['resume']['max'] = $max; + $return['fields'] = []; + $return['fields']['total_time'] = $content['total_time']; + $return['fields']['time_failed'] = $content['time_failed']; + $return['fields']['time_in_ok_status'] = $content['time_in_ok_status']; + $return['fields']['time_in_unknown_status'] = $content['time_in_unknown_status']; + $return['fields']['time_of_not_initialized_module'] = $content['time_of_not_initialized_module']; + $return['fields']['time_of_downtime'] = $content['time_of_downtime']; + $return['fields']['total_checks'] = $content['total_checks']; + $return['fields']['checks_failed'] = $content['checks_failed']; + $return['fields']['checks_in_ok_status'] = $content['checks_in_ok_status']; + $return['fields']['unknown_checks'] = $content['unknown_checks']; + $return['fields']['agent_max_value'] = $content['agent_max_value']; + $return['fields']['agent_min_value'] = $content['agent_min_value']; return reporting_check_structure_content($return); } @@ -7443,6 +7478,21 @@ function reporting_check_structure_content($report) $report['date']['to'] = ''; } + if (!isset($report['fields'])) { + $return['fields']['total_time'] = ''; + $return['fields']['time_failed'] = ''; + $return['fields']['time_in_ok_status'] = ''; + $return['fields']['time_in_unknown_status'] = ''; + $return['fields']['time_of_not_initialized_module'] = ''; + $return['fields']['time_of_downtime'] = ''; + $return['fields']['total_checks'] = ''; + $return['fields']['checks_failed'] = ''; + $return['fields']['checks_in_ok_status'] = ''; + $return['fields']['unknown_checks'] = ''; + $return['fields']['agent_max_value'] = ''; + $return['fields']['agent_min_value'] = ''; + } + return $report; } @@ -11442,33 +11492,95 @@ function reporting_sla_is_ignored_from_array($sla_array) * * @return integer Status */ -function reporting_sla_get_status_period($sla_times, $priority_mode=REPORT_PRIORITY_MODE_OK) -{ - if ($sla_times['time_error'] > 0) { +function reporting_sla_get_status_period( + $sla, + $priority_mode=REPORT_PRIORITY_MODE_OK +) { + if ($sla['time_error'] > 0) { return REPORT_STATUS_ERR; } - if ($priority_mode == REPORT_PRIORITY_MODE_OK && $sla_times['time_ok'] > 0) { + if ($priority_mode == REPORT_PRIORITY_MODE_OK && $sla['time_ok'] > 0) { return REPORT_STATUS_OK; } - if ($sla_times['time_out'] > 0) { + if ($sla['time_out'] > 0) { return REPORT_STATUS_IGNORED; } - if ($sla_times['time_downtime'] > 0) { + if ($sla['time_downtime'] > 0) { return REPORT_STATUS_DOWNTIME; } - if ($sla_times['time_unknown'] > 0) { + if ($sla['time_unknown'] > 0) { return REPORT_STATUS_UNKNOWN; } - if ($sla_times['time_not_init'] > 0) { + if ($sla['time_not_init'] > 0) { return REPORT_STATUS_NOT_INIT; } - if ($sla_times['time_ok'] > 0) { + if ($sla['time_ok'] > 0) { + return REPORT_STATUS_OK; + } + + return REPORT_STATUS_IGNORED; +} + + +/** + * @brief Given a period, get the SLA status + * of the period compare with sla_limit. + * + * @param Array An array with all times to calculate the SLA. + * @param int Limit SLA pass for user. + * Only used for monthly, weekly And hourly report. + * + * @return integer Status + */ +function reporting_sla_get_status_period_compliance( + $sla, + $sla_limit +) { + global $config; + + $time_compliance = ( + $sla['time_ok'] + $sla['time_unknown'] + $sla['time_downtime'] + ); + + $time_total_working = ( + $time_compliance + $sla['time_error'] + ); + + $time_compliance = ($time_compliance == 0) ? 0 : (($time_compliance / $time_total_working) * 100); + + if ($sla['time_error'] > 0 && ($time_compliance < $sla_limit)) { + return REPORT_STATUS_ERR; + } + + if ($priority_mode == REPORT_PRIORITY_MODE_OK + && $sla['time_ok'] > 0 && ($time_compliance >= $sla_limit) + ) { + return REPORT_STATUS_OK; + } + + if ($sla['time_out'] > 0 && ($time_compliance < $sla_limit)) { + return REPORT_STATUS_IGNORED; + } + + if ($sla['time_downtime'] > 0 && ($time_compliance < $sla_limit)) { + return REPORT_STATUS_DOWNTIME; + } + + if ($sla['time_unknown'] > 0 && ($time_compliance < $sla_limit)) { + return REPORT_STATUS_UNKNOWN; + } + + if ($sla['time_not_init'] > 0 && ($time_compliance < $sla_limit)) { + return REPORT_STATUS_NOT_INIT; + } + + if ($sla['time_ok'] > 0 && ($time_compliance >= $sla_limit)) { return REPORT_STATUS_OK; } diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index 7265c721ec..dc6010e34a 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -2907,7 +2907,6 @@ function reporting_html_availability($table, $item, $pdf=0) io_safe_output($style), true ); - $same_agent_in_resume = ''; global $config; @@ -2927,32 +2926,62 @@ function reporting_html_availability($table, $item, $pdf=0) $table1->head[1] = __('Module'); } - $table1->head[2] = __('Total time'); - $table1->head[3] = __('Time failed'); - $table1->head[4] = __('Time OK'); - $table1->head[5] = __('Time Uknown'); - $table1->head[6] = __('Time Not Init Module'); - $table1->head[7] = __('Time Downtime'); + if ($item['fields']['total_time']) { + $table1->head[2] = __('Total time'); + } else { + $table1->head[2] = __(''); + } + + if ($item['fields']['time_failed']) { + $table1->head[3] = __('Time failed'); + } else { + $table1->head[3] = __(''); + } + + if ($item['fields']['time_in_ok_status']) { + $table1->head[4] = __('Time OK'); + } else { + $table1->head[4] = __(''); + } + + if ($item['fields']['time_in_unknown_status']) { + $table1->head[5] = __('Time Unknown'); + } else { + $table1->head[5] = __(''); + } + + if ($item['fields']['time_of_not_initialized_module']) { + $table1->head[6] = __('Time Not Init Module'); + } else { + $table1->head[6] = __(''); + } + + if ($item['fields']['time_of_downtime']) { + $table1->head[7] = __('Time Downtime'); + } else { + $table1->head[7] = __(''); + } + $table1->head[8] = __('% Ok'); $table1->headstyle = []; $table1->headstyle[0] = 'text-align: left'; $table1->headstyle[1] = 'text-align: left'; - $table1->headstyle[2] = 'text-align: right'; - $table1->headstyle[3] = 'text-align: right'; - $table1->headstyle[4] = 'text-align: right'; - $table1->headstyle[5] = 'text-align: right'; - $table1->headstyle[6] = 'text-align: right'; + $table1->headstyle[2] = 'text-align: center'; + $table1->headstyle[3] = 'text-align: center'; + $table1->headstyle[4] = 'text-align: center'; + $table1->headstyle[5] = 'text-align: center'; + $table1->headstyle[6] = 'text-align: center'; $table1->headstyle[7] = 'text-align: right'; $table1->headstyle[8] = 'text-align: right'; $table1->style[0] = 'text-align: left'; $table1->style[1] = 'text-align: left'; - $table1->style[2] = 'text-align: right'; - $table1->style[3] = 'text-align: right'; - $table1->style[4] = 'text-align: right'; - $table1->style[5] = 'text-align: right'; - $table1->style[6] = 'text-align: right'; + $table1->style[2] = 'text-align: center'; + $table1->style[3] = 'text-align: center'; + $table1->style[4] = 'text-align: center'; + $table1->style[5] = 'text-align: center'; + $table1->style[6] = 'text-align: center'; $table1->style[7] = 'text-align: right'; $table1->style[8] = 'text-align: right'; @@ -2970,10 +2999,29 @@ function reporting_html_availability($table, $item, $pdf=0) $table2->head[1] = __('Module'); } - $table2->head[2] = __('Total checks'); - $table2->head[3] = __('Checks failed'); - $table2->head[4] = __('Checks OK'); - $table2->head[5] = __('Checks Uknown'); + if ($item['fields']['total_checks']) { + $table2->head[2] = __('Total checks'); + } else { + $table2->head[2] = __(''); + } + + if ($item['fields']['checks_failed']) { + $table2->head[3] = __('Checks failed'); + } else { + $table2->head[3] = __(''); + } + + if ($item['fields']['checks_in_ok_status']) { + $table2->head[4] = __('Checks OK'); + } else { + $table2->head[4] = __(''); + } + + if ($item['fields']['unknown_checks']) { + $table2->head[5] = __('Checks Uknown'); + } else { + $table2->head[5] = __(''); + } $table2->headstyle = []; $table2->headstyle[0] = 'text-align: left'; @@ -2995,69 +3043,97 @@ function reporting_html_availability($table, $item, $pdf=0) $table_row[] = $row['agent']; $table_row[] = $row['availability_item']; - if ($row['time_total'] != 0) { + if ($row['time_total'] != 0 && $item['fields']['total_time']) { $table_row[] = human_time_description_raw( $row['time_total'], true ); - } else { + } else if ($row['time_total'] == 0 && $item['fields']['total_time']) { $table_row[] = '--'; - } + } else { + $table_row[] = ''; + }; - if ($row['time_error'] != 0) { + if ($row['time_error'] != 0 && $item['fields']['time_failed']) { $table_row[] = human_time_description_raw( $row['time_error'], true ); - } else { + } else if ($row['time_error'] == 0 && $item['fields']['time_failed']) { $table_row[] = '--'; - } + } else { + $table_row[] = ''; + }; - if ($row['time_ok'] != 0) { + if ($row['time_ok'] != 0 && $item['fields']['time_in_ok_status']) { $table_row[] = human_time_description_raw( $row['time_ok'], true ); - } else { + } else if ($row['time_ok'] == 0 && $item['fields']['time_in_ok_status']) { $table_row[] = '--'; - } + } else { + $table_row[] = ''; + }; - if ($row['time_unknown'] != 0) { + if ($row['time_unknown'] != 0 && $item['fields']['time_in_unknown_status']) { $table_row[] = human_time_description_raw( $row['time_unknown'], true ); - } else { + } else if ($row['time_unknown'] == 0 && $item['fields']['time_in_unknown_status']) { $table_row[] = '--'; - } + } else { + $table_row[] = ''; + }; - if ($row['time_not_init'] != 0) { + if ($row['time_not_init'] != 0 && $item['fields']['time_of_not_initialized_module']) { $table_row[] = human_time_description_raw( $row['time_not_init'], true ); - } else { + } else if ($row['time_not_init'] == 0 && $item['fields']['time_of_not_initialized_module']) { $table_row[] = '--'; - } + } else { + $table_row[] = ''; + }; - if ($row['time_downtime'] != 0) { + if ($row['time_downtime'] != 0 && $item['fields']['time_of_downtime']) { $table_row[] = human_time_description_raw( $row['time_downtime'], true ); - } else { + } else if ($row['time_downtime'] == 0 && $item['fields']['time_of_downtime']) { $table_row[] = '--'; - } + } else { + $table_row[] = ''; + }; $table_row[] = ''.sla_truncate($row['SLA'], $config['graph_precision']).'%'; $table_row2 = []; $table_row2[] = $row['agent']; $table_row2[] = $row['availability_item']; - $table_row2[] = $row['checks_total']; - $table_row2[] = $row['checks_error']; - $table_row2[] = $row['checks_ok']; - $table_row2[] = $row['checks_unknown']; + if ($item['fields']['total_checks']) { + $table_row2[] = $row['checks_total']; + } else { + $table_row2[] = ''; + }; + if ($item['fields']['checks_failed']) { + $table_row2[] = $row['checks_error']; + } else { + $table_row2[] = ''; + }; + if ($item['fields']['checks_in_ok_status']) { + $table_row2[] = $row['checks_ok']; + } else { + $table_row2[] = ''; + }; + if ($item['fields']['unknown_checks']) { + $table_row2[] = $row['checks_unknown']; + } else { + $table_row2[] = ''; + }; $table1->data[] = $table_row; $table2->data[] = $table_row2; @@ -3096,7 +3172,7 @@ function reporting_html_availability($table, $item, $pdf=0) if ($item['resume']['resume'] && !empty($item['data'])) { $table1->width = '99%'; $table1->data = []; - if ((strpos($item['resume']['min_text'], $same_agent_in_resume) === false)) { + if (empty($same_agent_in_resume) || (strpos($item['resume']['min_text'], $same_agent_in_resume) === false)) { $table1->head = []; $table1->head['max_text'] = __('Agent max value'); $table1->head['max'] = __('Max Value'); @@ -3131,6 +3207,19 @@ function reporting_html_availability($table, $item, $pdf=0) ).'%', 'avg' => ''.sla_truncate($item['resume']['avg'], $config['graph_precision']).'%', ]; + if ($item['fields']['agent_max_value'] == false) { + $table1->head['max_text'] = ''; + $table1->data[0]['max_text'] = ''; + $table1->head['max'] = ''; + $table1->data[0]['max'] = ''; + } + + if ($item['fields']['agent_min_value'] == false) { + $table1->head['min_text'] = ''; + $table1->data[0]['min_text'] = ''; + $table1->head['min'] = ''; + $table1->data[0]['min'] = ''; + } if ($pdf === 0) { $table->colspan[3][0] = 3; diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index 7865a1c78a..b2a4a98b36 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -1736,10 +1736,6 @@ function ui_process_page_head($string, $bitfield) // Include countdown library $config['jquery']['countdown'] = 'include/javascript/jquery.countdown.js'; - // Include timezone user map library - $config['jquery']['OpenLayers'] = 'include/javascript/OpenLayers.js'; - $config['jquery']['jquery.timezone-picker'] = 'include/javascript/jquery.timezone-picker.js'; - // Then add each script as necessary $loaded = ['']; foreach ($config['jquery'] as $name => $filename) { diff --git a/pandora_console/install.php b/pandora_console/install.php index 0ddd09fd0b..b7d52c5106 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
    '."\n\t"; +echo ''."\n\t"; ?>