. */ defined('NABU') || exit(); // Realiza la conexión con la base de datos. class dbconnection { protected $pdo; public function __construct() { if (!file_exists(NABU_DIRECTORY['db'])) messages::errors('No podemos encontrar el archivo de configuración de la base de datos ' . NABU_DIRECTORY['db'], 500); // Lee el archivo de configuración de la base de datos. $config = file_get_contents(NABU_DIRECTORY['db']); $config = json_decode($config, true); $params = array('dbms', 'host', 'database', 'user', 'password', 'charset'); foreach ($params as $param) if (empty($config[$param])) messages::errors('Define el parámetro "' . $param . '" en el archivo de configuración de la base de datos', 500); // Parámetros de configuración para la conexión de la base de datos. $options = array( // Mantiene el nombre de las columnas como en la base de datos. PDO::ATTR_CASE => PDO::CASE_NATURAL, // Define los errores de "PDO" por excepciones, utiliza el objeto "PDOException". PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Desactiva las consultas preparadas por PDO y utiliza el sistema nativo del SGBD. PDO::ATTR_EMULATE_PREPARES => false, // Por defecto, retorna los resultados de las consultas como arrays asociativos. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ); // Origen de la base de datos. $dsn = $config['dbms'] . ':host=' . $config['host'] . ';dbname=' . $config['database']; try { // Realiza la conexión con la base de datos. $this -> pdo = new PDO($dsn, $config['user'], $config['password'], $options); // Establece la codificación de caracteres para el cliente del SGBD y los resultados de las consultas. $this -> pdo -> exec('SET CHARSET ' . $config['charset']); } catch (PDOException $e) { messages::errors($e -> getMessage(), 500); } } protected function errors(string $exception, string $error) { error_log($exception); messages::errors('¡Lo sentimos mucho! 😞, ' . $error . ', por favor inténtelo más tarde', 500); } // @return el alias de un id de role. protected function role(int $id) { $role = 'user'; if ($id == 1) $role = 'admin'; elseif ($id == 2) $role = 'moderator'; return $role; } // Finaliza la conexión con la base de datos. public function __destruct() { $this -> pdo = null; } }