From 7843cac20bfbb16e8aa2d2728c80e414599d3f5c Mon Sep 17 00:00:00 2001
From: mdtrooper <tres.14159@gmail.com>
Date: Wed, 21 Oct 2009 20:25:26 +0000
Subject: [PATCH] 2009-10-21  Miguel de Dios  <miguel.dedios@artica.es>

	* include/functions_ui.php: add param "style" in the function
	"print_agent_name" for set the css style in the agent name return html
	string.
	Add in the "format_alert_row" the features: show icon policy from
	enterprise and css grey disabled alert.
	*include/functions_agents.php: add in the function "get_agent_alerts_simple"
	and the function "get_agent_alerts_compound" the search "filter" param
	posibility "all_enabled".
	* operation/agentes/alerts_status, godmode/alerts/alert_list.php: add the
	show rows of disabled alert, and add the select the "all (enabled)" (by
	default show only alerts enabled). And add the icon of policy in the
	enterprise version.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2048 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
---
 pandora_console/ChangeLog                     |  15 +++
 pandora_console/godmode/alerts/alert_list.php |  27 ++++-
 pandora_console/include/functions_agents.php  |   6 ++
 pandora_console/include/functions_ui.php      |  97 +++++++++++++----
 .../operation/agentes/alerts_status.php       | 100 ++++++++++++++----
 5 files changed, 196 insertions(+), 49 deletions(-)

diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog
index e5ac1039d7..bb73c37e24 100644
--- a/pandora_console/ChangeLog
+++ b/pandora_console/ChangeLog
@@ -1,3 +1,18 @@
+2009-10-21  Miguel de Dios  <miguel.dedios@artica.es>
+
+	* include/functions_ui.php: add param "style" in the function
+	"print_agent_name" for set the css style in the agent name return html
+	string.
+	Add in the "format_alert_row" the features: show icon policy from
+	enterprise and css grey disabled alert.
+	*include/functions_agents.php: add in the function "get_agent_alerts_simple"
+	and the function "get_agent_alerts_compound" the search "filter" param
+	posibility "all_enabled".
+	* operation/agentes/alerts_status, godmode/alerts/alert_list.php: add the
+	show rows of disabled alert, and add the select the "all (enabled)" (by
+	default show only alerts enabled). And add the icon of policy in the
+	enterprise version.
+
 2009-10-21  Miguel de Dios  <miguel.dedios@artica.es>
 
 	* include/functions_events.php: tiny fix, the icon for event not validate
diff --git a/pandora_console/godmode/alerts/alert_list.php b/pandora_console/godmode/alerts/alert_list.php
index c6855b7759..3fc319b19c 100644
--- a/pandora_console/godmode/alerts/alert_list.php
+++ b/pandora_console/godmode/alerts/alert_list.php
@@ -313,7 +313,7 @@ $table->class = 'alert_list';
 $table->width = '90%';
 $table->size = array ();
 $table->head = array ();
-$table->head[0] = '';
+$table->head[0] = "<span title='" . __('Enabled / Disabled') . "'>" . __('E/D') . "</span>";
 if (! $id_agente) {
 	$table->style = array ();
 	$table->style[1] = 'font-weight: bold';
@@ -343,12 +343,18 @@ if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
 }
 $table->head[5] = __('Actions');
 $table->head[6] = '';
+
 $table->data = array ();
 
 $rowPair = true;
 $iterator = 0;
 
 foreach ($simple_alerts as $alert) {
+	if ($alert['disabled']) {
+		 $table->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;';
+		 $table->style[$iterator][1] = 'font-style: italic; color: #aaaaaa;';
+	}
+	
 	if ($rowPair)
 		$table->rowclass[$iterator] = 'rowPair';
 	else
@@ -373,8 +379,13 @@ foreach ($simple_alerts as $alert) {
 	if (! $id_agente) {
 		$id_agent = get_agentmodule_agent ($alert['id_agent_module']);
 		$data[1] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$id_agent.'">';
+		if ($alert['disabled'])
+			$data[1] .= '<span style="font-style: italic; color: #aaaaaa;">';
 		$data[1] .= get_agent_name ($id_agent);
+		if ($alert['disabled'])
+			$data[1] .= '</span>';
 		$data[1] .= '</a>';
+
 	}
 	$data[2] = get_agentmodule_name ($alert['id_agent_module']);
 	$data[3] = ' <a class="template_details"
@@ -385,11 +396,11 @@ foreach ($simple_alerts as $alert) {
 	if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
 		$policyInfo = isAlertInPolicy($alert['id_agent_module'], $alert['id_alert_template'], false);
 		if ($policyInfo === false)
-			$data[1] = '';
+			$data[4] = '';
 		else {
 			$img = 'images/policies.png';
 				
-			$data[1] = '<a href="?sec=gpolicies&sec2=enterprise/godmode/policies/policies&id=' . $policyInfo['id_policy'] . '">' . 
+			$data[4] = '<a href="?sec=gpolicies&sec2=enterprise/godmode/policies/policies&id=' . $policyInfo['id_policy'] . '">' . 
 				print_image($img,true, array('title' => $policyInfo['name_policy'])) .
 				'</a>';
 		}
@@ -399,7 +410,10 @@ foreach ($simple_alerts as $alert) {
 	$data[5] = '<ul class="action_list">';
 	foreach ($actions as $action_id => $action) {
 		$data[5] .= '<li><div>';
-		$data[5] .= '<span class="action_name">';
+		if ($alert['disabled'])
+			$data[5] .= '<span class="action_name" style="font-style: italic; color: #aaaaaa;">';
+		else
+			$data[5] .= '<span class="action_name">';
 		$data[5] .= $action['name'];
 		$data[5] .= ' <em>(';
 		if ($action['fires_min'] == $action['fires_max']) {
@@ -431,7 +445,10 @@ foreach ($simple_alerts as $alert) {
 	
 	$data[5] .= '<a class="add_action" id="add-action-'.$alert['id'].'" href="#">';
 	$data[5] .= print_image ('images/add.png', true);
-	$data[5] .= ' '.__('Add action');
+	if ($alert['disabled'])
+		$data[5] .= ' '. '<span style="font-style: italic; color: #aaaaaa;">' .__('Add action') . '</span>';
+	else
+		$data[5] .= ' ' . __('Add action');
 	$data[5] .= '</a>';
 	
 	$data[6] = '<form class="delete_alert_form" method="post" style="display: inline;">';
diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php
index d487ce38e1..b99cdf12ce 100644
--- a/pandora_console/include/functions_agents.php
+++ b/pandora_console/include/functions_agents.php
@@ -117,6 +117,9 @@ function get_agent_alerts_simple ($id_agent = false, $filter = '', $options = fa
 		case "disabled":
 			$filter = ' AND disabled = 1';
 			break;
+		case 'all_enabled':
+			$filter = ' AND disabled = 0';
+			break;
 		default:
 			$filter = '';
 	}
@@ -171,6 +174,9 @@ function get_agent_alerts_compound ($id_agent = false, $filter = '', $options =
 	case "disabled":
 		$filter = ' AND disabled = 1';
 		break;
+	case 'all_enabled':
+		$filter = ' AND disabled = 0';
+		break;
 	default:
 		$filter = '';
 	}
diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php
index c8cf663856..050f0e577e 100644
--- a/pandora_console/include/functions_ui.php
+++ b/pandora_console/include/functions_ui.php
@@ -251,12 +251,13 @@ function print_os_icon ($id_os, $name = true, $return = false) {
  * @param int Agent id
  * @param bool Whether to return the string or echo it too
  * @param int Now uses styles to accomplish this
+ * @param string Style of name in css.
  * 
  * @return string HTML with agent name and link
  */
-function print_agent_name ($id_agent, $return = false, $cutoff = 0) {
+function print_agent_name ($id_agent, $return = false, $cutoff = 0, $style = '') {
 	$agent_name = (string) get_agent_name ($id_agent);
-	$output = '<a href="index.php?sec=estado&amp;sec2=operation/agentes/ver_agente&amp;id_agente='.$id_agent.'" title="'.$agent_name.'"><b>'.$agent_name.'</b></a>';
+	$output = '<a style="' . $style . '" href="index.php?sec=estado&amp;sec2=operation/agentes/ver_agente&amp;id_agente='.$id_agent.'" title="'.$agent_name.'"><b>'.$agent_name.'</b></a>';
 	
 	//TODO: Add a pretty javascript (using jQuery) popup-box with agent details
 	
@@ -278,48 +279,97 @@ function print_agent_name ($id_agent, $return = false, $cutoff = 0) {
  */
 function format_alert_row ($alert, $compound = false, $agent = true, $url = '') {
 	require_once ("include/functions_alerts.php");
+	$isFunctionPolicies = enterprise_include_once ('include/functions_policies.php');
+	
+	if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK)
+		$index = array('policy' => 0, 'force_execution' => 1, 'agent_name' => 2, 'module_name' => 2,
+			'description' => 3, 'template' => 3, 'last_fired' => 4, 'status' => 5,
+		'validate' => 6);
+	else
+		$index = array('force_execution' => 0, 'agent_name' => 1, 'module_name' => 1,
+			'description' => 2, 'template' => 2, 'last_fired' => 3, 'status' => 4,
+		'validate' => 5);
+	
+	if ($alert['disabled']) {
+		$disabledHtmlStart = '<span style="font-style: italic; color: #aaaaaa;">'; 
+		$disabledHtmlEnd = '</span>';
+		$styleDisabled = "font-style: italic; color: #aaaaaa;";
+	}
+	else {
+		$disabledHtmlStart = ''; 
+		$disabledHtmlEnd = '';
+		$styleDisabled = "";
+	}
 	
 	if (empty ($alert))
-		return array ("", "", "", "", "", "", "");
+	{
+		if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK)
+			return array ("", "", "", "", "", "", "", "");
+		else
+			return array ("", "", "", "", "", "", "");
+	}
 	
 	// Get agent id
 	if ($compound) {
 		$id_agent = $alert['id_agent'];
 		$description = $alert['description'];
-	} else {
+	} 
+	else {
 		$id_agent = get_agentmodule_agent ($alert['id_agent_module']);
 		$template = get_alert_template ($alert['id_alert_template']);
 		$description = $template['name'];
 	}
 	$data = array ();
 	
+	if (($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) && (!$compound)) {
+		$policyInfo = isAlertInPolicy($alert['id_agent_module'], $alert['id_alert_template'], false);
+		if ($policyInfo === false)
+			$data[$index['policy']] = '';
+		else {
+			$img = 'images/policies.png';
+				
+			$data[$index['policy']] = '<a href="?sec=gpolicies&sec2=enterprise/godmode/policies/policies&id=' . $policyInfo['id_policy'] . '">' . 
+				print_image($img,true, array('title' => $policyInfo['name_policy'])) .
+				'</a>';
+		}
+	}
+	else if (($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) && ($compound))
+		$data[$index['policy']] = '';
+	
 	// Force alert execution
-	$data[0] = '';
+	$data[$index['force_execution']] = '';
 	if (! $compound) {
 		if ($alert["force_execution"] == 0) {
-			$data[0] = '<a href="'.$url.'&id_alert='.$alert["id"].'&force_execution=1&refr=60"><img src="images/target.png" ></a>';
-		} else {
-			$data[0] = '<a href="'.$url.'&id_alert='.$alert["id"].'&refr=60"><img src="images/refresh.png" /></a>';
+			$data[$index['force_execution']] =
+				'<a href="'.$url.'&id_alert='.$alert["id"].'&force_execution=1&refr=60"><img src="images/target.png" ></a>';
+		} 
+		else {
+			$data[$index['force_execution']] =
+				'<a href="'.$url.'&id_alert='.$alert["id"].'&refr=60"><img src="images/refresh.png" /></a>';
 		}
 	}
 	
+	$data[$index['agent_name']] = $disabledHtmlStart;
 	if ($compound) {
-		$data[1] =  print_agent_name ($id_agent, true, 20);
-	} elseif ($agent == 0) {
-		$data[1] = mb_substr (get_agentmodule_name ($alert["id_agent_module"]), 0, 20);
-	} else {
-		$data[1] = print_agent_name (get_agentmodule_agent ($alert["id_agent_module"]), true, 20);
+		$data[$index['agent_name']] .= print_agent_name ($id_agent, true, 20, $styleDisabled);
+	} 
+	elseif ($agent == 0) {
+		$data[$index['module_name']] .= mb_substr (get_agentmodule_name ($alert["id_agent_module"]), 0, 20);
+	} 
+	else {
+		$data[$index['agent_name']] .= print_agent_name (get_agentmodule_agent ($alert["id_agent_module"]), true, 20, $styleDisabled);
 	}
+	$data[$index['agent_name']] .= $disabledHtmlEnd;
 	
-	$data[2] = '';
+	$data[$index['description']] = '';
 	if (! $compound) {
-		$data[2] .= '<a class="template_details" href="ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$template['id'].'">';
-		$data[2] .= print_image ('images/zoom.png', true);
-		$data[2] .= '</a> ';
+		$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']] .= print_image ('images/zoom.png', true);
+		$data[$index['template']] .= '</a> ';
 	}
-	$data[2] .= mb_substr (safe_input ($description), 0, 35);
+	$data[$index['description']] .= $disabledHtmlStart . mb_substr (safe_input ($description), 0, 35) . $disabledHtmlEnd;
 	
-	$data[3] = print_timestamp ($alert["last_fired"], true);
+	$data[$index['last_fired']] = $disabledHtmlStart . print_timestamp ($alert["last_fired"], true) . $disabledHtmlEnd;
 	
 
 	$status = STATUS_ALERT_NOT_FIRED;
@@ -336,13 +386,14 @@ function format_alert_row ($alert, $compound = false, $agent = true, $url = '')
 		$title = __('Alert not fired');
 	}
 	
-	$data[4] = print_status_image($status, $title, true);
+	$data[$index['status']] = print_status_image($status, $title, true);
 
 	
 	if ($compound) {
-		$data[5] = print_checkbox ("validate_compound[]", $alert["id"], false, true);
-	} else {
-		$data[5] = print_checkbox ("validate[]", $alert["id"], false, true);
+		$data[$index['validate']] = print_checkbox ("validate_compound[]", $alert["id"], false, true);
+	}
+	else {
+		$data[$index['validate']] = print_checkbox ("validate[]", $alert["id"], false, true);
 	}
 	
 	return $data;
diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php
index c6b0c4284a..bbafe7d8af 100644
--- a/pandora_console/operation/agentes/alerts_status.php
+++ b/pandora_console/operation/agentes/alerts_status.php
@@ -17,8 +17,9 @@
 check_login ();
 
 require_once ("include/functions_agents.php");
+$isFunctionPolicies = enterprise_include_once ('include/functions_policies.php');
 
-$filter = get_parameter ("filter", "all");
+$filter = get_parameter ("filter", "undefined");
 $offset = (int) get_parameter_get ("offset", 0);
 $id_group = (int) get_parameter ("ag_group", 1); //1 is the All group (selects all groups)
 
@@ -73,7 +74,14 @@ if (isset ($_GET["id_agente"])) {
 	$alerts_combined = get_agent_alerts_compound ($id_agent, $filter);
 	$print_agent = false;
 	$inside_main = 1;
-} else {
+	
+	if ($filter == "undefined")
+		$filter = "all";
+} 
+else {
+	if ($filter == "undefined")
+		$filter = "all_enabled";
+	
 	if (!give_acl ($config["id_user"], 0, "AR")) {
 		audit_db ($config["id_user"], $config["remote_addr"], "ACL Violation","Trying to access alert view");
 		require ("general/noaccess.php");
@@ -128,6 +136,7 @@ if ($print_agent) {
 		'javascript:this.form.submit();', '', '', true);
 		
 	$alert_status_filter = array();
+	$alert_status_filter['all_enabled'] = __('All (Enabled)');
 	$alert_status_filter['all'] = __('All');
 	$alert_status_filter['fired'] = __('Fired');
 	$alert_status_filter['notfired'] = __('Not fired');
@@ -141,30 +150,69 @@ echo '</form>';
 
 $table->width = '90%';
 $table->class = "databox";
+
 $table->size = array ();
-$table->size[0] = '20px';
-$table->size[1] = '25%';
-$table->size[2] = '50%';
-$table->size[3] = '25%';
-$table->size[4] = '20px';
-$table->size[5] = '60px';
+if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
+	$table->size[0] = '20px';
+	$table->size[1] = '20px';
+	$table->size[2] = '25%';
+	$table->size[3] = '50%';
+	$table->size[4] = '25%';
+	$table->size[5] = '20px';
+	$table->size[6] = '60px';
+}
+else
+{
+	$table->size[0] = '20px';
+	$table->size[1] = '25%';
+	$table->size[2] = '50%';
+	$table->size[3] = '25%';
+	$table->size[4] = '20px';
+	$table->size[5] = '60px';
+}
+
 $table->head = array ();
-$table->head[0] = '';
-$table->head[1] = ''; //Placeholder for name
-$table->head[2] = __('Template');
-$table->head[3] = __('Last fired');
-$table->head[4] = __('Status');
-$table->head[5] = __('Validate');
+if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
+	$table->head[0] = "<span title='" . __('Policy') . "'>" . __('P.') . "</span>";
+	$table->head[1] = "<span title='" . __('Force execution') . "'>" . __('F.') . "</span>";
+	$table->head[2] = ''; //Placeholder for name
+	$table->head[3] = __('Template');
+	$table->head[4] = __('Last fired');
+	$table->head[5] = __('Status');
+	$table->head[6] = __('Validate');
+}
+else
+{
+	$table->head[0] = "<span title='" . __('Force execution') . "'>" . __('F.') . "</span>";
+	$table->head[1] = ''; //Placeholder for name
+	$table->head[2] = __('Template');
+	$table->head[3] = __('Last fired');
+	$table->head[4] = __('Status');
+	$table->head[5] = __('Validate');
+}
 $table->title = __('Single alerts');
 
 if ($print_agent == 0) {
-	$table->head[1] = __('Module');
-} else {
-	$table->head[1] = __('Agent');
+	if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK)
+		$table->head[2] = __('Module');
+	else
+		$table->head[1] = __('Module');
+} 
+else {
+	if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK)
+		$table->head[2] = __('Agent');
+	else
+		$table->head[1] = __('Agent');
 }
 $table->align = array ();
-$table->align[4] = 'center';
-$table->align[5] = 'center';
+if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
+	$table->align[5] = 'center';
+	$table->align[6] = 'center';
+}
+else {
+	$table->align[4] = 'center';
+	$table->align[5] = 'center';
+}
 $table->data = array ();
 
 $total = 0;
@@ -198,8 +246,18 @@ if (!empty ($table->data)) {
 }
 
 $table->title = __('Compound alerts');
-$table->head[1] = __('Agent');
-$table->head[2] = __('Description');
+if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
+	$table->head[0] = '';
+	$table->head[1] = '';
+	$table->head[2] = __('Agent');
+	$table->head[3] = __('Description');
+}
+else
+{
+	$table->head[0] = '';
+	$table->head[1] = __('Agent');
+	$table->head[2] = __('Description');
+}
 $table->data = array ();
 
 $combined_total = 0;