aboutsummaryrefslogtreecommitdiff
path: root/actions/admin/plugins/simple_update_states.php
diff options
context:
space:
mode:
Diffstat (limited to 'actions/admin/plugins/simple_update_states.php')
-rw-r--r--actions/admin/plugins/simple_update_states.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/actions/admin/plugins/simple_update_states.php b/actions/admin/plugins/simple_update_states.php
new file mode 100644
index 000000000..197f183f9
--- /dev/null
+++ b/actions/admin/plugins/simple_update_states.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Elgg administration simple plugin bulk enable / disable
+ *
+ * Shows an alphabetical list of "simple" plugins.
+ *
+ * @package Elgg
+ * @subpackage Core
+ * @author Curverider Ltd
+ * @link http://elgg.org/
+ */
+
+$installed_plugins = get_installed_plugins();
+$enabled_plugins = get_input('enabled_plugins', array());
+
+$success = TRUE;
+
+foreach ($installed_plugins as $plugin => $info) {
+ // this is only for simple plugins.
+ if (!isset($info['manifest']['admin_interface']) || $info['manifest']['admin_interface'] != 'simple') {
+ continue;
+ }
+
+ $plugin_enabled = is_plugin_enabled($plugin);
+
+ // only effect changes to plugins not already in that state.
+ if ($plugin_enabled && !in_array($plugin, $enabled_plugins)) {
+ $success = $success && disable_plugin($plugin);
+ } elseif (!$plugin_enabled && in_array($plugin, $enabled_plugins)) {
+ $success = $success && enable_plugin($plugin);
+ }
+}
+
+if ($success) {
+ elgg_delete_admin_notice('first_installation_plugin_reminder');
+ system_message(elgg_echo('admin:plugins:simple_simple_success'));
+} else {
+ register_error(elgg_echo('admins:plugins:simple_simple_fail'));
+}
+
+forward($_SERVER['HTTP_REFERER']); \ No newline at end of file