3 namespace wcf\data\moderation\queue
;
5 use wcf\system\cache\runtime\UserProfileRuntimeCache
;
6 use wcf\system\moderation\queue\ModerationQueueManager
;
10 * Represents a viewable list of moderation queue entries.
12 * WARNING: This database object list uses the moderation_queue_to_user table as primary
13 * table and uses a full join for moderation_queue, otherwise the LEFT JOIN
14 * would not work (MySQL is retarded).
16 * @author Alexander Ebert
17 * @copyright 2001-2019 WoltLab GmbH
18 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
19 * @package WoltLabSuite\Core\Data\Moderation\Queue
21 * @method ViewableModerationQueue current()
22 * @method ViewableModerationQueue[] getObjects()
23 * @method ViewableModerationQueue|null search($objectID)
24 * @property ViewableModerationQueue[] $objects
26 class ViewableModerationQueueList
extends ModerationQueueList
31 public $decoratorClassName = ViewableModerationQueue
::class;
36 public $useQualifiedShorthand = false;
41 public function __construct()
43 parent
::__construct();
45 $this->sqlSelects
= "moderation_queue.*, assigned_user.username AS assignedUsername, user_table.username";
46 $this->sqlConditionJoins
= ", wcf" . WCF_N
. "_moderation_queue moderation_queue";
47 $this->sqlJoins
= ", wcf" . WCF_N
. "_moderation_queue moderation_queue";
49 LEFT JOIN wcf" . WCF_N
. "_user assigned_user
50 ON assigned_user.userID = moderation_queue.assignedUserID
51 LEFT JOIN wcf" . WCF_N
. "_user user_table
52 ON user_table.userID = moderation_queue.userID";
53 $this->getConditionBuilder()->add("moderation_queue_to_user.queueID = moderation_queue.queueID");
54 $this->getConditionBuilder()->add("moderation_queue_to_user.userID = ?", [WCF
::getUser()->userID
]);
55 $this->getConditionBuilder()->add("moderation_queue_to_user.isAffected = ?", [1]);
61 public function readObjects()
63 parent
::readObjects();
65 if (!empty($this->objects
)) {
67 foreach ($this->objects
as $object) {
68 if (!isset($objects[$object->objectTypeID
])) {
69 $objects[$object->objectTypeID
] = [];
72 $objects[$object->objectTypeID
][] = $object;
75 foreach ($objects as $objectTypeID => $queueItems) {
76 ModerationQueueManager
::getInstance()->populate($objectTypeID, $queueItems);
79 // check for non-existent items
81 foreach ($this->objects
as $index => $object) {
82 if ($object->isOrphaned()) {
83 $queueIDs[] = $object->queueID
;
84 unset($this->objects
[$index]);
88 // remove orphaned queues
89 if (!empty($queueIDs)) {
90 $this->indexToObject
= \array_keys
($this->objects
);
92 ModerationQueueManager
::getInstance()->removeOrphans($queueIDs);
96 foreach ($this->objects
as $object) {
97 $userIDs[] = $object->getAffectedObject()->getUserID();
98 if ($object->assignedUserID
) {
99 $userIDs[] = $object->assignedUserID
;
103 UserProfileRuntimeCache
::getInstance()->cacheObjectIDs(\array_unique
($userIDs));
108 * Returns the name of the database table.
112 public function getDatabaseTableName()
114 return parent
::getDatabaseTableName() . '_to_user';
118 * Returns the name of the database table alias.
122 public function getDatabaseTableAlias()
124 return parent
::getDatabaseTableAlias() . '_to_user';