From 78a7d60c826aa6fb0da98384f7e116ea3a0866ef Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 11 Jan 2017 20:05:07 -0700 Subject: [PATCH 1/2] Fix for processing exiting after removing package so events are not fired on missing plugins --- classes/admincontroller.php | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/classes/admincontroller.php b/classes/admincontroller.php index 64e358f7..40af7f94 100644 --- a/classes/admincontroller.php +++ b/classes/admincontroller.php @@ -958,12 +958,11 @@ class AdminController extends AdminBaseController $type = isset($data['type']) ? $data['type'] : ''; if (!$this->authorizeTask('uninstall ' . $type, ['admin.' . $type, 'admin.super'])) { - $this->admin->json_response = [ + $json_response = [ 'status' => 'error', 'message' => $this->admin->translate('PLUGIN_ADMIN.INSUFFICIENT_PERMISSIONS_FOR_TASK') ]; - - return false; + echo json_encode($json_response);exit; } //check if there are packages that have this as a dependency. Abort and show which ones @@ -977,31 +976,31 @@ class AdminController extends AdminBaseController $dependent_packages) . " depends on this package. Please remove it first."; } - $this->admin->json_response = ['status' => 'error', 'message' => $message]; - - return false; + $json_response = ['status' => 'error', 'message' => $message]; + echo json_encode($json_response);exit; } try { $dependencies = $this->admin->dependenciesThatCanBeRemovedWhenRemoving($package); $result = Gpm::uninstall($package, []); } catch (\Exception $e) { - $this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()]; - - return false; + $json_response = ['status' => 'error', 'message' => $e->getMessage()]; + echo json_encode($json_response);exit; } if ($result) { - $this->admin->json_response = [ + $json_response = [ 'status' => 'success', 'dependencies' => $dependencies, 'message' => $this->admin->translate(is_string($result) ? $result : 'PLUGIN_ADMIN.UNINSTALL_SUCCESSFUL') ]; + echo json_encode($json_response);exit; } else { - $this->admin->json_response = [ + $json_response = [ 'status' => 'error', 'message' => $this->admin->translate('PLUGIN_ADMIN.UNINSTALL_FAILED') ]; + echo json_encode($json_response);exit; } return true; From 41a5ebea8c592070b15eb1440de331f25343ba9d Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Thu, 12 Jan 2017 11:59:53 -0700 Subject: [PATCH 2/2] Added changlog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fef0aa4..eda5c4e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * Fixed saving the configuration if not `admin.super` * Show the clear cache buttons if the user has `admin.cache` permissions [#908](https://github.com/getgrav/grav-plugin-admin/issues/908#issuecomment-270748616) * Fix colorpicker validation when transparency is set to 1.00 [#921](https://github.com/getgrav/grav-plugin-admin/issues/921) + * Fix for plugin throwing event-based errors when plugin is removed and no longer available to process said event # v1.2.7 ## 12/22/2016