Commit | Line | Data |
---|---|---|
158bd3ca TD |
1 | <?php |
2 | namespace wcf\data\package\update\server; | |
3 | use wcf\data\AbstractDatabaseObjectAction; | |
a427a8c8 | 4 | use wcf\data\IToggleAction; |
75e0d7eb | 5 | use wcf\data\TDatabaseObjectToggle; |
8ce3e768 | 6 | use 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 | 20 | class 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 | } |