Update of /cvsroot/php-blog/serendipity
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16168
Modified Files:
NEWS serendipity_admin_entries.inc.php
serendipity_admin_installer.inc.php
serendipity_admin_upgrader.inc.php
serendipity_functions.inc.php serendipity_config_local.tpl
Added Files:
serendipity_db_mysqli.inc.php
Log Message:
Add support for MySQLi
Index: serendipity_admin_installer.inc.php
===================================================================
RCS file: /cvsroot/php-blog/serendipity/serendipity_admin_installer.inc.php,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -d -r1.66 -r1.67
--- serendipity_admin_installer.inc.php 13 Jun 2004 21:28:20 -0000 1.66
+++ serendipity_admin_installer.inc.php 16 Jun 2004 18:28:58 -0000 1.67
@@ -112,7 +112,13 @@
if (version_compare(PHP_VERSION, VERSION_REQUIRED) == -1) {
echo '<br /><font color="#FF0000">WARNING!<br />You are using PHP version '. PHP_VERSION .'! Serendipity requires version '. VERSION_REQUIRED .'</font>';
}
- $from = false;
+ $from = array();
+ if ( extension_loaded('mysqli') )
+ $from['dbType'] = 'mysqli';
+ if ( extension_loaded('postgres') )
+ $from['dbType'] = 'postgres';
+ if ( extension_loaded('mysql') )
+ $from['dbType'] = 'mysql';
}
$t = serendipity_parseTemplate(S9Y_CONFIG_TEMPLATE);
--- NEW FILE: serendipity_db_mysqli.inc.php ---
<?php # $Id: serendipity_db_mysqli.inc.php,v 1.1 2004/06/16 18:28:58 tadpole9 Exp $
/* Issues a query to the underlying database;
* returns:
* false if there was an error,
* true if the query succeeded but did not generate any rows
* array of field values if it returned a single row and $single is true
* array of array of field values if it returned row(s)
*/
function serendipity_db_query($sql, $single = false, $result_type = "both", $reportErr=false) {
global $serendipity;
$type_map = array('assoc' => MYSQLI_ASSOC, 'num' => MYSQLI_NUM, 'both' => MYSQLI_BOTH);
$c = mysqli_query($serendipity['dbConn'], $sql);
if ( mysqli_error($serendipity['dbConn']) != '' ) {
return mysqli_error($serendipity['dbConn']);
}
if (!$c) {
if (!$serendipity['production']) {
print mysqli_error($serendipity['dbConn']);
if (function_exists('debug_backtrace') && $reportErr == true) {
highlight_string(var_export(debug_backtrace(), 1));
}
}
return false;
}
if ($c === true) {
return true;
}
$result_type = $type_map[$result_type];
switch(mysqli_num_rows($c)) {
case 0:
if ($single) {
return false;
}
return true;
case 1:
if ($single) {
return mysqli_fetch_array($c, $result_type);
}
default:
if ($single) {
return mysqli_fetch_array($c, $result_type);
}
$rows = array();
while ( $row = mysqli_fetch_array($c, $result_type) ) {
$rows[] = $row;
}
return $rows;
}
}
function serendipity_db_insert_id() {
global $serendipity;
return mysqli_insert_id($serendipity['dbConn']);
}
function serendipity_db_affected_rows() {
global $serendipity;
return mysqli_affected_rows($serendipity['dbConn']);
}
function serendipity_db_escape_string($string) {
global $serendipity;
return mysqli_escape_string($serendipity['dbConn'], $string);
}
function serendipity_db_limit($start, $offset) {
return $start . ', ' . $offset;
}
function serendipity_db_limit_sql($limitstring) {
return ' LIMIT ' . $limitstring;
}
function serendipity_db_connect() {
global $serendipity;
if (isset($serendipity['dbConn'])) {
return $serendipity['dbConn'];
}
$serendipity['dbConn'] = mysqli_connect($serendipity['dbHost'], $serendipity['dbUser'], $serendipity['dbPass']);
mysqli_select_db($serendipity['dbConn'], $serendipity['dbName']);
return $serendipity['dbConn'];
}
function serendipity_db_schema_import($query) {
static $search = array('{AUTOINCREMENT}', '{PRIMARY}',
'{UNSIGNED}', '{FULLTEXT}', '{BOOLEAN}');
static $replace = array('int(11) not null auto_increment', 'primary key',
'unsigned' , 'FULLTEXT', 'enum (\'true\', \'false\') NOT NULL default \'true\'');
return serendipity_db_query(str_replace($search, $replace, $query));
}
/* probes the usability of the DB during installation */
function serendipity_db_probe($hash, &$errs) {
global $serendipity;
if (!($c = @mysqli_connect($hash['dbHost'], $hash['dbUser'], $hash['dbPass']))) {
$errs[] = 'Could not connect to database; check your settings.';
$errs[] = 'The mySQL error was: ' . mysqli_connect_error();
return false;
}
$serendipity['dbConn'] = $c;
if ( !@mysqli_select_db($c, $hash['dbName']) ) {
$errs[] = 'The database you specified does not exist.';
$errs[] = 'The mySQL error was: ' . mysqli_error($c);
return false;
}
return true;
}
function serendipity_db_concat($string) {
return 'concat(' . $string . ')';
}
/* vim: set sts=4 ts=4 expandtab : */
?>
Index: serendipity_admin_entries.inc.php
===================================================================
RCS file: /cvsroot/php-blog/serendipity/serendipity_admin_entries.inc.php,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- serendipity_admin_entries.inc.php 14 Jun 2004 11:41:39 -0000 1.26
+++ serendipity_admin_entries.inc.php 16 Jun 2004 18:28:58 -0000 1.27
@@ -65,7 +65,7 @@
}
$sort .= '</select> '
- . ($serendipity['dbType'] == 'mysql' ? CONTENT . ': <input size="10" type="text" name="serendipity[filter_body]" value="' . (isset($serendipity['GET']['filter_body']) ? htmlspecialchars($serendipity['GET']['filter_body']) : '') . '" />' : '')
+ . (preg_match('/^mysqli?/', $serendipity['dbType']) ? CONTENT . ': <input size="10" type="text" name="serendipity[filter_body]" value="' . (isset($serendipity['GET']['filter_body']) ? htmlspecialchars($serendipity['GET']['filter_body']) : '') . '" />' : '')
. ' <input type="submit" name="go" value="' . GO . ' " />';
return $sort;
}
Index: serendipity_functions.inc.php
===================================================================
RCS file: /cvsroot/php-blog/serendipity/serendipity_functions.inc.php,v
retrieving revision 1.292
retrieving revision 1.293
diff -u -d -r1.292 -r1.293
--- serendipity_functions.inc.php 16 Jun 2004 16:41:49 -0000 1.292
+++ serendipity_functions.inc.php 16 Jun 2004 18:28:58 -0000 1.293
@@ -2748,7 +2748,7 @@
if (rand(0, 100) < 1) {
serendipity_track_referrer_gc();
}
- if($serendipity['dbType'] == "mysql")
+ if(preg_match('/^mysqli?/', $serendipity['dbType']))
$interval = 900;
else
$interval = "interval '900'";
@@ -2791,7 +2791,7 @@
function serendipity_track_referrer_gc() {
global $serendipity;
- if ($serendipity['dbType'] == "mysql") {
+ if (preg_match('/^mysqli?/', $serendipity['dbType'])) {
$interval = 900;
} else {
$interval = "interval '900'";
@@ -2861,7 +2861,7 @@
global $serendipity;
/* HACK */
- if ($serendipity['dbType'] == 'mysql') {
+ if (preg_match('/^mysqli?/', $serendipity['dbType'])) {
/* Nonportable SQL due to MySQL date functions,
* but produces rolling 7 day totals, which is more
* interesting
Index: NEWS
===================================================================
RCS file: /cvsroot/php-blog/serendipity/NEWS,v
retrieving revision 1.150
retrieving revision 1.151
diff -u -d -r1.150 -r1.151
--- NEWS 14 Jun 2004 11:45:33 -0000 1.150
+++ NEWS 16 Jun 2004 18:28:58 -0000 1.151
@@ -3,6 +3,8 @@
Version 0.7 ()
------------------------------------------------------------------------
+ * Add support for MySQLi (tadpole9)
+
* Alphabetically sort list of plugins (tadpole9)
* Tweaks to plugin configuration design (tomsommer)
Index: serendipity_config_local.tpl
===================================================================
RCS file: /cvsroot/php-blog/serendipity/serendipity_config_local.tpl,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- serendipity_config_local.tpl 13 Jun 2004 12:50:18 -0000 1.38
+++ serendipity_config_local.tpl 16 Jun 2004 18:28:58 -0000 1.39
@@ -2,12 +2,12 @@
// INSTALL_CAT_DB
# INSTALL_CAT_DB_DESC
-$serendipity['dbType'] = '{INSTALL_DBTYPE|dbType|string|mysql|255}'; // INSTALL_DBTYPE_DESC
-$serendipity['dbHost'] = '{INSTALL_DBHOST|dbHost|string|localhost|255}'; // INSTALL_DBHOST_DESC
-$serendipity['dbUser'] = '{INSTALL_DBUSER|dbUser|string|serendipity|255}'; // INSTALL_DBUSER_DESC
-$serendipity['dbPass'] = '{INSTALL_DBPASS|dbPass|protected||255}'; // INSTALL_DBPASS_DESC
-$serendipity['dbName'] = '{INSTALL_DBNAME|dbName|string|serendipity|255}'; // INSTALL_DBNAME_DESC
-$serendipity['dbPrefix'] = '{INSTALL_DBPREFIX|dbPrefix|string|serendipity_|255}'; // INSTALL_DBPREFIX_DESC
+$serendipity['dbType'] = '{INSTALL_DBTYPE|dbType|list|mysql=>MySQL,postgres=>PostgreSQL,mysqli=>MySQLi|255}'; // INSTALL_DBTYPE_DESC
+$serendipity['dbHost'] = '{INSTALL_DBHOST|dbHost|string|localhost|255}'; // INSTALL_DBHOST_DESC
+$serendipity['dbUser'] = '{INSTALL_DBUSER|dbUser|string|serendipity|255}'; // INSTALL_DBUSER_DESC
+$serendipity['dbPass'] = '{INSTALL_DBPASS|dbPass|protected||255}'; // INSTALL_DBPASS_DESC
+$serendipity['dbName'] = '{INSTALL_DBNAME|dbName|string|serendipity|255}'; // INSTALL_DBNAME_DESC
+$serendipity['dbPrefix'] = '{INSTALL_DBPREFIX|dbPrefix|string|serendipity_|255}'; // INSTALL_DBPREFIX_DESC
// INSTALL_CAT_PATHS
# INSTALL_CAT_PATHS_DESC
Index: serendipity_admin_upgrader.inc.php
===================================================================
RCS file: /cvsroot/php-blog/serendipity/serendipity_admin_upgrader.inc.php,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- serendipity_admin_upgrader.inc.php 7 Jun 2004 14:22:47 -0000 1.11
+++ serendipity_admin_upgrader.inc.php 16 Jun 2004 18:28:58 -0000 1.12
@@ -11,8 +11,9 @@
/* Fetch SQL files which needs to be run */
$dir = opendir(S9Y_INCLUDE_PATH . 'sql/');
+$dbType = $serendipity['dbType'] == 'mysqli' ? 'mysql' : $serendipity['dbType'];
while (($file = readdir($dir)) !== false ) {
- if (preg_match('@db_update_(.*)_(.*)_'. $serendipity['dbType'] .'.sql@', $file, $res)) {
+ if (preg_match('@db_update_(.*)_(.*)_'. $dbType .'.sql@', $file, $res)) {
if (version_compare($res[1], serendipity_version($serendipity['versionInstalled'])) >= 0) {
// Create a usable float as key index for our array to make it sortable
$numbers = explode('.', $res[1]);
|