From ef44993035ded9e427192682023d84f777737450 Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Fri, 16 Oct 2020 13:07:51 +0200
Subject: [PATCH] refactor: react at project delete event and delete unneeded
 bricks

---
 events.xml                |  1 +
 src/QUI/Bricks/Events.php | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/events.xml b/events.xml
index 6b282b1..95423a1 100644
--- a/events.xml
+++ b/events.xml
@@ -3,4 +3,5 @@
     <event on="onSiteSave" fire="\QUI\Bricks\Events::onSiteSave"/>
     <event on="onSmartyInit" fire="\QUI\Bricks\Events::onSmartyInit"/>
     <event on="onPackageSetup" fire="\QUI\Bricks\Events::onPackageSetup"/>
+    <event on="onDeleteProject" fire="\QUI\Bricks\Events::onDeleteProject"/>
 </events>
diff --git a/src/QUI/Bricks/Events.php b/src/QUI/Bricks/Events.php
index d3da466..b6f7e14 100644
--- a/src/QUI/Bricks/Events.php
+++ b/src/QUI/Bricks/Events.php
@@ -160,6 +160,42 @@ public static function onSiteSave($Site)
         $Site->save();
     }
 
+    /**
+     * event: on project delete
+     *
+     * @param string $project
+     */
+    public static function onDeleteProject($project)
+    {
+        // delete uid entries
+        $uidTable = QUI\Bricks\Manager::getUIDTable();
+
+        try {
+            QUI::getDataBase()->delete($uidTable, [
+                'project' => $project
+            ]);
+        } catch (QUI\Exception $Exception) {
+            QUI\System\Log::addError($Exception->getMessage());
+        }
+
+        // delete brocks project tables
+        // Mainproject_de_bricksCache
+        $Table  = QUI::getDataBase()->table();
+        $tables = $Table->getTables();
+
+        foreach ($tables as $table) {
+            if (\strpos($table, $project) !== 0) {
+                continue;
+            }
+
+            if (\strpos($table, '_bricksCache') === false) {
+                continue;
+            }
+
+            $Table->delete($table);
+        }
+    }
+
     /**
      * Event : on smarty init
      * add new brickarea function
-- 
GitLab