* aims to be both simple and very flexible. It is centered around an associative
* array of fields and various methods to do common interaction with the database.
*
+ * Documentation inline and at https://www.mediawiki.org/wiki/Manual:ORMTable
+ *
* 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
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * These methods are likely candidates for overriding:
- * * getDefaults
- * * remove
- * * insert
- * * saveExisting
- * * loadSummaryFields
- * * getSummaryFields
- *
- * Main instance methods:
- * * getField(s)
- * * setField(s)
- * * save
- * * remove
- *
- * Main static methods:
- * * select
- * * update
- * * delete
- * * count
- * * has
- * * selectRow
- * * selectFields
- * * selectFieldsRow
- *
* @since 1.20
*
* @file ORMRow.php
+ * @ingroup ORM
*
* @licence GNU GPL v2 or later
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
-abstract class ORMRow {
+abstract class ORMRow implements IORMRow {
/**
* The fields of the object.
*
* @since 1.20
*
- * @param ORMTable $table
+ * @param IORMTable $table
* @param array|null $fields
* @param boolean $loadDefaults
*/
- public function __construct( ORMTable $table, $fields = null, $loadDefaults = false ) {
+ public function __construct( IORMTable $table, $fields = null, $loadDefaults = false ) {
$this->table = $table;
if ( !is_array( $fields ) ) {
/**
* Load the default values, via getDefaults.
*
- * @since 1.20
+ * @since 1.20
*
* @param boolean $override
*/
is_null( $functionName ) ? __METHOD__ : $functionName
);
- return $success;
+ // DatabaseBase::update does not always return true for success as documented...
+ return $success !== false;
}
/**
protected function insert( $functionName = null, array $options = null ) {
$dbw = wfGetDB( DB_MASTER );
- $result = $dbw->insert(
+ $success = $dbw->insert(
$this->table->getName(),
$this->getWriteValues(),
is_null( $functionName ) ? __METHOD__ : $functionName,
is_null( $options ) ? array( 'IGNORE' ) : $options
);
- if ( $result ) {
+ // DatabaseBase::insert does not always return true for success as documented...
+ $success = $success !== false;
+
+ if ( $success ) {
$this->setField( 'id', $dbw->insertId() );
}
- return $result;
+ return $success;
}
/**
$success = $this->table->delete( array( 'id' => $this->getId() ) );
+ // DatabaseBase::delete does not always return true for success as documented...
+ $success = $success !== false;
+
if ( $success ) {
$this->onRemoved();
}
/**
* Add an amount (can be negative) to the specified field (needs to be numeric).
+ * TODO: most off this stuff makes more sense in the table class
*
* @since 1.20
*
*
* @since 1.20
*
- * @param ORMRow $object
+ * @param IORMRow $object
* @param boolean|array $excludeSummaryFields
* When set to true, summary field changes are ignored.
* Can also be an array of fields to ignore.
*
* @return boolean
*/
- protected function fieldsChanged( ORMRow $object, $excludeSummaryFields = false ) {
+ protected function fieldsChanged( IORMRow $object, $excludeSummaryFields = false ) {
$exclusionFields = array();
if ( $excludeSummaryFields !== false ) {
}
/**
- * Returns the table this ORMRow is a row in.
+ * Returns the table this IORMRow is a row in.
*
* @since 1.20
*
- * @return ORMTable
+ * @return IORMTable
*/
public function getTable() {
return $this->table;