@@ -27,6 +27,8 @@ class updater
27
27
private $ database_name ;
28
28
private $ database_user ;
29
29
private $ database_password ;
30
+ private $ database_port ;
31
+ private $ database_socket ;
30
32
private $ table_prefix ;
31
33
32
34
public function __construct ()
@@ -43,6 +45,8 @@ public function __construct()
43
45
$ this ->database_name = $ database_name ;
44
46
$ this ->database_user = $ database_user ;
45
47
$ this ->database_password = $ database_password ;
48
+ $ this ->database_port = isset ($ database_port ) ? $ database_port : null ;
49
+ $ this ->database_socket = isset ($ database_socket ) ? $ database_socket : null ;
46
50
$ this ->table_prefix = isset ($ table_prefix ) ? $ table_prefix : 'phplist_ ' ;
47
51
}
48
52
@@ -320,8 +324,23 @@ function getConfigFilePath()
320
324
*/
321
325
function getConnection ()
322
326
{
327
+ static $ pdo = null ;
328
+
329
+ if ($ pdo !== null ) {
330
+ return $ pdo ;
331
+ }
323
332
$ charset = 'utf8mb4 ' ;
324
- $ dsn = "mysql:host= $ this ->database_host ;dbname= $ this ->database_name ;charset= $ charset " ;
333
+ $ dsn = "mysql:dbname= $ this ->database_name ;charset= $ charset; " ;
334
+
335
+ if ($ this ->database_socket !== null ) {
336
+ $ dsn .= "socket= $ this ->database_socket " ;
337
+ } else {
338
+ $ dsn .= "host= $ this ->database_host " ;
339
+
340
+ if ($ this ->database_port !== null ) {
341
+ $ dsn .=";port= $ this ->database_port " ;
342
+ }
343
+ }
325
344
$ options = array (
326
345
PDO ::ATTR_ERRMODE => PDO ::ERRMODE_EXCEPTION ,
327
346
PDO ::ATTR_DEFAULT_FETCH_MODE => PDO ::FETCH_ASSOC ,
@@ -332,6 +351,7 @@ function getConnection()
332
351
} catch (\PDOException $ e ) {
333
352
throw new \PDOException ($ e ->getMessage (), (int )$ e ->getCode ());
334
353
}
354
+
335
355
return $ pdo ;
336
356
}
337
357
0 commit comments