Liebes Support-Team,
ich führe eine Tagebuchstudie durch, in der täglich im PM-Fragebogen ein Screenshot hochgeladen werden soll. Die Serienmails zu den Tagebüchern und dem Follow-Up plane ich mit folgendem Code:
// Startdatum setzen
$startDatum = time();
// Wochentag des Startdatums bestimmen
$startTag = (int)date('N', $startDatum);
// Tage, an denen Versand erfolgen soll planen
$tage = [
// Coaching Montag -> Di,Mi,Do,Fr,Mo,Di,...
1 => [1,2,3,4,7,8,9,10,11,14,15,16,17,18,21],
// Coaching Dienstag -> Mi,Do,Fr,Mo,Di,Mi,...
2 => [1,2,3,6,7,8,9,10,13,14,15,16,17,20,21],
// Coaching Mittwoch -> Do,Fr,Mo,Di,Mi,Do,...
3 => [1,2,5,6,7,8,9,12,13,14,15,16,19,20,21],
// Coaching Donnerstag -> Fr,Mo,Di,Mi,Do,Fr,...
4 => [1,4,5,6,7,8,11,12,13,14,15,18,19,20,21],
// Coaching Freitag -> Mo,Di,Mi,Do,Fr,Mo,...
5 => [3,4,5,6,7,10,11,12,13,14,17,18,19,20,21],
// Coaching Samstag -> Mo,Di,Mi,Do,Fr,Mo,...
6 => [2,3,4,5,6,9,10,11,12,13,16,17,18,19,20],
// Coaching Sonntag -> Mo,Di,Mi,Do,Fr,Mo,...
7 => [1,2,3,4,5,8,9,10,11,12,15,16,17,18,19],
];
$tageRelevant = $tage[$startTag];
// Schedule für Serienmails anlegen
// $tag = date('N');
foreach ($tageRelevant as $i => $offset) {
// Serienmail morgens (2 bis 16)
mailSchedule(false, $i + 2, strtotime('+' . $offset . ' days 04:00:00', $startDatum));
// Serienmail abends (17 bis 31)
mailSchedule(false, $i + 17, strtotime('+' . $offset . ' days 20:00:00', $startDatum));
}
// Serienmail 55 (letzter Screenshot) am Tag nach Diary um 04:00 Uhr (unabhängig von Kalendertag)
$letzterOffset = max($tageRelevant);
$followUpTimestamp = strtotime('+' . ($letzterOffset + 1) . ' days 04:00:00', $startDatum);
mailSchedule(false, 55, $followUpTimestamp);
// Serienmail 47 (FollowUp) am Tag nach Diary um 06:00 Uhr (unabhängig von Kalendertag)
$letzterOffset = max($tageRelevant);
$followUpTimestamp = strtotime('+' . ($letzterOffset + 1) . ' days 06:00:00', $startDatum);
mailSchedule(false, 47, $followUpTimestamp);
// Serienmail 49 (Erinnerung FollowUp) zwei Tage nach Diary um 06:00 Uhr (unabhängig von Kalendertag)
$reminderTimestamp = strtotime('+' . ($letzterOffset + 2) . ' days 06:00:00', $startDatum);
mailSchedule(false, 49, $reminderTimestamp);
Ich möchte nun auch eine Erinnerung programmieren, die verschickt wird, wenn der Screenshot (Fragebogen zu Serienmails 18-31 und 55) nicht hochgeladen wurde. Dazu sollte in der Erinnerung möglichst auch das Datum ausgegeben werden, von dem der Screenshot fehlt.
Ich scheitere immer wieder an verschiedenen Lösungsansätzen. Haben Sie eine Idee, wie dies umgesetzt werden kann?
Vielen Dank!