aboutsummaryrefslogtreecommitdiffstats
path: root/admin/include
diff options
context:
space:
mode:
Diffstat (limited to 'admin/include')
-rw-r--r--admin/include/functions_plugins.inc.php98
1 files changed, 98 insertions, 0 deletions
diff --git a/admin/include/functions_plugins.inc.php b/admin/include/functions_plugins.inc.php
index b51a22fd2..3e79988fd 100644
--- a/admin/include/functions_plugins.inc.php
+++ b/admin/include/functions_plugins.inc.php
@@ -85,6 +85,93 @@ function get_fs_plugins()
}
/**
+ * Activates a plugin. It will be loaded only on the next page ...
+ * @param string $plugin_id the plugin to activate
+ * @param array $errors errors to be returned
+ */
+function activate_plugin($plugin_id, &$errors)
+{
+ // the plugin_id must exist in the DB as inactive
+ $db_plugins = get_db_plugins('', $plugin_id);
+ if (!empty($db_plugins))
+ {
+ $crt_db_plugin = $db_plugins[0];
+ if ($crt_db_plugin['state'] != 'inactive')
+ {
+ array_push($errors, 'CANNOT ACTIVATE - INVALID CURRENT STATE ' . $crt_db_plugin['state']);
+ return false;
+ }
+ }
+ else
+ {
+ array_push($errors, 'CANNOT ACTIVATE - NOT INSTALLED');
+ return false;
+ }
+
+ // now try to activate it
+ $file_to_include = PHPWG_PLUGINS_PATH . $plugin_id . '/maintain.inc.php';
+ if (file_exists($file_to_include))
+ {
+ include_once($file_to_include);
+ if (function_exists('plugin_activate'))
+ {
+ plugin_activate($plugin_id, $crt_db_plugin['version'], $errors);
+ }
+ }
+ if (empty($errors))
+ {
+ $query = '
+UPDATE ' . PLUGINS_TABLE . ' SET state="active" WHERE id="' . $plugin_id . '"';
+ pwg_query($query);
+ return true;
+ }
+ return false;
+}
+
+
+/**
+ * Deactivates a plugin. It will be unloaded only on the next page ...
+ * @param string $plugin_id the plugin to activate
+ * @param array $errors errors to be returned
+ */
+function deactivate_plugin($plugin_id, &$errors)
+{
+ // the plugin_id must exist in the DB as inactive
+ $db_plugins = get_db_plugins('', $plugin_id);
+ if (!empty($db_plugins))
+ {
+ $crt_db_plugin = $db_plugins[0];
+ if ($crt_db_plugin['state'] != 'active')
+ {
+ array_push($errors, 'CANNOT DEACTIVATE - INVALID CURRENT STATE ' . $crt_db_plugin['state']);
+ return false;
+ }
+ }
+ else
+ {
+ array_push($errors, 'CANNOT DEACTIVATE - NOT INSTALLED');
+ return false;
+ }
+
+ // now try to deactivate it
+ $query = '
+UPDATE ' . PLUGINS_TABLE . ' SET state="inactive" WHERE id="' . $plugin_id . '"';
+ pwg_query($query);
+
+ $file_to_include = PHPWG_PLUGINS_PATH . $plugin_id . '/maintain.inc.php';
+ if (file_exists($file_to_include))
+ {
+ include_once($file_to_include);
+ if (function_exists('plugin_deactivate'))
+ {
+ plugin_deactivate($plugin_id);
+ }
+ }
+ return true;
+}
+
+
+/**
* Retrieves an url for a plugin page.
* @param string file - php script full name
*/
@@ -287,6 +374,7 @@ function extension_name_compare($a, $b)
{
return strcmp(strtolower($a['ext_name']), strtolower($b['ext_name']));
}
+
function extension_author_compare($a, $b)
{
$r = strcmp(strtolower($a['author']), strtolower($b['author']));
@@ -294,4 +382,14 @@ function extension_author_compare($a, $b)
else return $r;
}
+function plugin_author_compare($a, $b)
+{
+ return strcasecmp( $a['author'], $b['author']);
+}
+
+function plugin_version_compare($a, $b)
+{
+ return version_compare( $a['version'], $b['version']);
+}
+
?> \ No newline at end of file