summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-02-27 19:14:13 +0300
committerAndrew Dolgov <[email protected]>2021-02-27 19:14:13 +0300
commit7f2fe465b07c149a7131943215103d9ae0f21b69 (patch)
tree1758069a5d09c9a67fd65ab9d7742be72be9a59d /classes
parentd821e4b090a30d1d2dba2cba27d9c944210d195c (diff)
add plugin updates checker into normal updates checker
Diffstat (limited to 'classes')
-rw-r--r--classes/pref/prefs.php42
-rwxr-xr-xclasses/rpc.php6
2 files changed, 30 insertions, 18 deletions
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index d5a6dde76..8746aa1e0 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -1093,7 +1093,28 @@ class Pref_Prefs extends Handler_Protected {
set_pref(Prefs::_ENABLED_PLUGINS, $plugins);
}
- private function _plugin_needs_update($root_dir, $plugin_name) {
+ static function _get_updated_plugins() {
+ $root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
+ $plugin_dirs = array_filter(glob("$root_dir/plugins.local/*"), "is_dir");
+
+ $rv = [];
+
+ foreach ($plugin_dirs as $dir) {
+ if (is_dir("$dir/.git")) {
+ $plugin_name = basename($dir);
+
+ array_push($rv, ["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)]);
+ }
+ }
+
+ $rv = array_values(array_filter($rv, function ($item) {
+ return !empty($item["rv"]["o"]);
+ }));
+
+ return $rv;
+ }
+
+ private static function _plugin_needs_update($root_dir, $plugin_name) {
$plugin_dir = "$root_dir/plugins.local/" . basename($plugin_name);
$rv = [];
@@ -1150,23 +1171,12 @@ class Pref_Prefs extends Handler_Protected {
if ($_SESSION["access_level"] >= 10) {
$plugin_name = $_REQUEST["name"] ?? "";
- # we're in classes/pref/
- $root_dir = dirname(dirname(__DIR__));
-
- $rv = [];
+ $root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
if (!empty($plugin_name)) {
- array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_plugin_needs_update($root_dir, $plugin_name)]);
+ $rv = ["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)];
} else {
- $plugin_dirs = array_filter(glob("$root_dir/plugins.local/*"), "is_dir");
-
- foreach ($plugin_dirs as $dir) {
- if (is_dir("$dir/.git")) {
- $plugin_name = basename($dir);
-
- array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_plugin_needs_update($root_dir, $plugin_name)]);
- }
- }
+ $rv = self::_get_updated_plugins();
}
print json_encode($rv);
@@ -1191,7 +1201,7 @@ class Pref_Prefs extends Handler_Protected {
if (is_dir("$dir/.git")) {
$plugin_name = basename($dir);
- $test = $this->_plugin_needs_update($root_dir, $plugin_name);
+ $test = self::_plugin_needs_update($root_dir, $plugin_name);
if (!empty($test["o"]))
array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_update_plugin($root_dir, $plugin_name)]);
diff --git a/classes/rpc.php b/classes/rpc.php
index 72e00a8bc..7f7b924eb 100755
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -394,7 +394,7 @@ class RPC extends Handler_Protected {
}
function checkforupdates() {
- $rv = [];
+ $rv = ["changeset" => [], "plugins" => []];
$git_timestamp = false;
$git_commit = false;
@@ -411,10 +411,12 @@ class RPC extends Handler_Protected {
if ($git_timestamp < (int)$content["changeset"]["timestamp"] &&
$git_commit != $content["changeset"]["id"]) {
- $rv = $content["changeset"];
+ $rv["changeset"] = $content["changeset"];
}
}
}
+
+ $rv["plugins"] = Pref_Prefs::_get_updated_plugins();
}
print json_encode($rv);