3 use wcf\system\exception\SystemException
;
4 use wcf\system\version\VersionHandler
;
7 * Abstract class for all versionable data classes.
9 * @author Jeffrey Reichardt
10 * @copyright 2001-2014 WoltLab GmbH
11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
12 * @package com.woltlab.wcf
14 * @category Community Framework
16 abstract class VersionableDatabaseObject
extends DatabaseObject
{
18 * name of the versionable object type
21 public $versionableObjectTypeName = '';
24 * Returns suffix of the version database table.
28 public static function getDatabaseVersionTableName() {
29 return static::getDatabaseTableName().'_version';
33 * Returns name of index in version database table.
37 public static function getDatabaseVersionTableIndexName() {
42 * Returns all versions of this database object.
44 * @return array<\wcf\data\VersionableDatabaseObject>
46 public function getVersions() {
47 $objectType = VersionHandler
::getInstance()->getObjectTypeByName($this->versionableObjectTypeName
);
49 if ($objectType === null) {
50 throw new SystemException("Unknown versionable object type with name '".$this->versionableObjectTypeName
."'");
53 return VersionHandler
::getInstance()->getVersions($objectType->objectTypeID
, $this->getObjectID());