Skip to content

Commit c8b0877

Browse files
committed
Add endpoint to deleting labels
1 parent fcfe1d3 commit c8b0877

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

wcfsetup/install/files/lib/bootstrap/com.woltlab.wcf.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ static function (\wcf\event\endpoint\ControllerCollecting $event) {
188188
$event->register(new \wcf\system\endpoint\controller\core\languages\EnableLanguage());
189189
$event->register(new \wcf\system\endpoint\controller\core\languages\SetAsDefaultLanguage());
190190
$event->register(new \wcf\system\endpoint\controller\core\languages\items\DeleteItem());
191+
$event->register(new \wcf\system\endpoint\controller\core\labels\DeleteLabel());
191192
$event->register(new \wcf\system\endpoint\controller\core\labels\groups\ChangeLabelShowOrder());
192193
$event->register(new \wcf\system\endpoint\controller\core\labels\groups\ChangeShowOrder());
193194
$event->register(new \wcf\system\endpoint\controller\core\labels\groups\DeleteGroup());
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace wcf\system\endpoint\controller\core\labels;
4+
5+
use Laminas\Diactoros\Response\JsonResponse;
6+
use Psr\Http\Message\ResponseInterface;
7+
use Psr\Http\Message\ServerRequestInterface;
8+
use wcf\data\label\Label;
9+
use wcf\data\label\LabelAction;
10+
use wcf\http\Helper;
11+
use wcf\system\endpoint\DeleteRequest;
12+
use wcf\system\endpoint\IController;
13+
use wcf\system\WCF;
14+
15+
/**
16+
* API endpoint for deleting label.
17+
*
18+
* @author Olaf Braun
19+
* @copyright 2001-2025 WoltLab GmbH
20+
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
21+
* @since 6.2
22+
*/
23+
#[DeleteRequest("/core/labels/{id:\d+}")]
24+
final class DeleteLabel implements IController
25+
{
26+
#[\Override]
27+
public function __invoke(ServerRequestInterface $request, array $variables): ResponseInterface
28+
{
29+
$label = Helper::fetchObjectFromRequestParameter($variables['id'], Label::class);
30+
31+
$this->assertLabelCanBeDeleted();
32+
33+
(new LabelAction([$label], 'delete'))->executeAction();
34+
35+
return new JsonResponse([]);
36+
}
37+
38+
private function assertLabelCanBeDeleted(): void
39+
{
40+
WCF::getSession()->checkPermissions(['admin.content.label.canManageLabel']);
41+
}
42+
}

0 commit comments

Comments
 (0)