summaryrefslogtreecommitdiff
path: root/modules/gallery/libraries/IdentityProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/libraries/IdentityProvider.php')
-rw-r--r--modules/gallery/libraries/IdentityProvider.php34
1 files changed, 25 insertions, 9 deletions
diff --git a/modules/gallery/libraries/IdentityProvider.php b/modules/gallery/libraries/IdentityProvider.php
index f7be33e3..e07838d1 100644
--- a/modules/gallery/libraries/IdentityProvider.php
+++ b/modules/gallery/libraries/IdentityProvider.php
@@ -71,19 +71,35 @@ class IdentityProvider_Core {
module::uninstall($current_provider);
}
- IdentityProvider::reset();
- $provider = new IdentityProvider($new_provider);
+ try {
+ IdentityProvider::reset();
+ $provider = new IdentityProvider($new_provider);
- module::set_var("gallery", "identity_provider", $new_provider);
+ module::set_var("gallery", "identity_provider", $new_provider);
- if (method_exists("{$new_provider}_installer", "initialize")) {
- call_user_func("{$new_provider}_installer::initialize");
- }
+ if (method_exists("{$new_provider}_installer", "initialize")) {
+ call_user_func("{$new_provider}_installer::initialize");
+ }
+
+ module::event("identity_provider_changed", $current_provider, $new_provider);
- module::event("identity_provider_changed", $current_provider, $new_provider);
+ auth::login($provider->admin_user());
+ Session::instance()->regenerate();
+ } catch (Exception $e) {
+ // Make sure new provider is not in the database
+ module::uninstall($new_provider);
- auth::login($provider->admin_user());
- Session::instance()->regenerate();
+ // Lets reset to the current provider so that the gallery installation is still
+ // working.
+ module::set_var("gallery", "identity_provider", null);
+ IdentityProvider::change_provider($current_provider);
+ module::activate($current_provider);
+ message::error(
+ t("Error attempting to enable \"%new_provider\" identity provider, " .
+ "reverted to \"%old_provider\" identity provider",
+ array("new_provider" => $new_provider, "old_provider" => $current_provider)));
+ throw $e;
+ }
}
/**