2 declare(strict_types=1);
3 namespace wcf\system\user\notification\event;
4 use wcf\data\moderation\queue\ModerationQueue;
5 use wcf\data\object\type\ObjectTypeCache;
6 use wcf\data\user\UserProfile;
7 use wcf\system\moderation\queue\ModerationQueueManager;
8 use wcf\system\moderation\queue\ModerationQueueReportManager;
12 * Provides a method to create a moderation queue entry for testing user notification
15 * @author Matthias Schmidt
16 * @copyright 2001-2018 WoltLab GmbH
17 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
18 * @package WoltLabSuite\Core\System\User\Notification\Event
21 trait TTestableModerationQueueUserNotificationEvent {
23 * Creates a moderation queue entry for a reported user.
25 * @param UserProfile $reportedUser
26 * @param UserProfile $reportingUser
27 * @return ModerationQueue
29 public static function getTestUserModerationQueueEntry(UserProfile $reportedUser, UserProfile $reportingUser) {
30 $objectTypeID = ModerationQueueReportManager::getInstance()->getObjectTypeID('com.woltlab.wcf.user');
32 $originalUser = WCF::getUser();
33 WCF::getSession()->changeUser($reportingUser->getDecoratedObject(), true);
35 ModerationQueueReportManager::getInstance()->addReport(
36 ObjectTypeCache::getInstance()->getObjectType($objectTypeID)->objectType,
37 $reportedUser->userID,
41 WCF::getSession()->changeUser($originalUser, true);
44 FROM wcf" . WCF_N . "_moderation_queue
45 WHERE objectTypeID = ?
47 $statement = WCF::getDB()->prepareStatement($sql);
48 $statement->execute([$objectTypeID, $reportedUser->userID]);
50 $moderationQueue = $statement->fetchObject(ModerationQueue::class);
52 ModerationQueueManager::getInstance()->setAssignment([$moderationQueue->queueID => true]);
54 return $moderationQueue;