Merge branch '5.2' into 5.3
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / package / update / server / PackageUpdateServerAction.class.php
CommitLineData
158bd3ca
TD
1<?php
2namespace wcf\data\package\update\server;
3use wcf\data\AbstractDatabaseObjectAction;
a427a8c8 4use wcf\data\IToggleAction;
75e0d7eb 5use wcf\data\TDatabaseObjectToggle;
8ce3e768 6use wcf\system\exception\PermissionDeniedException;
158bd3ca
TD
7
8/**
9 * Executes package update server-related actions.
10 *
11 * @author Alexander Ebert
7b7b9764 12 * @copyright 2001-2019 WoltLab GmbH
158bd3ca 13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
e71525e4 14 * @package WoltLabSuite\Core\Data\Package\Update\Server
0e8867ac
MS
15 *
16 * @method PackageUpdateServer create()
17 * @method PackageUpdateServerEditor[] getObjects()
18 * @method PackageUpdateServerEditor getSingleObject()
158bd3ca 19 */
a427a8c8 20class PackageUpdateServerAction extends AbstractDatabaseObjectAction implements IToggleAction {
ee83434a
AE
21 use TDatabaseObjectToggle {
22 validateToggle as traitValidateToggle;
23 }
75e0d7eb 24
158bd3ca 25 /**
0fcfe5f6 26 * @inheritDoc
158bd3ca 27 */
157054c9 28 protected $className = PackageUpdateServerEditor::class;
158bd3ca
TD
29
30 /**
0fcfe5f6 31 * @inheritDoc
158bd3ca 32 */
058cbd6a 33 protected $permissionsCreate = ['admin.configuration.package.canEditServer'];
158bd3ca
TD
34
35 /**
0fcfe5f6 36 * @inheritDoc
158bd3ca 37 */
058cbd6a 38 protected $permissionsDelete = ['admin.configuration.package.canEditServer'];
158bd3ca
TD
39
40 /**
0fcfe5f6 41 * @inheritDoc
158bd3ca 42 */
058cbd6a 43 protected $permissionsUpdate = ['admin.configuration.package.canEditServer'];
158bd3ca 44
bae8dd1e 45 /**
0fcfe5f6 46 * @inheritDoc
bae8dd1e 47 */
058cbd6a 48 protected $requireACP = ['create', 'delete', 'toggle', 'update'];
8ce3e768
TD
49
50 /**
51 * @inheritDoc
52 */
53 public function validateDelete() {
54 parent::validateDelete();
55
56 /** @var PackageUpdateServer $updateServer */
57 foreach ($this->getObjects() as $updateServer) {
58 if (!$updateServer->canDelete()) throw new PermissionDeniedException();
59 }
60 }
ee83434a
AE
61
62 /**
63 * @inheritDoc
64 */
65 public function validateToggle() {
66 $this->traitValidateToggle();
67
68 /** @var PackageUpdateServer $updateServer */
69 foreach ($this->getObjects() as $updateServer) {
70 if (!$updateServer->canDisable()) throw new PermissionDeniedException();
71 }
72 }
73
dcb3a44c 74}