mirror of
https://github.com/slawkens/myaac.git
synced 2025-12-14 04:49:46 +01:00
Check plugins versions from plugins.my-aac.org/api
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