

# Barrierefrei-Mobil.de
(English version below)


Diese README bietet einen Überblick über das Projekt Barrierefrei-Mobil.de, erklärt dessen Funktionsweise und wo wichtige Konfigurationsinformationen zu finden sind.

## Projektübersicht

Barrierefrei-Mobil.de ist eine Webanwendung, die als Online-Leitfaden für Barrierefreiheitsinformationen dient. Die Anwendung ermöglicht es Benutzern, Informationen zur Barrierefreiheit für verschiedene Einrichtungen und Standorte zu finden und zu melden.

## Projektstruktur

Das Projekt ist in folgende Hauptverzeichnisse gegliedert:

- **backend/**: Enthält serverseitigen PHP-Code
  - **global/**: Globale Dienstprogramme und Bibliotheken
  - **pages/**: Backend-Logik für bestimmte Seiten
  - **resources/**: Gemeinsame Ressourcen einschließlich Datenbankverbindungen und Dienstprogramme
    - **controller/**: MVC-Controller
    - **language/**: Lokalisierungsdateien
    - **DBManager/**: Datenbankmanagement-Klassen
- **pages/**: Frontend-Seiten und deren Assets
  - Jede Seite hat ihr eigenes Verzeichnis mit lokalem CSS, JS und anderen Assets
- **resources/**: Gemeinsame Frontend-Ressourcen
  - **bootstrap/**: Bootstrap-Framework-Dateien
  - **common-css/**: Gemeinsame CSS-Dateien
  - **common-js/**: Gemeinsame JavaScript-Dateien
  - **common-images/**: Gemeinsame Bilddateien
- **vendor/**: Bibliotheken von Drittanbietern (verwaltet durch Composer)

## Wichtige Konfigurationsinformationen

### Datenbankkonfiguration

Datenbankanmeldedaten und Konfiguration finden Sie in:

- **`backend/resources/Utils.php`**: Enthält die Hauptdatenbankanmeldedaten
  - Server: "###.###.###.###"
  - Benutzername: "####"
  - Passwort: "#####"
  - Port: "####"

Die Datenbankverbindung wird von den folgenden Klassen verwaltet:
- **`backend/resources/Connection.php`**: Hauptdatenbankverbindungsklasse
- **`backend/resources/ConnectionLogin.php`**: Verbindung für die Anmeldefunktionalität
- **`backend/resources/ConnectionContact.php`**: Verbindung für die Kontaktfunktionalität

Beachten Sie, dass der Datenbankname dynamisch basierend auf der Sessionvariable `$_SESSION['bezirkKuerzel']` mit dem Präfix 'agens_' festgelegt wird.

### Mail-Konfiguration

Die E-Mail-Sendefunktionalität ist konfiguriert in:

- **`backend/resources/Utils.php`**: Enthält SMTP-Anmeldedaten
  - Host: "#####"
  - Port: "####"
  - Benutzername: "#######"
  - Passwort: "#######"
  - Sicherheit: "####"
  - Absendername: "######"

Die E-Mail-Sendefunktionalität ist implementiert in:
- **`backend/pages/contact/SendMail.php`**: Verwendet PHPMailer zum Senden von E-Mails über SMTP

Eine detaillierte Zusammenfassung der E-Mail-Funktionalität finden Sie in `mail_functionality_summary.md`.

## Einrichten des Projekts

1. Klonen Sie das Repository
2. Installieren Sie Abhängigkeiten mit Composer: `composer install`
3. Konfigurieren Sie die Datenbank:
   - Erstellen Sie Datenbanken mit dem Benennungsmuster 'agens_[Bezirkscode]'
   - Importieren Sie die SQL-Dateien aus dem SQL-Verzeichnis
4. Konfigurieren Sie den Webserver so, dass er auf das Projektstammverzeichnis zeigt
5. Stellen Sie sicher, dass der Server PHP mit PDO und anderen erforderlichen Erweiterungen hat

## Ändern von Website-Inhalten

- Inhalte können in den Sprachdateien unter `backend/resources/language/` geändert werden -- finden Sie die entsprechende Seite und den Schlüsselwert, um Anpassungen vorzunehmen
- Text für Kooperationspartner, Impressum und Datenschutz kann mit `\n` umgebrochen werden
- Bezirkstext ist in `pages/index/local-js/OnePageScript.js` zu finden

## Bei Umzug in die Produktion

Bei Umzug der Website in die Produktion müssen folgende Dateien aktualisiert werden:
- `router.php` (Zeile 49)
- `backend/Utils.php` (Aktualisieren Sie die src-Eigenschaft)
- Datenbank-Anmeldedaten in `backend/pages/firstPage/FirstPageDataHandler.php`
- Verbindungsdateien:
  - `backend/resources/Connection.php`
  - `backend/resources/ConnectionLogin.php`
  - `backend/resources/ConnectionContact.php`

## Datenbank-Bezirksinformationen

- Der Einfügebefehl für alle Bezirke befindet sich in der Datei bezirke.txt auf dem internen Server

## Testen

### E-Mail-Tests
- Ein Testskript für die E-Mail-Funktionalität ist unter `test_mail.php` verfügbar
- Führen Sie dieses Skript aus, um zu überprüfen, ob die E-Mail-Sendefunktionalität korrekt funktioniert

### Unit-Tests
- Unit-Tests für die Backend-Logik sind im Verzeichnis `tests` verfügbar
- Die Tests decken Controller, Datenhandler und Datenbankmanager ab
- Um die Tests auszuführen, verwenden Sie PHPUnit: `vendor/bin/phpunit`
- Für detailliertere Informationen zu den Tests siehe [tests/README.md](tests/README.md)

## Zukünftige Verbesserungen

1. Verschieben von SMTP- und Datenbankanmeldedaten in Umgebungsvariablen oder eine sichere Konfigurationsdatei außerhalb der Versionskontrolle
2. Implementieren eines Wiederholungsmechanismus für fehlgeschlagene E-Mail-Sendeversuche
3. Hinzufügen umfassenderer Protokollierung für Debugging-Zwecke
4. Implementieren von E-Mail-Vorlagen für einheitliche Formatierung

---

# Barrierefrei-Mobil.de

This README provides an overview of the Barrierefrei-Mobil.de project, explaining its inner workings and where to find important configuration information.

## Project Overview

Barrierefrei-Mobil.de is a web application that serves as an online guide for accessibility information. The application allows users to find and report accessibility-related information for various facilities and locations.

## Project Structure

The project is organized into the following main directories:

- **backend/**: Contains server-side PHP code
  - **global/**: Global utilities and libraries
  - **pages/**: Backend logic for specific pages
  - **resources/**: Shared resources including database connections and utilities
    - **controller/**: MVC controllers
    - **language/**: Localization files
    - **DBManager/**: Database management classes
- **pages/**: Frontend pages and their assets
  - Each page has its own directory with local CSS, JS, and other assets
- **resources/**: Shared frontend resources
  - **bootstrap/**: Bootstrap framework files
  - **common-css/**: Shared CSS files
  - **common-js/**: Shared JavaScript files
  - **common-images/**: Shared image files
- **vendor/**: Third-party libraries (managed by Composer)

## Important Configuration Information

### Database Configuration

Database credentials and configuration can be found in:

- **`backend/resources/Utils.php`**: Contains the main database credentials
  - Server: "###.###.###.###"
  - Username: "####"
  - Password: "#####"
  - Port: "####"

The database connection is managed by the following classes:
- **`backend/resources/Connection.php`**: Main database connection class
- **`backend/resources/ConnectionLogin.php`**: Connection for login functionality
- **`backend/resources/ConnectionContact.php`**: Connection for contact functionality

Note that the database name is dynamically set based on the session variable `$_SESSION['bezirkKuerzel']` with the prefix 'agens_'.

### Mail Configuration

Email sending functionality is configured in:

- **`backend/resources/Utils.php`**: Contains SMTP credentials
  - Host: "#####"
  - Port: "####"
  - Username: "#######"
  - Password: "#######"
  - Security: "####"
  - From Name: "######"

The mail sending functionality is implemented in:
- **`backend/pages/contact/SendMail.php`**: Uses PHPMailer to send emails via SMTP

A detailed summary of the mail functionality can be found in `mail_functionality_summary.md`.

## Setting Up the Project

1. Clone the repository
2. Install dependencies using Composer: `composer install`
3. Configure the database:
  - Create databases with the naming pattern 'agens_[district code]'
  - Import the SQL files from the SQL directory
4. Configure the web server to point to the project root
5. Ensure the server has PHP with PDO and other required extensions

## Modifying Website Content

- Content can be modified in the language files located in `backend/resources/language/` -- find the appropriate page and key value to adjust
- Text for Kooperationspartner, Impressum, and Datenschutz can be broken with `\n`
- District text can be found in `pages/index/local-js/OnePageScript.js`

## When Moving to Production

When moving the site to production, the following files need to be updated:
- `router.php` (line 49)
- `backend/Utils.php` (update the src property)
- Database login data in `backend/pages/firstPage/FirstPageDataHandler.php`
- Connection files:
  - `backend/resources/Connection.php`
  - `backend/resources/ConnectionLogin.php`
  - `backend/resources/ConnectionContact.php`

## Database District Information

- The insert command for all districts is in the bezirke.txt file located on the internal server

## Testing

### Mail Testing
- A test script for mail functionality is available at `test_mail.php`
- Run this script to verify that the mail sending functionality works correctly

### Unit Tests
- Unit tests for the backend logic are available in the `tests` directory
- The tests cover controllers, data handlers, and database managers
- To run the tests, use PHPUnit: `vendor/bin/phpunit`
- For more detailed information about the tests, see [tests/README.md](tests/README.md)

## Future Improvements

1. Move SMTP and database credentials to environment variables or a secure configuration file outside of version control
2. Implement a retry mechanism for failed email sending attempts
3. Add more comprehensive logging for debugging purposes
4. Implement email templates for consistent formatting
