Ist es mgl, den PHP COde hier weitestgehend für mich zu programmieren?
Wie bieten Ihnen auf www.soscisurvey.de bereits eine hervorragende Infrastruktur, eine Software mit riesiger Funktionalität und persönlichen Online-Support. Und das Ganze für wissenschaftliche Erhebungen vollkommen kostenlos. Wir können es wahrlich nicht leisten, dass wir auch noch jedes Projekt komplett implementieren ... aber wir geben hier gerne Hilfestellung, damit Sie es selbst meistern können. Ein wenig ins Werkzeug (in diesem Fall PHP) einarbeiten müssen Sie sich aber schon, wenn Sie ausgefallene Sonderwünsche haben :)
mir ist schleierhaft, wie ich die Bedingung programmieren soll, dass 3 Tage am Stück diese Frage nicht beantwortet wurde?
Das wird auf dem direkten Weg auch nicht funktionieren, denn der PHP-Code läuft nur dann, wenn der Fragebogen ausgeführt wird. Mit anderen Worten: Wenn der Link nicht angeklickt und der Fragebogen nicht aufgerufen wird, dann wird auch kein PHP-Code ausgeführt.
Nun gut, wenn es auf dem direkten Weg nicht läuft, muss man auf indirektem Wegen zum Ziel kommen. Sehen wir uns die Situation einmal genauer an, die wir da haben: An Tag X+0 wird der Fragebogen ausgefüllt, an Tag X+1, X+2 und X+3 nicht. Also muss der Code bereits an Tag X+0 laufen.
An diesem Tag kann man mittels mailSchedule()
eine E-Mail vorbereiten, die am Tag X+3 verschickt wird - vorzugsweise abends, denn evtl. nimmt die Person ja um 22 Uhr doch noch teil. Oder an Tag X+4 gleich in der Früh, damit Sie die Nachricht morgens im Postfach haben.
Jetzt müssen wir also nur noch dafür sorgen, dass die Mail nicht verschickt wird, wenn die Person an Tag X+1, X+2 oder X+3 teilgenommen hat. Kein Problem, dafür rufen wir mailRevoke()
auf. Und zwar an jedem der drei Tage.
Soweit so gut. Jetzt gibt es nur noch das Problem, dass wir an Tag X+2 ja auch die Mail von Tag X+1 abbrechen müssen. Das heißt (a) wir müssen an jedem Tag (ab Tag X+3) nicht nur einmal mailRevoke()
aufrufen, sondern dreimal. Und (b) wir müssen für jeden der 12 x 7 (=84) minus 3 (am Ende brauchen wir das nicht mehr) Tage eine eigene Serienmail anlegen. Zusätzlich zu den 84 Serienmails, die wir für die eigentliche Tagebuch-Einladung benötigen.
Und wir müssen an jedem Tagebuch-Tag ermitteln, welche Tag gerade ist. Aber das sollte nicht weiter schwer sein - am einfachsten werde ich den Befehl panelData()
da noch soweit ergänzen, dass man auch die ID der Serienmail abfragen kann.
Die Grundlage für den PHP-Code (um die Feinheiten wie die ersten und letzten 3 Tage kümmern Sie sich dann noch, s.o.) könnte dann also wie folgt aussehen:
$info = panelData();
if (!$info) {
// TODO: Fehlermeldung, keine Daten
pageStop();
}
// Die ID der Serienmail könnte dem Tag entsprechen, wenn man es entspr. anlegt
$tag = (int)$info['mailing'];
// Warnung vorbereiten an Tag X+4 - und zwar an den Forscher
// Die Warn-Mails haben die IDs 85, 86, ...
mailSchedule(false, $tag + 84, strtotime('+4 days 06:00:00'), [
'to.email' => 'forscher@hochschule.de'
]);
// Frühere Warn-Mails nicht verschicken
for ($i=1; $i<=3; $i++) {
if ($tag +84 -$i >= 85) {
mailRevoke(false, $tag + 84 - $i);
}
}
Wie gesagt: Das ist mal eine gute Basis. Testen Sie mal, wie gut das funktioniert (vor allem auch am Ende), damit das mailSchedule()
da keine Fehlermeldung wirft, weil es die Warn-Mail für Tag 84 + 3 nicht gibt. Und dann können Sie sich mit Detailfragen gerne wieder melden.
Falls das sinnig ist, dann müsste ich den PHP Code mit den Bedingungen 3 und 4 in jedem einzelnen dieser 84 Fragebögen einfügen, korrekt?
Ich würde nur einen Fragebogen machen (s.o.) ... sonst wird das uferlos.
Sie brauchen ja schon 84 + 81 Serienmails.
Es gäbe übrigens auch noch die Option, dass Sie bei jeder erfolgreichen Teilnahme in der Datenbank für Inhalte einen Eintrag machen. Daraus könnte man dann mit einem separaten Fragebogen auch einfach abrufen, wer die letzten 3 Tage inaktiv war. Aber wenn man dann noch an die Namen kommen will, sind die Daten ganz schnell personenbezogen.
Übrigens müssen Sie sich noch überlegen, wie Sie den Namen des Teilnehmers in der Warn-Mail anzeigen möchten. Eine Möglichkeit wäre, dass Sie den Namen bei den Adresseinträgen zusätzlich noch in das Feld "Benuterdefiniert 1" schreiben und in den Warn-Mails den Platzhalter %custom1%
verwenden.
Dass Sie aus den Warn-Mails in Verbindung mit den Daten dann wahrscheinlich erkennen können, welche Datensätze zu den säumigen Teilnehmern gehören - das könnte die Daten trotzdem personenbezogen machen. Klären Sie das bitte unbedingt mit dem Datenschutzbeauftragten der Hochschule. Spätestens wenn Sie es mit personenbezogenen Daten zu tun haben, müssen Sie dann nämlich doch auf dem kostenpflichtigen Server arbeiten.