New mysql/mysqli driver implemented. Uses mysqli driver from php version 5.5.
authorJoe <unknown>
Wed, 7 May 2014 21:34:25 +0000 (23:34 +0200)
committerJoe <unknown>
Wed, 7 May 2014 21:34:25 +0000 (23:34 +0200)
includes/db/connect_db.inc
includes/db/connect_db_mysql.inc [new file with mode: 0644]
includes/db/connect_db_mysqli.inc [new file with mode: 0644]
includes/db_pager.inc
includes/system_tests.inc
reporting/rep107.php
sql/en_US-demo.sql
sql/en_US-new.sql

index ec9e3816fa9d05323df237ad206efb2f9e65a81b..e899eac786553a8d1abcb7036c3809d246111855 100644 (file)
@@ -9,6 +9,20 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
+//$path_to_root="..";
+
+
+if (strncmp(phpversion(), "5.4", 3) >= 0) // mysql_... functions deprecated from php 5.5
+       include_once("connect_db_mysqli.inc");
+else   
+       include_once("connect_db_mysql.inc");
+
+function db_get_version()
+{
+       $result = db_query("SELECT VERSION()");
+       $row = db_fetch($result);
+       return $row[0];
+}
 
 /*
        Converts encoding name to mysql standard.
@@ -78,6 +92,7 @@ function get_mysql_collation($lang=null)
 
        return 'utf8_'.(isset($db_collation[$lang]) ? $db_collation[$lang] : 'general').'_ci';
 }
+
 /*
        Later we assume that database with version less than 2.4 is old database, 
        which is subject to invalid encodings on text columns,
@@ -90,6 +105,7 @@ function db_fixed()
        return !db_num_rows($result) // new database is fixed by default 
                || ($data[0] > "2.3rc");
 }
+
 /*
        Check database default charset.
 */
@@ -100,239 +116,5 @@ function db_get_charset()
        return $var[0];
 }
 
-/*
-       Set mysql client encoding.
-       Default is is encoding used by default language.
-*/
-function db_set_encoding($ui_encoding=null)
-{
-       global $dflt_lang, $installed_languages;
-
-       if (!isset($ui_encoding))
-       {
-               $lang = array_search_value($dflt_lang, $installed_languages, 'code');
-               $ui_encoding = strtoupper($lang['encoding']);
-       }
-
-       if ($mysql_enc = get_mysql_encoding_name($ui_encoding))
-               mysql_set_charset($mysql_enc);
-}
-
-/*
-       Connects application to company database.
-*/
-function set_global_connection($company=-1)
-{
-       global $db, $transaction_level, $path_to_root;
-       global  $db_connections;
-
-       include ($path_to_root . "/config_db.php");
-       if ($company == -1) 
-               $company = $_SESSION["wa_current_user"]->company ? $_SESSION["wa_current_user"]->company : 0;
-
-       cancel_transaction(); // cancel all aborted transactions if any
-       $transaction_level = 0;
-
-       $_SESSION["wa_current_user"]->cur_con = $company;
-
-       $connection = $db_connections[$company];
-
-       $db = mysql_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
-               mysql_select_db($connection["dbname"], $db);
-
-       return $db;
-}
-
-$db_duplicate_error_code = 1062;
-
-function db_query($sql, $err_msg=null)
-{
-       global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
-               $db_connections, $db_last_inserted_id;
        
-       // set current db prefix
-       $comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
-       $cur_prefix = $db_connections[$comp]['tbpref'];
-       $sql = str_replace(TB_PREF, $cur_prefix, $sql);
-
-       if ($show_sql)
-       {
-               $Ajax->activate('footer_debug');
-               $sql_queries .= "<pre>$sql</pre>\n<hr>";
-       }
-
-       // mysql profiling
-       global $profile_sql;
-       if (@$profile_sql) get_usec();
-               $result = mysql_query($sql, $db);
-       if (@$profile_sql)
-       {
-               $profile_sql= false;
-               _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
-       }
-
-       if($sql_trail) {
-               $db_last_inserted_id = mysql_insert_id($db);    // preserve in case trail insert is done
-               if ($select_trail || (strstr($sql, 'SELECT') === false)) {
-                       mysql_query(
-                       "INSERT INTO ".$cur_prefix."sql_trail
-                               (`sql`, `result`, `msg`)
-                               VALUES(".db_escape($sql).",".($result ? 1 : 0).",
-                               ".db_escape($err_msg).")", $db);
-               }
-       }
-
-       if ($err_msg != null || $go_debug) {
-               $exit = $err_msg != null;
-               if (function_exists('xdebug_call_file'))
-                       check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
-               else
-                       check_db_error($err_msg, $sql, $exit);
-       }
-       return $result;
-}
-
-function db_fetch_row ($result)
-{
-
-       return mysql_fetch_row($result);
-}
-
-function db_fetch_assoc ($result)
-{
-
-       return mysql_fetch_assoc($result);
-}
-
-function db_fetch ($result)
-{
-
-       return mysql_fetch_array($result);
-}
-
-function db_seek (&$result,$record)
-{
-       return mysql_data_seek($result, $record);
-}
-
-function db_free_result ($result)
-{
-       if ($result)
-               mysql_free_result($result);
-}
-
-function db_num_rows ($result)
-{
-       return mysql_num_rows($result);
-}
-
-function db_num_fields ($result)
-{
-       return mysql_num_fields($result);
-}
-
-function db_escape($value = "", $nullify = false)
-{
-       $value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
-       $value = @htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding);
-
-       //reset default if second parameter is skipped
-       $nullify = ($nullify === null) ? (false) : ($nullify);
-
-       //check for null/unset/empty strings
-       if ((!isset($value)) || (is_null($value)) || ($value === "")) {
-               $value = ($nullify) ? ("NULL") : ("''");
-       } else {
-               if (is_string($value)) {
-               //value is a string and should be quoted; determine best method based on available extensions
-                       if (function_exists('mysql_real_escape_string')) {
-                               $value = "'" . mysql_real_escape_string($value) . "'";
-                       } else {
-                         $value = "'" . mysql_escape_string($value) . "'";
-                       }
-               } else if (!is_numeric($value)) {
-                       //value is not a string nor numeric
-                       display_error("ERROR: incorrect data type send to sql query");
-                       echo '<br><br>';
-                       exit();
-               }
-       }
-       return $value;
-}
-
-function db_error_no ()
-{
-       global $db;
-       return mysql_errno($db);
-}
-
-function db_error_msg($conn)
-{
-       return mysql_error($conn);
-}
-
-function db_insert_id()
-{
-       global $db_last_inserted_id, $sql_trail, $db;
-
-       return $sql_trail ? $db_last_inserted_id : mysql_insert_id($db);
-}
-
-function db_num_affected_rows()
-{
-       global $db;
-       return mysql_affected_rows($db);
-}
-
-function db_field_name($result, $n)
-{
-       return mysql_field_name($result, $n);
-}
-
-function db_create_db($connection)
-{
-       $db = mysql_connect($connection["host"] ,
-               $connection["dbuser"], $connection["dbpassword"]);
-       if (!mysql_select_db($connection["dbname"], $db))
-       {
-               $sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . " COLLATE ".get_mysql_collation();
-
-               if (!mysql_query($sql) || !mysql_select_db($connection["dbname"], $db))
-                       return 0;
-       }
-       return $db;
-}
-
-function db_drop_db($connection)
-{
-
-       if ($connection["tbpref"] == "")
-       {
-               $sql = "DROP DATABASE IF EXISTS " . $connection["dbname"] . "";
-               return mysql_query($sql);
-       }
-       else
-       {
-       $res = db_query("show table status");
-       $all_tables = array();
-       while($row = db_fetch($res))
-               $all_tables[] = $row;
-        // get table structures
-               foreach ($all_tables as $table)
-               {
-                       if (strpos($table['Name'], $connection["tbpref"]) === 0)
-                               db_query("DROP TABLE `".$table['Name'] . "`");
-               }
-               //deleting the tables, how??
-               return true;
-       }
-}
-
-function db_close($dbase = null)
-{
-       global $db;
-       
-       if (!$dbase)
-               $dbase = $db;
-       return mysql_close($dbase);
-}
+?>
\ No newline at end of file
diff --git a/includes/db/connect_db_mysql.inc b/includes/db/connect_db_mysql.inc
new file mode 100644 (file)
index 0000000..4c22579
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+
+function set_global_connection($company=-1)
+{
+       global $db, $transaction_level, $path_to_root, $db_connections;
+
+       include ($path_to_root . "/config_db.php");
+       if ($company == -1) 
+               $company = $_SESSION["wa_current_user"]->company;
+
+       cancel_transaction(); // cancel all aborted transactions if any
+       $transaction_level = 0;
+
+       $_SESSION["wa_current_user"]->cur_con = $company;
+
+       $connection = $db_connections[$company];
+
+       $db = mysql_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
+               mysql_select_db($connection["dbname"], $db);
+       ///// From MySql release 5.6.6 the sql_mode is no longer empty as it was prior to
+       ///// this release. Just for safety we make it empty for all 5.6 release and higher.
+       ///// This non empty sql_mode values can interphere with FA, so all is set empty during
+       ///// our sessions.
+       ///// We are, however, investigating the existing code to be compatible in the future.
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       /////
+       return $db;
+}
+
+$db_duplicate_error_code = 1062;
+
+//DB wrapper functions to change only once for whole application
+
+function db_query($sql, $err_msg=null)
+{
+       global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
+               $db_connections, $db_last_inserted_id;
+       
+       // set current db prefix
+       $comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
+       $cur_prefix = $db_connections[$comp]['tbpref'];
+       $sql = str_replace(TB_PREF, $cur_prefix, $sql);
+
+       if ($show_sql)
+       {
+               $Ajax->activate('footer_debug');
+               $sql_queries .= "<pre>$sql</pre>\n<hr>";
+       }
+
+       // mysql profiling
+       global $profile_sql;
+       if (@$profile_sql) 
+               get_usec();
+       $result = mysql_query($sql, $db);
+       if (@$profile_sql)
+       {
+               $profile_sql= false;
+               _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
+       }
+       
+       if($sql_trail) {
+               $db_last_inserted_id = mysql_insert_id($db);    // preserve in case trail insert is done
+               if ($select_trail || (strstr($sql, 'SELECT') === false)) {
+                       mysql_query(
+                       "INSERT INTO ".$cur_prefix."sql_trail
+                               (`sql`, `result`, `msg`)
+                               VALUES(".db_escape($sql).",".($result ? 1 : 0).",
+                               ".db_escape($err_msg).")", $db);
+               }
+       }
+
+       if ($err_msg != null || $go_debug) {
+               $exit = $err_msg != null;
+               if (function_exists('xdebug_call_file'))
+                       check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
+               else
+                       check_db_error($err_msg, $sql, $exit);
+       }
+       return $result;
+}
+
+function db_fetch_row ($result)
+{
+
+       return mysql_fetch_row($result);
+}
+
+function db_fetch_assoc ($result)
+{
+
+       return mysql_fetch_assoc($result);
+}
+
+function db_fetch ($result)
+{
+
+       return mysql_fetch_array($result);
+}
+
+function db_seek (&$result,$record)
+{
+       return mysql_data_seek($result, $record);
+}
+
+function db_free_result ($result)
+{
+       if ($result)
+               mysql_free_result($result);
+}
+
+function db_num_rows ($result)
+{
+       return mysql_num_rows($result);
+}
+
+function db_num_fields ($result)
+{
+       return mysql_num_fields($result);
+}
+
+function db_escape($value = "", $nullify = false)
+{
+       $value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
+       $value = @htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding);
+
+       //reset default if second parameter is skipped
+       $nullify = ($nullify === null) ? (false) : ($nullify);
+
+       //check for null/unset/empty strings
+       if ((!isset($value)) || (is_null($value)) || ($value === "")) {
+               $value = ($nullify) ? ("NULL") : ("''");
+       } else {
+               if (is_string($value)) {
+               //value is a string and should be quoted; determine best method based on available extensions
+                       if (function_exists('mysql_real_escape_string')) {
+                               $value = "'" . mysql_real_escape_string($value) . "'";
+                       } else {
+                         $value = "'" . mysql_escape_string($value) . "'";
+                       }
+               } else if (!is_numeric($value)) {
+                       //value is not a string nor numeric
+                       display_error("ERROR: incorrect data type send to sql query");
+                       echo '<br><br>';
+                       exit();
+               }
+       }
+       return $value;
+}
+
+function db_error_no ()
+{
+       global $db;
+       return mysql_errno($db);
+}
+
+function db_error_msg($conn)
+{
+       return mysql_error($conn);
+}
+
+function db_insert_id()
+{
+       global $db_last_inserted_id, $sql_trail, $db;
+
+       return $sql_trail ? $db_last_inserted_id : mysql_insert_id($db);
+}
+
+function db_num_affected_rows()
+{
+       global $db;
+       return mysql_affected_rows($db);
+}
+
+function db_field_name($result, $n)
+{
+       return mysql_field_name($result, $n);
+}
+
+function db_create_db($connection)
+{
+       $db = mysql_connect($connection["host"] ,
+               $connection["dbuser"], $connection["dbpassword"]);
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       if (!mysql_select_db($connection["dbname"], $db))
+       {
+               $sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
+               if (!mysql_query($sql) || !mysql_select_db($connection["dbname"], $db))
+                       return 0;
+       }
+       return $db;
+}
+
+function db_drop_db($connection)
+{
+
+       if ($connection["tbpref"] == "")
+       {
+               $sql = "DROP DATABASE IF EXISTS " . $connection["dbname"] . "";
+               return mysql_query($sql);
+       }
+       else
+       {
+       $res = db_query("show table status");
+       $all_tables = array();
+       while($row = db_fetch($res))
+               $all_tables[] = $row;
+        // get table structures
+               foreach ($all_tables as $table)
+               {
+                       if (strpos($table['Name'], $connection["tbpref"]) === 0)
+                               db_query("DROP TABLE `".$table['Name'] . "`");
+               }
+               //deleting the tables, how??
+               return true;
+       }
+}
+
+function db_close($dbase = null)
+{
+       global $db;
+       
+       if (!$dbase)
+               $dbase = $db;
+       return mysql_close($dbase);
+}
+
+function db_extension_exists()
+{
+       return function_exists('mysql_connect');
+}
+
+function db_escape_function($string)
+{
+       return (function_exists('mysql_real_escape_string') ? mysql_real_escape_string($string) : mysql_escape_string($string));
+}
+
+/*
+       Set mysql client encoding.
+       Default is is encoding used by default language.
+*/
+function db_set_encoding($ui_encoding=null)
+{
+       global $dflt_lang, $installed_languages;
+
+       if (!isset($ui_encoding))
+       {
+               $lang = array_search_value($dflt_lang, $installed_languages, 'code');
+               $ui_encoding = strtoupper($lang['encoding']);
+       }
+
+       if ($mysql_enc = get_mysql_encoding_name($ui_encoding))
+               mysql_set_charset($mysql_enc);
+}
+
+?>
\ No newline at end of file
diff --git a/includes/db/connect_db_mysqli.inc b/includes/db/connect_db_mysqli.inc
new file mode 100644 (file)
index 0000000..1f5dd65
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+
+function set_global_connection($company=-1)
+{
+       global $db, $transaction_level, $path_to_root, $db_connections;
+
+       include ($path_to_root . "/config_db.php");
+       if ($company == -1) 
+               $company = $_SESSION["wa_current_user"]->company;
+
+       cancel_transaction(); // cancel all aborted transactions if any
+       $transaction_level = 0;
+
+       $_SESSION["wa_current_user"]->cur_con = $company;
+
+       $connection = $db_connections[$company];
+
+       $db = mysqli_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
+               mysqli_select_db($db, $connection["dbname"]);
+       ///// From mysqli release 5.6.6 the sql_mode is no longer empty as it was prior to
+       ///// this release. Just for safety we make it empty for all 5.6 release and higher.
+       ///// This non empty sql_mode values can interphere with FA, so all is set empty during
+       ///// our sessions.
+       ///// We are, however, investigating the existing code to be compatible in the future.
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       /////
+       return $db;
+}
+
+$db_duplicate_error_code = 1062;
+
+//DB wrapper functions to change only once for whole application
+
+function db_query($sql, $err_msg=null)
+{
+       global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
+               $db_connections, $db_last_inserted_id;
+       
+       // set current db prefix
+       $comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
+       $cur_prefix = $db_connections[$comp]['tbpref'];
+       $sql = str_replace(TB_PREF, $cur_prefix, $sql);
+
+       if ($show_sql)
+       {
+               $Ajax->activate('footer_debug');
+               $sql_queries .= "<pre>$sql</pre>\n<hr>";
+       }
+
+       // mysql profiling
+       global $profile_sql;
+       if (@$profile_sql) 
+               get_usec();
+       $result = mysqli_query($db, $sql);
+       if (@$profile_sql)
+       {
+               $profile_sql= false;
+               _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
+       }
+       
+       if($sql_trail) {
+               $db_last_inserted_id = mysqli_insert_id($db);   // preserve in case trail insert is done
+               if ($select_trail || (strstr($sql, 'SELECT') === false)) {
+                       mysqli_query($db, "INSERT INTO ".$cur_prefix."sql_trail
+                               (`sql`, `result`, `msg`)
+                               VALUES(".db_escape($sql).",".($result ? 1 : 0).",
+                               ".db_escape($err_msg).")");
+               }
+       }
+
+       if ($err_msg != null || $go_debug) {
+               $exit = $err_msg != null;
+               if (function_exists('xdebug_call_file'))
+                       check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
+               else
+                       check_db_error($err_msg, $sql, $exit);
+       }
+       return $result;
+}
+
+function db_fetch_row ($result)
+{
+       $ret = mysqli_fetch_row($result);
+       return ($ret === null ? false : $ret);
+}
+
+function db_fetch_assoc ($result)
+{
+       $ret = mysqli_fetch_assoc($result);
+       return ($ret === null ? false : $ret);
+}
+
+function db_fetch ($result)
+{
+       $ret = mysqli_fetch_array($result);
+       return ($ret === null ? false : $ret);
+}
+
+function db_seek (&$result,$record)
+{
+       return mysqli_data_seek($result, $record);
+}
+
+function db_free_result ($result)
+{
+       if ($result)
+               mysqli_free_result($result);
+}
+
+function db_num_rows ($result)
+{
+       return mysqli_num_rows($result);
+}
+
+function db_num_fields ($result)
+{
+       return mysqli_num_fields($result);
+}
+
+function db_escape($value = "", $nullify = false)
+{
+       global $db;
+       
+       $value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
+       $value = @htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding);
+
+       //reset default if second parameter is skipped
+       $nullify = ($nullify === null) ? (false) : ($nullify);
+
+       //check for null/unset/empty strings
+       if ((!isset($value)) || (is_null($value)) || ($value === "")) {
+               $value = ($nullify) ? ("NULL") : ("''");
+       } else {
+               if (is_string($value)) {
+                       $value = "'" . mysqli_real_escape_string($db, $value) . "'";
+               //value is a string and should be quoted; 
+               } else if (!is_numeric($value)) {
+                       //value is not a string nor numeric
+                       display_error("ERROR: incorrect data type send to sql query");
+                       echo '<br><br>';
+                       exit();
+               }
+       }
+       return $value;
+}
+
+function db_error_no ()
+{
+       global $db;
+    return mysqli_errno($db);
+}
+
+function db_error_msg($conn)
+{
+       return mysqli_error($conn);
+}
+
+function db_insert_id()
+{
+       global $db_last_inserted_id, $sql_trail, $db;
+
+       return $sql_trail ? $db_last_inserted_id : mysqli_insert_id($db);
+}
+
+function db_num_affected_rows()
+{
+       global $db;
+       return mysqli_affected_rows($db);
+}
+
+function db_field_name($result, $n)
+{
+    $fieldinfo = mysqli_fetch_field_direct($result, $n);
+    return $fieldinfo->name;
+}
+
+function db_create_db($connection)
+{
+       $db = mysqli_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       if (!mysqli_select_db($db, $connection["dbname"]))
+       {
+               $sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
+               if (!mysqli_query($sql) || !mysqli_select_db($db, $connection["dbname"]))
+                       return 0;
+       }
+       return $db;
+}
+
+function db_drop_db($connection)
+{
+
+       if ($connection["tbpref"] == "")
+       {
+               global $db;
+               $sql = "DROP DATABASE IF EXISTS " . $connection["dbname"] . "";
+               return mysqli_query($db, $sql);
+       }
+       else
+       {
+       $res = db_query("show table status");
+       $all_tables = array();
+       while($row = db_fetch($res))
+               $all_tables[] = $row;
+        // get table structures
+               foreach ($all_tables as $table)
+               {
+                       if (strpos($table['Name'], $connection["tbpref"]) === 0)
+                               db_query("DROP TABLE `".$table['Name'] . "`");
+               }
+               //deleting the tables, how??
+               return true;
+       }
+}
+
+function db_close($dbase = null)
+{
+       global $db;
+       
+       if (!$dbase)
+               $dbase = $db;
+       return mysqli_close($dbase);
+}
+
+function db_extension_exists()
+{
+       return function_exists('mysqli_connect');
+}
+
+function db_escape_function($string)
+{
+       global $db;
+       
+       return (mysqli_real_escape_string($db, $string));
+}
+
+/*
+       Set mysql client encoding.
+       Default is is encoding used by default language.
+*/
+function db_set_encoding($ui_encoding=null)
+{
+       global $db, $dflt_lang, $installed_languages;
+
+       if (!isset($ui_encoding))
+       {
+               $lang = array_search_value($dflt_lang, $installed_languages, 'code');
+               $ui_encoding = strtoupper($lang['encoding']);
+       }
+
+       if ($mysql_enc = get_mysql_encoding_name($ui_encoding))
+               mysqli_set_charset($db, $mysql_enc);
+}
+
+?>
\ No newline at end of file
index da4ee963c928ab380bd0ada46bfc6b5405dff816..2806d2f6a1382f00e73f04885dc8b04c2042ffc9 100644 (file)
@@ -326,8 +326,7 @@ class db_pager {
            }
                                
            if (count($ord)) {
-                       $ord = array_map(function_exists('mysql_real_escape_string') ? 
-                               'mysql_real_escape_string': 'mysql_escape_string', $ord);
+                       $ord = array_map('db_escape_function', $ord);
                        $sql .= " ORDER BY " . implode(',', $ord);
                } else {
                        if($order)
index 7f3665b9e2c7ea3643c2bf01ca9ee518be87ebcc..dca83e51c4858245c54fcc536d815769cd76ab6b 100644 (file)
@@ -23,7 +23,7 @@ function tst_mysql()
 {
        $test['descr'] = _('MySQL version'). ' >=4.1';
        $test['type'] = 3;
-       $test['test'] = mysql_get_server_info();
+       $test['test'] = db_get_version();
        $test['result'] = $test['test']>='4.1';
        $test['comments'] = _('Upgrade MySQL server to version at least 4.1');
 
@@ -34,7 +34,7 @@ function tst_phpmysql()
 {
        $test['descr'] = _('PHP MySQL extension');
        $test['type'] = 3;
-       $test['result'] = function_exists('mysql_connect');
+       $test['result'] = db_extension_exists();
        $test['test'] = $test['result'] ? _('Yes'): _('No');
        
        $test['comments'] = _('Your PHP has to have MySQL extension enabled.');
index 69b95c97054df1d1c7b2138eee301284e382f396..2fea78e67e550fcfc27b1364764764d6ec7c69a5 100644 (file)
@@ -92,10 +92,10 @@ function print_invoices()
        $range = get_invoice_range($from, $to);
        while($row = db_fetch($range))
        {
-                       if (!exists_customer_trans(ST_SALESINVOICE, $i))
+                       if (!exists_customer_trans(ST_SALESINVOICE, $row['trans_no']))
                                continue;
                        $sign = 1;
-                       $myrow = get_customer_trans($i, ST_SALESINVOICE);
+                       $myrow = get_customer_trans($row['trans_no'], ST_SALESINVOICE);
 
                        if($customer && $myrow['debtor_no'] != $customer) {
                                continue;
@@ -130,7 +130,7 @@ function print_invoices()
                                while($inv = db_fetch($result))
                                {
                                        $prepayments[] = $inv;
-                                       if ($inv['trans_no'] == $i)
+                                       if ($inv['trans_no'] == $row['trans_no'])
                                        break;
                                }
 
@@ -140,7 +140,7 @@ function print_invoices()
                                        unset($prepayments);
                        }
 
-                       $result = get_customer_trans_details(ST_SALESINVOICE, $i);
+                       $result = get_customer_trans_details(ST_SALESINVOICE, $row['trans_no']);
                        $SubTotal = 0;
                        while ($myrow2=db_fetch($result))
                        {
@@ -177,7 +177,7 @@ function print_invoices()
                                        $rep->NewPage();
                        }
 
-                       $memo = get_comments_string(ST_SALESINVOICE, $i);
+                       $memo = get_comments_string(ST_SALESINVOICE, $row['trans_no']);
                        if ($memo != "")
                        {
                                $rep->NewLine();
@@ -234,7 +234,7 @@ function print_invoices()
                        $rep->TextCol(3, 6, _("Shipping"), -2);
                        $rep->TextCol(6, 7,     $DisplayFreight, -2);
                        $rep->NewLine();
-                       $tax_items = get_trans_tax_details(ST_SALESINVOICE, $i);
+                       $tax_items = get_trans_tax_details(ST_SALESINVOICE, $row['trans_no']);
                        $first = true;
                while ($tax_item = db_fetch($tax_items))
                {
index b3ae178185d64878bc77d820fd70c4b8a801d82a..34124078db27904b41d63e43cb50ef6fee1dbbe5 100644 (file)
@@ -2087,7 +2087,6 @@ INSERT INTO `0_sys_prefs` VALUES('grn_clearing_act', 'glsetup.purchase', 'varcha
 INSERT INTO `0_sys_prefs` VALUES('bcc_email', 'setup.company', 'varchar', 100, '');
 INSERT INTO `0_sys_prefs` VALUES('deferred_income_act', 'glsetup.sales', 'varchar', '15', '');
 INSERT INTO `0_sys_prefs` VALUES('gl_closing_date','setup.closing_date', 'date', 8, '');
-INSERT INTO `0_sys_prefs` VALUES('bcc_email', 'setup.company', 'varchar', 100, '');
 
 -- --------------------------------------------------------
 
index 344d22f92a809f7207319698392dad06c53279a3..cc4ccb196ea4175301faabe248fbbd5af6ce6aac 100644 (file)
@@ -1846,7 +1846,6 @@ INSERT INTO `0_sys_prefs` VALUES('grn_clearing_act', 'glsetup.purchase', 'varcha
 INSERT INTO `0_sys_prefs` VALUES('bcc_email', 'setup.company', 'varchar', 100, '');
 INSERT INTO `0_sys_prefs` VALUES('deferred_income_act', 'glsetup.sales', 'varchar', '15', '');
 INSERT INTO `0_sys_prefs` VALUES('gl_closing_date','setup.closing_date', 'date', 8, '');
-INSERT INTO `0_sys_prefs` VALUES('bcc_email', 'setup.company', 'varchar', 100, '');
 
 -- --------------------------------------------------------