![]() Server : LiteSpeed System : Linux premium84.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : claqxcrl ( 523) PHP Version : 8.1.32 Disable Function : NONE Directory : /home/claqxcrl/anfangola.com/wp-content/plugins/sportspress/includes/ |
<?php /** * Team Class * * The SportsPress team class handles individual team data. * * @class SP_Team * @version 2.7.1 * @package SportsPress/Classes * @category Class * @author ThemeBoy */ class SP_Team extends SP_Custom_Post { public function next_event() { $args = array( 'post_type' => 'sp_event', 'numberposts' => 1, 'posts_per_page' => 1, 'order' => 'DESC', 'post_status' => 'future', 'meta_query' => array( array( 'key' => 'sp_team', 'value' => $this->ID, ), ), ); $events = get_posts( $args ); if ( count( $events ) ) { return array_shift( $events ); } return false; } /** * Returns formatted data * * @access public * @param bool $admin * @return array */ public function columns( $league_id ) { $seasons = (array) get_the_terms( $this->ID, 'sp_season' ); $columns = (array) get_post_meta( $this->ID, 'sp_columns', true ); // Get labels from result variables $result_labels = (array) sp_get_var_labels( 'sp_result' ); // Get labels from outcome variables $outcome_labels = (array) sp_get_var_labels( 'sp_outcome' ); // Generate array of all season ids and season names $div_ids = array(); $season_names = array(); foreach ( $seasons as $season ) : if ( is_object( $season ) && property_exists( $season, 'term_id' ) && property_exists( $season, 'name' ) ) : $div_ids[] = $season->term_id; $season_names[ $season->term_id ] = $season->name; endif; endforeach; $div_ids[] = 0; $season_names[0] = esc_attr__( 'Total', 'sportspress' ); $data = array(); // Get all seasons populated with data where available $data = sp_array_combine( $div_ids, sp_array_value( $columns, $league_id, array() ) ); // Get equations from column variables $equations = sp_get_var_equations( 'sp_column' ); // Initialize placeholders array $placeholders = array(); foreach ( $div_ids as $div_id ) : $totals = array( 'eventsplayed' => 0, 'eventsplayed_home' => 0, 'eventsplayed_away' => 0, 'eventsplayed_venue' => 0, 'eventminutes' => 0, 'eventminutes_home' => 0, 'eventminutes_away' => 0, 'eventminutes_venue' => 0, 'streak' => 0, 'streak_home' => 0, 'streak_away' => 0, 'streak_venue' => 0, 'last5' => null, 'last10' => null, 'homerecord' => null, 'awayrecord' => null, ); foreach ( $result_labels as $key => $value ) : $totals[ $key . 'for' ] = 0; $totals[ $key . 'for_home' ] = 0; $totals[ $key . 'for_away' ] = 0; $totals[ $key . 'for_venue' ] = 0; $totals[ $key . 'against' ] = 0; $totals[ $key . 'against_home' ] = 0; $totals[ $key . 'against_away' ] = 0; $totals[ $key . 'against_venue' ] = 0; endforeach; foreach ( $outcome_labels as $key => $value ) : $totals[ $key ] = 0; $totals[ $key . '_home' ] = 0; $totals[ $key . '_away' ] = 0; $totals[ $key . '_venue' ] = 0; endforeach; // Initialize streaks counter $streak = array( 'name' => '', 'count' => 0, 'fire' => 1, ); // Initialize last counters $last5 = array(); $last10 = array(); // Initialize record counters $homerecord = array(); $awayrecord = array(); // Add outcome types to last and record counters foreach ( $outcome_labels as $key => $value ) : $last5[ $key ] = 0; $last10[ $key ] = 0; $homerecord[ $key ] = 0; $awayrecord[ $key ] = 0; endforeach; // Get all events involving the team in current season $args = array( 'post_type' => 'sp_event', 'numberposts' => -1, 'posts_per_page' => -1, 'orderby' => 'post_date', 'order' => 'DESC', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'sp_team', 'value' => $this->ID, ), array( 'key' => 'sp_format', 'value' => apply_filters( 'sportspress_competitive_event_formats', array( 'league' ) ), 'compare' => 'IN', ), ), 'tax_query' => array( 'relation' => 'AND', ), ); if ( $league_id ) : $args['tax_query'][] = array( 'taxonomy' => 'sp_league', 'field' => 'term_id', 'terms' => $league_id, ); endif; if ( $div_id ) : $args['tax_query'][] = array( 'taxonomy' => 'sp_season', 'field' => 'term_id', 'terms' => $div_id, ); endif; $args = apply_filters( 'sportspress_team_data_event_args', $args ); $events = get_posts( $args ); $e = 0; foreach ( $events as $event ) : $results = (array) get_post_meta( $event->ID, 'sp_results', true ); $minutes = get_post_meta( $event->ID, 'sp_minutes', true ); if ( $minutes === '' ) { $minutes = get_option( 'sportspress_event_minutes', 90 ); } $i = 0; foreach ( $results as $team_id => $team_result ) : if ( is_array( $team_result ) ) : foreach ( $team_result as $key => $value ) : if ( $team_id == $this->ID ) : if ( $key == 'outcome' ) : // Convert to array if ( ! is_array( $value ) ) : $value = array( $value ); endif; foreach ( $value as $outcome ) : // Increment events played and outcome count if ( array_key_exists( $outcome, $totals ) ) : $totals['eventsplayed'] ++; $totals['eventminutes'] += $minutes; $totals[ $outcome ] ++; // Add to home or away stats if ( 0 === $i ) : $totals['eventsplayed_home'] ++; $totals['eventminutes_home'] += $minutes; $totals[ $outcome . '_home' ] ++; else : $totals['eventsplayed_away'] ++; $totals['eventminutes_away'] += $minutes; $totals[ $outcome . '_away' ] ++; endif; // Add to venue stats if ( sp_is_home_venue( $team_id, $event->ID ) ) : $totals['eventsplayed_venue'] ++; $totals['eventminutes_venue'] += $minutes; $totals[ $outcome . '_venue' ] ++; endif; endif; if ( $outcome && $outcome != '-1' ) : // Add to streak counter if ( $streak['fire'] && ( $streak['name'] == '' || $streak['name'] == $outcome ) ) : $streak['name'] = $outcome; $streak['count'] ++; else : $streak['fire'] = 0; endif; // Add to last 5 counter if sum is less than 5 if ( array_key_exists( $outcome, $last5 ) && array_sum( $last5 ) < 5 ) : $last5[ $outcome ] ++; endif; // Add to last 10 counter if sum is less than 10 if ( array_key_exists( $outcome, $last10 ) && array_sum( $last10 ) < 10 ) : $last10[ $outcome ] ++; endif; // Add to home or away record if ( 0 === $i ) { if ( array_key_exists( $outcome, $homerecord ) ) { $homerecord[ $outcome ] ++; } } else { if ( array_key_exists( $outcome, $awayrecord ) ) { $awayrecord[ $outcome ] ++; } } endif; endforeach; else : $value = floatval( $value ); if ( array_key_exists( $key . 'for', $totals ) ) : $totals[ $key . 'for' ] += $value; $totals[ $key . 'for' . ( $e + 1 ) ] = $value; // Add to home or away stats if ( 0 === $i ) : $totals[ $key . 'for_home' ] += $value; else : $totals[ $key . 'for_away' ] += $value; endif; // Add to venue stats if ( sp_is_home_venue( $team_id, $event->ID ) ) : $totals[ $key . 'for_venue' ] += $value; endif; endif; endif; else : if ( $key != 'outcome' ) : $value = floatval( $value ); if ( array_key_exists( $key . 'against', $totals ) ) : $totals[ $key . 'against' ] += $value; $totals[ $key . 'against' . ( $e + 1 ) ] = $value; // Add to home or away stats if ( 0 === $i ) : $totals[ $key . 'against_home' ] += $value; else : $totals[ $key . 'against_away' ] += $value; endif; // Add to venue stats if ( sp_is_home_venue( $team_id, $event->ID ) ) : $totals[ $key . 'against_venue' ] += $value; endif; endif; endif; endif; endforeach; endif; $i++; endforeach; $e++; endforeach; // Compile streaks counter and add to totals $args = array( 'name' => $streak['name'], 'post_type' => 'sp_outcome', 'post_status' => 'publish', 'posts_per_page' => 1, 'orderby' => 'menu_order', 'order' => 'ASC', ); $outcomes = get_posts( $args ); if ( $outcomes ) : $outcome = reset( $outcomes ); $abbreviation = get_post_meta( $outcome->ID, 'sp_abbreviation', true ); if ( ! $abbreviation ) { $abbreviation = sp_substr( $outcome->post_title, 0, 1 ); } $totals['streak'] = $abbreviation . $streak['count']; endif; // Add last and record counters to totals $totals['last5'] = $last5; $totals['last10'] = $last10; $totals['homerecord'] = $homerecord; $totals['awayrecord'] = $awayrecord; // Generate array of placeholder values for each league $placeholders[ $div_id ] = array(); foreach ( $equations as $key => $value ) : if ( '$gamesback' == $value['equation'] ) { $placeholders[ $div_id ][ $key ] = esc_attr__( '(Auto)', 'sportspress' ); } else { $placeholders[ $div_id ][ $key ] = sp_solve( $value['equation'], $totals, $value['precision'] ); } endforeach; endforeach; // Get columns from column variables $columns = sp_get_var_labels( 'sp_column' ); return array( $columns, $data, $placeholders ); } /** * Returns staff members * * @access public * @return array */ public function staff( $admin = false ) { if ( ! $this->ID ) { return null; } $args = array( 'post_type' => 'sp_staff', 'numberposts' => -1, 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_key' => 'sp_team', 'meta_value' => $this->ID, ); $members = get_posts( $args ); $checked = (array) get_post_meta( $this->ID, 'sp_staff' ); if ( $admin ) : return array( $members, $checked ); else : foreach ( $members as $key => $member ) : if ( ! in_array( $member->ID, $checked ) ) : unset( $members[ $key ] ); endif; endforeach; return $members; endif; } /** * Returns player lists * * @access public * @return array */ public function lists( $admin = false ) { if ( ! $this->ID ) { return null; } $args = array( 'post_type' => 'sp_list', 'numberposts' => -1, 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'sp_team', 'value' => $this->ID, ), array( 'key' => 'sp_team', 'value' => '0', ), ), ); $lists = get_posts( $args ); $checked = (array) get_post_meta( $this->ID, 'sp_list' ); if ( $admin ) : return array( $lists, $checked ); else : foreach ( $lists as $key => $list ) : if ( ! in_array( $list->ID, $checked ) ) : unset( $lists[ $key ] ); endif; endforeach; return $lists; endif; } /** * Returns league tables * * @access public * @return array */ public function tables( $admin = false ) { if ( ! $this->ID ) { return null; } $league_ids = sp_get_the_term_ids( $this->ID, 'sp_league' ); $season_ids = sp_get_the_term_ids( $this->ID, 'sp_season' ); $args = array( 'post_type' => 'sp_table', 'numberposts' => -1, 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'sp_select', 'value' => 'manual', ), array( 'key' => 'sp_team', 'value' => $this->ID, ), ), ); $tables_by_id = get_posts( $args ); $args = array( 'post_type' => 'sp_table', 'numberposts' => -1, 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'sp_select', 'value' => 'auto', ), ), 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'sp_league', 'field' => 'term_id', 'terms' => $league_ids, ), array( 'taxonomy' => 'sp_season', 'field' => 'term_id', 'terms' => $season_ids, ), ), ); $tables_by_terms = get_posts( $args ); $tables = array_merge( $tables_by_terms, $tables_by_id ); $checked = (array) get_post_meta( $this->ID, 'sp_table' ); if ( $admin ) : return array( $tables, $checked ); else : foreach ( $tables as $key => $table ) : if ( ! in_array( $table->ID, $checked ) ) : unset( $tables[ $key ] ); endif; endforeach; return $tables; endif; } }