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.php42
-rw-r--r--actions/admin/plugins/disableall.php39
-rw-r--r--actions/admin/plugins/enable.php42
-rw-r--r--actions/admin/plugins/enableall.php42
-rw-r--r--actions/admin/plugins/reorder.php56
-rw-r--r--actions/admin/plugins/set_priority.php39
10 files changed, 217 insertions, 221 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 32ae451a7..000000000
--- a/actions/admin/plugins/disable.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
- /**
- * Disable plugin action.
- *
- * @package Elgg
- * @subpackage Core
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.org/
- */
-
- require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/engine/start.php");
-
- // block non-admin users
- admin_gatekeeper();
-
- // Validate the action
- action_gatekeeper();
-
- // Get the plugin
- $plugin = get_input('plugin');
- if (!is_array($plugin))
- $plugin = array($plugin);
-
- foreach ($plugin as $p)
- {
- // Disable
- if (disable_plugin($p))
- system_message(sprintf(elgg_echo('admin:plugins:disable:yes'), $p));
- else
- register_error(sprintf(elgg_echo('admin:plugins:disable:no'), $p));
- }
-
- elgg_view_regenerate_simplecache();
-
- $cache = elgg_get_filepath_cache();
- $cache->delete('view_paths');
-
- forward($_SERVER['HTTP_REFERER']);
- exit;
-?> \ No newline at end of file
diff --git a/actions/admin/plugins/disableall.php b/actions/admin/plugins/disableall.php
deleted file mode 100644
index a01b74fa5..000000000
--- a/actions/admin/plugins/disableall.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
- /**
- * Disable plugin action.
- *
- * @package Elgg
- * @subpackage Core
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.org/
- */
-
- require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/engine/start.php");
-
- // block non-admin users
- admin_gatekeeper();
-
- // Validate the action
- action_gatekeeper();
-
- $plugins = get_installed_plugins();
-
- foreach ($plugins as $p => $data)
- {
- // Disable
- if (disable_plugin($p))
- system_message(sprintf(elgg_echo('admin:plugins:disable:yes'), $p));
- else
- register_error(sprintf(elgg_echo('admin:plugins:disable:no'), $p));
- }
-
- elgg_view_regenerate_simplecache();
-
- $cache = elgg_get_filepath_cache();
- $cache->delete('view_paths');
-
- forward($_SERVER['HTTP_REFERER']);
- exit;
-?> \ No newline at end of file
diff --git a/actions/admin/plugins/enable.php b/actions/admin/plugins/enable.php
deleted file mode 100644
index d81ab0551..000000000
--- a/actions/admin/plugins/enable.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
- /**
- * Enable plugin action.
- *
- * @package Elgg
- * @subpackage Core
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.org/
- */
-
- require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/engine/start.php");
-
- // block non-admin users
- admin_gatekeeper();
-
- // Validate the action
- action_gatekeeper();
-
- // Get the plugin
- $plugin = get_input('plugin');
- if (!is_array($plugin))
- $plugin = array($plugin);
-
- foreach ($plugin as $p)
- {
- // Disable
- if (enable_plugin($p))
- system_message(sprintf(elgg_echo('admin:plugins:enable:yes'), $p));
- else
- register_error(sprintf(elgg_echo('admin:plugins:enable:no'), $p));
- }
-
- elgg_view_regenerate_simplecache();
-
- $cache = elgg_get_filepath_cache();
- $cache->delete('view_paths');
-
- forward($_SERVER['HTTP_REFERER']);
- exit;
-?> \ 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 f31b4593d..000000000
--- a/actions/admin/plugins/enableall.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
- /**
- * Enable plugin action.
- *
- * @package Elgg
- * @subpackage Core
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.org/
- */
-
- require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/engine/start.php");
-
- // block non-admin users
- admin_gatekeeper();
-
- // Validate the action
- action_gatekeeper();
-
- $plugins = get_installed_plugins();
-
- foreach ($plugins as $p => $data)
- {
- // Enable
- if (enable_plugin($p))
- system_message(sprintf(elgg_echo('admin:plugins:enable:yes'), $p));
- else
- register_error(sprintf(elgg_echo('admin:plugins:enable:no'), $p));
- }
-
- // Regen view cache
- elgg_view_regenerate_simplecache();
-
- // Regen paths cache
- $cache = elgg_get_filepath_cache();
- $cache->delete('view_paths');
-
- forward($_SERVER['HTTP_REFERER']);
- exit;
-
-?> \ 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 0e328f54d..000000000
--- a/actions/admin/plugins/reorder.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
- /**
- * Reorder plugin action.
- *
- * @package Elgg
- * @subpackage Core
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.org/
- */
-
- require_once(dirname(dirname(dirname(dirname(__FILE__)))) . "/engine/start.php");
-
- // block non-admin users
- admin_gatekeeper();
-
- // Validate the action
- action_gatekeeper();
-
- // Get the plugin
- $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))
- system_message(sprintf(elgg_echo('admin:plugins:reorder:yes'), $plugin));
- else
- register_error(sprintf(elgg_echo('admin:plugins:reorder:no'), $plugin));
-
- elgg_view_regenerate_simplecache();
-
- $cache = elgg_get_filepath_cache();
- $cache->delete('view_paths');
-
- forward($_SERVER['HTTP_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