<?php
/**
+ * @defgroup Database Database
+ *
+ * @file
+ * @ingroup Database
* This file deals with MySQL interface functions
* and query specifics/optimisations
*/
/**
* Database abstraction object
- * @addtogroup Database
+ * @ingroup Database
*/
class Database {
return $this->$name;
}
+ function getWikiID() {
+ if( $this->mTablePrefix ) {
+ return "{$this->mDBname}-{$this->mTablePrefix}";
+ } else {
+ return $this->mDBname;
+ }
+ }
+
#------------------------------------------------------------------------------
# Other functions
#------------------------------------------------------------------------------
*/
function select( $table, $vars, $conds='', $fname = 'Database::select', $options = array(), $join_conds = array() )
{
+ $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
+ return $this->query( $sql, $fname );
+ }
+
+ /**
+ * SELECT wrapper
+ *
+ * @param mixed $table Array or string, table name(s) (prefix auto-added)
+ * @param mixed $vars Array or string, field name(s) to be retrieved
+ * @param mixed $conds Array or string, condition(s) for WHERE
+ * @param string $fname Calling function name (use __METHOD__) for logs/profiling
+ * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
+ * see Database::makeSelectOptions code for list of supported stuff
+ * @param array $join_conds Associative array of table join conditions (optional)
+ * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+ * @return string, the SQL text
+ */
+ function selectSQLText( $table, $vars, $conds='', $fname = 'Database::select', $options = array(), $join_conds = array() ) {
if( is_array( $vars ) ) {
$vars = implode( ',', $vars );
}
if (isset($options['EXPLAIN'])) {
$sql = 'EXPLAIN ' . $sql;
}
- return $this->query( $sql, $fname );
+ return $sql;
}
/**
*
* @todo migrate documentation to phpdocumentor format
*/
- function selectRow( $table, $vars, $conds, $fname = 'Database::selectRow', $options = array() ) {
+ function selectRow( $table, $vars, $conds, $fname = 'Database::selectRow', $options = array(), $join_conds = array() ) {
$options['LIMIT'] = 1;
- $res = $this->select( $table, $vars, $conds, $fname, $options );
+ $res = $this->select( $table, $vars, $conds, $fname, $options, $join_conds );
if ( $res === false )
return false;
if ( !$this->numRows($res) ) {
* Database abstraction object for mySQL
* Inherit all methods and properties of Database::Database()
*
- * @addtogroup Database
+ * @ingroup Database
* @see Database
*/
class DatabaseMysql extends Database {
/**
* Utility class.
- * @addtogroup Database
+ * @ingroup Database
*/
class DBObject {
public $mData;
/**
* Utility class
- * @addtogroup Database
+ * @ingroup Database
*
* This allows us to distinguish a blob from a normal string and an array of strings
*/
/**
* Utility class.
- * @addtogroup Database
+ * @ingroup Database
*/
class MySQLField {
private $name, $tablename, $default, $max_length, $nullable,
/**
* Database error base class
- * @addtogroup Database
+ * @ingroup Database
*/
class DBError extends MWException {
public $db;
}
/**
- * @addtogroup Database
+ * @ingroup Database
*/
class DBConnectionError extends DBError {
public $error;
}
/**
- * @addtogroup Database
+ * @ingroup Database
*/
class DBQueryError extends DBError {
public $error, $errno, $sql, $fname;
}
/**
- * @addtogroup Database
+ * @ingroup Database
*/
class DBUnexpectedError extends DBError {}
/**
* Result wrapper for grabbing data queried by someone else
- * @addtogroup Database
+ * @ingroup Database
*/
class ResultWrapper implements Iterator {
var $db, $result, $pos = 0, $currentRow = null;