<?php /* * Copyright (c) 2010-2018 Tim Düsterhus. * * Use of this software is governed by the Business Source License * included in the LICENSE file. * * Change Date: 2024-10-20 * * On the date above, in accordance with the Business Source * License, use of this software will be governed by version 3 * or later of the General Public License. */ namespace chat\data\suspension; use \wcf\system\WCF; /** * Executes suspension-related actions. */ class SuspensionAction extends \wcf\data\AbstractDatabaseObjectAction { /** * @inheritDoc */ protected $requireACP = [ 'revoke' ]; /** * Validates parameters and permissions. */ public function validateRevoke() { if (empty($this->objects)) { $this->readObjects(); if (empty($this->objects)) { throw new UserInputException('objectIDs'); } } unset($this->parameters['revoker']); WCF::getSession()->checkPermissions([ 'admin.chat.canManageSuspensions' ]); foreach ($this->getObjects() as $object) { if (!$object->isActive()) throw new UserInputException('objectIDs', 'nonActive'); } } /** * Revokes the suspensions */ public function revoke() { if (empty($this->objects)) { $this->readObjects(); } // User cannot be set during an AJAX request, but may be set by Tim’s Chat itself. if (!isset($this->parameters['revoker'])) $this->parameters['revoker'] = WCF::getUser(); $data = [ 'revoked' => TIME_NOW , 'revokerID' => $this->parameters['revoker']->userID , 'revoker' => $this->parameters['revoker']->username ]; $objectAction = new static($this->getObjects(), 'update', [ 'data' => $data ]); $objectAction->executeAction(); } }