fix remove acl widget agent/module
This commit is contained in:
parent
7f8324266d
commit
1ad1671612
|
@ -27,6 +27,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace PandoraFMS\Dashboard;
|
namespace PandoraFMS\Dashboard;
|
||||||
|
use PandoraFMS\Agent;
|
||||||
|
use PandoraFMS\Module;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Agent module Widgets.
|
* Agent module Widgets.
|
||||||
|
@ -324,7 +326,7 @@ class AgentModuleWidget extends Widget
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($agents as $agent) {
|
foreach ($agents as $agent) {
|
||||||
if (!users_access_to_agent($agent['id_agente'])) {
|
if (users_access_to_agent($agent['id_agente']) === false) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,8 +345,10 @@ class AgentModuleWidget extends Widget
|
||||||
foreach ($modules_by_name as $module) {
|
foreach ($modules_by_name as $module) {
|
||||||
$row['modules'][$module['name']] = null;
|
$row['modules'][$module['name']] = null;
|
||||||
foreach ($module['id'] as $module_id) {
|
foreach ($module['id'] as $module_id) {
|
||||||
if (array_key_exists($module_id, $agent_modules)) {
|
if (array_key_exists($module_id, $agent_modules) === true) {
|
||||||
$row['modules'][$module['name']] = modules_get_agentmodule_status($module_id);
|
$row['modules'][$module['name']] = modules_get_agentmodule_status(
|
||||||
|
$module_id
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -361,12 +365,16 @@ class AgentModuleWidget extends Widget
|
||||||
* Draw table Agent/Module.
|
* Draw table Agent/Module.
|
||||||
*
|
*
|
||||||
* @param array $visualData Data for draw.
|
* @param array $visualData Data for draw.
|
||||||
|
* @param array $allModules Data for th draw.
|
||||||
*
|
*
|
||||||
* @return string Html output.
|
* @return string Html output.
|
||||||
*/
|
*/
|
||||||
private function generateViewAgentModule(array $visualData):string
|
private function generateViewAgentModule(
|
||||||
{
|
array $visualData,
|
||||||
$table_data = '<div style="display:flex; width:100%; height:100%; margin: 10px;">';
|
array $allModules
|
||||||
|
):string {
|
||||||
|
$style = 'display:flex; width:100%; height:100%; margin: 10px;';
|
||||||
|
$table_data = '<div style="'.$style.'">';
|
||||||
$table_data .= '<table class="widget_agent_module" cellpadding="1" cellspacing="0" border="0" style="background-color: transparent; margin: 0 auto;">';
|
$table_data .= '<table class="widget_agent_module" cellpadding="1" cellspacing="0" border="0" style="background-color: transparent; margin: 0 auto;">';
|
||||||
|
|
||||||
if (empty($visualData) === false) {
|
if (empty($visualData) === false) {
|
||||||
|
@ -374,20 +382,7 @@ class AgentModuleWidget extends Widget
|
||||||
|
|
||||||
$array_names = [];
|
$array_names = [];
|
||||||
|
|
||||||
foreach ($visualData as $data) {
|
foreach ($allModules as $module_name) {
|
||||||
foreach ($data['modules'] as $module_name => $module) {
|
|
||||||
if ($module === null
|
|
||||||
|| in_array($module_name, $array_names)
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
$array_names[] = $module_name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
natcasesort($array_names);
|
|
||||||
foreach ($array_names as $module_name) {
|
|
||||||
$file_name = ui_print_truncate_text(
|
$file_name = ui_print_truncate_text(
|
||||||
$module_name,
|
$module_name,
|
||||||
'module_small',
|
'module_small',
|
||||||
|
@ -444,14 +439,17 @@ class AgentModuleWidget extends Widget
|
||||||
|
|
||||||
foreach ($row['modules'] as $module_name => $module) {
|
foreach ($row['modules'] as $module_name => $module) {
|
||||||
if ($module === null) {
|
if ($module === null) {
|
||||||
if (in_array($module_name, $array_names)) {
|
if (in_array($module_name, $allModules) === true) {
|
||||||
$table_data .= "<td style='background-color: transparent;'>";
|
$style = 'background-color: transparent;';
|
||||||
|
$table_data .= "<td style='".$style."'>";
|
||||||
$table_data .= '</td>';
|
$table_data .= '</td>';
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$table_data .= "<td style='text-align: center; background-color: transparent;'>";
|
$style = 'text-align: center;';
|
||||||
|
$style .= ' background-color: transparent;';
|
||||||
|
$table_data .= "<td style='".$style."'>";
|
||||||
switch ($module) {
|
switch ($module) {
|
||||||
case AGENT_STATUS_NORMAL:
|
case AGENT_STATUS_NORMAL:
|
||||||
$table_data .= \ui_print_status_image(
|
$table_data .= \ui_print_status_image(
|
||||||
|
@ -592,70 +590,49 @@ class AgentModuleWidget extends Widget
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($this->values['mAgents']) === true
|
// Estract info all modules selected.
|
||||||
&& empty($this->values['mAgents']) === false
|
$target_modules = explode(',', $this->values['mModules']);
|
||||||
) {
|
$all_modules = Module::search(
|
||||||
$sql = sprintf(
|
['id_agente_modulo' => $target_modules]
|
||||||
'SELECT id_agente,nombre,alias
|
);
|
||||||
FROM tagente
|
$reduceAllModules = array_reduce(
|
||||||
WHERE id_agente IN (%s)
|
$all_modules,
|
||||||
ORDER BY id_agente',
|
function ($carry, $item) {
|
||||||
$this->values['mAgents']
|
$carry[$item->name()] = null;
|
||||||
);
|
return $carry;
|
||||||
$agents = db_get_all_rows_sql($sql);
|
|
||||||
if ($agents === false) {
|
|
||||||
$agents = [];
|
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
$modules = false;
|
\ksort($reduceAllModules);
|
||||||
if (isset($this->values['mModules']) === true
|
|
||||||
&& empty($this->values['mModules']) === false
|
$visualData = [];
|
||||||
) {
|
// Estract info agents selected.
|
||||||
$sql = sprintf(
|
$target_agents = explode(',', $this->values['mAgents']);
|
||||||
'SELECT nombre
|
foreach ($target_agents as $agent_id) {
|
||||||
FROM tagente_modulo
|
try {
|
||||||
WHERE id_agente_modulo IN (%s)',
|
$agent = new Agent($agent_id);
|
||||||
$this->values['mModules']
|
$visualData[$agent_id]['agent_status'] = $agent->lastStatus();
|
||||||
|
$visualData[$agent_id]['agent_name'] = $agent->name();
|
||||||
|
$visualData[$agent_id]['agent_alias'] = $agent->alias();
|
||||||
|
|
||||||
|
$modules = $agent->searchModules(
|
||||||
|
['id_agente_modulo' => $target_modules]
|
||||||
);
|
);
|
||||||
|
|
||||||
$arrayNames = db_get_all_rows_sql($sql);
|
$visualData[$agent_id]['modules'] = $reduceAllModules;
|
||||||
$names = array_reduce(
|
foreach ($modules as $module) {
|
||||||
$arrayNames,
|
$visualData[$agent_id]['modules'][$module->name()] = $module->getStatus()->estado();
|
||||||
function ($carry, $item) {
|
}
|
||||||
$carry[] = $item['nombre'];
|
} catch (Exception $e) {
|
||||||
return $carry;
|
echo 'Error: '.$e->getMessage();
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$sql = sprintf(
|
|
||||||
'SELECT id_agente_modulo,nombre
|
|
||||||
FROM tagente_modulo
|
|
||||||
WHERE id_agente IN (%s)
|
|
||||||
AND nombre IN ("%s")
|
|
||||||
AND delete_pending = 0
|
|
||||||
ORDER BY nombre',
|
|
||||||
$this->values['mAgents'],
|
|
||||||
implode('","', $names)
|
|
||||||
);
|
|
||||||
|
|
||||||
$modules = index_array(
|
|
||||||
db_get_all_rows_sql($sql),
|
|
||||||
'id_agente_modulo',
|
|
||||||
'nombre'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($modules === false) {
|
|
||||||
$modules = [];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$agents = [];
|
|
||||||
$modules = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$visualData = $this->generateDataAgentModule($agents, $modules);
|
$allModules = array_keys($reduceAllModules);
|
||||||
|
$output = $this->generateViewAgentModule(
|
||||||
$output = $this->generateViewAgentModule($visualData);
|
$visualData,
|
||||||
|
$allModules
|
||||||
|
);
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
|
@ -407,6 +407,10 @@ table.group_modules_status_box tr td span a {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.widget_agent_module tbody tr td {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
.container-center .widget-histogram-chart .flot-text .flot-x-axis div {
|
.container-center .widget-histogram-chart .flot-text .flot-x-axis div {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue