From b05d4e3d9ff2803b28dd68d807b57500f8c3078f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 28 Feb 2021 21:50:05 +0300 Subject: [PATCH] speed up plugin updating a bit, fix some phpstan warnings --- classes/api.php | 1 + classes/pref/prefs.php | 9 ++++++--- js/PrefHelpers.js | 13 ++++++++++--- update.php | 2 +- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/classes/api.php b/classes/api.php index a0ee773c1..31672575a 100755 --- a/classes/api.php +++ b/classes/api.php @@ -363,6 +363,7 @@ class API extends Handler { } $this->_wrap(self::STATUS_OK, $articles); + // @phpstan-ignore-next-line } else { $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE)); } diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index 7f986858f..de03b34dc 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -1185,15 +1185,18 @@ class Pref_Prefs extends Handler_Protected { function updateLocalPlugins() { if ($_SESSION["access_level"] >= 10) { - $plugin_name = $_REQUEST["name"] ?? ""; + $plugins = explode(",", $_REQUEST["plugins"] ?? ""); # we're in classes/pref/ $root_dir = dirname(dirname(__DIR__)); $rv = []; - if (!empty($plugin_name)) { - array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_update_plugin($root_dir, $plugin_name)]); + if (count($plugins) > 0) { + foreach ($plugins as $plugin_name) { + array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_update_plugin($root_dir, $plugin_name)]); + } + // @phpstan-ignore-next-line } else { $plugin_dirs = array_filter(glob("$root_dir/plugins.local/*"), "is_dir"); diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index 5450bd98c..d2f74d421 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -1,7 +1,7 @@ 'use strict'; /* eslint-disable no-new */ -/* global __, dijit, dojo, Tables, xhrPost, Notify, xhr, App, fox */ +/* global __, dijit, dojo, Tables, Notify, xhr, App, fox */ const Helpers = { AppPasswords: { @@ -327,6 +327,7 @@ const Helpers = { const dialog = new fox.SingleUseDialog({ title: __("Plugin Updater"), need_refresh: false, + plugins_to_update: [], onHide: function() { if (this.need_refresh) { Helpers.Prefs.refresh(); @@ -335,10 +336,12 @@ const Helpers = { performUpdate: function() { const container = dialog.domNode.querySelector(".update-results"); + console.log('updating', dialog.plugins_to_update); + container.innerHTML = `
  • ${__("Updating, please wait...")}
  • `; let enable_update_btn = false; - xhr.json("backend.php", {op: "pref-prefs", method: "updateLocalPlugins", name: name}, (reply) => { + xhr.json("backend.php", {op: "pref-prefs", method: "updateLocalPlugins", plugins: dialog.plugins_to_update.join(",")}, (reply) => { if (!reply) { container.innerHTML = `
  • ${__("Operation failed: check event log.")}
  • `; @@ -392,9 +395,13 @@ const Helpers = { } else { container.innerHTML = ""; + dialog.plugins_to_update = []; + reply.forEach((p) => { - if (p.rv.s == 0) + if (p.rv.s == 0) { enable_update_btn = true; + dialog.plugins_to_update.push(p.plugin); + } container.innerHTML += ` diff --git a/update.php b/update.php index aab84bfdb..41b052f6e 100755 --- a/update.php +++ b/update.php @@ -253,7 +253,7 @@ RSSUtils::update_daemon_common(isset($options["pidlock"]) ? 50 : Config::get(Config::DAEMON_FEED_LIMIT), $options); - if (!isset($options["pidlock"]) || $options["task"] == 0) + if (!isset($options["pidlock"]) || $options["task"] == "0") RSSUtils::housekeeping_common(); PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, $options);