pandorafms/pandora_console/include/functions_ui.php

6664 lines
201 KiB
PHP
Raw Normal View History

<?php
2009-08-24 Miguel de Dios <miguel.dedios@artica.es> * include/functions_menu.php, include/functions_html.php, include/functions_events.php, include/functions_messages.php, include/functions_modules.php, include/functions_exportserver.php, include/functions_reporting.php, include/functions_filemanager.php, include/pchart_graph.php, include/pandora_graph.php, include/auth/dev.php, include/auth/ldap.php, include/auth/mysql.php, include/config.inc.php, include/functions_networkmap.php, include/functions_servers.php, include/FusionCharts/FusionCharts_Gen.php, include/FusionCharts/FusionCharts.php, include/functions_network_profiles.php, include/gettext.php, include/functions_network_components.php, include/functions_visual_map.php, include/fgraph2.php, include/Image/image_functions.php, include/functions_config.php, include/help/en/help_plugin_parameters.php, include/help/en/help_snmpcommunity.php, include/help/en/help_wmiquery.php, include/help/en/help_postprocess.php, include/help/en/help_prediction_source_module.php, include/help/en/help_date_format.php, include/help/en/help_recontask.php, include/help/en/help_alert-matches.php, include/help/en/help_tcp_send.php, include/help/en/help_wmifield.php, include/help/en/help_duplicateconfig.php, include/help/en/help_agent_status.php, include/help/en/help_manage_alerts.php, include/help/en/help_wmikey.php, include/help/en/help_alert_type.php, include/help/en/help_network_component.php, include/help/en/help_time_stamp-comparation.php, include/help/en/help_eventview.php, include/help/en/help_timesource.php, include/help/en/help_alert_validation.php, include/help/en/help_map_builder.php, include/help/en/help_alert_recovery.php, include/help/en/help_module_type.php, include/help/en/help_planned_downtime.php, include/help/en/help_serverlag.php, include/help/en/help_alerts.php, include/help/en/help_snmpwalk.php, include/help/en/help_module_definition.php, include/help/en/help_plugin_definition.php, include/help/en/help_wminamespace.php, include/help/en/help_snmpoid.php include/help/en/help_manageconfig.php, include/help/es/help_alert_validation.php, include/help/es/help_plugin_parameters.php, include/help/es/help_snmpcommunity.php, include/help/es/help_wmiquery.php, include/help/es/help_map_builder.php, include/help/es/help_postprocess.php, include/help/es/help_date_format.php, include/help/es/help_alert_recovery.php, include/help/es/help_prediction_source_module.php, include/help/es/help_module_type.php, include/help/es/help_planned_downtime.php, include/help/es/help_alert-matches.php, include/help/es/help_recontask.php, include/help/es/help_alerts.php, include/help/es/help_serverlag.php, include/help/es/help_snmpwalk.php, include/help/es/help_module_definition.php, include/help/es/help_tcp_send.php, include/help/es/help_duplicateconfig.php, include/help/es/help_wmifield.php, include/help/es/help_manage_alerts.php, include/help/es/help_wmikey.php, include/help/es/help_plugin_definition.php, include/help/es/help_alert_type.php, include/help/es/help_snmpoid.php, include/help/es/help_wminamespace.php, include/help/es/help_network_component.php, include/help/es/help_time_stamp-comparation.php, include/help/es/help_manageconfig.php, include/help/es/help_timesource.php, include/config_process.php, include/functions_ui.php, include/htmlawed.php, include/functions_custom_graphs.php, include/fgraph.php, include/functions_incidents.php, include/functions.php, include/functions_agents.php, include/functions_db.php, include/functions_themes.php, include/streams.php, include/functions_fsgraph.php, include/functions_alerts.php, include/functions_reports.php, include/functions_extensions.php, include/functions_ui_renders.php: change comments blocks for delete the warnings to construct phpDoc Files, give a struct and order in the phpDoc files. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1881 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-08-25 19:39:28 +02:00
/**
2019-05-28 09:48:09 +02:00
* Library. User interface functions.
*
* @category Library.
* @package Pandora FMS
* @subpackage User interface.
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
2020-11-27 13:52:35 +01:00
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
2019-05-28 09:48:09 +02:00
* 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.
* ============================================================================
2009-08-24 Miguel de Dios <miguel.dedios@artica.es> * include/functions_menu.php, include/functions_html.php, include/functions_events.php, include/functions_messages.php, include/functions_modules.php, include/functions_exportserver.php, include/functions_reporting.php, include/functions_filemanager.php, include/pchart_graph.php, include/pandora_graph.php, include/auth/dev.php, include/auth/ldap.php, include/auth/mysql.php, include/config.inc.php, include/functions_networkmap.php, include/functions_servers.php, include/FusionCharts/FusionCharts_Gen.php, include/FusionCharts/FusionCharts.php, include/functions_network_profiles.php, include/gettext.php, include/functions_network_components.php, include/functions_visual_map.php, include/fgraph2.php, include/Image/image_functions.php, include/functions_config.php, include/help/en/help_plugin_parameters.php, include/help/en/help_snmpcommunity.php, include/help/en/help_wmiquery.php, include/help/en/help_postprocess.php, include/help/en/help_prediction_source_module.php, include/help/en/help_date_format.php, include/help/en/help_recontask.php, include/help/en/help_alert-matches.php, include/help/en/help_tcp_send.php, include/help/en/help_wmifield.php, include/help/en/help_duplicateconfig.php, include/help/en/help_agent_status.php, include/help/en/help_manage_alerts.php, include/help/en/help_wmikey.php, include/help/en/help_alert_type.php, include/help/en/help_network_component.php, include/help/en/help_time_stamp-comparation.php, include/help/en/help_eventview.php, include/help/en/help_timesource.php, include/help/en/help_alert_validation.php, include/help/en/help_map_builder.php, include/help/en/help_alert_recovery.php, include/help/en/help_module_type.php, include/help/en/help_planned_downtime.php, include/help/en/help_serverlag.php, include/help/en/help_alerts.php, include/help/en/help_snmpwalk.php, include/help/en/help_module_definition.php, include/help/en/help_plugin_definition.php, include/help/en/help_wminamespace.php, include/help/en/help_snmpoid.php include/help/en/help_manageconfig.php, include/help/es/help_alert_validation.php, include/help/es/help_plugin_parameters.php, include/help/es/help_snmpcommunity.php, include/help/es/help_wmiquery.php, include/help/es/help_map_builder.php, include/help/es/help_postprocess.php, include/help/es/help_date_format.php, include/help/es/help_alert_recovery.php, include/help/es/help_prediction_source_module.php, include/help/es/help_module_type.php, include/help/es/help_planned_downtime.php, include/help/es/help_alert-matches.php, include/help/es/help_recontask.php, include/help/es/help_alerts.php, include/help/es/help_serverlag.php, include/help/es/help_snmpwalk.php, include/help/es/help_module_definition.php, include/help/es/help_tcp_send.php, include/help/es/help_duplicateconfig.php, include/help/es/help_wmifield.php, include/help/es/help_manage_alerts.php, include/help/es/help_wmikey.php, include/help/es/help_plugin_definition.php, include/help/es/help_alert_type.php, include/help/es/help_snmpoid.php, include/help/es/help_wminamespace.php, include/help/es/help_network_component.php, include/help/es/help_time_stamp-comparation.php, include/help/es/help_manageconfig.php, include/help/es/help_timesource.php, include/config_process.php, include/functions_ui.php, include/htmlawed.php, include/functions_custom_graphs.php, include/fgraph.php, include/functions_incidents.php, include/functions.php, include/functions_agents.php, include/functions_db.php, include/functions_themes.php, include/streams.php, include/functions_fsgraph.php, include/functions_alerts.php, include/functions_reports.php, include/functions_extensions.php, include/functions_ui_renders.php: change comments blocks for delete the warnings to construct phpDoc Files, give a struct and order in the phpDoc files. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1881 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-08-25 19:39:28 +02:00
*/
2019-05-28 09:48:09 +02:00
// Begin.
2021-05-28 13:47:14 +02:00
global $config;
2019-05-28 09:48:09 +02:00
// Check to avoid error when load this library in error screen situations.
if (isset($config['homedir'])) {
include_once $config['homedir'].'/include/functions_agents.php';
include_once $config['homedir'].'/include/functions_modules.php';
include_once $config['homedir'].'/include/functions.php';
include_once $config['homedir'].'/include/functions_groups.php';
include_once $config['homedir'].'/include/functions_users.php';
include_once $config['homedir'].'/include/functions_html.php';
}
* include/functions_graph.php include/functions_html.php include/functions_messages.php include/db/postgresql.php include/db/mysql.php include/db/oracle.php include/functions_reporting.php include/functions_filemanager.php include/functions_gis.php include/auth/ldap.php include/auth/mysql.php include/functions_networkmap.php include/functions_network_components.php include/ajax/skins.ajax.php include/ajax/reporting.ajax.php include/ajax/visual_console_builder.ajax.php include/ajax/alert_list.ajax.php include/ajax/module.php include/functions_config.php include/functions_api.php include/help/en/help_timesource.php include/help/es/help_timesource.php include/help/ja/help_timesource.php include/config_process.php include/functions_ui.php include/functions_custom_graphs.php include/fgraph.php include/functions_incidents.php include/api.php include/functions_reports.php include/functions_ui_renders.php extensions/insert_data.php extensions/system_info.php extensions/extension_uploader.php extensions/pandora_logs.php extensions/agents_modules.php extensions/update_manager.php extensions/ssh_console.php extensions/dbmanager.php extensions/vnc_view.php extensions/resource_registration.php extensions/resource_exportation.php extensions/users_connected.php extensions/module_groups.php extensions/update_manager/load_updatemanager.php extensions/update_manager/lib/libupdate_manager_client.php extensions/update_manager/lib/libupdate_manager.php extensions/update_manager/lib/libupdate_manager_components.php extensions/update_manager/lib/libupdate_manager_updates.php extensions/update_manager/settings.php extensions/update_manager/main.php extensions/plugin_registration.php operation/incidents/incident.php operation/incidents/incident_detail.php operation/incidents/incident_statistics.php operation/search_modules.php operation/visual_console/render_view.php operation/visual_console/index.php operation/extensions.php operation/agentes/status_monitor.php operation/agentes/export_csv.php operation/agentes/estado_ultimopaquete.php operation/agentes/datos_agente.php operation/agentes/alerts_status.php operation/agentes/estado_generalagente.php operation/agentes/custom_fields.php operation/agentes/estado_agente.php operation/agentes/networkmap.topology.php operation/agentes/networkmap.groups.php operation/agentes/sla_view.php operation/agentes/exportdata.php operation/agentes/gis_view.php operation/agentes/estado_monitores.php operation/agentes/ver_agente.php operation/agentes/graphs.php operation/agentes/agent_fields.php operation/agentes/tactical.php operation/agentes/group_view.php operation/agentes/networkmap.php operation/agentes/stat_win.php operation/servers/view_server.php operation/servers/view_server_detail.php operation/menu.php operation/search_agents.php operation/search_graphs.php operation/snmpconsole/snmp_view.php operation/users/user_edit.php operation/gis_maps/render_view.php operation/gis_maps/ajax.php operation/integria_incidents/incident.php operation/integria_incidents/incident_detail.php operation/integria_incidents/incident_statistics.php operation/events/event_statistics.php operation/events/events_rss.php operation/events/export_csv.php operation/events/sound_events.php operation/events/events_validate.php operation/events/events_list.php operation/events/events_marquee.php operation/events/events.php operation/search_alerts.php operation/messages/message.php operation/reporting/reporting_xml.php operation/reporting/reporting_viewer.php operation/reporting/graph_viewer.php operation/search_reports.php operation/search_maps.php operation/search_users.php extras/pandora_diag.php mobile/operation/agents/monitor_status.php mobile/operation/agents/view_agents.php mobile/operation/agents/view_alerts.php mobile/operation/agents/group_view.php mobile/operation/events/events.php mobile/index.php general/error_authconfig.php general/links_menu.php general/logon_ok.php general/error_dbconfig.php general/ui/agents_list.php general/header.php godmode/groups/modu_group_list.php godmode/groups/configure_group.php godmode/groups/configure_modu_group.php godmode/groups/group_list.php godmode/admin_access_logs.php godmode/db/db_main.php godmode/db/db_audit.php godmode/db/db_sanity.php godmode/db/db_refine.php godmode/db/db_info.php godmode/db/db_event.php godmode/db/db_purge.php godmode/extensions.php godmode/agentes/agent_template.php godmode/agentes/module_manager_editor_common.php godmode/agentes/fields_manager.php godmode/agentes/agent_conf_gis.php godmode/agentes/module_manager_editor_prediction.php godmode/agentes/module_manager.php godmode/agentes/modificar_agente.php godmode/agentes/configurar_agente.php godmode/agentes/configure_field.php godmode/agentes/module_manager_editor.php godmode/agentes/planned_downtime.php godmode/agentes/manage_config_remote.php godmode/agentes/agent_manager.php godmode/servers/recon_script.php godmode/servers/plugin.php godmode/servers/manage_recontask.php godmode/servers/modificar_server.php godmode/servers/manage_recontask_form.php godmode/alerts/alert_list.list.php godmode/alerts/configure_alert_compound.php godmode/alerts/alert_compounds.php godmode/alerts/alert_list.php godmode/alerts/configure_alert_template.php godmode/alerts/alert_templates.php godmode/alerts/configure_alert_action.php godmode/alerts/configure_alert_command.php godmode/alerts/alert_actions.php godmode/alerts/alert_list.builder.php godmode/alerts/alert_commands.php godmode/setup/file_manager.php godmode/setup/os.list.php godmode/setup/news.php godmode/setup/gis_step_2.php godmode/setup/links.php godmode/setup/setup.php godmode/setup/os.php godmode/setup/performance.php godmode/setup/setup_auth.php godmode/setup/gis.php godmode/setup/os.builder.php godmode/setup/setup_visuals.php godmode/snmpconsole/snmp_alert.php godmode/snmpconsole/snmp_filters.php godmode/users/user_list.php godmode/users/configure_profile.php godmode/gis_maps/configure_gis_map.php godmode/gis_maps/index.php godmode/massive/massive_add_alerts.php godmode/massive/massive_copy_modules.php godmode/massive/massive_delete_agents.php godmode/massive/massive_enable_disable_alerts.php godmode/massive/massive_operations.php godmode/massive/massive_delete_profiles.php godmode/massive/massive_edit_agents.php godmode/massive/massive_delete_action_alerts.php godmode/massive/massive_delete_modules.php godmode/massive/massive_add_profiles.php godmode/massive/massive_delete_alerts.php godmode/massive/massive_edit_modules.php godmode/massive/massive_standby_alerts.php godmode/massive/massive_add_action_alerts.php godmode/modules/manage_network_components_form.php godmode/modules/manage_nc_groups_form.php godmode/modules/manage_network_templates.php godmode/modules/module_list.php godmode/modules/manage_network_components_form_common.php godmode/modules/manage_network_components_form_network.php godmode/modules/manage_network_templates_form.php godmode/modules/manage_network_components_form_wmi.php godmode/modules/manage_network_components.php godmode/modules/manage_nc_groups.php godmode/reporting/visual_console_builder.wizard.php godmode/reporting/graph_builder.main.php godmode/reporting/reporting_builder.list_items.php godmode/reporting/visual_console_builder.php godmode/reporting/reporting_builder.preview.php godmode/reporting/reporting_builder.main.php godmode/reporting/visual_console_builder.data.php godmode/reporting/visual_console_builder.elements.php godmode/reporting/graph_builder.php godmode/reporting/visual_console_builder.preview.php godmode/reporting/graph_builder.graph_editor.php godmode/reporting/reporting_builder.php godmode/reporting/visual_console_builder.editor.php godmode/reporting/reporting_builder.item_editor.php godmode/reporting/map_builder.php godmode/reporting/graphs.php godmode/reporting/graph_builder.preview.php include/functions_db.php: Added some includes and functions of this code have "db_" prefix. * include/functions.php: Moved function check_login(), check_acl(), dame_nombre_pluginid(), get_os_name() from functions_db.php to functions.php. * include/functions_groups.php: Moved functions get_childrens(), safe_acl_group() and get_parents(), give_disabled_group(), isAllGroups(), get_group_icon(), get_all_groups(), get_id_groups_recursive(), get_user_groups_tree_recursive(), get_group_status(), get_group_name(), get_group_users() from functions_db.php to this code. * include/functions_profile.php: New library with profile functions. Moved functions get_profile_name(), get_profiles(), create_user_profile(), delete_user_profile(), delete_profile() from functions_db.php to this code. Added new parameter in function get_profile() to retrieve profiles with filter conditions applied. * include/functions_users.php: New library with users functions. Moved functions get_users_info(), get_all_model_groups(), get_user_groups(), get_user_groups_tree(), get_user_first_group(), user_access_to_agent() from funtions_db.php to this code. * godmode/users/configure_user.php: Changed get_profile_filter() function to get_profile(). * include/functions_agents.php: Moved functions get_group_agents(), get_agent_modules(), get_agent_module_id(), get_agent_id(), get_agent_name(), get_agent_modules_data_count(), check_alert_fired(), get_agent_interval(), get_agent_os(), give_agentmodule_flag(), agent_add_address(), agent_delete_address(), get_agent_address(), get_agent_with_ip(), get_agent_addresses(), get_agent_status(), delete_agent(), get_agentmodule_group(), get_agent_group() from functions_db.php to this code. * include/functions_modules.php: Moved functions get_agentmodule(), get_agentmodule_id(), get_agentmodule_is_init(), get_agent_modules_count(), get_module_type_name(), get_module_type_icon(), get_agentmodule_agent(), get_agentmodule_agent_name(), get_agentmodule_name(), get_agentmodule_type(), get_monitor_downs_in_period(), get_monitor_last_down_timestamp_in_period(), get_monitors_in_group(), get_monitors_in_agent(), get_monitors_down(), get_moduletype_name(), get_moduletype_description(), get_moduletypes(), get_module_interval(), show_icon_type(), give_modulecategory_name(), give_agent_id_from_module_id(), get_module_status(), get_agent_module_last_value(), get_previous_data(), get_agentmodule_modulegroup(), get_modulegroups(), get_modulegroup_name() from functions_db.php to this code. * include/functions_alerts.php: Moved functions get_alert_type(), get_agent_alert_fired(), get_module_alert_fired(), get_alert_fires_in_period(), get_group_alerts(), get_alerts_fired(), get_alert_last_fire_timestamp_in_period(), get_agentmodule_status(), get_agentmodule_last_status() from functions_db.php to this code. * include/functions_exportserver.php: Moved function dame_nombre_servidorexportacion() from functions_db.php to this code. * include/functions_events.php: Moved functions get_group_events(), get_agent_events(), get_module_events() from functions_db.php to this code. * include/functions_servers.php: Moved functions get_server_name(), show_server_type(), check_server_status(), server_status() from functions_db.php to this code. * include/functions_network_profiles.php: Moved function get_networkprofile_name() from functions_db.php to this code. * include/functions_visual_map.php: Moved functions get_layoutdata_x(), get_layoutdata_y() from fucntions_db.php to this code. * include/functions_io.php: Moved function __() from functions_db.php to this code. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4258 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2011-04-19 20:42:49 +02:00
2019-05-28 09:48:09 +02:00
/**
* Transform bbcode to HTML and truncate log.
2019-05-28 09:48:09 +02:00
*
* @param string $text Text.
* @param array $allowed_tags Allowed_tags.
*
* @return string HTML.
*/
function ui_bbcode_to_html($text, $allowed_tags=['[url]'])
{
if (array_search('[url]', $allowed_tags) !== false || a) {
// Replace bbcode format [url=www.example.org] String [/url] with or without http and slashes
preg_match('/\[url(?|](((?:https?:\/\/)?[^[]+))|(?:=[\'"]?((?:https?:\/\/)?[^]]+?)[\'"]?)](.+?))\[\/url]/', $text, $matches);
if ($matches) {
$url = $matches[1];
// Truncate text
$t_text = ui_print_truncate_text($matches[2]);
// If link hasn't http, add it.
if (preg_match('/https?:\/\//', $text)) {
$return = '<a target="_blank" rel="noopener noreferrer" href="'.$matches[1].'">'.$t_text.'</a>';
} else {
$return = '<a target="_blank" rel="noopener noreferrer" href="http://'.$matches[1].'">'.$t_text.'</a>';
}
2019-06-21 16:26:13 +02:00
} else {
$return = ui_print_truncate_text($text);
2019-06-21 16:26:13 +02:00
}
}
return $return;
}
/**
* Truncate a text to num chars (pass as parameter) and if flag show tooltip is
* true the html artifal to show the tooltip with rest of text.
*
* @param string $text The text to truncate.
* @param mixed $numChars Number chars (-3 for char "[...]") max the text. Or the strings "agent_small", "agent_medium", "module_small", "module_medium", "description" or "generic" for to take the values from user config.
* @param boolean $showTextInAToopTip Flag to show the tooltip.
* @param boolean $return Flag to return as string or not.
* @param boolean $showTextInTitle Flag to show the text on title.
* @param string $suffix String at the end of a strimmed string.
* @param string $style Style associated to the text.
2011-04-13 Juan Manuel Ramon <juanmanuel.ramon@artica.es> * include/functions_events.php include/functions_html.php include/functions_modules.php include/functions_reporting.php include/functions_filemanager.php include/functions_gis.php include/functions_networkmap.php include/functions_visual_map.php include/ajax/reporting.ajax.php include/help/en/help_timesource.php include/help/es/help_timesource.php include/help/ja/help_timesource.php include/functions_ui.php include/functions.php include/functions_db.php include/functions_ui_renders.php index.php extensions/insert_data.php extensions/system_info.php extensions/extension_uploader.php extensions/pandora_logs.php extensions/agents_modules.php extensions/dbmanager.php extensions/resource_registration.php extensions/resource_exportation.php extensions/users_connected.php extensions/module_groups.php extensions/update_manager/settings.php extensions/update_manager/main.php extensions/plugin_registration.php operation/incidents/incident.php operation/incidents/incident.files.php operation/incidents/incident_detail.php operation/incidents/incident.workunits.php operation/incidents/incident.list.php operation/incidents/incident_statistics.php operation/search_modules.php operation/visual_console/render_view.php operation/visual_console/index.php operation/extensions.php operation/agentes/status_monitor.php operation/agentes/alerts_status.php operation/agentes/datos_agente.php operation/agentes/estado_ultimopaquete.php operation/agentes/custom_fields.php operation/agentes/estado_generalagente.php operation/agentes/networkmap.topology.php operation/agentes/estado_agente.php operation/agentes/alerts_status.functions.php operation/agentes/networkmap.groups.php operation/agentes/bulbs.php operation/agentes/sla_view.php operation/agentes/exportdata.php operation/agentes/gis_view.php operation/agentes/estado_monitores.php operation/agentes/ver_agente.php operation/agentes/graphs.php operation/agentes/agent_fields.php operation/agentes/tactical.php operation/agentes/group_view.php operation/agentes/networkmap.php operation/agentes/stat_win.php operation/servers/view_server.php operation/servers/view_server_detail.php operation/search_agents.php operation/search_graphs.php operation/snmpconsole/snmp_view.php operation/users/user_edit.php operation/gis_maps/render_view.php operation/gis_maps/ajax.php operation/gis_maps/index.php operation/integria_incidents/incident.php operation/integria_incidents/incident.files.php operation/integria_incidents/incident_detail.php operation/integria_incidents/incident.workunits.php operation/integria_incidents/incident.list.php operation/integria_incidents/incident_statistics.php operation/events/event_statistics.php operation/events/events_list.php operation/events/events.php operation/search_alerts.php operation/messages/message.php operation/reporting/reporting_viewer.php operation/reporting/graph_viewer.php operation/reporting/custom_reporting.php operation/search_reports.php operation/search_maps.php operation/search_results.php operation/search_users.php extras/pandora_diag.php mobile/operation/agents/monitor_status.php mobile/operation/agents/view_agents.php mobile/operation/agents/view_alerts.php mobile/operation/events/events.php mobile/operation/servers/view_servers.php mobile/include/functions_web.php general/footer.php general/noaccess.php general/logon_ok.php general/main_menu.php general/ui/agents_list.php general/header.php godmode/groups/modu_group_list.php godmode/groups/configure_group.php godmode/groups/configure_modu_group.php godmode/groups/group_list.php godmode/admin_access_logs.php godmode/db/db_main.php godmode/db/db_audit.php godmode/db/db_sanity.php godmode/db/db_refine.php godmode/db/db_info.php godmode/db/db_event.php godmode/db/db_purge.php godmode/extensions.php godmode/agentes/module_manager_editor_common.php godmode/agentes/module_manager_editor_network.php godmode/agentes/fields_manager.php godmode/agentes/module_manager_editor_wmi.php godmode/agentes/module_manager_editor_plugin.php godmode/agentes/module_manager_editor_prediction.php godmode/agentes/agent_conf_gis.php godmode/agentes/module_manager.php godmode/agentes/modificar_agente.php godmode/agentes/configurar_agente.php godmode/agentes/configure_field.php godmode/agentes/module_manager_editor.php godmode/agentes/planned_downtime.php godmode/agentes/manage_config_remote.php godmode/agentes/agent_manager.php godmode/servers/recon_script.php godmode/servers/plugin.php godmode/servers/manage_recontask.php godmode/servers/modificar_server.php godmode/servers/manage_recontask_form.php godmode/alerts/alert_list.list.php godmode/alerts/configure_alert_compound.php godmode/alerts/alert_compounds.php godmode/alerts/alert_list.php godmode/alerts/configure_alert_template.php godmode/alerts/alert_templates.php godmode/alerts/configure_alert_action.php godmode/alerts/configure_alert_command.php godmode/alerts/alert_actions.php godmode/alerts/alert_list.builder.php godmode/alerts/alert_commands.php godmode/setup/file_manager.php godmode/setup/os.list.php godmode/setup/news.php godmode/setup/gis_step_2.php godmode/setup/links.php godmode/setup/setup.php godmode/setup/os.php godmode/setup/performance.php godmode/setup/setup_auth.php godmode/setup/gis.php godmode/setup/os.builder.php godmode/setup/setup_visuals.php godmode/snmpconsole/snmp_alert.php godmode/snmpconsole/snmp_filters.php godmode/users/user_list.php godmode/users/configure_user.php godmode/users/configure_profile.php godmode/gis_maps/configure_gis_map.php godmode/gis_maps/index.php godmode/massive/massive_add_alerts.php godmode/massive/massive_copy_modules.php godmode/massive/massive_delete_agents.php godmode/massive/massive_enable_disable_alerts.php godmode/massive/massive_operations.php godmode/massive/massive_delete_profiles.php godmode/massive/massive_edit_agents.php godmode/massive/massive_delete_action_alerts.php godmode/massive/massive_delete_modules.php godmode/massive/massive_add_profiles.php godmode/massive/massive_delete_alerts.php godmode/massive/massive_edit_modules.php godmode/massive/massive_standby_alerts.php godmode/massive/massive_add_action_alerts.php godmode/modules/manage_network_templates.php godmode/modules/module_list.php godmode/modules/manage_network_components_form_common.php godmode/modules/manage_network_components_form_network.php godmode/modules/manage_network_templates_form.php godmode/modules/manage_network_components_form_wmi.php godmode/modules/manage_network_components.php godmode/modules/manage_nc_groups.php godmode/modules/manage_network_components_form_plugin.php godmode/reporting/reporting_builder.list_items.php godmode/reporting/visual_console_builder.php godmode/reporting/reporting_builder.preview.php godmode/reporting/visual_console_builder.data.php godmode/reporting/visual_console_builder.elements.php godmode/reporting/graph_builder.php godmode/reporting/visual_console_builder.preview.php godmode/reporting/graph_builder.graph_editor.php godmode/reporting/reporting_builder.php godmode/reporting/visual_console_builder.editor.php godmode/reporting/reporting_builder.item_editor.php godmode/reporting/map_builder.php godmode/reporting/graphs.php godmode/reporting/graph_builder.preview.php: Now all functions of include/functions_ui have ui_ prefix. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4212 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2011-04-13 18:11:02 +02:00
*
* @return string Truncated text.
*/
function ui_print_truncate_text($text, $numChars=GENERIC_SIZE_TEXT, $showTextInAToopTip=true, $return=true, $showTextInTitle=true, $suffix='&hellip;', $style=false)
{
global $config;
if (is_string($numChars)) {
switch ($numChars) {
case 'agent_small':
$numChars = $config['agent_size_text_small'];
break;
case 'agent_medium':
$numChars = $config['agent_size_text_medium'];
break;
case 'module_small':
$numChars = $config['module_size_text_small'];
break;
case 'module_medium':
$numChars = $config['module_size_text_medium'];
break;
case 'description':
$numChars = $config['description_size_text'];
break;
case 'item_title':
$numChars = $config['item_title_size_text'];
break;
default:
$numChars = (int) $numChars;
break;
}
}
if ($numChars == 0) {
if ($return == true) {
return $text;
} else {
echo $text;
}
}
$text_html_decoded = io_safe_output($text);
$text_has_entities = $text != $text_html_decoded;
if (mb_strlen($text_html_decoded, 'UTF-8') > ($numChars)) {
// '/2' because [...] is in the middle of the word.
$half_length = intval(($numChars - 3) / 2);
// Depending on the strange behavior of mb_strimwidth() itself,
// the 3rd parameter is not to be $numChars but the length of
// original text (just means 'large enough').
$truncateText2 = mb_strimwidth(
$text_html_decoded,
(mb_strlen($text_html_decoded, 'UTF-8') - $half_length),
mb_strlen($text_html_decoded, 'UTF-8'),
'',
'UTF-8'
);
$truncateText = mb_strimwidth(
$text_html_decoded,
0,
($numChars - $half_length),
'',
'UTF-8'
);
2019-05-28 09:48:09 +02:00
// Recover the html entities to avoid XSS attacks.
$truncateText = ($text_has_entities) ? io_safe_input($truncateText).$suffix.io_safe_input($truncateText2) : $truncateText.$suffix.$truncateText2;
if ($showTextInTitle) {
if ($style === null) {
$truncateText = $truncateText;
} else if ($style !== false) {
$truncateText = '<span style="'.$style.'" title="'.$text.'">'.$truncateText.'</span>';
} else {
$truncateText = '<span title="'.$text.'">'.$truncateText.'</span>';
}
}
if ($showTextInAToopTip) {
if (is_string($showTextInAToopTip)) {
$text = ui_print_truncate_text($showTextInAToopTip, ($numChars * 2), false, true, false);
}
$truncateText = $truncateText.ui_print_help_tip(htmlspecialchars($text), true);
} else {
if ($style !== false) {
$truncateText = '<span style="'.$style.'">'.$truncateText.'</span>';
}
}
} else {
if ($style !== false) {
$truncateText = '<span style="'.$style.'">'.$text.'</span>';
} else {
$truncateText = $text;
}
}
if ($return == true) {
return $truncateText;
} else {
echo $truncateText;
}
}
/**
* Print a string with a smaller font depending on its size.
*
* @param string $string String to be display with a smaller font.
* @param boolean $return Flag to return as string or not.
2019-05-28 09:48:09 +02:00
*
* @return string HTML.
*/
function printSmallFont($string, $return=true)
{
$str = io_safe_output($string);
$length = strlen($str);
if ($length >= 30) {
$size = 0.7;
} else if ($length >= 20) {
$size = 0.8;
} else if ($length >= 10) {
$size = 0.9;
} else if ($length < 10) {
$size = 1;
}
$s = '<span style="font-size: '.$size.'em;">';
$s .= $string;
$s .= '</span>';
if ($return) {
return $s;
} else {
echo $s;
}
}
2016-03-30 13:05:08 +02:00
/**
* Prints a generic message between tags.
*
2019-05-28 09:48:09 +02:00
* @param mixed $message The string message or array [
* 'title', 'message', 'icon', 'no_close', 'force_style'] to be displayed.
* @param string $class The class to be used.
* @param string $attributes Any other attributes to be set for the tag.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
*
* @return string HTML code if return parameter is true.
*/
function ui_print_message($message, $class='', $attributes='', $return=false, $tag='h3')
{
static $first_execution = true;
$text_title = '';
$text_message = '';
$icon_image = '';
$no_close_bool = false;
$force_style = '';
if (is_array($message)) {
if (!empty($message['title'])) {
$text_title = $message['title'];
}
if (!empty($message['message'])) {
$text_message = $message['message'];
}
if (!empty($message['icon'])) {
$icon_image = $message['icon'];
}
if (!empty($message['no_close'])) {
$no_close_bool = $message['no_close'];
}
if (!empty($message['force_style'])) {
$force_style = $message['force_style'];
}
} else {
$text_message = $message;
}
if (empty($text_title)) {
switch ($class) {
default:
case 'info':
$text_title = __('Information');
break;
case 'error':
$text_title = __('Error');
break;
case 'suc':
$text_title = __('Success');
break;
case 'warning':
$text_title = __('Warning');
break;
}
}
if (empty($icon_image)) {
switch ($class) {
default:
case 'info':
$icon_image = 'images/information_big.png';
break;
case 'error':
$icon_image = 'images/err.png';
break;
case 'suc':
$icon_image = 'images/suc.png';
break;
case 'warning':
$icon_image = 'images/warning_big.png';
break;
}
$icon_image = $icon_image;
}
$id = 'info_box_'.uniqid();
2019-05-28 09:48:09 +02:00
// Use the no_meta parameter because this image is only in the base console.
$output = '<table cellspacing="0" cellpadding="0" id="'.$id.'" '.$attributes.'
class="info_box '.$id.' '.$class.' textodialogo" style="'.$force_style.'">
<tr>
<td class="icon icon_ui" rowspan="2" >'.html_print_image($icon_image, true, false, false, false, false).'</td>
2021-04-14 12:07:38 +02:00
<td class="title pandora_upper pdd_t_10px text_left"><b>'.$text_title.'</b></td>
2021-03-25 12:35:40 +01:00
<td class="icon right pdd_r_3px">';
if (!$no_close_bool) {
2019-05-28 09:48:09 +02:00
// Use the no_meta parameter because this image is only in
// the base console.
2021-12-02 13:34:28 +01:00
$output .= '<a href="javascript: close_info_box(\''.$id.'\')">'.html_print_image('images/blade.png', true, false, false, false).'</a>';
}
$output .= '</td>
</tr>
<tr>
2021-04-07 13:27:24 +02:00
<td class="black pdd_t_10px invert_filter" style="color: #000">'.$text_message.'</td>
<td></td>
</tr>
</table>';
if (($first_execution) && (!$no_close_bool)) {
$first_execution = false;
$output .= '
<script type="text/javascript">
function close_info_box(id) {
$("." + id).hide();
}
</script>
';
}
if ($return) {
return $output;
} else {
echo $output;
}
return '';
}
2016-03-30 13:05:08 +02:00
/**
* Prints an error message.
*
2019-05-28 09:48:09 +02:00
* @param mixed $message The string error message or array
* ('title', 'message', 'icon', 'no_close') to be displayed.
* @param string $attributes Any other attributes to be set for the tag.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
*
* @return string HTML code if return parameter is true.
*/
function ui_print_error_message($message, $attributes='', $return=false, $tag='h3')
{
return ui_print_message($message, 'error', $attributes, $return, $tag);
}
2016-03-30 13:05:08 +02:00
/**
* Prints an operation success message.
*
2019-05-28 09:48:09 +02:00
* @param mixed $message The string message or array
* ('title', 'message', 'icon', 'no_close') to be displayed.
* @param string $attributes Any other attributes to be set for the tag.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
*
* @return string HTML code if return parameter is true.
*/
function ui_print_success_message($message, $attributes='', $return=false, $tag='h3')
{
return ui_print_message($message, 'suc', $attributes, $return, $tag);
}
2016-03-30 13:05:08 +02:00
/**
* Prints an operation info message.
*
2019-05-28 09:48:09 +02:00
* @param mixed $message The string message or array
* ('title', 'message', 'icon', 'no_close') to be displayed.
* @param string $attributes Any other attributes to be set for the tag.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
*
* @return string HTML code if return parameter is true.
*/
function ui_print_info_message($message, $attributes='', $return=false, $tag='h3')
{
return ui_print_message($message, 'info', $attributes, $return, $tag);
}
2019-05-28 09:48:09 +02:00
/**
* Prints an operation info message - empty data.
*
* @param mixed $message The string message or array
* ('title', 'message', 'icon', 'no_close') to be displayed.
* @param string $attributes Any other attributes to be set for the tag.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
*
* @return string HTML code if return parameter is true.
*/
function ui_print_empty_data($message, $attributes='', $return=false, $tag='h3')
{
return ui_print_message($message, 'info', $attributes, $return, $tag);
}
2016-03-30 13:05:08 +02:00
/**
2009-03-26 Esteban Sanchez <estebans@artica.es> * godmode/users/configure_user.php: Complete rewritten to fix minor errors and fit the Pandora style. * include/auth/ldap.php: Removed process_user_isadmin(). Renamed process_user_password() to update_user_password(). Renamed process_user_info to update_user(). update_user_password() does not require old password anymore. * include/functions_db.php: Added empty checks on create_user_profile(). * include/functions_ui.php: print_error_message() renamed to print_result_message(). * godmode/agentes/configurar_agente.php, godmode/alerts/alert_actions.php, godmode/alerts/alert_commands.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/alert_templates.php, godmode/alerts/configure_alert_template.php, godmode/modules/manage_nc_groups.php, godmode/modules/manage_network_templates.php, godmode/modules/manage_network_templates_form.php, godmode/reporting/map_builder_wizard.php, godmode/reporting/reporting_builder.php, operation/agentes/alerts_status.php, operation/events/events.php, operation/incidents/incident.php, operation/incidents/incident_detail.php, operation/messages/message.php, operation/snmpconsole/snmp_view.php, operation/users/user_edit.php: Renamed print_result_message(). Some translatable strings reused to simplify i18n work. * godmode/users/user_list.php: Renamed print_result_message(). Use cross.png for deletion links. Style corrections. * godmode/setup/news.php: Renamed print_result_message(). Use process_sql_delete() instead of direct mysql_query. * godmode/reporting/map_builder.php: Renamed print_result_message(). Style correction on process_sql_update(). * godmode/alerts/configure_alert_compound.php: Renamed print_result_message(). Fixed steps_clean div. * godmode/setup/setup.php: Return control to index instead of exit. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1567 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-03-26 12:14:49 +01:00
* Evaluates a result using empty() and then prints an error or success message
*
2019-05-28 09:48:09 +02:00
* @param mixed $result The results to evaluate. 0, NULL, false, '' or
* array() is bad, the rest is good.
* @param mixed $good The string or array ('title', 'message') to be
* displayed if the result was good.
* @param mixed $bad The string or array ('title', 'message') to be
* displayed if the result was bad.
* @param string $attributes Any other attributes to be set for the h3.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
*
* @return string HTML code if return parameter is true.
*/
function ui_print_result_message($result, $good='', $bad='', $attributes='', $return=false, $tag='h3')
{
if ($good == '' || $good === false) {
$good = __('Request successfully processed');
}
if ($bad == '' || $bad === false) {
$bad = __('Error processing request');
}
if (empty($result)) {
return ui_print_error_message($bad, $attributes, $return, $tag);
} else {
return ui_print_success_message($good, $attributes, $return, $tag);
}
}
2016-03-30 13:05:08 +02:00
/**
2015-04-21 17:26:20 +02:00
* Prints an warning message.
*
2019-05-28 09:48:09 +02:00
* @param mixed $message The string message or array
* ('title', 'message', 'icon', 'no_close') to be displayed.
* @param string $attributes Any other attributes to be set for the tag.
* @param boolean $return Whether to output the string or return it.
* @param string $tag What tag to use (you could specify something else
* than h3 like div or h2).
2015-04-21 17:26:20 +02:00
*
* @return string HTML code if return parameter is true.
*/
function ui_print_warning_message($message, $attributes='', $return=false, $tag='h3')
{
return ui_print_message($message, 'warning', $attributes, $return, $tag);
2015-04-21 17:26:20 +02:00
}
/**
* Evaluates a unix timestamp and returns a span (or whatever tag specified)
* with as title the correctly formatted full timestamp and a time comparation
* in the tag
*
2019-05-28 09:48:09 +02:00
* @param integer $unixtime Any type of timestamp really, but we prefer unixtime.
* @param boolean $return Whether to output the string or return it.
* @param array $option An array with different options for this function
* Key html_attr: which html attributes to add (defaults to none)
* Key tag: Which html tag to use (defaults to span)
* Key prominent: Overrides user preference and display "comparation" or "timestamp"
* key units: The type of units.
*
* @return string HTML code if return parameter is true.
*/
function ui_print_timestamp($unixtime, $return=false, $option=[])
{
global $config;
2019-05-28 09:48:09 +02:00
// TODO: Add/use a javascript timer for the seconds so it automatically
// updates as time passes by.
if (isset($option['html_attr'])) {
$attributes = $option['html_attr'];
} else {
$attributes = '';
}
if (isset($option['tag'])) {
$tag = $option['tag'];
} else {
$tag = 'span';
}
if (empty($option['style'])) {
$style = 'class="nowrap"';
} else {
$style = 'style="'.$option['style'].'"';
}
if (!empty($option['prominent'])) {
$prominent = $option['prominent'];
} else {
$prominent = $config['prominent_time'];
}
if (!is_numeric($unixtime)) {
$unixtime = time_w_fixed_tz($unixtime);
}
2019-05-28 09:48:09 +02:00
// Prominent_time is either timestamp or comparation.
if ($unixtime <= 0) {
$title = __('Unknown').'/'.__('Never');
$data = __('Unknown');
} else if ($prominent == 'timestamp') {
pandora_setlocale();
$title = human_time_comparation($unixtime);
$date = new DateTime();
$date->setTimestamp($unixtime);
2020-09-14 17:59:41 +02:00
$data = $date->format($config['date_format']);
} else if ($prominent == 'compact') {
$units = 'tiny';
2019-12-13 13:40:19 +01:00
$title = date($config['date_format'], $unixtime);
$data = human_time_comparation($unixtime, $units);
} else {
$title = date($config['date_format'], $unixtime);
$units = 'large';
if (isset($option['units'])) {
$units = $option['units'];
}
$data = human_time_comparation($unixtime, $units);
}
$output = '<'.$tag;
switch ($tag) {
default:
// Usually tags have title attributes, so by default we add,
2019-05-28 09:48:09 +02:00
// then fall through to add attributes and data.
$output .= ' title="'.$title.'" '.$style.'>'.$data.'</'.$tag.'>';
break;
case 'h1':
case 'h2':
case 'h3':
2019-05-28 09:48:09 +02:00
// Above tags don't have title attributes.
$output .= ' '.$attributes.' '.$style.'>'.$data.'</'.$tag.'>';
break;
}
if ($return) {
return $output;
}
echo $output;
}
/**
* Prints a username with real name, link to the user_edit page etc.
*
2019-05-28 09:48:09 +02:00
* @param string $username The username to render.
* @param boolean $return Whether to return or print.
*
* @return string HTML code if return parameter is true.
*/
function ui_print_username($username, $return=false)
{
$string = '<a href="index.php?sec=usuario&amp;sec2=operation/users/user_edit&amp;id='.$username.'">'.get_user_fullname($username).'</a>';
if ($return) {
return $string;
}
echo $string;
}
2019-05-28 09:48:09 +02:00
/**
* Show a notification.
*
* @param boolean $return Return or direct echo.
*
* @return string HTML.
*/
function ui_print_tags_warning($return=false)
{
$msg = '<div id="notify_conf" class="notify">';
$msg .= __('Is possible that this view uses part of information which your user has not access');
$msg .= '</div>';
if ($return) {
return $msg;
} else {
echo $msg;
}
}
2016-03-30 13:05:08 +02:00
/**
* Print group icon within a link
*
2019-05-28 09:48:09 +02:00
* @param integer $id_group Group id.
* @param boolean $return Whether to return or print.
* @param string $path What path to use (relative to images/).
* Defaults to groups_small.
* @param string $style Style for group image.
* @param boolean $link Whether the group have link or not.
* @param boolean $force_show_image Force show image.
* @param boolean $show_as_image Show as image.
*
* @return string HTML code if return parameter is true.
*/
function ui_print_group_icon($id_group, $return=false, $path='groups_small', $style='', $link=true, $force_show_image=false, $show_as_image=false)
{
global $config;
if ($id_group > 0) {
$icon = (string) db_get_value('icon', 'tgrupo', 'id_grupo', (int) $id_group);
} else {
$icon = 'world';
}
$output = '';
2019-05-28 09:48:09 +02:00
// Don't show link in metaconsole.
if (defined('METACONSOLE')) {
$link = false;
}
if ($link) {
$output = '<a href="'.$config['homeurl'].'index.php?sec=estado&amp;sec2=operation/agentes/estado_agente&amp;refr=60&amp;group_id='.$id_group.'">';
}
if ($config['show_group_name']) {
$output .= '<span title="'.groups_get_name($id_group, true).'">'.groups_get_name($id_group, true).'&nbsp;</span>';
} else {
if (empty($icon)) {
$output .= '<span title="'.groups_get_name($id_group, true).'">&nbsp;&nbsp;</span>';
} else {
2021-03-17 16:44:10 +01:00
$class = 'bot';
if ($icon === 'transmit') {
$class .= ' invert_filter';
}
$output .= html_print_image(
'images/'.$path.'/'.$icon.'.png',
true,
[
'style' => $style,
2021-03-17 16:44:10 +01:00
'class' => $class,
'alt' => groups_get_name($id_group, true),
'title' => groups_get_name($id_group, true),
],
false,
false,
false,
true
);
}
}
if ($link) {
$output .= '</a>';
}
if (!$return) {
echo $output;
}
return $output;
}
2016-03-30 13:05:08 +02:00
/**
2010-09-15 17:54:59 +02:00
* Print group icon within a link. Other version.
*
2019-05-28 09:48:09 +02:00
* @param integer $id_group Group id.
* @param boolean $return Whether to return or print.
* @param string $path What path to use (relative to images/).
* Defaults to groups_small.
* @param string $style Extra styles.
* @param boolean $link Add anchor.
2010-09-15 17:54:59 +02:00
*
* @return string HTML code if return parameter is true.
*/
function ui_print_group_icon_path($id_group, $return=false, $path='images/groups_small', $style='', $link=true)
{
if ($id_group > 0) {
$icon = (string) db_get_value('icon', 'tgrupo', 'id_grupo', (int) $id_group);
} else {
$icon = 'world';
}
if ($style == '') {
$style = 'width: 16px; height: 16px;';
}
$output = '';
if ($link) {
$output = '<a href="index.php?sec=estado&amp;sec2=operation/agentes/estado_agente&amp;refr=60&amp;group_id='.$id_group.'">';
}
if (empty($icon)) {
$output .= '<span title="'.groups_get_name($id_group, true).'">&nbsp;-&nbsp</span>';
} else {
$output .= '<img style="'.$style.'" class="bot" src="'.$path.'/'.$icon.'.png" alt="'.groups_get_name($id_group, true).'" title="'.groups_get_name($id_group, true).'" />';
}
if ($link) {
$output .= '</a>';
}
if (!$return) {
echo $output;
}
return $output;
2010-09-15 17:54:59 +02:00
}
2016-03-30 13:05:08 +02:00
/**
* Get the icon of an operating system.
*
2019-05-28 09:48:09 +02:00
* @param integer $id_os Operating system id.
* @param boolean $name Whether to also append the name of OS after icon.
* @param boolean $return Whether to return or echo the result.
* @param boolean $apply_skin Whether to apply skin or not.
* @param boolean $networkmap Networkmap.
* @param boolean $only_src Only_src.
* @param boolean $relative Relative.
* @param boolean $options Options.
* @param boolean $big_icons Big_icons.
*
* @return string HTML with icon of the OS
*/
function ui_print_os_icon(
$id_os,
$name=true,
$return=false,
$apply_skin=true,
$networkmap=false,
$only_src=false,
$relative=false,
$options=false,
$big_icons=false
) {
$subfolder = 'os_icons';
if ($networkmap) {
$subfolder = 'networkmap';
}
if ($big_icons) {
$subfolder .= '/so_big_icons';
}
if (is_metaconsole()) {
$no_in_meta = false;
2019-12-23 10:53:33 +01:00
} else {
$no_in_meta = true;
}
$icon = (string) db_get_value('icon_name', 'tconfig_os', 'id_os', (int) $id_os);
$os_name = get_os_name($id_os);
if (empty($icon)) {
if ($only_src) {
$output = html_print_image(
'images/'.$subfolder.'/unknown.png',
true,
$options,
true,
$relative,
$no_in_meta,
true
);
} else {
return '-';
}
} else if ($apply_skin) {
if ($only_src) {
$output = html_print_image('images/'.$subfolder.'/'.$icon, true, $options, true, $relative, $no_in_meta, true);
} else {
if (!isset($options['title'])) {
$options['title'] = $os_name;
}
$output = html_print_image('images/'.$subfolder.'/'.$icon, true, $options, false, $relative, $no_in_meta, true);
}
} else {
// $output = "<img src='images/os_icons/" . $icon . "' alt='" . $os_name . "' title='" . $os_name . "'>";
$output = 'images/'.$subfolder.'/'.$icon;
}
if ($name === true) {
$output .= '&nbsp;&nbsp;'.$os_name;
}
if (!$return) {
echo $output;
}
return $output;
}
2019-05-28 09:48:09 +02:00
/**
* Print type agent icon.
*
* @param boolean $id_os Id_os.
* @param boolean $remote_contact Remote_contact.
* @param boolean $contact Contact.
* @param boolean $return Return.
* @param integer $remote Remote.
* @param string $version Version.
*
* @return string HTML.
*/
function ui_print_type_agent_icon(
$id_os=false,
$remote_contact=false,
$contact=false,
$return=false,
$remote=0,
$version=''
) {
global $config;
if ($id_os == 19) {
2019-05-28 09:48:09 +02:00
// Satellite.
$options['title'] = __('Satellite');
$output = html_print_image('images/satellite.png', true, ['class' => 'invert_filter'], false, false, false, true);
} else if ($remote_contact == $contact && $remote == 0 && $version == '') {
2019-05-28 09:48:09 +02:00
// Network.
$options['title'] = __('Network');
$output = html_print_image('images/network.png', true, ['class' => 'invert_filter'], false, false, false, true);
} else {
2019-05-28 09:48:09 +02:00
// Software.
$options['title'] = __('Software');
$output = html_print_image('images/data.png', true, ['class' => 'invert_filter'], false, false, false, true);
}
return $output;
}
/**
* Prints an agent name with the correct link
*
2019-05-28 09:48:09 +02:00
* @param integer $id_agent Agent id.
* @param boolean $return Whether to return the string or echo it too.
* @param integer $cutoff Now uses styles to accomplish this.
* @param string $style Style of name in css.
* @param boolean $cutname Cut names.
* @param string $server_url Server url to concatenate at the begin of the link.
* @param string $extra_params Extra parameters to concatenate in the link.
* @param string $known_agent_name Name of the agent to avoid the query in some cases.
* @param boolean $link If the agent will provided with link or not.
* @param boolean $alias Use the agent alias or the name.
*
* @return string HTML with agent name and link
*/
2019-05-28 09:48:09 +02:00
function ui_print_agent_name(
$id_agent,
$return=false,
$cutoff='agent_medium',
$style='',
$cutname=false,
$server_url='',
$extra_params='',
$known_agent_name=false,
$link=true,
$alias=true
) {
if ($known_agent_name === false) {
if ($alias) {
$agent_name = (string) agents_get_alias($id_agent);
} else {
$agent_name = (string) agents_get_name($id_agent);
}
} else {
$agent_name = $known_agent_name;
}
if ($alias) {
$agent_name_full = (string) agents_get_name($id_agent);
} else {
$agent_name_full = $agent_name;
}
if ($cutname) {
$agent_name = ui_print_truncate_text($agent_name, $cutoff, true, true, true, '[&hellip;]', $style);
}
if ($link) {
2019-05-28 09:48:09 +02:00
$url = $server_url.'index.php?sec=estado&amp;sec2=operation/agentes/ver_agente&amp;id_agente='.$id_agent.$extra_params;
2019-05-28 09:48:09 +02:00
$output = '<a style="'.$style.'" href="'.$url.'" title="'.$agent_name_full.'"><b><span style="'.$style.'">'.$agent_name.'</span></b></a>';
} else {
$output = '<b><span style="'.$style.'">'.$agent_name.'</span></b>';
}
2019-05-28 09:48:09 +02:00
// TODO: Add a pretty javascript (using jQuery) popup-box with agent details.
if ($return) {
return $output;
}
echo $output;
}
2009-01-15 Esteban Sanchez <estebans@artica.es> * include/styles/menu.css: Changed the z-index property of the menu which was overlapped in some cases. * include/functions.php: format_alert_row() moved to functions_ui.php * include/functions_ui.php: Added format_alert_row() from function.php * include/functions_agents.php: Added to repository. * include/functions_alerts.php: Added new functions get_alerts_agent_module_disabled(), set_alerts_agent_module_force_execution(), get_alerts_agent_module_last_fired(). * include/functions_db.php, operation/agentes/estado_agente.php, operation/agentes/networkmap.php: Style correction. * include/functions_reporting.php: Use new functions_agent.php. Added a bit of documentation and style correction. * godmode/alerts/alert_templates.php: Improved a bit the template tooltip. * operation/agentes/alerts_status.php: Added to repository. New interface to list agent alerts. * operation/agentes/estado_alertas.php: Removed from repository. Replaced by alert_status.php. * operation/agentes/ver_agente.php: Removed flag_alert code snippet. Use new files added. Style correction. * operation/menu.php: Old files references replaced by new ones. * index.php: Removed build and pandora version references. * pandoradb.sql: Removed useless module_type field in talert_templates. * pandoradb_migrate_20_to_21.sql: Removed duplicate fields addition. Fixed some warnings. Added custom_id field to tagente. Style correction. * include/config_process.php: Updated build version. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1344 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-01-15 11:21:38 +01:00
2016-03-30 13:05:08 +02:00
/**
2009-01-15 Esteban Sanchez <estebans@artica.es> * include/styles/menu.css: Changed the z-index property of the menu which was overlapped in some cases. * include/functions.php: format_alert_row() moved to functions_ui.php * include/functions_ui.php: Added format_alert_row() from function.php * include/functions_agents.php: Added to repository. * include/functions_alerts.php: Added new functions get_alerts_agent_module_disabled(), set_alerts_agent_module_force_execution(), get_alerts_agent_module_last_fired(). * include/functions_db.php, operation/agentes/estado_agente.php, operation/agentes/networkmap.php: Style correction. * include/functions_reporting.php: Use new functions_agent.php. Added a bit of documentation and style correction. * godmode/alerts/alert_templates.php: Improved a bit the template tooltip. * operation/agentes/alerts_status.php: Added to repository. New interface to list agent alerts. * operation/agentes/estado_alertas.php: Removed from repository. Replaced by alert_status.php. * operation/agentes/ver_agente.php: Removed flag_alert code snippet. Use new files added. Style correction. * operation/menu.php: Old files references replaced by new ones. * index.php: Removed build and pandora version references. * pandoradb.sql: Removed useless module_type field in talert_templates. * pandoradb_migrate_20_to_21.sql: Removed duplicate fields addition. Fixed some warnings. Added custom_id field to tagente. Style correction. * include/config_process.php: Updated build version. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1344 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-01-15 11:21:38 +01:00
* Formats a row from the alert table and returns an array usable in the table function
*
2019-05-28 09:48:09 +02:00
* @param array $alert A valid (non empty) row from the alert table.
* @param boolean $agent Whether or not this is a combined alert.
* @param string $url Tab where the function was called from (used for urls).
* @param mixed $agent_style Style for agent name or default (false).
*
2009-01-15 Esteban Sanchez <estebans@artica.es> * include/styles/menu.css: Changed the z-index property of the menu which was overlapped in some cases. * include/functions.php: format_alert_row() moved to functions_ui.php * include/functions_ui.php: Added format_alert_row() from function.php * include/functions_agents.php: Added to repository. * include/functions_alerts.php: Added new functions get_alerts_agent_module_disabled(), set_alerts_agent_module_force_execution(), get_alerts_agent_module_last_fired(). * include/functions_db.php, operation/agentes/estado_agente.php, operation/agentes/networkmap.php: Style correction. * include/functions_reporting.php: Use new functions_agent.php. Added a bit of documentation and style correction. * godmode/alerts/alert_templates.php: Improved a bit the template tooltip. * operation/agentes/alerts_status.php: Added to repository. New interface to list agent alerts. * operation/agentes/estado_alertas.php: Removed from repository. Replaced by alert_status.php. * operation/agentes/ver_agente.php: Removed flag_alert code snippet. Use new files added. Style correction. * operation/menu.php: Old files references replaced by new ones. * index.php: Removed build and pandora version references. * pandoradb.sql: Removed useless module_type field in talert_templates. * pandoradb_migrate_20_to_21.sql: Removed duplicate fields addition. Fixed some warnings. Added custom_id field to tagente. Style correction. * include/config_process.php: Updated build version. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1344 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-01-15 11:21:38 +01:00
* @return array A formatted array with proper html for use in $table->data (6 columns)
*/
2019-05-28 09:48:09 +02:00
function ui_format_alert_row(
$alert,
$agent=true,
$url='',
$agent_style=false
) {
global $config;
if (!isset($alert['server_data'])) {
$server_name = '';
$server_id = '';
$url_hash = '';
$console_url = '';
} else {
$server_data = $alert['server_data'];
$server_name = $server_data['server_name'];
$server_id = $server_data['id'];
$console_url = $server_data['server_url'].'/';
$url_hash = metaconsole_get_servers_url_hash($server_data);
}
$actionText = '';
include_once $config['homedir'].'/include/functions_alerts.php';
$isFunctionPolicies = enterprise_include_once('include/functions_policies.php');
$id_group = (int) get_parameter('ag_group', 0);
2019-05-28 09:48:09 +02:00
// 0 is the All group (selects all groups).
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
if ($agent) {
$index = [
'policy' => 0,
'standby' => 1,
'force_execution' => 2,
'agent_name' => 3,
'module_name' => 4,
'description' => 5,
'template' => 5,
'action' => 6,
'last_fired' => 7,
'status' => 8,
'validate' => 9,
];
} else {
$index = [
'policy' => 0,
'standby' => 1,
'force_execution' => 2,
'agent_name' => 3,
'module_name' => 3,
'description' => 4,
'template' => 4,
'action' => 5,
'last_fired' => 6,
'status' => 7,
'validate' => 8,
];
}
} else {
if ($agent) {
$index = [
'standby' => 0,
'force_execution' => 1,
'agent_name' => 2,
'module_name' => 3,
'description' => 4,
'template' => 4,
'action' => 5,
'last_fired' => 6,
'status' => 7,
'validate' => 8,
];
} else {
$index = [
'standby' => 0,
'force_execution' => 1,
'agent_name' => 2,
'module_name' => 2,
'description' => 3,
'template' => 3,
'action' => 4,
'last_fired' => 5,
'status' => 6,
'validate' => 7,
];
}
}
if ($alert['disabled']) {
$disabledHtmlStart = '<span class="italic_a">';
$disabledHtmlEnd = '</span>';
$styleDisabled = 'font-style: italic; color: #aaaaaa;';
} else {
$disabledHtmlStart = '';
$disabledHtmlEnd = '';
$styleDisabled = '';
}
2021-09-06 14:08:24 +02:00
if (empty($alert) === true) {
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
return [
'',
'',
'',
'',
'',
'',
'',
'',
];
} else {
return [
'',
'',
'',
'',
'',
'',
'',
];
}
}
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === true) {
$server = db_get_row('tmetaconsole_setup', 'id', $alert['server_data']['id']);
if (metaconsole_connect($server) == NOERR) {
2019-05-28 09:48:09 +02:00
// Get agent data from node.
$agente = db_get_row('tagente', 'id_agente', $alert['id_agent']);
metaconsole_restore_db();
}
} else {
2019-05-28 09:48:09 +02:00
// Get agent id.
$id_agent = modules_get_agentmodule_agent($alert['id_agent_module']);
$agente = db_get_row('tagente', 'id_agente', $id_agent);
}
$template = alerts_get_alert_template($alert['id_alert_template']);
$description = io_safe_output($template['name']);
$data = [];
2019-05-28 09:48:09 +02:00
// Validate checkbox.
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === false) {
2019-05-28 09:48:09 +02:00
if (check_acl($config['id_user'], $id_group, 'LW')
|| check_acl($config['id_user'], $id_group, 'LM')
) {
$data[$index['validate']] = '';
$data[$index['validate']] .= html_print_checkbox(
'validate[]',
$alert['id'],
false,
true,
false,
'',
true
);
}
}
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === true && (int) $alert['server_data']['id'] !== 0) {
$node = metaconsole_get_connection_by_id($alert['server_data']['id']);
if (metaconsole_load_external_db($node) !== NOERR) {
// Restore the default connection.
metaconsole_restore_db();
$errors++;
return false;
}
}
$policyInfo = policies_is_alert_in_policy2($alert['id'], false);
$module_linked = policies_is_module_linked($alert['id_agent_module']);
if (is_array($policyInfo) === false && $module_linked === false) {
$data[$index['policy']] = '';
} else {
$module_linked = policies_is_module_linked($alert['id_agent_module']);
if ($module_linked === '0') {
$img = 'images/unlinkpolicy.png';
} else {
$img = 'images/policies_mc.png';
}
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === false) {
$data[$index['policy']] = '<a href="?sec=gmodules&amp;sec2=enterprise/godmode/policies/policies&amp;id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
} else {
$data[$index['policy']] = '<a href="?sec=gmodules&amp;sec2=advanced/policymanager&amp;id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
}
}
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === true) {
metaconsole_restore_db();
}
}
2019-05-28 09:48:09 +02:00
// Standby.
$data[$index['standby']] = '';
if (isset($alert['standby']) && $alert['standby'] == 1) {
$data[$index['standby']] = html_print_image('images/bell_pause.png', true, ['title' => __('Standby on')]);
}
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === false) {
2019-05-28 09:48:09 +02:00
// Force alert execution.
if (check_acl($config['id_user'], $id_group, 'AW') || check_acl($config['id_user'], $id_group, 'LM')) {
if ($alert['force_execution'] == 0) {
$data[$index['force_execution']] = '<a href="'.$url.'&amp;id_alert='.$alert['id'].'&amp;force_execution=1&refr=60">'.html_print_image('images/target.png', true, ['border' => '0', 'title' => __('Force'), 'class' => 'invert_filter']).'</a>';
} else {
$data[$index['force_execution']] = '<a href="'.$url.'&amp;id_alert='.$alert['id'].'&amp;refr=60">'.html_print_image('images/refresh.png', true, ['class' => 'invert_filter']).'</a>';
}
}
}
$data[$index['agent_name']] = $disabledHtmlStart;
if ($agent == 0) {
2019-12-27 10:24:48 +01:00
$data[$index['module_name']] .= ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', '');
} else {
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === true) {
$agent_name = $alert['agent_name'];
$id_agent = $alert['id_agent'];
} else {
$agent_name = false;
$id_agent = modules_get_agentmodule_agent($alert['id_agent_module']);
}
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === true || !can_user_access_node()) {
2019-12-27 10:24:48 +01:00
$data[$index['agent_name']] = ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]', '');
} else {
if ($agent_style !== false) {
$data[$index['agent_name']] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent.'"> <span class="bolder" title ="'.$agente['nombre'].'">'.$agente['alias'].'</span></a>';
} else {
$data[$index['agent_name']] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent.'"> <span class="bolder" title ="'.$agente['nombre'].'">'.$agente['alias'].'</span></a>';
}
}
2019-12-27 10:24:48 +01:00
$data[$index['module_name']] = ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', '');
}
$data[$index['agent_name']] .= $disabledHtmlEnd;
$data[$index['description']] = '';
2021-09-06 14:08:24 +02:00
if (is_metaconsole() === true) {
$data[$index['template']] .= '<a class="template_details" href="'.ui_get_full_url('/', false, false, false).'/ajax.php?page=enterprise/meta/include/ajax/tree_view.ajax&action=get_template_tooltip&id_template='.$template['id'].'&server_name='.$alert['server_data']['server_name'].'">';
} else {
$data[$index['template']] .= '<a class="template_details" href="ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$template['id'].'">';
}
$data[$index['template']] .= html_print_image('images/zoom.png', true, ['class' => 'invert_filter']);
$data[$index['template']] .= '</a> ';
$actionDefault = db_get_value_sql(
'SELECT id_alert_action
FROM talert_templates WHERE id = '.$alert['id_alert_template']
);
2019-12-27 10:24:48 +01:00
$data[$index['description']] .= $disabledHtmlStart.ui_print_truncate_text(io_safe_output($description), 'description', false, true, true, '[&hellip;]', '').$disabledHtmlEnd;
$actions = alerts_get_alert_agent_module_actions($alert['id'], false, $alert['server_data']['id']);
if (empty($actions) === false || $actionDefault != '') {
$actionText = '<div><ul class="action_list">';
foreach ($actions as $action) {
$actionText .= '<div class="mrgn_btn_5px" ><span class="action_name"><li>'.$action['name'];
if ($action['fires_min'] != $action['fires_max']) {
$actionText .= ' ('.$action['fires_min'].' / '.$action['fires_max'].')';
}
$actionText .= '</li></span></div>';
}
$actionText .= '</ul></div>';
if ($actionDefault != '') {
$actionText .= db_get_sql(
2019-05-28 10:47:31 +02:00
sprintf(
'SELECT name FROM talert_actions WHERE id = %d',
$actionDefault
)
).' <i>('.__('Default').')</i>';
}
}
$data[$index['action']] = $actionText;
$data[$index['last_fired']] = $disabledHtmlStart.ui_print_timestamp($alert['last_fired'], true).$disabledHtmlEnd;
$status = STATUS_ALERT_NOT_FIRED;
$title = '';
if ($alert['times_fired'] > 0) {
$status = STATUS_ALERT_FIRED;
$title = __('Alert fired').' '.$alert['internal_counter'].' '.__('time(s)');
} else if ($alert['disabled'] > 0) {
$status = STATUS_ALERT_DISABLED;
$title = __('Alert disabled');
} else {
$status = STATUS_ALERT_NOT_FIRED;
$title = __('Alert not fired');
}
$data[$index['status']] = ui_print_status_image($status, $title, true);
return $data;
2009-01-15 Esteban Sanchez <estebans@artica.es> * include/styles/menu.css: Changed the z-index property of the menu which was overlapped in some cases. * include/functions.php: format_alert_row() moved to functions_ui.php * include/functions_ui.php: Added format_alert_row() from function.php * include/functions_agents.php: Added to repository. * include/functions_alerts.php: Added new functions get_alerts_agent_module_disabled(), set_alerts_agent_module_force_execution(), get_alerts_agent_module_last_fired(). * include/functions_db.php, operation/agentes/estado_agente.php, operation/agentes/networkmap.php: Style correction. * include/functions_reporting.php: Use new functions_agent.php. Added a bit of documentation and style correction. * godmode/alerts/alert_templates.php: Improved a bit the template tooltip. * operation/agentes/alerts_status.php: Added to repository. New interface to list agent alerts. * operation/agentes/estado_alertas.php: Removed from repository. Replaced by alert_status.php. * operation/agentes/ver_agente.php: Removed flag_alert code snippet. Use new files added. Style correction. * operation/menu.php: Old files references replaced by new ones. * index.php: Removed build and pandora version references. * pandoradb.sql: Removed useless module_type field in talert_templates. * pandoradb_migrate_20_to_21.sql: Removed duplicate fields addition. Fixed some warnings. Added custom_id field to tagente. Style correction. * include/config_process.php: Updated build version. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1344 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-01-15 11:21:38 +01:00
}
/**
2016-03-30 13:05:08 +02:00
* Prints a substracted string, length specified by cutoff, the full string will be in a rollover.
*
2019-05-28 10:47:31 +02:00
* @param string $string The string to be cut..
* @param integer $cutoff At how much characters to cut.
* @param boolean $return Whether to return or print it out.
* @param integer $fontsize Size font (fixed) in px, applyed as CSS style (optional).
*
2019-05-28 10:47:31 +02:00
* @return string HTML string.
*/
function ui_print_string_substr($string, $cutoff=16, $return=false, $fontsize=0)
{
if (empty($string)) {
return '';
}
$string2 = io_safe_output($string);
if (mb_strlen($string2, 'UTF-8') > $cutoff) {
$string3 = '...';
} else {
$string3 = '';
}
$font_size_mod = '';
if ($fontsize > 0) {
$font_size_mod = "style='font-size: ".$fontsize."pt'";
}
2019-05-28 10:47:31 +02:00
$string = '<span '.$font_size_mod.' title="'.io_safe_input($string2).'">';
$string .= mb_substr($string2, 0, $cutoff, 'UTF-8').$string3.'</span>';
if ($return === false) {
echo $string;
}
return $string;
}
/**
* Gets a helper text explaining the requirement needs for an alert template
* to get it fired.
*
2019-05-28 10:47:31 +02:00
* @param integer $id_alert_template Alert template id.
* @param boolean $return Wheter to return or print it out.
* @param boolean $print_values Wheter to put the values in the string or not.
*
* @return An HTML string if return was true.
*/
function ui_print_alert_template_example($id_alert_template, $return=false, $print_values=true)
{
$output = '';
$output .= html_print_image('images/information.png', true, ['class' => 'invert_filter']);
$output .= '<span id="example">';
$template = alerts_get_alert_template($id_alert_template);
switch ($template['type']) {
case 'equal':
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the value is <span id="value"></span>');
break;
case 'not_equal':
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the value is not <span id="value"></span>');
break;
case 'regex':
if ($template['matches_value']) {
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the value matches <span id="value"></span>');
} else {
2019-05-28 10:47:31 +02:00
// End if.
$output .= __('The alert would fire when the value doesn\'t match <span id="value"></span>');
}
$value = $template['value'];
break;
case 'max_min':
if ($template['matches_value']) {
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the value is between <span id="min"></span> and <span id="max"></span>');
} else {
2019-05-28 10:47:31 +02:00
// End if.
$output .= __('The alert would fire when the value is not between <span id="min"></span> and <span id="max"></span>');
}
break;
case 'max':
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the value is over <span id="max"></span>');
break;
case 'min':
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the value is under <span id="min"></span>');
break;
case 'warning':
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the module is in warning status');
break;
case 'critical':
2019-05-28 10:47:31 +02:00
// Do not translate the HTML attributes.
$output .= __('The alert would fire when the module is in critical status');
break;
2019-05-28 10:47:31 +02:00
default:
// Do nothing.
$output .= __('Unknown option.');
break;
}
if ($print_values) {
/*
2019-05-28 10:47:31 +02:00
* Replace span elements with real values. This is done in such way to avoid
* duplicating strings and make it easily modificable via Javascript.
*/
$output = str_replace('<span id="value"></span>', $template['value'], $output);
$output = str_replace('<span id="max"></span>', $template['max_value'], $output);
$output = str_replace('<span id="min"></span>', $template['min_value'], $output);
}
$output .= '</span>';
if ($return) {
return $output;
}
echo $output;
}
/**
* Prints a help tip icon.
*
2019-05-28 10:47:31 +02:00
* @param string $help_id Id of the help article.
* @param boolean $return Whether to return or output the result.
* @param string $home_url Home url if its necessary.
* @param string $image Image path.
* @param boolean $is_relative Route is relative or not.
* @param string $id Target id.
*
* @return string The help tip
*/
2019-05-28 10:47:31 +02:00
function ui_print_help_icon(
$help_id,
$return=false,
$home_url='',
$image='images/help_green.png',
$is_relative=false,
$id=''
) {
global $config;
// Do not display the help icon if help is disabled.
if ($config['disable_help']) {
return '';
}
if (empty($home_url)) {
$home_url = '';
}
if (defined('METACONSOLE')) {
$home_url = '../../'.$home_url;
}
$url = get_help_info($help_id);
2019-11-21 18:21:46 +01:00
$b = base64_encode($url);
2019-11-21 18:21:46 +01:00
$help_handler = 'index.php?sec=view&sec2=general/help_feedback';
// Needs to use url encoded to avoid anchor lost.
$help_handler .= '&b='.$b;
$help_handler .= '&pure=1&url='.$url;
$output = html_print_image(
$image,
true,
[
'class' => 'img_help',
'title' => __('Help'),
2019-11-21 18:21:46 +01:00
'onclick' => "open_help ('".ui_get_full_url($help_handler)."')",
2019-05-09 13:43:53 +02:00
'id' => $id,
],
false,
$is_relative && is_metaconsole()
);
if (!$return) {
echo $output;
}
return $output;
}
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
/**
* Add a CSS file to the HTML head tag.
*
* To make a CSS file available just put it in include/styles. The
* file name should be like "name.css". The "name" would be the value
* needed to pass to this function.
*
2019-05-28 10:47:31 +02:00
* @param string $name Script name to add without the "jquery." prefix and the ".js"
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
* suffix. Example:
2011-04-13 Juan Manuel Ramon <juanmanuel.ramon@artica.es> * include/functions_events.php include/functions_html.php include/functions_modules.php include/functions_reporting.php include/functions_filemanager.php include/functions_gis.php include/functions_networkmap.php include/functions_visual_map.php include/ajax/reporting.ajax.php include/help/en/help_timesource.php include/help/es/help_timesource.php include/help/ja/help_timesource.php include/functions_ui.php include/functions.php include/functions_db.php include/functions_ui_renders.php index.php extensions/insert_data.php extensions/system_info.php extensions/extension_uploader.php extensions/pandora_logs.php extensions/agents_modules.php extensions/dbmanager.php extensions/resource_registration.php extensions/resource_exportation.php extensions/users_connected.php extensions/module_groups.php extensions/update_manager/settings.php extensions/update_manager/main.php extensions/plugin_registration.php operation/incidents/incident.php operation/incidents/incident.files.php operation/incidents/incident_detail.php operation/incidents/incident.workunits.php operation/incidents/incident.list.php operation/incidents/incident_statistics.php operation/search_modules.php operation/visual_console/render_view.php operation/visual_console/index.php operation/extensions.php operation/agentes/status_monitor.php operation/agentes/alerts_status.php operation/agentes/datos_agente.php operation/agentes/estado_ultimopaquete.php operation/agentes/custom_fields.php operation/agentes/estado_generalagente.php operation/agentes/networkmap.topology.php operation/agentes/estado_agente.php operation/agentes/alerts_status.functions.php operation/agentes/networkmap.groups.php operation/agentes/bulbs.php operation/agentes/sla_view.php operation/agentes/exportdata.php operation/agentes/gis_view.php operation/agentes/estado_monitores.php operation/agentes/ver_agente.php operation/agentes/graphs.php operation/agentes/agent_fields.php operation/agentes/tactical.php operation/agentes/group_view.php operation/agentes/networkmap.php operation/agentes/stat_win.php operation/servers/view_server.php operation/servers/view_server_detail.php operation/search_agents.php operation/search_graphs.php operation/snmpconsole/snmp_view.php operation/users/user_edit.php operation/gis_maps/render_view.php operation/gis_maps/ajax.php operation/gis_maps/index.php operation/integria_incidents/incident.php operation/integria_incidents/incident.files.php operation/integria_incidents/incident_detail.php operation/integria_incidents/incident.workunits.php operation/integria_incidents/incident.list.php operation/integria_incidents/incident_statistics.php operation/events/event_statistics.php operation/events/events_list.php operation/events/events.php operation/search_alerts.php operation/messages/message.php operation/reporting/reporting_viewer.php operation/reporting/graph_viewer.php operation/reporting/custom_reporting.php operation/search_reports.php operation/search_maps.php operation/search_results.php operation/search_users.php extras/pandora_diag.php mobile/operation/agents/monitor_status.php mobile/operation/agents/view_agents.php mobile/operation/agents/view_alerts.php mobile/operation/events/events.php mobile/operation/servers/view_servers.php mobile/include/functions_web.php general/footer.php general/noaccess.php general/logon_ok.php general/main_menu.php general/ui/agents_list.php general/header.php godmode/groups/modu_group_list.php godmode/groups/configure_group.php godmode/groups/configure_modu_group.php godmode/groups/group_list.php godmode/admin_access_logs.php godmode/db/db_main.php godmode/db/db_audit.php godmode/db/db_sanity.php godmode/db/db_refine.php godmode/db/db_info.php godmode/db/db_event.php godmode/db/db_purge.php godmode/extensions.php godmode/agentes/module_manager_editor_common.php godmode/agentes/module_manager_editor_network.php godmode/agentes/fields_manager.php godmode/agentes/module_manager_editor_wmi.php godmode/agentes/module_manager_editor_plugin.php godmode/agentes/module_manager_editor_prediction.php godmode/agentes/agent_conf_gis.php godmode/agentes/module_manager.php godmode/agentes/modificar_agente.php godmode/agentes/configurar_agente.php godmode/agentes/configure_field.php godmode/agentes/module_manager_editor.php godmode/agentes/planned_downtime.php godmode/agentes/manage_config_remote.php godmode/agentes/agent_manager.php godmode/servers/recon_script.php godmode/servers/plugin.php godmode/servers/manage_recontask.php godmode/servers/modificar_server.php godmode/servers/manage_recontask_form.php godmode/alerts/alert_list.list.php godmode/alerts/configure_alert_compound.php godmode/alerts/alert_compounds.php godmode/alerts/alert_list.php godmode/alerts/configure_alert_template.php godmode/alerts/alert_templates.php godmode/alerts/configure_alert_action.php godmode/alerts/configure_alert_command.php godmode/alerts/alert_actions.php godmode/alerts/alert_list.builder.php godmode/alerts/alert_commands.php godmode/setup/file_manager.php godmode/setup/os.list.php godmode/setup/news.php godmode/setup/gis_step_2.php godmode/setup/links.php godmode/setup/setup.php godmode/setup/os.php godmode/setup/performance.php godmode/setup/setup_auth.php godmode/setup/gis.php godmode/setup/os.builder.php godmode/setup/setup_visuals.php godmode/snmpconsole/snmp_alert.php godmode/snmpconsole/snmp_filters.php godmode/users/user_list.php godmode/users/configure_user.php godmode/users/configure_profile.php godmode/gis_maps/configure_gis_map.php godmode/gis_maps/index.php godmode/massive/massive_add_alerts.php godmode/massive/massive_copy_modules.php godmode/massive/massive_delete_agents.php godmode/massive/massive_enable_disable_alerts.php godmode/massive/massive_operations.php godmode/massive/massive_delete_profiles.php godmode/massive/massive_edit_agents.php godmode/massive/massive_delete_action_alerts.php godmode/massive/massive_delete_modules.php godmode/massive/massive_add_profiles.php godmode/massive/massive_delete_alerts.php godmode/massive/massive_edit_modules.php godmode/massive/massive_standby_alerts.php godmode/massive/massive_add_action_alerts.php godmode/modules/manage_network_templates.php godmode/modules/module_list.php godmode/modules/manage_network_components_form_common.php godmode/modules/manage_network_components_form_network.php godmode/modules/manage_network_templates_form.php godmode/modules/manage_network_components_form_wmi.php godmode/modules/manage_network_components.php godmode/modules/manage_nc_groups.php godmode/modules/manage_network_components_form_plugin.php godmode/reporting/reporting_builder.list_items.php godmode/reporting/visual_console_builder.php godmode/reporting/reporting_builder.preview.php godmode/reporting/visual_console_builder.data.php godmode/reporting/visual_console_builder.elements.php godmode/reporting/graph_builder.php godmode/reporting/visual_console_builder.preview.php godmode/reporting/graph_builder.graph_editor.php godmode/reporting/reporting_builder.php godmode/reporting/visual_console_builder.editor.php godmode/reporting/reporting_builder.item_editor.php godmode/reporting/map_builder.php godmode/reporting/graphs.php godmode/reporting/graph_builder.preview.php: Now all functions of include/functions_ui have ui_ prefix. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4212 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2011-04-13 18:11:02 +02:00
* <code>
* ui_require_css_file ('pandora');
* // Would include include/styles/pandora.js
2019-05-28 10:47:31 +02:00
* </code>.
* @param string $path Path where script is placed.
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*
* @return boolean True if the file was added. False if the file doesn't exist.
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*/
2020-03-26 12:29:38 +01:00
function ui_require_css_file($name, $path='include/styles/', $echo_tag=false)
{
global $config;
$filename = $path.$name.'.css';
2020-03-26 12:29:38 +01:00
if ($echo_tag === true) {
echo '<link type="text/css" rel="stylesheet" href="'.ui_get_full_url($filename, false, false, false).'">';
return null;
}
if (! isset($config['css'])) {
$config['css'] = [];
}
if (isset($config['css'][$name])) {
return true;
}
if (! file_exists($filename)
&& ! file_exists($config['homedir'].'/'.$filename)
2019-06-18 19:17:21 +02:00
&& ! file_exists($config['homedir'].'/'.ENTERPRISE_DIR.'/'.$filename)
) {
return false;
}
2021-05-07 10:50:25 +02:00
if (is_metaconsole()
&& (isset($config['requirements_use_base_url']) === false
|| $config['requirements_use_base_url'] === false)
) {
2019-06-18 19:17:21 +02:00
$config['css'][$name] = '/../../'.$filename;
} else {
$config['css'][$name] = $filename;
}
return true;
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
}
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
/**
* Add a javascript file to the HTML head tag.
*
* To make a javascript file available just put it in include/javascript. The
* file name should be like "name.js". The "name" would be the value
* needed to pass to this function.
*
2019-05-28 10:47:31 +02:00
* @param string $name Script name to add without the "jquery." prefix and the ".js"
* suffix. Example:
* <code>
* ui_require_javascript_file ('pandora');
* // Would include include/javascript/pandora.js
* </code>.
* @param string $path Path where script is placed.
* @param boolean $echo_tag Just echo the script tag of the file.
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*
* @return boolean True if the file was added. False if the file doesn't exist.
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*/
function ui_require_javascript_file($name, $path='include/javascript/', $echo_tag=false)
{
global $config;
$filename = $path.$name.'.js';
if ($echo_tag) {
2019-08-22 14:27:45 +02:00
echo '<script type="text/javascript" src="'.ui_get_full_url($filename, false, false, false).'"></script>';
2019-05-28 10:47:31 +02:00
return null;
}
if (! isset($config['js'])) {
$config['js'] = [];
}
if (isset($config['js'][$name])) {
return true;
}
2019-05-28 10:47:31 +02:00
// We checks two paths because it may fails on enterprise.
if (! file_exists($filename) && ! file_exists($config['homedir'].'/'.$filename)) {
return false;
}
2021-05-07 10:50:25 +02:00
if (is_metaconsole()
&& (isset($config['requirements_use_base_url']) === false
|| $config['requirements_use_base_url'] === false)
) {
$config['js'][$name] = '../../'.$filename;
} else {
$config['js'][$name] = $filename;
}
return true;
}
/**
* Add a enteprise javascript file to the HTML head tag.
*
2019-11-25 13:03:55 +01:00
* * THIS FUNCTION COULD PRODUCE ISSUES WHILE INCLUDING JS FILES.
* * USE ui_require_javascript_file('file', ENTERPRISE_DIR.'/location') INSTEAD.
*
* To make a javascript file available just put it in <ENTERPRISE_DIR>/include/javascript. The
* file name should be like "name.js". The "name" would be the value
* needed to pass to this function.
*
2019-05-28 10:47:31 +02:00
* @param string $name Script name to add without the "jquery."
* prefix and the ".js"
* suffix. Example:
* <code>
* ui_require_javascript_file ('pandora');
* // Would include include/javascript/pandora.js
* </code>.
* @param boolean $disabled_metaconsole Disabled metaconsole.
*
* @return boolean True if the file was added. False if the file doesn't exist.
*/
function ui_require_javascript_file_enterprise($name, $disabled_metaconsole=false)
{
global $config;
$metaconsole_hack = '';
if ($disabled_metaconsole) {
$metaconsole_hack = '../../';
}
$filename = $metaconsole_hack.ENTERPRISE_DIR.'/include/javascript/'.$name.'.js';
if (! isset($config['js'])) {
$config['js'] = [];
}
if (isset($config['js'][$name])) {
return true;
}
2019-05-28 10:47:31 +02:00
// We checks two paths because it may fails on enterprise.
if (!file_exists($filename)
&& !file_exists($config['homedir'].'/'.$filename)
) {
return false;
}
$config['js'][$name] = $filename;
return true;
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
}
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
/**
* Add a jQuery file to the HTML head tag.
*
* To make a jQuery script available just put it in include/javascript. The
* file name should be like "jquery.name.js". The "name" would be the value
* needed to pass to this function. Notice that this function does not manage
* jQuery denpendencies.
*
2019-05-28 10:47:31 +02:00
* @param string $name Script name to add without the "jquery." prefix and the ".js"
* suffix. Example:
* <code>
* ui_require_jquery_file ('form');
* // Would include include/javascript/jquery.form.js
* </code>.
* @param string $path Path where script is placed.
* @param boolean $echo_tag Just echo the script tag of the file.
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*
* @return boolean True if the file was added. False if the file doesn't exist.
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*/
function ui_require_jquery_file($name, $path='include/javascript/', $echo_tag=false)
{
global $config;
$filename = $path.'jquery.'.$name.'.js';
if ($echo_tag) {
echo '<script type="text/javascript" src="'.ui_get_full_url(false, false, false, false).$filename.'"></script>';
2019-05-28 10:47:31 +02:00
return null;
}
if (! isset($config['jquery'])) {
$config['jquery'] = [];
}
if (isset($config['jquery'][$name])) {
return true;
}
2019-05-28 10:47:31 +02:00
// We checks two paths because it may fails on enterprise.
if (! file_exists($filename)
&& ! file_exists($config['homedir'].'/'.$filename)
) {
return false;
}
$config['jquery'][$name] = $filename;
return true;
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
}
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
/**
* Callback function to add stuff to the head. This allows us to add scripts
* to the header after the fact as well as extensive validation.
*
* DO NOT CALL print_f, echo, ob_start, ob_flush, ob_end functions here.
*
* To add css just put them in include/styles and then add them to the
* $config['css'] array
*
2019-05-28 10:47:31 +02:00
* @param string $string Callback will fill this with the current buffer.
* @param mixed $bitfield Callback will fill this with a bitfield (see ob_start).
*
2016-03-30 13:05:08 +02:00
* @return string String to return to the browser
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*/
function ui_process_page_head($string, $bitfield)
{
global $config;
global $vc_public_view;
if (isset($config['ignore_callback']) && $config['ignore_callback'] == true) {
2019-05-28 10:47:31 +02:00
return '';
}
$output = '';
$config_refr = -1;
if (isset($config['refr'])) {
$config_refr = $config['refr'];
}
2019-05-28 10:47:31 +02:00
// If user is logged or displayed view is the public view of visual console.
if ($config_refr > 0
&& (isset($config['id_user']) || $vc_public_view == 1)
) {
if ($config['enable_refr']
|| $_GET['sec2'] == 'operation/agentes/estado_agente'
|| $_GET['sec2'] == 'operation/agentes/tactical'
|| $_GET['sec2'] == 'operation/agentes/group_view'
|| $_GET['sec2'] == 'operation/events/events'
|| $_GET['sec2'] == 'operation/snmpconsole/snmp_view'
2020-03-26 12:29:38 +01:00
|| $_GET['sec2'] == 'operation/dashboard/dashboard'
) {
$query = ui_get_url_refresh(false, false);
2019-05-28 10:47:31 +02:00
/*
* $output .= '<meta http-equiv="refresh" content="' .
* $config_refr . '; URL=' . $query . '" />';
*/
// End.
}
}
$text_subtitle = isset($config['rb_product_name_alt']) ? '' : ' - '.__('the Flexible Monitoring System');
$output .= "\n\t";
$output .= '<title>'.get_product_name().$text_subtitle.'</title>
<meta http-equiv="expires" content="never" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="'.get_copyright_notice().'" />
<meta name="copyright" content="(c) '.get_copyright_notice().'" />
<meta name="robots" content="index, follow" />';
2020-07-22 10:56:16 +02:00
$output .= '<link rel="icon" href="'.ui_get_full_url('/').ui_get_favicon().'" type="image/ico" />';
$output .= '<link rel="shortcut icon" href="'.ui_get_full_url('/').ui_get_favicon().'" type="image/x-icon" />
<link rel="alternate" href="operation/events/events_rss.php" title="Pandora RSS Feed" type="application/rss+xml" />';
if ($config['language'] != 'en') {
2019-05-28 10:47:31 +02:00
// Load translated strings - load them last so they overload all
// the objects.
ui_require_javascript_file('time_'.$config['language']);
ui_require_javascript_file('date'.$config['language']);
ui_require_javascript_file('countdown_'.$config['language']);
}
$output .= "\n\t";
2019-05-28 10:47:31 +02:00
/*
* Load CSS
*/
if (empty($config['css'])) {
$config['css'] = [];
}
$login_ok = true;
if (! isset($config['id_user']) && isset($_GET['login'])) {
2019-05-28 10:47:31 +02:00
if (isset($_POST['nick']) && isset($_POST['pass'])) {
$nick = get_parameter_post('nick');
2019-05-28 10:47:31 +02:00
// This is the variable with the login.
$pass = get_parameter_post('pass');
2019-05-28 10:47:31 +02:00
// This is the variable with the password.
$nick = db_escape_string_sql($nick);
$pass = db_escape_string_sql($pass);
2019-05-28 10:47:31 +02:00
// Process_user_login is a virtual function which should be defined
// in each auth file.
// It accepts username and password. The rest should be internal to
// the auth file.
// The auth file can set $config["auth_error"] to an informative
// error output or reference their internal error messages to it
// process_user_login should return false in case of errors or
// invalid login, the nickname if correct.
$nick_in_db = process_user_login($nick, $pass);
if ($nick_in_db === false) {
$login_ok = false;
}
}
}
// First, if user has assigned a skin then try to use css files of
2019-05-28 10:47:31 +02:00
// skin subdirectory.
$isFunctionSkins = enterprise_include_once('include/functions_skins.php');
if (!$login_ok) {
if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) {
enterprise_hook('skins_cleanup');
}
}
$exists_css = false;
2019-05-28 10:47:31 +02:00
if ($login_ok && $isFunctionSkins !== ENTERPRISE_NOT_HOOK) {
// Checks if user's skin is available.
$exists_skin = enterprise_hook('skins_is_path_set');
if ($exists_skin) {
$skin_path = enterprise_hook('skins_get_skin_path');
$skin_styles = themes_get_css($skin_path.'include/styles/');
$exists_css = !empty($skin_styles);
}
}
2019-05-28 10:47:31 +02:00
// Add the jquery UI styles CSS.
Merge remote-tracking branch 'origin/develop' into 3358-Mejora-en-la-aplicación-de-estilos Conflicts: pandora_console/extensions/agents_modules.php pandora_console/extensions/module_groups.php pandora_console/general/login_page.php pandora_console/godmode/alerts/alert_list.builder.php pandora_console/godmode/alerts/alert_list.list.php pandora_console/godmode/gis_maps/configure_gis_map.php pandora_console/godmode/groups/group_list.php pandora_console/godmode/reporting/visual_console_builder.data.php pandora_console/godmode/reporting/visual_console_builder.editor.php pandora_console/godmode/reporting/visual_console_builder.elements.php pandora_console/godmode/setup/setup_visuals.php pandora_console/include/chart_generator.php pandora_console/include/functions_networkmap.php pandora_console/include/functions_pandora_networkmap.php pandora_console/include/functions_ui.php pandora_console/include/functions_visual_map_editor.php pandora_console/include/styles/common.css pandora_console/include/styles/countdown.css pandora_console/include/styles/datepicker.css pandora_console/include/styles/dialog.css pandora_console/include/styles/help.css pandora_console/include/styles/menu.css pandora_console/include/styles/pandora.css pandora_console/include/styles/pandora_forms.css pandora_console/operation/agentes/estado_monitores.php pandora_console/operation/agentes/interface_traffic_graph_win.php pandora_console/operation/agentes/realtime_win.php pandora_console/operation/agentes/stat_win.php pandora_console/operation/events/events.php pandora_console/operation/snmpconsole/snmp_view.php pandora_console/operation/tree.php pandora_console/operation/visual_console/render_view.php Former-commit-id: 87793fc5a319121753f591da7949ad0ff3bd72b1
2019-02-05 09:23:53 +01:00
$config['css']['jquery-UI'] = 'include/styles/js/jquery-ui.min.css';
2019-06-03 11:55:56 +02:00
$config['css']['jquery-UI-custom'] = 'include/styles/js/jquery-ui_custom.css';
2019-05-28 10:47:31 +02:00
// Add the dialog styles CSS.
$config['css']['dialog'] = 'include/styles/dialog.css';
2019-05-28 10:47:31 +02:00
// Add the dialog styles CSS.
Merge remote-tracking branch 'origin/develop' into 3358-Mejora-en-la-aplicación-de-estilos Conflicts: pandora_console/extensions/agents_modules.php pandora_console/extensions/module_groups.php pandora_console/general/login_page.php pandora_console/godmode/alerts/alert_list.builder.php pandora_console/godmode/alerts/alert_list.list.php pandora_console/godmode/gis_maps/configure_gis_map.php pandora_console/godmode/groups/group_list.php pandora_console/godmode/reporting/visual_console_builder.data.php pandora_console/godmode/reporting/visual_console_builder.editor.php pandora_console/godmode/reporting/visual_console_builder.elements.php pandora_console/godmode/setup/setup_visuals.php pandora_console/include/chart_generator.php pandora_console/include/functions_networkmap.php pandora_console/include/functions_pandora_networkmap.php pandora_console/include/functions_ui.php pandora_console/include/functions_visual_map_editor.php pandora_console/include/styles/common.css pandora_console/include/styles/countdown.css pandora_console/include/styles/datepicker.css pandora_console/include/styles/dialog.css pandora_console/include/styles/help.css pandora_console/include/styles/menu.css pandora_console/include/styles/pandora.css pandora_console/include/styles/pandora_forms.css pandora_console/operation/agentes/estado_monitores.php pandora_console/operation/agentes/interface_traffic_graph_win.php pandora_console/operation/agentes/realtime_win.php pandora_console/operation/agentes/stat_win.php pandora_console/operation/events/events.php pandora_console/operation/snmpconsole/snmp_view.php pandora_console/operation/tree.php pandora_console/operation/visual_console/render_view.php Former-commit-id: 87793fc5a319121753f591da7949ad0ff3bd72b1
2019-02-05 09:23:53 +01:00
$config['css']['dialog'] = 'include/styles/js/introjs.css';
2019-07-01 16:57:33 +02:00
// If the theme is the default, we don't load it twice.
if ($config['style'] !== 'pandora') {
// It loads the last of all.
$config['css']['theme'] = 'include/styles/'.$config['style'].'.css';
}
2019-05-28 10:47:31 +02:00
// If skin's css files exists then add them.
if ($exists_css) {
foreach ($skin_styles as $filename => $name) {
$style = substr($filename, 0, (strlen($filename) - 4));
$config['css'][$style] = $skin_path.'include/styles/'.$filename;
}
2019-05-28 10:47:31 +02:00
} else {
// Otherwise assign default and user's css.
// User style should go last so it can rewrite common styles.
$config['css'] = array_merge(
[
2019-07-01 16:57:33 +02:00
'common' => 'include/styles/common.css',
'menu' => 'include/styles/menu.css',
'tables' => 'include/styles/tables.css',
'general' => 'include/styles/pandora.css',
],
$config['css']
);
}
2019-05-28 10:47:31 +02:00
// We can't load empty and we loaded (conditionally) ie.
$loaded = [
'',
'ie',
];
foreach ($config['css'] as $name => $filename) {
if (in_array($name, $loaded)) {
continue;
}
array_push($loaded, $name);
$url_css = ui_get_full_url($filename, false, false, false);
$output .= '<link rel="stylesheet" href="'.$url_css.'" type="text/css" />'."\n\t";
}
2019-05-28 10:47:31 +02:00
/*
* End load CSS
*/
/*
* Load jQuery
*/
if (empty($config['jquery'])) {
$config['jquery'] = [];
2019-05-28 10:47:31 +02:00
// If it's empty, false or not init set array to empty just in case.
}
2019-05-28 10:47:31 +02:00
// Pandora specific jquery should go first.
$black_list_pages_old_jquery = ['operation/gis_maps/index'];
if (in_array(get_parameter('sec2'), $black_list_pages_old_jquery)) {
$config['jquery'] = array_merge(
[
'jquery' => 'include/javascript/jquery.js',
'ui' => 'include/javascript/jquery.ui.core.js',
'dialog' => 'include/javascript/jquery.ui.dialog.js',
'pandora' => 'include/javascript/jquery.pandora.js',
],
$config['jquery']
);
} else {
$config['jquery'] = array_merge(
[
2021-08-12 09:30:43 +02:00
'jquery' => 'include/javascript/jquery.current.js',
'pandora' => 'include/javascript/jquery.pandora.js',
'jquery-ui' => 'include/javascript/jquery-ui.min.js',
],
$config['jquery']
);
}
2019-05-28 10:47:31 +02:00
// Include the datapicker language if exists.
if (file_exists('include/languages/datepicker/jquery.ui.datepicker-'.$config['language'].'.js')) {
$config['jquery']['datepicker_language'] = 'include/languages/datepicker/jquery.ui.datepicker-'.$config['language'].'.js';
}
2019-05-28 10:47:31 +02:00
// Include countdown library.
$config['jquery']['countdown'] = 'include/javascript/jquery.countdown.js';
2019-05-28 10:47:31 +02:00
// Then add each script as necessary.
$loaded = [''];
foreach ($config['jquery'] as $name => $filename) {
if (in_array($name, $loaded)) {
continue;
}
array_push($loaded, $name);
$url_js = ui_get_full_url($filename, false, false, false);
$output .= '<script type="text/javascript" src="'.$url_js.'"></script>'."\n\t";
}
2019-05-28 10:47:31 +02:00
/*
* End load JQuery
*/
2019-06-06 17:50:47 +02:00
/*
* Load JS
*/
if (empty($config['js'])) {
$config['js'] = [];
// If it's empty, false or not init set array to empty just in case.
}
// Pandora specific JavaScript should go first.
$config['js'] = array_merge(
[
'pandora' => 'include/javascript/pandora.js',
'pandora_ui' => 'include/javascript/pandora_ui.js',
],
$config['js']
);
2019-06-06 17:50:47 +02:00
// Load base64 javascript library.
$config['js']['base64'] = 'include/javascript/encode_decode_base64.js';
// Load qrcode library.
$config['js']['qrcode'] = 'include/javascript/qrcode.js';
// Load intro.js library (for bubbles and clippy).
$config['js']['intro'] = 'include/javascript/intro.js';
$config['js']['clippy'] = 'include/javascript/clippy.js';
// Load Underscore.js library.
$config['js']['underscore'] = 'include/javascript/underscore-min.js';
// Load other javascript.
// We can't load empty.
$loaded = [''];
foreach ($config['js'] as $name => $filename) {
if (in_array($name, $loaded)) {
continue;
}
array_push($loaded, $name);
$url_js = ui_get_full_url($filename, false, false, false);
2019-06-06 17:50:47 +02:00
$output .= '<script type="text/javascript" src="'.$url_js.'"></script>'."\n\t";
}
/*
* End load JS
*/
include_once __DIR__.'/graphs/functions_flot.php';
$output .= include_javascript_dependencies_flot_graph(true);
$output .= '<!--[if gte IE 6]>
<link rel="stylesheet" href="include/styles/ie.css" type="text/css"/>
<![endif]-->';
2018-10-19 11:31:06 +02:00
$output .= $string;
2018-10-19 11:31:06 +02:00
return $output;
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
}
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
/**
* Callback function to add stuff to the body
*
2019-05-28 10:47:31 +02:00
* @param string $string Callback will fill this with the current buffer.
* @param mixed $bitfield Callback will fill this with a bitfield (see ob_start).
*
* @return string String to return to the browser
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
*/
function ui_process_page_body($string, $bitfield)
{
global $config;
if (isset($config['ignore_callback'])
&& $config['ignore_callback'] == true
) {
2019-05-28 10:47:31 +02:00
return null;
}
2019-05-28 10:47:31 +02:00
// Show custom background.
$output = '<body'.(($config['pure']) ? ' class="pure"' : '').'>';
$output .= $string;
$output .= '</body>';
return $output;
2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
}
2016-03-30 13:05:08 +02:00
/**
* Prints a pagination menu to browse into a collection of data.
*
* @param integer $count Number of elements in the collection.
* @param string $url URL of the pagination links. It must include all form
* values as GET form.
* @param integer $offset Current offset for the pagination. Default value would be
2019-05-28 10:47:31 +02:00
* taken from $_REQUEST['offset'].
* @param integer $pagination Current pagination size. If a user requests a larger
2019-05-28 10:47:31 +02:00
* pagination than config["block_size"].
* @param boolean $return Whether to return or print this.
* @param string $offset_name The name of parameter for the offset.
* @param boolean $print_total_items Show the text with the total items. By default true.
2019-05-28 10:47:31 +02:00
* @param mixed $other_class Other_class.
* @param mixed $script Script.
* @param mixed $parameter_script Parameter_script.
* @param string $set_id Set id of div.
*
* @return string The pagination div or nothing if no pagination needs to be done
*/
function ui_pagination(
$count,
$url=false,
$offset=0,
$pagination=0,
$return=false,
$offset_name='offset',
$print_total_items=true,
$other_class='',
$script='',
$parameter_script=[
'count' => '',
'offset' => 'offset_param',
],
$set_id=''
) {
global $config;
if (empty($pagination)) {
$pagination = (int) $config['block_size'];
}
if (is_string($offset)) {
$offset_name = $offset;
$offset = (int) get_parameter($offset_name);
}
if (empty($offset)) {
$offset = (int) get_parameter($offset_name);
}
if (empty($url)) {
$url = ui_get_url_refresh([$offset_name => false]);
}
if (!empty($set_id)) {
2019-05-28 10:47:31 +02:00
$set_id = " id = '".$set_id."'";
}
2019-05-28 10:47:31 +02:00
// Pagination links for users include delete, create and other params,
// now not use these params, and not retry the previous action when go to
// pagination link.
$remove = [
'user_del',
'disable_user',
'delete_user',
];
2020-11-23 10:40:28 +01:00
// Check if url has &#x20; blankspace and replace it.
preg_replace('/\&#x20;/', '%20', $url);
$url = explode('&', $url);
$finalUrl = [];
foreach ($url as $key => $value) {
2019-05-28 10:47:31 +02:00
if (strpos($value, $remove[0]) === false
&& strpos($value, $remove[1]) === false
&& strpos($value, $remove[2]) === false
) {
array_push($finalUrl, $value);
}
}
$url = implode('&', $finalUrl);
/*
URL passed render links with some parameter
&offset - Offset records passed to next page
&counter - Number of items to be blocked
Pagination needs $url to build the base URL to render links, its a base url, like
" http://pandora/index.php?sec=godmode&sec2=godmode/admin_access_logs "
*/
2019-05-28 10:47:31 +02:00
$block_limit = PAGINATION_BLOCKS_LIMIT;
2019-05-28 10:47:31 +02:00
// Visualize only $block_limit blocks.
if ($count <= $pagination) {
if ($print_total_items) {
2019-05-28 10:47:31 +02:00
$output = "<div class='pagination ".$other_class."' ".$set_id.'>';
// Show the count of items.
$output .= '<div class="total_pages">'.sprintf(__('Total items: %s'), $count).'</div>';
2019-05-28 10:47:31 +02:00
// End div and layout.
$output .= '</div>';
if ($return === false) {
echo $output;
}
return $output;
}
return false;
}
$number_of_pages = ceil($count / $pagination);
$actual_page = floor($offset / $pagination);
$ini_page = (floor($actual_page / $block_limit) * $block_limit);
$end_page = ($ini_page + $block_limit - 1);
2019-07-05 09:31:23 +02:00
if ($end_page >= $number_of_pages) {
$end_page = ($number_of_pages - 1);
}
2019-05-28 10:47:31 +02:00
$output = "<div class='pagination ".$other_class."' ".$set_id.'>';
2019-05-28 10:47:31 +02:00
// Show the count of items.
if ($print_total_items) {
$output .= '<div class="total_pages">'.sprintf(__('Total items: %s'), $count).'</div>';
}
$output .= "<div class='total_number'>";
2019-05-28 10:47:31 +02:00
// Show GOTO FIRST PAGE button.
if ($number_of_pages > $block_limit) {
if (!empty($script)) {
$script_modified = $script;
$script_modified = str_replace(
$parameter_script['count'],
$count,
$script_modified
);
$script_modified = str_replace(
$parameter_script['offset'],
0,
$script_modified
);
2019-05-28 10:47:31 +02:00
$output .= "<a class='pagination-arrows ".$other_class." offset_0'
href='javascript: ".$script_modified.";'>".html_print_image('images/go_first_g.png', true, ['class' => 'bot invert_filter']).'</a>';
} else {
$output .= "<a class='pagination-arrows ".$other_class." offset_0' href='".io_safe_output($url).'&amp;'.$offset_name."=0'>".html_print_image('images/go_first_g.png', true, ['class' => 'bot invert_filter']).'</a>';
}
}
2019-05-28 10:47:31 +02:00
/*
* Show PREVIOUS PAGE GROUP OF PAGES
* For example
* You are in the 12 page with a block of 5 pages
* << < 10 - 11 - [12] - 13 - 14 > >>
* Click in <
* Result << < 5 - 6 - 7 - 8 - [9] > >>
*/
if ($ini_page >= $block_limit) {
$offset_previous_page = (($ini_page - 1) * $pagination);
if (!empty($script)) {
$script_modified = $script;
$script_modified = str_replace(
$parameter_script['count'],
$count,
$script_modified
);
$script_modified = str_replace(
$parameter_script['offset'],
$offset_previous_page,
$script_modified
);
2019-05-28 10:47:31 +02:00
$output .= "<a class='pagination-arrows ".$other_class.' offset_'.$offset_previous_page."'
href='javacript: ".$script_modified.";'>".html_print_image('images/go_previous_g.png', true, ['class' => 'bot invert_filter']).'</a>';
} else {
$output .= "<a class='pagination-arrows ".$other_class.' offset_'.$offset_previous_page."' href='".$url.'&amp;'.$offset_name.'='.$offset_previous_page."'>".html_print_image('images/go_previous_g.png', true, ['class' => 'bot invert_filter']).'</a>';
}
}
2019-05-28 10:47:31 +02:00
// Show pages.
for ($iterator = $ini_page; $iterator <= $end_page; $iterator++) {
$actual_page = (int) ($offset / $pagination);
if ($iterator == $actual_page) {
$output .= "<div class='page_number page_number_active'>";
} else {
$output .= "<div class='page_number'>";
}
$offset_page = ($iterator * $pagination);
if (!empty($script)) {
$script_modified = $script;
$script_modified = str_replace(
$parameter_script['count'],
$count,
$script_modified
);
$script_modified = str_replace(
$parameter_script['offset'],
$offset_page,
$script_modified
);
2019-05-28 10:47:31 +02:00
$output .= "<a class='pagination ".$other_class.' offset_'.$offset_page."'
href='javascript: ".$script_modified.";'>";
} else {
2019-05-28 10:47:31 +02:00
$output .= "<a class='pagination ".$other_class.' offset_'.$offset_page."' href='".$url.'&amp;'.$offset_name.'='.$offset_page."'>";
}
$output .= $iterator;
$output .= '</a></div>';
}
2019-05-28 10:47:31 +02:00
/*
* Show NEXT PAGE GROUP OF PAGES
* For example
* You are in the 12 page with a block of 5 pages
* << < 10 - 11 - [12] - 13 - 14 > >>
* Click in >
* Result << < [15] - 16 - 17 - 18 - 19 > >>
*/
if (($number_of_pages - $ini_page) > $block_limit) {
$offset_next_page = (($end_page + 1) * $pagination);
if (!empty($script)) {
$script_modified = $script;
$script_modified = str_replace(
$parameter_script['count'],
$count,
$script_modified
);
$script_modified = str_replace(
$parameter_script['offset'],
$offset_next_page,
$script_modified
);
2019-05-28 10:47:31 +02:00
$output .= "<a class='pagination-arrows ".$other_class.' offset_'.$offset_next_page."'
href='javascript: ".$script_modified.";'>".html_print_image('images/go_next_g.png', true, ['class' => 'bot invert_filter']).'</a>';
} else {
$output .= "<a class='pagination-arrows ".$other_class.' offset_'.$offset_next_page."' href='".$url.'&amp;'.$offset_name.'='.$offset_next_page."'>".html_print_image('images/go_next_g.png', true, ['class' => 'bot invert_filter']).'</a>';
}
}
2019-05-28 10:47:31 +02:00
// Show GOTO LAST PAGE button.
if ($number_of_pages > $block_limit) {
$offset_lastpage = (($number_of_pages - 1) * $pagination);
if (!empty($script)) {
$script_modified = $script;
$script_modified = str_replace(
$parameter_script['count'],
$count,
$script_modified
);
$script_modified = str_replace(
$parameter_script['offset'],
$offset_lastpage,
$script_modified
);
2019-05-28 10:47:31 +02:00
$output .= "<a class='pagination-arrows ".$other_class.' offset_'.$offset_lastpage."'
href='javascript: ".$script_modified.";'>".html_print_image('images/go_last_g.png', true, ['class' => 'bot invert_filter']).'</a>';
} else {
$output .= "<a class='pagination-arrows ".$other_class.' offset_'.$offset_lastpage."' href='".$url.'&amp;'.$offset_name.'='.$offset_lastpage."'>".html_print_image('images/go_last_g.png', true, ['class' => 'bot invert_filter']).'</a>';
}
}
$output .= '</div>';
// End div and layout
2019-05-28 10:47:31 +02:00
// total_number.
$output .= '</div>';
if ($return === false) {
echo $output;
}
return $output;
}
2016-03-30 13:05:08 +02:00
/**
* Prints only a tip button which shows a text when the user puts the mouse over it.
*
2019-05-28 10:47:31 +02:00
* @param string $action Complete text to show in the tip.
* @param boolean $return Whether to return an output string or echo now.
*
* @return string HTML code if return parameter is true.
*/
function ui_print_session_action_icon($action, $return=false)
{
global $config;
$key_icon = [
'acl' => 'images/delete.png',
'agent' => 'images/agent.png',
'module' => 'images/module.png',
'alert' => 'images/bell.png',
'incident' => 'images/default_list.png',
'logon' => 'images/house.png',
'logoff' => 'images/house.png',
'massive' => 'images/config.png',
'hack' => 'images/application_edit.png',
'event' => 'images/lightning_go.png',
'policy' => 'images/policies_mc.png',
'report' => 'images/reporting.png',
'file collection' => 'images/collection_col.png',
'user' => 'images/user_green.png',
'password' => 'images/lock.png',
'session' => 'images/heart_col.png',
'snmp' => 'images/snmp.png',
'command' => 'images/bell.png',
'category' => 'images/category_col.png',
'dashboard' => 'images/dashboard_col.png',
'api' => 'images/eye.png',
'db' => 'images/database.png',
'setup' => 'images/cog.png',
];
$output = '';
foreach ($key_icon as $key => $icon) {
if (stristr($action, $key) !== false) {
$output = html_print_image($icon, true, ['title' => $action, 'class' => 'invert_filter'], false, false, false, true).' ';
break;
}
}
if ($return) {
return $output;
}
echo $output;
}
2016-03-30 13:05:08 +02:00
/**
* Prints only a tip button which shows a text when the user puts the mouse over it.
*
2019-05-28 10:47:31 +02:00
* @param string $text Complete text to show in the tip.
* @param boolean $return Whether to return an output string or echo now.
* @param string $img Displayed image.
* @param boolean $is_relative Print image in relative way.
2019-05-29 17:34:11 +02:00
* @param string $style Specific style.
*
* @return string HTML code if return parameter is true.
*/
2019-05-28 10:47:31 +02:00
function ui_print_help_tip(
$text,
$return=false,
$img='images/tip_help.png',
2019-05-29 17:34:11 +02:00
$is_relative=false,
$style=''
2019-05-28 10:47:31 +02:00
) {
2019-05-29 17:34:11 +02:00
$output = '<a href="javascript:" class="tip" style="'.$style.'" >';
$output .= html_print_image(
$img,
true,
['title' => $text],
false,
$is_relative && is_metaconsole()
).'</a>';
if ($return) {
return $output;
}
echo $output;
}
2019-05-28 10:47:31 +02:00
/**
* Prints link to show something.
*
* @param string $text Complete text to show in the tip.
* @param boolean $return Whether to return an output string or echo now.
* @param string $img Displayed image.
* @param boolean $is_relative Print image in relative way.
*
* @return string HTML.
*/
function ui_print_help_tip_border(
$text,
$return=false,
$img='images/tip_border.png',
$is_relative=false
) {
$output = '<a href="javascript:" class="tip" >'.html_print_image(
$img,
true,
['title' => $text],
false,
$is_relative && is_metaconsole()
).'</a>';
if ($return) {
return $output;
}
echo $output;
}
/**
* Powerful debug function that also shows a backtrace.
*
* This functions need to have active $config['debug'] variable to work.
*
2019-05-28 10:47:31 +02:00
* @param mixed $var Variable name to debug.
* @param boolean $backtrace Wheter to print the backtrace or not.
*
* @return boolean Tru if the debug was actived. False if not.
*/
function ui_debug($var, $backtrace=true)
{
global $config;
if (! isset($config['debug'])) {
return false;
}
static $id = 0;
static $trace_id = 0;
$id++;
if ($backtrace) {
echo '<div class="debug">';
echo '<a href="#" onclick="$(\'#trace-'.$id.'\').toggle ();return false;">Backtrace</a>';
echo '<div id="trace-'.$id.'" class="backtrace invisible">';
echo '<ol>';
$traces = debug_backtrace();
2019-05-28 10:47:31 +02:00
// Ignore debug function.
unset($traces[0]);
foreach ($traces as $trace) {
$trace_id++;
/*
2019-05-28 10:47:31 +02:00
* Many classes are used to allow better customization.
* Please, do not remove them
*/
echo '<li>';
if (isset($trace['class'])) {
echo '<span class="class">'.$trace['class'].'</span>';
}
if (isset($trace['type'])) {
echo '<span class="type">'.$trace['type'].'</span>';
}
echo '<span class="function">';
echo '<a href="#" onclick="$(\'#args-'.$trace_id.'\').toggle ();return false;">'.$trace['function'].'()</a>';
echo '</span>';
if (isset($trace['file'])) {
echo ' - <span class="filename">';
echo str_replace($config['homedir'].'/', '', $trace['file']);
echo ':'.$trace['line'].'</span>';
} else {
echo ' - <span class="filename"><em>Unknown file</em></span>';
}
echo '<pre id="args-'.$trace_id.'" class="invisible">';
echo '<div class="parameters">Parameter values:</div>';
echo '<ol>';
foreach ($trace['args'] as $arg) {
echo '<li>';
print_r($arg);
echo '</li>';
}
echo '</ol>';
echo '</pre>';
echo '</li>';
}
echo '</ol>';
echo '</div></div>';
}
2019-05-28 10:47:31 +02:00
// Actually print the variable given.
echo '<pre class="debug">';
print_r($var);
echo '</pre>';
return true;
}
/**
* Prints icon of a module type
*
2019-05-28 10:47:31 +02:00
* @param integer $id_moduletype Module Type ID.
* @param boolean $return Whether to return or print.
* @param boolean $relative Whether to use relative path to image or not (i.e. $relative= true : /pandora/<img_src>).
* @param boolean $options Whether to use image options like style, border or title on the icon.
* @param boolean $src Src.
*
* @return string An HTML string with the icon. Printed if return is false
*/
2019-05-28 10:47:31 +02:00
function ui_print_moduletype_icon(
$id_moduletype,
$return=false,
$relative=false,
$options=true,
$src=false
) {
global $config;
2019-05-28 10:47:31 +02:00
$type = db_get_row(
'ttipo_modulo',
'id_tipo',
(int) $id_moduletype,
[
'descripcion',
'icon',
]
);
if ($type === false) {
$type = [];
$type['descripcion'] = __('Unknown type');
$type['icon'] = 'b_down.png';
}
$imagepath = 'images/'.$type['icon'];
if (! file_exists($config['homedir'].'/'.$imagepath)) {
$imagepath = ENTERPRISE_DIR.'/'.$imagepath;
}
if ($src) {
return $imagepath;
}
if ($options) {
return html_print_image(
$imagepath,
$return,
[
'border' => 0,
'title' => $type['descripcion'],
'class' => 'invert_filter',
],
false,
$relative
);
} else {
return html_print_image(
$imagepath,
$return,
false,
false,
$relative
);
}
}
/**
* Print module max/min values for warning/critical state
*
2019-05-28 10:47:31 +02:00
* @param float $max_warning Max value for warning state.
* @param float $min_warning Min value for warning state.
* @param string $str_warning String warning state.
* @param float $max_critical Max value for critical state.
* @param float $min_critical Min value for critical state.
* @param string $str_critical String for critical state.
*
* @return string HTML string
*/
2019-05-28 10:47:31 +02:00
function ui_print_module_warn_value(
$max_warning,
$min_warning,
$str_warning,
$max_critical,
$min_critical,
$str_critical,
$warning_inverse=0,
$critical_inverse=0
2019-05-28 10:47:31 +02:00
) {
$war_inv = '';
$crit_inv = '';
if ($warning_inverse == 1) {
$war_inv = ' (inv)';
}
if ($critical_inverse == 1) {
$crit_inv = ' (inv)';
}
$data = "<span title='".__('Warning').': '.__('Max').$max_warning.'/'.__('Min').$min_warning.$war_inv.' - '.__('Critical').': '.__('Max').$max_critical.'/'.__('Min').$min_critical.$crit_inv."'>";
if ($max_warning != $min_warning) {
$data .= format_for_graph($max_warning).'/'.format_for_graph($min_warning);
} else {
$data .= __('N/A');
}
$data .= ' - ';
if ($max_critical != $min_critical) {
$data .= format_for_graph($max_critical).'/'.format_for_graph($min_critical);
} else {
$data .= __('N/A');
}
$data .= '</span>';
return $data;
}
/**
* Format a file size from bytes to a human readable meassure.
*
2019-05-28 10:47:31 +02:00
* @param integer $bytes File size in bytes.
*
* @return string Bytes converted to a human readable meassure.
*/
function ui_format_filesize($bytes)
{
$bytes = (int) $bytes;
$strs = [
'B',
'kB',
'MB',
'GB',
'TB',
];
if ($bytes <= 0) {
return '0 '.$strs[0];
}
$con = 1024;
$log = (int) (log($bytes, $con));
return format_numeric(($bytes / pow($con, $log)), 1).' '.$strs[$log];
}
/**
* Returns the current path to the selected image set to show the
* status of agents and alerts.
*
* @return array An array with the image path, image width and image height.
*/
function ui_get_status_images_path()
{
global $config;
2018-10-04 11:43:08 +02:00
$imageset = $config['status_images_set'];
2018-10-04 11:43:08 +02:00
if (strpos($imageset, ',') === false) {
$imageset .= ',40x18';
}
2018-10-04 11:43:08 +02:00
$array_split = preg_split('/\,/', $imageset);
$imageset = $array_split[0];
$sizes = $array_split[1];
2018-10-04 11:43:08 +02:00
if (strpos($sizes, 'x') === false) {
$sizes .= 'x18';
}
2018-10-04 11:43:08 +02:00
$array_split_size = preg_split('/x/', $sizes);
$imagewidth = $array_split_size[0];
$imageheight = $array_split_size[1];
2018-10-04 11:43:08 +02:00
$imagespath = 'images/status_sets/'.$imageset;
2018-10-04 11:43:08 +02:00
return [$imagespath];
}
2009-04-20 Esteban Sanchez <estebans@artica.es> * godmode/agentes/module_manager_editor.php, godmode/agentes/module_manager_editor_common.php, godmode/agentes/module_manager_editor_data.php, godmode/agentes/module_manager_editor_network.php, godmode/agentes/module_manager_editor_plugin.php, godmode/agentes/module_manager_editor_prediction.php, godmode/agentes/module_manager_editor_wmi.php, godmode/agentes/module_manager.php: Some fixes to allow form reutilization. * include/javascript/jquery.pandora.controls.js: Fixed a typo. Added pandoraSelectGroup control. * include/javascript/jquery.pandora.js: Separate between auto executed code and document ready function. * include/javascript/pandora_modules.js: Added to repository. Functions to use on module editors. * include/functions_agents.php: Added get_agents(). * include/functions_db.php: Added get_user_first_group(). Changed user_access_to_agent() parameters order. * include/functions_reporting.php: Style corrections. * include/functions_ui.php: Added doc to print_status_image(). Added print_ui_agents_list() to print a list of agents with a search form and a lot of configuration options easily. * include/functions_ui_renders.php: Added to repository. New API for renders on UI components. * operation/agentes/estado_agente.php: Make table wider. * godmode/reporting/reporting_builder.php: Replaced exit with return. Use pandoraSelectGroup control. * godmode/servers/manage_recontask_form.php: Style corrections to fit Pandora styles. * godmode/servers/modificar_server.php: Removed a notice from a typo. * godmode/setup/setup.php: Fixed table data indexes. Removed javascript code from visual setup. * godmode/setup/setup_visuals.php: Some strings changed. Style correction. * godmode/menu.php: Added policies enterprise menu option. * images/policies.png: Added to repository. * godmode/agentes/modificar_agente.php: Style correction by using pandora functions. * godmode/agentes/massive_operations.php: Fixed tab styles that was showing wrong the . * godmode/agentes/manage_config_remote.php: Changes in user_access_to_agent() * general/ui/agents_list.php: Added to repository. Reusable render for an agent list. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1632 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-04-20 16:00:27 +02:00
/**
* Prints an image representing a status.
*
* @param string $type Type.
* @param string $title Title.
* @param boolean $return Whether to return an output string or echo now (optional, echo by default).
* @param array $options Options to set image attributes: I.E.: style.
* @param string $path Path of the image, if not provided use the status path.
* @param boolean $image_with_css Don't use an image. Draw an image with css styles.
2020-03-23 12:47:58 +01:00
* @param string $extra_text Text that is displayed after title (i.e. time elapsed since last status change of module).
2009-04-20 Esteban Sanchez <estebans@artica.es> * godmode/agentes/module_manager_editor.php, godmode/agentes/module_manager_editor_common.php, godmode/agentes/module_manager_editor_data.php, godmode/agentes/module_manager_editor_network.php, godmode/agentes/module_manager_editor_plugin.php, godmode/agentes/module_manager_editor_prediction.php, godmode/agentes/module_manager_editor_wmi.php, godmode/agentes/module_manager.php: Some fixes to allow form reutilization. * include/javascript/jquery.pandora.controls.js: Fixed a typo. Added pandoraSelectGroup control. * include/javascript/jquery.pandora.js: Separate between auto executed code and document ready function. * include/javascript/pandora_modules.js: Added to repository. Functions to use on module editors. * include/functions_agents.php: Added get_agents(). * include/functions_db.php: Added get_user_first_group(). Changed user_access_to_agent() parameters order. * include/functions_reporting.php: Style corrections. * include/functions_ui.php: Added doc to print_status_image(). Added print_ui_agents_list() to print a list of agents with a search form and a lot of configuration options easily. * include/functions_ui_renders.php: Added to repository. New API for renders on UI components. * operation/agentes/estado_agente.php: Make table wider. * godmode/reporting/reporting_builder.php: Replaced exit with return. Use pandoraSelectGroup control. * godmode/servers/manage_recontask_form.php: Style corrections to fit Pandora styles. * godmode/servers/modificar_server.php: Removed a notice from a typo. * godmode/setup/setup.php: Fixed table data indexes. Removed javascript code from visual setup. * godmode/setup/setup_visuals.php: Some strings changed. Style correction. * godmode/menu.php: Added policies enterprise menu option. * images/policies.png: Added to repository. * godmode/agentes/modificar_agente.php: Style correction by using pandora functions. * godmode/agentes/massive_operations.php: Fixed tab styles that was showing wrong the . * godmode/agentes/manage_config_remote.php: Changes in user_access_to_agent() * general/ui/agents_list.php: Added to repository. Reusable render for an agent list. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1632 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-04-20 16:00:27 +02:00
*
* @return string HTML code if return parameter is true.
*/
2019-05-28 10:47:31 +02:00
function ui_print_status_image(
$type,
$title='',
$return=false,
$options=false,
$path=false,
$image_with_css=false,
2020-03-23 12:47:58 +01:00
$extra_info=''
2019-05-28 10:47:31 +02:00
) {
if ($path === false) {
$imagepath_array = ui_get_status_images_path();
$imagepath = $imagepath_array[0];
} else {
$imagepath = $path;
}
2018-10-04 11:43:08 +02:00
if ($imagepath == 'images/status_sets/default') {
$image_with_css = true;
}
$imagepath .= '/'.$type;
2018-10-04 11:43:08 +02:00
if ($image_with_css === true) {
$shape_status = get_shape_status_set($type);
2020-03-23 12:47:58 +01:00
return ui_print_status_sets($type, $title, $return, $shape_status, $extra_info);
} else {
if ($options === false) {
$options = [];
}
$options['title'] = $title;
return html_print_image($imagepath, $return, $options, false, false, false, true);
}
}
2018-10-04 11:43:08 +02:00
2020-05-20 19:04:42 +02:00
/**
* Returns html code to print a shape for a module.
*
* @param integer $status Module status.
* @param boolean $return True or false.
* @param string $class Custom class or use defined.
2021-10-13 22:47:31 +02:00
* @param string $title Custom title or inherit from module status.
2020-05-20 19:04:42 +02:00
*
* @return string HTML code for shape.
*/
function ui_print_module_status(
$status,
$return=false,
2021-10-13 22:47:31 +02:00
$class='status_rounded_rectangles',
$title=null
2020-05-20 19:04:42 +02:00
) {
$color = modules_get_color_status($status, true);
2021-10-13 22:47:31 +02:00
if ($title === null) {
$title = modules_get_modules_status($status);
}
2020-05-20 19:04:42 +02:00
$output = '<div style="background: '.$color;
$output .= '" class="'.$class;
2021-11-15 18:58:57 +01:00
$output .= ' forced_title" data-title="'.$title.'" title="';
$output .= $title.'" data-use_title_for_force_title="1"></div>';
2020-05-20 19:04:42 +02:00
if ($return === false) {
echo $output;
}
return $output;
}
/**
* Get the shape of an image by assigning it a CSS class. Prints an image with CSS representing a status.
*
* @param string $type Module/Agent/Alert status.
*
* @return array With CSS class.
*/
function get_shape_status_set($type)
{
switch ($type) {
// Small rectangles.
case STATUS_ALERT_NOT_FIRED:
case STATUS_ALERT_FIRED:
case STATUS_ALERT_DISABLED:
$return = ['class' => 'status_small_rectangles'];
break;
// Rounded rectangles.
case STATUS_MODULE_OK:
case STATUS_AGENT_OK:
case STATUS_MODULE_NO_DATA:
case STATUS_AGENT_NO_DATA:
case STATUS_MODULE_CRITICAL:
case STATUS_MODULE_ALERT_TRIGGERED:
case STATUS_AGENT_CRITICAL:
case STATUS_MODULE_WARNING:
case STATUS_AGENT_WARNING:
case STATUS_MODULE_UNKNOWN:
case STATUS_AGENT_UNKNOWN:
case STATUS_AGENT_DOWN:
2019-08-10 02:13:01 +02:00
case STATUS_AGENT_NO_MONITORS:
$return = ['class' => 'status_rounded_rectangles'];
break;
// Small squares.
case STATUS_SERVER_OK:
case STATUS_SERVER_DOWN:
case STATUS_SERVER_CRASH:
$return = ['class' => 'status_small_squares'];
break;
2018-10-04 11:43:08 +02:00
// Balls.
case STATUS_AGENT_CRITICAL_BALL:
case STATUS_AGENT_WARNING_BALL:
case STATUS_AGENT_DOWN_BALL:
case STATUS_AGENT_UNKNOWN_BALL:
case STATUS_AGENT_OK_BALL:
case STATUS_AGENT_NO_DATA_BALL:
case STATUS_AGENT_NO_MONITORS_BALL:
case STATUS_SERVER_OK_BALL:
case STATUS_SERVER_DOWN_BALL:
case STATUS_SERVER_CRASH_BALL:
$return = ['class' => 'status_balls'];
break;
2018-10-04 11:43:08 +02:00
// Small Balls.
case STATUS_MODULE_OK_BALL:
case STATUS_MODULE_CRITICAL_BALL:
case STATUS_MODULE_WARNING_BALL:
case STATUS_MODULE_NO_DATA_BALL:
case STATUS_MODULE_UNKNOWN_BALL:
case STATUS_ALERT_FIRED_BALL:
case STATUS_ALERT_NOT_FIRED_BALL:
case STATUS_ALERT_DISABLED_BALL:
$return = ['class' => 'status_small_balls'];
break;
default:
// Ignored.
break;
}
return $return;
}
2019-05-28 12:13:29 +02:00
/**
* Prints an image representing a status.
*
2020-03-23 12:47:58 +01:00
* @param string $status Module status.
* @param string $title Title.
* @param boolean $return Whether to return an output string or echo now (optional, echo by default).
* @param array $options Options to set image attributes: I.E.: style.
* @param string $extra_info Text that is displayed after title (i.e. time elapsed since last status change of module).
2019-05-28 12:13:29 +02:00
*
* @return string HTML.
*/
function ui_print_status_sets(
2019-05-28 12:13:29 +02:00
$status,
$title='',
$return=false,
$options=false,
2020-11-25 17:00:37 +01:00
$extra_info='',
$get_status_color=true
2019-05-28 12:13:29 +02:00
) {
global $config;
if ($options === false) {
$options = [];
}
if (isset($options['style'])) {
2020-11-25 17:00:37 +01:00
$options['style'] .= ' display: inline-block;';
} else {
2020-11-25 17:00:37 +01:00
$options['style'] = 'display: inline-block;';
}
if ($get_status_color === true) {
$options['style'] .= ' background: '.modules_get_color_status($status).';';
}
2019-05-28 12:13:29 +02:00
if (isset($options['class'])) {
$options['class'] = $options['class'];
2019-05-28 12:13:29 +02:00
}
if ($title != '') {
2020-03-23 12:47:58 +01:00
$options['title'] = empty($extra_info) ? $title : $title.'&#10'.$extra_info;
$options['data-title'] = empty($extra_info) ? $title : $title.'<br>'.$extra_info;
$options['data-use_title_for_force_title'] = 1;
if (isset($options['class'])) {
$options['class'] .= ' forced_title';
} else {
$options['class'] = 'forced_title';
}
}
2019-05-28 12:13:29 +02:00
$output = '<div ';
foreach ($options as $k => $v) {
$output .= $k.'="'.$v.'"';
}
$output .= '>';
$output .= '</div>';
if ($return === false) {
echo $output;
}
return $output;
}
2019-05-27 21:30:46 +02:00
/**
* Generates a progress bar CSS based.
* Requires css progress.css
*
* @param integer $progress Progress.
* @param string $width Width.
2019-05-28 09:48:09 +02:00
* @param integer $height Height in 'em'.
2019-05-27 21:30:46 +02:00
* @param string $color Color.
* @param boolean $return Return or paint (if false).
2019-05-29 12:42:55 +02:00
* @param boolean $text Text to be displayed,by default progress %.
2019-06-14 10:40:30 +02:00
* @param array $ajax Ajax: [ 'page' => 'page', 'data' => 'data' ] Sample:
* [
2019-06-14 10:40:30 +02:00
* 'page' => 'operation/agentes/ver_agente', Target page.
* 'interval' => 100 / $agent["intervalo"], Ask every interval seconds.
2020-03-16 23:52:20 +01:00
* 'simple' => 0,
2019-06-14 10:40:30 +02:00
* 'data' => [ Data to be sent to target page.
* 'id_agente' => $id_agente,
* 'refresh_contact' => 1,
* ],
2019-06-14 10:40:30 +02:00
* ].
2019-05-27 21:30:46 +02:00
*
* @return string HTML code.
*/
function ui_progress(
$progress,
$width='100%',
2019-05-28 09:48:09 +02:00
$height='2.5',
2019-06-04 14:08:07 +02:00
$color='#82b92e',
2019-05-29 12:42:55 +02:00
$return=true,
$text='',
$ajax=false
2019-05-27 21:30:46 +02:00
) {
if (!$progress) {
$progress = 0;
}
if ($progress > 100) {
$progress = 100;
}
if ($progress < 0) {
$progress = 0;
}
2019-05-29 12:42:55 +02:00
if (empty($text)) {
$text = $progress.'%';
}
2020-03-19 14:26:01 +01:00
$id = uniqid();
2019-05-27 21:30:46 +02:00
ui_require_css_file('progress');
2021-02-05 12:37:27 +01:00
$output = '<span id="'.$id.'" class="progress_main" data-label="'.$text;
$output .= '" style="width: '.$width.'; height: '.$height.'em; border: 1px solid '.$color.'">';
2020-03-19 14:26:01 +01:00
$output .= '<span id="'.$id.'_progress" class="progress" style="width: '.$progress.'%; background: '.$color.'"></span>';
$output .= '</span>';
if ($ajax !== false && is_array($ajax)) {
2020-03-16 23:52:20 +01:00
if ($ajax['simple']) {
$output .= '<script type="text/javascript">
$(document).ready(function() {
setInterval(() => {
$.post({
url: "'.ui_get_full_url('ajax.php', false, false, false).'",
data: {';
if (is_array($ajax['data'])) {
foreach ($ajax['data'] as $token => $value) {
$output .= '
'.$token.':"'.$value.'",';
}
}
$output .= '
page: "'.$ajax['page'].'"
},
success: function(data) {
try {
val = JSON.parse(data);
2020-03-19 14:26:01 +01:00
$("#'.$id.'").attr("data-label", val + " %");
$("#'.$id.'_progress").width(val+"%");';
if (isset($ajax['oncomplete'])) {
$output .= '
if (val == 100) {
'.$ajax['oncomplete'].'($("#'.$id.'"));
}
';
}
$output .= '
2020-03-16 23:52:20 +01:00
} catch (e) {
console.error(e);
}
}
});
}, '.($ajax['interval'] > 0 ? $ajax['interval'] * 1000 : 30000 ).');
});
</script>';
} else {
$output .= '<script type="text/javascript">
$(document).ready(function() {
setInterval(() => {
2020-03-19 14:26:01 +01:00
last = $("#'.$id.'").attr("data-label").split(" ")[0]*1;
width = $("#'.$id.'_progress").width() / $("#'.$id.'_progress").parent().width() * 100;
width_interval = '.$ajax['interval'].';
if (last % 10 == 0) {
$.post({
url: "'.ui_get_full_url('ajax.php', false, false, false).'",
data: {';
2020-03-16 23:52:20 +01:00
if (is_array($ajax['data'])) {
foreach ($ajax['data'] as $token => $value) {
$output .= '
'.$token.':"'.$value.'",';
}
}
2020-03-16 23:52:20 +01:00
$output .= '
page: "'.$ajax['page'].'"
},
success: function(data) {
try {
val = JSON.parse(data);
2020-03-19 14:26:01 +01:00
$("#'.$id.'").attr("data-label", val["last_contact"]+" s");
$("#'.$id.'_progress").width(val["progress"]+"%");
} catch (e) {
console.error(e);
$(".progress_text").attr("data-label", (last -1) + " s");
if (width < 100) {
2020-03-19 14:26:01 +01:00
$("#'.$id.'_progress").width((width+width_interval) + "%");
}
}
}
});
} else {
2020-03-19 14:26:01 +01:00
$("#'.$id.'").attr("data-label", (last -1) + " s");
if (width < 100) {
2020-03-19 14:26:01 +01:00
$("#'.$id.'_progress").width((width+width_interval) + "%");
}
}
}, 1000);
});
</script>';
2020-03-16 23:52:20 +01:00
}
}
2019-05-27 21:30:46 +02:00
if (!$return) {
echo $output;
}
return $output;
}
2019-11-21 18:21:46 +01:00
/**
* Generates a progress bar CSS based.
* Requires css progress.css
*
* @param array $data With following content:
*
* 'slices' => [
* 'label' => [ // Name of the slice
* 'value' => value
* 'color' => color of the slice.
* ]
* ],
* 'width' => Width
* 'height' => Height in 'em'
* 'return' => Boolean, return or paint.
*
* @return string HTML code.
*/
function ui_progress_extend(
array $data
) {
if (is_array($data) === false) {
// Failed.
return false;
}
if (is_array($data['slices']) === false) {
// Failed.
return false;
}
if (isset($data['width']) === false) {
$data['width'] = '100';
}
if (isset($data['height']) === false) {
$data['height'] = '1.3';
}
$total = array_reduce(
$data['slices'],
function ($carry, $item) {
$carry += $item['value'];
return $carry;
}
);
if ($total == 0) {
return null;
}
ui_require_css_file('progress');
// Main container.
2021-02-05 12:37:27 +01:00
$output = '<div class="progress_main_noborder" ';
2019-11-21 18:21:46 +01:00
$output .= '" style="width:'.$data['width'].'%;';
$output .= ' height:'.$data['height'].'em;">';
foreach ($data['slices'] as $label => $def) {
$width = ($def['value'] * 100 / $total);
$output .= '<div class="progress forced_title" ';
$output .= ' data-title="'.$label.': '.$def['value'].'" ';
$output .= ' data-use_title_for_force_title="1"';
$output .= ' style="width:'.$width.'%;';
$output .= ' background-color:'.$def['color'].';';
$output .= '">';
$output .= '</div>';
}
$output .= '</div>';
if (!$data['return']) {
echo $output;
}
return $output;
}
2019-06-06 17:50:47 +02:00
/**
* Generate needed code to print a datatables jquery plugin.
*
* @param array $parameters All desired data using following format:
* [
* 'print' => true (by default printed)
* 'id' => datatable id.
* 'class' => datatable class.
* 'style' => datatable style.
2019-06-07 17:35:13 +02:00
* 'order' => [
* 'field' => column name
* 'direction' => asc or desc
* ],
* 'default_pagination' => integer, default pagination is set to block_size
2019-06-06 17:50:47 +02:00
* 'ajax_url' => 'include/ajax.php' ajax_url.
2019-06-07 17:35:13 +02:00
* 'ajax_data' => [ operation => 1 ] extra info to be sent.
2019-06-06 17:50:47 +02:00
* 'ajax_postprocess' => a javscript function to postprocess data received
* by ajax call. It is applied foreach row and must
* use following format:
* * [code]
* * function (item) {
* * // Process received item, for instance, name:
* * tmp = '<span class=label>' + item.name + '</span>';
* * item.name = tmp;
* * }
* * [/code]
2019-06-07 17:35:13 +02:00
* 'columns_names' => [
2019-06-06 17:50:47 +02:00
* 'column1' :: Used as th text. Direct text entry. It could be array:
* OR
* [
* 'id' => th id.
* 'class' => th class.
* 'style' => th style.
* 'text' => 'column1'.
* ]
* ],
2019-06-07 17:35:13 +02:00
* 'columns' => [
2019-06-06 17:50:47 +02:00
* 'column1',
* 'column2',
* ...
* ],
2019-06-11 12:58:18 +02:00
* 'no_sortable_columns' => [ indexes ] 1,2... -1 etc. Avoid sorting.
2019-06-06 17:50:47 +02:00
* 'form' => [
* 'html' => 'html code' a directly defined inputs in HTML.
2019-06-11 12:58:18 +02:00
* 'extra_buttons' => [
* [
* 'id' => button id,
* 'class' => button class,
* 'style' => button style,
* 'text' => button text,
* 'onclick' => button onclick,
* ]
* ],
2019-06-06 17:50:47 +02:00
* 'search_button_class' => search button class.
* 'class' => form class.
* 'id' => form id.
* 'style' => form style.
* 'js' => optional extra actions onsubmit.
* 'inputs' => [
* 'label' => Input label.
* 'type' => Input type.
* 'value' => Input value.
* 'name' => Input name.
* 'id' => Input id.
* 'options' => [
* 'option1'
* 'option2'
* ...
* ]
* ]
* ],
2019-06-10 15:18:35 +02:00
* 'extra_html' => HTML content to be placed after 'filter' section.
2019-06-12 18:19:39 +02:00
* 'drawCallback' => function to be called after draw. Sample in:
* https://datatables.net/examples/advanced_init/row_grouping.html
2019-06-06 17:50:47 +02:00
* ]
* End.
*
* @return string HTML code with datatable.
* @throws Exception On error.
*/
function ui_print_datatable(array $parameters)
{
2019-06-07 17:35:13 +02:00
global $config;
2019-06-06 17:50:47 +02:00
if (isset($parameters['id'])) {
$table_id = $parameters['id'];
2019-06-21 12:03:25 +02:00
$form_id = 'form_'.$parameters['id'];
2019-06-06 17:50:47 +02:00
} else {
$table_id = uniqid('datatable_');
2019-06-21 12:03:25 +02:00
$form_id = uniqid('datatable_filter_');
2019-06-06 17:50:47 +02:00
}
2019-06-07 17:35:13 +02:00
if (!isset($parameters['columns']) || !is_array($parameters['columns'])) {
throw new Exception('[ui_print_datatable]: You must define columns for datatable');
2019-06-06 17:50:47 +02:00
}
if (isset($parameters['column_names'])
&& is_array($parameters['column_names'])
&& count($parameters['columns']) != count($parameters['column_names'])
) {
throw new Exception('[ui_print_datatable]: Columns and columns names must have same length');
}
2019-06-06 17:50:47 +02:00
if (!isset($parameters['ajax_url'])) {
2019-06-07 17:35:13 +02:00
throw new Exception('[ui_print_datatable]: Parameter ajax_url is required');
}
if (!isset($parameters['default_pagination'])) {
$parameters['default_pagination'] = $config['block_size'];
}
2019-10-17 15:17:28 +02:00
if (!isset($parameters['paging'])) {
$parameters['paging'] = true;
}
2019-06-11 12:58:18 +02:00
$no_sortable_columns = [];
if (isset($parameters['no_sortable_columns'])) {
$no_sortable_columns = json_encode($parameters['no_sortable_columns']);
}
2019-06-07 17:35:13 +02:00
if (!is_array($parameters['order'])) {
$order = '0, "asc"';
} else {
if (!isset($parameters['order']['direction'])) {
$direction = 'asc';
}
if (!isset($parameters['order']['field'])) {
2019-06-19 12:56:16 +02:00
$order = 0;
2019-06-07 17:35:13 +02:00
} else {
$order = array_search(
$parameters['order']['field'],
$parameters['columns']
);
2019-06-10 15:18:35 +02:00
2019-06-19 12:56:16 +02:00
if ($order === false) {
$order = 0;
2019-06-10 15:18:35 +02:00
}
2019-06-07 17:35:13 +02:00
}
$order .= ', "'.$parameters['order']['direction'].'"';
2019-06-06 17:50:47 +02:00
}
if (!isset($parameters['ajax_data'])) {
$parameters['ajax_data'] = '';
}
2019-06-11 12:58:18 +02:00
$search_button_class = 'sub filter';
2019-06-06 17:50:47 +02:00
if (isset($parameters['search_button_class'])) {
$search_button_class = $parameters['search_button_class'];
}
if (isset($parameters['pagination_options'])) {
$pagination_options = $parameters['pagination_options'];
} else {
$pagination_options = [
[
2019-06-07 17:35:13 +02:00
$parameters['default_pagination'],
5,
2019-06-06 17:50:47 +02:00
10,
25,
100,
200,
500,
1000,
-1,
],
[
2019-06-07 17:35:13 +02:00
$parameters['default_pagination'],
5,
2019-06-06 17:50:47 +02:00
10,
25,
100,
200,
500,
1000,
'All',
],
];
}
if (!is_array($parameters['datacolumns'])) {
$parameters['datacolumns'] = $parameters['columns'];
}
// Datatable filter.
if (isset($parameters['form']) && is_array($parameters['form'])) {
if (isset($parameters['form']['id'])) {
$form_id = $parameters['form']['id'];
}
if (isset($parameters['form']['class'])) {
$form_class = $parameters['form']['class'];
} else {
$form_class = '';
}
if (isset($parameters['form']['style'])) {
$form_style = $parameters['form']['style'];
} else {
$form_style = '';
}
if (isset($parameters['form']['js'])) {
$form_js = $parameters['form']['js'];
} else {
$form_js = '';
}
$filter = '<form class="'.$form_class.'" ';
$filter .= ' id="'.$form_id.'" ';
$filter .= ' style="'.$form_style.'" ';
$filter .= ' onsubmit="'.$form_js.';return false;">';
if (isset($parameters['form']['html'])) {
$filter .= $parameters['form']['html'];
}
2019-06-21 19:34:47 +02:00
$filter .= '<ul class="datatable_filter content">';
2019-06-06 17:50:47 +02:00
foreach ($parameters['form']['inputs'] as $input) {
2019-07-10 23:59:09 +02:00
$filter .= html_print_input(($input + ['return' => true]), 'li');
2019-06-06 17:50:47 +02:00
}
$filter .= '<li>';
2019-06-12 18:19:39 +02:00
// Search button.
$filter .= '<input type="submit" class="'.$search_button_class.'" ';
$filter .= ' id="'.$form_id.'_search_bt" value="'.__('Filter').'"/>';
// Extra buttons.
2019-06-11 12:58:18 +02:00
if (is_array($parameters['form']['extra_buttons'])) {
foreach ($parameters['form']['extra_buttons'] as $button) {
$filter .= '<button id="'.$button['id'].'" ';
$filter .= ' class="'.$button['class'].'" ';
$filter .= ' style="'.$button['style'].'" ';
$filter .= ' onclick="'.$button['onclick'].'" >';
$filter .= $button['text'];
$filter .= '</button>';
}
}
2019-06-06 17:50:47 +02:00
$filter .= '</li>';
$filter .= '</ul><div id="both"></div></form>';
2019-06-06 17:50:47 +02:00
$filter = ui_toggle(
$filter,
__('Filter'),
'',
'',
true,
false,
'white_box white_box_opened',
'no-border'
);
} else if (isset($parameters['form_html'])) {
$filter = ui_toggle(
$parameters['form_html'],
__('Filter'),
'',
'',
true,
false,
'white_box white_box_opened',
'no-border'
);
}
2019-11-12 16:22:58 +01:00
// Languages.
$processing = __('Processing');
2019-06-10 15:18:35 +02:00
// Extra html.
$extra = '';
if (isset($parameters['extra_html']) && !empty($parameters['extra_html'])) {
$extra = $parameters['extra_html'];
}
2019-06-06 17:50:47 +02:00
// Base table.
$table = '<table id="'.$table_id.'" ';
$table .= 'class="'.$parameters['class'].'"';
$table .= 'style="'.$parameters['style'].'">';
2019-10-17 15:17:28 +02:00
$table .= '<thead><tr class="datatables_thead_tr">';
2019-06-07 17:35:13 +02:00
if (isset($parameters['column_names'])
&& is_array($parameters['column_names'])
) {
$names = $parameters['column_names'];
} else {
$names = $parameters['columns'];
2019-06-06 17:50:47 +02:00
}
2019-06-07 17:35:13 +02:00
foreach ($names as $column) {
2019-06-06 17:50:47 +02:00
if (is_array($column)) {
$table .= '<th id="'.$column['id'].'" class="'.$column['class'].'" ';
$table .= ' style="'.$column['style'].'">'.__($column['text']);
2019-06-13 19:41:21 +02:00
$table .= $column['extra'];
2019-06-06 17:50:47 +02:00
$table .= '</th>';
} else {
$table .= '<th>'.__($column).'</th>';
}
}
$table .= '</tr></thead>';
$table .= '</table>';
2019-06-18 12:48:28 +02:00
$pagination_class = 'pandora_pagination';
if (!empty($parameters['pagination_class'])) {
$pagination_class = $parameters['pagination_class'];
}
2019-06-06 17:50:47 +02:00
// Javascript controller.
$js = '<script type="text/javascript">
$(document).ready(function(){
$.fn.dataTable.ext.errMode = "none";
2019-06-18 12:48:28 +02:00
$.fn.dataTable.ext.classes.sPageButton = "'.$pagination_class.'";
2019-06-06 17:50:47 +02:00
dt_'.$table_id.' = $("#'.$table_id.'").DataTable({
drawCallback: function(settings) {';
2019-06-12 18:19:39 +02:00
if (isset($parameters['drawCallback'])) {
$js .= $parameters['drawCallback'];
2019-06-12 18:19:39 +02:00
}
2021-02-05 12:37:27 +01:00
$columns = '';
for ($i = 1; $i <= (count($parameters['columns']) - 3); $i++) {
if ($i != (count($parameters['columns']) - 3)) {
$columns .= $i.',';
} else {
$columns .= $i;
}
}
$export_columns = '';
if ($parameters['csv_exclude_latest'] === true) {
$export_columns = ',columns: \'th:not(:last-child)\'';
}
2019-06-12 18:19:39 +02:00
$js .= '
if (dt_'.$table_id.'.page.info().pages > 1) {
$("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").show()
} else {
$("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").hide()
}
},
2019-06-06 17:50:47 +02:00
processing: true,
serverSide: true,
2019-10-17 15:17:28 +02:00
paging: '.$parameters['paging'].',
2019-06-07 17:35:13 +02:00
pageLength: '.$parameters['default_pagination'].',
2019-06-06 17:50:47 +02:00
searching: false,
responsive: true,
2019-06-18 12:58:46 +02:00
dom: "plfrtiBp",
2019-11-12 16:22:58 +01:00
language: {
processing:"'.$processing.'"
},
2019-06-06 17:50:47 +02:00
buttons: [
{
extend: "csv",
text : "'.__('Export current page to CSV').'",
2019-11-12 17:33:58 +01:00
titleAttr: "'.__('Export current page to CSV').'",
2019-10-04 11:51:30 +02:00
title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'",
fieldSeparator: "'.$config['csv_divider'].'",
2019-06-06 17:50:47 +02:00
exportOptions : {
modifier : {
// DataTables core
order : "current",
page : "All",
search : "applied"
}'.$export_columns.'
2019-06-06 17:50:47 +02:00
}
}
],
lengthMenu: '.json_encode($pagination_options).',
ajax: {
url: "'.ui_get_full_url('ajax.php', false, false, false).'",
2019-06-06 17:50:47 +02:00
type: "POST",
dataSrc: function (json) {
if (json.error) {
2019-06-17 18:33:39 +02:00
console.log(json.error);
$("#error-'.$table_id.'").html(json.error);
$("#error-'.$table_id.'").dialog({
title: "Filter failed",
width: 630,
resizable: true,
draggable: true,
modal: false,
closeOnEscape: true,
buttons: {
"Ok" : function () {
$(this).dialog("close");
}
}
}).parent().addClass("ui-state-error");
2019-06-06 17:50:47 +02:00
} else {';
if (isset($parameters['ajax_postprocess'])) {
2019-06-07 22:44:02 +02:00
$js .= '
if (json.data) {
2019-06-11 12:58:18 +02:00
json.data.forEach(function(item) {
'.$parameters['ajax_postprocess'].'
});
2019-06-07 22:44:02 +02:00
} else {
json.data = {};
}';
2019-06-06 17:50:47 +02:00
}
$js .= '
return json.data;
}
},
data: function (data) {
inputs = $("#'.$form_id.' :input");
values = {};
inputs.each(function() {
values[this.name] = $(this).val();
})
$.extend(data, {
filter: values,'."\n";
2019-06-21 12:03:25 +02:00
if (is_array($parameters['ajax_data'])) {
foreach ($parameters['ajax_data'] as $k => $v) {
$js .= $k.':'.json_encode($v).",\n";
}
2019-06-06 17:50:47 +02:00
}
$js .= 'page: "'.$parameters['ajax_url'].'"
});
return data;
}
},
"columnDefs": [
2019-06-11 12:58:18 +02:00
{ className: "no-class", targets: "_all" },
{ bSortable: false, targets: '.$no_sortable_columns.' }
2019-06-06 17:50:47 +02:00
],
columns: [';
foreach ($parameters['datacolumns'] as $data) {
2019-06-12 18:19:39 +02:00
if (is_array($data)) {
$js .= '{data : "'.$data['text'].'",className: "'.$data['class'].'"},';
} else {
$js .= '{data : "'.$data.'",className: "no-class"},';
}
2019-06-06 17:50:47 +02:00
}
$js .= '
],
2019-06-07 17:35:13 +02:00
order: [[ '.$order.' ]]
2019-06-06 17:50:47 +02:00
});
$("#'.$form_id.'_search_bt").click(function (){
dt_'.$table_id.'.draw().page(0)
2019-10-17 15:17:28 +02:00
});';
if (isset($parameters['caption']) === true
&& empty($parameters['caption']) === false
) {
$js .= '$("#'.$table_id.'").append("<caption>'.$parameters['caption'].'</caption>");';
$js .= '$(".datatables_thead_tr").css("height", 0);';
}
$js .= '});';
2019-10-17 15:17:28 +02:00
$js .= '</script>';
2019-06-06 17:50:47 +02:00
2019-06-10 15:18:35 +02:00
// Order.
2019-06-18 10:32:04 +02:00
$err_msg = '<div id="error-'.$table_id.'"></div>';
$output = $err_msg.$filter.$extra.$table.$js;
2021-10-29 13:45:18 +02:00
if (is_ajax() === false) {
ui_require_css_file('datatables.min', 'include/styles/js/');
ui_require_css_file('tables');
if (is_metaconsole()) {
ui_require_css_file('tables_meta', ENTERPRISE_DIR.'/include/styles/');
}
ui_require_javascript_file('datatables.min');
ui_require_javascript_file('buttons.dataTables.min');
ui_require_javascript_file('dataTables.buttons.min');
ui_require_javascript_file('buttons.html5.min');
ui_require_javascript_file('buttons.print.min');
} else {
// Load tables.css.
$output .= '<link rel="stylesheet" href="';
$output .= ui_get_full_url(
'include/styles/tables.css',
false,
false,
false
);
$output .= '"/>';
if (is_metaconsole() === true) {
// Load tables_meta.css.
$output .= '<link rel="stylesheet" href="';
$output .= ui_get_full_url(
ENTERPRISE_DIR.'/include/styles/tables_meta.css',
false,
false,
false
);
$output .= '"/>';
}
2019-06-06 17:50:47 +02:00
2021-10-29 13:45:18 +02:00
// Load datatables.js.
$output .= '<script src="';
$output .= ui_get_full_url(
'include/javascript/datatables.min.js',
false,
false,
false
);
$output .= '" type="text/javascript"></script>';
// Load buttons.dataTables.min.js.
$output .= '<script src="';
$output .= ui_get_full_url(
'include/javascript/buttons.dataTables.min.js',
false,
false,
false
);
$output .= '" type="text/javascript"></script>';
// Load dataTables.buttons.min.js.
$output .= '<script src="';
$output .= ui_get_full_url(
'include/javascript/dataTables.buttons.min.js',
false,
false,
false
);
$output .= '" type="text/javascript"></script>';
// Load buttons.html5.min.js.
$output .= '<script src="';
$output .= ui_get_full_url(
'include/javascript/buttons.html5.min.js',
false,
false,
false
);
$output .= '" type="text/javascript"></script>';
// Load buttons.print.min.js.
$output .= '<script src="';
$output .= ui_get_full_url(
'include/javascript/buttons.print.min.js',
false,
false,
false
);
$output .= '" type="text/javascript"></script>';
}
2020-03-27 11:41:56 +01:00
if (isset($parameters['return']) && $parameters['return'] == true) {
// Compat.
$parameters['print'] = false;
}
2019-06-06 17:50:47 +02:00
// Print datatable if needed.
2020-03-27 11:41:56 +01:00
if (isset($parameters['print']) === false || $parameters['print'] === true) {
2019-06-06 17:50:47 +02:00
echo $output;
}
return $output;
}
2019-05-29 11:21:57 +02:00
/**
* Returns a div wich represents the type received.
*
* Requires ui_require_css_file('events');.
*
* @param integer $type Event type.
* @param boolean $return Or print.
* @param boolean $mini Show mini div.
*
* @return string HTML.
*/
function ui_print_event_type(
$type,
$return=false,
$mini=false
) {
global $config;
$output = '';
switch ($type) {
case EVENTS_ALERT_FIRED:
case EVENTS_ALERT_RECOVERED:
case EVENTS_ALERT_CEASED:
case EVENTS_ALERT_MANUAL_VALIDATION:
$text = __('ALERT');
$color = COL_ALERTFIRED;
break;
case EVENTS_RECON_HOST_DETECTED:
case EVENTS_SYSTEM:
case EVENTS_ERROR:
case EVENTS_NEW_AGENT:
case EVENTS_CONFIGURATION_CHANGE:
$text = __('SYSTEM');
$color = COL_MAINTENANCE;
break;
case EVENTS_GOING_UP_WARNING:
case EVENTS_GOING_DOWN_WARNING:
$color = COL_WARNING;
$text = __('WARNING');
break;
case EVENTS_GOING_DOWN_NORMAL:
case EVENTS_GOING_UP_NORMAL:
$color = COL_NORMAL;
$text = __('NORMAL');
break;
case EVENTS_GOING_DOWN_CRITICAL:
case EVENTS_GOING_UP_CRITICAL:
$color = COL_CRITICAL;
$text = __('CRITICAL');
break;
case EVENTS_UNKNOWN:
case EVENTS_GOING_UNKNOWN:
default:
$color = COL_UNKNOWN;
$text = __('UNKNOWN');
break;
}
if ($mini === false) {
$output = '<div class="criticity" style="background: '.$color.'">';
$output .= $text;
$output .= '</div>';
} else {
2019-05-29 11:24:17 +02:00
$output = '<div data-title="';
$output .= $text;
$output .= '" data-use_title_for_force_title="1" ';
$output .= 'class="forced_title mini-criticity" ';
$output .= 'style="background: '.$color.'">';
2019-05-29 11:21:57 +02:00
$output .= '</div>';
}
return $output;
}
2019-05-28 18:03:01 +02:00
/**
* Returns a div wich represents the priority received.
*
* Requires ui_require_css_file('events');.
*
2019-05-29 11:21:57 +02:00
* @param integer $priority Priority level.
2019-05-28 18:03:01 +02:00
* @param boolean $return Or print.
2019-05-29 11:21:57 +02:00
* @param boolean $mini Show mini div.
2019-05-28 18:03:01 +02:00
*
* @return string HTML.
*/
function ui_print_event_priority(
$priority,
$return=false,
$mini=false
) {
global $config;
$output = '';
switch ($priority) {
case EVENT_CRIT_MAINTENANCE:
$color = COL_MAINTENANCE;
$criticity = __('MAINTENANCE');
break;
case EVENT_CRIT_INFORMATIONAL:
$color = COL_INFORMATIONAL;
$criticity = __('INFORMATIONAL');
break;
case EVENT_CRIT_NORMAL:
$color = COL_NORMAL;
$criticity = __('NORMAL');
break;
case EVENT_CRIT_WARNING:
$color = COL_WARNING;
$criticity = __('WARNING');
break;
case EVENT_CRIT_CRITICAL:
$color = COL_CRITICAL;
$criticity = __('CRITICAL');
break;
case EVENT_CRIT_MINOR:
$color = COL_MINOR;
$criticity = __('MINOR');
break;
case EVENT_CRIT_MAJOR:
$color = COL_MAJOR;
$criticity = __('MAJOR');
break;
default:
$color = COL_UNKNOWN;
$criticity = __('UNKNOWN');
break;
}
if ($mini === false) {
$output = '<div class="criticity" style="background: '.$color.'">';
$output .= $criticity;
$output .= '</div>';
} else {
2019-05-29 11:24:17 +02:00
$output = '<div data-title="';
$output .= $criticity;
$output .= '" data-use_title_for_force_title="1" ';
$output .= 'class="forced_title mini-criticity" ';
$output .= 'style="background: '.$color.'">';
2019-05-28 18:03:01 +02:00
$output .= '</div>';
}
return $output;
}
/**
2019-05-28 10:47:31 +02:00
* Print a code into a DIV and enable a toggle to show and hide it.
*
* @param string $code Html code.
* @param string $name Name of the link.
* @param string $title Title of the link.
* @param string $id Block id.
* @param boolean $hidden_default If the div will be hidden by default (default: true).
* @param boolean $return Whether to return an output string or echo now (default: true).
* @param string $toggle_class Toggle class.
* @param string $container_class Container class.
* @param string $main_class Main object class.
* @param string $img_a Image (closed).
* @param string $img_b Image (opened).
* @param string $clean Do not encapsulate with class boxes, clean print.
* @param boolean $reverseImg Reverse img.
* @param boolean $switch Use switch.
* @param string $attributes_switch Switch attributes.
* @param string $toggl_attr Main box extra attributes.
* @param boolean|null $switch_on Switch enabled disabled or depending on hidden_Default.
* @param string|null $switch_name Use custom switch input name or generate one.
*
2019-05-28 10:47:31 +02:00
* @return string HTML.
*/
2019-05-28 10:47:31 +02:00
function ui_toggle(
$code,
$name,
$title='',
2019-06-04 13:57:55 +02:00
$id='',
2019-05-28 10:47:31 +02:00
$hidden_default=true,
$return=false,
2019-05-29 18:13:21 +02:00
$toggle_class='',
2019-06-04 13:57:55 +02:00
$container_class='white-box-content',
2019-11-07 17:26:32 +01:00
$main_class='box-shadow white_table_graph',
$img_a='images/arrow_down_green.png',
2019-11-21 18:21:46 +01:00
$img_b='images/arrow_right_green.png',
2020-06-30 12:16:51 +02:00
$clean=false,
$reverseImg=false,
$switch=false,
2021-02-05 12:37:27 +01:00
$attributes_switch='',
$toggl_attr='',
$switch_on=null,
$switch_name=null
2019-05-28 10:47:31 +02:00
) {
// Generate unique Id.
$uniqid = uniqid('');
2020-06-30 12:16:51 +02:00
$image_a = html_print_image(
$img_a,
true,
[ 'style' => 'object-fit: contain;' ],
true
);
$image_b = html_print_image(
$img_b,
true,
[ 'style' => 'object-fit: contain;' ],
true
);
2019-05-28 10:47:31 +02:00
// Options.
if ($hidden_default) {
$style = 'display:none';
2019-11-07 17:26:32 +01:00
$original = $img_b;
} else {
$style = '';
2019-11-07 17:26:32 +01:00
$original = $img_a;
}
2019-11-21 18:21:46 +01:00
$header_class = '';
if ($clean === false) {
$header_class = 'white_table_graph_header';
} else {
if ($main_class == 'box-shadow white_table_graph') {
// Default value, clean class.
$main_class = '';
}
if ($container_class == 'white-box-content') {
$container_class = 'white-box-content-clean';
}
2019-11-21 18:21:46 +01:00
}
2019-05-28 10:47:31 +02:00
// Link to toggle.
2021-02-05 12:37:27 +01:00
$output = '<div class="'.$main_class.'" id="'.$id.'" '.$toggl_attr.'>';
2020-06-30 12:16:51 +02:00
$output .= '<div class="'.$header_class.'" style="cursor: pointer;" id="tgl_ctrl_'.$uniqid.'">';
if ($reverseImg === false) {
if ($switch === true) {
if (empty($switch_name) === true) {
$switch_name = 'box_enable_toggle'.$uniqid;
}
2020-06-30 12:16:51 +02:00
$output .= html_print_div(
[
'class' => 'float-left',
'content' => html_print_checkbox_switch_extended(
$switch_name,
2020-06-30 12:16:51 +02:00
1,
($switch_on === null) ? (($hidden_default === true) ? 0 : 1) : $switch_on,
2020-06-30 12:16:51 +02:00
false,
'',
$attributes_switch,
true
),
],
true
);
} else {
$output .= html_print_image(
$original,
true,
[
2020-12-01 17:19:34 +01:00
'class' => 'float-left',
'style' => 'object-fit: contain; margin-right:10px;',
2020-06-30 12:16:51 +02:00
'title' => $title,
'id' => 'image_'.$uniqid,
]
);
}
$output .= '<b>'.$name.'</b>';
} else {
$output .= $name;
if ($switch === true) {
$output .= html_print_div(
[
'class' => 'float-left',
'content' => html_print_checkbox_switch_extended(
'box_enable_toggle'.$uniqid,
1,
($hidden_default === true) ? 0 : 1,
false,
'',
'',
true
),
],
true
);
} else {
$output .= html_print_image(
$original,
true,
[
'style' => 'object-fit: contain; float:right; margin-right:10px;',
'title' => $title,
'id' => 'image_'.$uniqid,
]
);
}
}
$output .= '</div>';
// Code into a div
2019-05-28 16:24:28 +02:00
$output .= "<div id='tgl_div_".$uniqid."' style='".$style.";margin-top: -1px;' class='".$toggle_class."'>\n";
2019-05-29 18:13:21 +02:00
$output .= '<div class="'.$container_class.'">';
$output .= $code;
$output .= '</div>';
2019-05-29 17:49:09 +02:00
$output .= '</div>';
2019-05-28 10:47:31 +02:00
// JQuery Toggle.
$output .= '<script type="text/javascript">'."\n";
$output .= ' var hide_tgl_ctrl_'.$uniqid.' = '.(int) $hidden_default.";\n";
$output .= ' /* <![CDATA[ */'."\n";
$output .= " $(document).ready (function () {\n";
$output .= " $('#checkbox-".$switch_name."').click(function() {\n";
2020-06-30 12:16:51 +02:00
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
$output .= " }\n";
$output .= " else {\n";
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
$output .= " }\n";
$output .= " });\n";
$output .= " $('#tgl_ctrl_".$uniqid."').click(function() {\n";
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
$output .= " $('#image_".$uniqid."').attr({src: '".$image_a."'});\n";
$output .= " $('#checkbox-".$switch_name."').prop('checked', true);\n";
$output .= " }\n";
$output .= " else {\n";
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
$output .= " $('#image_".$uniqid."').attr({src: '".$image_b."'});\n";
$output .= " $('#checkbox-".$switch_name."').prop('checked', false);\n";
$output .= " }\n";
$output .= " });\n";
$output .= " });\n";
$output .= '/* ]]> */';
$output .= '</script>';
2019-05-28 16:20:24 +02:00
$output .= '</div>';
if (!$return) {
echo $output;
} else {
return $output;
}
}
2019-11-07 17:26:32 +01:00
/**
* Simplified way of ui_toggle ussage.
*
* @param array $data Arguments:
2021-01-25 19:29:22 +01:00
* - content
* - name
* - title
* - id
* - hidden_default
* - return
* - toggle_class
* - container_class
* - main_class
* - img_a
* - img_b
* - clean
* - reverseImg
* - switch
* - attributes_switch
* - toggl_attr
* - switch_on
* - switch_name.
2019-11-07 17:26:32 +01:00
*
* @return string HTML code with toggle content.
*/
function ui_print_toggle($data)
{
return ui_toggle(
$data['content'],
$data['name'],
(isset($data['title']) === true) ? $data['title'] : '',
(isset($data['id']) === true) ? $data['id'] : '',
(isset($data['hidden_default']) === true) ? $data['hidden_default'] : true,
(isset($data['return']) === true) ? $data['return'] : false,
(isset($data['toggle_class']) === true) ? $data['toggle_class'] : '',
(isset($data['container_class']) === true) ? $data['container_class'] : 'white-box-content',
(isset($data['main_class']) === true) ? $data['main_class'] : 'box-shadow white_table_graph',
(isset($data['img_a']) === true) ? $data['img_a'] : 'images/arrow_down_green.png',
2019-11-21 18:21:46 +01:00
(isset($data['img_b']) === true) ? $data['img_b'] : 'images/arrow_right_green.png',
2021-02-05 12:37:27 +01:00
(isset($data['clean']) === true) ? $data['clean'] : false,
(isset($data['reverseImg']) === true) ? $data['reverseImg'] : false,
(isset($data['switch']) === true) ? $data['switch'] : false,
(isset($data['attributes_switch']) === true) ? $data['attributes_switch'] : '',
(isset($data['toggl_attr']) === true) ? $data['toggl_attr'] : '',
(isset($data['switch_on']) === true) ? $data['switch_on'] : null,
(isset($data['switch_name']) === true) ? $data['switch_name'] : null
2019-11-07 17:26:32 +01:00
);
}
/**
* Construct and return the URL to be used in order to refresh the current page correctly.
*
2019-05-28 10:47:31 +02:00
* @param array $params Extra parameters to be added to the URL. It has prevalence over
* GET and POST. False values will be ignored.
* @param boolean $relative Whether to return the relative URL or the absolute URL. Returns
* relative by default.
* @param boolean $add_post Whether to add POST values to the URL.
*
* @return string Url.
*/
function ui_get_url_refresh($params=false, $relative=true, $add_post=true)
{
2019-05-28 10:47:31 +02:00
// Agent selection filters and refresh.
global $config;
2019-05-28 10:47:31 +02:00
// Slerena, 8/Ene/2015 - Need to put index.php on URL which have it.
if (strpos($_SERVER['REQUEST_URI'], 'index.php') === false) {
$url = '';
} else {
$url = 'index.php';
}
2019-05-28 10:47:31 +02:00
if (count($_REQUEST)) {
// Some (old) browsers don't like the ?&key=var.
$url .= '?';
}
if (! is_array($params)) {
$params = [];
}
2019-05-28 10:47:31 +02:00
// Avoid showing login info.
$params['pass'] = false;
$params['nick'] = false;
$params['unnamed'] = false;
2019-05-28 10:47:31 +02:00
// We don't clean these variables up as they're only being passed along.
foreach ($_GET as $key => $value) {
if (isset($params[$key])) {
continue;
}
if (strstr($key, 'create')) {
continue;
}
if (strstr($key, 'update')) {
continue;
}
if (strstr($key, 'new')) {
continue;
}
if (strstr($key, 'delete')) {
continue;
}
if (is_array($value)) {
foreach ($value as $k => $v) {
$url .= $key.'['.$k.']='.$v.'&';
}
} else {
2020-11-23 10:40:28 +01:00
$url .= $key.'='.io_safe_input(rawurlencode($value)).'&';
}
}
if ($add_post) {
foreach ($_POST as $key => $value) {
if (isset($params[$key])) {
continue;
}
if (strstr($key, 'create')) {
continue;
}
if (strstr($key, 'update')) {
continue;
}
if (strstr($key, 'new')) {
continue;
}
if (strstr($key, 'delete')) {
continue;
}
if (is_array($value)) {
foreach ($value as $k => $v) {
$url .= $key.'['.$k.']='.$v.'&';
}
} else {
$url .= $key.'='.$value.'&';
}
}
}
foreach ($params as $key => $value) {
if ($value === false) {
continue;
}
if (is_array($value)) {
foreach ($value as $k => $v) {
$url .= $key.'['.$k.']='.$v.'&';
}
} else {
$url .= $key.'='.$value.'&';
}
}
2019-05-28 10:47:31 +02:00
// Removes final &.
$pos = strrpos($url, '&', 0);
if ($pos) {
$url = substr_replace($url, '', $pos, 5);
}
$url = htmlspecialchars($url);
if (! $relative) {
return ui_get_full_url($url, false, false, false);
}
return $url;
}
2019-07-02 14:17:53 +02:00
/**
* Checks if public_url usage is being forced to target 'visitor'.
*
* @return boolean
*/
function ui_forced_public_url()
{
global $config;
2020-11-25 20:16:30 +01:00
$exclusions = [];
if (empty($config['public_url_exclusions']) === false) {
$exclusions = preg_split("/[\n\s,]+/", io_safe_output($config['public_url_exclusions']));
}
2019-07-02 14:17:53 +02:00
if (in_array($_SERVER['REMOTE_ADDR'], $exclusions)) {
return false;
}
2020-11-25 20:16:30 +01:00
return isset($config['force_public_url']) && (bool) $config['force_public_url'];
2019-07-02 14:17:53 +02:00
}
/**
* Returns a full built url for given section.
*
* @param string $url
* @return void
*/
function ui_get_meta_url($url)
{
global $config;
if (is_metaconsole() === true) {
return ui_get_full_url($url);
}
$mc_db_conn = \enterprise_hook(
'metaconsole_load_external_db',
[
[
'dbhost' => $config['replication_dbhost'],
'dbuser' => $config['replication_dbuser'],
'dbpass' => \io_output_password(
$config['replication_dbpass']
),
'dbname' => $config['replication_dbname'],
],
]
);
if ($mc_db_conn === NOERR) {
$public_url_meta = \db_get_value(
'value',
'tconfig',
'token',
'public_url',
false,
false
);
// Restore the default connection.
\enterprise_hook('metaconsole_restore_db');
if (empty($public_url_meta) === false
&& $public_url_meta !== $config['metaconsole_base_url']
) {
config_update_value(
'metaconsole_base_url',
$public_url_meta
);
}
}
if (isset($config['metaconsole_base_url']) === true) {
return $config['metaconsole_base_url'].'enterprise/meta/'.$url;
}
return $url;
}
/**
* Returns a full URL in Pandora. (with the port and https in some systems)
*
* An example of full URL is http:/localhost/pandora_console/index.php?sec=gsetup&sec2=godmode/setup/setup
*
2019-05-28 10:47:31 +02:00
* @param mixed $url If provided, it will be added after the index.php, but it is false boolean value, put the homeurl in the url.
* @param boolean $no_proxy To avoid the proxy checks, by default it is false.
* @param boolean $add_name_php_file Something.
* @param boolean $metaconsole_root Set the root to the metaconsole dir if the metaconsole is enabled, true by default.
*
* @return string A full URL in Pandora.
*/
function ui_get_full_url($url='', $no_proxy=false, $add_name_php_file=false, $metaconsole_root=true)
{
global $config;
$port = null;
2019-05-28 10:47:31 +02:00
// Null means 'use the starndard port'.
$proxy = false;
// By default Pandora FMS doesn't run across proxy.
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
) {
$_SERVER['HTTPS'] = 'on';
}
if (isset($_SERVER['HTTPS'])
&& ($_SERVER['HTTPS'] === true
|| $_SERVER['HTTPS'] == 'on')
) {
$protocol = 'https';
if ($_SERVER['SERVER_PORT'] != 443) {
$port = $_SERVER['SERVER_PORT'];
}
} else if ($config['https']) {
2019-05-28 10:47:31 +02:00
// When $config["https"] is set, enforce https.
$protocol = 'https';
} else {
$protocol = 'http';
if ($_SERVER['SERVER_PORT'] != 80) {
$port = $_SERVER['SERVER_PORT'];
}
}
if (!$no_proxy) {
2019-07-02 14:17:53 +02:00
// Check proxy.
$proxy = false;
if (ui_forced_public_url()) {
$proxy = true;
$fullurl = $config['public_url'];
2019-07-31 10:59:51 +02:00
if (substr($fullurl, -1) != '/') {
$fullurl .= '/';
}
2019-07-02 14:17:53 +02:00
} else if (!empty($config['public_url'])
&& (!empty($_SERVER['HTTP_X_FORWARDED_HOST']))
) {
2019-07-02 14:17:53 +02:00
// Forced to use public url when being forwarder by a reverse proxy.
$fullurl = $config['public_url'];
2019-07-31 10:59:51 +02:00
if (substr($fullurl, -1) != '/') {
$fullurl .= '/';
}
$proxy = true;
} else {
$fullurl = $protocol.'://'.$_SERVER['SERVER_NAME'];
}
} else {
$fullurl = $protocol.'://'.$_SERVER['SERVER_NAME'];
}
2019-05-28 10:47:31 +02:00
// Using a different port than the standard.
if (!$proxy) {
2019-05-28 10:47:31 +02:00
// Using a different port than the standard.
if ($port != null) {
$fullurl .= ':'.$port;
}
}
2021-10-06 15:07:46 +02:00
$skip_meta_tag = false;
if ($url === '') {
2021-10-06 15:07:46 +02:00
if ($proxy === false) {
$url = $_SERVER['REQUEST_URI'];
2021-10-06 15:07:46 +02:00
// Already inserted in request_uri.
$skip_meta_tag = true;
} else {
2021-10-06 15:07:46 +02:00
// Redirect to main.
$url = '?'.$_SERVER['QUERY_STRING'];
}
2021-10-06 15:13:21 +02:00
} else if (empty($url) === true) {
if ($proxy === false) {
$url = $config['homeurl_static'].'/';
2021-10-07 12:25:41 +02:00
if ($metaconsole_root === true
&& is_metaconsole()
) {
2021-10-06 15:13:21 +02:00
$url = $config['homeurl_static'].'/'.ENTERPRISE_DIR.'/meta/';
}
2021-10-06 15:13:21 +02:00
$skip_meta_tag = true;
} else {
$url = '';
}
} else if (!strstr($url, '.php')) {
if ($proxy) {
$fullurl .= '/';
} else {
$fullurl .= $config['homeurl_static'].'/';
}
} else {
2021-10-05 17:03:06 +02:00
if ((bool) $proxy === false) {
if ($add_name_php_file) {
$fullurl .= $_SERVER['SCRIPT_NAME'];
} else {
$fullurl .= $config['homeurl_static'].'/';
}
}
}
2021-10-05 15:09:30 +02:00
// Add last slash if missing.
if (substr($fullurl, -1, 1) !== '/') {
$fullurl .= '/';
}
// Remove starting slash if present.
if (substr($url, 0, 1) === '/') {
$url = substr($url, 1);
}
2021-10-06 15:07:46 +02:00
if ($skip_meta_tag === false
&& $metaconsole_root
&& is_metaconsole()
) {
2021-10-06 15:13:21 +02:00
$fullurl .= ENTERPRISE_DIR.'/meta/';
}
return $fullurl.$url;
}
2010-02-19 Sancho Lerena <slerena@artica.es> * functions_events.php: Fixed typo (switched meaning) in two labels. * include/styles/pandora.css: Changed background color of th default style. * include/functions_reporting.php: Improved function get_group_stats(). Now supports stats from batch-mode and get realtime stats in a more efficient way. Fixed get_fired_alerts_reporting_table() to avoid problems in external reporting (PDF & XML). * include/functions_servers.php: get_server_performance() now uses batch mode stats reporting, and improved also the realtime stats generation. Same with function get_server_info(). * include/functions_config.php: Added new config tokens (not fully implemented yet) for event, trap, strings and audit automatic purge. * include/functions_ui.php: Added new print_page_header() function to set the new standard header in all pages, using the "tabbed" format to show the title, subtitle and other options like help, or custom-tabs for the page * pandoradb.sql: Added tserver.stat_utimestamp field. Added indexes to tsession table. Fixed typo in field name in tgroup_stat: agents_uknown to agents_unknown. * extensions/ext_backup: New directory to place "deleted" extensions. * extensions/dbmanager/dbmanager.css: Table names now are in it's original lowercase/uppercase format. * extensions/dbmanager.php: Updated headers, and now return "empty" when a search is empty, instead "error" as before. * extensions/users_connected.php extensions/module_groups.php extensions/plugin_registration.php extensions/pandora_logs.php operation/incidents/incident.php operation/snmpconsole/snmp_view.php operation/users/user.php operation/users/user_edit.php godmode/agentes/planned_downtime.php operation/events/events.php operation/visual_console/index.php operation/agentes/estado_generalagente.php operation/agentes/estado_agente.php operation/agentes/exportdata.php operation/agentes/ver_agente.php operation/agentes/status_monitor.php operation/agentes/alerts_status.php operation/users/user_statistics.php: Added new header format. * operation/agentes/estado_grupo.php: Removed old group view. * operation/agentes/tactical.php: Adapted to use new realtime/batch statistical system. Placed events above server info. Showing only pending events and other minor changes. * operation/agentes/group_view.php: NEW screen, replacing old one. Probably most ugly, but much more useful than before. * operation/agentes/networkmap.php: Added title. * operation/messages/message.php: Added title and adding some exists in code was missing before. * operation/reporting/reporting_viewer.php: Added title. * operation/reporting/graph_viewer.php: Added title. * operation/reporting/custom_reporting.php: Added title. * operation/servers/view_server.php: * operation/menu.php: Replaced old group view with new (this has english name). Removed autorefresh "by default" in server view. * extras/pandoradb_migrate_v3.0_to_v3.1.sql: Fixed typo. * extras/pandora_diag.php: Minor changes, removed some info and added other. * general/logon_ok.php: Minor aesthetic changes. * general/header.php: Fixed missing ";" * operation/extensions.php, godmode/extensions.php: Added support for delete extensions. * godmode/menu.php: New setup items. * godmode/setup/setup.php, godmode/setup/performance.php, godmode/setup/setup_visuals.php: Reordered setup options, new setup section "Performance", added new performance options to set "realtime" statistics or "batchmode" with it's own interval. Some setup info is now shared with the servers (but it it's any change in setup, servers should be restarted anyway). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2390 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2010-02-19 16:16:03 +01:00
2021-04-29 13:28:03 +02:00
/**
* Generates the Pandora 75x Standard views header.
* This function should be the standard for
* generating the headers of all PFMS views.
*
* @param string $title The title of this view.
* @param string $icon Icon for show.
* @param boolean $return If true, the string with the formed header is returned.
* @param string $help String for attach at end a link for help.
* @param boolean $godmode If false, it will created like operation mode.
* @param array $options Tabs allowed
* @param array $breadcrumbs Breadcrumbs with the walk.
*
* EXAMPLE:
* ```
* $buttons['option_1'] = [
* 'active' => false,
* 'text' => '<a href="'.$url.'">'.html_print_image(
* 'images/wand.png',
* true,
* [ 'title' => __('Option 1 for show'), 'class' => 'invert_filter' ]
* ).'</a>',
* ];
*
* ui_print_standard_header(
* __('Favorites'),
* 'images/op_reporting.png',
* false,
* '',
* true,
* $buttons,
* [
* [ 'link' => '', 'label' => __('Topology maps') ],
* [ 'link' => '', 'label' => __('Visual console') ],
* ]
* );
* ```
*
* @return string If apply
*/
function ui_print_standard_header(
string $title,
string $icon='',
bool $return=false,
string $help='',
bool $godmode=false,
array $options=[],
array $breadcrumbs=[]
) {
2021-05-28 13:47:14 +02:00
// For standard breadcrumbs.
ui_require_css_file('discovery');
2021-04-29 13:28:03 +02:00
// Create the breadcrumb.
$headerInformation = new HTML();
$headerInformation->setBreadcrum([]);
// Prepare the breadcrumbs.
$countBreadcrumbs = count($breadcrumbs);
$countUnitBreadcrumb = 0;
$applyBreadcrumbs = [];
foreach ($breadcrumbs as $unitBreadcrumb) {
// Count new breadcrumb.
$countUnitBreadcrumb++;
// Apply selected if is the last.
$unitBreadcrumb['selected'] = ($countBreadcrumbs === $countUnitBreadcrumb);
// Apply for another breadcrumb.
$applyBreadcrumbs[] = $unitBreadcrumb;
}
// Attach breadcrumbs.
$headerInformation->prepareBreadcrum(
$applyBreadcrumbs,
true
);
// Create the header.
2021-08-12 12:01:24 +02:00
if (is_metaconsole() === true) {
$output = ui_meta_print_header(
$title,
false,
$options
);
} else {
$output = ui_print_page_header(
$title,
$icon,
true,
$help,
$godmode,
$options,
false,
'',
GENERIC_SIZE_TEXT,
'',
$headerInformation->printHeader(true)
);
}
2021-04-29 13:28:03 +02:00
if ($return !== true) {
echo $output;
} else {
return $output;
}
}
2010-02-19 Sancho Lerena <slerena@artica.es> * functions_events.php: Fixed typo (switched meaning) in two labels. * include/styles/pandora.css: Changed background color of th default style. * include/functions_reporting.php: Improved function get_group_stats(). Now supports stats from batch-mode and get realtime stats in a more efficient way. Fixed get_fired_alerts_reporting_table() to avoid problems in external reporting (PDF & XML). * include/functions_servers.php: get_server_performance() now uses batch mode stats reporting, and improved also the realtime stats generation. Same with function get_server_info(). * include/functions_config.php: Added new config tokens (not fully implemented yet) for event, trap, strings and audit automatic purge. * include/functions_ui.php: Added new print_page_header() function to set the new standard header in all pages, using the "tabbed" format to show the title, subtitle and other options like help, or custom-tabs for the page * pandoradb.sql: Added tserver.stat_utimestamp field. Added indexes to tsession table. Fixed typo in field name in tgroup_stat: agents_uknown to agents_unknown. * extensions/ext_backup: New directory to place "deleted" extensions. * extensions/dbmanager/dbmanager.css: Table names now are in it's original lowercase/uppercase format. * extensions/dbmanager.php: Updated headers, and now return "empty" when a search is empty, instead "error" as before. * extensions/users_connected.php extensions/module_groups.php extensions/plugin_registration.php extensions/pandora_logs.php operation/incidents/incident.php operation/snmpconsole/snmp_view.php operation/users/user.php operation/users/user_edit.php godmode/agentes/planned_downtime.php operation/events/events.php operation/visual_console/index.php operation/agentes/estado_generalagente.php operation/agentes/estado_agente.php operation/agentes/exportdata.php operation/agentes/ver_agente.php operation/agentes/status_monitor.php operation/agentes/alerts_status.php operation/users/user_statistics.php: Added new header format. * operation/agentes/estado_grupo.php: Removed old group view. * operation/agentes/tactical.php: Adapted to use new realtime/batch statistical system. Placed events above server info. Showing only pending events and other minor changes. * operation/agentes/group_view.php: NEW screen, replacing old one. Probably most ugly, but much more useful than before. * operation/agentes/networkmap.php: Added title. * operation/messages/message.php: Added title and adding some exists in code was missing before. * operation/reporting/reporting_viewer.php: Added title. * operation/reporting/graph_viewer.php: Added title. * operation/reporting/custom_reporting.php: Added title. * operation/servers/view_server.php: * operation/menu.php: Replaced old group view with new (this has english name). Removed autorefresh "by default" in server view. * extras/pandoradb_migrate_v3.0_to_v3.1.sql: Fixed typo. * extras/pandora_diag.php: Minor changes, removed some info and added other. * general/logon_ok.php: Minor aesthetic changes. * general/header.php: Fixed missing ";" * operation/extensions.php, godmode/extensions.php: Added support for delete extensions. * godmode/menu.php: New setup items. * godmode/setup/setup.php, godmode/setup/performance.php, godmode/setup/setup_visuals.php: Reordered setup options, new setup section "Performance", added new performance options to set "realtime" statistics or "batchmode" with it's own interval. Some setup info is now shared with the servers (but it it's any change in setup, servers should be restarted anyway). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2390 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2010-02-19 16:16:03 +01:00
/**
* Return a standard page header (Pandora FMS 3.1 version)
*
2019-05-27 19:00:48 +02:00
* @param string $title Title.
* @param string $icon Icon path.
* @param boolean $return Return (false will print using a echo).
* @param boolean $help Help (Help ID to print the Help link).
* @param boolean $godmode Godmode (false = operation mode).
* @param string $options Options (HTML code for make tabs or just a brief
* info string.
* @param mixed $modal Modal.
* @param mixed $message Message.
* @param mixed $numChars NumChars.
* @param mixed $alias Alias.
* @param mixed $breadcrumbs Breadcrumbs.
*
2010-02-19 Sancho Lerena <slerena@artica.es> * functions_events.php: Fixed typo (switched meaning) in two labels. * include/styles/pandora.css: Changed background color of th default style. * include/functions_reporting.php: Improved function get_group_stats(). Now supports stats from batch-mode and get realtime stats in a more efficient way. Fixed get_fired_alerts_reporting_table() to avoid problems in external reporting (PDF & XML). * include/functions_servers.php: get_server_performance() now uses batch mode stats reporting, and improved also the realtime stats generation. Same with function get_server_info(). * include/functions_config.php: Added new config tokens (not fully implemented yet) for event, trap, strings and audit automatic purge. * include/functions_ui.php: Added new print_page_header() function to set the new standard header in all pages, using the "tabbed" format to show the title, subtitle and other options like help, or custom-tabs for the page * pandoradb.sql: Added tserver.stat_utimestamp field. Added indexes to tsession table. Fixed typo in field name in tgroup_stat: agents_uknown to agents_unknown. * extensions/ext_backup: New directory to place "deleted" extensions. * extensions/dbmanager/dbmanager.css: Table names now are in it's original lowercase/uppercase format. * extensions/dbmanager.php: Updated headers, and now return "empty" when a search is empty, instead "error" as before. * extensions/users_connected.php extensions/module_groups.php extensions/plugin_registration.php extensions/pandora_logs.php operation/incidents/incident.php operation/snmpconsole/snmp_view.php operation/users/user.php operation/users/user_edit.php godmode/agentes/planned_downtime.php operation/events/events.php operation/visual_console/index.php operation/agentes/estado_generalagente.php operation/agentes/estado_agente.php operation/agentes/exportdata.php operation/agentes/ver_agente.php operation/agentes/status_monitor.php operation/agentes/alerts_status.php operation/users/user_statistics.php: Added new header format. * operation/agentes/estado_grupo.php: Removed old group view. * operation/agentes/tactical.php: Adapted to use new realtime/batch statistical system. Placed events above server info. Showing only pending events and other minor changes. * operation/agentes/group_view.php: NEW screen, replacing old one. Probably most ugly, but much more useful than before. * operation/agentes/networkmap.php: Added title. * operation/messages/message.php: Added title and adding some exists in code was missing before. * operation/reporting/reporting_viewer.php: Added title. * operation/reporting/graph_viewer.php: Added title. * operation/reporting/custom_reporting.php: Added title. * operation/servers/view_server.php: * operation/menu.php: Replaced old group view with new (this has english name). Removed autorefresh "by default" in server view. * extras/pandoradb_migrate_v3.0_to_v3.1.sql: Fixed typo. * extras/pandora_diag.php: Minor changes, removed some info and added other. * general/logon_ok.php: Minor aesthetic changes. * general/header.php: Fixed missing ";" * operation/extensions.php, godmode/extensions.php: Added support for delete extensions. * godmode/menu.php: New setup items. * godmode/setup/setup.php, godmode/setup/performance.php, godmode/setup/setup_visuals.php: Reordered setup options, new setup section "Performance", added new performance options to set "realtime" statistics or "batchmode" with it's own interval. Some setup info is now shared with the servers (but it it's any change in setup, servers should be restarted anyway). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2390 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2010-02-19 16:16:03 +01:00
* @return string Header HTML
*/
function ui_print_page_header(
$title,
$icon='',
$return=false,
$help='',
$godmode=false,
$options='',
$modal=false,
$message='',
$numChars=GENERIC_SIZE_TEXT,
$alias='',
$breadcrumbs=''
) {
$title = io_safe_input_html($title);
if (($icon == '') && ($godmode == true)) {
$icon = 'images/gm_setup.png';
}
if (($icon == '') && ($godmode == false)) {
$icon = '';
}
if ($godmode == true) {
$type = 'view';
$type2 = 'menu_tab_frame_view';
$separator_class = 'separator';
} else {
$type = 'view';
$type2 = 'menu_tab_frame_view';
$separator_class = 'separator_view';
}
$buffer = '<div id="'.$type2.'" >';
if (!empty($breadcrumbs)) {
2019-05-27 19:00:48 +02:00
$buffer .= '<div class="menu_tab_left_bc">';
$buffer .= '<div class="breadcrumbs_container">'.$breadcrumbs.'</div>';
}
$buffer .= '<div id="menu_tab_left">';
$buffer .= '<ul class="mn"><li class="'.$type.'">';
if (strpos($title, 'Monitoring » Services »') != -1) {
$title = str_replace('Monitoring » Services » Service Map » ', '', $title);
}
$buffer .= '<span>';
if (empty($alias)) {
$buffer .= ui_print_truncate_text($title, $numChars);
} else {
$buffer .= ui_print_truncate_text($alias, $numChars);
}
if ($modal && !enterprise_installed()) {
$buffer .= "
2021-03-31 10:29:57 +02:00
<div id='".$message."' class='publienterprise right mrgn_top-2px' title='Community version'><img data-title='".__('Enterprise version not installed')."' class='img_help forced_title' data-use_title_for_force_title='1' src='images/alert_enterprise.png'></div>
";
}
if (!is_metaconsole()) {
if ($help != '') {
$buffer .= "<div class='head_help head_tip'>".ui_print_help_icon($help, true, '', 'images/help_g.png').'</div>';
}
}
$buffer .= '</span>';
if (is_metaconsole()) {
if ($help != '') {
$buffer .= "<div class='head_help'>".ui_print_help_icon($help, true, '', 'images/help_30.png').'</div>';
}
}
$buffer .= '</li></ul></div>';
2019-05-27 19:00:48 +02:00
if (!empty($breadcrumbs)) {
$buffer .= '</div>';
}
if (is_array($options)) {
$buffer .= '<div id="menu_tab"><ul class="mn">';
foreach ($options as $key => $option) {
if (empty($option)) {
continue;
} else if ($key === 'separator') {
continue;
// $buffer .= '<li class='.$separator_class.'>';
// $buffer .= '</li>';
} else {
if (is_array($option)) {
$class = 'nomn';
if (isset($option['active'])) {
if ($option['active']) {
$class = 'nomn_high';
}
}
2019-05-28 10:47:31 +02:00
// Tabs forced to other styles.
if (isset($option['godmode']) && $option['godmode']) {
$class .= ' tab_godmode';
} else if (isset($option['operation']) && ($option['operation'])) {
$class .= ' tab_operation';
} else {
2019-05-28 10:47:31 +02:00
$class .= ($godmode) ? ' tab_godmode' : ' tab_operation';
}
$buffer .= '<li class="'.$class.' ">';
$buffer .= $option['text'];
if (isset($option['sub_menu'])) {
$buffer .= $option['sub_menu'];
}
$buffer .= '</li>';
} else {
$buffer .= '<li class="nomn">';
$buffer .= $option;
$buffer .= '</li>';
}
}
}
$buffer .= '</ul></div>';
} else {
if ($options != '') {
$buffer .= '<div id="menu_tab"><ul class="mn"><li>';
$buffer .= $options;
$buffer .= '</li></ul></div>';
}
}
$buffer .= '</div>';
if (!$return) {
echo $buffer;
}
return $buffer;
2010-02-19 Sancho Lerena <slerena@artica.es> * functions_events.php: Fixed typo (switched meaning) in two labels. * include/styles/pandora.css: Changed background color of th default style. * include/functions_reporting.php: Improved function get_group_stats(). Now supports stats from batch-mode and get realtime stats in a more efficient way. Fixed get_fired_alerts_reporting_table() to avoid problems in external reporting (PDF & XML). * include/functions_servers.php: get_server_performance() now uses batch mode stats reporting, and improved also the realtime stats generation. Same with function get_server_info(). * include/functions_config.php: Added new config tokens (not fully implemented yet) for event, trap, strings and audit automatic purge. * include/functions_ui.php: Added new print_page_header() function to set the new standard header in all pages, using the "tabbed" format to show the title, subtitle and other options like help, or custom-tabs for the page * pandoradb.sql: Added tserver.stat_utimestamp field. Added indexes to tsession table. Fixed typo in field name in tgroup_stat: agents_uknown to agents_unknown. * extensions/ext_backup: New directory to place "deleted" extensions. * extensions/dbmanager/dbmanager.css: Table names now are in it's original lowercase/uppercase format. * extensions/dbmanager.php: Updated headers, and now return "empty" when a search is empty, instead "error" as before. * extensions/users_connected.php extensions/module_groups.php extensions/plugin_registration.php extensions/pandora_logs.php operation/incidents/incident.php operation/snmpconsole/snmp_view.php operation/users/user.php operation/users/user_edit.php godmode/agentes/planned_downtime.php operation/events/events.php operation/visual_console/index.php operation/agentes/estado_generalagente.php operation/agentes/estado_agente.php operation/agentes/exportdata.php operation/agentes/ver_agente.php operation/agentes/status_monitor.php operation/agentes/alerts_status.php operation/users/user_statistics.php: Added new header format. * operation/agentes/estado_grupo.php: Removed old group view. * operation/agentes/tactical.php: Adapted to use new realtime/batch statistical system. Placed events above server info. Showing only pending events and other minor changes. * operation/agentes/group_view.php: NEW screen, replacing old one. Probably most ugly, but much more useful than before. * operation/agentes/networkmap.php: Added title. * operation/messages/message.php: Added title and adding some exists in code was missing before. * operation/reporting/reporting_viewer.php: Added title. * operation/reporting/graph_viewer.php: Added title. * operation/reporting/custom_reporting.php: Added title. * operation/servers/view_server.php: * operation/menu.php: Replaced old group view with new (this has english name). Removed autorefresh "by default" in server view. * extras/pandoradb_migrate_v3.0_to_v3.1.sql: Fixed typo. * extras/pandora_diag.php: Minor changes, removed some info and added other. * general/logon_ok.php: Minor aesthetic changes. * general/header.php: Fixed missing ";" * operation/extensions.php, godmode/extensions.php: Added support for delete extensions. * godmode/menu.php: New setup items. * godmode/setup/setup.php, godmode/setup/performance.php, godmode/setup/setup_visuals.php: Reordered setup options, new setup section "Performance", added new performance options to set "realtime" statistics or "batchmode" with it's own interval. Some setup info is now shared with the servers (but it it's any change in setup, servers should be restarted anyway). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2390 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2010-02-19 16:16:03 +01:00
}
/**
* Print a input for agent autocomplete, this input search into your
* pandora DB (or pandoras DBs when you have metaconsole) for agents
* that have name near to equal that you are writing into the input.
*
* This generate a lot of lines of html and javascript code.
*
2019-05-28 10:47:31 +02:00
* @param array $parameters Array with several properties:
* - $parameters['return'] boolean, by default is false
* true - return as html string the code (html and js)
* false - print the code.
*
* - $parameters['input_name'] the input name (needs to get the value)
* string - The name.
* default - "agent_autocomplete_<aleatory_uniq_raw_letters/numbers>"
*
* - $parameters['input_id'] the input id (needs to get the value)
* string - The ID.
* default - "text-<input_name>"
*
* - $parameters['selectbox_group'] the id of selectbox with the group
* string - The ID of selectbox.
* default - "" empty string
*
* - $parameters['icon_image'] the small icon to show into the input in
* the right side.
* string - The url for the image.
* default - "images/lightning.png"
*
* - $parameters['value'] The initial value to set the input.
* string - The value.
* default - "" emtpy string
*
* - $parameters['show_helptip'] boolean, by default is false
* true - print the icon out the field in side right the tiny star
* for tip.
* false - does not print
*
* - $parameters['helptip_text'] The text to show in the tooltip.
* string - The text to show into the tooltip.
* default - "Type at least two characters to search." (translate)
*
* - $parameters['use_hidden_input_idagent'] boolean, Use a field for
* store the id of agent from the ajax query. By default is false.
* true - Use the field for id agent and the sourcecode work with
* this.
* false - Doesn't use the field (maybe this doesn't exist outer)
*
* - $parameters['print_hidden_input_idagent'] boolean, Print a field
* for store the id of agent from the ajax query. By default is
* false.
* true - Print the field for id agent and the sourcecode work with
* this.
* false - Doesn't print the field (maybe this doesn't exist outer)
*
* - $parameters['hidden_input_idagent_name'] The name of hidden input
* for to store the id agent.
* string - The name of hidden input.
* default - "agent_autocomplete_idagent_<aleatory_uniq_raw_letters/numbers>"
*
* - $parameters['hidden_input_idagent_id'] The id of hidden input
* for to store the id agent.
* string - The id of hidden input.
* default - "hidden-<hidden_input_idagent_name>"
*
* - $parameters['hidden_input_idagent_value'] The initial value to set
* the input id agent for store the id agent.
* string - The value.
* default - 0
*
* - $parameters['size'] The size in characters for the input of agent.
* string - A number of characters.
* default - 30
*
* - $parameters['maxlength'] The max characters that can store the
* input of agent.
* string - A number of characters max to store
* default - 100
*
* - $parameters['disabled'] Set as disabled the input of agent. By
* default is false
* true - Set disabled the input of agent.
* false - Set enabled the input of agent.
*
* - $parameters['selectbox_id'] The id of select box that stores the
* list of modules of agent select.
* string - The id of select box.
* default - "id_agent_module"
*
* - $parameters['add_none_module'] Boolean, add the list of modules
* the "none" entry, with value 0. By default is true
* true - add the none entry.
* false - does not add the none entry.
*
* - $parameters['none_module_text'] Boolean, add the list of modules
* the "none" entry, with value 0.
* string - The text to put for none module for example "select a
* module"
* default - "none" (translate)
*
* - $parameters['print_input_server'] Boolean, print the hidden field
* to store the server (metaconsole). By default false.
* true - Print the hidden input for the server.
* false - Does not print.
*
* - $parameters['use_input_server'] Boolean, use the hidden field
* to store the server (metaconsole). By default false.
* true - Use the hidden input for the server.
* false - Does not print.
*
* - $parameters['input_server_name'] The name for hidden field to
* store the server.
* string - The name of field for server.
* default - "server_<aleatory_uniq_raw_letters/numbers>"
*
* - $parameters['input_server_id'] The id for hidden field to store
* the server.
* string - The id of field for server.
* default - "hidden-<input_server_name>"
*
* - $parameters['input_server_value'] The value to store into the
* field server.
* string - The name of server.
* default - "" empty string
*
* - $parameters['metaconsole_enabled'] Boolean, set the sourcecode for
* to make some others things that run of without metaconsole. By
* default false.
* true - Set the gears for metaconsole.
* false - Run as without metaconsole.
*
* - $parameters['javascript_ajax_page'] The page to send the ajax
* queries.
* string - The url to ajax page, remember the url must be into your
* domain (ajax security).
* default - "ajax.php"
*
* - $parameters['javascript_function_action_after_select'] The name of
* function to call after the user select a agent into the list in
* the autocomplete field.
* string - The name of function.
* default - ""
*
* - $parameters['javascript_function_action_after_select_js_call'] The
* call of this function to call after user select a agent into the
* list in the autocomplete field. Instead the
* $parameters['javascript_function_action_after_select'], this is
* overwrite the previous element. And this is necesary when you need
* to set some params in your custom function.
* string - The call line as javascript code.
* default - ""
*
* - $parameters['javascript_function_action_into_source'] The source
* code as block string to call when the autocomplete starts to get
* the data from ajax.
* string - A huge string with your function as javascript.
* default - ""
*
* - $parameters['javascript'] Boolean, set the autocomplete agent to
* use javascript or enabled javascript. By default true.
* true - Enabled the javascript.
* false - Disabled the javascript.
*
* - $parameters['javascript_is_function_select'] Boolean, set to
* enable to call a function when user select a agent in the
* autocomplete list. By default false.
* true - Enabled this feature.
* false - Disabled this feature.
*
* - $parameters['javascript_code_function_select'] The name of
* function to call when user select a agent in the autocomplete
* list.
* string - The name of function but remembers this function pass
* the parameter agent_name.
* default - "function_select_<input_name>"
*
* - $parameters['javascript_name_function_select'] The source
* code as block string to call when user select a agent into the
* list in the autocomplete field. Althought use this element, you
* need use the previous parameter to set name of your custom
* function or call line.
* string - A huge string with your function as javascript.
* default - A lot of lines of source code into a string, please this
* lines you can read in the source code of function.
*
* - $parameters['javascript_change_ajax_params'] The params to pass in
* the ajax query for the list of agents.
* array - The associative array with the key and value to pass in
* the ajax query.
* default - A lot of lines of source code into a string, please this
* lines you can read in the source code of function.
*
* - $parameters['javascript_function_change'] The source code as block
* string with all javascript code to run autocomplete field.
* string - The source code javascript into a string.
* default - A lot of lines of source code into a string, please this
* lines you can read in the source code of function.
*
* - $parameters['javascript_document_ready'] Boolean, set the
* javascript sourcecode to run with the document is ready. By
* default is true.
* true - Set to run when document is ready.
* false - Not set to run.
*
* - $parameters['javascript_tags'] Boolean, print the html tags for
* javascript. By default is true.
* true - Print the javascript tags.
* false - Doesn't print the tags.
*
* - $parameters['javascript_tags'] Boolean, print the html tags for
* javascript. By default is true.
* true - Print the javascript tags.
* false - Doesn't print the tags.
*
* @return string HTML code if return parameter is true.
*/
function ui_print_agent_autocomplete_input($parameters)
{
global $config;
2021-03-18 10:03:52 +01:00
$text_color = '';
// Normalize and extract the data from $parameters
2019-05-28 10:47:31 +02:00
// ------------------------------------------------------------------.
$return = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['return'])) {
$return = $parameters['return'];
}
$input_name = uniqid('agent_autocomplete_');
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_name'])) {
$input_name = $parameters['input_name'];
}
$input_id = 'text-'.$input_name;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_id'])) {
$input_id = $parameters['input_id'];
}
$selectbox_group = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['selectbox_group'])) {
$selectbox_group = $parameters['selectbox_group'];
}
2019-05-28 10:47:31 +02:00
// Default value.
2021-03-16 13:37:13 +01:00
$icon_agent = 'images/search_agent.png';
2022-01-17 10:22:30 +01:00
if ($config['style'] === 'pandora_black' && !is_metaconsole()) {
2021-03-18 10:03:52 +01:00
$text_color = 'style="color: white"';
$icon_agent = 'images/agent_mc.menu.png';
}
$icon_image = html_print_image($icon_agent, true, false, true);
if (isset($parameters['icon_image'])) {
$icon_image = $parameters['icon_image'];
}
$value = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['value'])) {
$value = $parameters['value'];
}
$show_helptip = true;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['show_helptip'])) {
$show_helptip = $parameters['show_helptip'];
}
$helptip_text = __('Type at least two characters to search.');
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['helptip_text'])) {
$helptip_text = $parameters['helptip_text'];
}
$use_hidden_input_idagent = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['use_hidden_input_idagent'])) {
$use_hidden_input_idagent = $parameters['use_hidden_input_idagent'];
}
$print_hidden_input_idagent = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['print_hidden_input_idagent'])) {
$print_hidden_input_idagent = $parameters['print_hidden_input_idagent'];
}
$hidden_input_idagent_name = uniqid('agent_autocomplete_idagent_');
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['hidden_input_idagent_name'])) {
$hidden_input_idagent_name = $parameters['hidden_input_idagent_name'];
}
$hidden_input_idagent_id = 'hidden-'.$input_name;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['hidden_input_idagent_id'])) {
$hidden_input_idagent_id = $parameters['hidden_input_idagent_id'];
}
$hidden_input_idagent_value = (int) get_parameter($hidden_input_idagent_name, 0);
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['hidden_input_idagent_value'])) {
$hidden_input_idagent_value = $parameters['hidden_input_idagent_value'];
}
$size = 30;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['size'])) {
$size = $parameters['size'];
}
$maxlength = 100;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['maxlength'])) {
$maxlength = $parameters['maxlength'];
}
$disabled = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['disabled'])) {
$disabled = $parameters['disabled'];
}
$selectbox_id = 'id_agent_module';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['selectbox_id'])) {
$selectbox_id = $parameters['selectbox_id'];
}
$add_none_module = true;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['add_none_module'])) {
$add_none_module = $parameters['add_none_module'];
}
$none_module_text = '--';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['none_module_text'])) {
$none_module_text = $parameters['none_module_text'];
}
$print_input_server = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['print_input_server'])) {
$print_input_server = $parameters['print_input_server'];
}
$print_input_id_server = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['print_input_id_server'])) {
$print_input_id_server = $parameters['print_input_id_server'];
}
$use_input_server = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['use_input_server'])) {
$use_input_server = $parameters['use_input_server'];
}
$use_input_id_server = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['use_input_id_server'])) {
$use_input_id_server = $parameters['use_input_id_server'];
}
$input_server_name = uniqid('server_');
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_server_name'])) {
$input_server_name = $parameters['input_server_name'];
}
$input_id_server_name = uniqid('server_');
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_id_server_name'])) {
$input_id_server_name = $parameters['input_id_server_name'];
}
$input_server_id = 'hidden-'.$input_server_name;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_server_id'])) {
$input_server_id = $parameters['input_server_id'];
}
$input_id_server_id = 'hidden-'.$input_id_server_name;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_id_server_id'])) {
$input_id_server_id = $parameters['input_id_server_id'];
}
$input_server_value = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_server_value'])) {
$input_server_value = $parameters['input_server_value'];
}
$input_id_server_value = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['input_id_server_value'])) {
$input_id_server_value = $parameters['input_id_server_value'];
}
$from_ux_transaction = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['from_ux'])) {
$from_ux_transaction = $parameters['from_ux'];
}
$from_wux_transaction = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['from_wux'])) {
$from_wux_transaction = $parameters['from_wux'];
}
$cascade_protection = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['cascade_protection'])) {
$cascade_protection = $parameters['cascade_protection'];
}
$metaconsole_enabled = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['metaconsole_enabled'])) {
$metaconsole_enabled = $parameters['metaconsole_enabled'];
} else {
2019-05-28 10:47:31 +02:00
// If metaconsole_enabled param is not setted then pick source configuration.
2021-07-13 17:26:03 +02:00
$metaconsole_enabled = is_metaconsole();
}
$get_only_string_modules = false;
if (isset($parameters['get_only_string_modules'])) {
$get_only_string_modules = true;
}
$no_disabled_modules = true;
if (isset($parameters['no_disabled_modules'])) {
$no_disabled_modules = $parameters['no_disabled_modules'];
}
$spinner_image = html_print_image('images/spinner.gif', true, false, true);
if (isset($parameters['spinner_image'])) {
$spinner_image = $parameters['spinner_image'];
}
// Javascript configurations
2019-05-28 10:47:31 +02:00
// ------------------------------------------------------------------.
$javascript_ajax_page = ui_get_full_url('ajax.php', false, false, false);
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_ajax_page'])) {
$javascript_ajax_page = $parameters['javascript_ajax_page'];
}
$javascript_function_action_after_select = '';
2019-05-28 10:47:31 +02:00
// Default value.
$javascript_function_action_after_select_js_call = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_function_action_after_select'])) {
$javascript_function_action_after_select = $parameters['javascript_function_action_after_select'];
$javascript_function_action_after_select_js_call = $javascript_function_action_after_select.'();';
}
if (isset($parameters['javascript_function_action_after_select_js_call'])) {
if ($javascript_function_action_after_select_js_call != $parameters['javascript_function_action_after_select_js_call']
) {
$javascript_function_action_after_select_js_call = $parameters['javascript_function_action_after_select_js_call'];
}
}
$javascript_function_action_into_source = '';
2019-05-28 10:47:31 +02:00
// Default value.
$javascript_function_action_into_source_js_call = '';
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_function_action_into_source'])) {
$javascript_function_action_into_source = $parameters['javascript_function_action_into_source'];
$javascript_function_action_into_source_js_call = $javascript_function_action_into_source.'();';
}
if (isset($parameters['javascript_function_action_into_source_js_call'])) {
if ($javascript_function_action_into_source_js_call != $parameters['javascript_function_action_into_source_js_call']
) {
$javascript_function_action_into_source_js_call = $parameters['javascript_function_action_into_source_js_call'];
}
}
$javascript = true;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript'])) {
$javascript = $parameters['javascript'];
}
$get_order_json = false;
if (isset($parameters['get_order_json'])) {
$get_order_json = true;
}
$javascript_is_function_select = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_is_function_select'])) {
$javascript_is_function_select = $parameters['javascript_is_function_select'];
}
$javascript_name_function_select = 'function_select_'.$input_name;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_name_function_select'])) {
$javascript_name_function_select = $parameters['javascript_name_function_select'];
}
if ($from_ux_transaction != '') {
$javascript_code_function_select = '
function function_select_'.$input_name.'(agent_name) {
$("#'.$selectbox_id.'").empty();
var inputs = [];
inputs.push ("id_agent=" + $("#'.$hidden_input_idagent_id.'").val());
inputs.push ("get_agent_transactions=1");
inputs.push ("page=enterprise/include/ajax/ux_transaction.ajax");
jQuery.ajax ({
data: inputs.join ("&"),
type: "POST",
url: action="'.$javascript_ajax_page.'",
dataType: "json",
success: function (data) {
if (data) {
$("#'.$selectbox_id.'").append ($("<option value=0>None</option>"));
2017-08-23 17:21:15 +02:00
jQuery.each (data, function (id, value) {
$("#'.$selectbox_id.'").append ($("<option value=" + id + ">" + value + "</option>"));
2017-08-23 17:21:15 +02:00
});
}
}
});
return false;
}
';
} else if ($from_wux_transaction != '') {
2021-07-12 12:32:05 +02:00
if (is_metaconsole() === true) {
$inputNode = 'inputs.push ("server_id=" + $("#'.$input_id_server_id.'").val());';
} else {
$inputNode = '';
}
$javascript_code_function_select = '
function function_select_'.$input_name.'(agent_name) {
$("#'.$selectbox_id.'").empty();
2017-08-23 17:21:15 +02:00
var inputs = [];
inputs.push ("id_agent=" + $("#'.$hidden_input_idagent_id.'").val());
2021-07-12 12:32:05 +02:00
inputs.push ("get_agent_transactions=1");
2017-08-23 17:21:15 +02:00
inputs.push ("page=enterprise/include/ajax/wux_transaction.ajax");
2021-07-12 12:32:05 +02:00
'.$inputNode.'
2017-08-23 17:21:15 +02:00
jQuery.ajax ({
data: inputs.join ("&"),
type: "POST",
url: action="'.$javascript_ajax_page.'",
2017-08-23 17:21:15 +02:00
dataType: "json",
success: function (data) {
if (data) {
$("#'.$selectbox_id.'").append ($("<option value=0>None</option>"));
jQuery.each (data, function (id, value) {
$("#'.$selectbox_id.'").append ($("<option value=" + id + ">" + value + "</option>"));
});
}
}
});
return false;
}
';
} else {
$javascript_code_function_select = '
function function_select_'.$input_name.'(agent_name) {
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
$("#'.$selectbox_id.'").empty ();
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
var inputs = [];
inputs.push ("agent_name=" + agent_name);
2015-08-04 12:49:21 +02:00
inputs.push ("delete_pending=0");
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
inputs.push ("get_agent_modules_json=1");
inputs.push ("page=operation/agentes/ver_agente");
if ('.((int) !$metaconsole_enabled).') {
inputs.push ("force_local_modules=1");
}
2020-03-17 14:23:52 +01:00
inputs.push ("get_order_json=1");
2017-11-10 15:03:52 +01:00
if ('.((int) $get_only_string_modules).') {
2017-11-10 15:03:52 +01:00
inputs.push ("get_only_string_modules=1");
}
if ('.((int) $no_disabled_modules).') {
inputs.push ("disabled=0");
}
if ('.((int) $metaconsole_enabled).') {
if (('.((int) $use_input_server).')
|| ('.((int) $print_input_server).')) {
inputs.push ("server_name=" + $("#'.$input_server_id.'").val());
}
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
inputs.push ("server_id=" + $("#'.$input_id_server_id.'").val());
}
}
if (('.((int) $print_hidden_input_idagent).')
|| ('.((int) $use_hidden_input_idagent).')) {
inputs.push ("id_agent=" + $("#'.$hidden_input_idagent_id.'").val());
}
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
jQuery.ajax ({
data: inputs.join ("&"),
type: "POST",
url: action="'.$javascript_ajax_page.'",
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
dataType: "json",
success: function (data) {
2020-03-17 14:23:52 +01:00
if (Array.isArray(data) === true) {
data.sort(function(a, b) {
var textA = a.nombre.toUpperCase();
var textB = b.nombre.toUpperCase();
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});
}
if ('.((int) $add_none_module).') {
$("#'.$selectbox_id.'")
.append($("<option></option>")
.attr("value", 0).text("'.$none_module_text.'"));
}
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
jQuery.each (data, function(i, val) {
s = js_html_entity_decode(val["nombre"]);
$("#'.$selectbox_id.'")
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
.append ($("<option></option>")
.attr("value", val["id_agente_modulo"]).text (s));
});
if('.(int) $cascade_protection.' == 0){
$("#'.$selectbox_id.'").enable();
2017-09-05 12:35:21 +02:00
}
$("#'.$selectbox_id.'").fadeIn ("normal");
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
}
});
return false;
}
';
}
if (isset($parameters['javascript_code_function_select'])) {
$javascript_code_function_select = $parameters['javascript_code_function_select'];
}
// ============ INIT javascript_change_ajax_params ==================
2019-05-28 10:47:31 +02:00
// Default value.
$javascript_page = 'include/ajax/agent';
if (isset($parameters['javascript_page'])) {
$javascript_page = $parameters['javascript_page'];
}
$javascript_change_ajax_params_original = [
'page' => '"'.$javascript_page.'"',
'search_agents' => 1,
'id_group' => 'function() {
var group_id = 0;
if ('.((int) !empty($selectbox_group)).') {
group_id = $("#'.$selectbox_group.'").val();
}
return group_id;
}',
'q' => 'term',
];
if (!$metaconsole_enabled) {
$javascript_change_ajax_params_original['force_local'] = 1;
}
if (isset($parameters['javascript_change_ajax_params'])) {
$javascript_change_ajax_params = [];
$found_page = false;
foreach ($parameters['javascript_change_ajax_params'] as $key => $param_ajax) {
if ($key == 'page') {
$found_page = true;
if ($javascript_page != $param_ajax) {
$javascript_change_ajax_params['page'] = $param_ajax;
} else {
$javascript_change_ajax_params['page'] = $javascript_page;
}
} else {
$javascript_change_ajax_params[$key] = $param_ajax;
}
}
if (!$found_page) {
$javascript_change_ajax_params['page'] = $javascript_page;
}
} else {
$javascript_change_ajax_params = $javascript_change_ajax_params_original;
}
$first = true;
$javascript_change_ajax_params_text = 'var data_params = {';
foreach ($javascript_change_ajax_params as $key => $param_ajax) {
if (!$first) {
$javascript_change_ajax_params_text .= ",\n";
} else {
$first = false;
}
$javascript_change_ajax_params_text .= '"'.$key.'":'.$param_ajax;
}
$javascript_change_ajax_params_text .= '};';
// ============ END javascript_change_ajax_params ===================
$javascript_function_change = '';
2019-05-28 10:47:31 +02:00
// Default value.
$javascript_function_change .= '
function setInputBackground(inputId, image) {
$("#"+inputId)
.css("background","url(\'"+image+"\') right center no-repeat");
}
function set_functions_change_autocomplete_'.$input_name.'() {
var cache_'.$input_name.' = {};
$("#'.$input_id.'").autocomplete({
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
minLength: 2,
source: function( request, response ) {
var term = request.term; //Word to search
'.$javascript_change_ajax_params_text.'
var groupId = data_params.id_group();
// Index cache by group Id
if (cache_'.$input_name.'[groupId] == null) {
cache_'.$input_name.'[groupId] = {};
}
2021-05-07 13:50:28 +02:00
//Set loading
setInputBackground("'.$input_id.'", "'.$spinner_image.'");
//Function to call when the source
if ('.((int) !empty($javascript_function_action_into_source_js_call)).') {
'.$javascript_function_action_into_source_js_call.'
}
//==== CACHE CODE ==================================
//Check the cache
var found = false;
if (term in cache_'.$input_name.'[groupId]) {
response(cache_'.$input_name.'[groupId][term]);
//Set icon
setInputBackground("'.$input_id.'", "'.$icon_image.'");
return;
}
else {
//Check if other terms cached start with same
//letters.
2019-05-28 10:47:31 +02:00
//TODO: At the moment DISABLED CODE.
/*
for (i = 1; i < term.length; i++) {
var term_match = term.substr(0, term.length - i);
$.each(cache_'.$input_name.'[groupId], function (oldterm, olddata) {
var pattern = new RegExp("^" + term_match + ".*","gi");
if (oldterm.match(pattern)) {
response(cache_'.$input_name.'[groupId][oldterm]);
found = true;
//Set icon
setInputBackground("'.$input_id.'", "'.$icon_image.'");
return;
}
});
if (found) {
break;
}
}
*/
}
//==================================================
if (found) {
//Set icon
setInputBackground("'.$input_id.'", "'.$icon_image.'");
2021-05-07 13:11:36 +02:00
select_item_click = 0;
2021-05-07 13:11:36 +02:00
return;
}
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
jQuery.ajax ({
data: data_params,
type: "POST",
url: action="'.$javascript_ajax_page.'",
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
dataType: "json",
success: function (data) {
cache_'.$input_name.'[groupId][term] = data; //Save the cache
2021-05-07 13:11:36 +02:00
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
response(data);
2021-05-07 13:11:36 +02:00
//Set icon
setInputBackground("'.$input_id.'", "'.$icon_image.'");
select_item_click = 0;
2021-05-07 13:11:36 +02:00
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
return;
}
});
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
return;
},
//---END source-----------------------------------------
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
select: function( event, ui ) {
2016-10-06 12:10:10 +02:00
var agent_name = ui.item.alias;
var agent_id = ui.item.id;
var server_name = "";
var server_id = "";
if ('.((int) $metaconsole_enabled).') {
server_name = ui.item.server;
}
else {
server_name = ui.item.ip;
}
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
server_id = ui.item.id_server;
}
2021-07-13 17:26:03 +02:00
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
//Put the name
$(this).val(agent_name);
if (('.((int) $print_hidden_input_idagent).')
|| ('.((int) $use_hidden_input_idagent).')) {
$("#'.$hidden_input_idagent_id.'").val(agent_id);
}
//Put the server id into the hidden input
if (('.((int) $use_input_server).')
|| ('.((int) $print_input_server).')) {
$("#'.$input_server_id.'").val(server_name);
}
//Put the server id into the hidden input
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
$("#'.$input_id_server_id.'").val(server_id);
}
//Call the function to select (example fill the modules)
if ('.((int) $javascript_is_function_select).') {
'.$javascript_name_function_select.'(agent_name);
}
//Function to call after the select
if ('.((int) !empty($javascript_function_action_after_select_js_call)).') {
'.$javascript_function_action_after_select_js_call.'
}
select_item_click = 1;
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
return false;
}
})
.data("ui-autocomplete")._renderItem = function( ul, item ) {
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
if (item.ip == "") {
2016-09-22 10:27:35 +02:00
text = "<a>" + item.alias+ "</a>";
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
}
else {
2016-09-22 10:27:35 +02:00
text = "<a>" + item.alias
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
+ "<br><span style=\"font-size: 70%; font-style: italic;\">IP:" + item.ip + "</span></a>";
}
switch (item.filter) {
default:
case \'agent\':
return $("<li style=\'background: #DFFFC4;\'></li>")
.data("item.autocomplete", item)
.append(text)
.appendTo(ul);
break;
case \'address\':
return $("<li style=\'background: #F7CFFF;\'></li>")
.data("item.autocomplete", item)
.append(text)
.appendTo(ul);
break;
case \'description\':
return $("<li style=\'background: #FEFCC6;\'></li>")
.data("item.autocomplete", item)
2016-09-22 10:27:35 +02:00
.append(text)
.appendTo(ul);
break;
case \'alias\':
return $("<li style=\'background: #a8e7eb;\'></li>")
.data("item.autocomplete", item)
.append(text)
.appendTo(ul);
break;
}
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
};
//Force the size of autocomplete
$(".ui-autocomplete").css("max-height", "100px");
$(".ui-autocomplete").css("overflow-y", "auto");
/* prevent horizontal scrollbar */
$(".ui-autocomplete").css("overflow-x", "hidden");
/* add padding to account for vertical scrollbar */
$(".ui-autocomplete").css("padding-right", "20px");
//Force to style of items
$(".ui-autocomplete").css("text-align", "left");
}';
if (isset($parameters['javascript_function_change'])) {
$javascript_function_change = $parameters['javascript_function_change'];
}
$javascript_document_ready = true;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_document_ready'])) {
$javascript_document_ready = $parameters['javascript_document_ready'];
}
$javascript_tags = true;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_tags'])) {
$javascript_tags = $parameters['javascript_tags'];
}
$disabled_javascript_on_blur_function = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['disabled_javascript_on_blur_function'])) {
$disabled_javascript_on_blur_function = $parameters['disabled_javascript_on_blur_function'];
}
$javascript_on_blur_function_name = 'function_on_blur_'.$input_name;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['javascript_on_blur_function_name'])) {
$javascript_on_blur_function_name = $parameters['javascript_on_blur_function_name'];
}
$check_only_empty_javascript_on_blur_function = false;
2019-05-28 10:47:31 +02:00
// Default value.
if (isset($parameters['check_only_empty_javascript_on_blur_function'])) {
$check_only_empty_javascript_on_blur_function = $parameters['check_only_empty_javascript_on_blur_function'];
}
2019-05-28 10:47:31 +02:00
// Default value.
$javascript_on_blur = '
/*
This function is a callback when the autocomplete agent
input lost the focus.
*/
function '.$javascript_on_blur_function_name.'() {
input_value = $("#'.$input_id.'").val();
2019-05-17 16:36:21 +02:00
if (input_value.length < 2) {
if (('.((int) $print_hidden_input_idagent).')
|| ('.((int) $use_hidden_input_idagent).')) {
$("#'.$hidden_input_idagent_id.'").val(0);
}
//Put the server id into the hidden input
if (('.((int) $use_input_server).')
|| ('.((int) $print_input_server).')) {
$("#'.$input_server_id.'").val("");
}
//Put the server id into the hidden input
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
$("#'.$input_id_server_id.'").val("");
}
return;
}
if (select_item_click) {
2021-04-06 15:25:43 +02:00
select_item_click = 0;
$("#'.$input_id.'")
.css("background",
"url(\"'.$icon_image.'\") right center no-repeat");
return;
2021-04-06 15:25:43 +02:00
} else {
// Clear selectbox if item is not selected.
$("#'.$selectbox_id.'").empty();
$("#'.$selectbox_id.'").append($("<option value=0>'.__('Select an Agent first').'</option>"));
$("#'.$selectbox_id.'").attr("disabled", "disabled");
// Not allow continue on blur .
if ('.((int) $check_only_empty_javascript_on_blur_function).') {
return
}
}
//Set loading
$("#'.$input_id.'")
.css("background",
"url(\"'.$spinner_image.'\") right center no-repeat");
var term = input_value; //Word to search
'.$javascript_change_ajax_params_text.'
if ('.((int) !$metaconsole_enabled).') {
data_params[\'force_local\'] = 1;
}
jQuery.ajax ({
data: data_params,
type: "POST",
url: action="'.$javascript_ajax_page.'",
dataType: "json",
success: function (data) {
2019-05-17 16:36:21 +02:00
if (data.length < 2) {
//Set icon
$("#'.$input_id.'")
.css("background",
"url(\"'.$icon_image.'\") right center no-repeat");
return;
}
var agent_name = data[0].name;
var agent_id = data[0].id;
var server_name = "";
var server_id = "";
if ('.((int) $metaconsole_enabled).') {
server_name = data[0].server;
}
else {
server_name = data[0].ip;
}
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
server_id = data[0].id_server;
}
if (('.((int) $print_hidden_input_idagent).')
|| ('.((int) $use_hidden_input_idagent).')) {
$("#'.$hidden_input_idagent_id.'").val(agent_id);
}
//Put the server id into the hidden input
if (('.((int) $use_input_server).')
|| ('.((int) $print_input_server).')) {
$("#'.$input_server_id.'").val(server_name);
}
//Put the server id into the hidden input
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
$("#'.$input_id_server_id.'").val(server_id);
}
//Call the function to select (example fill the modules)
if ('.((int) $javascript_is_function_select).') {
'.$javascript_name_function_select.'(agent_name);
}
//Function to call after the select
if ('.((int) !empty($javascript_function_action_after_select_js_call)).') {
'.$javascript_function_action_after_select_js_call.'
}
2021-04-06 15:25:43 +02:00
//Set icon
$("#'.$input_id.'")
.css("background",
"url(\"'.$icon_image.'\") right center no-repeat");
return;
}
});
}
';
if (isset($parameters['javascript_on_blur'])) {
$javascript_on_blur = $parameters['javascript_on_blur'];
}
2019-05-28 10:47:31 +02:00
// ------------------------------------------------------------------.
$html = '';
2021-03-18 10:03:52 +01:00
$text_color = '';
2022-01-17 10:22:30 +01:00
if ($config['style'] === 'pandora_black' && !is_metaconsole()) {
2021-03-18 10:03:52 +01:00
$text_color = 'color: white';
}
$attrs = [];
2021-07-07 12:09:47 +02:00
$attrs['style'] = 'padding-right: 20px; background: url('.$icon_image.') no-repeat right; '.$text_color.'';
if (!$disabled_javascript_on_blur_function) {
$attrs['onblur'] = $javascript_on_blur_function_name.'()';
}
$html = html_print_input_text_extended(
$input_name,
$value,
$input_id,
$helptip_text,
$size,
$maxlength,
$disabled,
'',
$attrs,
true
);
if ($show_helptip) {
$html .= ui_print_help_tip($helptip_text, true);
}
if ($print_hidden_input_idagent) {
$html .= html_print_input_hidden_extended(
$hidden_input_idagent_name,
$hidden_input_idagent_value,
$hidden_input_idagent_id,
true
);
}
if ($print_input_server) {
$html .= html_print_input_hidden_extended(
$input_server_name,
$input_server_value,
$input_server_id,
true
);
}
if ($print_input_id_server) {
$html .= html_print_input_hidden_extended(
$input_id_server_name,
$input_id_server_value,
$input_id_server_id,
true
);
}
2019-05-28 10:47:31 +02:00
// Write the javascript.
if ($javascript) {
if ($javascript_tags) {
$html .= '<script type="text/javascript">
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
/* <![CDATA[ */';
}
$html .= 'var select_item_click = 0;'."\n";
$html .= $javascript_function_change;
if ($javascript_is_function_select) {
$html .= $javascript_code_function_select;
}
$html .= $javascript_on_blur;
if ($javascript_document_ready) {
$html .= '$(document).ready (function () {
set_functions_change_autocomplete_'.$input_name.'();
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
});';
}
if ($javascript_tags) {
$html .= '/* ]]> */
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
</script>';
}
}
if ($return) {
return $html;
} else {
echo $html;
}
}
/**
* Return error strings (title and message) for each error code
*
2019-05-28 10:47:31 +02:00
* @param string $error_code Error code.
*
* @return array.
*/
function ui_get_error($error_code='')
{
2019-05-28 10:47:31 +02:00
// XXX: Deprecated. Pandora shouldn't go inside this.
return [
'title' => __('Unhandled error'),
'message' => __('An unhandled error occurs'),
];
}
2019-05-28 10:47:31 +02:00
/**
* Include time picker.
*
* @param boolean $echo_tags Tags.
*
* @return void
*/
function ui_include_time_picker($echo_tags=false)
{
if (is_ajax() || $echo_tags) {
2019-05-28 09:48:09 +02:00
echo '<script type="text/javascript" src="'.ui_get_full_url(false, false, false, false).'include/javascript/jquery.ui-timepicker-addon.js"></script>';
} else {
ui_require_jquery_file('ui-timepicker-addon');
}
if (file_exists('include/javascript/i18n/jquery-ui-timepicker-'.substr(get_user_language(), 0, 2).'.js')) {
echo '<script type="text/javascript" src="'.ui_get_full_url('include/javascript/i18n/jquery-ui-timepicker-'.substr(get_user_language(), 0, 2).'.js', false, false, false).'"></script>';
}
}
2019-05-28 10:47:31 +02:00
/**
* Print string value.
*
* @param string $value Value.
* @param integer $id_agente_module Id_agente_module.
* @param integer $current_interval Current_interval.
* @param string $module_name Module_name.
*
* @return string HTML.
*/
function ui_print_module_string_value(
$value,
$id_agente_module,
$current_interval,
2020-11-23 17:09:58 +01:00
$module_name=null,
$server_id=0
) {
global $config;
2019-05-28 10:47:31 +02:00
if ($module_name == null) {
$module_name = modules_get_agentmodule_name($id_agente_module);
}
$id_type_web_content_string = db_get_value(
'id_tipo',
'ttipo_modulo',
'nombre',
'web_content_string'
);
$is_web_content_string = (bool) db_get_value_filter(
'id_agente_modulo',
'tagente_modulo',
[
'id_agente_modulo' => $id_agente_module,
'id_tipo_modulo' => $id_type_web_content_string,
]
);
// Fixed the goliat sends the strings from web
2019-05-28 10:47:31 +02:00
// without HTML entities.
if ($is_web_content_string) {
$value = io_safe_input($value);
}
$is_snapshot = is_snapshot_data($module['datos']);
$is_large_image = is_text_to_black_string($module['datos']);
if (($config['command_snapshot']) && ($is_snapshot || $is_large_image)) {
$row[7] = ui_get_snapshot_image($link, $is_snapshot).'&nbsp;&nbsp;';
}
$is_snapshot = is_snapshot_data($value);
$is_large_image = is_text_to_black_string($value);
if (($config['command_snapshot']) && ($is_snapshot || $is_large_image)) {
$link = ui_get_snapshot_link(
[
'id_module' => $id_agente_module,
'last_data' => $value,
'interval' => $current_interval,
'module_name' => $module_name,
2020-11-23 17:09:58 +01:00
'id_node' => $server_id ? $server_id : 0,
]
);
$salida = ui_get_snapshot_image($link, $is_snapshot).'&nbsp;&nbsp;';
} else {
$sub_string = substr(io_safe_output($value), 0, 12);
if ($value == $sub_string) {
if ($value == 0 && !$sub_string) {
$salida = 0;
} else {
$salida = $value;
}
} else {
// Fixed the goliat sends the strings from web
2019-05-28 10:47:31 +02:00
// without HTML entities.
if ($is_web_content_string) {
$sub_string = substr($value, 0, 12);
} else {
2019-05-28 10:47:31 +02:00
// Fixed the data from Selenium Plugin.
if ($value != strip_tags($value)) {
$value = io_safe_input($value);
$sub_string = substr($value, 0, 12);
} else {
$sub_string = substr(io_safe_output($value), 0, 12);
}
}
if ($value == $sub_string) {
$salida = $value;
} else {
$value = preg_replace('/</', '&lt;', $value);
$value = preg_replace('/>/', '&gt;', $value);
$value = preg_replace('/\n/i', '<br>', $value);
$value = preg_replace('/\s/i', '&nbsp;', $value);
$title_dialog = modules_get_agentmodule_agent_alias($id_agente_module).' / '.$module_name;
$salida = '<div '."id='hidden_value_module_".$id_agente_module."'
class='title_dialog' title='".$title_dialog."'>".$value.'</div><span '."id='value_module_".$id_agente_module."'
class='nowrap'>".'<span id="value_module_text_'.$id_agente_module.'">'.$sub_string.'</span> '."<a href='javascript: toggle_full_value(".$id_agente_module.")'>".html_print_image('images/zoom.png', true, ['style' => 'max-height: 20px; vertical-align: middle;', 'class' => 'invert_filter']).'</a></span>';
}
}
}
return $salida;
}
/**
2019-05-28 10:47:31 +02:00
* Displays a tag list.
*
* @param string $title Title.
* @param array $tags Tags.
*
* @return void
*/
function ui_print_tags_view($title='', $tags=[])
{
2021-02-05 12:37:27 +01:00
$tv = '';
if (!empty($title)) {
$tv .= '<div class="tag-wrapper">';
$tv .= '<h3>'.$title.'</h3>';
} else {
$tv .= '<div class="tag-wrapper pdd_t_10px">';
}
foreach ($tags as $tag) {
$tv .= '<div class=pandora-tag>';
$tv .= '<span class=pandora-tag-title>';
$tv .= $tag['title'];
$tv .= '</span>';
$tv .= '<span class=pandora-tag-value>';
$tv .= $tag['value'];
$tv .= '</span>';
$tv .= '</div>';
}
$tv .= '</div>';
echo $tv;
}
/**
2019-05-28 10:47:31 +02:00
* Gets the link to open a snapshot into a new page.
*
2019-05-28 10:47:31 +02:00
* @param array $params Params to build the link (see $default_params).
* @param boolean $only_params Flag to choose de return value:
* true: Get the four params required in the function of pandora.js winopen_var (js use)
* false: Get an inline winopen_var function call (php user).
*
* @return string Link.
*/
function ui_get_snapshot_link($params, $only_params=false)
{
global $config;
$default_params = [
2019-05-28 10:47:31 +02:00
// Id_agente_modulo.
'id_module' => 0,
'module_name' => '',
'interval' => 300,
'timestamp' => 0,
'id_node' => 0,
];
2019-05-28 10:47:31 +02:00
// Merge default params with passed params.
$params = array_merge($default_params, $params);
2019-05-28 10:47:31 +02:00
// First parameter of js winopeng_var.
2020-11-23 17:09:58 +01:00
$page = ui_get_full_url('operation/agentes/snapshot_view.php', false, false, false);
2019-05-28 10:47:31 +02:00
$url = $page.'?id='.$params['id_module'].'&label='.rawurlencode(urlencode(io_safe_output($params['module_name']))).'&id_node='.$params['id_node'];
if ($params['timestamp'] != 0) {
$url .= '&timestamp='.$params['timestamp'];
}
if ($params['interval'] != 0) {
$url .= '&refr='.$params['interval'];
}
2019-05-28 10:47:31 +02:00
// Second parameter of js winopeng_var.
$win_handle = dechex(crc32('snapshot_'.$params['id_module']));
$link_parts = [
$url,
$win_handle,
700,
480,
];
2019-05-28 10:47:31 +02:00
// Return only the params to js execution.
if ($only_params) {
return $link_parts;
}
2019-05-28 10:47:31 +02:00
// Return the function call to inline js execution.
return "winopeng_var('".implode("', '", $link_parts)."')";
}
2018-08-02 13:02:33 +02:00
/**
2019-05-28 10:47:31 +02:00
* Get the snapshot image with the link to open a snapshot into a new page
2018-08-02 13:02:33 +02:00
*
2019-05-28 10:47:31 +02:00
* @param string $link Built link.
* @param boolean $is_image Picture image or list image.
2018-08-02 13:02:33 +02:00
*
2019-05-28 10:47:31 +02:00
* @return string HTML anchor link with image.
2018-08-02 13:02:33 +02:00
*/
function ui_get_snapshot_image($link, $is_image)
{
2019-05-28 10:47:31 +02:00
$image_name = ($is_image) ? 'photo.png' : 'default_list.png';
$link = '<a href="javascript:'.$link.'">'.html_print_image(
2019-05-28 10:47:31 +02:00
'images/'.$image_name,
true,
[
'border' => '0',
'alt' => '',
'title' => __('Snapshot view'),
2020-11-25 17:00:37 +01:00
'style' => 'max-height: 20px; vertical-align: middle;',
'class' => 'invert_filter',
]
).'</a>';
return $link;
2018-08-02 13:02:33 +02:00
}
2019-05-28 10:47:31 +02:00
/**
* Show warning timezone missmatch.
*
* @param string $tag Tag.
* @param boolean $return Return.
*
* @return string HTML.
*/
function ui_get_using_system_timezone_warning($tag='h3', $return=true)
{
global $config;
$user_offset = ((-get_fixed_offset() / 60) / 60);
if ($config['timezone'] != date_default_timezone_get()) {
$message = sprintf(
__('These controls are using the timezone of the system (%s) instead of yours (%s). The difference with your time zone in hours is %s.'),
$config['timezone'],
date_default_timezone_get(),
2019-05-28 10:47:31 +02:00
($user_offset > 0) ? '+'.$user_offset : $user_offset
);
return ui_print_info_message($message, '', $return, $tag);
} else {
return '';
}
}
/**
* Get the custom docs logo
*
2019-05-28 10:47:31 +02:00
* @return string with the path to logo. False if it should not be displayed.
*/
function ui_get_docs_logo()
{
global $config;
2019-05-28 10:47:31 +02:00
// Default logo to open version (enterprise_installed function only works in login status).
if (!file_exists(ENTERPRISE_DIR.'/load_enterprise.php') || !isset($config['custom_docs_logo'])) {
return 'images/icono_docs.png';
}
if ($config['custom_docs_logo'] === '') {
return false;
}
return 'enterprise/images/custom_general_logos/'.$config['custom_docs_logo'];
}
/**
* Get the custom support logo
*
2019-05-28 10:47:31 +02:00
* @return string with the path to logo. False if it should not be displayed.
*/
function ui_get_support_logo()
{
global $config;
2019-05-28 10:47:31 +02:00
// Default logo to open version (enterprise_installed function only works in login status).
if (!file_exists(ENTERPRISE_DIR.'/load_enterprise.php') || !isset($config['custom_support_logo'])) {
return 'images/icono_support.png';
}
if ($config['custom_support_logo'] === '') {
return false;
}
return 'enterprise/images/custom_general_logos/'.$config['custom_support_logo'];
}
/**
* Get the custom header logo
*
2019-05-28 10:47:31 +02:00
* @param boolean $white_bg Using white bg or not.
*
* @return string with the path to logo. If it is not set, return the default value.
*/
function ui_get_custom_header_logo($white_bg=false)
{
global $config;
if (empty($config['enterprise_installed'])) {
return 'images/pandora_tinylogo_open.png';
}
2019-05-28 10:47:31 +02:00
$stored_logo = (is_metaconsole()) ? (($white_bg) ? $config['meta_custom_logo_white_bg'] : $config['meta_custom_logo']) : (($white_bg) ? $config['custom_logo_white_bg'] : $config['custom_logo']);
if (empty($stored_logo)) {
return 'images/pandora_tinylogo.png';
}
return 'enterprise/images/custom_logo/'.$stored_logo;
}
2018-05-23 18:19:24 +02:00
/**
* Get the central networkmap logo
*
* @return string with the path to logo. If it is not set, return the default.
*/
function ui_get_logo_to_center_networkmap()
{
global $config;
2018-05-23 18:19:24 +02:00
if ((!enterprise_installed()) || empty($config['custom_network_center_logo'])) {
return 'images/networkmap/bola_pandora_network_maps.png';
}
2018-05-23 18:19:24 +02:00
return 'enterprise/images/custom_general_logos/'.$config['custom_support_logo'];
2018-05-23 18:19:24 +02:00
}
/**
* Get the mobile console login logo
*
* @return string with the path to logo. If it is not set, return the default.
*/
function ui_get_mobile_login_icon()
{
global $config;
if ((!enterprise_installed()) || empty($config['custom_mobile_console_logo'])) {
return is_metaconsole() ? 'mobile/images/metaconsole_mobile.png' : 'mobile/images/pandora_mobile_console.png';
}
return 'enterprise/images/custom_general_logos/'.$config['custom_mobile_console_logo'];
}
/**
* Get the favicon
*
* @return string with the path to logo. If it is not set, return the default.
*/
function ui_get_favicon()
{
global $config;
if (empty($config['custom_favicon'])) {
2019-05-28 10:47:31 +02:00
return (!is_metaconsole()) ? 'images/pandora.ico' : 'enterprise/meta/images/favicon_meta.ico';
}
return 'images/custom_favicon/'.$config['custom_favicon'];
}
/**
* Show sorting arrows for tables
*
2019-05-28 10:47:31 +02:00
* @param string $url_up Url_up.
* @param string $url_down Url_down.
* @param string $selectUp SelectUp.
* @param string $selectDown SelectDown.
*
* @return string HTML anchor link with the arrow icon.
*/
function ui_get_sorting_arrows($url_up, $url_down, $selectUp, $selectDown)
{
$arrow_up = 'images/sort_up_black.png';
$arrow_down = 'images/sort_down_black.png';
// Green arrows for the selected.
if ($selectUp === true) {
$arrow_up = 'images/sort_up_green.png';
}
if ($selectDown === true) {
$arrow_down = 'images/sort_down_green.png';
}
if (is_metaconsole()) {
$arrow_up = 'images/sort_up.png';
$arrow_down = 'images/sort_down.png';
}
return '<span class="sort_arrow">
<a href="'.$url_up.'">'.html_print_image($arrow_up, true, ['alt' => 'up']).'</a>
<a href="'.$url_down.'">'.html_print_image($arrow_down, true, ['alt' => 'down']).'</a>
</span>';
}
2019-05-27 19:00:48 +02:00
/**
* Show breadcrums in the page titles
*
2019-05-28 10:47:31 +02:00
* @param string $tab_name Tab name.
*
2019-05-27 19:00:48 +02:00
* @return string HTML anchor with the name of the section.
*/
function ui_print_breadcrums($tab_name)
{
2019-05-29 17:10:21 +02:00
if (is_array($tab_name)) {
return join(' / ', $tab_name);
} else if ($tab_name != '') {
2019-05-27 19:00:48 +02:00
$section = str_replace('_', ' ', $tab_name);
$section = ucwords($section);
2019-05-29 17:10:21 +02:00
$section = ' / '.___($section);
2019-05-27 19:00:48 +02:00
}
return $section;
}
2019-10-01 16:24:02 +02:00
/**
* Show last comment
*
* @param array $comments array with comments
*
* @return string HTML string with the last comment of the events.
*/
function ui_print_comments($comments)
{
global $config;
$comments = explode('<br>', $comments);
$comments = str_replace(["\n", '&#x0a;'], '<br>', $comments);
if (is_array($comments)) {
foreach ($comments as $comm) {
if (empty($comm)) {
continue;
}
$comments_array[] = io_safe_output(json_decode($comm, true));
2019-10-01 16:24:02 +02:00
}
}
2021-02-05 12:37:27 +01:00
$last_comment = [];
2019-10-01 16:24:02 +02:00
foreach ($comments_array as $comm) {
// Show the comments more recent first.
if (is_array($comm)) {
$last_comment[] = array_reverse($comm);
}
}
// Only show the last comment. If commment its too long,the comment will short with ...
// If $config['prominent_time'] is timestamp the date show Month, day, hour and minutes.
// Else show comments hours ago
if ($last_comment[0][0]['action'] != 'Added comment') {
2019-10-15 11:13:40 +02:00
$last_comment[0][0]['comment'] = $last_comment[0][0]['action'];
}
2019-10-01 16:24:02 +02:00
$short_comment = substr($last_comment[0][0]['comment'], 0, '80px');
if ($config['prominent_time'] == 'timestamp') {
$comentario = '<i>'.date($config['date_format'], $last_comment[0][0]['utimestamp']).'&nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$last_comment[0][0]['comment'].'';
if (strlen($comentario) > '200px') {
$comentario = '<i>'.date($config['date_format'], $last_comment[0][0]['utimestamp']).'&nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$short_comment.'...';
}
} else {
$rest_time = (time() - $last_comment[0][0]['utimestamp']);
$time_last = (($rest_time / 60) / 60);
$comentario = '<i>'.number_format($time_last, 0).'&nbsp; Hours &nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$last_comment[0][0]['comment'].'';
if (strlen($comentario) > '200px') {
$comentario = '<i>'.number_format($time_last, 0).'&nbsp; Hours &nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$short_comment.'...';
}
}
return io_safe_output($comentario);
}
/**
* Get complete external pandora url.
*
* @param string $url Url to be parsed.
*
* @return string Full url.
*/
function ui_get_full_external_url(string $url)
{
$url_parsed = parse_url($url);
if ($url_parsed) {
if (!isset($url_parsed['scheme'])) {
$url = 'http://'.$url;
}
}
return $url;
}
2020-06-19 23:03:37 +02:00
function ui_print_message_dialog($title, $text, $id='', $img='', $text_button='', $hidden=true)
{
if ($hidden == true) {
$style = 'display:none';
}
echo '<div id="message_dialog_'.$id.'" title="'.$title.'" style="'.$style.'">';
echo '<div class="content_dialog">';
echo '<div class="icon_message_dialog">';
echo html_print_image($img, true, ['alt' => $title, 'border' => 0]);
echo '</div>';
echo '<div class="content_message_dialog">';
echo '<div class="text_message_dialog">';
echo '<h1>'.$title.'</h1>';
echo '<p>'.$text.'</p>';
echo '<div id="err_msg"></div>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
2020-09-29 09:44:20 +02:00
2020-10-08 13:47:26 +02:00
/**
* Build a Query-Result editor structure
*
* @param string $name Name of the structure
*
* @return null
*/
function ui_query_result_editor($name='default')
{
$editorSubContainer = html_print_div(
[
'id' => $name.'_editor_title',
'content' => '<p>'.__('Query').'</p>',
],
true
);
$editorSubContainer .= html_print_div(
[
'id' => $name.'_editor',
'class' => 'query_result_editor',
],
true
);
$editorSubContainer .= html_print_div(
[
'class' => 'action-buttons edit-button',
'content' => html_print_submit_button(
__('Execute query'),
'execute_query',
false,
'class="sub next"',
true
),
],
true
);
$editorContainer = html_print_div(
[
'id' => $name.'_editor_container',
'class' => 'query_result_editor_container',
'content' => $editorSubContainer,
],
true
);
$viewSubContainer = html_print_div(
[
'id' => $name.'_view_title',
'content' => '<p>'.__('Results').'</p>',
],
true
);
$viewSubContainer .= html_print_div(
[
'id' => $name.'_view',
'class' => 'query_result_view',
],
true
);
$viewSubContainer .= html_print_div(
[
'class' => 'action-buttons',
'content' => '',
],
true
);
$viewContainer = html_print_div(
[
'id' => $name.'_view_container',
'class' => 'query_result_view_container',
'content' => $viewSubContainer,
],
true
);
html_print_div(
[
'id' => 'query_result_container',
'class' => 'databox',
'content' => $editorContainer.$viewContainer,
]
);
// This is needed for Javascript
html_print_div(
[
'id' => 'pandora_full_url',
'hidden' => true,
'content' => ui_get_full_url(false, false, false, false),
]
);
2020-12-02 11:28:46 +01:00
}
2020-09-29 09:44:20 +02:00
/**
* Generate a button for reveal the content of the password field.
*
* @param string $name Name of the field.
* @param boolean $return If true, return the string with the formed element.
*
* @return string
*/
function ui_print_reveal_password(string $name, bool $return=false)
{
if (is_metaconsole()) {
$imagePath = '../../images/';
} else {
$imagePath = 'images/';
}
$output = '&nbsp;<img class="clickable forced_title invert_filter" id="reveal_password_'.$name.'" src="'.$imagePath.'eye_show.png" onclick="reveal_password(\''.$name.'\')" data-use_title_for_force_title="1" data-title="'.__('Show password').'">';
2020-09-29 09:44:20 +02:00
if ($return === true) {
return $output;
}
echo $output;
}
2021-02-08 16:33:54 +01:00
/**
* Generate a spinner box for waiting times
2021-02-12 11:28:13 +01:00
* TIP: It's made for Massive Operations, but it migth used in entire project.
2021-02-08 16:33:54 +01:00
*
2021-02-12 11:28:13 +01:00
* @param string $text Text for show in spinner. English term Loading for default.
2021-02-08 16:33:54 +01:00
* @param boolean $return If true, return the string with the formed element.
*
* @return string
*/
function ui_print_spinner(string $text='Loading', bool $return=false)
{
$output = '';
$output .= '<center>';
$output .= html_print_div(
[
'id' => 'loading_spinner',
'class' => 'white_box invisible',
'content' => '<span style="font-size:25px;">'.$text.'...</span>'.html_print_image(
'images/spinner.gif',
true,
[
'border' => '0',
'width' => '25px',
'heigth' => '25px',
]
),
],
true
);
$output .= '</center>';
$output .= '
<script type="text/javascript">
function hideSpinner() {
document.getElementById("loading_spinner").classList.add("invisible");
}
function showSpinner() {
document.getElementById("loading_spinner").classList.remove("invisible");
}
</script>
';
if ($return === true) {
return $output;
} else {
echo $output;
}
}