includes/modules/update.php
<?php
declare(strict_types=1);
const BRIVACIA_UPDATE_JSON = 'https://breat.fr/static/json/brivacia-version.json';
function brivaciaUpdateManifest(): array {
$json = @file_get_contents(
BRIVACIA_UPDATE_JSON . '?t=' . time(),
false,
stream_context_create([
'http' => [
'timeout' => 3,
'ignore_errors' => true,
'header' => "Cache-Control: no-cache\r\nPragma: no-cache\r\n",
],
])
);
if (!is_string($json) || $json === '') {
return [];
}
$data = json_decode($json, true);
return is_array($data) ? $data : [];
}
function brivaciaCurrentVersion(): string {
return function_exists('brivacia_version') ? brivacia_version() : '0.0.0';
}
function brivaciaTestUpdate(): bool
{
return is_file(brivacia_root_path('update/test-update'));
}
function brivaciaUpdateAvailable(): bool {
if (brivaciaTestUpdate()) {
return true;
}
$manifest = brivaciaUpdateManifest();
if (empty($manifest['version'])) {
return false;
}
return version_compare((string)$manifest['version'], brivaciaCurrentVersion(), '>');
}
function brivaciaUpdateInfo(): array {
$manifest = brivaciaUpdateManifest();
return [
'available' => brivaciaTestUpdate() || (!empty($manifest['version']) && version_compare((string)$manifest['version'], brivaciaCurrentVersion(), '>')),
'current' => brivaciaCurrentVersion(),
'latest' => (string)($manifest['version'] ?? ''),
'download' => (string)($manifest['download'] ?? ''),
'changelog' => (string)($manifest['changelog'] ?? ''),
'minimum_php' => (string)($manifest['minimum_php'] ?? ''),
];
}
function brivaciaLatestVersion(): string
{
return brivaciaUpdateInfo()['latest'] ?? brivacia_version();
}