Added detailed list of received/given likes in user profiles
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / VersionableDatabaseObject.class.php
1 <?php
2 namespace wcf\data;
3 use wcf\system\exception\SystemException;
4 use wcf\system\version\VersionHandler;
5
6 /**
7 * Abstract class for all versionable data classes.
8 *
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
13 * @subpackage data
14 * @category Community Framework
15 */
16 abstract class VersionableDatabaseObject extends DatabaseObject {
17 /**
18 * name of the versionable object type
19 * @var string
20 */
21 public $versionableObjectTypeName = '';
22
23 /**
24 * Returns suffix of the version database table.
25 *
26 * @return string
27 */
28 public static function getDatabaseVersionTableName() {
29 return static::getDatabaseTableName().'_version';
30 }
31
32 /**
33 * Returns name of index in version database table.
34 *
35 * @return string
36 */
37 public static function getDatabaseVersionTableIndexName() {
38 return 'versionID';
39 }
40
41 /**
42 * Returns all versions of this database object.
43 *
44 * @return array<\wcf\data\VersionableDatabaseObject>
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 }
55 }