Skip to content

Commit 9449f3e

Browse files
committed
Fire an event before a package is being uninstalled
1 parent 6c87579 commit 9449f3e

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace wcf\event\package;
4+
5+
use wcf\data\package\Package;
6+
use wcf\event\IPsr14Event;
7+
8+
/**
9+
* Indicates that a package uninstallation has been started but no data has been
10+
* removed so far.
11+
*
12+
* @author Alexander Ebert
13+
* @copyright 2001-2025 WoltLab GmbH
14+
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15+
* @since 6.2
16+
*/
17+
final class PackageUninstallationStarted implements IPsr14Event
18+
{
19+
public function __construct(
20+
public readonly Package $package
21+
) {}
22+
}

wcfsetup/install/files/lib/system/package/PackageUninstallationDispatcher.class.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
use wcf\system\application\ApplicationHandler;
99
use wcf\system\cache\builder\PackageCacheBuilder;
1010
use wcf\command\cache\ClearCache;
11+
use wcf\data\package\PackageCache;
12+
use wcf\event\package\PackageUninstallationStarted;
1113
use wcf\system\event\EventHandler;
1214
use wcf\system\package\plugin\IPackageInstallationPlugin;
1315
use wcf\system\setup\Uninstaller;
@@ -59,6 +61,11 @@ public function uninstall(string $node): PackageInstallationStep
5961
switch ($data['nodeType']) {
6062
case 'start':
6163
$step = $this->handleStartMarker($nodeData);
64+
65+
$package = PackageCache::getInstance()->getPackage($this->queue->packageID);
66+
\assert($package !== null);
67+
$event = new PackageUninstallationStarted($package);
68+
EventHandler::getInstance()->fire($event);
6269
break;
6370

6471
case 'package':

0 commit comments

Comments
 (0)