Install/Activate Themes: fixed hangups during theme removal.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Sun, 10 May 2015 17:14:11 +0000 (19:14 +0200)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Sun, 10 May 2015 17:36:32 +0000 (19:36 +0200)
admin/db/company_db.inc
admin/inst_theme.php

index 447307b8d98d8d3bdd2db991ed5e4c36566f19de..f73cd04cc636036d1b68bd41738d6a64b0fb1288 100644 (file)
@@ -175,18 +175,18 @@ function key_in_foreign_table($id, $tables, $stdkey)
 //
 function clean_user_themes($theme)
 {
-       global $db_connections, $db, $installed_extensions;
+       global $db_connections, $db;
 
        $comp = user_company();
 
-       foreach ($db_connections as $n => $conn) {
+       $connections = $db_connections; // do not use db_connections directly here, or script will hang due to db_connections usage inside the loop
+       foreach ($connections as $n => $conn) {
                $db = $_SESSION["wa_current_user"]->set_db_connection($n);
                $sql = "UPDATE {$conn['tbpref']}users SET theme='default' WHERE theme='$theme'";
                if (!db_query($sql, 'Cannot update user theme settings'))
                        return false;
        }
        $db = $_SESSION["wa_current_user"]->set_db_connection($comp);
-
        $_SESSION['wa_current_user']->prefs->theme = 'default';
        return true;
 }
index 76b0843303a8c0246ced42819067c1002528d811..0d1987d5f8358c3f5d847fbdef459d138e882511 100644 (file)
@@ -26,13 +26,15 @@ include_once($path_to_root . "/includes/ui.inc");
 
 //---------------------------------------------------------------------------------------------
 
-if (($id = find_submit('Delete', false))
+if (($id = find_submit('Delete', false)) && isset($installed_extensions[$id])
        && clean_user_themes($installed_extensions[$id]['package']))
 {
        $extensions = get_company_extensions();
        $theme = $extensions[$id]['package'];
+       $path = $extensions[$id]['path'];
+
        if (uninstall_package($theme)) {
-               $dirname = $path_to_root.'/themes/'.$theme;
+               $dirname = $path_to_root.'/'.$path;
                flush_dir($dirname, true);
                rmdir($dirname);
                unset($extensions[$id]);
@@ -54,6 +56,7 @@ start_form(true);
 
        $th = array(_("Theme"),  _("Installed"), _("Available"), "", "");
        $k = 0;
+
        $mods = get_themes_list();
 
        if (!$mods)
@@ -79,7 +82,7 @@ start_form(true);
 
                        if ($available && check_pkg_upgrade($installed, $available)) // outdated or not installed theme in repo
                                button_cell('Update'.$pkg_name, $installed ? _("Update") : _("Install"),
-                                       _('Upload and install latest extension package'), ICON_DOWN);
+                                       _('Upload and install latest extension package'), ICON_DOWN, 'process');
                        else
                                label_cell('');