Seditio Source
Root |
./othercms/Cotonti-0.6.25/system/database.mysql.php
<?PHP
/* ====================
Seditio - Website engine
Copyright Neocrome
http://www.neocrome.net
==================== */

/**
 * MySQL database driver
 *
 * @package Cotonti
 * @version 0.0.3
 * @copyright Copyright (c) 2008-2009 Cotonti Team
 * @license BSD
 */

defined('SED_CODE') or die('Wrong URL');

/**
 * Returns number of rows affected by last query
 *
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_affectedrows($conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_affected_rows($sed_dbc) : mysql_affected_rows($conn);
}

/**
 * Closes database connection
 *
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_close($conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_close($sed_dbc) : mysql_close($conn);
}

/**
 * Connects to the database and returns connection handle
 *
 * @global $cfg
 * @param string $host Host name
 * @param string $user User name
 * @param string $pass Password
 * @param string $db Database name
 * @return resource
 */
function sed_sql_connect($host, $user, $pass, $db)
{
    global
$cfg;
   
$connection = @mysql_connect($host, $user, $pass) or sed_diefatal('Could not connect to database !<br />Please check your settings in the file datas/config.php<br />'.'MySQL error : '.sed_sql_error());
    if (!
version_compare(mysql_get_server_info($connection), '4.1.0', '>='))
    {
       
sed_diefatal('Cotonti system requirements: MySQL 4.1 or above.');
    }

    if (!empty(
$cfg['mysqlcharset']))
    {
       
$collation_query = "SET NAMES '{$cfg['mysqlcharset']}'";
        if (!empty(
$cfg['mysqlcollate']) )
        {
           
$collation_query .= " COLLATE '{$cfg['mysqlcollate']}'";
        }
        @
mysql_query($collation_query, $connection);
    }
   
$select = @mysql_select_db($db, $connection) or sed_diefatal('Could not select the database !<br />Please check your settings in the file datas/config.php<br />'.'MySQL error : '.sed_sql_error());
    return
$connection;
}

/**
 * Returns last error number
 *
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_errno($conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_errno($sed_dbc) : mysql_errno($conn);
}

/**
 * Returns last SQL error message
 *
 * @param resource $conn Custom connection handle
 * @return string
 */
function sed_sql_error($conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_error($sed_dbc) : mysql_error($conn);
}

/**
 * Fetches result row as mixed numeric/associative array
 *
 * @param resource $res Query result
 * @return array
 */
function sed_sql_fetcharray($res)
{
    return
mysql_fetch_array($res);
}

/**
 * Returns result row as associative array
 *
 * @param resource $res Query result
 * @return array
 */
function sed_sql_fetchassoc($res)
{
    return
mysql_fetch_assoc($res);
}

/**
 * Returns result row as numeric array
 *
 * @param resource $res Query result
 * @return array
 */
function sed_sql_fetchrow($res)
{
    return
mysql_fetch_row($res);
}

/**
 * Returns number of records total for last query with SQL_CALC_FOUND_ROWS
 *
 * @param resource $conn Custom connection
 * @return int
 */
function sed_sql_foundrows($conn = NULL)
{
    return (int)
sed_sql_result(sed_sql_query('SELECT FOUND_ROWS()'), 0, 0);
}

/**
 * Frees result resources
 *
 * @param resource $res Query result
 * @return bool
 */
function sed_sql_freeresult($res)
{
    return
mysql_free_result($res);
}

/**
 * Returns ID of last INSERT query
 *
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_insertid($conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_insert_id($sed_dbc) : mysql_insert_id($conn);
}

/**
 * Returns list of tables for a database. Use sed_sql_fetcharray() to get table names from result
 *
 * @param string $db_name Database name
 * @param resource $conn Custom connection handle
 * @return resource
 */
function sed_sql_listtables($db_name, $conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_list_tables($db_name, $sed_dbc) : mysql_list_tables($db_name, $conn);
}

/**
 * Returns number of rows in result set
 *
 * @param resource $res Query result
 * @return int
 */
function sed_sql_numrows($res)
{
    return
mysql_num_rows($res);
}

/**
 * Escapes potentially insecure sequences in string
 *
 * @param string $str
 * @param resource $conn Custom connection handle
 * @return string
 */
function sed_sql_prep($str, $conn = null)
{
    global
$sed_dbc;
    return
is_null($conn) ? mysql_real_escape_string($str, $sed_dbc) : mysql_real_escape_string($str, $conn);
}

/**
 * Executes SQL query
 *
 * @global $sys
 * @global $cfg
 * @global $usr
 * @param string $query SQL query
 * @param resource $conn Custom connection handle
 * @return resource
 */
function sed_sql_query($query, $conn = null)
{
    global
$sys, $cfg, $usr, $sed_dbc;
   
$conn = is_null($conn) ? $sed_dbc : $conn;
   
$sys['qcount']++;
   
$xtime = microtime();
   
$result = mysql_query($query, $conn) OR sed_diefatal('SQL error : '.sed_sql_error($conn));
   
$ytime = microtime();
   
$xtime = explode(' ',$xtime);
   
$ytime = explode(' ',$ytime);
   
$sys['tcount'] = $sys['tcount'] + $ytime[1] + $ytime[0] - $xtime[1] - $xtime[0];
    if (
$cfg['devmode'])
    {
       
$sys['devmode']['queries'][] = array ($sys['qcount'], $ytime[1] + $ytime[0] - $xtime[1] - $xtime[0], $query);
       
$sys['devmode']['timeline'][] = $xtime[1] + $xtime[0] - $sys['starttime'];
    }
    return
$result;
}

/**
 * Fetches a single cell from result
 *
 * @param resource $res Result set
 * @param int $row Row number
 * @param mixed $col Column name or index (null-based)
 * @return mixed
 */
function sed_sql_result($res, $row, $col)
{
    return
mysql_result($res, $row, $col);
}

/**
 * Returns number of rows in a table
 *
 * @param string $table Table name
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_rowcount($table, $conn = null)
{
    global
$sed_dbc;
   
$conn = is_null($conn) ? $sed_dbc : $conn;
   
$sqltmp = sed_sql_query("SELECT COUNT(*) FROM $table", $conn);
    return (int)
mysql_result($sqltmp, 0, 0);
}

/**
 * Performs SQL INSERT on simple data array. Array keys must match table keys, optionally you can specify
 * key prefix as third parameter. Strings get quoted and escaped automatically.
 * Ints and floats must be typecasted.
 * You can use special values in the array:
 * - PHP NULL => SQL NULL
 * - 'NOW()' => SQL NOW()
 * The number of affected records is returned.
 *
 * @param string $table_name Table name
 * @param array $data Associative array containing data for insertion.
 * @param string $prefix Optional key prefix, e.g. 'page_' prefix will result into 'page_name' key.
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_insert($table_name, $data, $prefix = '', $conn = null)
{
    global
$sed_dbc;
   
$conn = is_null($conn) ? $sed_dbc : $conn;
    if(!
is_array($data))
    {
        return
0;
    }
   
$keys = '';
   
$vals = '';
    foreach(
$data as $key => $val)
    {
       
$keys .= "`{$prefix}$key`,";
        if(
is_null($val))
        {
           
$vals .= 'NULL,';
        }
        elseif(
$val === 'NOW()')
        {
           
$vals .= 'NOW(),';
        }
        elseif(
is_int($val) || is_float($val))
        {
           
$vals .= $val.',';
        }
        else
        {
           
$vals .= "'".mysql_real_escape_string($val, $conn)."',";
        }

    }
    if(!empty(
$keys) && !empty($vals))
    {
       
$keys = mb_substr($keys, 0, -1);
       
$vals = mb_substr($vals, 0, -1);
       
sed_sql_query("INSERT INTO `$table_name` ($keys) VALUES ($vals)", $conn);
        return
sed_sql_affectedrows($conn);
    }
    return
0;
}

/**
 * Performs simple SQL DELETE query and returns number of removed items.
 *
 * @param string $table_name Table name
 * @param string $condition Body of WHERE clause
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_delete($table_name, $condition = '', $conn = null)
{
    global
$sed_dbc;
   
$conn = is_null($conn) ? $sed_dbc : $conn;
    if(empty(
$condition))
    {
       
sed_sql_query("DELETE FROM $table_name", $conn);
    }
    else
    {
       
sed_sql_query("DELETE FROM $table_name WHERE $condition", $conn);
    }
    return
sed_sql_affectedrows($conn);
}

/**
 * Performs SQL UPDATE with simple data array. Array keys must match table keys, optionally you can specify
 * key prefix as fourth parameter. Strings get quoted and escaped automatically.
 * Ints and floats must be typecasted.
 * You can use special values in the array:
 * - PHP NULL => SQL NULL
 * - 'NOW()' => SQL NOW()
 * The number of affected records is returned.
 *
 * @param string $table_name Table name
 * @param string $condition Body of SQL WHERE clause
 * @param array $data Associative array containing data for insertion.
 * @param string $prefix Optional key prefix, e.g. 'page_' prefix will result into 'page_name' key.
 * @param resource $conn Custom connection handle
 * @return int
 */
function sed_sql_update($table_name, $condition, $data, $prefix = '', $conn = null)
{
    global
$sed_dbc;
   
$conn = is_null($conn) ? $sed_dbc : $conn;
    if(!
is_array($data))
    {
        return
0;
    }
   
$upd = '';
   
$condition = empty($condition) ? '' : 'WHERE '.$condition;
    foreach(
$data as $key => $val)
    {
       
$upd .= "`{$prefix}$key`=";
        if(
is_null($val))
        {
           
$upd .= 'NULL,';
        }
        elseif(
$val === 'NOW()')
        {
           
$upd .= 'NOW(),';
        }
        elseif(
is_int($val) || is_float($val))
        {
           
$upd .= $val.',';
        }
        else
        {
           
$upd .= "'".mysql_real_escape_string($val, $conn)."',";
        }

    }
    if(!empty(
$upd))
    {
       
$upd = mb_substr($upd, 0, -1);
       
sed_sql_query("UPDATE $table_name SET $upd $condition", $conn);
        return
sed_sql_affectedrows($conn);
    }
    return
0;
}

?>