\WP_Stager_Integration\Calendar::render_all(array $args = array()): void

Description

Renders all events.

Respects the 'show_past_events' and 'show_upcoming_events' settings passed in $args.

Parameters:

ParameterTypeDescription
$args array (Optional) An array of calendar settings. See \WP_Stager_Integration\Calendar::render_calendar() for accepted arguments.

Returns:

void

Information

Fileclass-calendar.php line 864
See also

Full Code

/**
 * Renders all events.
 *
 * Respects the <code>'show_past_events'</code> and <code>'show_upcoming_events'</code> settings passed in <code>$args</code>.
 *
 * @param array $args   (Optional) An array of calendar settings. See <code>\WP_Stager_Integration\Calendar::render_calendar()</code> for accepted arguments.
 *
 * @return void
 *
 * @see \WP_Stager_Integration\Calendar::render_calendar() for accepted <code>$args</code>.
 */
public static function render_all( $args = array() ) {

    // Type casting
    $args = (array) $args;

    // Override specific args
    $args[ 'show_nav' ] = false;
    $args[ 'clip' ]     = true;

    // Determine whether past events should be included
    $show_past_events     = (bool) ($args[ 'show_past_events' ] ?? true);
    $show_upcoming_events = (bool) ($args[ 'show_upcoming_events' ] ?? true);

    // Fetch events (ordered by start ascending)
    $events = (array) (Event::get_all_events( $show_past_events, -1 ) ?: array());
    $events = (array) (self::filter_events_by_show_upcoming( $events, $show_upcoming_events ) ?: array());

    // If no events, render empty list (will show no-events message via template)
    if ( empty( $events ) ) {
        $args[ 'scope' ]    = 'event';
        $args[ 'events' ]   = array();
        $args[ 'show_nav' ] = false;
        self::render_calendar( $args );
        return;
    }

    // Calculate global range across all events
    $min_start = 0;
    $max_end   = 0;

    foreach ( $events as $event ) {
        $start_raw = (string) ( $event[ 'programStartAt' ] ?? '' );
        $end_raw   = (string) ( $event[ 'programEndAt' ] ?? '' );

        if ( $start_raw ) {
            $start_ts = (int) strtotime( $start_raw );
            if ( $start_ts ) {
                $min_start = $min_start ? min( $min_start, $start_ts ) : $start_ts;
            }
        }

        if ( $end_raw ) {
            $end_ts = (int) strtotime( $end_raw );
            if ( $end_ts ) {
                $max_end = max( $max_end, $end_ts );
            }
        }
    }

    // Fallback if no end found; at least use start day
    if ( ! $max_end && $min_start ) {
        $max_end = $min_start;
    }

    // Bail if we still couldn't determine a start
    if ( ! $min_start ) {
        $args[ 'scope' ]    = 'event';
        $args[ 'events' ]   = array();
        $args[ 'show_nav' ] = false;
        self::render_calendar( $args );
        return;
    }

    // Add args
    $args[ 'class' ]  = 'wpstager-calendar--scope-all';
    $args[ 'events' ] = $events;

    // Delegate to range renderer; pass through args
    self::render_range( $min_start, $max_end, $args );
}

💡 If you ever get stuck or have a question, please check our FAQs, our Free Integration Service, our paid Full Integration Service, or reach out to us!

Get WP Stager Integration

🎁 Limited offer: Use code WELCOME26 to get your first month for free!