From 91a5aa244e0978e1bb4cf37cbd07f2bd4a53d12d Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Fri, 28 Dec 2012 16:25:50 +0100 Subject: [PATCH] Adds DatabaseObject::getObjectID() --- .../lib/data/AbstractDatabaseObjectAction.class.php | 5 +---- .../install/files/lib/data/DatabaseObject.class.php | 9 +++++++++ .../files/lib/data/DatabaseObjectDecorator.class.php | 11 +++++++++-- .../files/lib/data/DatabaseObjectEditor.class.php | 6 +++--- .../files/lib/data/DatabaseObjectList.class.php | 2 +- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php b/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php index 7a03c86fee..7011e4b31b 100644 --- a/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php +++ b/wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php @@ -289,13 +289,10 @@ abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction, ID $this->readObjects(); } - // get index name - $indexName = call_user_func(array($this->className, 'getDatabaseTableIndexName')); - // get ids $objectIDs = array(); foreach ($this->objects as $object) { - $objectIDs[] = $object->__get($indexName); + $objectIDs[] = $object->getObjectID(); } // execute action diff --git a/wcfsetup/install/files/lib/data/DatabaseObject.class.php b/wcfsetup/install/files/lib/data/DatabaseObject.class.php index c294d19244..3ca38d61e8 100644 --- a/wcfsetup/install/files/lib/data/DatabaseObject.class.php +++ b/wcfsetup/install/files/lib/data/DatabaseObject.class.php @@ -101,6 +101,15 @@ abstract class DatabaseObject implements IStorableObject { } } + /** + * Returns the id of the object. + * + * @return mixed + */ + public function getObjectID() { + return $this->data[static::getDatabaseTableIndexName()]; + } + /** * @see wcf\data\IStorableObject::__isset() */ diff --git a/wcfsetup/install/files/lib/data/DatabaseObjectDecorator.class.php b/wcfsetup/install/files/lib/data/DatabaseObjectDecorator.class.php index abc5de07db..54e12b6726 100644 --- a/wcfsetup/install/files/lib/data/DatabaseObjectDecorator.class.php +++ b/wcfsetup/install/files/lib/data/DatabaseObjectDecorator.class.php @@ -43,19 +43,26 @@ abstract class DatabaseObjectDecorator extends DatabaseObject { } /** - * @see wcf\data\DatabaseObject::__get() + * @see wcf\data\IStorableObject::__get() */ public function __get($name) { return $this->object->__get($name); } /** - * @see wcf\data\DatabaseObject::__isset() + * @see wcf\data\IStorableObject::__isset() */ public function __isset($name) { return $this->object->__isset($name); } + /** + * @see wcf\data\DatabaseObject::getObjectID() + */ + public function getObjectID() { + return $this->object->getObjectID(); + } + /** * Delegates inaccessible methods calls to the decorated object. * diff --git a/wcfsetup/install/files/lib/data/DatabaseObjectEditor.class.php b/wcfsetup/install/files/lib/data/DatabaseObjectEditor.class.php index f31b51a881..6906d20e2d 100644 --- a/wcfsetup/install/files/lib/data/DatabaseObjectEditor.class.php +++ b/wcfsetup/install/files/lib/data/DatabaseObjectEditor.class.php @@ -60,7 +60,7 @@ abstract class DatabaseObjectEditor extends DatabaseObjectDecorator implements I $updateSQL .= $key . ' = ?'; $statementParameters[] = $value; } - $statementParameters[] = $this->__get(static::getDatabaseTableIndexName()); + $statementParameters[] = $this->getObjectID(); $sql = "UPDATE ".static::getDatabaseTableName()." SET ".$updateSQL." @@ -82,7 +82,7 @@ abstract class DatabaseObjectEditor extends DatabaseObjectDecorator implements I $updateSQL .= $key . ' = ' . $key . ' + ?'; $statementParameters[] = $value; } - $statementParameters[] = $this->__get(static::getDatabaseTableIndexName()); + $statementParameters[] = $this->getObjectID(); $sql = "UPDATE ".static::getDatabaseTableName()." SET ".$updateSQL." @@ -95,7 +95,7 @@ abstract class DatabaseObjectEditor extends DatabaseObjectDecorator implements I * @see wcf\data\IEditableObject::delete() */ public function delete() { - static::deleteAll(array($this->__get(static::getDatabaseTableIndexName()))); + static::deleteAll(array($this->getObjectID())); } /** diff --git a/wcfsetup/install/files/lib/data/DatabaseObjectList.class.php b/wcfsetup/install/files/lib/data/DatabaseObjectList.class.php index adb014e440..e95c7c3610 100644 --- a/wcfsetup/install/files/lib/data/DatabaseObjectList.class.php +++ b/wcfsetup/install/files/lib/data/DatabaseObjectList.class.php @@ -182,7 +182,7 @@ abstract class DatabaseObjectList implements \Countable, ITraversableObject { // use table index as array index $objects = array(); foreach ($this->objects as $object) { - $objectID = $object->{$this->getDatabaseTableIndexName()}; + $objectID = $object->getObjectID(); $objects[$objectID] = $object; $this->indexToObject[] = $objectID; -- 2.20.1