Passed
Branch master (49f250)
by Brayan
01:58
created
Ocrend/Kernel/Helpers/Arrays.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -50,12 +50,12 @@  discard block
 block discarded – undo
50 50
     }
51 51
 
52 52
     # Recorrer el segundo arreglo
53
-    foreach($b as $llave => $contenido) {
53
+    foreach ($b as $llave => $contenido) {
54 54
       # Verificar que no hay desnivel
55
-      if(!is_array($a[$llave]) && !is_array($b[$llave])) {
55
+      if (!is_array($a[$llave]) && !is_array($b[$llave])) {
56 56
         $a[$llave] += $b[$llave];
57 57
       } else {
58
-        throw new \RuntimeException('Existe un problema para operar en la llave '.$llave.'.');
58
+        throw new \RuntimeException('Existe un problema para operar en la llave ' . $llave . '.');
59 59
         break;
60 60
       }
61 61
     }
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
     $position = array();
158 158
     $newRow = array();
159 159
     foreach ($toOrderArray as $key => $row) {
160
-      $position[$key]  = $row[$field];
160
+      $position[$key] = $row[$field];
161 161
       $newRow[$key] = $row;
162 162
     }
163 163
     $inverse ? arsort($position) : asort($position);
Please login to merge, or discard this patch.
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -94,12 +94,12 @@  discard block
 block discarded – undo
94 94
   }
95 95
 
96 96
   /**
97
-    * Evalúa si un arreglo es de tipo asociativo o no
98
-    *
99
-    * @param array $a: Arreglo a evaluar
100
-    *
101
-    * @return bool false si no lo es, true si lo es
102
-  */
97
+   * Evalúa si un arreglo es de tipo asociativo o no
98
+   *
99
+   * @param array $a: Arreglo a evaluar
100
+   *
101
+   * @return bool false si no lo es, true si lo es
102
+   */
103 103
   public static function is_assoc(array $a) : bool {
104 104
     if (sizeof($a) == 0) {
105 105
       return false;
@@ -109,36 +109,36 @@  discard block
 block discarded – undo
109 109
   }
110 110
 
111 111
   /**
112
-    * Evalúa si un arreglo es secuencial (de índices numéricos)
113
-    *
114
-    * @param array $a: Arreglo a evaluar
115
-    *
116
-    * @return bool false si no lo es, true si lo es
117
-  */
112
+   * Evalúa si un arreglo es secuencial (de índices numéricos)
113
+   *
114
+   * @param array $a: Arreglo a evaluar
115
+   *
116
+   * @return bool false si no lo es, true si lo es
117
+   */
118 118
   public static function is_numeric_array(array $a) : bool {
119 119
     return !self::is_assoc($a);
120 120
   }
121 121
 
122 122
   /**
123
-    * Obtiene de forma random un elemento de un arreglo
124
-    *
125
-    * @param array $a: Arreglo a evaluar
126
-    *
127
-    * @return mixed elemento random dentro del arreglo
128
-  */
123
+   * Obtiene de forma random un elemento de un arreglo
124
+   *
125
+   * @param array $a: Arreglo a evaluar
126
+   *
127
+   * @return mixed elemento random dentro del arreglo
128
+   */
129 129
   public static function array_random_element(array $a) {
130 130
     return $a[array_rand($a)];
131 131
   }
132 132
 
133 133
   /**
134
-    * Ordena una matriz de mayor a menor, o menor a mayor por el valor de un campo específico
135
-    *
136
-    * @param array $toOrderArray : Arreglo a evaluar
137
-    * @param string $field: Campo por el que se va a ordenar
138
-    * @param bool $inverse: Por defecto falso, cambia el orden
139
-    *
140
-    * @return mixed elemento random dentro del arreglo
141
-  */
134
+   * Ordena una matriz de mayor a menor, o menor a mayor por el valor de un campo específico
135
+   *
136
+   * @param array $toOrderArray : Arreglo a evaluar
137
+   * @param string $field: Campo por el que se va a ordenar
138
+   * @param bool $inverse: Por defecto falso, cambia el orden
139
+   *
140
+   * @return mixed elemento random dentro del arreglo
141
+   */
142 142
   public static function order_multi_dimensional(array $toOrderArray, string $field, bool $inverse = false) : array {
143 143
     $position = array();
144 144
     $newRow = array();
@@ -157,10 +157,10 @@  discard block
 block discarded – undo
157 157
   }
158 158
 
159 159
   /**
160
-    * Se obtiene de Twig_Extension y sirve para que cada función esté disponible como etiqueta en twig
161
-    *
162
-    * @return array con todas las funciones con sus respectivos nombres de acceso en plantillas twig
163
-  */
160
+   * Se obtiene de Twig_Extension y sirve para que cada función esté disponible como etiqueta en twig
161
+   *
162
+   * @return array con todas las funciones con sus respectivos nombres de acceso en plantillas twig
163
+   */
164 164
   public function getFunctions() : array {
165 165
     return array(
166 166
       new \Twig_Function('get_key_by_index', array($this, 'get_key_by_index')),
@@ -173,10 +173,10 @@  discard block
 block discarded – undo
173 173
   }
174 174
 
175 175
   /**
176
-    * Identificador único para la extensión de twig
177
-    *
178
-    * @return string con el nombre de la extensión
179
-  */
176
+   * Identificador único para la extensión de twig
177
+   *
178
+   * @return string con el nombre de la extensión
179
+   */
180 180
   public function getName() : string {
181 181
     return 'ocrend_framework_helper_arrays';
182 182
   }
Please login to merge, or discard this patch.
app/models/Users.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -50,7 +50,7 @@  discard block
 block discarded – undo
50 50
      * Hace un set() a la sesión login_user_recentAttempts con el valor actualizado.
51 51
      *
52 52
      * @return void
53
-    */
53
+     */
54 54
     private function updateSessionAttempts() {
55 55
         global $session;
56 56
 
@@ -270,11 +270,11 @@  discard block
 block discarded – undo
270 270
         throw new \RuntimeException('El usuario no está logeado.');
271 271
     }
272 272
 
273
-     /**
274
-     * Realiza la acción de login dentro del sistema
275
-     *
276
-     * @return array : Con información de éxito/falla al inicio de sesión.
277
-     */
273
+      /**
274
+       * Realiza la acción de login dentro del sistema
275
+       *
276
+       * @return array : Con información de éxito/falla al inicio de sesión.
277
+       */
278 278
     public function login() : array {
279 279
         try {
280 280
             global $http;
@@ -354,11 +354,11 @@  discard block
 block discarded – undo
354 354
     }
355 355
     
356 356
     /**
357
-      * Envía un correo electrónico al usuario que quiere recuperar la contraseña, con un token y una nueva contraseña.
358
-      * Si el usuario no visita el enlace, el sistema no cambiará la contraseña.
359
-      *
360
-      * @return array<string,integer|string>
361
-    */  
357
+     * Envía un correo electrónico al usuario que quiere recuperar la contraseña, con un token y una nueva contraseña.
358
+     * Si el usuario no visita el enlace, el sistema no cambiará la contraseña.
359
+     *
360
+     * @return array<string,integer|string>
361
+     */  
362 362
     public function lostpass() : array {
363 363
         try {
364 364
             global $http, $config;
@@ -395,7 +395,7 @@  discard block
 block discarded – undo
395 395
 
396 396
             # Enviar el correo electrónico
397 397
             $dest = array();
398
-			$dest[$email] = $user_data[0]['name'];
398
+      $dest[$email] = $user_data[0]['name'];
399 399
             $email_send = Helper\Emails::send($dest,array(
400 400
                 # Título del mensaje
401 401
                 '{{title}}' => 'Recuperar contraseña de ' . $config['build']['name'],
@@ -483,6 +483,6 @@  discard block
 block discarded – undo
483 483
      */
484 484
     public function __construct(IRouter $router = null) {
485 485
         parent::__construct($router);
486
-		$this->startDBConexion();
486
+    $this->startDBConexion();
487 487
     }
488 488
 }
489 489
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -123,10 +123,10 @@  discard block
 block discarded – undo
123 123
         $cookie->set('session_hash', md5(time()), $config['sessions']['user_cookie']['lifetime']);
124 124
         
125 125
         # Generar la sesión del usuario
126
-        $session->set($cookie->get('session_hash') . '__user_id',(int) $user_data['id_user']);
126
+        $session->set($cookie->get('session_hash') . '__user_id', (int) $user_data['id_user']);
127 127
 
128 128
         # Generar data encriptada para prolongar la sesión
129
-        if($config['sessions']['user_cookie']['enable']) {
129
+        if ($config['sessions']['user_cookie']['enable']) {
130 130
             # Generar id encriptado
131 131
             $encrypt = Helper\Strings::ocrend_encode($user_data['id_user'], $config['sessions']['user_cookie']['key_encrypt']);
132 132
 
@@ -145,12 +145,12 @@  discard block
 block discarded – undo
145 145
      * @return bool true: Cuando el inicio de sesión es correcto 
146 146
      *              false: Cuando el inicio de sesión no es correcto
147 147
      */
148
-    private function authentication(string $email,string $pass) : bool {
148
+    private function authentication(string $email, string $pass) : bool {
149 149
         $email = $this->db->scape($email);
150
-        $query = $this->db->select('id_user,pass','users',null, "email='$email'",1);
150
+        $query = $this->db->select('id_user,pass', 'users', null, "email='$email'", 1);
151 151
         
152 152
         # Incio de sesión con éxito
153
-        if(false !== $query && Helper\Strings::chash($query[0]['pass'],$pass)) {
153
+        if (false !== $query && Helper\Strings::chash($query[0]['pass'], $pass)) {
154 154
 
155 155
             # Restaurar intentos
156 156
             $this->restoreAttempts($email);
@@ -232,7 +232,7 @@  discard block
 block discarded – undo
232 232
      * @return false|array con información del usuario
233 233
      */   
234 234
     public function getUserById(int $id, string $select = '*') {
235
-        return $this->db->select($select,'users',null,"id_user='$id'",1);
235
+        return $this->db->select($select, 'users', null, "id_user='$id'", 1);
236 236
     }
237 237
     
238 238
     /**
@@ -243,7 +243,7 @@  discard block
 block discarded – undo
243 243
      * @return false|array con información de los usuarios
244 244
      */  
245 245
     public function getUsers(string $select = '*') {
246
-        return $this->db->select($select,'users');
246
+        return $this->db->select($select, 'users');
247 247
     }
248 248
 
249 249
     /**
@@ -255,12 +255,12 @@  discard block
 block discarded – undo
255 255
      * @return array con datos del usuario conectado
256 256
      */
257 257
     public function getOwnerUser(string $select = '*') : array {
258
-        if(null !== $this->id_user) {    
258
+        if (null !== $this->id_user) {    
259 259
                
260
-            $user = $this->db->select($select,'users',null, "id_user='$this->id_user'",1);
260
+            $user = $this->db->select($select, 'users', null, "id_user='$this->id_user'", 1);
261 261
 
262 262
             # Si se borra al usuario desde la base de datos y sigue con la sesión activa
263
-            if(false === $user) {
263
+            if (false === $user) {
264 264
                 $this->logout();
265 265
             }
266 266
 
@@ -385,18 +385,18 @@  discard block
 block discarded – undo
385 385
             # Generar token y contraseña 
386 386
             $token = md5(time());
387 387
             $pass = uniqid();
388
-            $link = $config['build']['url'] . 'lostpass?token='.$token.'&user='.$user_data[0]['id_user'];
388
+            $link = $config['build']['url'] . 'lostpass?token=' . $token . '&user=' . $user_data[0]['id_user'];
389 389
 
390 390
             # Construir mensaje y enviar mensaje
391
-            $HTML = 'Hola <b>'. $user_data[0]['name'] .'</b>, ha solicitado recuperar su contraseña perdida, si no ha realizado esta acción no necesita hacer nada.
391
+            $HTML = 'Hola <b>' . $user_data[0]['name'] . '</b>, ha solicitado recuperar su contraseña perdida, si no ha realizado esta acción no necesita hacer nada.
392 392
 					<br />
393 393
 					<br />
394
-					Para cambiar su contraseña por <b>'. $pass .'</b> haga <a href="'. $link .'" target="_blank">clic aquí</a> o en el botón de recuperar.';
394
+					Para cambiar su contraseña por <b>'. $pass . '</b> haga <a href="' . $link . '" target="_blank">clic aquí</a> o en el botón de recuperar.';
395 395
 
396 396
             # Enviar el correo electrónico
397 397
             $dest = array();
398 398
 			$dest[$email] = $user_data[0]['name'];
399
-            $email_send = Helper\Emails::send($dest,array(
399
+            $email_send = Helper\Emails::send($dest, array(
400 400
                 # Título del mensaje
401 401
                 '{{title}}' => 'Recuperar contraseña de ' . $config['build']['name'],
402 402
                 # Url de logo
@@ -410,23 +410,23 @@  discard block
 block discarded – undo
410 410
                 # Texto del boton
411 411
                 '{{btn-name}}' => 'Recuperar Contraseña',
412 412
                 # Copyright
413
-                '{{copyright}}' => '&copy; '.date('Y') .' <a href="'.$config['build']['url'].'">'.$config['build']['name'].'</a> - Todos los derechos reservados.'
414
-              ),0);
413
+                '{{copyright}}' => '&copy; ' . date('Y') . ' <a href="' . $config['build']['url'] . '">' . $config['build']['name'] . '</a> - Todos los derechos reservados.'
414
+              ), 0);
415 415
 
416 416
             # Verificar si hubo algún problema con el envío del correo
417
-            if(false === $email_send) {
417
+            if (false === $email_send) {
418 418
                 throw new ModelsException('No se ha podido enviar el correo electrónico.');
419 419
             }
420 420
 
421 421
             # Actualizar datos 
422 422
             $id_user = $user_data[0]['id_user'];
423
-            $this->db->update('users',array(
423
+            $this->db->update('users', array(
424 424
                 'tmp_pass' => Helper\Strings::hash($pass),
425 425
                 'token' => $token
426
-            ),"id_user='$id_user'",1);
426
+            ), "id_user='$id_user'", 1);
427 427
 
428 428
             return array('success' => 1, 'message' => 'Se ha enviado un enlace a su correo electrónico.');
429
-        } catch(ModelsException $e) {
429
+        } catch (ModelsException $e) {
430 430
             return array('success' => 0, 'message' => $e->getMessage());
431 431
         }
432 432
     }
@@ -440,7 +440,7 @@  discard block
 block discarded – undo
440 440
         global $session, $cookie;
441 441
 	    
442 442
         $session->remove($cookie->get('session_hash') . '__user_id');
443
-        foreach($cookie->all() as $name => $value) {
443
+        foreach ($cookie->all() as $name => $value) {
444 444
             $cookie->remove($name);
445 445
         }
446 446
 
Please login to merge, or discard this patch.
Ocrend/Kernel/Database/Database.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@
 block discarded – undo
31 31
     public static function resolveDriver(string $motor) : Driver {
32 32
         global $config;
33 33
 
34
-        if($motor == 'mysql') {
34
+        if ($motor == 'mysql') {
35 35
             return new Mysql;
36 36
         } 
37 37
 
Please login to merge, or discard this patch.
Ocrend/Kernel/Database/Drivers/Sqlite/Sqlite.php 2 patches
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -93,7 +93,7 @@
 block discarded – undo
93 93
      *
94 94
      * @throws \RuntimeException si el arreglo está vacío
95 95
      * @return int con la cantidad de tablas afectadas
96
-    */
96
+     */
97 97
     public function update(string $table, array $e, $where = null, $limit = null) : int {
98 98
         if (sizeof($e) == 0) {
99 99
             throw new \RuntimeException('El arreglo pasado por $this->db->update(\'' . $table . '\'...) está vacío.');
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
         $sqlite3 = $config['database']['drivers']['sqlite3'];
31 31
 
32 32
         # Establecer conexión, si la base de datos no existe, es creada
33
-        parent::__construct('sqlite:' . str_replace('___ROOT___',___ROOT___,$sqlite3['file']));
33
+        parent::__construct('sqlite:' . str_replace('___ROOT___', ___ROOT___, $sqlite3['file']));
34 34
     }
35 35
 
36 36
     /**
@@ -72,7 +72,7 @@  discard block
 block discarded – undo
72 72
         . (null !== $limit ? "LIMIT $limit" : '')
73 73
         );
74 74
 
75
-        if(false != $result && sizeof($result)) {
75
+        if (false != $result && sizeof($result)) {
76 76
             $matriz = (array) $result->fetchAll(PDO::FETCH_ASSOC);
77 77
             $result->closeCursor();
78 78
 
Please login to merge, or discard this patch.
Ocrend/Kernel/Database/Drivers/Mysql/Mysql.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
         );
45 45
 
46 46
         # Verificar conexión
47
-        if($this->connect_errno) {
47
+        if ($this->connect_errno) {
48 48
             throw new \RuntimeException('ERROR :' . $this->connect_errno . ' conectando con la base de datos' . $this->connect_error);
49 49
         }
50 50
 
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
         . (null !== $limit ? "LIMIT $limit" : '')
83 83
         );
84 84
 
85
-        if(false != $result && $result->num_rows) {
85
+        if (false != $result && $result->num_rows) {
86 86
             $matriz = (array) $result->fetch_all(MYSQLI_ASSOC);
87 87
             $result->free();
88 88
 
Please login to merge, or discard this patch.
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -93,7 +93,7 @@
 block discarded – undo
93 93
      *
94 94
      * @throws \RuntimeException si el arreglo está vacío
95 95
      * @return int con la cantidad de tablas afectadas
96
-    */
96
+     */
97 97
     public function update(string $table, array $e, $where = null, $limit = null) : int {
98 98
         if (sizeof($e) == 0) {
99 99
             throw new \RuntimeException('El arreglo pasado por $this->db->update(\'' . $table . '\'...) está vacío.');
Please login to merge, or discard this patch.
Ocrend/Kernel/Cookies/Cookies.php 1 patch
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -80,22 +80,22 @@
 block discarded – undo
80 80
         global $session, $config;
81 81
 
82 82
         # Verificar si está habilitada la opción de sesión de usuario con cookie
83
-        if($config['sessions']['user_cookie']['enable']) {
83
+        if ($config['sessions']['user_cookie']['enable']) {
84 84
             # Obtener
85 85
             $user_session = $session->get($this->get('session_hash') . '__user_id');
86 86
             $salt = $this->get('appsalt');
87 87
             $encrypt = $this->get('appencrypt');
88 88
 
89 89
             # Verificar que no estén vacías y coincidan
90
-            if(null == $user_session && null != $salt && null != $encrypt && Helper\Strings::chash($salt ?? '_', $encrypt ?? '/$')) {
90
+            if (null == $user_session && null != $salt && null != $encrypt && Helper\Strings::chash($salt ?? '_', $encrypt ?? '/$')) {
91 91
                 # Generar un nuevo session hash
92
-                $this->set('session_hash', md5(time()) , $config['sessions']['user_cookie']['lifetime']);
92
+                $this->set('session_hash', md5(time()), $config['sessions']['user_cookie']['lifetime']);
93 93
 
94 94
                 # Desencriptar el id del usuario
95 95
                 $id_user = Helper\Strings::ocrend_decode($encrypt, $config['sessions']['user_cookie']['key_encrypt']);
96 96
 
97 97
                 # Reestablecer la sesión
98
-                $session->set($this->get('session_hash') . '__user_id',(int) $id_user);
98
+                $session->set($this->get('session_hash') . '__user_id', (int) $id_user);
99 99
             }
100 100
         }       
101 101
     }
Please login to merge, or discard this patch.
Ocrend/Kernel/Config/Config.php 1 patch
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -38,15 +38,15 @@
 block discarded – undo
38 38
 if ($__TWIG_READABLE_AND_WRITABLE) {
39 39
 
40 40
     # Intentar solucionarlo
41
-    if(!is_dir($__TWIG_CACHE_PATH)) {
41
+    if (!is_dir($__TWIG_CACHE_PATH)) {
42 42
         mkdir($__TWIG_CACHE_PATH, 0644, true);
43 43
     } else {
44 44
         chmod($__TWIG_CACHE_PATH, 0644);
45 45
     }
46 46
 
47 47
     # Revisar la lecutra para twig
48
-    if($__TWIG_READABLE_AND_WRITABLE) {
49
-        throw new \RuntimeException('Debe conceder permisos de escritura y lectura a la ruta '. $__TWIG_CACHE_PATH .' ó crearla si no existe.');
48
+    if ($__TWIG_READABLE_AND_WRITABLE) {
49
+        throw new \RuntimeException('Debe conceder permisos de escritura y lectura a la ruta ' . $__TWIG_CACHE_PATH . ' ó crearla si no existe.');
50 50
     }
51 51
 }
52 52
 
Please login to merge, or discard this patch.
Ocrend/Kernel/Models/Models.php 2 patches
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -22,25 +22,25 @@  discard block
 block discarded – undo
22 22
 abstract class Models {
23 23
 
24 24
     /**
25
-      * Tiene siempre el id pasado por la ruta, en caso de no haber ninguno, será cero.
26
-      *
27
-      * @var int 
28
-    */
25
+     * Tiene siempre el id pasado por la ruta, en caso de no haber ninguno, será cero.
26
+     *
27
+     * @var int 
28
+     */
29 29
     protected $id = 0;
30 30
 
31 31
     /**
32
-      * Contiene el id del usuario que tiene su sesión iniciada.
33
-      *
34
-      * @var int|null con id del usuario
35
-    */
32
+     * Contiene el id del usuario que tiene su sesión iniciada.
33
+     *
34
+     * @var int|null con id del usuario
35
+     */
36 36
     protected $id_user = null;
37 37
 
38 38
     /**
39
-      * Inicia la configuración inicial de cualquier modelo
40
-      *
41
-      * @param IRouter $router: Instancia de un Router 
42
-      *                                    
43
-    */
39
+     * Inicia la configuración inicial de cualquier modelo
40
+     *
41
+     * @param IRouter $router: Instancia de un Router 
42
+     *                                    
43
+     */
44 44
     protected function __construct(IRouter $router = null) {
45 45
         global $session, $cookie;
46 46
         
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
         # Verificar sesión del usuario
54 54
         $session_name = $cookie->get('session_hash') . '__user_id';
55 55
         if(null !== $session->get($session_name)) {
56
-           $this->id_user = $session->get($session_name);
56
+            $this->id_user = $session->get($session_name);
57 57
         }
58 58
     }
59 59
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@
 block discarded – undo
52 52
         
53 53
         # Verificar sesión del usuario
54 54
         $session_name = $cookie->get('session_hash') . '__user_id';
55
-        if(null !== $session->get($session_name)) {
55
+        if (null !== $session->get($session_name)) {
56 56
            $this->id_user = $session->get($session_name);
57 57
         }
58 58
     }
Please login to merge, or discard this patch.
Ocrend/Kernel/Models/Traits/DBModel.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
      * 
37 37
      * @return void
38 38
      */
39
-    protected function startDBConexion($driver = null)  {
39
+    protected function startDBConexion($driver = null) {
40 40
         global $config;
41 41
         $this->db = Database::resolveDriver($driver ?? $config['database']['default_driver']);
42 42
     }
Please login to merge, or discard this patch.