mirror of
https://github.com/slawkens/myaac.git
synced 2025-10-14 01:34:55 +02:00
Feature/plugins versions check (#310)
* Check plugins versions from plugins.my-aac.org/api * Improve plugin update check messaging Updated the success message when checking for plugin updates to clarify the source. Added an informational message when outdated plugins are found to improve user feedback. * Use configurable API URI for plugin updates Replaces hardcoded plugin API URI with a configurable value from config, defaulting to the official API. Also fixes a typo in the success message.
This commit is contained in:
49
system/src/Admin/Plugins.php
Normal file
49
system/src/Admin/Plugins.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace MyAAC\Admin;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
class Plugins
|
||||
{
|
||||
private string $api_base_uri = 'https://plugins.my-aac.org/api/';
|
||||
|
||||
public function getLatestVersions(): array
|
||||
{
|
||||
$client = new Client([
|
||||
// Base URI is used with relative requests
|
||||
'base_uri' => $this->api_base_uri,
|
||||
// You can set any number of default request options.
|
||||
'timeout' => 3.0,
|
||||
]);
|
||||
|
||||
$plugins = get_plugins(true);
|
||||
foreach ($plugins as &$plugin) {
|
||||
if (str_contains($plugin, 'disabled.')) {
|
||||
$plugin = str_replace('disabled.', '', $plugin);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$response = $client->get('get-latest-versions', [
|
||||
'json' => ['plugins' => $plugins],
|
||||
]);
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
error('API Error. Please try again later.');
|
||||
return [];
|
||||
}
|
||||
|
||||
$statusCode = $response->getStatusCode();
|
||||
if ($statusCode != 200) {
|
||||
throw new \Exception('Error getting info from plugins repository. Please try again later.');
|
||||
}
|
||||
|
||||
$data = $response->getBody();
|
||||
return json_decode($data, true);
|
||||
}
|
||||
|
||||
public function setApiBaseUri(string $uri): void {
|
||||
$this->api_base_uri = $uri;
|
||||
}
|
||||
}
|
@@ -1,7 +1,9 @@
|
||||
<div id="install_plugin">
|
||||
<div class="card card-info card-outline">
|
||||
<div class="card-header">
|
||||
<h5 class="m-0">Install plugin</h5>
|
||||
<h5 class="m-0">Install plugin
|
||||
<a href="?p=plugins&check-updates" class="btn btn-primary float-right">Check for updates</a>
|
||||
</h5>
|
||||
</div>
|
||||
<form enctype="multipart/form-data" method="post" action="{{ constant('ADMIN_URL') }}?p=plugins">
|
||||
{{ csrf() }}
|
||||
|
18
system/templates/admin.plugins.outdated.html.twig
Normal file
18
system/templates/admin.plugins.outdated.html.twig
Normal file
@@ -0,0 +1,18 @@
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Plugin Name</th>
|
||||
<th>Your Version</th>
|
||||
<th>Latest Version</th>
|
||||
<th>Download link</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for plugin in plugins %}
|
||||
<tr>
|
||||
<td>{{ plugin.name }}</td>
|
||||
<td>{{ plugin.yourVersion }}</td>
|
||||
<td>{{ plugin.latestVersion }}</td>
|
||||
<td><a href="{{ plugin.download_link }}" target="_blank">{{ plugin.download_link }}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
Reference in New Issue
Block a user