# Matrixplugin

## Wofür braucht man dieses Plugin?
Dieses Plugin stellt eine Verbindung zu einer Matrixinstallation her und erlaubt dadurch die Einbindung von Matrix-Chaträumen in Stud.IP-Veranstaltungen.

## Was ist zu beachten?
In der Übersicht unter Meine Veranstaltungen hat das Plugin zwar ein Icon, dieses wird aber niemals rot, um neue Inhalte zu kennzeichnen, da aus Performancegründen nicht live abgefragt wird, ob es neue Nachrichten gibt.

## Technische Details
Installation erfolgt wie bei allen Plugins in Stud.IP.

- In drei neuen Datenbanktabellen werden Mappings zwischen Stud.IP und Matrix gespeichert:
    - `matrix_accounts`: Diese Tabelle bildet ab, welcher Matrixaccount zu welchem Stud.IP-Account gehört.
    - `matrix_rooms`: Verbindung Stud.IP-Veranstaltung zu Matrixraum
    - `matrix_upcoming_news`: Erfasst neun in Stud.IP angelegte Ankündigungen in Veranstaltungen, damit diese bei Veröffentlchungsdatum in den zugehörigen Chatraum gepostet werden können.
- Weiter werden neue Einträge in der globalen Konfiguration angelegt:
    - `MATRIX_SERVER`: Adresse der Matrixinstallation. Liegt eine entsprechende Konfiguration über .well-known-Einträge vor, reicht der Hostname aus, ansonsten muss die vollständige URL zum Matrixserver angegeben werden.
    - `MATRIX_SYSTEM_ACCOUNT_USERNAME`: Mit welchem Account kann Stud.IP selbstständig Räume anlegen und verwalten und ggf. neue Kennungen anlegen? (Ist der Eintrag leer, wird versucht, einen Account automatisch zu erzeugen und die Zugangsdaten hier zu hinterlegen)
    - `MATRIX_SYSTEM_ACCOUNT_PASSWORD`: Passwort des Stud.IP-Systemaccounts zum Anlegen von Räumen und ggf. neuen Kennungen.
    - `MATRIX_SYSTEM_ACCOUNT_ACCESS_TOKEN`: Wird der Stud.IP-Systemaccount ggü Matrix nicht via Passwort, sondern via Access-Token authentifiziert, so muss dieses Token hier eingetragen werden. Ein Wert in diesem Feld setzt MATRIX_SYSTEM_ACCOUNT_PASSWORD automatisch außer Kraft.
    - `MATRIX_CHATSERVER_URL`: vollständige URL des Chatfrontends, z.B. Element
    - `MATRIX_USE_CHAT_IFRAME`: Soll das Chatfrontend in einem iFrame direkt in Stud.IP geöffnet werden? Falls nein, wird ein Button angezeigt, der den Chat in einem neuen Tab öffnet.
    - `MATRIX_AUTO_CREATE_ACCOUNTS`: Kann Stud.IP automatisch Matrixaccounts anlegen und mit einem Stud.IP-Account verknüpfen? Dies wird über den hinterlegten MATRIX_SYSTEM_ACCOUNT_USERNAME gemacht und immer dann ausgelöst, wenn in der Datenbanktabelle matrix_accounts kein passender Eintrag gefunden wurde.
    - `MATRIX_ACCOUNTS_LOCAL_PART`: Der local part, der beim automatischen Anlegen von Accounts verwendet werden soll.
- Ein neu eingerichteter Cronjob postet Ankündigungen in Veranstaltungen in den jeweiligen Matrixraum, wenn das Veröffentlichungsdatum erreicht ist. Standardmäßig läuft dieser Cronjob alle 15 Minuten.
- Der momentan verwendete Willkommenstext ist stark an die Universität Hannover angepasst.