Added detailed list of received/given likes in user profiles
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / VersionableDatabaseObject.class.php
CommitLineData
82a7de7f
K
1<?php
2namespace wcf\data;
81d722d5 3use wcf\system\exception\SystemException;
19d3453b 4use 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 16abstract 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}