Add "Next Team" preset to league tables
This commit is contained in:
@@ -176,15 +176,17 @@
|
|||||||
.sp-league-table td.has-logo {
|
.sp-league-table td.has-logo {
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
}
|
}
|
||||||
.sp-league-table .data-name .team-logo {
|
.sp-league-table .team-logo {
|
||||||
width: 2em;
|
width: 2em;
|
||||||
height: 2em;
|
height: 2em;
|
||||||
margin-right: 0.5em;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.sp-league-table .data-name .team-logo img {
|
.sp-league-table .data-name .team-logo {
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
.sp-league-table .team-logo img {
|
||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
max-width: 2em;
|
max-width: 2em;
|
||||||
|
|||||||
@@ -618,12 +618,12 @@ class SP_League_Table extends SP_Secondary_Post {
|
|||||||
endif;
|
endif;
|
||||||
else:
|
else:
|
||||||
// Solve
|
// Solve
|
||||||
$placeholder = sp_solve( $stat->equation, sp_array_value( $totals, $team_id, array() ), $stat->precision );
|
$placeholder = sp_solve( $stat->equation, sp_array_value( $totals, $team_id, array() ), $stat->precision, 0, $team_id );
|
||||||
|
|
||||||
if ( '$gamesback' == $stat->equation )
|
if ( '$gamesback' == $stat->equation )
|
||||||
$gb_column = $stat->post_name;
|
$gb_column = $stat->post_name;
|
||||||
|
|
||||||
if ( ! in_array( $stat->equation, array( '$gamesback', '$streak', '$form', '$last5', '$last10', '$homerecord', '$awayrecord' ) ) ):
|
if ( ! in_array( $stat->equation, apply_filters( 'sportspress_equation_presets', array( '$gamesback', '$streak', '$form', '$last5', '$last10', '$homerecord', '$awayrecord' ) ) ) ):
|
||||||
// Adjustments
|
// Adjustments
|
||||||
$adjustment = sp_array_value( $adjustments, $team_id, array() );
|
$adjustment = sp_array_value( $adjustments, $team_id, array() );
|
||||||
|
|
||||||
|
|||||||
@@ -1290,10 +1290,10 @@ if ( !function_exists( 'sp_get_eos_safe_slug' ) ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( !function_exists( 'sp_solve' ) ) {
|
if ( !function_exists( 'sp_solve' ) ) {
|
||||||
function sp_solve( $equation, $vars, $precision = 0, $default = 0 ) {
|
function sp_solve( $equation, $vars, $precision = 0, $default = 0, $post_id = 0 ) {
|
||||||
|
|
||||||
// Add a hook to alter $equation
|
// Add a hook to alter $equation
|
||||||
$equation = apply_filters( 'sportspress_equation_alter', $equation, $vars );
|
$equation = apply_filters( 'sportspress_equation_alter', $equation, $vars, $precision, $default );
|
||||||
|
|
||||||
if ( $equation == null )
|
if ( $equation == null )
|
||||||
return $default;
|
return $default;
|
||||||
@@ -1347,6 +1347,10 @@ if ( !function_exists( 'sp_solve' ) ) {
|
|||||||
|
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
if ( $solution = apply_filters( 'sportspress_equation_solve_for_presets', null, $equation, $post_id ) ):
|
||||||
|
return $solution;
|
||||||
|
endif;
|
||||||
|
|
||||||
// Remove unnecessary variables from vars before calculating
|
// Remove unnecessary variables from vars before calculating
|
||||||
unset( $vars['gamesback'] );
|
unset( $vars['gamesback'] );
|
||||||
unset( $vars['streak'] );
|
unset( $vars['streak'] );
|
||||||
|
|||||||
127
modules/sportspress-next-team-preset.php
Normal file
127
modules/sportspress-next-team-preset.php
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
Plugin Name: SportsPress Next Team Preset
|
||||||
|
Plugin URI: http://themeboy.com/
|
||||||
|
Description: Add a Next preset to SportsPress league table column equations.
|
||||||
|
Author: ThemeBoy
|
||||||
|
Author URI: http://themeboy.com/
|
||||||
|
Version: 2.6
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Exit if accessed directly
|
||||||
|
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||||
|
|
||||||
|
if ( ! class_exists( 'SportsPress_Next_Team_Preset' ) ) :
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main SportsPress Next Team Preset Class
|
||||||
|
*
|
||||||
|
* @class SportsPress_Next_Team_Preset
|
||||||
|
* @version 2.6
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SportsPress_Next_Team_Preset {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
// Define constants
|
||||||
|
$this->define_constants();
|
||||||
|
|
||||||
|
// Filters
|
||||||
|
add_filter( 'sportspress_equation_options', array( $this, 'add_options' ) );
|
||||||
|
add_filter( 'sportspress_equation_presets', array( $this, 'presets' ) );
|
||||||
|
add_filter( 'sportspress_equation_solve_for_presets', array( $this, 'solve' ), 10, 3 );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define constants.
|
||||||
|
*/
|
||||||
|
private function define_constants() {
|
||||||
|
if ( !defined( 'SP_NEXT_TEAM_PRESET_VERSION' ) )
|
||||||
|
define( 'SP_NEXT_TEAM_PRESET_VERSION', '2.6' );
|
||||||
|
|
||||||
|
if ( !defined( 'SP_NEXT_TEAM_PRESET_URL' ) )
|
||||||
|
define( 'SP_NEXT_TEAM_PRESET_URL', plugin_dir_url( __FILE__ ) );
|
||||||
|
|
||||||
|
if ( !defined( 'SP_NEXT_TEAM_PRESET_DIR' ) )
|
||||||
|
define( 'SP_NEXT_TEAM_PRESET_DIR', plugin_dir_path( __FILE__ ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add additional options.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function add_options( $options ) {
|
||||||
|
$options[ 'Presets' ]['$nextteam'] = __( 'Next Team', 'sportspress' );
|
||||||
|
return $options;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add preset
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function presets( $presets ) {
|
||||||
|
$presets[] = '$nextteam';
|
||||||
|
return $presets;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Solve preset
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function solve( $input, $equation, $post_id ) {
|
||||||
|
if ( strpos( $equation, '$nextteam' ) !== false ) {
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'sp_event',
|
||||||
|
'numberposts' => 1,
|
||||||
|
'posts_per_page' => 1,
|
||||||
|
'post_status' => 'future',
|
||||||
|
'meta_query' => array(
|
||||||
|
array(
|
||||||
|
'key' => 'sp_team',
|
||||||
|
'value' => $post_id,
|
||||||
|
'compare' => 'IN',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
$events = get_posts( $args );
|
||||||
|
|
||||||
|
if ( $events ) {
|
||||||
|
$event = reset( $events );
|
||||||
|
$teams = array_filter( (array) get_post_meta( $event->ID, 'sp_team', false ) );
|
||||||
|
if ( ( $key = array_search( $post_id, $teams ) ) !== false ) {
|
||||||
|
unset( $teams[ $key ] );
|
||||||
|
} else {
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
$team_id = reset( $teams );
|
||||||
|
|
||||||
|
if ( ! $team_id ) return '-';
|
||||||
|
|
||||||
|
if ( has_post_thumbnail( $team_id ) ) {
|
||||||
|
$logo = get_the_post_thumbnail( $team_id, 'sportspress-fit-icon' );
|
||||||
|
$icon = '<span class="team-logo">' . $logo . '</span>';
|
||||||
|
} else {
|
||||||
|
$icon = get_the_title( $team_id );
|
||||||
|
}
|
||||||
|
|
||||||
|
return '<a title="' . $event->post_title . '" href="' . get_post_permalink( $event->ID, false, true ) . '">' . $icon . '</a>';
|
||||||
|
} else {
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
endif;
|
||||||
|
|
||||||
|
new SportsPress_Next_Team_Preset();
|
||||||
Reference in New Issue
Block a user