aboutsummaryrefslogtreecommitdiff
path: root/actions/admin/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'actions/admin/plugins')
-rw-r--r--actions/admin/plugins/activate.php59
-rw-r--r--actions/admin/plugins/activate_all.php33
-rw-r--r--actions/admin/plugins/deactivate.php53
-rw-r--r--actions/admin/plugins/deactivate_all.php33
-rw-r--r--actions/admin/plugins/disable.php35
-rw-r--r--actions/admin/plugins/disableall.php30
-rw-r--r--actions/admin/plugins/enable.php36
-rw-r--r--actions/admin/plugins/enableall.php30
-rw-r--r--actions/admin/plugins/reorder.php53
-rw-r--r--actions/admin/plugins/set_priority.php39
-rw-r--r--actions/admin/plugins/simple_update_states.php53
11 files changed, 217 insertions, 237 deletions
diff --git a/actions/admin/plugins/activate.php b/actions/admin/plugins/activate.php
new file mode 100644
index 000000000..5234a4ca5
--- /dev/null
+++ b/actions/admin/plugins/activate.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Activate a plugin or plugins.
+ *
+ * Plugins to be activated are passed via $_REQUEST['plugin_guids'] as GUIDs.
+ * After activating the plugin(s), the views cache and simplecache are invalidated.
+ *
+ * @uses mixed $_GET['plugin_guids'] The GUIDs of the plugin to activate. Can be an array.
+ *
+ * @package Elgg.Core
+ * @subpackage Administration.Plugins
+ */
+
+$plugin_guids = get_input('plugin_guids');
+
+if (!is_array($plugin_guids)) {
+ $plugin_guids = array($plugin_guids);
+}
+
+$activated_guids = array();
+foreach ($plugin_guids as $guid) {
+ $plugin = get_entity($guid);
+
+ if (!($plugin instanceof ElggPlugin)) {
+ register_error(elgg_echo('admin:plugins:activate:no', array($guid)));
+ continue;
+ }
+
+ if ($plugin->activate()) {
+ $activated_guids[] = $guid;
+ } else {
+ $msg = $plugin->getError();
+ $string = ($msg) ? 'admin:plugins:activate:no_with_msg' : 'admin:plugins:activate:no';
+ register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
+ }
+}
+
+// don't regenerate the simplecache because the plugin won't be
+// loaded until next run. Just invalidate and let it regenerate as needed
+elgg_invalidate_simplecache();
+elgg_reset_system_cache();
+
+if (count($activated_guids) === 1) {
+ $url = 'admin/plugins';
+ $query = (string)parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
+ if ($query) {
+ $url .= "?$query";
+ }
+ $plugin = get_entity($plugin_guids[0]);
+ $id = $css_id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());
+ forward("$url#$id");
+} else {
+ // forward to top of page with a failure so remove any #foo
+ $url = $_SERVER['HTTP_REFERER'];
+ if (strpos($url, '#')) {
+ $url = substr(0, strpos($url, '#'));
+ }
+ forward($url);
+} \ No newline at end of file
diff --git a/actions/admin/plugins/activate_all.php b/actions/admin/plugins/activate_all.php
new file mode 100644
index 000000000..4514ccbdf
--- /dev/null
+++ b/actions/admin/plugins/activate_all.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Activates all specified installed and inactive plugins.
+ *
+ * All specified plugins in the mod/ directory are that aren't active are activated and the views
+ * cache and simplecache are invalidated.
+ *
+ * @package Elgg.Core
+ * @subpackage Administration.Plugins
+ */
+
+$guids = get_input('guids');
+$guids = explode(',', $guids);
+
+foreach ($guids as $guid) {
+ $plugin = get_entity($guid);
+ if (!$plugin->isActive()) {
+ if ($plugin->activate()) {
+ //system_message(elgg_echo('admin:plugins:activate:yes', array($plugin->getManifest()->getName())));
+ } else {
+ $msg = $plugin->getError();
+ $string = ($msg) ? 'admin:plugins:activate:no_with_msg' : 'admin:plugins:activate:no';
+ register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
+ }
+ }
+}
+
+// don't regenerate the simplecache because the plugin won't be
+// loaded until next run. Just invalidate and let it regnerate as needed
+elgg_invalidate_simplecache();
+elgg_reset_system_cache();
+
+forward(REFERER); \ No newline at end of file
diff --git a/actions/admin/plugins/deactivate.php b/actions/admin/plugins/deactivate.php
new file mode 100644
index 000000000..354f4717d
--- /dev/null
+++ b/actions/admin/plugins/deactivate.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Deactivate a plugin or plugins.
+ *
+ * Plugins to be deactivated are passed via $_REQUEST['plugin_guids'] as GUIDs.
+ * After deactivating the plugin(s), the views cache and simplecache are invalidated.
+ *
+ * @uses mixed $_GET['plugin_guids'] The GUIDs of the plugin to deactivate. Can be an array.
+ *
+ * @package Elgg.Core
+ * @subpackage Administration.Plugins
+ */
+
+$plugin_guids = get_input('plugin_guids');
+
+if (!is_array($plugin_guids)) {
+ $plugin_guids = array($plugin_guids);
+}
+
+foreach ($plugin_guids as $guid) {
+ $plugin = get_entity($guid);
+
+ if (!($plugin instanceof ElggPlugin)) {
+ register_error(elgg_echo('admin:plugins:deactivate:no', array($guid)));
+ continue;
+ }
+
+ if ($plugin->deactivate()) {
+ //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->getManifest()->getName())));
+ } else {
+ $msg = $plugin->getError();
+ $string = ($msg) ? 'admin:plugins:deactivate:no_with_msg' : 'admin:plugins:deactivate:no';
+ register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
+ }
+}
+
+// don't regenerate the simplecache because the plugin won't be
+// loaded until next run. Just invalidate and let it regnerate as needed
+elgg_invalidate_simplecache();
+elgg_reset_system_cache();
+
+if (count($plugin_guids) == 1) {
+ $url = 'admin/plugins';
+ $query = (string)parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
+ if ($query) {
+ $url .= "?$query";
+ }
+ $plugin = get_entity($plugin_guids[0]);
+ $id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());
+ forward("$url#$id");
+} else {
+ forward(REFERER);
+}
diff --git a/actions/admin/plugins/deactivate_all.php b/actions/admin/plugins/deactivate_all.php
new file mode 100644
index 000000000..8b347a633
--- /dev/null
+++ b/actions/admin/plugins/deactivate_all.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Disable all specified installed plugins.
+ *
+ * Specified plugins in the mod/ directory are disabled and the views cache and simplecache
+ * are reset.
+ *
+ * @package Elgg.Core
+ * @subpackage Administration.Plugins
+ */
+
+$guids = get_input('guids');
+$guids = explode(',', $guids);
+
+foreach ($guids as $guid) {
+ $plugin = get_entity($guid);
+ if ($plugin->isActive()) {
+ if ($plugin->deactivate()) {
+ //system_message(elgg_echo('admin:plugins:activate:yes', array($plugin->getManifest()->getName())));
+ } else {
+ $msg = $plugin->getError();
+ $string = ($msg) ? 'admin:plugins:deactivate:no_with_msg' : 'admin:plugins:deactivate:no';
+ register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
+ }
+ }
+}
+
+// don't regenerate the simplecache because the plugin won't be
+// loaded until next run. Just invalidate and let it regnerate as needed
+elgg_invalidate_simplecache();
+elgg_reset_system_cache();
+
+forward(REFERER);
diff --git a/actions/admin/plugins/disable.php b/actions/admin/plugins/disable.php
deleted file mode 100644
index 48116e43a..000000000
--- a/actions/admin/plugins/disable.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Disable a plugin or plugins.
- *
- * Plugins to be disabled are passed via $_REQUEST['plugin'] as plugin ID (directory name).
- * After disabling the plugin(s), the views cache and simplecache are both reset.
- *
- * @uses mixed $_GET['plugin'] The id (directory name) of the plugin to disable. Can be an array.
- *
- * @package Elgg.Core
- * @subpackage Administration.Site
- */
-
-admin_gatekeeper();
-
-$plugin = get_input('plugin');
-if (!is_array($plugin)) {
- $plugin = array($plugin);
-}
-
-foreach ($plugin as $p) {
- if (disable_plugin($p)) {
- system_message(sprintf(elgg_echo('admin:plugins:disable:yes'), $p));
- elgg_delete_admin_notice('first_installation_plugin_reminder');
- } else {
- register_error(sprintf(elgg_echo('admin:plugins:disable:no'), $p));
- }
-}
-
-// don't regenerate the simplecache because the plugin won't be
-// loaded until next run. Just invalidate and let it regnerate as needed
-elgg_invalidate_simplecache();
-elgg_filepath_cache_reset();
-
-forward(REFERER);
diff --git a/actions/admin/plugins/disableall.php b/actions/admin/plugins/disableall.php
deleted file mode 100644
index bd68c17b1..000000000
--- a/actions/admin/plugins/disableall.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Disable all installed plugins.
- *
- * All plugins in the mod/ directory are disabled and the views cache and simplecache
- * are reset.
- *
- * @package Elgg.Core
- * @subpackage Administration.Site
- */
-
-admin_gatekeeper();
-
-$plugins = get_installed_plugins();
-
-foreach ($plugins as $p => $data) {
- if (disable_plugin($p)) {
- elgg_delete_admin_notice('first_installation_plugin_reminder');
- system_message(sprintf(elgg_echo('admin:plugins:disable:yes'), $p));
- } else {
- register_error(sprintf(elgg_echo('admin:plugins:disable:no'), $p));
- }
-}
-
-// don't regenerate the simplecache because the plugin won't be
-// loaded until next run. Just invalidate and let it regnerate as needed
-elgg_invalidate_simplecache();
-elgg_filepath_cache_reset();
-
-forward(REFERER);
diff --git a/actions/admin/plugins/enable.php b/actions/admin/plugins/enable.php
deleted file mode 100644
index b15666093..000000000
--- a/actions/admin/plugins/enable.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Enables a plugin or plugins.
- *
- * Plugins to be enabled are passed via $_REQUEST['plugin'] as plugin ID (directory name).
- * After enabling the plugin(s), the views cache and simplecache are reset.
- *
- * @uses mixed $_GET['plugin'] The id (directory name) of the plugin to enable. Can be an array.
- *
- * @package Elgg.Core
- * @subpackage Administration.Site
- */
-
-admin_gatekeeper();
-
-$plugin = get_input('plugin');
-
-if (!is_array($plugin)) {
- $plugin = array($plugin);
-}
-
-foreach ($plugin as $p) {
- if (enable_plugin($p)) {
- elgg_delete_admin_notice('first_installation_plugin_reminder');
- system_message(sprintf(elgg_echo('admin:plugins:enable:yes'), $p));
- } else {
- register_error(sprintf(elgg_echo('admin:plugins:enable:no'), $p));
- }
-}
-
-// don't regenerate the simplecache because the plugin won't be
-// loaded until next run. Just invalidate and let it regnerate as needed
-elgg_invalidate_simplecache();
-elgg_filepath_cache_reset();
-
-forward(REFERER); \ No newline at end of file
diff --git a/actions/admin/plugins/enableall.php b/actions/admin/plugins/enableall.php
deleted file mode 100644
index b959c235f..000000000
--- a/actions/admin/plugins/enableall.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Enables all installed plugins.
- *
- * All plugins in the mod/ directory are enabled and the views cache and simplecache
- * are reset.
- *
- * @package Elgg.Core
- * @subpackage Administration.Site
- */
-
-admin_gatekeeper();
-
-$plugins = get_installed_plugins();
-
-foreach ($plugins as $p => $data) {
- if (enable_plugin($p)) {
- elgg_delete_admin_notice('first_installation_plugin_reminder');
- system_message(sprintf(elgg_echo('admin:plugins:enable:yes'), $p));
- } else {
- register_error(sprintf(elgg_echo('admin:plugins:enable:no'), $p));
- }
-}
-
-// don't regenerate the simplecache because the plugin won't be
-// loaded until next run. Just invalidate and let it regnerate as needed
-elgg_invalidate_simplecache();
-elgg_filepath_cache_reset();
-
-forward(REFERER); \ No newline at end of file
diff --git a/actions/admin/plugins/reorder.php b/actions/admin/plugins/reorder.php
deleted file mode 100644
index e3c65f6e5..000000000
--- a/actions/admin/plugins/reorder.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Changes the load order of a plugin.
- *
- * Plugin order affects priority for view, action, and page handler
- * overriding as well as the order of view extensions. Higher numbers
- * are loaded after lower numbers, and so receive higher priority.
- *
- * NOTE: When viewing the admin page (advanced plugin admin in >= 1.8) plugins
- * LOWER on the page have HIGHER priority and will override views, etc
- * from plugins above them.
- *
- * @package Elgg.Core
- * @subpackage Administration.Site
- */
-
-admin_gatekeeper();
-
-$mod = get_input('plugin');
-$mod = str_replace('.', '', $mod);
-$mod = str_replace('/', '', $mod);
-
-// Get the new order
-$order = (int) get_input('order');
-
-// Get the current plugin list
-$plugins = get_plugin_list();
-
-// Inject the plugin order back into the list
-if ($key = array_search($mod, $plugins)) {
-
- unset($plugins[$key]);
- while (isset($plugins[$order])) {
- $order++;
- }
-
- $plugins[$order] = $mod;
-}
-
-// Disable
-if (regenerate_plugin_list($plugins)) {
- elgg_delete_admin_notice('first_installation_plugin_reminder');
- system_message(sprintf(elgg_echo('admin:plugins:reorder:yes'), $plugin));
-} else {
- register_error(sprintf(elgg_echo('admin:plugins:reorder:no'), $plugin));
-}
-
-// don't regenerate the simplecache because the plugin won't be
-// loaded until next run. Just invalidate and let it regnerate as needed
-elgg_invalidate_simplecache();
-elgg_filepath_cache_reset();
-
-forward(REFERER); \ No newline at end of file
diff --git a/actions/admin/plugins/set_priority.php b/actions/admin/plugins/set_priority.php
new file mode 100644
index 000000000..edd735371
--- /dev/null
+++ b/actions/admin/plugins/set_priority.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Changes the load priority of a plugin.
+ *
+ * Plugin priority affects view, action, and page handler
+ * overriding as well as the order of view extensions. Plugins with higher
+ * priority are loaded after and override plugins with lower priorities.
+ *
+ * NOTE: When viewing the plugin admin page, plugins LOWER on the page
+ * have HIGHER priority and will override views, etc from plugins above them.
+ *
+ * @package Elgg.Core
+ * @subpackage Administration.Plugins
+ */
+
+$plugin_guid = get_input('plugin_guid');
+$priority = get_input('priority');
+
+$plugin = get_entity($plugin_guid);
+
+if (!($plugin instanceof ElggPlugin)) {
+ register_error(elgg_echo('admin:plugins:set_priority:no', array($plugin_guid)));
+ forward(REFERER);
+}
+
+if ($plugin->setPriority($priority)) {
+ //system_message(elgg_echo('admin:plugins:set_priority:yes', array($plugin->getManifest()->getName())));
+} else {
+ $msg = $plugin->getError();
+ $string = ($msg) ? 'admin:plugins:set_priority:no_with_msg' : 'admin:plugins:set_priority:no';
+ register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
+}
+
+// don't regenerate the simplecache because the plugin won't be
+// loaded until next run. Just invalidate and let it regnerate as needed
+elgg_invalidate_simplecache();
+elgg_reset_system_cache();
+
+forward(REFERER); \ No newline at end of file
diff --git a/actions/admin/plugins/simple_update_states.php b/actions/admin/plugins/simple_update_states.php
deleted file mode 100644
index 7d01e4a46..000000000
--- a/actions/admin/plugins/simple_update_states.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Bulk enable and disable for plugins appearing in the "simple" interface.
- *
- * Plugins marked as using the "simple" interface can be enabled and disabled
- * en masse by passing the enabled plugins as an array of their plugin ids
- * (directory names) through $_REQUEST['enabled_plugins']. All "simple" plugins
- * not in this array will be disabled.
- *
- * Simplecache and views cache are reset.
- *
- * @uses array $_REQUEST['enabled_plugins'] An array of plugin ids (directory names) to enable.
- *
- * @since 1.8
- * @package Elgg.Core
- * @subpackage Administration.Site
- */
-
-$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.
- $interface_type = elgg_get_array_value('admin_interface', $info['manifest'], NULL);
- if (!$interface_type || $interface_type != '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'));
-}
-
-// don't regenerate the simplecache because the plugin won't be
-// loaded until next run. Just invalidate and let it regnerate as needed
-elgg_invalidate_simplecache();
-elgg_filepath_cache_reset();
-
-forward(REFERER); \ No newline at end of file