diff --git a/main/admin/settings.lib.php b/main/admin/settings.lib.php index 25ecf1e007..f33942b53b 100755 --- a/main/admin/settings.lib.php +++ b/main/admin/settings.lib.php @@ -245,7 +245,12 @@ function handlePlugins() // Plugins NOT installed echo Display::page_subheader(get_lang('Plugins')); - echo '
'; + echo ''; echo ''; echo ''; echo ''; echo ''; - /*$plugin_list = array(); - $my_plugin_list = $plugin_obj->get_plugin_regions(); - foreach($my_plugin_list as $plugin_item) { - $plugin_list[$plugin_item] = $plugin_item; - }*/ $installed = ''; $notInstalled = ''; foreach ($all_plugins as $pluginName) { @@ -268,22 +268,25 @@ function handlePlugins() $plugin_info = []; require $plugin_info_file; - $officialRibbon = ''; if (in_array($pluginName, $officialPlugins)) { - $officialRibbon = '
'.get_lang('PluginOfficial').'
'; + $officialRibbon = '
+ '.get_lang('PluginOfficial').'
'; } else { - $officialRibbon = '
'.get_lang('PluginThirdParty').'
'; + $officialRibbon = '
+ '.get_lang('PluginThirdParty').'
'; } $pluginRow = ''; - if (in_array($pluginName, $installed_plugins)) { + $isInstalled = in_array($pluginName, $installed_plugins); + if ($isInstalled) { $pluginRow .= ''; } else { $pluginRow .= ''; } $pluginRow .= ''; - if (in_array($pluginName, $installed_plugins)) { + if ($isInstalled) { $installed .= $pluginRow; } else { $notInstalled .= $pluginRow; diff --git a/main/admin/settings.php b/main/admin/settings.php index 5e564e81cd..f19a3ed35f 100755 --- a/main/admin/settings.php +++ b/main/admin/settings.php @@ -1,4 +1,5 @@ ['status', 'installed', 'Plugins'], - ] - ); + + if (api_is_multiple_url_enabled()) { + $urlId = api_get_current_access_url_id(); + $plugins = api_get_settings_params( + [ + 'variable = ? AND selected_value = ? AND category = ? AND access_url = ? ' => [ + 'status', + 'installed', + 'Plugins', + $urlId, + ], + ] + ); + } else { + $plugins = api_get_settings_params( + [ + 'variable = ? AND selected_value = ? AND category = ? ' => ['status', 'installed', 'Plugins'], + ] + ); + } if (!empty($plugins)) { foreach ($plugins as $row) { @@ -161,6 +176,26 @@ class AppPlugin return $installedPlugins; } + public function getInstalledPluginsInCurrentUrl() + { + $installedPlugins = []; + $urlId = api_get_current_access_url_id(); + $plugins = api_get_settings_params( + [ + 'variable = ? AND selected_value = ? AND category = ? AND access_url = ?' => ['status', 'installed', 'Plugins', $urlId], + ] + ); + + if (!empty($plugins)) { + foreach ($plugins as $row) { + $installedPlugins[$row['subkey']] = true; + } + $installedPlugins = array_keys($installedPlugins); + } + + return $installedPlugins; + } + /** * Returns a list of all official (delivered with the Chamilo package) * plugins. This list is maintained manually and updated with every new
'; @@ -255,11 +260,6 @@ function handlePlugins() echo '
'; + // Checkbox - if (in_array($pluginName, $installed_plugins)) { + if ($isInstalled) { $pluginRow .= ''; } else { $pluginRow .= ''; @@ -295,7 +298,7 @@ function handlePlugins() $pluginRow .= '

'.get_lang('Author').': '.$plugin_info['author'].'

'; $pluginRow .= '
'; - if (in_array($pluginName, $installed_plugins)) { + if ($isInstalled) { $pluginRow .= Display::url( ' '.get_lang('Configure'), 'configure_plugin.php?name='.$pluginName, @@ -338,7 +341,7 @@ function handlePlugins() $pluginRow .= '
'; $pluginRow .= '