Index: /changelog
===================================================================
--- /changelog	(revision 8538)
+++ /changelog	(revision 8539)
@@ -679,2 +679,5 @@
 - Feature: Widerrufsformular: Shortcode [wpshopgermany_widerruf] hinzugefÃŒgt, generiert Link zu dynamischen Popup-Formular
 - Feature: Widerrufsformular: Dedizierte Seite fÃŒr Formular kann in der Modul-Konfiguration angelegt werden
+
+#4.4.16
+- Bugfix: Module bleiben ab nÃ€chster Version auch nach einem manuellen Update aktiviert
Index: /lib/filter_functions.inc.php
===================================================================
--- /lib/filter_functions.inc.php	(revision 8538)
+++ /lib/filter_functions.inc.php	(revision 8539)
@@ -699,6 +699,6 @@
      * Funktion, die vor dem Update aufgerufen wird um die Dateien aus dem Verzeichnis zu schieben die nicht gelÃ¶scht werden sollen
      */
-    function wpsg_pre_install($test) {
-    
+    function wpsg_pre_install($test, $hook_extra = []) {
+
 		$update_log = [];
 		
@@ -725,6 +725,13 @@
 		
         global $wp_filesystem;
-    
-        if (!isset($_REQUEST['plugin']) || $_REQUEST['plugin'] != WPSG_FOLDERNAME.'/wpshopgermany.php') return;
+
+		$plugin_from_request = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : '';
+		$plugin_from_hook = isset($hook_extra['plugin']) ? $hook_extra['plugin'] : '';
+
+        // Beim manuellen Plugin-Upload steht der Zielordner an dieser Stelle noch nicht fest
+        // (die Datei ist noch nicht entpackt), daher kann dieser Backup-Schritt fÃŒr den
+        // Upload-Fall nicht sicher erkannt werden. ZusÃ€tzlich zu $_REQUEST['plugin'] (Update per Klick)
+        // wird hier hook_extra['plugin'] geprÃŒft, damit z. B. Auto-Updates per Cron ebenfalls erfasst werden.
+        if ($plugin_from_request != WPSG_FOLDERNAME.'/wpshopgermany.php' && $plugin_from_hook != WPSG_FOLDERNAME.'/wpshopgermany.php') return;
     
         if (!isset($_REQUEST['_ajax_nonce'])) echo __('Kopiere Shop aus dem Pluginverzeichnis ...', 'wpsg').'<br />';
@@ -780,7 +787,11 @@
     
 		$plugin = isset($hook_extra['plugin'])?$hook_extra['plugin']:'';
-		
+		$destination_name = isset($result['destination_name'])?$result['destination_name']:'';
+
         // if ($_REQUEST['plugin'] != WPSG_FOLDERNAME.'/wpshopgermany.php') return;
-        if ($plugin != WPSG_FOLDERNAME.'/wpshopgermany.php') return;
+        // hook_extra['plugin'] wird von WordPress nur beim regulÃ€ren Update ("Jetzt aktualisieren") gesetzt.
+        // Beim manuellen Plugin-Upload (inkl. "Aktuelles durch hochgeladenes ersetzen") fehlt dieser Wert,
+        // $result['destination_name'] ist aber in beiden FÃ€llen zuverlÃ€ssig der Zielordnername.
+        if ($plugin != WPSG_FOLDERNAME.'/wpshopgermany.php' && $destination_name != WPSG_FOLDERNAME) return;
     
         if (!isset($_REQUEST['_ajax_nonce'])) echo __('Kopiere Shop zurÃŒck ...', 'wpsg').'<br />';
