You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jonas Lührig 864a531363 Added more description and MIN_NAME_MATCHING_PERCENTAGE parameter 2 years ago
IServ_Elternimport_Divis.php Added more description and MIN_NAME_MATCHING_PERCENTAGE parameter 2 years ago
README.md Added more description and MIN_NAME_MATCHING_PERCENTAGE parameter 2 years ago
divis-parent-export-sample.csv Added example data 2 years ago
iserv-user-export-sample.csv Added example data 2 years ago

README.md

DiViS Parents CSV to IServ Elternverwaltung module

This script takes two files, an IServ user export CSV and a DiViS student <> parents CSV and maps the parents to the IServ students, creating a third CSV file that can be imported into the IServ Elternverwaltung module.

The IServ user export CSV is expected to have the following columns:
Account;Vorname;Nachname;Status;"Erstellt am";"Erstellt von";"Interne ID";Benutzertyp;Import-ID;Klasse/Information;E-Mail-Adresse;Gruppen

The student <> parents mapped CSV from DiViS should have the following columns:
"Schüler Vorname","Schüler Nachname","Eltern 1 Vorname","Eltern 1 Nachname","Eltern 2 Vorname","Eltern 2 Nachname"

The CSV exported by this script will have the following columns:
Nachname;Vorname;Kind-ID;Klasse

Rows that are not of type "Schüler" in the IServ user export CSV are skipped. Students for which a parent was not found are skipped in the output CSV, however a warning is displayed.

To compare the first and last name of the student to the DiViS list, the similar_text() PHP function is used to allow minimal character spelling mistakes between the two files. This behaviour can be disabled by adjusting the MIN_NAME_MATCHING_PERCENTAGE constant defined at the top of the script to 100, meaning the first and last names must match exactly. Otherwise, only 85% of the name must match (typically equating to 1-2 different characters per full name).

Status messages, information and errors are always written to STDERR, while the generated CSV will be exported to STDOUT, meaning you can redirect the STDOUT output of this script to a file to export the CSV and still be able to read any informational messages:

$ php ./IServ_Elternimport_Divis.php iserv-user-export.csv divis-parents-export.csv > Parents_Import.csv