Add ClearCache command
authorTim Düsterhus <duesterhus@woltlab.com>
Fri, 5 Aug 2022 09:43:16 +0000 (11:43 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Wed, 10 Aug 2022 10:17:39 +0000 (12:17 +0200)
wcfsetup/install/files/lib/system/cache/command/ClearCache.class.php [new file with mode: 0644]

diff --git a/wcfsetup/install/files/lib/system/cache/command/ClearCache.class.php b/wcfsetup/install/files/lib/system/cache/command/ClearCache.class.php
new file mode 100644 (file)
index 0000000..1dde7da
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+
+namespace wcf\system\cache\command;
+
+use wcf\data\package\update\server\PackageUpdateServer;
+use wcf\system\cache\CacheHandler;
+use wcf\system\cache\event\CacheCleared;
+use wcf\system\event\EventHandler;
+use wcf\system\language\LanguageFactory;
+use wcf\system\style\StyleHandler;
+
+/**
+ * Performs a full cache clear.
+ *
+ * @author  Tim Duesterhus
+ * @copyright   2001-2021 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package WoltLabSuite\Core\System\Cache\Event
+ * @since   6.0
+ */
+final class ClearCache
+{
+    private EventHandler $eventHandler;
+
+    public function __construct()
+    {
+        $this->eventHandler = EventHandler::getInstance();
+    }
+
+    public function __invoke()
+    {
+        // reset stylesheets
+        StyleHandler::resetStylesheets();
+
+        // delete language cache and compiled templates as well
+        LanguageFactory::getInstance()->deleteLanguageCache();
+
+        // get package dirs
+        CacheHandler::getInstance()->flushAll();
+
+        // reset package update servers and the package cache
+        PackageUpdateServer::resetAll();
+
+        $this->eventHandler->fire(
+            new CacheCleared()
+        );
+    }
+}