-<?php
-
-/*
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2009 The Nucleus Group
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- * (see nucleus/documentation/index.html#license for more info)
- */
-/**
- * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2009 The Nucleus Group
- * @version $Id$
- */
-
-/*
- * complete sql_* wrappers for mysql functions
- *
- * functions moved from globalfunctions.php: sql_connect, sql_disconnect, sql_query
- */
-
-
-$MYSQL_CONN = 0;
-global $SQL_DBH;
-$SQL_DBH = NULL;
-
-if (!function_exists('sql_fetch_assoc'))
-{
- /**
- * Errors before the database connection has been made
- */
- function startUpError($msg, $title) {
- ?>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head><title><?php echo i18n::hsc($title)?></title></head>
- <body>
- <h1><?php echo i18n::hsc($title)?></h1>
- <?php echo $msg?>
- </body>
- </html>
- <?php exit;
- }
-
- /**
- * Connects to mysql server
- */
- function sql_connect_args($mysql_host = 'localhost', $mysql_user = '', $mysql_password = '', $mysql_database = '') {
- global $MYSQL_HANDLER;
-
- try {
- if (i18n::strpos($mysql_host,':') === false) {
- $host = $mysql_host;
- $port = '';
- $portnum = '';
- }
- else {
- list($host,$port) = i18n::explode(":",$mysql_host);
- if (isset($port)) {
- $portnum = $port;
- $port = ';port='.trim($port);
- }
- else {
- $port = '';
- $portnum = '';
- }
- }
-
- switch ($MYSQL_HANDLER[1]) {
- case 'sybase':
- case 'dblib':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);
- break;
- case 'mssql':
- if (is_numeric($portnum)) $port = ','.intval($portnum);
- else $port = '';
- $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);
- break;
- case 'oci':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$mysql_database, $mysql_user, $mysql_password);
- break;
- case 'odbc':
- if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);
- else $port = '';
- $DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$mysql_database.';PROTOCOL=TCPIP;UID='.$mysql_user.';PWD='.$mysql_password);
-
- break;
- case 'pgsql':
- if (is_numeric($portnum)) $port = ';port='.intval($portnum);
- else $port = '';
- $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);
- break;
- case 'sqlite':
- case 'sqlite2':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $DBH = new PDO($MYSQL_HANDLER[1].':'.$mysql_database, $mysql_user, $mysql_password);
- if ($DBH)
- {
- $DBH->sqliteCreateFunction('SUBSTRING', 'substr', 3);
- $DBH->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);
- }
- break;
- default:
- //mysql
- $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);
- break;
- }
-
-
-
- } catch (PDOException $e) {
- $DBH =NULL;
- startUpError('<p>a1 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');
- }
-
- if ( $mysql_database )
- {
- sql_set_charset('utf8');
- }
-
- /*
- // For debugging
- echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';
- $result = sql_query('SHOW VARIABLES LIKE \'char%\';');
- while(FALSE !== ($row = sql_fetch_row($result)))
- {
- echo "{$row[0]}: {$row[1]}\n";
- }
- */
-
- return $DBH;
- }
-
- /**
- * Connects to mysql server
- */
- function sql_connect() {
- global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN, $MYSQL_HANDLER, $SQL_DBH;
- $SQL_DBH = NULL;
- try {
- if (i18n::strpos($MYSQL_HOST,':') === false) {
- $host = $MYSQL_HOST;
- $port = '';
- $portnum = '';
- }
- else {
- list($host,$port) = i18n::explode(":",$MYSQL_HOST);
- if (isset($port)) {
- $portnum = $port;
- $port = ';port='.trim($port);
- }
- else {
- $port = '';
- $portnum = '';
- }
- }
-
- switch ($MYSQL_HANDLER[1]) {
- case 'sybase':
- case 'dblib':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'mssql':
- if (is_numeric($portnum)) $port = ','.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'oci':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'odbc':
- if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$MYSQL_DATABASE.';PROTOCOL=TCPIP;UID='.$MYSQL_USER.';PWD='.$MYSQL_PASSWORD);
-
- break;
- case 'pgsql':
- if (is_numeric($portnum)) $port = ';port='.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'sqlite':
- case 'sqlite2':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':'.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
- if ($SQL_DBH)
- {
- $SQL_DBH->sqliteCreateFunction('SUBSTRING', 'substr', 3);
- $SQL_DBH->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);
- }
- break;
- default:
- //mysql
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- }
-
- //$SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);
-
- } catch (PDOException $e) {
- $SQL_DBH = NULL;
- startUpError('<p>a2 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');
- }
-
- if ( $MYSQL_DATABASE )
- {
- sql_set_charset('utf8');
- }
-
- /*
- // For debugging
- echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';
- $result = sql_query('SHOW VARIABLES LIKE \'char%\';');
- while(FALSE !== ($row = sql_fetch_row($result)))
- {
- echo "{$row[0]}: {$row[1]}\n";
- }
- */
-
- $MYSQL_CONN =& $SQL_DBH;
-// echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';
- $MYSQL_CONN =& $SQL_DBH;
- return $SQL_DBH;
-
- }
-
- /**
- * disconnects from SQL server
- */
- function sql_disconnect(&$dbh=NULL) {
- global $SQL_DBH;
- if (is_null($dbh)) $SQL_DBH = NULL;
- else $dbh = NULL;
- }
-
- function sql_close(&$dbh=NULL) {
- global $SQL_DBH;
- if (is_null($dbh)) $SQL_DBH = NULL;
- else $dbh = NULL;
- }
-
- /**
- * executes an SQL query
- */
- function sql_query($query,$dbh=NULL) {
- global $SQLCount,$SQL_DBH;
- $SQLCount++;
-//echo '<hr />SQL_DBH: ';
-//print_r($SQL_DBH);
-//echo '<hr />DBH: ';
-//print_r($dbh);
-//echo '<hr />';
-//echo $query.'<hr />';
- if (is_null($dbh)) $res = $SQL_DBH->query($query);
- else $res = $dbh->query($query);
- //if ($res->errorCode() != '00000') {
- // $errors = $res->errorInfo();
- if (($res === false) || ($res->errorCode() != '00000') ) {
- $errors = ($res !== false) ? $res->errorInfo() : ( is_object($dbh) ? $dbh->errorInfo() : $SQL_DBH->errorInfo());
- print("SQL error with query $query: " . $errors[0].'-'.$errors[1].' '.$errors[2] . '<p />');
- }
-
- return $res;
- }
-
- /**
- * executes an SQL error
- */
- function sql_error($dbh=NULL)
- {
- global $SQL_DBH;
- if (is_null($dbh)) $error = $SQL_DBH->errorInfo();
- else $error = $dbh->errorInfo();
- if ($error[0] != '00000') {
- return $error[0].'-'.$error[1].' '.$error[2];
- }
- else return '';
- }
-
- /**
- * executes an SQL db select
- */
- function sql_select_db($db,&$dbh=NULL)
- {
- global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN, $MYSQL_HANDLER, $SQL_DBH;
-//echo '<hr />'.print_r($dbh,true).'<hr />';
-//exit;
- if (is_null($dbh)) {
- try {
- $SQL_DBH = NULL;
- list($host,$port) = i18n::explode(":",$MYSQL_HOST);
- if (isset($port)) {
- $portnum = $port;
- $port = ';port='.trim($port);
- }
- else {
- $port = '';
- $portnum = '';
- }
- //$SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.trim($host).$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- //$SQL_DBH = sql_connect();
- switch ($MYSQL_HANDLER[1]) {
- case 'sybase':
- case 'dblib':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'mssql':
- if (is_numeric($portnum)) $port = ','.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'oci':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'odbc':
- if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$db.';PROTOCOL=TCPIP;UID='.$MYSQL_USER.';PWD='.$MYSQL_PASSWORD);
-
- break;
- case 'pgsql':
- if (is_numeric($portnum)) $port = ';port='.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- case 'sqlite':
- case 'sqlite2':
- if (is_numeric($portnum)) $port = ':'.intval($portnum);
- else $port = '';
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':'.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- default:
- //mysql
- $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);
- break;
- }
- return 1;
- } catch (PDOException $e) {
- startUpError('<p>a3 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');
- return 0;
- }
- }
- else {
- if ($dbh->exec("USE $db") !== false) return 1;
- else return 0;
- }
- }
-
- /**
- * executes an SQL real escape
- */
- function sql_real_escape_string($val,$dbh=NULL)
- {
- global $MYSQL_HANDLER;
- if (stripos($MYSQL_HANDLER[1] , 'sqlite') !== false)
- {
- return sqlite_escape_string($val);
- }
- else
- {
- return addslashes($val);
- }
- }
-
- /**
- * executes an PDO::quote() like escape, ie adds quotes arround the string and escapes chars as needed
- */
- function sql_quote_string($val,$dbh=NULL) {
- global $SQL_DBH;
- if (is_null($dbh))
- return $SQL_DBH->quote($val);
- else
- return $dbh->quote($val);
- }
-
- /**
- * executes an SQL insert id
- */
- function sql_insert_id($dbh=NULL)
- {
- global $SQL_DBH;
- if (is_null($dbh))
- return $SQL_DBH->lastInsertId();
- else
- return $dbh->lastInsertId();
- }
-
- /**
- * executes an SQL result request
- */
- function sql_result($res, $row = 0, $col = 0)
- {
- $results = array();
- if (intval($row) < 1) {
- $results = $res->fetch(PDO::FETCH_BOTH);
- return $results[$col];
- }
- else {
- for ($i = 0; $i < intval($row); $i++) {
- $results = $res->fetch(PDO::FETCH_BOTH);
- }
- $results = $res->fetch(PDO::FETCH_BOTH);
- return $results[$col];
- }
- }
-
- /**
- * frees sql result resources
- */
- function sql_free_result($res)
- {
- $res = NULL;
- return true;
- }
-
- /**
- * returns number of rows in SQL result
- */
- function sql_num_rows($res)
- {
- return $res->rowCount();
- }
-
- /**
- * returns number of rows affected by SQL query
- */
- function sql_affected_rows($res)
- {
- return $res->rowCount();
- }
-
- /**
- * Get number of fields in result
- */
- function sql_num_fields($res)
- {
- return $res->columnCount();
- }
-
- /**
- * fetches next row of SQL result as an associative array
- */
- function sql_fetch_assoc($res)
- {
- $results = array();
- $results = $res->fetch(PDO::FETCH_ASSOC);
- return $results;
- }
-
- /**
- * Fetch a result row as an associative array, a numeric array, or both
- */
- function sql_fetch_array($res)
- {
- $results = array();
- $results = $res->fetch(PDO::FETCH_BOTH);
- return $results;
- }
-
- /**
- * fetches next row of SQL result as an object
- */
- function sql_fetch_object($res)
- {
- $results = NULL;
- $results = $res->fetchObject();
- return $results;
- }
-
- /**
- * Get a result row as an enumerated array
- */
- function sql_fetch_row($res)
- {
- $results = array();
- $results = $res->fetch(PDO::FETCH_NUM);
- return $results;
- }
-
- /**
- * Get column information from a result and return as an object
- */
- function sql_fetch_field($res,$offset = 0)
- {
- $results = array();
- $obj = NULL;
- $results = $res->getColumnMeta($offset);
- foreach($results as $key=>$value) {
- $obj->$key = $value;
- }
- return $obj;
- }
-
- /**
- * Get current system status (returns string)
- */
- function sql_stat($dbh=NULL)
- {
- //not implemented
- global $SQL_DBH;
- if (is_null($dbh))
- return '';
- else
- return '';
- }
-
- /**
- * Returns the name of the character set
- */
- function sql_client_encoding($dbh=NULL)
- {
- //not implemented
- global $SQL_DBH;
- if (is_null($dbh))
- return '';
- else
- return '';
- }
-
- /**
- * Get SQL client version
- */
- function sql_get_client_info()
- {
- global $SQL_DBH;
- return $SQL_DBH->getAttribute(constant("PDO::ATTR_CLIENT_VERSION"));
- }
-
- /**
- * Get SQL server version
- */
- function sql_get_server_info($dbh=NULL)
- {
- global $SQL_DBH;
- if (is_null($dbh))
- return $SQL_DBH->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));
- else
- return $dbh->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));
- }
-
- /**
- * Returns a string describing the type of SQL connection in use for the connection or FALSE on failure
- */
- function sql_get_host_info($dbh=NULL)
- {
- global $SQL_DBH;
- if (is_null($dbh))
- return $SQL_DBH->getAttribute(constant("PDO::ATTR_SERVER_INFO"));
- else
- return $dbh->getAttribute(constant("PDO::ATTR_SERVER_INFO"));
- }
-
- /**
- * Returns the SQL protocol on success, or FALSE on failure.
- */
- function sql_get_proto_info($dbh=NULL)
- {
- //not implemented
- global $SQL_DBH;
- if (is_null($dbh))
- return false;
- else
- return false;
- }
-
- /**
- * Get the name of the specified field in a result
- */
- function sql_field_name($res, $offset = 0)
- {
- $column = $res->getColumnMeta($offset);
- if ($column) {
- return $column['name'];
- }
- return false;
- }
-
- /**
- * Set character encodings in each fields
- */
- function sql_set_charset($charset)
- {
- global $MYSQL_HANDLER, $SQL_DBH;
-
- $result = TRUE;
-
- if ( $MYSQL_HANDLER[0] == '' || in_array('mysql', $MYSQL_HANDLER) )
- {
- /*
- * NOTE:
- * It's great help to you refering the same function in mysql.php.
- * PDO::MySQL has no function as same as mysql_set_charset().
- */
- $charset = strtolower($charset);
- $mysql_version = preg_replace('#^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})(.*)$#', '$1.$2.$3', sql_get_server_info($SQL_DBH));
-
- if ( version_compare($mysql_version, '5.0.7', '<') )
- {
- $result = sql_query("SET CHARACTER SET {$charset};");
- }
- else
- {
- $result = sql_query("SET NAMES {$charset};");
- }
- }
- return $result;
- }
-
-/**************************************************************************
-Unimplemented mysql_* functions
-
-# mysql_ data_ seek (maybe useful)
-# mysql_ errno (maybe useful)
-# mysql_ fetch_ lengths (maybe useful)
-# mysql_ field_ flags (maybe useful)
-# mysql_ field_ len (maybe useful)
-# mysql_ field_ seek (maybe useful)
-# mysql_ field_ table (maybe useful)
-# mysql_ field_ type (maybe useful)
-# mysql_ info (maybe useful)
-# mysql_ list_ processes (maybe useful)
-# mysql_ ping (maybe useful)
-# mysql_ set_ charset (maybe useful, requires php >=5.2.3 and mysql >=5.0.7)
-# mysql_ thread_ id (maybe useful)
-
-# mysql_ db_ name (useful only if working on multiple dbs which we do not do)
-# mysql_ list_ dbs (useful only if working on multiple dbs which we do not do)
-
-# mysql_ pconnect (probably not useful and could cause some unintended performance issues)
-# mysql_ unbuffered_ query (possibly useful, but complicated and not supported by all database drivers (pdo))
-
-# mysql_ change_ user (deprecated)
-# mysql_ create_ db (deprecated)
-# mysql_ db_ query (deprecated)
-# mysql_ drop_ db (deprecated)
-# mysql_ escape_ string (deprecated)
-# mysql_ list_ fields (deprecated)
-# mysql_ list_ tables (deprecated)
-# mysql_ tablename (deprecated)
-
-*******************************************************************/
-
-}
+<?php\r
+\r
+/*\r
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
+ * Copyright (C) 2002-2012 The Nucleus Group\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * (see nucleus/documentation/index.html#license for more info)\r
+ */\r
+/**\r
+ * @license http://nucleuscms.org/license.txt GNU General Public License\r
+ * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
+ * @version $Id$\r
+ */\r
+ \r
+/*\r
+ * complete sql_* wrappers for mysql functions\r
+ *\r
+ * functions moved from globalfunctions.php: sql_connect, sql_disconnect, sql_query\r
+ */\r
+ \r
+\r
+$MYSQL_CONN = 0;\r
+global $SQL_DBH;\r
+$SQL_DBH = NULL;\r
+\r
+if (!function_exists('sql_fetch_assoc'))\r
+{\r
+ /**\r
+ * Errors before the database connection has been made\r
+ */\r
+ function startUpError($msg, $title) {\r
+ ?>\r
+ <html xmlns="http://www.w3.org/1999/xhtml">\r
+ <head><title><?php echo Entity::hsc($title)?></title></head>\r
+ <body>\r
+ <h1><?php echo Entity::hsc($title)?></h1>\r
+ <?php echo $msg?>\r
+ </body>\r
+ </html>\r
+ <?php exit;\r
+ }\r
+ \r
+ /**\r
+ * Connects to mysql server\r
+ */\r
+ function sql_connect_args($mysql_host = 'localhost', $mysql_user = '', $mysql_password = '', $mysql_database = '') {\r
+ global $MYSQL_HANDLER;\r
+ \r
+ try {\r
+ if (i18n::strpos($mysql_host,':') === false) {\r
+ $host = $mysql_host;\r
+ $port = '';\r
+ $portnum = '';\r
+ }\r
+ else {\r
+ list($host,$port) = preg_split("#:#", $mysql_host);\r
+ if (isset($port)) {\r
+ $portnum = $port;\r
+ $port = ';port='.trim($port);\r
+ }\r
+ else {\r
+ $port = '';\r
+ $portnum = '';\r
+ }\r
+ }\r
+ \r
+ switch ($MYSQL_HANDLER[1]) {\r
+ case 'sybase':\r
+ case 'dblib':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
+ break;\r
+ case 'mssql':\r
+ if (is_numeric($portnum)) $port = ','.intval($portnum);\r
+ else $port = '';\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
+ break;\r
+ case 'oci':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$mysql_database, $mysql_user, $mysql_password);\r
+ break;\r
+ case 'odbc':\r
+ if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);\r
+ else $port = '';\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$mysql_database.';PROTOCOL=TCPIP;UID='.$mysql_user.';PWD='.$mysql_password);\r
+\r
+ break;\r
+ case 'pgsql':\r
+ if (is_numeric($portnum)) $port = ';port='.intval($portnum);\r
+ else $port = '';\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
+ break;\r
+ case 'sqlite':\r
+ case 'sqlite2':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':'.$mysql_database, $mysql_user, $mysql_password);\r
+ if ($DBH)\r
+ {\r
+ $DBH->sqliteCreateFunction('SUBSTRING', 'substr', 3);\r
+ $DBH->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);\r
+ } \r
+ break;\r
+ default:\r
+ //mysql\r
+ $DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$mysql_database, $mysql_user, $mysql_password);\r
+ break;\r
+ }\r
+ \r
+ \r
+ \r
+ } catch (PDOException $e) {\r
+ $DBH =NULL;\r
+ startUpError('<p>a1 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');\r
+ }\r
+ \r
+ if ( $mysql_database )\r
+ {\r
+ sql_set_charset('utf8');\r
+ }\r
+ \r
+ /*\r
+ // For debugging\r
+ echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';\r
+ $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
+ while(FALSE !== ($row = sql_fetch_row($result)))\r
+ {\r
+ echo "{$row[0]}: {$row[1]}\n";\r
+ }\r
+ */\r
+ \r
+ return $DBH;\r
+ }\r
+ \r
+ /**\r
+ * Connects to mysql server\r
+ */\r
+ function sql_connect() {\r
+ global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN, $MYSQL_HANDLER, $SQL_DBH;\r
+ $SQL_DBH = NULL;\r
+ try {\r
+ if (i18n::strpos($MYSQL_HOST,':') === false) {\r
+ $host = $MYSQL_HOST;\r
+ $port = '';\r
+ $portnum = ''; \r
+ }\r
+ else {\r
+ list($host,$port) = preg_split("#:#", $MYSQL_HOST);\r
+ if (isset($port)) {\r
+ $portnum = $port;\r
+ $port = ';port='.trim($port);\r
+ }\r
+ else {\r
+ $port = '';\r
+ $portnum = '';\r
+ }\r
+ }\r
+ \r
+ switch ($MYSQL_HANDLER[1]) {\r
+ case 'sybase':\r
+ case 'dblib':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'mssql':\r
+ if (is_numeric($portnum)) $port = ','.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'oci':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'odbc':\r
+ if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$MYSQL_DATABASE.';PROTOCOL=TCPIP;UID='.$MYSQL_USER.';PWD='.$MYSQL_PASSWORD);\r
+\r
+ break;\r
+ case 'pgsql':\r
+ if (is_numeric($portnum)) $port = ';port='.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'sqlite':\r
+ case 'sqlite2':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':'.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ if ($SQL_DBH)\r
+ {\r
+ $SQL_DBH->sqliteCreateFunction('SUBSTRING', 'substr', 3);\r
+ $SQL_DBH->sqliteCreateFunction('UNIX_TIMESTAMP', 'strtotime', 1);\r
+ } \r
+ break;\r
+ default:\r
+ //mysql\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ }\r
+ \r
+ //$SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$MYSQL_DATABASE, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ \r
+ } catch (PDOException $e) {\r
+ $SQL_DBH = NULL;\r
+ startUpError('<p>a2 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');\r
+ }\r
+ \r
+ if ( $MYSQL_DATABASE )\r
+ {\r
+ sql_set_charset('utf8');\r
+ }\r
+ \r
+ /*\r
+ // For debugging\r
+ echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />';\r
+ $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
+ while(FALSE !== ($row = sql_fetch_row($result)))\r
+ {\r
+ echo "{$row[0]}: {$row[1]}\n";\r
+ }\r
+ */\r
+ \r
+ $MYSQL_CONN =& $SQL_DBH;\r
+// echo '<hr />DBH: '.print_r($SQL_DBH,true).'<hr />'; \r
+ $MYSQL_CONN =& $SQL_DBH;\r
+ return $SQL_DBH;\r
+\r
+ }\r
+\r
+ /**\r
+ * disconnects from SQL server\r
+ */\r
+ function sql_disconnect(&$dbh=NULL) {\r
+ global $SQL_DBH;\r
+ if (is_null($dbh)) $SQL_DBH = NULL;\r
+ else $dbh = NULL;\r
+ }\r
+ \r
+ /**\r
+ * sql_close()\r
+ * use sql_disconnect() instead of this\r
+ * \r
+ * @deprecated\r
+ * @param resource $conn resource of mySQL connection\r
+ * @return void\r
+ */\r
+ function sql_close(&$dbh=NULL)\r
+ {\r
+ global $SQL_DBH;\r
+ if ( is_null($dbh) )\r
+ {\r
+ $SQL_DBH = NULL;\r
+ }\r
+ else\r
+ {\r
+ $dbh = NULL;\r
+ }\r
+ return;\r
+ }\r
+ \r
+ /**\r
+ * executes an SQL query\r
+ */\r
+ function sql_query($query,$dbh=NULL) {\r
+ global $SQLCount,$SQL_DBH;\r
+ $SQLCount++;\r
+//echo '<hr />SQL_DBH: ';\r
+//print_r($SQL_DBH);\r
+//echo '<hr />DBH: ';\r
+//print_r($dbh);\r
+//echo '<hr />';\r
+//echo $query.'<hr />';\r
+ if (is_null($dbh)) $res = $SQL_DBH->query($query);\r
+ else $res = $dbh->query($query);\r
+ //if ($res->errorCode() != '00000') {\r
+ // $errors = $res->errorInfo();\r
+ if (($res === false) || ($res->errorCode() != '00000') ) {\r
+ $errors = ($res !== false) ? $res->errorInfo() : ( is_object($dbh) ? $dbh->errorInfo() : $SQL_DBH->errorInfo());\r
+ print("SQL error with query $query: " . $errors[0].'-'.$errors[1].' '.$errors[2] . '<p />');\r
+ }\r
+ \r
+ return $res;\r
+ }\r
+ \r
+ /**\r
+ * executes an SQL error\r
+ */\r
+ function sql_error($dbh=NULL)\r
+ {\r
+ global $SQL_DBH;\r
+ if (is_null($dbh)) $error = $SQL_DBH->errorInfo();\r
+ else $error = $dbh->errorInfo();\r
+ if ($error[0] != '00000') {\r
+ return $error[0].'-'.$error[1].' '.$error[2];\r
+ }\r
+ else return '';\r
+ }\r
+ \r
+ /**\r
+ * executes an SQL db select\r
+ */\r
+ function sql_select_db($db,&$dbh=NULL)\r
+ {\r
+ global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN, $MYSQL_HANDLER, $SQL_DBH;\r
+//echo '<hr />'.print_r($dbh,true).'<hr />';\r
+//exit;\r
+ if (is_null($dbh)) { \r
+ try {\r
+ $SQL_DBH = NULL;\r
+ list($host,$port) = preg_split("#:#", $MYSQL_HOST);\r
+ if (isset($port)) {\r
+ $portnum = $port;\r
+ $port = ';port='.trim($port);\r
+ }\r
+ else {\r
+ $port = '';\r
+ $portnum = '';\r
+ }\r
+ //$SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.trim($host).$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ //$SQL_DBH = sql_connect();\r
+ switch ($MYSQL_HANDLER[1]) {\r
+ case 'sybase':\r
+ case 'dblib':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'mssql':\r
+ if (is_numeric($portnum)) $port = ','.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'oci':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':dbname=//'.$host.$port.'/'.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'odbc':\r
+ if (is_numeric($portnum)) $port = ';PORT='.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME='.$host.$port.';DATABASE='.$db.';PROTOCOL=TCPIP;UID='.$MYSQL_USER.';PWD='.$MYSQL_PASSWORD);\r
+\r
+ break;\r
+ case 'pgsql':\r
+ if (is_numeric($portnum)) $port = ';port='.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ case 'sqlite':\r
+ case 'sqlite2':\r
+ if (is_numeric($portnum)) $port = ':'.intval($portnum);\r
+ else $port = '';\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':'.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ default:\r
+ //mysql\r
+ $SQL_DBH = new PDO($MYSQL_HANDLER[1].':host='.$host.$port.';dbname='.$db, $MYSQL_USER, $MYSQL_PASSWORD);\r
+ break;\r
+ }\r
+ return 1;\r
+ } catch (PDOException $e) {\r
+ startUpError('<p>a3 Error!: ' . $e->getMessage() . '</p>', 'Connect Error');\r
+ return 0;\r
+ }\r
+ }\r
+ else {\r
+ if ($dbh->exec("USE $db") !== false) return 1;\r
+ else return 0;\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * executes an SQL real escape \r
+ */\r
+ function sql_real_escape_string($val,$dbh=NULL)\r
+ {\r
+ global $MYSQL_HANDLER;\r
+ if (stripos($MYSQL_HANDLER[1] , 'sqlite') !== false)\r
+ {\r
+ return sqlite_escape_string($val); \r
+ }\r
+ else \r
+ {\r
+ return addslashes($val);\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * executes an PDO::quote() like escape, ie adds quotes arround the string and escapes chars as needed \r
+ */\r
+ function sql_quote_string($val,$dbh=NULL) {\r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return $SQL_DBH->quote($val);\r
+ else\r
+ return $dbh->quote($val);\r
+ }\r
+ \r
+ /**\r
+ * executes an SQL insert id\r
+ */\r
+ function sql_insert_id($dbh=NULL)\r
+ { \r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return $SQL_DBH->lastInsertId();\r
+ else\r
+ return $dbh->lastInsertId();\r
+ }\r
+ \r
+ /**\r
+ * executes an SQL result request\r
+ */\r
+ function sql_result($res, $row = 0, $col = 0)\r
+ {\r
+ $results = array();\r
+ if (intval($row) < 1) {\r
+ $results = $res->fetch(PDO::FETCH_BOTH);\r
+ return $results[$col];\r
+ }\r
+ else {\r
+ for ($i = 0; $i < intval($row); $i++) {\r
+ $results = $res->fetch(PDO::FETCH_BOTH);\r
+ }\r
+ $results = $res->fetch(PDO::FETCH_BOTH);\r
+ return $results[$col];\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * frees sql result resources\r
+ */\r
+ function sql_free_result($res)\r
+ {\r
+ $res = NULL;\r
+ return true;\r
+ }\r
+ \r
+ /**\r
+ * returns number of rows in SQL result\r
+ */\r
+ function sql_num_rows($res)\r
+ {\r
+ return $res->rowCount();\r
+ }\r
+ \r
+ /**\r
+ * returns number of rows affected by SQL query\r
+ */\r
+ function sql_affected_rows($res)\r
+ {\r
+ return $res->rowCount();\r
+ }\r
+ \r
+ /**\r
+ * Get number of fields in result\r
+ */\r
+ function sql_num_fields($res)\r
+ {\r
+ return $res->columnCount();\r
+ }\r
+ \r
+ /**\r
+ * fetches next row of SQL result as an associative array\r
+ */\r
+ function sql_fetch_assoc($res)\r
+ {\r
+ $results = array();\r
+ $results = $res->fetch(PDO::FETCH_ASSOC); \r
+ return $results;\r
+ }\r
+ \r
+ /**\r
+ * Fetch a result row as an associative array, a numeric array, or both\r
+ */\r
+ function sql_fetch_array($res)\r
+ {\r
+ $results = array();\r
+ $results = $res->fetch(PDO::FETCH_BOTH);\r
+ return $results;\r
+ }\r
+ \r
+ /**\r
+ * fetches next row of SQL result as an object\r
+ */\r
+ function sql_fetch_object($res)\r
+ {\r
+ $results = NULL;\r
+ $results = $res->fetchObject(); \r
+ return $results;\r
+ }\r
+ \r
+ /**\r
+ * Get a result row as an enumerated array\r
+ */\r
+ function sql_fetch_row($res)\r
+ {\r
+ $results = array();\r
+ $results = $res->fetch(PDO::FETCH_NUM); \r
+ return $results;\r
+ }\r
+ \r
+ /**\r
+ * Get column information from a result and return as an object\r
+ */\r
+ function sql_fetch_field($res,$offset = 0)\r
+ {\r
+ $results = array();\r
+ $obj = NULL;\r
+ $results = $res->getColumnMeta($offset);\r
+ foreach($results as $key=>$value) {\r
+ $obj->$key = $value;\r
+ }\r
+ return $obj;\r
+ }\r
+ \r
+ /**\r
+ * Get current system status (returns string)\r
+ */\r
+ function sql_stat($dbh=NULL)\r
+ {\r
+ //not implemented\r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return '';\r
+ else\r
+ return '';\r
+ }\r
+ \r
+ /**\r
+ * Returns the name of the character set\r
+ */\r
+ function sql_client_encoding($dbh=NULL)\r
+ {\r
+ //not implemented\r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return '';\r
+ else\r
+ return '';\r
+ }\r
+ \r
+ /**\r
+ * Get SQL client version\r
+ */\r
+ function sql_get_client_info()\r
+ {\r
+ global $SQL_DBH;\r
+ return $SQL_DBH->getAttribute(constant("PDO::ATTR_CLIENT_VERSION"));\r
+ }\r
+ \r
+ /**\r
+ * Get SQL server version\r
+ */\r
+ function sql_get_server_info($dbh=NULL)\r
+ {\r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return $SQL_DBH->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));\r
+ else\r
+ return $dbh->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));\r
+ }\r
+ \r
+ /**\r
+ * Returns a string describing the type of SQL connection in use for the connection or FALSE on failure\r
+ */\r
+ function sql_get_host_info($dbh=NULL)\r
+ {\r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return $SQL_DBH->getAttribute(constant("PDO::ATTR_SERVER_INFO"));\r
+ else\r
+ return $dbh->getAttribute(constant("PDO::ATTR_SERVER_INFO"));\r
+ }\r
+ \r
+ /**\r
+ * Returns the SQL protocol on success, or FALSE on failure. \r
+ */\r
+ function sql_get_proto_info($dbh=NULL)\r
+ {\r
+ //not implemented\r
+ global $SQL_DBH;\r
+ if (is_null($dbh))\r
+ return false;\r
+ else\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * Get the name of the specified field in a result\r
+ */\r
+ function sql_field_name($res, $offset = 0)\r
+ {\r
+ $column = $res->getColumnMeta($offset);\r
+ if ($column) {\r
+ return $column['name'];\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ /**\r
+ * Set character encodings in each fields\r
+ */\r
+ function sql_set_charset($charset)\r
+ {\r
+ global $MYSQL_HANDLER, $SQL_DBH;\r
+ \r
+ $result = TRUE;\r
+ \r
+ if ( $MYSQL_HANDLER[0] == '' || in_array('mysql', $MYSQL_HANDLER) )\r
+ {\r
+ /*\r
+ * NOTE:\r
+ * It's great help to you refering the same function in mysql.php.\r
+ * PDO::MySQL has no function as same as mysql_set_charset().\r
+ */\r
+ $charset = strtolower($charset);\r
+ $mysql_version = preg_replace('#^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})(.*)$#', '$1.$2.$3', sql_get_server_info($SQL_DBH));\r
+ \r
+ if ( version_compare($mysql_version, '5.0.7', '<') )\r
+ {\r
+ $result = sql_query("SET CHARACTER SET {$charset};");\r
+ }\r
+ else\r
+ {\r
+ $result = sql_query("SET NAMES {$charset};");\r
+ }\r
+ }\r
+ return $result;\r
+ }\r
+ \r
+/**************************************************************************\r
+Unimplemented mysql_* functions\r
+\r
+# mysql_ data_ seek (maybe useful)\r
+# mysql_ errno (maybe useful)\r
+# mysql_ fetch_ lengths (maybe useful)\r
+# mysql_ field_ flags (maybe useful)\r
+# mysql_ field_ len (maybe useful)\r
+# mysql_ field_ seek (maybe useful)\r
+# mysql_ field_ table (maybe useful)\r
+# mysql_ field_ type (maybe useful)\r
+# mysql_ info (maybe useful)\r
+# mysql_ list_ processes (maybe useful)\r
+# mysql_ ping (maybe useful)\r
+# mysql_ set_ charset (maybe useful, requires php >=5.2.3 and mysql >=5.0.7)\r
+# mysql_ thread_ id (maybe useful)\r
+\r
+# mysql_ db_ name (useful only if working on multiple dbs which we do not do)\r
+# mysql_ list_ dbs (useful only if working on multiple dbs which we do not do)\r
+\r
+# mysql_ pconnect (probably not useful and could cause some unintended performance issues)\r
+# mysql_ unbuffered_ query (possibly useful, but complicated and not supported by all database drivers (pdo))\r
+\r
+# mysql_ change_ user (deprecated)\r
+# mysql_ create_ db (deprecated)\r
+# mysql_ db_ query (deprecated)\r
+# mysql_ drop_ db (deprecated)\r
+# mysql_ escape_ string (deprecated)\r
+# mysql_ list_ fields (deprecated)\r
+# mysql_ list_ tables (deprecated)\r
+# mysql_ tablename (deprecated)\r
+\r
+*******************************************************************/\r
+\r
+}\r