From: Andrew Dolgov Date: Wed, 17 Apr 2013 17:19:00 +0000 (+0400) Subject: initial X-Git-Tag: 1.7.9~25^2~156 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=e441b5837b84f8313e506a3d1b087f269f4a9fb3;p=tt-rss.git initial --- diff --git a/classes/db.php b/classes/db.php index c9d9ad5e..86d2ab89 100644 --- a/classes/db.php +++ b/classes/db.php @@ -5,22 +5,37 @@ class Db implements IDb { private $link; private function __construct() { - switch (DB_TYPE) { - case "mysql": - if (function_exists("mysqli_connect")) { - $this->adapter = new Db_Mysqli(); - } else { - $this->adapter = new Db_Mysql(); + + $er = error_reporting(E_ALL); + + if (class_exists("PDO")) { + $this->adapter = new Db_PDO(); + } else { + switch (DB_TYPE) { + case "mysql": + if (function_exists("mysqli_connect")) { + $this->adapter = new Db_Mysqli(); + } else { + $this->adapter = new Db_Mysql(); + } + break; + case "pgsql": + $this->adapter = new Db_Pgsql(); + break; + default: + die("Unknown DB_TYPE: " . DB_TYPE); } - break; - case "pgsql": - $this->adapter = new Db_Pgsql(); - break; - default: - die("Unknown DB_TYPE: " . DB_TYPE); } + if (!$this->adapter) die("Error initializing database adapter for " . DB_TYPE); + $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : false); + + if (!$this->link) { + die("Error connecting through adapter: " . $this->adapter->last_error()); + } + + error_reporting($er); } private function __clone() { diff --git a/classes/db/pdo.php b/classes/db/pdo.php new file mode 100644 index 00000000..aaac892c --- /dev/null +++ b/classes/db/pdo.php @@ -0,0 +1,87 @@ +pdo = new PDO($connstr, $user, $pass); + } catch (PDOException $e) { + die($e->getMessage()); + } + + return $this->pdo; + } + + function escape_string($s, $strip_tags = true) { + if ($strip_tags) $s = strip_tags($s); + + $qs = $this->pdo->quote($s); + + return mb_substr($qs, 1, mb_strlen($qs)-2); + } + + function query($query, $die_on_error = true) { + try { + return $this->pdo->query($query); + } catch (PDOException $e) { + user_error($e->getMessage(), $die_on_error ? E_USER_ERROR : E_USER_WARNING); + } + } + + function fetch_assoc($result) { + try { + if ($result) { + return $result->fetch(); + } else { + return null; + } + } catch (PDOException $e) { + user_error($e->getMessage(), E_USER_WARNING); + } + } + + function num_rows($result) { + try { + if ($result) { + return $result->rowCount(); + } else { + return false; + } + } catch (PDOException $e) { + user_error($e->getMessage(), E_USER_WARNING); + } + } + + function fetch_result($result, $row, $param) { + $line = $this->fetch_assoc($result); + + if ($line) + return $line[$param]; + else + return null; + + } + + function close() { + $this->pdo = null; + } + + function affected_rows($result) { + try { + if ($result) { + return $result->rowCount(); + } else { + return null; + } + } catch (PDOException $e) { + user_error($e->getMessage(), E_USER_WARNING); + } + } + + function last_error() { + return join(" ", $pdo->errorInfo()); + } +} +?> diff --git a/include/errorhandler.php b/include/errorhandler.php index 2c8d35f8..6b64d516 100644 --- a/include/errorhandler.php +++ b/include/errorhandler.php @@ -49,6 +49,6 @@ function ttrss_fatal_handler() { return false; } -register_shutdown_function('ttrss_fatal_handler'); -set_error_handler('ttrss_error_handler'); +//register_shutdown_function('ttrss_fatal_handler'); +//set_error_handler('ttrss_error_handler'); ?> diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php index c6f07503..33f90d4b 100644 --- a/plugins/auth_internal/init.php +++ b/plugins/auth_internal/init.php @@ -24,10 +24,12 @@ class Auth_Internal extends Plugin implements IAuthModule { if (get_schema_version() > 96) { if (!defined('AUTH_DISABLE_OTP') || !AUTH_DISABLE_OTP) { + $result = db_query("SELECT otp_enabled,salt FROM ttrss_users WHERE login = '$login'"); if (db_num_rows($result) > 0) { + require_once "lib/otphp/vendor/base32.php"; require_once "lib/otphp/lib/otp.php"; require_once "lib/otphp/lib/totp.php";