JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
metaform: merge ckeditor settings from cms
[wfpl.git] / db.php
diff --git a/db.php b/db.php
index 1bf78fd..c137d03 100644 (file)
--- a/db.php
+++ b/db.php
@@ -16,8 +16,8 @@
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-require_once('code/wfpl/encode.php');
-require_once('code/wfpl/format.php');
+require_once(__DIR__.'/'.'encode.php');
+require_once(__DIR__.'/'.'format.php');
 
 # db_connect() -- connect to a mysql database
 #
@@ -38,7 +38,11 @@ require_once('code/wfpl/format.php');
 #   the database connection handle. You'll only need this if you want to have
 #   multiple databases open at once.
 
-function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = 'localhost') {
+function db_enc_sql($str) {
+       return mysqli_real_escape_string(isset($GLOBALS['wfpl_db_handle']) ? $GLOBALS['wfpl_db_handle'] : null, $str);
+}
+
+function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = 'localhost', $encoding = 'utf8') {
        if($database == 'auto') {
                if(isset($GLOBALS['db_name'])) {
                        $database = $GLOBALS['db_name'];
@@ -67,13 +71,15 @@ function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host =
                }
        }
 
-       $GLOBALS['wfpl_db_handle'] = mysql_connect($host, $user, $pass);
+       $GLOBALS['wfpl_db_handle'] = mysqli_connect($host, $user, $pass);
        if(!$GLOBALS['wfpl_db_handle']) {
-               die('Could not connect to the database: ' . mysql_error());
+               die('Could not connect to the database: ' . mysqli_error());
        }
 
-       if(!mysql_select_db($database, $GLOBALS['wfpl_db_handle'])) {
-               die("Couldn not access database \"$database\": " . mysql_error($GLOBALS['wfpl_db_handle']));
+       mysqli_set_charset($GLOBALS['wfpl_db_handle'], $encoding);
+
+       if(!mysqli_select_db($GLOBALS['wfpl_db_handle'], $database)) {
+               die("Couldn not access database \"$database\": " . mysqli_error($GLOBALS['wfpl_db_handle']));
        }
 
        return $GLOBALS['wfpl_db_handle'];
@@ -82,9 +88,9 @@ function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host =
 # Unless you're doing something unusual like an ALTER TABLE don't call this directly
 function db_send_query($sql) {
        #echo("Sending query: " . enc_html($sql) . "<br>\n");
-       $result = mysql_query($sql, $GLOBALS['wfpl_db_handle']);
+       $result = mysqli_query($GLOBALS['wfpl_db_handle'], $sql);
        if(!$result) {
-               die(enc_html('DATABASE ERROR: ' . mysql_error($GLOBALS['wfpl_db_handle']) . ' in the following query: ' . $sql));
+               die(enc_html('DATABASE ERROR: ' . mysqli_error($GLOBALS['wfpl_db_handle']) . ' in the following query: ' . $sql));
        }
 
        return $result;
@@ -127,9 +133,9 @@ function _db_printf($str, $args) {
                $str = substr($str, $pos + 2);
 
                if($chr == '"') {
-                       $out .= '"' . enc_sql(array_shift($args)) . '"';
+                       $out .= '"' . db_enc_sql(array_shift($args)) . '"';
                } elseif($chr == 's') {
-                       $out .= enc_sql(array_shift($args));
+                       $out .= db_enc_sql(array_shift($args));
                } elseif($chr == 'i') {
                        $int = format_int(array_shift($args));
                        if($int == '') $int = '0';
@@ -155,6 +161,7 @@ function _db_printf($str, $args) {
 }
 
 
+# helper function
 function db_send_get($table, $columns, $where, $args) {
        $sql = "SELECT $columns FROM $table";
        if($where) {
@@ -165,96 +172,104 @@ function db_send_get($table, $columns, $where, $args) {
 }
 
 
+# if no results: returs []
 function db_get_rows($table, $columns, $where = '') {
        $args = func_get_args();
        $args = array_slice($args, 3);
        $result = db_send_get($table, $columns, $where, $args);
 
        $rows = array();
-       while($row = mysql_fetch_row($result)) {
+       while($row = mysqli_fetch_row($result)) {
                $rows[] = $row;
        }
 
-       mysql_free_result($result);
+       mysqli_free_result($result);
 
        return $rows;
 }
 
 # like db_get_rows, but return array of hashes.
+# if no results: returs []
 function db_get_assocs($table, $columns, $where = '') {
        $args = func_get_args();
        $args = array_slice($args, 3);
        $result = db_send_get($table, $columns, $where, $args);
 
        $rows = array();
-       while($row = mysql_fetch_assoc($result)) {
+       while($row = mysqli_fetch_assoc($result)) {
                $rows[] = $row;
        }
 
-       mysql_free_result($result);
+       mysqli_free_result($result);
 
        return $rows;
 }
 
+# if no results: returs []
 function db_get_column($table, $columns, $where = '') {
        $args = func_get_args();
        $args = array_slice($args, 3);
        $result = db_send_get($table, $columns, $where, $args);
 
        $column = array();
-       while($row = mysql_fetch_row($result)) {
+       while($row = mysqli_fetch_row($result)) {
                $column[] = $row[0];
        }
 
-       mysql_free_result($result);
+       mysqli_free_result($result);
 
        return $column;
 }
 
+# returns first matching row
+# if no results: returns false
 function db_get_row($table, $columns, $where = '') {
        $args = func_get_args();
        $args = array_slice($args, 3);
        $result = db_send_get($table, $columns, $where, $args);
 
-       $row = mysql_fetch_row($result);
+       $row = mysqli_fetch_row($result);
 
-       mysql_free_result($result);
+       mysqli_free_result($result);
 
        return $row;
 }
 
 # like db_get_row, but return a hash.
+# if no results: returns false
 function db_get_assoc($table, $columns, $where = '') {
        $args = func_get_args();
        $args = array_slice($args, 3);
        $result = db_send_get($table, $columns, $where, $args);
 
-       $row = mysql_fetch_assoc($result);
+       $row = mysqli_fetch_assoc($result);
 
-       mysql_free_result($result);
+       mysqli_free_result($result);
 
        return $row;
 }
 
-function db_get_value($table, $columns, $where = '') {
+# if no results: returns false
+function db_get_value($table, $column, $where = '') {
        $args = func_get_args();
        $args = array_slice($args, 3);
-       $result = db_send_get($table, $columns, $where, $args);
+       $result = db_send_get($table, $column, $where, $args);
 
-       $value = mysql_fetch_row($result);
+       $value = mysqli_fetch_row($result);
        if($value !== false) {
                $value = $value[0];
        }
 
-       mysql_free_result($result);
+       mysqli_free_result($result);
 
        return $value;
 }
 
+# returns an integer
 function db_count($table, $where = '') {
        $args = func_get_args();
        array_splice($args, 1, 0, array('count(*)'));
-       return call_user_func_array('db_get_value', $args);
+       return (int) call_user_func_array('db_get_value', $args);
 }
 
 # call either of these ways:
@@ -298,7 +313,7 @@ function db_replace($table, $columns, $values) {
        
 # return the value mysql made up for the auto_increment field (for the last insert)
 function db_auto_id() {
-       return mysql_insert_id($GLOBALS['wfpl_db_handle']);
+       return mysqli_insert_id($GLOBALS['wfpl_db_handle']);
 }
 
 
@@ -308,7 +323,7 @@ function db_insert_ish($command, $table, $columns, $values) {
        $sql = '';
        foreach($values as $value) {
                if($sql) $sql .= ',';
-               $sql .= '"' . enc_sql($value) . '"';
+               $sql .= '"' . db_enc_sql($value) . '"';
        }
 
        $sql = "$command INTO $table ($columns) values($sql)";
@@ -358,7 +373,7 @@ function db_update($table, $columns, $values) {
                if($sql != '') {
                        $sql .= ', ';
                }
-               $sql .= $columns[$i] . ' = "' . enc_sql($values[$i]) . '"';
+               $sql .= $columns[$i] . ' = "' . db_enc_sql($values[$i]) . '"';
        }