// ========================================================================= // 8. SHORTCODE: Team Development Camp Roster - /development-camp/ // ========================================================================= add_shortcode('dev_camp_roster_full', 'render_dev_camp_roster_full'); function render_dev_camp_roster_full() { global $wpdb; // 1. Handle Year Selection via GET parameter (default to max prospect/dev camp year if not set) $available_years = $wpdb->get_col("SELECT DISTINCT camp_year FROM otg_camp_roster WHERE camp_type = 'Prospect' ORDER BY camp_year DESC"); $latest_year = isset($_GET['camp_year']) ? intval($_GET['camp_year']) : 0; if (!$latest_year || !in_array($latest_year, $available_years)) { $latest_year = !empty($available_years) ? intval($available_years[0]) : intval($wpdb->get_var("SELECT MAX(camp_year) FROM otg_camp_roster WHERE camp_type='Prospect'")); } if (!$latest_year) { return "No development camp data found."; } // Retrieve Development Camp Settings by matching the first 4 characters of season to $latest_year $camp_settings = $wpdb->get_row($wpdb->prepare( "SELECT season, dev_start, dev_end, dev_location FROM otg_rangers_season_settings WHERE LEFT(season, 4) = %s LIMIT 1", $latest_year )); $dev_camp_dates_str = ''; $start_date_obj = null; $end_date_obj = null; if ($camp_settings && !empty($camp_settings->dev_start) && !empty($camp_settings->dev_end)) { $start_date_obj = new DateTime($camp_settings->dev_start); $end_date_obj = new DateTime($camp_settings->dev_end); $start_month = $start_date_obj->format('F'); $end_month = $end_date_obj->format('F'); if ($start_month === $end_month) { $dev_camp_dates_str = $start_date_obj->format('F j') . '-' . $end_date_obj->format('j'); } else { $dev_camp_dates_str = $start_date_obj->format('F j') . ' - ' . $end_date_obj->format('F j'); } if (!empty($camp_settings->dev_location)) { $dev_camp_dates_str .= '
Location: ' . $camp_settings->dev_location; } } // Check which camp types actually exist for this selected year to conditionally display navigation links $has_training = (intval($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM otg_camp_roster WHERE camp_year = %d AND camp_type = 'Training'", $latest_year))) > 0); $has_rookie = (intval($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM otg_camp_roster WHERE camp_year = %d AND camp_type = 'Rookie'", $latest_year))) > 0); $has_dev = (intval($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM otg_camp_roster WHERE camp_year = %d AND camp_type = 'Prospect'", $latest_year))) > 0); $positions = ['Forward', 'Defenseman', 'Goaltender']; $target_date = new DateTime('2026-06-29'); // Start output wrapper constrained to 100% width, max-width 1800px, and left-justified matching stats browser $output = '
'; // Top Navigation & Filter Bar (Camp Type Switcher + Year Dropdown Selector) $output .= '
'; // Camp Type Navigation Links $output .= '
'; $output .= 'Camp View:'; if ($has_dev) { $dev_url = esc_url(add_query_arg('camp_year', $latest_year, home_url('/development-camp/'))); $output .= 'Development Camp'; } if ($has_rookie) { $rookie_url = esc_url(add_query_arg('camp_year', $latest_year, home_url('/rookie-camp/'))); $output .= 'Rookie Camp'; } if ($has_training) { $training_url = esc_url(add_query_arg('camp_year', $latest_year, home_url('/training-camp/'))); $output .= 'Training Camp'; } $output .= '
'; // Year Selector Dropdown Form if (!empty($available_years)) { $output .= '
'; $output .= ''; $output .= ''; $output .= '
'; } $output .= '
'; // Header Section (Updated to match training camp layout format) $output .= '
'; $output .= '
Development Camp Roster: ' . $latest_year . '
'; if (!empty($dev_camp_dates_str)) { $output .= '
Development Camp Dates:
' . $dev_camp_dates_str . '
'; } $output .= '
'; // Top Section Grid for Related Posts $output .= '
'; $output .= '
'; // Related WordPress Posts Section (Tag name matching: e.g., "2025 Development Camp") $camp_posts = get_posts(array( 'post_type' => 'post', 'posts_per_page' => 5, 'tax_query' => array( array( 'taxonomy' => 'post_tag', 'field' => 'name', 'terms' => $latest_year . ' Development Camp', ), ), 'post_status' => 'publish' )); if (!empty($camp_posts)) { $output .= '
'; $output .= '
Related Development Camp News & Updates
'; $output .= '
    '; foreach ($camp_posts as $post) { setup_postdata($post); $post_url = get_permalink($post->ID); $post_title = get_the_title($post->ID); $post_date = get_the_date('F j, Y', $post->ID); $output .= '
  • '; $output .= '' . esc_html($post_date) . ''; $output .= '' . esc_html($post_title) . ''; $output .= '
  • '; } $output .= '
'; $output .= '
'; wp_reset_postdata(); } $output .= '
'; $output .= '
'; // Close Top Section Grid // Styles matching modern uniform layout $output .= ''; foreach ($positions as $pos) { $display_pos = ($pos == 'Defenseman') ? 'Defensemen' : $pos . 's'; $output .= '
' . $display_pos . '
'; $players = $wpdb->get_results($wpdb->prepare( "SELECT * FROM otg_camp_roster WHERE camp_year = %d AND camp_type = 'Prospect' AND position = %s ORDER BY player_name ASC", $latest_year, $pos )); $h_goals_wins = ($pos === 'Goaltender') ? 'W' : 'G'; $h_assists_losses = ($pos === 'Goaltender') ? 'L' : 'A'; $h_pts_ot = ($pos === 'Goaltender') ? 'OT' : 'PTS'; $h_pim_gaa = ($pos === 'Goaltender') ? 'GAA' : 'PIM'; $output .= ''; if (empty($players)) { $output .= ''; } else { foreach ($players as $p) { $clean_jersey = ltrim($p->jersey_number, '#'); $name = $p->id ? '' . esc_html($p->player_name) . '' : esc_html($p->player_name); $birthdate = !empty($p->birthdate) ? new DateTime($p->birthdate) : null; $age = $birthdate ? $target_date->diff($birthdate)->y : ''; // Calculate GAA for goalies, PIM for skaters $stat_five = ($pos === 'Goaltender') ? number_format($p->pim / 100, 2) : $p->pim; $output .= ''; } } $output .= '
Player #HtWt HandBirthdateAge Team Birthplace Country GP' . $h_goals_wins . ' ' . $h_assists_losses . ' ' . $h_pts_ot . ' ' . $h_pim_gaa . '
No players found for this position.
' . $name . ' ' . esc_html($clean_jersey) . ' ' . esc_html($p->height) . ' ' . esc_html($p->weight) . ' ' . esc_html($p->hand) . ' ' . esc_html($p->birthdate) . ' ' . esc_html($age) . ' ' . esc_html($p->team_name) . ' ' . esc_html($p->birth_city) . ' ' . esc_html($p->country) . ' ' . esc_html($p->gp) . ' ' . esc_html($p->goals) . ' ' . esc_html($p->assists) . ' ' . esc_html($p->points) . ' ' . esc_html($stat_five) . '
'; } $output .= '
'; // Close main wrapper return $output; } Doug Glatt – Activity – OutsideTheGarden Boards – Page 46
JUNE
«
Sun
7
Mon
8
Tue
9
Wed
10
Thu
11
Fri
12
Sat
13
»
Doug Glatt
Doug Glatt
Group: Registered
Joined: 2023-08-26
Legend
Follow
Laf you need to bury that lard ass

In forum Where Smit Hits The Fan

10 months ago
@cuyllranger

In forum Where Smit Hits The Fan

10 months ago
PP for the Rangers

In forum Where Smit Hits The Fan

10 months ago
He has aged like fine milk

In forum Where Smit Hits The Fan

10 months ago
Adam Edstrom the Swedish Giraffe with a shocker

In forum Where Smit Hits The Fan

10 months ago
Rangers team defense last year was horrifying...too many giv...

In forum Where Smit Hits The Fan

10 months ago
Rangers need Adam Fox to play like Adam Fox and not Adam Fau...

In forum Where Smit Hits The Fan

10 months ago
Simul brain fart posts there... We are in mid season form

In forum Where Smit Hits The Fan

10 months ago
Rempe with a brain fart play that we saw a lot last year fro...

In forum Where Smit Hits The Fan

10 months ago
I think Morrow did ok and I feel a little better about the R...

In forum Where Smit Hits The Fan

10 months ago
Rangers a little flat and Devils possessing the puck in the ...

In forum Where Smit Hits The Fan

10 months ago
Did we know Schneider was hurt last year? requiring off-seas...

In forum Where Smit Hits The Fan

10 months ago
What's Brian Leetch doin' these days? Maloney is ok but to m...

In forum Where Smit Hits The Fan

10 months ago
Game #5... 1 more game left in the preseason and then the re...

In forum Where Smit Hits The Fan

10 months ago
Morrow and Laba still hanging in there with Perrault... Inte...

In forum Where Smit Hits The Fan

10 months ago
Page 46 / 355