$interval[0] ) { $intervals[] = array( (int) $interval[0], (int) $interval[1] ); } } usort( $intervals, static fn( array $a, array $b ): int => $a[0] <=> $b[0] ); $merged = array(); foreach ( $intervals as $interval ) { $last = count( $merged ) - 1; if ( $last >= 0 && $interval[0] <= $merged[ $last ][1] ) { $merged[ $last ][1] = max( $merged[ $last ][1], $interval[1] ); } else { $merged[] = $interval; } } $previous_end = null; $last_start = null; $closure_start = null; foreach ( $merged as $interval ) { if ( $interval[0] > $now ) { break; } $last_start = $interval[0]; $closure_start = $previous_end; if ( $interval[1] > $now ) { return $last_start >= $since && $closure_start !== null ? min( $since, $closure_start ) : $since; } $previous_end = $interval[1]; } // Currently closed: include the current closure, even when older than the base window. if ( $last_start !== null && $last_start >= $since && $closure_start !== null ) { $since = min( $since, $closure_start ); } return $previous_end === null ? $since : min( $since, $previous_end ); } }