Speed performance: Use static to avoid querying the database.

pull/3023/head
Julio Montoya 6 years ago
parent e0a3f60e6a
commit c6e0fccdf3
  1. 2
      main/admin/configure_plugin.php
  2. 6
      main/admin/settings.lib.php
  3. 2
      main/document/document.php
  4. 53
      main/inc/lib/plugin.lib.php
  5. 2
      main/inc/lib/template.lib.php
  6. 2
      plugin/jcapture/plugin_applet.php
  7. 2
      plugin/jcapture/upload.php
  8. 2
      plugin/redirection/RedirectionPlugin.php

@ -15,7 +15,7 @@ api_protect_admin_script();
$pluginName = $_GET['name']; $pluginName = $_GET['name'];
$appPlugin = new AppPlugin(); $appPlugin = new AppPlugin();
$installedPlugins = $appPlugin->get_installed_plugins(); $installedPlugins = $appPlugin->getInstalledPlugins();
$pluginInfo = $appPlugin->getPluginInfo($pluginName, true); $pluginInfo = $appPlugin->getPluginInfo($pluginName, true);
if (!in_array($pluginName, $installedPlugins) || empty($pluginInfo)) { if (!in_array($pluginName, $installedPlugins) || empty($pluginInfo)) {

@ -41,7 +41,7 @@ function handleRegions()
} }
$plugin_obj = new AppPlugin(); $plugin_obj = new AppPlugin();
$installed_plugins = $plugin_obj->get_installed_plugins(); $installed_plugins = $plugin_obj->getInstalledPlugins();
echo '<form name="plugins" method="post" action="'.api_get_self().'?category='.Security::remove_XSS($_GET['category']).'">'; echo '<form name="plugins" method="post" action="'.api_get_self().'?category='.Security::remove_XSS($_GET['category']).'">';
echo '<table class="data_table">'; echo '<table class="data_table">';
@ -146,7 +146,7 @@ function handlePlugins()
} }
$all_plugins = $plugin_obj->read_plugins_from_path(); $all_plugins = $plugin_obj->read_plugins_from_path();
$installed_plugins = $plugin_obj->get_installed_plugins(); $installed_plugins = $plugin_obj->getInstalledPlugins();
// Plugins NOT installed // Plugins NOT installed
echo Display::page_subheader(get_lang('Plugins')); echo Display::page_subheader(get_lang('Plugins'));
@ -646,7 +646,7 @@ function storeRegions()
$plugin_obj = new AppPlugin(); $plugin_obj = new AppPlugin();
// Get a list of all current 'Plugins' settings // Get a list of all current 'Plugins' settings
$installed_plugins = $plugin_obj->get_installed_plugins(); $installed_plugins = $plugin_obj->getInstalledPlugins();
$shortlist_installed = []; $shortlist_installed = [];
if (!empty($installed_plugins)) { if (!empty($installed_plugins)) {
foreach ($installed_plugins as $plugin) { foreach ($installed_plugins as $plugin) {

@ -93,7 +93,7 @@ Session::erase('paint_dir');
Session::erase('temp_audio_nanogong'); Session::erase('temp_audio_nanogong');
$plugin = new AppPlugin(); $plugin = new AppPlugin();
$pluginList = $plugin->get_installed_plugins(); $pluginList = $plugin->getInstalledPlugins();
$capturePluginInstalled = in_array('jcapture', $pluginList); $capturePluginInstalled = in_array('jcapture', $pluginList);
if ($capturePluginInstalled) { if ($capturePluginInstalled) {

@ -61,30 +61,13 @@ class AppPlugin
return $plugins; return $plugins;
} }
/**
* @return array
*/
public function get_installed_plugins_by_region()
{
$plugins = [];
/* We retrieve all the active plugins. */
$result = api_get_settings('Plugins');
if (!empty($result)) {
foreach ($result as $row) {
$plugins[$row['variable']][] = $row['selected_value'];
}
}
return $plugins;
}
/** /**
* @return array * @return array
*/ */
public function getInstalledPluginListName() public function getInstalledPluginListName()
{ {
if (empty($this->installedPluginListName)) { if (empty($this->installedPluginListName)) {
$this->installedPluginListName = $this->get_installed_plugins(); $this->installedPluginListName = $this->getInstalledPlugins();
} }
return $this->installedPluginListName; return $this->installedPluginListName;
@ -118,22 +101,34 @@ class AppPlugin
} }
/** /**
* @param bool $fromDatabase
*
* @return array * @return array
*/ */
public function get_installed_plugins() public function getInstalledPlugins($fromDatabase = true)
{ {
$installedPlugins = []; static $installedPlugins = null;
$plugins = api_get_settings_params(
[ if ($fromDatabase === false) {
"variable = ? AND selected_value = ? AND category = ? " => ['status', 'installed', 'Plugins'], if (is_array($installedPlugins)) {
] return $installedPlugins;
); }
}
if (!empty($plugins)) { if ($fromDatabase || $installedPlugins === null) {
foreach ($plugins as $row) { $installedPlugins = [];
$installedPlugins[$row['subkey']] = true; $plugins = api_get_settings_params(
[
'variable = ? AND selected_value = ? AND category = ? ' => ['status', 'installed', 'Plugins'],
]
);
if (!empty($plugins)) {
foreach ($plugins as $row) {
$installedPlugins[$row['subkey']] = true;
}
$installedPlugins = array_keys($installedPlugins);
} }
$installedPlugins = array_keys($installedPlugins);
} }
return $installedPlugins; return $installedPlugins;

@ -902,7 +902,7 @@ class Template
$this->force_plugin_load $this->force_plugin_load
); );
$pluginList = $this->plugin->get_installed_plugins(); $pluginList = $this->plugin->getInstalledPlugins(false);
foreach ($pluginList as $plugin_name) { foreach ($pluginList as $plugin_name) {
// The plugin_info variable is available inside the plugin index // The plugin_info variable is available inside the plugin index
$pluginInfo = $this->plugin->getPluginInfo($plugin_name); $pluginInfo = $this->plugin->getPluginInfo($plugin_name);

@ -4,7 +4,7 @@
require_once __DIR__.'/../../main/inc/global.inc.php'; require_once __DIR__.'/../../main/inc/global.inc.php';
$plugin = new AppPlugin(); $plugin = new AppPlugin();
$pluginList = $plugin->get_installed_plugins(); $pluginList = $plugin->getInstalledPlugins();
$capturePluginInstalled = in_array('jcapture', $pluginList); $capturePluginInstalled = in_array('jcapture', $pluginList);
if (!$capturePluginInstalled) { if (!$capturePluginInstalled) {
exit; exit;

@ -6,7 +6,7 @@ require_once __DIR__.'/../../main/inc/global.inc.php';
api_protect_course_script(); api_protect_course_script();
$plugin = new AppPlugin(); $plugin = new AppPlugin();
$pluginList = $plugin->get_installed_plugins(); $pluginList = $plugin->getInstalledPlugins();
$capturePluginInstalled = in_array('jcapture', $pluginList); $capturePluginInstalled = in_array('jcapture', $pluginList);
if (!$capturePluginInstalled) { if (!$capturePluginInstalled) {
exit; exit;

@ -162,7 +162,7 @@ class RedirectionPlugin extends Plugin
{ {
// Check redirection plugin // Check redirection plugin
$plugin = new AppPlugin(); $plugin = new AppPlugin();
$pluginList = $plugin->get_installed_plugins(); $pluginList = $plugin->getInstalledPlugins();
$redirectionInstalled = in_array('redirection', $pluginList); $redirectionInstalled = in_array('redirection', $pluginList);
if ($redirectionInstalled) { if ($redirectionInstalled) {
$pluginInfo = $plugin->getPluginInfo('redirection'); $pluginInfo = $plugin->getPluginInfo('redirection');

Loading…
Cancel
Save