Commit | Line | Data |
---|---|---|
82a7de7f K |
1 | <?php |
2 | namespace wcf\data; | |
81d722d5 | 3 | use wcf\system\exception\SystemException; |
19d3453b | 4 | use wcf\system\version\VersionHandler; |
82a7de7f K |
5 | |
6 | /** | |
7 | * Abstract class for all versionable data classes. | |
bf27dc91 K |
8 | * |
9 | * @author Jeffrey Reichardt | |
ca4ba303 | 10 | * @copyright 2001-2014 WoltLab GmbH |
bf27dc91 | 11 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
82a7de7f K |
12 | * @package com.woltlab.wcf |
13 | * @subpackage data | |
bf27dc91 | 14 | * @category Community Framework |
82a7de7f | 15 | */ |
5927c578 | 16 | abstract class VersionableDatabaseObject extends DatabaseObject { |
82a7de7f | 17 | /** |
19d3453b | 18 | * name of the versionable object type |
82a7de7f K |
19 | * @var string |
20 | */ | |
8c4f2f37 | 21 | public $versionableObjectTypeName = ''; |
82a7de7f K |
22 | |
23 | /** | |
5927c578 | 24 | * Returns suffix of the version database table. |
bf27dc91 K |
25 | * |
26 | * @return string | |
82a7de7f | 27 | */ |
14d48464 | 28 | public static function getDatabaseVersionTableName() { |
82a7de7f K |
29 | return static::getDatabaseTableName().'_version'; |
30 | } | |
31 | ||
32 | /** | |
5927c578 | 33 | * Returns name of index in version database table. |
bf27dc91 K |
34 | * |
35 | * @return string | |
82a7de7f | 36 | */ |
14d48464 | 37 | public static function getDatabaseVersionTableIndexName() { |
b013b4aa | 38 | return 'versionID'; |
82a7de7f | 39 | } |
19d3453b JR |
40 | |
41 | /** | |
5927c578 | 42 | * Returns all versions of this database object. |
19d3453b | 43 | * |
0ad90fc3 | 44 | * @return array<\wcf\data\VersionableDatabaseObject> |
19d3453b JR |
45 | */ |
46 | public function getVersions() { | |
47 | $objectType = VersionHandler::getInstance()->getObjectTypeByName($this->versionableObjectTypeName); | |
48 | ||
49 | if ($objectType === null) { | |
50 | throw new SystemException("Unknown versionable object type with name '".$this->versionableObjectTypeName."'"); | |
51 | } | |
52 | ||
53 | return VersionHandler::getInstance()->getVersions($objectType->objectTypeID, $this->getObjectID()); | |
54 | } | |
82a7de7f | 55 | } |