1 && (++$i) > $limit) { break; } $modules[] = self::build($row); } return $modules; } else { return self::build($rs[0]); } } /** * Returns current object as array. * * @return array Of fields. */ public function toArray() { return $this->fields; } /** * Creates a module object from given data. Avoid query duplication. * * @param array $data Module information. * * @return PandoraFMS\Module Object. */ public static function build(array $data=[]) { $obj = new Module(); // Set values. foreach ($data as $k => $v) { $obj->{$k}($v); } if ($obj->nombre() === 'delete_pending') { return null; } // Customize certain fields. $obj->status = new ModuleStatus($obj->id_agente_modulo()); return $obj; } /** * Builds a PandoraFMS\Module object from given id. * * @param integer $id_agent_module Module id. */ public function __construct(?int $id_agent_module=null) { if (is_numeric($id_agent_module) === true && $id_agent_module > 0 ) { parent::__construct( 'tagente_modulo', ['id_agente_modulo' => $id_agent_module] ); } else { // Create empty skel. parent::__construct('tagente_modulo'); } if ($this->nombre() === 'delete_pending') { return null; } // Customize certain fields. $this->status = new ModuleStatus($this->fields['id_agente_modulo']); } /** * Returns current status. * * @return PandoraFMS\ModuleStatus Status of the module. */ public function getStatus() { return $this->status; } /** * Saves current definition to database. * * @return mixed Affected rows of false in case of error. * @throws \Exception On error. */ public function save() { if (empty($this->fields['nombre']) === true) { throw new \Exception( get_class($this).' error, "nombre" is not set' ); } if (empty($this->fields['id_agente']) === true) { throw new \Exception( get_class($this).' error, "id_agente" is not set' ); } if ($this->fields['id_agente_modulo'] > 0) { // Update. $updates = $this->fields; $rs = \db_process_sql_update( 'tagente_modulo', $updates, ['id_agente_modulo' => $this->fields['id_agente_modulo']] ); if ($rs === false) { global $config; throw new \Exception( __METHOD__.' error: '.$config['dbconnection']->error ); } } else { // Creation. $updates = $this->fields; // Clean null fields. foreach ($updates as $k => $v) { if ($v === null) { unset($updates[$k]); } } $rs = \modules_create_agent_module( $this->fields['id_agente'], $updates['nombre'], $updates ); if ($rs === false) { global $config; throw new \Exception( __METHOD__.' error: '.$config['dbconnection']->error ); } $this->fields['id_agente_modulo'] = $rs; } return true; } /** * Erases this module. * * @return void */ public function delete() { \modules_delete_agent_module( $this->id_agente_modulo() ); unset($this->fields); unset($this->status); } }