From 13bc5b7f17f3441031e05f52be29b0233b5c9417 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Sun, 10 May 2015 19:14:11 +0200 Subject: [PATCH] Install/Activate Themes: fixed hangups during theme removal. --- admin/db/company_db.inc | 6 +++--- admin/inst_theme.php | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/admin/db/company_db.inc b/admin/db/company_db.inc index 447307b8..f73cd04c 100644 --- a/admin/db/company_db.inc +++ b/admin/db/company_db.inc @@ -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; } diff --git a/admin/inst_theme.php b/admin/inst_theme.php index 76b08433..0d1987d5 100644 --- a/admin/inst_theme.php +++ b/admin/inst_theme.php @@ -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(''); -- 2.30.2