File src/www/admin/config/backup/save.php artifact a52a168023 part of check-in 7a621d7bbf28de8ee155afcbcd61370fc2a57d530d7a8e885adb05df4421f81c


<?php
namespace Paheko;

use Paheko\Backup;
use Paheko\Files\Files;

require_once __DIR__ . '/../_inc.php';

$csrf_key = 'backup_save';

// Download database
$form->runIf('download', function () {
	Backup::dump();
	exit;
}, $csrf_key);

// Create local backup
$form->runIf('create', function () {
	Backup::create();
}, $csrf_key, Utils::getSelfURI(['ok' => 'create']));

$form->runIf('config', function () {
	$frequency = (int) f('backup_frequency');

	if ($frequency < 0 || $frequency > 365) {
		throw new UserException('Fréquence invalide');
	}

	$number = (int) f('backup_limit');

	if ($number < 0 || $number > 50) {
		throw new UserException('Nombre de sauvegardes invalide. Le maximum est de 50 sauvegardes.');
	}

	$config = Config::getInstance();
	$config->set('backup_frequency', $frequency);
	$config->set('backup_limit', $number);
	$config->save();
}, $csrf_key, Utils::getSelfURI(['ok' => 'config']));

$db_size = Backup::getDBSize();
$files_size = (FILE_STORAGE_BACKEND == 'SQLite') ? Files::getUsedQuota() : null;

$ok = qg('ok'); // return message

$frequencies = [
	0 => 'Aucun — les sauvegardes automatiques sont désactivées',
	1 => 'Quotidienne, tous les jours',
	7 => 'Hebdomadaire, tous les 7 jours',
	15 => 'Bimensuelle, tous les 15 jours',
	30 => 'Mensuelle',
	90 => 'Trimestrielle',
	365 => 'Annuelle',
];

$tpl->assign(compact('ok', 'db_size', 'files_size', 'frequencies', 'csrf_key'));

$tpl->display('config/backup/save.tpl');