Add player assignments with fallback for legacy players
This commit is contained in:
@@ -47,15 +47,6 @@ class SP_Player_List extends SP_Secondary_Post {
|
|||||||
$crop = get_post_meta( $this->ID, 'sp_crop', true );
|
$crop = get_post_meta( $this->ID, 'sp_crop', true );
|
||||||
$order = get_post_meta( $this->ID, 'sp_order', true );
|
$order = get_post_meta( $this->ID, 'sp_order', true );
|
||||||
$select = get_post_meta( $this->ID, 'sp_select', true );
|
$select = get_post_meta( $this->ID, 'sp_select', true );
|
||||||
//Player Assignments
|
|
||||||
$assignments = array();
|
|
||||||
foreach ( $league_ids as $l_id ) {
|
|
||||||
foreach ( $season_ids as $s_id ) {
|
|
||||||
if ( $team != '0' ) {
|
|
||||||
$assignments[] = $l_id.'_'.$s_id.'_'.$team;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->date = $this->__get( 'date' );
|
$this->date = $this->__get( 'date' );
|
||||||
|
|
||||||
@@ -108,17 +99,7 @@ class SP_Player_List extends SP_Secondary_Post {
|
|||||||
'relation' => 'AND',
|
'relation' => 'AND',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
//Use the Player Assignments to filter players
|
|
||||||
if ( false ) {
|
|
||||||
$args['meta_query'] = array(
|
|
||||||
array(
|
|
||||||
'key' => 'sp_assignments',
|
|
||||||
'value' => $assignments,
|
|
||||||
'compare' => 'IN'
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}else{
|
|
||||||
//Use the legacy way to filter players
|
|
||||||
if ( $league_ids ):
|
if ( $league_ids ):
|
||||||
$args['tax_query'][] = array(
|
$args['tax_query'][] = array(
|
||||||
'taxonomy' => 'sp_league',
|
'taxonomy' => 'sp_league',
|
||||||
@@ -153,8 +134,6 @@ class SP_Player_List extends SP_Secondary_Post {
|
|||||||
);
|
);
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $position_ids ):
|
if ( $position_ids ):
|
||||||
$args['tax_query'][] = array(
|
$args['tax_query'][] = array(
|
||||||
'taxonomy' => 'sp_position',
|
'taxonomy' => 'sp_position',
|
||||||
@@ -163,7 +142,11 @@ class SP_Player_List extends SP_Secondary_Post {
|
|||||||
);
|
);
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
$players = get_posts( $args );
|
$args = apply_filters( 'sportspress_player_list_args', $args, $team );
|
||||||
|
|
||||||
|
$players = (array) get_posts( $args );
|
||||||
|
|
||||||
|
$players = apply_filters( 'sportspress_player_list_players', $players, $args, $team );
|
||||||
|
|
||||||
if ( $players && is_array( $players ) ) {
|
if ( $players && is_array( $players ) ) {
|
||||||
foreach ( $players as $player ) {
|
foreach ( $players as $player ) {
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ class SportsPress_Player_Assignments {
|
|||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
add_action( 'sportspress_save_meta_player_statistics', array( $this, 'save_additional_statistics' ), 10, 2 );
|
add_action( 'sportspress_save_meta_player_statistics', array( $this, 'save_additional_statistics' ), 10, 2 );
|
||||||
|
|
||||||
|
// Filters
|
||||||
|
add_filter( 'sportspress_player_list_args', array( $this, 'add_args' ), 10 );
|
||||||
|
add_filter( 'sportspress_player_list_players', array( $this, 'add_players' ), 10, 3 );
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Define constants.
|
* Define constants.
|
||||||
@@ -48,14 +52,69 @@ class SportsPress_Player_Assignments {
|
|||||||
$leagues = $post_data['sp_leagues'];
|
$leagues = $post_data['sp_leagues'];
|
||||||
|
|
||||||
foreach ( $leagues as $l_id => $season ) {
|
foreach ( $leagues as $l_id => $season ) {
|
||||||
|
if ( 0 === $l_id ) continue;
|
||||||
foreach ( $season as $s_id => $team_id ) {
|
foreach ( $season as $s_id => $team_id ) {
|
||||||
if ( $team_id != '-1' ) {
|
if ( 0 >= $team_id ) continue;
|
||||||
$serialized = $l_id.'_'.$s_id.'_'.$team_id;
|
$serialized = $l_id.'_'.$s_id.'_'.$team_id;
|
||||||
add_post_meta( $post_id, 'sp_assignments', $serialized, false );
|
add_post_meta( $post_id, 'sp_assignments', $serialized, false );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add args to filter out assigned players
|
||||||
|
*/
|
||||||
|
public function add_args( $args = array() ) {
|
||||||
|
$args['meta_query'][] = array(
|
||||||
|
'key' => 'sp_assignments',
|
||||||
|
'value' => '',
|
||||||
|
'compare' => 'NOT EXISTS',
|
||||||
|
);
|
||||||
|
|
||||||
|
$args['meta_query'][] = array(
|
||||||
|
'relation' => 'OR',
|
||||||
|
);
|
||||||
|
|
||||||
|
return $args;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add assigned players to player list
|
||||||
|
*/
|
||||||
|
public function add_players( $players = array(), $args = array(), $team = false ) {
|
||||||
|
$tax_query = (array) sp_array_value( $args, 'tax_query', array() );
|
||||||
|
$league_ids = array();
|
||||||
|
$season_ids = array();
|
||||||
|
|
||||||
|
foreach ( $tax_query as $param ) {
|
||||||
|
if ( 'sp_league' === sp_array_value( $param, 'taxonomy' ) ) $league_ids = sp_array_value( $param, 'terms', array() );
|
||||||
|
if ( 'sp_season' === sp_array_value( $param, 'taxonomy' ) ) $season_ids = sp_array_value( $param, 'terms', array() );
|
||||||
|
}
|
||||||
|
|
||||||
|
$assignments = array();
|
||||||
|
foreach ( $league_ids as $l_id ) {
|
||||||
|
foreach ( $season_ids as $s_id ) {
|
||||||
|
if ( $team && $team != '0' ) {
|
||||||
|
$assignments[] = $l_id.'_'.$s_id.'_'.$team;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$args['meta_query'] = array(
|
||||||
|
array(
|
||||||
|
'key' => 'sp_assignments',
|
||||||
|
'value' => $assignments,
|
||||||
|
'compare' => 'IN'
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$assigned_players = (array) get_posts( $args );
|
||||||
|
|
||||||
|
$players = array_merge( $assigned_players, $players );
|
||||||
|
|
||||||
|
return $players;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
endif;
|
endif;
|
||||||
//new SportsPress_Player_Assignments();
|
|
||||||
|
new SportsPress_Player_Assignments();
|
||||||
Reference in New Issue
Block a user