Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
de:create:functions:paneldata [04.02.2016 14:18] – [Beispiel] adminde:create:functions:paneldata [03.02.2018 21:59] – Informationen von panelGroup() integriert, neues Beispiel admin
Zeile 3: Zeile 3:
 ''array **panelData()**'' ''array **panelData()**''
  
-Der Befehl ''panelData()'' liefert in einem Array die Zugehörigkeit des Teilnehmers zu einer Teilgruppe (Index 0) und die Daten, die als //benutzerdefinierte Daten// im Adresseintrag hinterlegt wurden (Indizes bis 5).+Der Befehl ''panelData()'' liefert Informationen aus der **Adressliste**, falls das Interview durch einen personalisierten Link (z.B. aus einer Serienmail) gestartet wurde. 
 + 
 + 
 +===== Rückgabewert ===== 
 + 
 +Der Befehl ''panelData()'' liefert in einem Array die Zugehörigkeit des Teilnehmers zu einer Teilgruppe, den Zeitpunkt des Mail-Versands und die Daten, die als //benutzerdefinierte Daten// im Adresseintrag hinterlegt wurden
 + 
 +<code php> 
 +array( 
 +  0 => (string) Teilgruppe, 
 +  => (string) Benutzerdefinierte Daten 1, 
 +  2 => (string) Benutzerdefinierte Daten 2, 
 +  3 => (string) Benutzerdefinierte Daten 3, 
 +  4 => (string) Benutzerdefinierte Daten 4, 
 +  => (stringBenutzerdefinierte Daten 5, 
 +  'subgroup' => (string) Teilgruppe, 
 +  'mailsent' => (int) Unix-Zeitstempel des Versand-Zeitpunkts 
 +
 +</code>
  
 **Wichtig:** Die Funktion liefert nur dann ein Array, wenn das Interview durch Klick auf den personalisierten Link einer Serienmail gestartet wurde (sonst ''null''). Wenn der Teilnahmer nach einer Opt-In-Bestätigung automatisch zu einem Fragebogen weitergeleitet wird ([[:de:survey:opt-in-live]]), so ist das technisch äquivalent zum Klick auf den personalisierten Link einer Serienmail. **Wichtig:** Die Funktion liefert nur dann ein Array, wenn das Interview durch Klick auf den personalisierten Link einer Serienmail gestartet wurde (sonst ''null''). Wenn der Teilnahmer nach einer Opt-In-Bestätigung automatisch zu einem Fragebogen weitergeleitet wird ([[:de:survey:opt-in-live]]), so ist das technisch äquivalent zum Klick auf den personalisierten Link einer Serienmail.
  
 +**Hinweis:** Falls beim Versand der Serienmail individuelle Zeitpunkte verwendet werden, kann die Information zum Versandzeitpunkt (ähnlich wie bestimmte benutzerdefinierte Daten) die Anonymität aufheben und sollte nicht im Datensatz gespeichert werden. Falls der Adresseintrag nicht anonym ist, wird der Versandzeitpunkt automatisch in der Variable MAILSENT im Datensatz gespeichert und 'mailsent' liefert denselben Wert wie ''value('MAILSENT')''.
  
-===== Beispiel =====+ 
 +===== Beispiel: Daten zuspielen =====
  
 Das folgende Beispiel geht davon aus, dass im Adresseintrag der Name des Unternehmens im benutzerdefinierten Feld 1 hinterlegt wurde. Nun soll der Namen des Unternehmens im Fragebogen als Inhalt für den Platzhalter ''%company%'' verwendet werden. Das folgende Beispiel geht davon aus, dass im Adresseintrag der Name des Unternehmens im benutzerdefinierten Feld 1 hinterlegt wurde. Nun soll der Namen des Unternehmens im Fragebogen als Inhalt für den Platzhalter ''%company%'' verwendet werden.
Zeile 23: Zeile 43:
 $company = $data[1]; $company = $data[1];
 replace('%company%', $company); replace('%company%', $company);
 +</code>
 +
 +
 +===== Beispiel: Experiment in mehrwelliger Befragug =====
 +
 +In diesem Beispiel registrieren sich Teilnehmer selbst für eine Studie ([[:de:survey:opt-in-live]]). Im folgenden sollen Teilnehmer der Kontroll- und Experimentalgruppe unterschiedliche Serienmails als experimentellen Stimulus erhalten. Deshalb müssen ihre Adresseinträge unterschiedlichen Teilgruppen zugeordnet werden. Dies erfolgt, indem je nach Zufallsziehung ([[:de:create:questions:random]]) eine von zwei Opt-In-Fragen angezeigt wird.
 +
 +**Hinweis:** Eine [[de:create:questions:opt-in|Opt-in Frage]] kann einen neu registrierten Teilnehmer automatisch einer //Teilgruppe zuordnen//.
 +
 +<code php>
 +if (value('RG01') == 1) {
 +  question('OI01');  // Opt-In-Frage OI01 setzt Teilgruppe "EG"
 +} else {
 +  question('OI02');  // Opt-In-Frage OI02 setzt Teilgruppe "CG"
 +}
 +</code>
 +
 +Nach Opt-In-Bestätigung der E-Mail-Adresse wird der Teilnehmer automatisch zu einem zweiten Fragebogen weitergeleitet. Hier soll nun abhängig von der Gruppenzugehörigkeit der Stimulus aus Textbaustein "textEG" oder "textCG" angezeigt und entweder Serienmail 2 oder 3 verschickt werden.
 +
 +<code php>
 +$info = panelData();
 +if ($info) {
 +  $group = $info['subgroup'];
 +  if ($group == 'CG') {
 +    text('textCG');
 +    mailSchedule(false, 2);
 +  } else {
 +    mailSchedule(false, 3);
 +  }
 +} else {
 +  // Fehlermeldung anzeigen, dass der Fragebogen nicht mit einem gültigen Teilnahmeschlüssel
 +  // aufgerufen wurde (z.B. nicht aus einer Serienmail heraus) oder dass der Adresseintrag
 +  // mittlerweile aus der Adressliste gelöscht wurde
 +  text('some-error');
 +}
 +
 +</code>
 +
 +Zur einfacheren Auswertung wäre es hier sinnvoll, die Gruppenzugehörigkeit via ''[[:de:create:functions:put]]'' im Datensatz des zweiten Fragebogens abzulegen. Folgender PHP-Code würde z.B. im IF-Teil des vorherigen PHP-Codes ergänzt, nachdem eine [[:de:create:questions:internal|interne Variable]] IV01_01 im **Fragenkatalog** angelegt wurde.
 +
 +<code php>
 +$group = $info['subgroup'];
 +put('IV01_01', $group);
 +</code>
 +
 +
 +===== Beispiel: Zeit zwischen Einladung und Teilnahme =====
 +
 +In diesem Beispiel werden Serienmails im Rahmen eines Random Experience Sampling zu zufälligen Zeitpunkten an die Teilnehmer verschickt. Für die Auswertung ist es wichtig, ob der Teilnehmer den Fragebogen binnen 30 Minuten ausgefüllt hat oder nicht. Allerdings soll der Versand-Zeitpunkt nicht im Datensatz gespeichert werden, weil dies die Anonymität gefährden könnte.
 +
 +Mithilfe von ''panelData()'' kann der genaue Versandzeitpunkt nun ermittelt werden und damit die Verzögerung zwischen Versand der E-Mail und der Teilnahme. Die PHP-Funktion ''time()'' liefert die aktuelle Zeit als Unix-Zeitstempel, die Differenz ergibt die Verzögerung in Sekunden. Falls die Verzögerung mehr als 30 Minuten (1800 Sekunden) ist, wird in der [[:de:create:questions:internal|internen Variable]] IV01_01 der Code 2 gespeichert, sonst der Code 1.
 +
 +Falls sich der Versand-Zeitpunkt nicht ermitteln lässt, wird der Code -1 gespeichert. Das kann passieren, wenn das Interview nicht mit einem Serienmail-Link gestartet wurde oder wenn der Adresseintrag zwischenzeitlich durch den Projektleiter oder den Teilnehmer gelöscht wurde.
 +
 +<code php>
 +$info = panelData();
 +if ($info) {
 +  $sent = $info['mailsent'];
 +  $delay = time() - $sent;
 +  if ($delay <= 1800) {
 +    put('IV01_01', 1);
 +  } else {
 +    put('IV01_01', 2);
 +  }
 +} else {
 +  put('IV01_01', -1);
 +}
 </code> </code>
de/create/functions/paneldata.txt · Zuletzt geändert: 09.07.2023 17:41 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki