Aus der Kachel QIF-Import wird Import/Export mit je einem Knopf für beide Richtungen; davor steht die Wahl des Dateiformats (QIF oder CSV), die als Dialog und ohne Skript als eigene Seite funktioniert. - CsvBuchungsImport/CsvTabelle: Buchungen samt Splitzeilen, Spalten über die Kopfzeile, dieselbe Dublettenerkennung und der Trockenlauf wie beim QIF. - BuchungsExport/ExportController: Filter nach Zeitraum, Konto, Kategorie und Klasse; die Datei entsteht im Speicher, ein Exportverzeichnis gibt es nicht. - Housekeeping: Hochgeladene Importdateien und data/tmp werden nach der eingestellten Frist gelöscht (Vorgabe 14 Tage, 0 schaltet ab). Migration 013, Test 29 sowie E2E-Spec importexport.spec.js. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
57 lines
1.4 KiB
PHP
57 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Räumt die temporären Dateien von Import und Export weg.
|
|
*
|
|
* Gedacht für einen Cron-Eintrag:
|
|
*
|
|
* docker compose exec -u www-data php php scripts/housekeeping.php --still
|
|
*
|
|
* Nötig ist der Eintrag nicht: Beim Öffnen von Import und Export läuft dasselbe
|
|
* Aufräumen beiläufig mit, höchstens einmal am Tag. Wer den Finanzmanager
|
|
* wochenlang nicht öffnet, hat mit dem Cron trotzdem ein leeres
|
|
* Importverzeichnis.
|
|
*
|
|
* Mit `--probe` wird nur aufgezählt, was wegfiele; gelöscht wird dann nichts.
|
|
*/
|
|
|
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
|
|
|
use Finanzmanager\Config;
|
|
use Finanzmanager\Services\Housekeeping;
|
|
|
|
Config::load();
|
|
|
|
$still = in_array('--still', $argv, true);
|
|
$probe = in_array('--probe', $argv, true);
|
|
|
|
$sage = static function (string $zeile) use ($still): void {
|
|
if (!$still) {
|
|
echo $zeile . PHP_EOL;
|
|
}
|
|
};
|
|
|
|
$tage = Housekeeping::tage();
|
|
if ($tage === 0) {
|
|
$sage('Das Aufräumen ist abgeschaltet (Einstellungen → Import/Export, Frist 0).');
|
|
exit(0);
|
|
}
|
|
|
|
$ergebnis = Housekeeping::ausfuehren($probe);
|
|
|
|
$sage(sprintf(
|
|
'%s: %d von %d Dateien älter als %d Tage (%s).',
|
|
$probe ? 'Probelauf' : 'Aufgeräumt',
|
|
$ergebnis['geloescht'],
|
|
$ergebnis['geprueft'],
|
|
$ergebnis['tage'],
|
|
number_format($ergebnis['bytes'] / 1024, 1, ',', '.') . ' kB'
|
|
));
|
|
|
|
foreach ($ergebnis['dateien'] as $datei) {
|
|
$sage(' ' . $datei);
|
|
}
|
|
|
|
exit(0);
|