diff options
Diffstat (limited to 'admin')
-rw-r--r-- | admin/include/plugins.class.php | 33 | ||||
-rw-r--r-- | admin/plugins_list.php | 3 |
2 files changed, 20 insertions, 16 deletions
diff --git a/admin/include/plugins.class.php b/admin/include/plugins.class.php index 7ae27a00f..4cb1370fb 100644 --- a/admin/include/plugins.class.php +++ b/admin/include/plugins.class.php @@ -371,14 +371,15 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id=\'' . $plugin_id . '\''; return false; } - function get_incompatible_plugins() + function get_incompatible_plugins($actualize=false) { - if (isset($_SESSION['incompatible_plugins'])) + if (isset($_SESSION['incompatible_plugins']) and !$actualize + and $_SESSION['incompatible_plugins']['~~expire~~'] > time()) { return $_SESSION['incompatible_plugins']; } - $_SESSION['incompatible_plugins'] = array(); + $_SESSION['incompatible_plugins'] = array('~~expire~~' => time() + 300); $versions_to_check = $this->get_versions_to_check(); if (empty($versions_to_check)) @@ -558,25 +559,29 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id=\'' . $plugin_id . '\''; function get_merged_extensions($version=PHPWG_VERSION) { - if (!isset($_SESSION['merged_extensions'])) + if (isset($_SESSION['merged_extensions']) and $_SESSION['merged_extensions']['~~expire~~'] > time()) { - $_SESSION['merged_extensions'] = array(); - if (fetchRemote(MERGED_EXTENSIONS_URL, $result)) + return $_SESSION['merged_extensions']; + } + + $_SESSION['merged_extensions'] = array('~~expire~~' => time() + 600); + + if (fetchRemote(PHPWG_URL.'/download/merged_extensions.txt', $result)) + { + $rows = explode("\n", $result); + foreach ($rows as $row) { - $rows = explode("\n", $result); - foreach ($rows as $row) + if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match)) { - if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match)) + if (version_compare($version, $match[1], '>=')) { - if (version_compare($version, $match[1], '>=')) - { - $extensions = explode(',', trim($match[2])); - $_SESSION['merged_extensions'] = array_merge($_SESSION['merged_extensions'], $extensions); - } + $extensions = explode(',', trim($match[2])); + $_SESSION['merged_extensions'] = array_merge($_SESSION['merged_extensions'], $extensions); } } } } + return $_SESSION['merged_extensions']; } diff --git a/admin/plugins_list.php b/admin/plugins_list.php index 18a9c06d3..1af2e239b 100644 --- a/admin/plugins_list.php +++ b/admin/plugins_list.php @@ -77,8 +77,7 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) and $fs_plugin['version'] != $_SESSION['incompatible_plugins'][$plugin_id]) { // Incompatible plugins must be reinitilized - unset($_SESSION['incompatible_plugins']); - $plugins->get_incompatible_plugins(); + $plugins->get_incompatible_plugins(true); } $tpl_plugin = array( |