[Console > Tree view] Added a filter by group name and improved the filter by group id

This commit is contained in:
Alejandro Gallardo Escobar 2017-10-25 17:44:59 +02:00
parent 8630bb2468
commit db056100e2
2 changed files with 53 additions and 38 deletions

View File

@ -23,6 +23,7 @@ class Tree {
protected $filter = array();
protected $childrenMethod = "on_demand";
protected $userGroupsACL;
protected $userGroups;
protected $strictACL = false;
@ -36,45 +37,54 @@ class Tree {
$this->id = $id;
$this->rootID = !empty($rootID) ? $rootID : $id;
$this->serverID = $serverID;
$this->childrenMethod = $childrenMethod;
$this->access = $access;
$userGroups = users_get_groups(false, $this->access);
$this->childrenMethod = $childrenMethod;
$this->access = $access;
if (empty($userGroups))
$this->userGroups = false;
else
$this->userGroups = $userGroups;
$userGroupsACL = users_get_groups(false, $this->access);
$this->userGroupsACL = empty($userGroupsACL) ? false : $userGroupsACL;
$this->userGroups = $this->userGroupsACL;
global $config;
include_once($config['homedir']."/include/functions_servers.php");
include_once($config['homedir']."/include/functions_modules.php");
require_once($config['homedir']."/include/functions_tags.php");
if (is_metaconsole())
enterprise_include_once("meta/include/functions_ui_meta.php");
if (is_metaconsole()) enterprise_include_once("meta/include/functions_ui_meta.php");
$this->strictACL = (bool) db_get_value("strict_acl", "tusuario", "id_user", $config['id_user']);
$this->acltags = tags_get_user_module_and_tags($config['id_user'], $this->access);
}
public function setType($type) {
$this->type = $type;
}
public function setFilter($filter) {
// Filter the user groups
if (!empty($filter['groupID'])) {
$group_id = $filter['groupID'];
$this->userGroups = isset($this->userGroupsACL[$group_id])
? array($group_id => $this->userGroupsACL[$group_id])
: array();
}
else if (!empty($filter['searchGroup'])) {
$groups = db_get_all_rows_filter('tgrupo', array('nombre' => '%' . $filter['searchGroup'] . '%'));
// Save the groups which intersect
$userGroupsACL = $this->userGroupsACL;
$this->userGroups = array_reduce($groups, function ($userGroups, $group) use ($userGroupsACL) {
$group_id = $group['id_grupo'];
if (isset($userGroupsACL[$group_id])) {
$userGroups[$group_id] = $userGroupsACL[$group_id];
}
return $userGroups;
}, array());
}
else {
$this->userGroups = $this->userGroupsACL;
}
$this->filter = $filter;
}
public function isStrict () {
return $this->strictACL;
}
public function setStrict ($value) {
$this->strictACL = (bool) $value;
}
protected function getAgentStatusFilter ($status = -1) {
if ($status == -1)
$status = $this->filter['statusAgent'];
@ -323,7 +333,7 @@ class Tree {
case 'group':
// ACL Group
$user_groups_str = "-1";
$group_acl = "";
$group_filter = "";
if (!$this->strictACL) {
if (empty($this->userGroups)) {
return;
@ -338,7 +348,7 @@ class Tree {
// Asking for all groups.
else {
$user_groups_str = implode(",", array_keys($this->userGroups));
$group_acl = "AND ta.id_grupo IN ($user_groups_str)";
$group_filter = "AND ta.id_grupo IN ($user_groups_str)";
}
}
else {
@ -356,7 +366,7 @@ class Tree {
}
}
}
$group_acl = "AND ta.id_grupo IN ($user_groups_str)";
$group_filter = "AND ta.id_grupo IN ($user_groups_str)";
}
switch ($type) {
@ -390,7 +400,7 @@ class Tree {
$module_status_join
WHERE ta.disabled = 0
AND ta.id_grupo = $item_for_count
$group_acl
$group_filter
$agent_search_filter
$agent_status_filter";
$sql = $this->getAgentCountersSql($agent_table);
@ -411,7 +421,7 @@ class Tree {
FROM tmetaconsole_agent ta
WHERE ta.disabled = 0
AND ta.id_grupo = $item_for_count
$group_acl
$group_filter
$agent_search_filter
$agent_status_filter";
$sql = $this->getAgentCountersSql($agent_table);
@ -439,7 +449,7 @@ class Tree {
$module_status_join
WHERE ta.disabled = 0
AND ta.id_grupo = $rootID
$group_acl
$group_filter
$agent_search_filter
$agent_status_filter
GROUP BY $group_by_fields
@ -456,7 +466,7 @@ class Tree {
FROM tmetaconsole_agent ta
WHERE ta.disabled = 0
AND ta.id_grupo = $rootID
$group_acl
$group_filter
$agent_search_filter
$agent_status_filter
ORDER BY $order_fields";
@ -498,7 +508,7 @@ class Tree {
ON ta.disabled = 0
AND tam.id_agente = ta.id_agente
AND ta.id_grupo = $rootID
$group_acl
$group_filter
$agent_search_filter
$agent_status_filter
WHERE tam.disabled = 0

View File

@ -18,6 +18,7 @@ global $config;
$pure = get_parameter('pure', 0);
$tab = get_parameter('tab', 'group');
$search_group = get_parameter('searchGroup', '');
$search_agent = get_parameter('searchAgent', '');
$status_agent = get_parameter('statusAgent', AGENT_STATUS_ALL);
$search_module = get_parameter('searchModule', '');
@ -135,13 +136,16 @@ $agent_status_arr[AGENT_STATUS_UNKNOWN] = __('Unknown');
$agent_status_arr[AGENT_STATUS_NOT_INIT] = __('Not init');
$row = array();
$row[] = __('Search group');
$row[] = html_print_input_text("search_group", $search_group, '', is_metaconsole() ? 70 : 40, 30, true);
$table->data[] = $row;
$row = array();
$row[] = __('Search agent');
$row[] = html_print_input_text("search_agent", $search_agent, '', is_metaconsole() ? 70 : 40, 30, true);
$row[] = __('Agent status');
$row[] = html_print_select($agent_status_arr, "status_agent", $status_agent, '', '', 0, true);
$row[] = __('Search agent');
if (is_metaconsole())
$row[] = html_print_input_text("search_agent", $search_agent, '', 70, 30, true);
else
$row[] = html_print_input_text("search_agent", $search_agent, '', 40, 30, true);
// Button
$row[] = html_print_submit_button(__('Filter'), "uptbutton", false, 'class="sub search"', true);
@ -160,10 +164,10 @@ if (!is_metaconsole()) {
$module_status_arr[AGENT_MODULE_STATUS_NOT_INIT] = __('Not init');
$row = array();
$row[] = __('Module status');
$row[] = html_print_select($module_status_arr, "status_module", $status_module, '', '', 0, true);
$row[] = __('Search module');
$row[] = html_print_input_text("search_module", $search_module, '', 40, 30, true);
$row[] = __('Module status');
$row[] = html_print_select($module_status_arr, "status_module", $status_module, '', '', 0, true);
$table->data[] = $row;
}
@ -240,8 +244,9 @@ enterprise_hook('close_meta_frame');
var parameters = {};
parameters['page'] = "include/ajax/tree.ajax";
parameters['getChildren'] = 1;
parameters['filter'] = {};
parameters['type'] = "<?php echo $tab; ?>";
parameters['filter'] = {};
parameters['filter']['searchGroup'] = $("input#text-search_group").val();
parameters['filter']['searchAgent'] = $("input#text-search_agent").val();
parameters['filter']['statusAgent'] = $("select#status_agent").val();
parameters['filter']['searchModule'] = $("input#text-search_module").val();