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
;
10 * Default implementation for moderation queue managers.
12 * @author Alexander Ebert
13 * @copyright 2001-2014 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package com.woltlab.wcf
16 * @subpackage system.moderation.queue
17 * @category Community Framework
19 abstract class AbstractModerationQueueManager
extends SingletonFactory
implements IModerationQueueManager
{
24 protected $definitionName = '';
27 * @see \wcf\system\moderation\queue\IModerationQueueManager::assignQueues()
29 public function assignQueues($objectTypeID, array $queues) {
30 ModerationQueueManager
::getInstance()->getProcessor($this->definitionName
, null, $objectTypeID)->assignQueues($queues);
34 * @see \wcf\system\moderation\queue\IModerationQueueManager::isValid()
36 public function isValid($objectType, $objectID = null) {
37 return ModerationQueueManager
::getInstance()->isValid($this->definitionName
, $objectType);
41 * @see \wcf\system\moderation\queue\IModerationQueueManager::getObjectTypeID()
43 public function getObjectTypeID($objectType) {
44 return ModerationQueueManager
::getInstance()->getObjectTypeID($this->definitionName
, $objectType);
48 * @see \wcf\system\moderation\queue\IModerationQueueManager::getProcessor()
50 public function getProcessor($objectType, $objectTypeID = null) {
51 return ModerationQueueManager
::getInstance()->getProcessor($this->definitionName
, $objectType, $objectTypeID);
55 * @see \wcf\system\moderation\queue\IModerationQueueManager::populate()
57 public function populate($objectTypeID, array $objects) {
58 ModerationQueueManager
::getInstance()->getProcessor($this->definitionName
, null, $objectTypeID)->populate($objects);
62 * @see \wcf\system\moderation\queue\IModerationQueueManager::canRemoveContent()
64 public function canRemoveContent(ModerationQueue
$queue) {
65 return $this->getProcessor(null, $queue->objectTypeID
)->canRemoveContent($queue);
69 * @see \wcf\system\moderation\queue\IModerationQueueManager::removeContent()
71 public function removeContent(ModerationQueue
$queue, $message = '') {
72 $this->getProcessor(null, $queue->objectTypeID
)->removeContent($queue, $message);
76 * Adds an entry to moderation queue.
78 * @param integer $objectTypeID
79 * @param integer $objectID
80 * @param integer $containerID
81 * @param array $additionalData
83 protected function addEntry($objectTypeID, $objectID, $containerID = 0, array $additionalData = array()) {
84 $sql = "SELECT queueID
85 FROM wcf".WCF_N
."_moderation_queue
86 WHERE objectTypeID = ?
88 $statement = WCF
::getDB()->prepareStatement($sql);
89 $statement->execute(array(
93 $row = $statement->fetchArray();
96 $objectAction = new ModerationQueueAction(array(), 'create', array(
98 'objectTypeID' => $objectTypeID,
99 'objectID' => $objectID,
100 'containerID' => $containerID,
101 'userID' => (WCF
::getUser()->userID ?
: null),
103 'additionalData' => serialize($additionalData)
106 $objectAction->executeAction();
109 $objectAction = new ModerationQueueAction(array($row['queueID']), 'update', array(
111 'status' => ModerationQueue
::STATUS_OUTSTANDING
,
112 'containerID' => $containerID,
113 'userID' => (WCF
::getUser()->userID ?
: null),
115 'additionalData' => serialize($additionalData)
118 $objectAction->executeAction();
121 ModerationQueueManager
::getInstance()->resetModerationCount();
125 * Marks a list of moderation queue entries as done.
127 * @param integer $objectTypeID
128 * @param array<integer> $objectIDs
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();
136 if (count($queueList)) {
137 $objectAction = new ModerationQueueAction($queueList->getObjects(), 'markAsDone');
138 $objectAction->executeAction();