= $primeraFecha && $hoy <= $ultimaFecha) ? $hoy : $primeraFecha; } // Si la fecha elegida NO tiene partidos (día de descanso o deep-link a un día // vacío), saltamos al día CON partidos más cercano hacia adelante (o al último // que haya, si ya pasaron todos). Así nunca queda seleccionado un día vacío. if ($fechasMundial && !in_array($fechaSel, $fechasMundial, true)) { $snap = null; foreach ($fechasMundial as $d) { if ($d >= $fechaSel) { $snap = $d; break; } } $fechaSel = $snap ?? end($fechasMundial); } /** * Ventana de la barra de días: muestra hasta $ventana días QUE TIENEN PARTIDO * (los días sin partido no están en $diasConPartido, así que nunca aparecen), * centrada alrededor del día seleccionado. */ function buildBarraDias(string $fechaSel, array $diasConPartido, int $ventana = 7): array { $total = count($diasConPartido); if ($total <= $ventana) return $diasConPartido; $idx = array_search($fechaSel, $diasConPartido, true); if ($idx === false) { // $fechaSel ya se ajusta a un día con partido antes de llamar acá; por // las dudas, ubicamos el día con partido más cercano hacia adelante. $idx = $total - 1; foreach ($diasConPartido as $i => $d) { if ($d >= $fechaSel) { $idx = $i; break; } } } $mitad = intdiv($ventana, 2); $start = max(0, min($idx - $mitad, $total - $ventana)); return array_slice($diasConPartido, $start, $ventana); } function etiquetaDia(string $f, string $hoy): string { $ts = strtotime($f); $dif = ($ts - strtotime($hoy)) / 86400; $dias = ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb']; $meses = ['', 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']; $num = (int)date('j', $ts); $mes = $meses[(int)date('n', $ts)]; if ($dif === 0.0) return "Hoy $num $mes"; if ($dif === 1.0) return "Mañana $num $mes"; if ($dif === -1.0) return "Ayer $num $mes"; return $dias[(int)date('w', $ts)] . " $num $mes"; } function mesTorneo(string $fechaSel): string { $meses = ['', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']; return $meses[(int)date('n', strtotime($fechaSel))]; } $diasBarra = buildBarraDias($fechaSel, $fechasMundial); $partidosDelDia = array_values(array_filter($partidos, fn($p) => $p['fecha'] === $fechaSel)); $koDelDia = array_values(array_filter($partidosKO, fn($p) => $p['fecha'] === $fechaSel)); // Pronósticos de TODOS los participantes, pero solo de los partidos del día cuyo // CIERRE de apuestas ya pasó (ya no se puede predecir). Mientras se pueda cargar // un pronóstico, las apuestas ajenas siguen ocultas (la regla se aplica partido // por partido en el backend). Incluye grupos y eliminatorias del día. $pronosticosVisibles = $user ? getPronosticosAjenosVisibles(array_merge($partidosDelDia, $koDelDia)) : []; $faseDelDia = $koDelDia ? $koDelDia[0]['fase_nombre'] : 'Fase de grupos'; $idxSel = array_search($fechaSel, $fechasMundial, true); $diaPrev = $idxSel > 0 ? $fechasMundial[$idxSel - 1] : null; $diaNext = $idxSel < count($fechasMundial) - 1 ? $fechasMundial[$idxSel + 1] : null; $bienvenida = isset($_GET['bienvenida']); ?> TigreProde · Copa Mundial 2026
TigreProde
¡Bienvenido/a a TigreProde! Ya podés cargar tus pronósticos.
Participá por increíbles premios TV Smart 50" · Parlante JBL Go · Picada para 10 · Pelota Oficial Y si acertás todos los partidos del Mundial: ¡un Viaje a Miami!
Ver premios

Copa Mundial 2026

Mes del calendario:

No hay partidos programados para este día.

Grupo Tu apuesta: -
Pronósticos de todos
  • - +
>
FINALIZADO TBD Tu apuesta: -
Pronósticos de todos
  • - +