From 23641e45bbfad477824fd772162bb71e1fbf43ab Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Fri, 10 Jul 2020 13:38:42 +0200 Subject: [PATCH] Entity with enterprise capabilites --- pandora_console/include/constants.php | 3 ++ pandora_console/include/lib/Agent.php | 9 ++++-- pandora_console/include/lib/Entity.php | 39 +++++++++++++++++++++++--- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index 0104a1fd5a..d32dacb1fe 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -372,6 +372,9 @@ define('MODULE_PREDICTION_CLUSTER_AP', 7); // Forced agent OS ID for cluster agents. define('CLUSTER_OS_ID', 100); +// Forced agent OS ID for satellite agents. +define('SATELLITE_OS_ID', 19); + // Type of Webserver Modules. define('MODULE_WEBSERVER_CHECK_LATENCY', 30); define('MODULE_WEBSERVER_CHECK_SERVER_RESPONSE', 31); diff --git a/pandora_console/include/lib/Agent.php b/pandora_console/include/lib/Agent.php index 8758e16095..5ff80609f9 100644 --- a/pandora_console/include/lib/Agent.php +++ b/pandora_console/include/lib/Agent.php @@ -63,11 +63,16 @@ class Agent extends Entity ) { $table = 'tagente'; $filter = ['id_agente' => $id_agent]; + $enterprise_class = '\PandoraFMS\Enterprise\Agent'; if (is_numeric($id_agent) === true && $id_agent > 0 ) { - parent::__construct($table, $filter); + parent::__construct( + $table, + $filter, + $enterprise_class + ); if ($load_modules === true) { $rows = \db_get_all_rows_filter( 'tagente_modulo', @@ -84,7 +89,7 @@ class Agent extends Entity } } else { // Create empty skel. - parent::__construct($table); + parent::__construct($table, null, $enterprise_class); // New agent has no modules. $this->modulesLoaded = true; diff --git a/pandora_console/include/lib/Entity.php b/pandora_console/include/lib/Entity.php index 3031a1336f..221752ea99 100644 --- a/pandora_console/include/lib/Entity.php +++ b/pandora_console/include/lib/Entity.php @@ -50,17 +50,28 @@ abstract class Entity */ protected $table = ''; + /** + * Enterprise capabilities object. + * + * @var object + */ + private $enterprise; + /** * Defines a generic constructor to extract information of the object. * - * @param string $table Table. - * @param array $filters Filters, for instance ['id' => $id]. + * @param string $table Table. + * @param array|null $filters Filters, for instance ['id' => $id]. + * @param string|null $enterprise Enterprise class name. * * @throws \Exception On error. */ - public function __construct(string $table, ?array $filters=null) - { + public function __construct( + string $table, + ?array $filters=null, + ?string $enterprise_class=null + ) { if (empty($table) === true) { throw new \Exception( get_class($this).' error, table name is not defined' @@ -96,6 +107,12 @@ abstract class Entity $this->fields[$row['Field']] = null; } } + + if (\enterprise_installed() === true + && $enterprise_class !== null + ) { + $this->enterprise = new $enterprise_class($this); + } } @@ -115,6 +132,20 @@ abstract class Entity return $this->{$methodName}($params); } + // Enterprise capabilities. + if (\enterprise_installed() === true + && $this->enterprise !== null + && method_exists($this->enterprise, $methodName) === true + ) { + return call_user_func_array( + [ + $this->enterprise, + $methodName, + ], + $params + ); + } + if (array_key_exists($methodName, $this->fields) === true) { if (empty($params) === true) { return $this->fields[$methodName];