/**
* Basic implementation for object editors following the decorator pattern.
- *
+ *
* @author Marcel Werk
- * @copyright 2001-2011 WoltLab GmbH
+ * @copyright 2001-2014 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @package com.woltlab.wcf
* @subpackage data
- * @category Community Framework
+ * @category Community Framework
*/
abstract class DatabaseObjectEditor extends DatabaseObjectDecorator implements IEditableObject {
/**
- * @see wcf\data\IEditableObject::create()
+ * @see \wcf\data\IEditableObject::create()
*/
public static function create(array $parameters = array()) {
$keys = $values = '';
}
/**
- * @see wcf\data\IEditableObject::update()
+ * @see \wcf\data\IEditableObject::update()
*/
public function update(array $parameters = array()) {
- if (!count($parameters)) return;
-
- // check whether any value changed or not
- $update = false;
- foreach ($parameters as $name => $value) {
- if ($this->__get($name) != $value) {
- $update = true;
- break;
- }
- }
-
- // there is no new data - break to avoid senseless sql queries
- if (!$update) return;
+ if (empty($parameters)) return;
$updateSQL = '';
$statementParameters = array();
$updateSQL .= $key . ' = ?';
$statementParameters[] = $value;
}
- $statementParameters[] = $this->__get(static::getDatabaseTableIndexName());
+ $statementParameters[] = $this->getObjectID();
$sql = "UPDATE ".static::getDatabaseTableName()."
SET ".$updateSQL."
}
/**
- * @see wcf\data\IEditableObject::updateCounters()
+ * @see \wcf\data\IEditableObject::updateCounters()
*/
public function updateCounters(array $counters = array()) {
- if (!count($counters)) return;
+ if (empty($counters)) return;
$updateSQL = '';
$statementParameters = array();
$updateSQL .= $key . ' = ' . $key . ' + ?';
$statementParameters[] = $value;
}
- $statementParameters[] = $this->__get(static::getDatabaseTableIndexName());
+ $statementParameters[] = $this->getObjectID();
$sql = "UPDATE ".static::getDatabaseTableName()."
SET ".$updateSQL."
}
/**
- * @see wcf\data\IEditableObject::delete()
+ * @see \wcf\data\IEditableObject::delete()
*/
public function delete() {
- static::deleteAll(array($this->__get(static::getDatabaseTableIndexName())));
+ static::deleteAll(array($this->getObjectID()));
}
/**
- * @see wcf\data\IEditableObject::deleteAll()
+ * @see \wcf\data\IEditableObject::deleteAll()
*/
public static function deleteAll(array $objectIDs = array()) {
$sql = "DELETE FROM ".static::getDatabaseTableName()."