Skip to:
Content

bbPress.org

Changeset 954


Ignore:
Timestamp:
11/16/2007 08:18:58 PM (18 years ago)
Author:
mdawaffe
Message:

db class structure changes. both mysql and mysqli classes inherit from base class. has_cap(), db_version(), set_prefix(), is_write_query(), insert(), update() methods. updated get_table_from_query() method.

Location:
tags/0.8.3
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • tags/0.8.3/bb-admin/upgrade-schema.php

    r918 r954  
    33
    44$charset_collate = '';
     5$user_charset_collate = '';
    56
    6 if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
     7if ( !defined( 'BB_MYSQLI' ) )
     8    die( __('Database class not loaded.') );
     9
     10if ( $bbdb->has_cap( 'collation', $bbdb->forums ) ) {
    711    if ( ! empty($bbdb->charset) )
    812        $charset_collate = "DEFAULT CHARACTER SET $bbdb->charset";
    913    if ( ! empty($bbdb->collate) )
    1014        $charset_collate .= " COLLATE $bbdb->collate";
     15}
     16
     17if ( $bbdb->has_cap( 'collation', $bbdb->users ) ) {
     18    if ( ! empty($bbdb->charset) )
     19        $user_charset_collate = "DEFAULT CHARACTER SET $bbdb->charset";
     20    if ( ! empty($bbdb->collate) )
     21        $user_charset_collate .= " COLLATE $bbdb->collate";
    1122}
    1223
     
    8091  PRIMARY KEY  (ID),
    8192  UNIQUE KEY user_login (user_login)
    82 ) $charset_collate;
     93) $user_charset_collate;
    8394CREATE TABLE $bbdb->usermeta (
    8495  umeta_id bigint(20) NOT NULL auto_increment,
     
    89100  KEY user_id (user_id),
    90101  KEY meta_key (meta_key)
    91 ) $charset_collate;
     102) $user_charset_collate;
    92103CREATE TABLE $bbdb->tags (
    93104  tag_id bigint(20) unsigned NOT NULL auto_increment,
  • tags/0.8.3/bb-includes/classes.php

    r949 r954  
    286286            $fields .= ", MIN(p.post_id) as post_id";
    287287
    288             // GROUP_CONCAT requires MySQL >= 4.1
    289             if ( version_compare('4.1', mysql_get_client_info(), '<=') )
     288            if ( $bbdb->has_cap( 'GROUP_CONCAT', $bbdb->posts ) )
    290289                $fields .= ", GROUP_CONCAT(p.post_text SEPARATOR ' ') AS post_text";
    291290            else
  • tags/0.8.3/bb-includes/db-mysqli.php

    r918 r954  
    11<?php
     2define( 'BB_MYSQLI', true );
    23
    3 define('OBJECT', 'OBJECT', true);
    4 define('ARRAY_A', 'ARRAY_A', false);
    5 define('ARRAY_N', 'ARRAY_N', false);
    6 
    7 if (!defined('SAVEQUERIES'))
    8     define('SAVEQUERIES', false);
    9 
    10 class bbdb {
    11 
    12     var $show_errors = true;
    13     var $num_queries = 0;
    14     var $retries = 0;
    15     var $last_query;
    16     var $col_info;
    17     var $queries;
    18 
    19     // Our tables
    20     var $forums;
    21     var $posts;
    22     var $topics;
    23     var $users;
    24 
    25     var $charset;
    26     var $collate;
    27 
     4class bbdb extends bbdb_base {
    285    // ==================================================================
    296    //  DB Constructor - connects to the server and selects a database
    307
    318    function bbdb($dbuser, $dbpassword, $dbname, $dbhost) {
    32         if ( defined('BBDB_CHARSET') )
    33             $this->charset = BBDB_CHARSET;
    34         if ( defined('BBDB_COLLATE') )
    35             $this->collate = BBDB_COLLATE;
     9        return $this->__construct($dbuser, $dbpassword, $dbname, $dbhost);
     10    }
    3611
    37         $this->db_connect();
     12    function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
     13        return parent::__construct($dbuser, $dbpassword, $dbname, $dbhost);
     14    }
     15
     16    function __destruct() {
    3817        return true;
    39 
    4018    }
    4119
     
    7856        $this->$dbhname = @mysqli_connect( $server->host, $server->user, $server->pass, null, $server->port );
    7957
    80         if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
     58        if ( !empty($this->charset) && $this->has_cap( 'collation', $this->$dbhname ) )
    8159            $this->query("SET NAMES '$this->charset'");
    8260
     
    8664
    8765        return $this->$dbhname;
    88     }
    89 
    90     function get_table_from_query ( $q ) {
    91         If( substr( $q, -1 ) == ';' )
    92             $q = substr( $q, 0, -1 );
    93         if ( preg_match('/^\s*SELECT.*?\s+FROM\s+`?(\w+)`?\s*/is', $q, $maybe) )
    94             return $maybe[1];
    95         if ( preg_match('/^\s*UPDATE IGNORE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    96             return $maybe[1];
    97         if ( preg_match('/^\s*UPDATE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    98             return $maybe[1];
    99         if ( preg_match('/^\s*INSERT INTO\s+`?(\w+)`?\s*/is', $q, $maybe) )
    100             return $maybe[1];
    101         if ( preg_match('/^\s*INSERT IGNORE INTO\s+`?(\w+)`?\s*/is', $q, $maybe) )
    102             return $maybe[1];
    103         if ( preg_match('/^\s*REPLACE INTO\s+`?(\w+)`?\s*/is', $q, $maybe) )
    104             return $maybe[1];
    105         if ( preg_match('/^\s*DELETE\s+FROM\s+`?(\w+)`?\s*/is', $q, $maybe) )
    106             return $maybe[1];
    107         if ( preg_match('/^\s*OPTIMIZE\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    108             return $maybe[1];
    109         if ( preg_match('/^SHOW TABLE STATUS (LIKE|FROM) \'?`?(\w+)\'?`?\s*/is', $q, $maybe) )
    110             return $maybe[1];
    111         if ( preg_match('/^SHOW INDEX FROM `?(\w+)`?\s*/is', $q, $maybe) )
    112             return $maybe[1];
    113         if ( preg_match('/^\s*CREATE\s+TABLE\s+IF\s+NOT\s+EXISTS\s+`?(\w+)`?\s*/is', $q, $maybe) )
    114             return $maybe[1];
    115         if ( preg_match('/^\s*SHOW CREATE TABLE `?(\w+?)`?\s*/is', $q, $maybe) )
    116             return $maybe[1];
    117         if ( preg_match('/^SHOW CREATE TABLE (wp_[a-z0-9_]+)/is', $q, $maybe) )
    118             return $maybe[1];
    119         if ( preg_match('/^\s*CREATE\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    120             return $maybe[1];
    121         if ( preg_match('/^\s*DROP\s+TABLE\s+IF\s+EXISTS\s+`?(\w+)`?\s*/is', $q, $maybe) )
    122             return $maybe[1];
    123         if ( preg_match('/^\s*DROP\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    124             return $maybe[1];
    125         if ( preg_match('/^\s*DESCRIBE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    126             return $maybe[1];
    127         if ( preg_match('/^\s*ALTER\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    128             return $maybe[1];
    129 
    130         return false;
    13166    }
    13267
     
    13974            die('Cannot select DB.');
    14075        }
    141     }
    142 
    143     // ====================================================================
    144     //  Format a string correctly for safe insert under all PHP conditions
    145    
    146     function escape($str) {
    147         return addslashes($str);               
    148     }
    149 
    150     function escape_deep( $array ) {
    151         return is_array($array) ? array_map(array(&$this, 'escape_deep'), $array) : $this->escape( $array );
    152     }
    153 
    154     /**
    155      * Escapes content by reference for insertion into the database, for security
    156      * @param string $s
    157      */
    158     function escape_by_ref(&$s) {
    159         $s = $this->escape($s);
    160     }
    161 
    162     /**
    163      * Prepares a SQL query for safe use, using sprintf() syntax
    164      */
    165     function prepare($args=NULL) {
    166         if ( NULL === $args )
    167             return;
    168         $args = func_get_args();
    169         $query = array_shift($args);
    170         $query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
    171         $query = str_replace('"%s"', '%s', $query); // doublequote unquoting
    172         $query = str_replace('%s', "'%s'", $query); // quote the strings
    173         array_walk($args, array(&$this, 'escape_by_ref'));
    174         return @vsprintf($query, $args);
    17576    }
    17677
     
    19495            return false;   
    19596        }
    196     }
    197 
    198     // ==================================================================
    199     //  Turn error handling on or off..
    200 
    201     function show_errors() {
    202         $this->show_errors = true;
    203     }
    204    
    205     function hide_errors() {
    206         $this->show_errors = false;
    207     }
    208 
    209     // ==================================================================
    210     //  Kill cached query results
    211 
    212     function flush() {
    213         $this->last_result = null;
    214         $this->col_info = null;
    215         $this->last_query = null;
    21697    }
    21798
     
    284165    }
    285166
    286     // ==================================================================
    287     //  Get one variable from the DB - see docs for more detail
     167    // table name or mysql resource
     168    function db_version( $dbh = false ) {
     169        if ( !$dbh )
     170            $dbh = $this->forums;
    288171
    289     function get_var($query=null, $x = 0, $y = 0) {
    290         $this->func_call = "\$db->get_var(\"$query\",$x,$y)";
    291         if ( $query )
    292             $this->query($query);
     172        if ( !is_resource( $dbh ) )
     173            $dbh = $this->db_connect( "DESCRIBE $dbh" );
    293174
    294         // Extract var out of cached results based x,y vals
    295         if ( $this->last_result[$y] ) {
    296             $values = array_values(get_object_vars($this->last_result[$y]));
    297         }
    298 
    299         // If there is a value return it else return null
    300         return (isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null;
    301     }
    302 
    303     // ==================================================================
    304     //  Get one row from the DB - see docs for more detail
    305 
    306     function get_row($query = null, $output = OBJECT, $y = 0) {
    307         $this->func_call = "\$db->get_row(\"$query\",$output,$y)";
    308         if ( $query )
    309             $this->query($query);
    310 
    311         if ( $output == OBJECT ) {
    312             return $this->last_result[$y] ? $this->last_result[$y] : null;
    313         } elseif ( $output == ARRAY_A ) {
    314             return $this->last_result[$y] ? get_object_vars($this->last_result[$y]) : null;
    315         } elseif ( $output == ARRAY_N ) {
    316             return $this->last_result[$y] ? array_values(get_object_vars($this->last_result[$y])) : null;
    317         } else {
    318             $this->print_error(" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N");
    319         }
    320     }
    321 
    322     // ==================================================================
    323     //  Function to get 1 column from the cached result set based in X index
    324     // se docs for usage and info
    325 
    326     function get_col($query = null , $x = 0) {
    327         if ( $query )
    328             $this->query($query);
    329 
    330         // Extract the column values
    331         for ( $i=0; $i < count($this->last_result); $i++ ) {
    332             $new_array[$i] = $this->get_var(null, $x, $i);
    333         }
    334         return $new_array;
    335     }
    336 
    337     // ==================================================================
    338     // Return the the query as a result set - see docs for more details
    339 
    340     function get_results($query = null, $output = OBJECT) {
    341         $this->func_call = "\$db->get_results(\"$query\", $output)";
    342 
    343         if ( $query )
    344             $this->query($query);
    345 
    346         // Send back array of objects. Each row is an object
    347         if ( $output == OBJECT ) {
    348             return $this->last_result;
    349         } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
    350             if ( $this->last_result ) {
    351                 $i = 0;
    352                 foreach( $this->last_result as $row ) {
    353                     $new_array[$i] = (array) $row;
    354                     if ( $output == ARRAY_N ) {
    355                         $new_array[$i] = array_values($new_array[$i]);
    356                     }
    357                     $i++;
    358                 }
    359                 return $new_array;
    360             } else {
    361                 return null;
    362             }
    363         }
    364     }
    365 
    366 
    367     // ==================================================================
    368     // Function to get column meta data info pertaining to the last query
    369     // see docs for more info and usage
    370 
    371     function get_col_info($info_type = 'name', $col_offset = -1) {
    372         if ( $this->col_info ) {
    373             if ( $col_offset == -1 ) {
    374                 $i = 0;
    375                 foreach($this->col_info as $col ) {
    376                     $new_array[$i] = $col->{$info_type};
    377                     $i++;
    378                 }
    379                 return $new_array;
    380             } else {
    381                 return $this->col_info[$col_offset]->{$info_type};
    382             }
    383         }
    384     }
    385 
    386     function timer_start() {
    387         $mtime = microtime();
    388         $mtime = explode(' ', $mtime);
    389         $this->time_start = $mtime[1] + $mtime[0];
    390         return true;
    391     }
    392    
    393     function timer_stop($precision = 3) {
    394         $mtime = microtime();
    395         $mtime = explode(' ', $mtime);
    396         $time_end = $mtime[1] + $mtime[0];
    397         $time_total = $time_end - $this->time_start;
    398         return $time_total;
    399     }
    400 
    401     function bail($message) { // Just wraps errors in a nice header and footer
    402     if ( !$this->show_errors )
    403         return false;
    404     echo <<<HEAD
    405     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    406     <html xmlns="http://www.w3.org/1999/xhtml">
    407     <head>
    408         <title>bbPress &rsaquo; Error</title>
    409         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    410         <style media="screen" type="text/css">
    411         <!--
    412         html {
    413             background: #eee;
    414         }
    415         body {
    416             background: #fff;
    417             color: #000;
    418             font-family: Georgia, "Times New Roman", Times, serif;
    419             margin-left: 25%;
    420             margin-right: 25%;
    421             padding: .2em 2em;
    422         }
    423        
    424         h1 {
    425             color: #006;
    426             font-size: 18px;
    427             font-weight: lighter;
    428         }
    429        
    430         h2 {
    431             font-size: 16px;
    432         }
    433        
    434         p, li, dt {
    435             line-height: 140%;
    436             padding-bottom: 2px;
    437         }
    438    
    439         ul, ol {
    440             padding: 5px 5px 5px 20px;
    441         }
    442         #logo {
    443             margin-bottom: 2em;
    444         }
    445         -->
    446         </style>
    447     </head>
    448     <body>
    449     <h1 id="logo"><img alt="bbPress" src="http://bbpress.org/bbpress.png" /></h1>
    450 HEAD;
    451     echo $message;
    452     echo "</body></html>";
    453     die();
     175        return mysqli_get_server_info( $dbh );
    454176    }
    455177}
  • tags/0.8.3/bb-includes/db.php

    r918 r954  
    11<?php
     2define( 'BB_MYSQLI', false );
    23
    3 define('OBJECT', 'OBJECT', true);
    4 define('ARRAY_A', 'ARRAY_A', false);
    5 define('ARRAY_N', 'ARRAY_N', false);
    6 
    7 if (!defined('SAVEQUERIES'))
    8     define('SAVEQUERIES', false);
    9 
    10 class bbdb {
    11 
    12     var $show_errors = true;
    13     var $num_queries = 0;
    14     var $retries = 0;
    15     var $last_query;
    16     var $col_info;
    17     var $queries;
    18 
    19     // Our tables
    20     var $forums;
    21     var $posts;
    22     var $topics;
    23     var $users;
    24 
    25     var $charset;
    26     var $collate;
    27 
     4class bbdb extends bbdb_base {
    285    // ==================================================================
    296    //  DB Constructor - connects to the server and selects a database
    307
    318    function bbdb($dbuser, $dbpassword, $dbname, $dbhost) {
    32         if ( defined('BBDB_CHARSET') )
    33             $this->charset = BBDB_CHARSET;
    34         if ( defined('BBDB_COLLATE') )
    35             $this->collate = BBDB_COLLATE;
     9        return $this->__construct($dbuser, $dbpassword, $dbname, $dbhost);
     10    }
    3611
    37         $this->db_connect();
     12    function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
     13        return parent::__construct($dbuser, $dbpassword, $dbname, $dbhost);
     14    }
     15
     16    function __destruct() {
    3817        return true;
    39 
    4018    }
    4119
     
    7149        $this->$dbhname = @mysql_connect( $server->host, $server->user, $server->pass, true ); 
    7250
    73         if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
     51        if ( !empty($this->charset) && $this->has_cap( 'collation', $this->$dbhname ) )
    7452            $this->query("SET NAMES '$this->charset'");
    7553
     
    7957
    8058        return $this->$dbhname;
    81     }
    82 
    83     function get_table_from_query ( $q ) {
    84         If( substr( $q, -1 ) == ';' )
    85             $q = substr( $q, 0, -1 );
    86         if ( preg_match('/^\s*SELECT.*?\s+FROM\s+`?(\w+)`?\s*/is', $q, $maybe) )
    87             return $maybe[1];
    88         if ( preg_match('/^\s*UPDATE IGNORE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    89             return $maybe[1];
    90         if ( preg_match('/^\s*UPDATE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    91             return $maybe[1];
    92         if ( preg_match('/^\s*INSERT INTO\s+`?(\w+)`?\s*/is', $q, $maybe) )
    93             return $maybe[1];
    94         if ( preg_match('/^\s*INSERT IGNORE INTO\s+`?(\w+)`?\s*/is', $q, $maybe) )
    95             return $maybe[1];
    96         if ( preg_match('/^\s*REPLACE INTO\s+`?(\w+)`?\s*/is', $q, $maybe) )
    97             return $maybe[1];
    98         if ( preg_match('/^\s*DELETE\s+FROM\s+`?(\w+)`?\s*/is', $q, $maybe) )
    99             return $maybe[1];
    100         if ( preg_match('/^\s*OPTIMIZE\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    101             return $maybe[1];
    102         if ( preg_match('/^SHOW TABLE STATUS (LIKE|FROM) \'?`?(\w+)\'?`?\s*/is', $q, $maybe) )
    103             return $maybe[1];
    104         if ( preg_match('/^SHOW INDEX FROM `?(\w+)`?\s*/is', $q, $maybe) )
    105             return $maybe[1];
    106         if ( preg_match('/^\s*CREATE\s+TABLE\s+IF\s+NOT\s+EXISTS\s+`?(\w+)`?\s*/is', $q, $maybe) )
    107             return $maybe[1];
    108         if ( preg_match('/^\s*SHOW CREATE TABLE `?(\w+?)`?\s*/is', $q, $maybe) )
    109             return $maybe[1];
    110         if ( preg_match('/^SHOW CREATE TABLE (wp_[a-z0-9_]+)/is', $q, $maybe) )
    111             return $maybe[1];
    112         if ( preg_match('/^\s*CREATE\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    113             return $maybe[1];
    114         if ( preg_match('/^\s*DROP\s+TABLE\s+IF\s+EXISTS\s+`?(\w+)`?\s*/is', $q, $maybe) )
    115             return $maybe[1];
    116         if ( preg_match('/^\s*DROP\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    117             return $maybe[1];
    118         if ( preg_match('/^\s*DESCRIBE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    119             return $maybe[1];
    120         if ( preg_match('/^\s*ALTER\s+TABLE\s+`?(\w+)`?\s*/is', $q, $maybe) )
    121             return $maybe[1];
    122 
    123         return false;
    12459    }
    12560
     
    13267            die('Cannot select DB.');
    13368        }
    134     }
    135 
    136     // ====================================================================
    137     //  Format a string correctly for safe insert under all PHP conditions
    138    
    139     function escape($str) {
    140         return addslashes($str);               
    141     }
    142 
    143     function escape_deep( $array ) {
    144         return is_array($array) ? array_map(array(&$this, 'escape_deep'), $array) : $this->escape( $array );
    145     }
    146 
    147     /**
    148      * Escapes content by reference for insertion into the database, for security
    149      * @param string $s
    150      */
    151     function escape_by_ref(&$s) {
    152         $s = $this->escape($s);
    153     }
    154 
    155     /**
    156      * Prepares a SQL query for safe use, using sprintf() syntax
    157      */
    158     function prepare($args=NULL) {
    159         if ( NULL === $args )
    160             return;
    161         $args = func_get_args();
    162         $query = array_shift($args);
    163         $query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
    164         $query = str_replace('"%s"', '%s', $query); // doublequote unquoting
    165         $query = str_replace('%s', "'%s'", $query); // quote the strings
    166         array_walk($args, array(&$this, 'escape_by_ref'));
    167         return @vsprintf($query, $args);
    16869    }
    16970
     
    18788            return false;   
    18889        }
    189     }
    190 
    191     // ==================================================================
    192     //  Turn error handling on or off..
    193 
    194     function show_errors() {
    195         $this->show_errors = true;
    196     }
    197    
    198     function hide_errors() {
    199         $this->show_errors = false;
    200     }
    201 
    202     // ==================================================================
    203     //  Kill cached query results
    204 
    205     function flush() {
    206         $this->last_result = null;
    207         $this->col_info = null;
    208         $this->last_query = null;
    20990    }
    21091
     
    277158    }
    278159
    279     // ==================================================================
    280     //  Get one variable from the DB - see docs for more detail
     160    // table name or mysql resource
     161    function db_version( $dbh = false ) {
     162        if ( !$dbh )
     163            $dbh = $this->forums;
    281164
    282     function get_var($query=null, $x = 0, $y = 0) {
    283         $this->func_call = "\$db->get_var(\"$query\",$x,$y)";
    284         if ( $query )
    285             $this->query($query);
     165        if ( !is_resource( $dbh ) )
     166            $dbh = $this->db_connect( "DESCRIBE $dbh" );
    286167
    287         // Extract var out of cached results based x,y vals
    288         if ( $this->last_result[$y] ) {
    289             $values = array_values(get_object_vars($this->last_result[$y]));
    290         }
    291 
    292         // If there is a value return it else return null
    293         return (isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null;
    294     }
    295 
    296     // ==================================================================
    297     //  Get one row from the DB - see docs for more detail
    298 
    299     function get_row($query = null, $output = OBJECT, $y = 0) {
    300         $this->func_call = "\$db->get_row(\"$query\",$output,$y)";
    301         if ( $query )
    302             $this->query($query);
    303 
    304         if ( $output == OBJECT ) {
    305             return $this->last_result[$y] ? $this->last_result[$y] : null;
    306         } elseif ( $output == ARRAY_A ) {
    307             return $this->last_result[$y] ? get_object_vars($this->last_result[$y]) : null;
    308         } elseif ( $output == ARRAY_N ) {
    309             return $this->last_result[$y] ? array_values(get_object_vars($this->last_result[$y])) : null;
    310         } else {
    311             $this->print_error(" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N");
    312         }
    313     }
    314 
    315     // ==================================================================
    316     //  Function to get 1 column from the cached result set based in X index
    317     // se docs for usage and info
    318 
    319     function get_col($query = null , $x = 0) {
    320         if ( $query )
    321             $this->query($query);
    322 
    323         // Extract the column values
    324         for ( $i=0; $i < count($this->last_result); $i++ ) {
    325             $new_array[$i] = $this->get_var(null, $x, $i);
    326         }
    327         return $new_array;
    328     }
    329 
    330     // ==================================================================
    331     // Return the the query as a result set - see docs for more details
    332 
    333     function get_results($query = null, $output = OBJECT) {
    334         $this->func_call = "\$db->get_results(\"$query\", $output)";
    335 
    336         if ( $query )
    337             $this->query($query);
    338 
    339         // Send back array of objects. Each row is an object
    340         if ( $output == OBJECT ) {
    341             return $this->last_result;
    342         } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
    343             if ( $this->last_result ) {
    344                 $i = 0;
    345                 foreach( $this->last_result as $row ) {
    346                     $new_array[$i] = (array) $row;
    347                     if ( $output == ARRAY_N ) {
    348                         $new_array[$i] = array_values($new_array[$i]);
    349                     }
    350                     $i++;
    351                 }
    352                 return $new_array;
    353             } else {
    354                 return null;
    355             }
    356         }
    357     }
    358 
    359 
    360     // ==================================================================
    361     // Function to get column meta data info pertaining to the last query
    362     // see docs for more info and usage
    363 
    364     function get_col_info($info_type = 'name', $col_offset = -1) {
    365         if ( $this->col_info ) {
    366             if ( $col_offset == -1 ) {
    367                 $i = 0;
    368                 foreach($this->col_info as $col ) {
    369                     $new_array[$i] = $col->{$info_type};
    370                     $i++;
    371                 }
    372                 return $new_array;
    373             } else {
    374                 return $this->col_info[$col_offset]->{$info_type};
    375             }
    376         }
    377     }
    378 
    379     function timer_start() {
    380         $mtime = microtime();
    381         $mtime = explode(' ', $mtime);
    382         $this->time_start = $mtime[1] + $mtime[0];
    383         return true;
    384     }
    385    
    386     function timer_stop($precision = 3) {
    387         $mtime = microtime();
    388         $mtime = explode(' ', $mtime);
    389         $time_end = $mtime[1] + $mtime[0];
    390         $time_total = $time_end - $this->time_start;
    391         return $time_total;
    392     }
    393 
    394     function bail($message) { // Just wraps errors in a nice header and footer
    395     if ( !$this->show_errors )
    396         return false;
    397     echo <<<HEAD
    398     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    399     <html xmlns="http://www.w3.org/1999/xhtml">
    400     <head>
    401         <title>bbPress &rsaquo; Error</title>
    402         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    403         <style media="screen" type="text/css">
    404         <!--
    405         html {
    406             background: #eee;
    407         }
    408         body {
    409             background: #fff;
    410             color: #000;
    411             font-family: Georgia, "Times New Roman", Times, serif;
    412             margin-left: 25%;
    413             margin-right: 25%;
    414             padding: .2em 2em;
    415         }
    416        
    417         h1 {
    418             color: #006;
    419             font-size: 18px;
    420             font-weight: lighter;
    421         }
    422        
    423         h2 {
    424             font-size: 16px;
    425         }
    426        
    427         p, li, dt {
    428             line-height: 140%;
    429             padding-bottom: 2px;
    430         }
    431    
    432         ul, ol {
    433             padding: 5px 5px 5px 20px;
    434         }
    435         #logo {
    436             margin-bottom: 2em;
    437         }
    438         -->
    439         </style>
    440     </head>
    441     <body>
    442     <h1 id="logo"><img alt="bbPress" src="http://bbpress.org/bbpress.png" /></h1>
    443 HEAD;
    444     echo $message;
    445     echo "</body></html>";
    446     die();
     168        return mysql_get_server_info( $dbh );
    447169    }
    448170}
  • tags/0.8.3/bb-settings.php

    r924 r954  
    99if ( !$bb_table_prefix )
    1010    die('You must specify a table prefix in your <code>config.php</code> file.');
    11 
    12 if ( preg_match('/[^A-Za-z0-9_]/', $bb_table_prefix) )
    13     die('Your table prefix may only contain letters, numbers and underscores.');
    1411
    1512if ( !defined('BBPATH') )
     
    8885    define('BBTHEMEURL', $bb->uri . 'my-templates/');
    8986
     87require( BBPATH . BBINC . 'db-base.php');
    9088if ( extension_loaded('mysqli') ) {
    9189    require( BBPATH . BBINC . 'db-mysqli.php');
     
    9492}
    9593
    96 $bbdb->forums    = $bb_table_prefix . 'forums';
    97 $bbdb->posts     = $bb_table_prefix . 'posts';
    98 $bbdb->topics    = $bb_table_prefix . 'topics';
    99 $bbdb->topicmeta = $bb_table_prefix . 'topicmeta';
    100 $bbdb->users     = ( $bb->wp_table_prefix ? $bb->wp_table_prefix : $bb_table_prefix ) . 'users';
    101 $bbdb->usermeta  = ( $bb->wp_table_prefix ? $bb->wp_table_prefix : $bb_table_prefix ) . 'usermeta';
    102 $bbdb->tags      = $bb_table_prefix . 'tags';
    103 $bbdb->tagged    = $bb_table_prefix . 'tagged';
     94require( BBPATH . BBINC . 'compat.php');
     95require( BBPATH . BBINC . 'wp-functions.php');
     96require( BBPATH . BBINC . 'functions.php');
     97require( BBPATH . BBINC . 'wp-classes.php');
     98require( BBPATH . BBINC . 'classes.php');
     99
     100if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) )
     101    die('Your table prefix may only contain letters, numbers and underscores.');
    104102
    105103foreach ( array('use_cache', 'secret', 'debug', 'wp_table_prefix', 'wp_home', 'wp_siteurl', 'cookiedomain', 'static_title', 'load_options', 'akismet_key') as $o )
     
    113111unset($i);
    114112
    115 require( BBPATH . BBINC . 'functions.php');
    116 require( BBPATH . BBINC . 'wp-classes.php');
    117 require( BBPATH . BBINC . 'classes.php');
    118113require( BBPATH . BBINC . 'formatting-functions.php');
    119114require( BBPATH . BBINC . 'template-functions.php');
     
    121116require( BBPATH . BBINC . 'cache.php');
    122117require( BBPATH . BBINC . 'deprecated.php');
    123 require( BBPATH . BBINC . 'wp-functions.php');
    124118if ( defined('BBLANG') && '' != constant('BBLANG') ) {
    125119    include_once(BBPATH . BBINC . 'streams.php');
     
    134128require( BBPATH . BBINC . 'default-filters.php');
    135129require( BBPATH . BBINC . 'script-loader.php');
    136 require( BBPATH . BBINC . 'compat.php');
    137130
    138131if ( !bb_is_installed() && false === strpos($_SERVER['PHP_SELF'], 'install.php') && !defined('BB_INSTALLING') )
Note: See TracChangeset for help on using the changeset viewer.