pluginhost: do not connect via legacy DB api until requested
log all initiated legacy database connections
This commit is contained in:
parent
62c37cd697
commit
df5d2a0665
5 changed files with 42 additions and 24 deletions
|
@ -1,10 +1,8 @@
|
|||
<?php
|
||||
class Auth_Base {
|
||||
private $dbh;
|
||||
private $pdo;
|
||||
|
||||
function __construct() {
|
||||
$this->dbh = Db::get();
|
||||
$this->pdo = Db::pdo();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,29 @@
|
|||
<?php
|
||||
class Db implements IDb {
|
||||
|
||||
/* @var Db $instance */
|
||||
private static $instance;
|
||||
|
||||
/* @var IDb $adapter */
|
||||
private $adapter;
|
||||
|
||||
private $link;
|
||||
|
||||
/* @var PDO $pdo */
|
||||
private $pdo;
|
||||
|
||||
private function __construct() {
|
||||
|
||||
}
|
||||
|
||||
private function __clone() {
|
||||
//
|
||||
}
|
||||
|
||||
private function legacy_connect() {
|
||||
|
||||
user_error("Legacy connect requested to " . DB_TYPE, E_USER_NOTICE);
|
||||
|
||||
$er = error_reporting(E_ALL);
|
||||
|
||||
switch (DB_TYPE) {
|
||||
|
@ -25,19 +42,31 @@ class Db implements IDb {
|
|||
exit(100);
|
||||
}
|
||||
|
||||
$this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : "");
|
||||
|
||||
if (!$this->link) {
|
||||
print("Error connecting through adapter: " . $this->adapter->last_error());
|
||||
exit(101);
|
||||
}
|
||||
|
||||
error_reporting($er);
|
||||
}
|
||||
|
||||
private function pdo_connect() {
|
||||
|
||||
$db_port = defined('DB_PORT') && DB_PORT ? ';port='.DB_PORT : '';
|
||||
|
||||
$this->pdo = new PDO(DB_TYPE . ':dbname='.DB_NAME.';host='.DB_HOST.$db_port,
|
||||
DB_USER,
|
||||
DB_PASS);
|
||||
|
||||
$this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
|
||||
|
||||
if (!$this->pdo) {
|
||||
print("Error connecting via PDO.");
|
||||
exit(101);
|
||||
}
|
||||
|
||||
$this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
|
||||
|
||||
if (DB_TYPE == "pgsql") {
|
||||
|
||||
$this->pdo->query("set client_encoding = 'UTF-8'");
|
||||
|
@ -52,25 +81,16 @@ class Db implements IDb {
|
|||
$this->pdo->query("SET NAMES " . MYSQL_CHARSET);
|
||||
}
|
||||
}
|
||||
|
||||
$this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : "");
|
||||
|
||||
if (!$this->link) {
|
||||
print("Error connecting through adapter: " . $this->adapter->last_error());
|
||||
exit(101);
|
||||
}
|
||||
|
||||
error_reporting($er);
|
||||
}
|
||||
|
||||
private function __clone() {
|
||||
//
|
||||
}
|
||||
|
||||
public static function get() {
|
||||
if (self::$instance == null)
|
||||
self::$instance = new self();
|
||||
|
||||
if (!self::$instance->link) {
|
||||
self::$instance->legacy_connect();
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
|
@ -78,6 +98,10 @@ class Db implements IDb {
|
|||
if (self::$instance == null)
|
||||
self::$instance = new self();
|
||||
|
||||
if (!self::$instance->pdo) {
|
||||
self::$instance->pdo_connect();
|
||||
}
|
||||
|
||||
return self::$instance->pdo;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
<?php
|
||||
class Handler implements IHandler {
|
||||
protected $dbh;
|
||||
protected $pdo;
|
||||
protected $args;
|
||||
|
||||
function __construct($args) {
|
||||
$this->dbh = Db::get();
|
||||
$this->pdo = Db::pdo();
|
||||
$this->args = $args;
|
||||
}
|
||||
|
|
|
@ -338,7 +338,7 @@ class Handler_Public extends Handler {
|
|||
}
|
||||
|
||||
function globalUpdateFeeds() {
|
||||
RPC::updaterandomfeed_real($this->dbh);
|
||||
RPC::updaterandomfeed_real();
|
||||
|
||||
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", false);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
class PluginHost {
|
||||
private $dbh;
|
||||
private $pdo;
|
||||
private $hooks = array();
|
||||
private $plugins = array();
|
||||
|
@ -63,7 +62,6 @@ class PluginHost {
|
|||
const KIND_USER = 3;
|
||||
|
||||
function __construct() {
|
||||
$this->dbh = Db::get();
|
||||
$this->pdo = Db::pdo();
|
||||
|
||||
$this->storage = array();
|
||||
|
@ -91,7 +89,7 @@ class PluginHost {
|
|||
}
|
||||
|
||||
function get_dbh() {
|
||||
return $this->dbh;
|
||||
return Db::get();
|
||||
}
|
||||
|
||||
function get_pdo() {
|
||||
|
|
Loading…
Reference in a new issue