@@ -27,6 +27,8 @@ class updater
2727 private $ database_name ;
2828 private $ database_user ;
2929 private $ database_password ;
30+ private $ database_port ;
31+ private $ database_socket ;
3032 private $ table_prefix ;
3133
3234 public function __construct ()
@@ -43,6 +45,8 @@ public function __construct()
4345 $ this ->database_name = $ database_name ;
4446 $ this ->database_user = $ database_user ;
4547 $ 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 ;
4650 $ this ->table_prefix = isset ($ table_prefix ) ? $ table_prefix : 'phplist_ ' ;
4751 }
4852
@@ -320,8 +324,23 @@ function getConfigFilePath()
320324 */
321325 function getConnection ()
322326 {
327+ static $ pdo = null ;
328+
329+ if ($ pdo !== null ) {
330+ return $ pdo ;
331+ }
323332 $ 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+ }
325344 $ options = array (
326345 PDO ::ATTR_ERRMODE => PDO ::ERRMODE_EXCEPTION ,
327346 PDO ::ATTR_DEFAULT_FETCH_MODE => PDO ::FETCH_ASSOC ,
@@ -332,6 +351,7 @@ function getConnection()
332351 } catch (\PDOException $ e ) {
333352 throw new \PDOException ($ e ->getMessage (), (int )$ e ->getCode ());
334353 }
354+
335355 return $ pdo ;
336356 }
337357
0 commit comments