# Utesch Handelsgesellschaft

Silverstripe-6-Projekt mit PHP 8.5 und Fluent fuer die deutsche und englische Website.
Das bestehende Theme bleibt unter `themes/standard`; der oeffentliche Webroot ist `public`.

## Lokale Installation mit DDEV

Die DDEV-Konfiguration setzt PHP 8.5, MariaDB 10.11 und die lokalen
Silverstripe-Datenbankvariablen.

```sh
ddev start
ddev composer install
ddev exec vendor/bin/sake db:build --flush
```

Fuer Installationen ohne DDEV dient `.env.example` als Vorlage fuer `.env`.

## Upgrade einer bestehenden Installation

Vor der Migration muessen Datenbank und `assets` vollstaendig gesichert werden.
Alte Assets gehoeren fuer Silverstripe 6 nach `public/assets`.

1. Die bestehende Datenbank und die Assets importieren.
2. Das neue Schema aufbauen:

   ```sh
   ddev exec vendor/bin/sake db:build --flush
   ```

3. Die alten Translatable-Datensaetze nach Fluent konvertieren:

   ```sh
   ddev exec vendor/bin/sake tasks:convert-translatable-to-fluent
   ```

4. Die alten `File.Filename`-Datensaetze in das neue Assetformat migrieren:

   ```sh
   ddev exec vendor/bin/sake tasks:migrate-legacy-files
   ```

   Der Task behaelt die bestehenden Datei-IDs bei. Dadurch bleiben Bild- und
   Dateirelationen erhalten. Physisch fehlende oder nicht erlaubte Dateien
   werden gemeldet und nicht veraendert.

5. Anschliessend erneut das Schema aufbauen und den Cache leeren:

   ```sh
   ddev exec vendor/bin/sake db:build --flush
   ```

Die Migration ordnet deutsche und englische Seiten anhand der bisherigen
Translation-Gruppen demselben Fluent-Datensatz zu. Alte doppelte Seiten bleiben
zur Sicherheit mit einem internen URL-Segment erhalten und koennen nach der
inhaltlichen Kontrolle entfernt werden. Der Task ist wiederholbar und beendet
sich ohne Aenderung, sobald keine alten Translatable-Spalten mehr vorhanden sind.

## Kontrolle

```sh
ddev composer validate --strict
ddev exec vendor/bin/phpunit
ddev exec vendor/bin/sake db:build --flush
```

Danach im CMS insbesondere Navigation, Kontaktformular, Datei-Downloads und
beide Sprachvarianten (`/` und `/en`) pruefen.
