7ab747267ac21a979b5f15112c1d33d697e5e792
[GitHub/WoltLab/WCF.git] /
1 <?php
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;
9 use wcf\system\WCF;
10
11 /**
12 * Provides a method to create a moderation queue entry for testing user notification
13 * events.
14 *
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
19 * @since 3.1
20 */
21 trait TTestableModerationQueueUserNotificationEvent {
22 /**
23 * Creates a moderation queue entry for a reported user.
24 *
25 * @param UserProfile $reportedUser
26 * @param UserProfile $reportingUser
27 * @return ModerationQueue
28 */
29 public static function getTestUserModerationQueueEntry(UserProfile $reportedUser, UserProfile $reportingUser) {
30 $objectTypeID = ModerationQueueReportManager::getInstance()->getObjectTypeID('com.woltlab.wcf.user');
31
32 $originalUser = WCF::getUser();
33 WCF::getSession()->changeUser($reportingUser->getDecoratedObject(), true);
34
35 ModerationQueueReportManager::getInstance()->addReport(
36 ObjectTypeCache::getInstance()->getObjectType($objectTypeID)->objectType,
37 $reportedUser->userID,
38 'Report Message'
39 );
40
41 WCF::getSession()->changeUser($originalUser, true);
42
43 $sql = "SELECT *
44 FROM wcf" . WCF_N . "_moderation_queue
45 WHERE objectTypeID = ?
46 AND objectID = ?";
47 $statement = WCF::getDB()->prepareStatement($sql);
48 $statement->execute([$objectTypeID, $reportedUser->userID]);
49
50 $moderationQueue = $statement->fetchObject(ModerationQueue::class);
51
52 ModerationQueueManager::getInstance()->setAssignment([$moderationQueue->queueID => true]);
53
54 return $moderationQueue;
55 }
56 }