Check plugins versions from plugins.my-aac.org/api

This commit is contained in:
slawkens
2025-06-18 23:16:10 +02:00
parent b329da52aa
commit e91b44f036
6 changed files with 656 additions and 6 deletions

View 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;
}
}

View File

@@ -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() }}

View 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>