summaryrefslogtreecommitdiff
path: root/inc/database.php
diff options
context:
space:
mode:
authorczaks <marcin@6irc.net>2013-08-05 06:03:40 -0400
committerczaks <marcin@6irc.net>2013-08-05 06:03:40 -0400
commita84c4510fccfdc0cfb6f187633daea10dc70f326 (patch)
tree6077f5211196ae40cac0184bb7cc67b81d320b0b /inc/database.php
parent33c7abf11f3a9b5c0964a2d7a25533c2849dbc78 (diff)
parenta8327c3a37fd22d2aa5d63061c9d3eaa30ae425a (diff)
Merge branch 'master' of github.com:vichan-devel/Tinyboard
Conflicts: js/post-hider.js
Diffstat (limited to 'inc/database.php')
-rw-r--r--inc/database.php37
1 files changed, 28 insertions, 9 deletions
diff --git a/inc/database.php b/inc/database.php
index a0edd1fb..24959d0c 100644
--- a/inc/database.php
+++ b/inc/database.php
@@ -51,12 +51,16 @@ function sql_open() {
try {
$options = array(
PDO::ATTR_TIMEOUT => $config['db']['timeout'],
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
);
if ($config['db']['persistent'])
$options[PDO::ATTR_PERSISTENT] = true;
- return $pdo = new PDO($dsn, $config['db']['user'], $config['db']['password'], $options);
+ $pdo = new PDO($dsn, $config['db']['user'], $config['db']['password'], $options);
+ if (mysql_version() >= 50503)
+ query('SET NAMES utf8mb4') or error(db_error());
+ else
+ query('SET NAMES utf8') or error(db_error());
+ return $pdo;
} catch(PDOException $e) {
$message = $e->getMessage();
@@ -65,13 +69,26 @@ function sql_open() {
$message = str_replace($config['db']['password'], '<em>hidden</em>', $message);
// Print error
- error('Database error: ' . $message);
+ error(_('Database error: ') . $message);
}
}
+// 5.6.10 becomes 50610
+function mysql_version() {
+ global $pdo;
+
+ $version = $pdo->getAttribute(PDO::ATTR_SERVER_VERSION);
+ $v = explode('.', $version);
+ if (count($v) != 3)
+ return false;
+ return (int) sprintf("%02d%02d%02d", $v[0], $v[1], $v[2]);
+}
+
function prepare($query) {
global $pdo, $debug, $config;
+ $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query);
+
sql_open();
if ($config['debug'])
@@ -83,6 +100,8 @@ function prepare($query) {
function query($query) {
global $pdo, $debug, $config;
+ $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query);
+
sql_open();
if ($config['debug']) {
@@ -102,14 +121,14 @@ function query($query) {
return $pdo->query($query);
}
-function db_error($PDOStatement=null) {
- global $pdo;
+function db_error($PDOStatement = null) {
+ global $pdo, $db_error;
if (isset($PDOStatement)) {
- $err = $PDOStatement->errorInfo();
- return $err[2];
+ $db_error = $PDOStatement->errorInfo();
+ return $db_error[2];
}
- $err = $pdo->errorInfo();
- return $err[2];
+ $db_error = $pdo->errorInfo();
+ return $db_error[2];
}