Change plugin to addon

change the use of plugin to addon where appropriate.
This commit is contained in:
Adam Magness 2018-01-17 14:22:38 -05:00
parent 3bad83f24e
commit b86b04a81a
25 changed files with 164 additions and 164 deletions

View file

@ -798,19 +798,19 @@ function run_update_function($x)
}
/**
* @brief Synchronise plugins:
* @brief Synchronise addons:
*
* $a->config['system']['addon'] contains a comma-separated list of names
* of plugins/addons which are used on this system.
* of addons which are used on this system.
* Go through the database list of already installed addons, and if we have
* an entry, but it isn't in the config list, call the uninstall procedure
* and mark it uninstalled in the database (for now we'll remove it).
* Then go through the config list and if we have a plugin that isn't installed,
* Then go through the config list and if we have a addon that isn't installed,
* call the install procedure and add it to the database.
*
* @param object $a App
*/
function check_plugins(App $a)
function check_addons(App $a)
{
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
if (DBM::is_result($r)) {
@ -819,20 +819,20 @@ function check_plugins(App $a)
$installed = [];
}
$plugins = Config::get('system', 'addon');
$plugins_arr = [];
$addons = Config::get('system', 'addon');
$addons_arr = [];
if ($plugins) {
$plugins_arr = explode(',', str_replace(' ', '', $plugins));
if ($addons) {
$addons_arr = explode(',', str_replace(' ', '', $addons));
}
$a->plugins = $plugins_arr;
$a->addons = $addons_arr;
$installed_arr = [];
if (count($installed)) {
foreach ($installed as $i) {
if (!in_array($i['name'], $plugins_arr)) {
if (!in_array($i['name'], $addons_arr)) {
Addon::uninstall($i['name']);
} else {
$installed_arr[] = $i['name'];
@ -840,8 +840,8 @@ function check_plugins(App $a)
}
}
if (count($plugins_arr)) {
foreach ($plugins_arr as $p) {
if (count($addons_arr)) {
foreach ($addons_arr as $p) {
if (!in_array($p, $installed_arr)) {
Addon::install($p);
}

View file

@ -213,9 +213,9 @@ function api_login(App $a)
];
/*
* A plugin indicates successful login by setting 'authenticated' to non-zero value and returning a user record
* Plugins should never set 'authenticated' except to indicate success - as hooks may be chained
* and later plugins should not interfere with an earlier one that succeeded.
* An addon indicates successful login by setting 'authenticated' to non-zero value and returning a user record
* Addons should never set 'authenticated' except to indicate success - as hooks may be chained
* and later addons should not interfere with an earlier one that succeeded.
*/
Addon::callHooks('authenticate', $addon_auth);

View file

@ -601,7 +601,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
}
/// @TODO old-lost code?
// Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
// Shouldn't happen but we want to make absolutely sure it doesn't leak from an addon.
// Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<"
//if ((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
// $arr['body'] = strip_tags($arr['body']);
@ -954,7 +954,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
unset($arr['api_source']);
if (x($arr, 'cancel')) {
logger('item_store: post cancelled by plugin.');
logger('item_store: post cancelled by addon.');
return 0;
}

View file

@ -94,7 +94,7 @@ function pop_lang() {
/**
* load string translation table for alternate language
*
* first plugin strings are loaded, then globals
* first addon strings are loaded, then globals
*
* @param string $lang language code to load
*/
@ -102,9 +102,9 @@ function load_translation_table($lang) {
$a = get_app();
$a->strings = [];
// load enabled plugins strings
$plugins = dba::select('addon', ['name'], ['installed' => true]);
while ($p = dba::fetch($plugins)) {
// load enabled addons strings
$addons = dba::select('addon', ['name'], ['installed' => true]);
while ($p = dba::fetch($addons)) {
$name = $p['name'];
if (file_exists("addon/$name/lang/$lang/strings.php")) {
include("addon/$name/lang/$lang/strings.php");

View file

@ -180,7 +180,7 @@ if (! x($_SESSION, 'last_updated')) {
/*
* check_config() is responsible for running update scripts. These automatically
* update the DB schema whenever we push a new one out. It also checks to see if
* any plugins have been added or removed and reacts accordingly.
* any addons have been added or removed and reacts accordingly.
*/
// in install mode, any url loads install module
@ -192,7 +192,7 @@ if ($install && $a->module!="view") {
} else {
check_url($a);
check_db(false);
check_plugins($a);
check_addons($a);
}
Nav::setSelected('nothing');
@ -228,7 +228,7 @@ if (strlen($a->module)) {
/**
* We will always have a module name.
* First see if we have a plugin which is masquerading as a module.
* First see if we have an addon which is masquerading as a module.
*/
// Compatibility with the Android Diaspora client
@ -243,7 +243,7 @@ if (strlen($a->module)) {
$privateapps = Config::get('config', 'private_addons');
if (is_array($a->plugins) && in_array($a->module, $a->plugins) && file_exists("addon/{$a->module}/{$a->module}.php")) {
if (is_array($a->addons) && in_array($a->module, $a->addons) && file_exists("addon/{$a->module}/{$a->module}.php")) {
//Check if module is an app and if public access to apps is allowed or not
if ((!local_user()) && Addon::isApp($a->module) && $privateapps === "1") {
info(t("You must be logged in to use addons. "));

View file

@ -58,7 +58,7 @@ function admin_post(App $a)
case 'users':
admin_page_users_post($a);
break;
case 'plugins':
case 'addons':
if ($a->argc > 2 &&
is_file("addon/" . $a->argv[2] . "/" . $a->argv[2] . ".php")) {
@include_once("addon/" . $a->argv[2] . "/" . $a->argv[2] . ".php");
@ -67,7 +67,7 @@ function admin_post(App $a)
$func($a);
}
}
$return_path = 'admin/plugins/' . $a->argv[2];
$return_path = 'admin/addons/' . $a->argv[2];
break;
case 'themes':
if ($a->argc < 2) {
@ -172,7 +172,7 @@ function admin_content(App $a)
$aside_sub = [
'site' => ["admin/site/" , t("Site") , "site"],
'users' => ["admin/users/" , t("Users") , "users"],
'plugins' => ["admin/plugins/" , t("Plugins") , "plugins"],
'addons' => ["admin/addons/" , t("Addons") , "addons"],
'themes' => ["admin/themes/" , t("Themes") , "themes"],
'features' => ["admin/features/" , t("Additional features") , "features"],
'dbsync' => ["admin/dbsync/" , t('DB updates') , "dbsync"],
@ -183,15 +183,15 @@ function admin_content(App $a)
'deleteitem' => ["admin/deleteitem/" , t('Delete Item') , 'deleteitem'],
];
/* get plugins admin page */
/* get addons admin page */
$r = q("SELECT `name` FROM `addon` WHERE `plugin_admin` = 1 ORDER BY `name`");
$aside_tools['plugins_admin'] = [];
$aside_tools['addons_admin'] = [];
foreach ($r as $h) {
$plugin = $h['name'];
$aside_tools['plugins_admin'][] = ["admin/plugins/" . $plugin, $plugin, "plugin"];
// temp plugins with admin
$a->plugins_admin[] = $plugin;
$addon = $h['name'];
$aside_tools['addons_admin'][] = ["admin/addons/" . $addon, $addon, "addon"];
// temp addons with admin
$a->addons_admin[] = $addon;
}
$aside_tools['logs'] = ["admin/logs/", t("Logs"), "logs"];
@ -204,7 +204,7 @@ function admin_content(App $a)
'$admin' => $aside_tools,
'$subpages' => $aside_sub,
'$admtxt' => t('Admin'),
'$plugadmtxt' => t('Plugin Features'),
'$plugadmtxt' => t('Addon Features'),
'$logtxt' => t('Logs'),
'$diagnosticstxt' => t('diagnostics'),
'$h_pending' => t('User registrations waiting for confirmation'),
@ -222,8 +222,8 @@ function admin_content(App $a)
case 'users':
$o = admin_page_users($a);
break;
case 'plugins':
$o = admin_page_plugins($a);
case 'addons':
$o = admin_page_addons($a);
break;
case 'themes':
$o = admin_page_themes($a);
@ -781,7 +781,7 @@ function admin_page_summary(App $a)
'$platform' => FRIENDICA_PLATFORM,
'$codename' => FRIENDICA_CODENAME,
'$build' => Config::get('system', 'build'),
'$plugins' => [t('Active plugins'), $a->plugins],
'$addons' => [t('Active addons'), $a->addons],
'$showwarning' => $showwarning,
'$warningtext' => $warningtext
]);
@ -1725,54 +1725,54 @@ function admin_page_users(App $a)
}
/**
* @brief Plugins admin page
* @brief Addons admin page
*
* This function generates the admin panel page for managing plugins on the
* friendica node. If a plugin name is given a single page showing the details
* This function generates the admin panel page for managing addons on the
* friendica node. If an addon name is given a single page showing the details
* for this addon is generated. If no name is given, a list of available
* plugins is shown.
* addons is shown.
*
* The template used for displaying the list of plugins and the details of the
* plugin are the same as used for the templates.
* The template used for displaying the list of addons and the details of the
* addon are the same as used for the templates.
*
* The returned string returned hulds the HTML code of the page.
*
* @param App $a
* @return string
*/
function admin_page_plugins(App $a)
function admin_page_addons(App $a)
{
/*
* Single plugin
* Single addon
*/
if ($a->argc == 3) {
$plugin = $a->argv[2];
if (!is_file("addon/$plugin/$plugin.php")) {
$addon = $a->argv[2];
if (!is_file("addon/$addon/$addon.php")) {
notice(t("Item not found."));
return '';
}
if (x($_GET, "a") && $_GET['a'] == "t") {
check_form_security_token_redirectOnErr('/admin/plugins', 'admin_themes', 't');
check_form_security_token_redirectOnErr('/admin/addons', 'admin_themes', 't');
// Toggle plugin status
$idx = array_search($plugin, $a->plugins);
// Toggle addon status
$idx = array_search($addon, $a->addons);
if ($idx !== false) {
unset($a->plugins[$idx]);
Addon::uninstall($plugin);
info(t("Plugin %s disabled.", $plugin));
unset($a->addons[$idx]);
Addon::uninstall($addon);
info(t("Addon %s disabled.", $addon));
} else {
$a->plugins[] = $plugin;
Addon::install($plugin);
info(t("Plugin %s enabled.", $plugin));
$a->addons[] = $addon;
Addon::install($addon);
info(t("Addon %s enabled.", $addon));
}
Config::set("system", "addon", implode(", ", $a->plugins));
goaway('admin/plugins');
Config::set("system", "addon", implode(", ", $a->addons));
goaway('admin/addons');
return ''; // NOTREACHED
}
// display plugin details
if (in_array($plugin, $a->plugins)) {
// display addon details
if (in_array($addon, $a->addons)) {
$status = "on";
$action = t("Disable");
} else {
@ -1781,16 +1781,16 @@ function admin_page_plugins(App $a)
}
$readme = Null;
if (is_file("addon/$plugin/README.md")) {
$readme = Markdown::convert(file_get_contents("addon/$plugin/README.md"), false);
} elseif (is_file("addon/$plugin/README")) {
$readme = "<pre>" . file_get_contents("addon/$plugin/README") . "</pre>";
if (is_file("addon/$addon/README.md")) {
$readme = Markdown::convert(file_get_contents("addon/$addon/README.md"), false);
} elseif (is_file("addon/$addon/README")) {
$readme = "<pre>" . file_get_contents("addon/$addon/README") . "</pre>";
}
$admin_form = "";
if (in_array($plugin, $a->plugins_admin)) {
@require_once("addon/$plugin/$plugin.php");
$func = $plugin . '_plugin_admin';
if (in_array($addon, $a->addons_admin)) {
@require_once("addon/$addon/$addon.php");
$func = $addon . '_plugin_admin';
$func($a, $admin_form);
}
@ -1798,20 +1798,20 @@ function admin_page_plugins(App $a)
return replace_macros($t, [
'$title' => t('Administration'),
'$page' => t('Plugins'),
'$page' => t('Addons'),
'$toggle' => t('Toggle'),
'$settings' => t('Settings'),
'$baseurl' => System::baseUrl(true),
'$plugin' => $plugin,
'$addon' => $addon,
'$status' => $status,
'$action' => $action,
'$info' => Addon::getInfo($plugin),
'$info' => Addon::getInfo($addon),
'$str_author' => t('Author: '),
'$str_maintainer' => t('Maintainer: '),
'$admin_form' => $admin_form,
'$function' => 'plugins',
'$function' => 'addons',
'$screenshot' => '',
'$readme' => $readme,
@ -1820,36 +1820,36 @@ function admin_page_plugins(App $a)
}
/*
* List plugins
* List addons
*/
if (x($_GET, "a") && $_GET['a'] == "r") {
check_form_security_token_redirectOnErr(System::baseUrl() . '/admin/plugins', 'admin_themes', 't');
check_form_security_token_redirectOnErr(System::baseUrl() . '/admin/addons', 'admin_themes', 't');
Addon::reload();
info("Plugins reloaded");
goaway(System::baseUrl() . '/admin/plugins');
info("Addons reloaded");
goaway(System::baseUrl() . '/admin/addons');
}
$plugins = [];
$addons = [];
$files = glob("addon/*/");
if (is_array($files)) {
foreach ($files as $file) {
if (is_dir($file)) {
list($tmp, $id) = array_map("trim", explode("/", $file));
$info = Addon::getInfo($id);
$show_plugin = true;
$show_addon = true;
// If the addon is unsupported, then only show it, when it is enabled
if ((strtolower($info["status"]) == "unsupported") && !in_array($id, $a->plugins)) {
$show_plugin = false;
if ((strtolower($info["status"]) == "unsupported") && !in_array($id, $a->addons)) {
$show_addon = false;
}
// Override the above szenario, when the admin really wants to see outdated stuff
if (Config::get("system", "show_unsupported_addons")) {
$show_plugin = true;
$show_addon = true;
}
if ($show_plugin) {
$plugins[] = [$id, (in_array($id, $a->plugins) ? "on" : "off"), $info];
if ($show_addon) {
$addons[] = [$id, (in_array($id, $a->addons) ? "on" : "off"), $info];
}
}
}
@ -1858,14 +1858,14 @@ function admin_page_plugins(App $a)
$t = get_markup_template('admin/plugins.tpl');
return replace_macros($t, [
'$title' => t('Administration'),
'$page' => t('Plugins'),
'$page' => t('Addons'),
'$submit' => t('Save Settings'),
'$reload' => t('Reload active plugins'),
'$reload' => t('Reload active addons'),
'$baseurl' => System::baseUrl(true),
'$function' => 'plugins',
'$plugins' => $plugins,
'$pcount' => count($plugins),
'$noplugshint' => t('There are currently no plugins available on your node. You can find the official plugin repository at %1$s and might find other interesting plugins in the open plugin registry at %2$s', 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
'$function' => 'addons',
'$addons' => $addons,
'$pcount' => count($addons),
'$noplugshint' => t('There are currently no addons available on your node. You can find the official addon repository at %1$s and might find other interesting addons in the open addon registry at %2$s', 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
'$form_security_token' => get_form_security_token("admin_themes"),
]);
}
@ -1940,7 +1940,7 @@ function rebuild_theme_table($themes)
* themes is generated.
*
* The template used for displaying the list of themes and the details of the
* themes are the same as used for the plugins.
* themes are the same as used for the addons.
*
* The returned string contains the HTML code of the admin panel page.
*
@ -2071,7 +2071,7 @@ function admin_page_themes(App $a)
'$toggle' => t('Toggle'),
'$settings' => t('Settings'),
'$baseurl' => System::baseUrl(true),
'$plugin' => $theme,
'$addon' => $theme,
'$status' => $status,
'$action' => $action,
'$info' => Theme::getInfo($theme),
@ -2103,9 +2103,9 @@ function admin_page_themes(App $a)
* List themes
*/
$plugins = [];
$addons = [];
foreach ($themes as $th) {
$plugins[] = [$th['name'], (($th['allowed']) ? "on" : "off"), Theme::getInfo($th['name'])];
$addons[] = [$th['name'], (($th['allowed']) ? "on" : "off"), Theme::getInfo($th['name'])];
}
$t = get_markup_template('admin/plugins.tpl');
@ -2116,7 +2116,7 @@ function admin_page_themes(App $a)
'$reload' => t('Reload active themes'),
'$baseurl' => System::baseUrl(true),
'$function' => 'themes',
'$plugins' => $plugins,
'$addons' => $addons,
'$pcount' => count($themes),
'$noplugshint' => t('No themes found on the system. They should be placed in %1$s', '<code>/view/themes</code>'),
'$experimental' => t('[Experimental]'),

View file

@ -26,12 +26,12 @@ function friendica_init(App $a) {
$admin = false;
}
$visible_plugins = [];
if (is_array($a->plugins) && count($a->plugins)) {
$visible_addons = [];
if (is_array($a->addons) && count($a->addons)) {
$r = q("SELECT * FROM `addon` WHERE `hidden` = 0");
if (DBM::is_result($r)) {
foreach($r as $rr) {
$visible_plugins[] = $rr['name'];
$visible_addons[] = $rr['name'];
}
}
}
@ -51,7 +51,7 @@ function friendica_init(App $a) {
$data = [
'version' => FRIENDICA_VERSION,
'url' => System::baseUrl(),
'plugins' => $visible_plugins,
'addons' => $visible_addons,
'locked_features' => $locked_features,
'register_policy' => $register_policy[$a->config['register_policy']],
'admin' => $admin,
@ -84,19 +84,19 @@ function friendica_content(App $a) {
$o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendica - dot com');
$o .= '</p>' . PHP_EOL;
$visible_plugins = [];
if (is_array($a->plugins) && count($a->plugins)) {
$visible_addons = [];
if (is_array($a->addons) && count($a->addons)) {
$r = q("SELECT * FROM `addon` WHERE `hidden` = 0");
if (DBM::is_result($r)) {
foreach($r as $rr) {
$visible_plugins[] = $rr['name'];
$visible_addons[] = $rr['name'];
}
}
}
if (count($visible_plugins)) {
$o .= '<p>' . t('Installed plugins/addons/apps:') . '</p>' . PHP_EOL;
$sorted = $visible_plugins;
if (count($visible_addons)) {
$o .= '<p>' . t('Installed addons/addons/apps:') . '</p>' . PHP_EOL;
$sorted = $visible_addons;
$s = '';
sort($sorted);
foreach ($sorted as $p) {
@ -109,7 +109,7 @@ function friendica_content(App $a) {
}
$o .= '<div style="margin-left: 25px; margin-right: 25px;">' . $s . '</div>' . PHP_EOL;
} else {
$o .= '<p>' . t('No installed plugins/addons/apps') . '</p>' . PHP_EOL;
$o .= '<p>' . t('No installed addons/addons/apps') . '</p>' . PHP_EOL;
}
$blocklist = Config::get('system', 'blocklist');

View file

@ -731,7 +731,7 @@ function item_post(App $a) {
$datarray['object'] = $object;
/*
* These fields are for the convenience of plugins...
* These fields are for the convenience of addons...
* 'self' if true indicates the owner is posting on their own wall
* If parent is 0 it is a top-level post.
*/
@ -776,7 +776,7 @@ function item_post(App $a) {
Addon::callHooks('post_local',$datarray);
if (x($datarray, 'cancel')) {
logger('mod_item: post cancelled by plugin.');
logger('mod_item: post cancelled by addon.');
if ($return_path) {
goaway($return_path);
}

View file

@ -152,22 +152,22 @@ function nodeinfo_cron() {
$a = get_app();
// If the plugin 'statistics_json' is enabled then disable it and actrivate nodeinfo.
// If the addon 'statistics_json' is enabled then disable it and actrivate nodeinfo.
if (Addon::isEnabled('statistics_json')) {
Config::set('system', 'nodeinfo', true);
$plugin = 'statistics_json';
$plugins = Config::get('system', 'addon');
$plugins_arr = [];
$addon = 'statistics_json';
$addons = Config::get('system', 'addon');
$addons_arr = [];
if ($plugins) {
$plugins_arr = explode(',',str_replace(' ', '',$plugins));
if ($addons) {
$addons_arr = explode(',',str_replace(' ', '',$addons));
$idx = array_search($plugin, $plugins_arr);
$idx = array_search($addon, $addons_arr);
if ($idx !== false) {
unset($plugins_arr[$idx]);
Addon::uninstall($plugin);
Config::set('system', 'addon', implode(', ',$plugins_arr));
unset($addons_arr[$idx]);
Addon::uninstall($addon);
Config::set('system', 'addon', implode(', ',$addons_arr));
}
}
}

View file

@ -7,7 +7,7 @@
* If the required arguments aren't present, we'll display a simple form to choose a recipient and a verb.
* parent is a special argument which let's you attach this activity as a comment to an existing conversation, which
* may have started with somebody else poking (etc.) somebody, but this isn't necessary. This can be used in the more pokes
* plugin version to have entire conversations where Alice poked Bob, Bob fingered Alice, Alice hugged Bob, etc.
* addon version to have entire conversations where Alice poked Bob, Bob fingered Alice, Alice hugged Bob, etc.
*
* private creates a private conversation with the recipient. Otherwise your profile's default post privacy is used.
*

View file

@ -77,7 +77,7 @@ function settings_init(App $a)
];
$tabs[] = [
'label' => t('Plugins'),
'label' => t('Addons'),
'url' => 'settings/addon',
'selected' => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
'accesskey' => 'l',
@ -751,7 +751,7 @@ function settings_content(App $a)
$r = q("SELECT * FROM `hook` WHERE `hook` = 'plugin_settings' ");
if (!DBM::is_result($r)) {
$settings_addons = t('No Plugin settings configured');
$settings_addons = t('No Addon settings configured');
}
Addon::callHooks('plugin_settings', $settings_addons);
@ -760,7 +760,7 @@ function settings_content(App $a)
$tpl = get_markup_template('settings/addons.tpl');
$o .= replace_macros($tpl, [
'$form_security_token' => get_form_security_token("settings_addon"),
'$title' => t('Plugin Settings'),
'$title' => t('Addon Settings'),
'$settings_addons' => $settings_addons
]);
return $o;

View file

@ -56,8 +56,8 @@ class App
public $hooks;
public $timezone;
public $interactive = true;
public $plugins;
public $plugins_admin = [];
public $addons;
public $addons_admin = [];
public $apps = [];
public $identities;
public $is_mobile = false;

View file

@ -969,7 +969,7 @@ class GContact
/**
* @brief Fetches users of given GNU Social server
*
* If the "Statistics" plugin is enabled (See http://gstools.org/ for details) we query user data with this.
* If the "Statistics" addon is enabled (See http://gstools.org/ for details) we query user data with this.
*
* @param string $server Server address
* @return void

View file

@ -390,7 +390,7 @@ class User
$photo = avatar_img($email);
}
// unless there is no avatar-plugin loaded
// unless there is no avatar-addon loaded
if (strlen($photo)) {
$photo_failure = false;

View file

@ -89,9 +89,9 @@ class Login extends BaseModule
];
/*
* A plugin indicates successful login by setting 'authenticated' to non-zero value and returning a user record
* Plugins should never set 'authenticated' except to indicate success - as hooks may be chained
* and later plugins should not interfere with an earlier one that succeeded.
* An addon indicates successful login by setting 'authenticated' to non-zero value and returning a user record
* Addons should never set 'authenticated' except to indicate success - as hooks may be chained
* and later addons should not interfere with an earlier one that succeeded.
*/
Addon::callHooks('authenticate', $addon_auth);

View file

@ -759,10 +759,10 @@ class Post extends BaseObject
$qc = $qcomment = null;
/*
* Hmmm, code depending on the presence of a particular plugin?
* Hmmm, code depending on the presence of a particular addon?
* This should be better if done by a hook
*/
if (in_array('qcomment', $a->plugins)) {
if (in_array('qcomment', $a->addons)) {
$qc = ((local_user()) ? PConfig::get(local_user(), 'qcomment', 'words') : null);
$qcomment = (($qc) ? explode("\n", $qc) : null);
}

View file

@ -85,21 +85,21 @@ function update_1191() {
Config::set('system', 'maintenance', 1);
if (Addon::isEnabled('forumlist')) {
$plugin = 'forumlist';
$plugins = Config::get('system','addon');
$plugins_arr = [];
$addon = 'forumlist';
$addons = Config::get('system', 'addon');
$addons_arr = [];
if ($plugins) {
$plugins_arr = explode(",",str_replace(" ", "",$plugins));
if ($addons) {
$addons_arr = explode(",",str_replace(" ", "", $addons));
$idx = array_search($plugin, $plugins_arr);
$idx = array_search($addon, $addons_arr);
if ($idx !== false){
unset($plugins_arr[$idx]);
unset($addons_arr[$idx]);
//delete forumlist manually from addon and hook table
// since Addon::uninstall() don't work here
q("DELETE FROM `addon` WHERE `name` = 'forumlist' ");
q("DELETE FROM `hook` WHERE `file` = 'addon/forumlist/forumlist.php' ");
Config::set('system','addon', implode(", ",$plugins_arr));
Config::set('system','addon', implode(", ", $addons_arr));
}
}
}

View file

@ -386,12 +386,12 @@ $a->strings["Contacts who are not members of a group"] = "";
$a->strings["Theme settings updated."] = "";
$a->strings["Site"] = "";
$a->strings["Users"] = "";
$a->strings["Plugins"] = "";
$a->strings["Addons"] = "";
$a->strings["Themes"] = "";
$a->strings["DB updates"] = "";
$a->strings["Logs"] = "";
$a->strings["Admin"] = "";
$a->strings["Plugin Features"] = "";
$a->strings["Addon Features"] = "";
$a->strings["User registrations waiting for confirmation"] = "";
$a->strings["Normal Account"] = "";
$a->strings["Soapbox Account"] = "";
@ -405,7 +405,7 @@ $a->strings["Summary"] = "";
$a->strings["Registered users"] = "";
$a->strings["Pending registrations"] = "";
$a->strings["Version"] = "";
$a->strings["Active plugins"] = "";
$a->strings["Active addons"] = "";
$a->strings["Can not parse base url. Must have at least <scheme>://<domain>"] = "";
$a->strings["Site settings updated."] = "";
$a->strings["No special theme for mobile devices"] = "";
@ -579,8 +579,8 @@ $a->strings["Name of the new user."] = "";
$a->strings["Nickname"] = "";
$a->strings["Nickname of the new user."] = "";
$a->strings["Email address of the new user."] = "";
$a->strings["Plugin %s disabled."] = "";
$a->strings["Plugin %s enabled."] = "";
$a->strings["Addon %s disabled."] = "";
$a->strings["Addon %s enabled."] = "";
$a->strings["Disable"] = "";
$a->strings["Enable"] = "";
$a->strings["Toggle"] = "";
@ -812,8 +812,8 @@ $a->strings["Connected Apps"] = "";
$a->strings["Client key starts with"] = "";
$a->strings["No name"] = "";
$a->strings["Remove authorization"] = "";
$a->strings["No Plugin settings configured"] = "";
$a->strings["Plugin Settings"] = "";
$a->strings["No Addon settings configured"] = "";
$a->strings["Addon Settings"] = "";
$a->strings["Off"] = "";
$a->strings["On"] = "";
$a->strings["Additional Features"] = "";
@ -1128,8 +1128,8 @@ $a->strings["running at web location"] = "";
$a->strings["Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn more about the Friendica project."] = "";
$a->strings["Bug reports and issues: please visit"] = "";
$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - dot com"] = "";
$a->strings["Installed plugins/addons/apps:"] = "";
$a->strings["No installed plugins/addons/apps"] = "";
$a->strings["Installed addons/addons/apps:"] = "";
$a->strings["No installed addons/addons/apps"] = "";
$a->strings["Authorize application connection"] = "";
$a->strings["Return to your app and insert this Securty Code:"] = "";
$a->strings["Please login to continue."] = "";

View file

@ -26,9 +26,9 @@
{{/if}}
{{if $admin.plugins_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
{{if $admin.addons_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
<ul class='admin linklist'>
{{foreach $admin.plugins_admin as $l}}
{{foreach $admin.addons_admin as $l}}
<li class='admin link button {{$l.2}}'><a href='{{$l.0}}'>{{$l.1}}</a></li>
{{/foreach}}
</ul>

View file

@ -8,7 +8,7 @@
{{else}}
<a class="btn" href="{{$baseurl}}/admin/{{$function}}?a=r&amp;t={{$form_security_token}}">{{$reload}}</a>
<ul id='pluginslist'>
{{foreach $plugins as $p}}
{{foreach $addons as $p}}
<li class='plugin {{$p.1}}'>
<a class='toggleplugin' href='{{$baseurl}}/admin/{{$function}}/{{$p.0}}?a=t&amp;t={{$form_security_token}}' title="{{if $p.1==on}}Disable{{else}}Enable{{/if}}" ><span class='icon {{$p.1}}'></span></a>
<a href='{{$baseurl}}/admin/{{$function}}/{{$p.0}}'><span class='name'>{{$p.2.name}}</span></a> - <span class="version">{{$p.2.version}}</span>

View file

@ -2,7 +2,7 @@
<div id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<p><span class='toggleplugin icon {{$status}}'></span> {{$info.name}} - {{$info.version}} : <a href="{{$baseurl}}/admin/{{$function}}/{{$plugin}}/?a=t&amp;t={{$form_security_token}}">{{$action}}</a></p>
<p><span class='toggleplugin icon {{$status}}'></span> {{$info.name}} - {{$info.version}} : <a href="{{$baseurl}}/admin/{{$function}}/{{$addon}}/?a=t&amp;t={{$form_security_token}}">{{$action}}</a></p>
<p>{{$info.description}}</p>
<p class="author">{{$str_author}}
@ -23,7 +23,7 @@
{{if $admin_form}}
<h3>{{$settings}}</h3>
<form method="post" action="{{$baseurl}}/admin/{{$function}}/{{$plugin}}/">
<form method="post" action="{{$baseurl}}/admin/{{$function}}/{{$addon}}/">
{{$admin_form}}
</form>
{{/if}}

View file

@ -31,10 +31,10 @@
<dl>
<dt>{{$plugins.0}}</dt>
<dt>{{$addons.0}}</dt>
{{foreach $plugins.1 as $p}}
<dd><a href="/admin/plugins/{{$p}}/">{{$p}}</a></dd>
{{foreach $addons.1 as $p}}
<dd><a href="/admin/addons/{{$p}}/">{{$p}}</a></dd>
{{/foreach}}
</dl>

View file

@ -37,11 +37,11 @@
{{/if}}
</div>
{{if $admin.plugins_admin}}
{{if $admin.addons_admin}}
<div class="widget">
<h3>{{$plugadmtxt}}</h3>
<ul role="menu">
{{foreach $admin.plugins_admin as $name => $item}}
{{foreach $admin.addons_admin as $name => $item}}
<li role="menuitem" class="{{$item.2}}">
<a href="{{$item.0}}" {{if $item.accesskey}}accesskey="{{$item.accesskey}}"{{/if}}>
{{$item.1}}

View file

@ -4,7 +4,7 @@
<ul class='admin linklist'>
<li class='admin button {{$admin.site.2}}'><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
<li class='admin button {{$admin.users.2}}'><a href='{{$admin.users.0}}'>{{$admin.users.1}}</a><span id='pending-update' title='{{$h_pending}}'></span></li>
<li class='admin button {{$admin.plugins.2}}'><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
<li class='admin button {{$admin.addons.2}}'><a href='{{$admin.addons.0}}'>{{$admin.addons.1}}</a></li>
<li class='admin button {{$admin.themes.2}}'><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
<li class='admin button {{$admin.dbsync.2}}'><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
</ul>
@ -17,9 +17,9 @@
{{/if}}
{{if $admin.plugins_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
{{if $admin.addons_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
<ul class='admin linklist'>
{{foreach $admin.plugins_admin as $l}}
{{foreach $admin.addons_admin as $l}}
<li class='admin button {{$l.2}}'><a href='{{$l.0}}'>{{$l.1}}</a></li>
{{/foreach}}
</ul>

View file

@ -4,7 +4,7 @@
<ul class='admin linklist'>
<li class='admin button {{$admin.site.2}}'><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
<li class='admin button {{$admin.users.2}}'><a href='{{$admin.users.0}}'>{{$admin.users.1}}</a><span id='pending-update' title='{{$h_pending}}'></span></li>
<li class='admin button {{$admin.plugins.2}}'><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
<li class='admin button {{$admin.addons.2}}'><a href='{{$admin.addons.0}}'>{{$admin.addons.1}}</a></li>
<li class='admin button {{$admin.themes.2}}'><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
<li class='admin button {{$admin.dbsync.2}}'><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
</ul>
@ -17,9 +17,9 @@
{{/if}}
{{if $admin.plugins_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
{{if $admin.addons_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
<ul class='admin linklist'>
{{foreach $admin.plugins_admin as $l}}
{{foreach $admin.addons_admin as $l}}
<li class='admin button {{$l.2}}'><a href='{{$l.0}}'>{{$l.1}}</a></li>
{{/foreach}}
</ul>