diff options
author | Andrew Dolgov <[email protected]> | 2021-02-27 19:14:13 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2021-02-27 19:14:13 +0300 |
commit | 7f2fe465b07c149a7131943215103d9ae0f21b69 (patch) | |
tree | 1758069a5d09c9a67fd65ab9d7742be72be9a59d /classes | |
parent | d821e4b090a30d1d2dba2cba27d9c944210d195c (diff) |
add plugin updates checker into normal updates checker
Diffstat (limited to 'classes')
-rw-r--r-- | classes/pref/prefs.php | 42 | ||||
-rwxr-xr-x | classes/rpc.php | 6 |
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); |