29e6fec64d
CI - Intégration continue / quality-and-tests (pull_request) Successful in 3m32s
Page publique /telecharger reprenant le modele de Ressources-relationnel : - config/mobile.php (lien de store prioritaire, sinon binaire local, sinon 'bientot') - DownloadController + vue au style DSFR, lien dans la sidebar - variables MOBILE_* et depot public/downloads/ (binaires gitignores) - 3 tests (page publique, lien store, bouton desactive) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Web;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
class DownloadController extends Controller
|
|
{
|
|
// Page publique de téléchargement des applications mobiles
|
|
public function index()
|
|
{
|
|
return view('telecharger', [
|
|
'android' => $this->resoudre('android'),
|
|
'ios' => $this->resoudre('ios'),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Détermine, pour une plateforme, le lien de téléchargement et sa disponibilité.
|
|
*
|
|
* @return array{version: string, url: string|null, disponible: bool}
|
|
*/
|
|
private function resoudre(string $plateforme): array
|
|
{
|
|
$config = config("mobile.{$plateforme}");
|
|
if (! is_array($config)) {
|
|
$config = [];
|
|
}
|
|
|
|
$version = is_string($config['version'] ?? null) ? $config['version'] : '1.0.0';
|
|
$url = (is_string($config['url'] ?? null) && $config['url'] !== '') ? $config['url'] : null;
|
|
$file = is_string($config['file'] ?? null) ? $config['file'] : null;
|
|
|
|
// À défaut d'URL explicite, on propose le fichier précompilé s'il existe.
|
|
if ($url === null && $file !== null && file_exists(public_path($file))) {
|
|
$url = asset($file);
|
|
}
|
|
|
|
return [
|
|
'version' => $version,
|
|
'url' => $url,
|
|
'disponible' => $url !== null,
|
|
];
|
|
}
|
|
}
|