Commit | Line | Data |
---|---|---|
fc69b61d MW |
1 | <?php |
2 | namespace wcf\system\moderation\queue; | |
3 | use wcf\data\moderation\queue\ModerationQueue; | |
4 | use wcf\data\moderation\queue\ModerationQueueAction; | |
5 | use wcf\data\moderation\queue\ModerationQueueList; | |
6 | use wcf\system\SingletonFactory; | |
7 | use wcf\system\WCF; | |
8 | ||
9 | /** | |
10 | * Default implementation for moderation queue managers. | |
11 | * | |
12 | * @author Alexander Ebert | |
ca4ba303 | 13 | * @copyright 2001-2014 WoltLab GmbH |
fc69b61d | 14 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
f4f05aa5 | 15 | * @package com.woltlab.wcf |
fc69b61d MW |
16 | * @subpackage system.moderation.queue |
17 | * @category Community Framework | |
18 | */ | |
19 | abstract class AbstractModerationQueueManager extends SingletonFactory implements IModerationQueueManager { | |
20 | /** | |
21 | * definition name | |
22 | * @var string | |
23 | */ | |
24 | protected $definitionName = ''; | |
25 | ||
26 | /** | |
0ad90fc3 | 27 | * @see \wcf\system\moderation\queue\IModerationQueueManager::assignQueues() |
fc69b61d MW |
28 | */ |
29 | public function assignQueues($objectTypeID, array $queues) { | |
30 | ModerationQueueManager::getInstance()->getProcessor($this->definitionName, null, $objectTypeID)->assignQueues($queues); | |
31 | } | |
32 | ||
33 | /** | |
0ad90fc3 | 34 | * @see \wcf\system\moderation\queue\IModerationQueueManager::isValid() |
fc69b61d MW |
35 | */ |
36 | public function isValid($objectType, $objectID = null) { | |
37 | return ModerationQueueManager::getInstance()->isValid($this->definitionName, $objectType); | |
38 | } | |
39 | ||
40 | /** | |
0ad90fc3 | 41 | * @see \wcf\system\moderation\queue\IModerationQueueManager::getObjectTypeID() |
fc69b61d MW |
42 | */ |
43 | public function getObjectTypeID($objectType) { | |
44 | return ModerationQueueManager::getInstance()->getObjectTypeID($this->definitionName, $objectType); | |
45 | } | |
46 | ||
47 | /** | |
0ad90fc3 | 48 | * @see \wcf\system\moderation\queue\IModerationQueueManager::getProcessor() |
fc69b61d MW |
49 | */ |
50 | public function getProcessor($objectType, $objectTypeID = null) { | |
51 | return ModerationQueueManager::getInstance()->getProcessor($this->definitionName, $objectType, $objectTypeID); | |
52 | } | |
53 | ||
54 | /** | |
0ad90fc3 | 55 | * @see \wcf\system\moderation\queue\IModerationQueueManager::populate() |
fc69b61d MW |
56 | */ |
57 | public function populate($objectTypeID, array $objects) { | |
58 | ModerationQueueManager::getInstance()->getProcessor($this->definitionName, null, $objectTypeID)->populate($objects); | |
59 | } | |
60 | ||
b91f1424 TD |
61 | /** |
62 | * @see \wcf\system\moderation\queue\IModerationQueueManager::canRemoveContent() | |
63 | */ | |
64 | public function canRemoveContent(ModerationQueue $queue) { | |
65 | return $this->getProcessor(null, $queue->objectTypeID)->canRemoveContent($queue); | |
66 | } | |
67 | ||
fc69b61d | 68 | /** |
0ad90fc3 | 69 | * @see \wcf\system\moderation\queue\IModerationQueueManager::removeContent() |
fc69b61d MW |
70 | */ |
71 | public function removeContent(ModerationQueue $queue, $message = '') { | |
72 | $this->getProcessor(null, $queue->objectTypeID)->removeContent($queue, $message); | |
73 | } | |
74 | ||
75 | /** | |
76 | * Adds an entry to moderation queue. | |
77 | * | |
78 | * @param integer $objectTypeID | |
79 | * @param integer $objectID | |
80 | * @param integer $containerID | |
81 | * @param array $additionalData | |
82 | */ | |
83 | protected function addEntry($objectTypeID, $objectID, $containerID = 0, array $additionalData = array()) { | |
21b605c8 | 84 | $sql = "SELECT queueID |
fc69b61d MW |
85 | FROM wcf".WCF_N."_moderation_queue |
86 | WHERE objectTypeID = ? | |
87 | AND objectID = ?"; | |
88 | $statement = WCF::getDB()->prepareStatement($sql); | |
89 | $statement->execute(array( | |
90 | $objectTypeID, | |
91 | $objectID | |
92 | )); | |
93 | $row = $statement->fetchArray(); | |
94 | ||
21b605c8 | 95 | if ($row === false) { |
fc69b61d MW |
96 | $objectAction = new ModerationQueueAction(array(), 'create', array( |
97 | 'data' => array( | |
98 | 'objectTypeID' => $objectTypeID, | |
99 | 'objectID' => $objectID, | |
100 | 'containerID' => $containerID, | |
101 | 'userID' => (WCF::getUser()->userID ?: null), | |
102 | 'time' => TIME_NOW, | |
103 | 'additionalData' => serialize($additionalData) | |
104 | ) | |
105 | )); | |
106 | $objectAction->executeAction(); | |
fc69b61d | 107 | } |
21b605c8 AE |
108 | else { |
109 | $objectAction = new ModerationQueueAction(array($row['queueID']), 'update', array( | |
110 | 'data' => array( | |
111 | 'status' => ModerationQueue::STATUS_OUTSTANDING, | |
112 | 'containerID' => $containerID, | |
113 | 'userID' => (WCF::getUser()->userID ?: null), | |
114 | 'time' => TIME_NOW, | |
115 | 'additionalData' => serialize($additionalData) | |
116 | ) | |
117 | )); | |
118 | $objectAction->executeAction(); | |
119 | } | |
120 | ||
121 | ModerationQueueManager::getInstance()->resetModerationCount(); | |
fc69b61d MW |
122 | } |
123 | ||
124 | /** | |
125 | * Marks a list of moderation queue entries as done. | |
126 | * | |
127 | * @param integer $objectTypeID | |
128 | * @param array<integer> $objectIDs | |
129 | */ | |
130 | protected function removeEntries($objectTypeID, array $objectIDs) { | |
131 | $queueList = new ModerationQueueList(); | |
132 | $queueList->getConditionBuilder()->add("moderation_queue.objectTypeID = ?", array($objectTypeID)); | |
133 | $queueList->getConditionBuilder()->add("moderation_queue.objectID IN (?)", array($objectIDs)); | |
134 | $queueList->readObjects(); | |
135 | ||
136 | if (count($queueList)) { | |
137 | $objectAction = new ModerationQueueAction($queueList->getObjects(), 'markAsDone'); | |
138 | $objectAction->executeAction(); | |
139 | } | |
140 | } | |
141 | } |