Vielen Dank für die schnelle Rückmeldung. Hier der Code für die Rotation:
/***** 1 | Rotation mischen *****/
$rotation = [
'A' => 'V0101-V0102',
'B' => 'V0201-V0202',
'C' => 'V0301-V0302',
'D' => 'V0401-V0402',
'E' => 'V0501-V0502',
'F' => 'V0601-V0602',
'G' => 'V0701-V0702',
'H' => 'V0801-V0802',
'I' => 'V0901-V0902',
'J' => 'V1001-V1002',
'K' => 'V1101-V1102',
'L' => 'V1201-V1202',];
/***** 1b | Blocks wirklich mischen *****/
$keys = array_keys($rotation); // A–L
shuffle($keys); // zufällige Reihenfolge
$rotationShuffled = [];
foreach ($keys as $k) {
$rotationShuffled[$k] = $rotation[$k];
}
$rotation = $rotationShuffled; // ab hier gilt nur noch die gemischte Reihenfolg
/***** 2 | Dauer-Array *****/
$dur = array_merge(array_fill(0,6,51), array_fill(0,6,146));
if (mt_rand(0,1)) { // 50 % drehen
$dur = array_reverse($dur); // 40,40,20,20
}
/***** 3 | Dauer den einzelnen Seiten zuordnen *****/
$i = 0;
if (!isset($durPages)) { $durPages = []; registerVariable('durPages'); }
foreach ($rotation as $pages) {
$t = $dur[$i++]; // EIN Wert pro Block
foreach (explode('-', $pages) as $pageID) {
$durPages[$pageID] = $t; // beide Seiten erhalten dieselbe Zeit
}
}
/***** 4 | Reihenfolge mit Zwischenseite bauen *****/
$startID = 'START';
$middleID = 'MID';
$order = [];
$order[] = $startID; // 1) START ganz am Anfang
$i = 0;
foreach ($rotation as $pages) {
$order[] = $pages; // jeden Vignetten-Block anhängen
$i++;
if ($i === 6) {
// 2) nach genau 6 Blöcken einmalige MID-Seite
$order[] = $middleID;
}
}
// Keine array_pop nötig, da wir MID nur einmal kontrolliert einfügen
setPageOrder($order, 'Post');
/* Alles merken, damit spätere Seiten darauf zugreifen können */
registerVariable($rotation);
registerVariable($durPages);
$firstDur = $dur[0]; // Zeit für die ersten 6 Vignetten
$secondDur = $dur[6]; // Zeit für die nächsten 6 Vignetten
// 3) Variablen registrieren, damit START/MID darauf zugreifen können
registerVariable($firstDur);
registerVariable($secondDur);
$idx = 1;
foreach ($rotation as $blockID => $pages) {
// Blockbuchstaben sichern
put(sprintf('RA04_%02d', $idx), $blockID); // z. B. "C"
// passende Dauer sichern
put(sprintf('RA05_%02d', $idx), $dur[$idx - 1]); // 9 oder 12
$idx++;
}