diff --git a/changelog.txt b/changelog.txt index 2e7fb252..81d2ea6c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,123 @@ == SportsPress Changelog == += 2.6 = +* Feature - Add custom details to events using event specs. +* Feature - Conditional equations for variables. +* Feature - Display the next opponent in league tables. +* Feature - Short name option added to teams. +* Feature - Automatic event titles using short name when available. +* Feature - Display featured image in countdown widget. +* Tweak - Relative date option added to editor shortcodes. +* Tweak - Display only current team in player list. +* Tweak - Filter players dropdown by current team only. +* Tweak - Allow 0 as a squad number when importing players. +* Tweak - Prevent filtering through empty results. +* Fix - Interpreting non-integer substitution times. +* Fix - Warning when sorting terms without order. +* Localization - Add WPML support to staff header. +* Localization - Fix RTL not being applied in league tables. + += 2.5.10 = +* Fix - Date ranges not being applied to calendars. + += 2.5.9 = +* Fix - Unpublished posts being displayed in some themes. + += 2.5.8 = +* Fix - Display scheduled events using default permalinks via archives and third-party widgets. + += 2.5.7 = +* Fix - Blank general settings screen on WordPress versions prior to 4.9. +* Fix - Revert responsive table behavior to prevent display issues on mobile. + += 2.5.6 = +* Tweak - Adjust player-related hooks. +* Fix - Turn off responsive tables by default. + += 2.5.5 = +* Feature - Main league and current season settings. +* Feature - New shortcode including full staff profile. +* Feature - Add code highlighting to custom CSS field. +* Feature - Add responsive layout option to tables. +* Feature - Add filters to REST API players endpoint. +* Feature - Option to merge duplicate teams, players, and staff. +* Feature - Option to display specific event in event blocks. +* Feature - Option to sort player checklist by name and squad number in events. +* Feature - Option to filter player lists by team. +* Feature - Option to link staff members. +* Feature - Filter countdown by calendar. +* Fix - Calculate column totals in box score. +* Fix - Mismatched encoding of included library. +* Localization - Fix translation function missing around string. + += 2.5.4 = +* Fix - Error when editing league table using older versions of WordPress. + += 2.5.3 = +* Fix - Calendar templates not loading when timezone setting is relative to UTC. + += 2.5.2 = +* Feature - Add match day to REST API. +* Tweak - Add order to positions during preset installation. +* Tweak - Display links to add new duties and officials if empty. +* Tweak - Add linebreaks to substitute dropdowns. +* Fix - Use default full time minutes in REST API. +* Fix - Uploading custom images as performance icons. +* Fix - Displaying timed performance with custom images. + += 2.5.1 = +* Feature - Officials importer. +* Feature - Officials added to dashboard glance items. +* Feature - Order setting added to staff jobs for custom sorting. +* Tweak - Display only the highest order job in staff profiles. +* Tweak - Require box score importer to be accessed from within an event. +* Tweak - Add hook to declare importable post types. +* Fix - Officials meta box in events when module is inactive. +* Fix - Issues when timezone is not set. + += 2.5 = +* Feature - Player of the match and star numbers added to box scores. +* Feature - Officials module for displaying referee appointments in matches. +* Feature - New player performance icons to choose from. +* Feature - Schema microdata added to event calendars, lists, and blocks. +* Feature - Box score importer for updating existing events. +* Feature - Order setting added to taxonomies for custom sorting. +* Feature - New relative date range options in event calendars. +* Feature - Date range options added to league tables and player lists. +* Feature - Option to hide players with zero statistics in player list. +* Tweak - Allow staff members to have multiple jobs. +* Tweak - Indicator dots added to calendars with events in frontend stylesheet. +* Tweak - Box score columns are now selected by default when adding new events. +* Tweak - Events made sortable by match day in admin. +* Tweak - Competitions renamed to leagues. +* Fix - Quick edit teams not showing when filtering players by team. +* Fix - Calendar feeds not updating without E-tag. +* Fix - Admin table cells wrapping. +* Fix - Timezone issues in calendars. + += 2.4.3 = +* Fix - Substitute Typo. +* Fix - WordPay image trailing slash. + += 2.4.2 = +* Feature - Add visibility option to player metrics. +* Fix - Remove protocol from default Gravatar images to prevent mix content warnings. + += 2.4.1 = +* Fix - Static function displaying notice in header. + += 2.4 = +* Feature - Integration with WordPay to allow paid team and player registrations. +* Feature - New team gallery shortcode and widget for displaying a gallery of team logos. +* Feature - Added support for player career totals based on calculated averages. +* Tweak - Allow competitions to be selected for friendly matches. +* Tweak - Added columns selector to gallery shortcodes. +* Fix - Full time defaulting to 90 minutes. +* Fix - Statistic format not reflected in meta box. +* Fix - Shortcode button hook timing conflicts. +* Preset - Swap par and score in golf preset. +* Preset - Update all presets to reflect new career total type. + = 2.3.2 = * Fix - Team in player statistics total row displaying as zero. * Fix - Notice when no sendoffs are available during minutes played calculation. diff --git a/includes/admin/class-sp-admin-welcome.php b/includes/admin/class-sp-admin-welcome.php index 934a2329..4b117480 100644 --- a/includes/admin/class-sp-admin-welcome.php +++ b/includes/admin/class-sp-admin-welcome.php @@ -6,10 +6,10 @@ * * Adapted from code in EDD (Copyright (c) 2012, Pippin Williamson) and WP. * - * @author ThemeBoy - * @category Admin - * @package SportsPress/Admin - * @version 2.5 + * @author ThemeBoy + * @category Admin + * @package SportsPress/Admin + * @version 2.6 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly @@ -19,412 +19,394 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly */ class SP_Admin_Welcome { - private $plugin; + private $plugin; - /** - * __construct function. - * - * @access public - * @return void - */ - public function __construct() { - $this->plugin = 'sportspress/sportspress.php'; + /** + * __construct function. + * + * @access public + * @return void + */ + public function __construct() { + $this->plugin = 'sportspress/sportspress.php'; - add_action( 'admin_menu', array( $this, 'admin_menus') ); - add_action( 'admin_head', array( $this, 'admin_head' ) ); - add_action( 'admin_init', array( $this, 'welcome' ) ); - } + add_action( 'admin_menu', array( $this, 'admin_menus') ); + add_action( 'admin_head', array( $this, 'admin_head' ) ); + add_action( 'admin_init', array( $this, 'welcome' ) ); + } - /** - * Add admin menus/screens - * - * @access public - * @return void - */ - public function admin_menus() { - if ( empty( $_GET['page'] ) ) { - return; - } + /** + * Add admin menus/screens + * + * @access public + * @return void + */ + public function admin_menus() { + if ( empty( $_GET['page'] ) ) { + return; + } - $welcome_page_name = __( 'About SportsPress', 'sportspress' ); - $welcome_page_title = __( 'Welcome to SportsPress', 'sportspress' ); + $welcome_page_name = __( 'About SportsPress', 'sportspress' ); + $welcome_page_title = __( 'Welcome to SportsPress', 'sportspress' ); - switch ( $_GET['page'] ) { - case 'sp-about' : - $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-about', array( $this, 'about_screen' ) ); - add_action( 'admin_print_styles-'. $page, array( $this, 'admin_css' ) ); - break; - case 'sp-credits' : - $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-credits', array( $this, 'credits_screen' ) ); - add_action( 'admin_print_styles-'. $page, array( $this, 'admin_css' ) ); - break; - case 'sp-translators' : - $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-translators', array( $this, 'translators_screen' ) ); - add_action( 'admin_print_styles-'. $page, array( $this, 'admin_css' ) ); - break; - } - } + switch ( $_GET['page'] ) { + case 'sp-about' : + $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-about', array( $this, 'about_screen' ) ); + add_action( 'admin_print_styles-'. $page, array( $this, 'admin_css' ) ); + break; + case 'sp-credits' : + $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-credits', array( $this, 'credits_screen' ) ); + add_action( 'admin_print_styles-'. $page, array( $this, 'admin_css' ) ); + break; + case 'sp-translators' : + $page = add_dashboard_page( $welcome_page_title, $welcome_page_name, 'manage_options', 'sp-translators', array( $this, 'translators_screen' ) ); + add_action( 'admin_print_styles-'. $page, array( $this, 'admin_css' ) ); + break; + } + } - /** - * admin_css function. - * - * @access public - * @return void - */ - public function admin_css() { - wp_enqueue_style( 'sportspress-activation', plugins_url( '/assets/css/activation.css', SP_PLUGIN_FILE ), array(), SP_VERSION ); - } + /** + * admin_css function. + * + * @access public + * @return void + */ + public function admin_css() { + wp_enqueue_style( 'sportspress-activation', plugins_url( '/assets/css/activation.css', SP_PLUGIN_FILE ), array(), SP_VERSION ); + } - /** - * Add styles just for this page, and remove dashboard page links. - * - * @access public - * @return void - */ - public function admin_head() { - remove_submenu_page( 'index.php', 'sp-about' ); - remove_submenu_page( 'index.php', 'sp-credits' ); - remove_submenu_page( 'index.php', 'sp-translators' ); - } + /** + * Add styles just for this page, and remove dashboard page links. + * + * @access public + * @return void + */ + public function admin_head() { + remove_submenu_page( 'index.php', 'sp-about' ); + remove_submenu_page( 'index.php', 'sp-credits' ); + remove_submenu_page( 'index.php', 'sp-translators' ); + } - /** - * Into text/links shown on all about pages. - * - * @access private - * @return void - */ - private function intro() { + /** + * Into text/links shown on all about pages. + * + * @access private + * @return void + */ + private function intro() { - // Flush after upgrades - if ( ! empty( $_GET['sp-updated'] ) || ! empty( $_GET['sp-installed'] ) ) - flush_rewrite_rules(); + // Flush after upgrades + if ( ! empty( $_GET['sp-updated'] ) || ! empty( $_GET['sp-installed'] ) ) + flush_rewrite_rules(); - // Get major version number - $version = explode( '.', SP()->version, 3 ); - unset( $version[2] ); - $display_version = implode( '.', $version ); - ?> -

' ); ?>

+ // Get major version number + $version = explode( '.', SP()->version, 3 ); + unset( $version[2] ); + $display_version = implode( '.', $version ); + ?> +

' ); ?>

-
version ); ?>
+
version ); ?>
-
- + -
+ printf( __( '%s SportsPress %s has lots of refinements we think you’ll love.', 'sportspress' ), $message, $display_version ); + ?> + -

- - - Tweet - -

+

+ + + Tweet + +

- - + + + + + + + + + -
+ /** + * Output the about screen. + */ + public function about_screen() { + include_once( 'class-sp-admin-settings.php' ); + $class = 'chosen-select' . ( is_rtl() ? ' chosen-rtl' : '' ); + ?> +
- intro(); ?> + intro(); ?> - -
-

-
- +
+

+
+ -
-
-

New Features 🌟

-
-
+ do_action( 'sportspress_before_welcome_features' ); + ?> +
+
+

New Features 🌟

+
+
-
-
- Officials Module -

Officials Module

-

Manage referees, umpires, judges, timekeepers, and other officials. Don't forget to enable the Officials module from SportsPress Settings to start using this feature.

-
-
- Player of the Match -

Player of the Match

-

Select player(s) or a star number for certain players in events. Stars can be displayed as icons or with a number. To enable this feature, choose an Awards type from the Box Score section in Event Settings.

-
-
+
+
+

Conditional Equations

+

+
+
+

Event Specs

+

+
+
-
-
- Box Score Importer -

Box Score Importer

-

A new importer has been added to each event. Upload a CSV file and instantly update the player performance for the selected team.

-
-
- New Performance Icons -

New Performance Icons

-

A set of new icons have been added to Player Performance, giving you more options to choose from.

-

-
+
+
+

Countdown Images

+

+
+
+

Next Team Column

+

+

+
- -
+ +
-
-
-

SportsPress Pro Updates 🏆

-
-
+
+
+

SportsPress Pro Updates 🏆

+
+
-
-
- Tournament Group Stages -

Tournament Group Stages

-

Support for group stages have been added natively to tournaments, allowing you to create and attach league tables to be displayed directly below tournament brackets.

-
-
- Sponsorship Levels -

Sponsorship Levels

-

Assign levels to sponsors based on their contribution or other factors. Sponsors can now be filtered based on their sponsorship level within widgets, allowing for level-specific sponsor treament.

-

-
+
+
+

Results Matrix

+

+
+
+

Vertical Timelines

+

+

+
- + -

- +

+ -
+
-
-
-

Improved Usability and Control

-
-
+
+
+

Data Accuracy and Flexibility

+
+
-
-
-

Custom Taxonomy Order

-

A new setting has been added to leagues, seasons, and positions, allowing you to define a customer order of terms.

-
-
-

Filtering Player Lists

-

Player lists can now be configured to skip players that don't have a particular statistic, allowing you to create more specific lists.

-
-
-

Multiple Jobs

-

Staff members can now be assigned multiple jobs, which are displayed consecutively in their profiles.

-
-
-

Event Calendar Indicators

-

With the frontend stylesheet enabled, days with events will now be displayed with a filled circle to indicate an event on that day.

-
-
-

Relative Ranges

-

Additional options now allow you to select events within a particular range, from last week, next week, yesterday, or tomorrow.

-
-
-

Sort by Match Day

-

Use the columns in the admin to sort events by match day. A search bar has also been added to filter events by match day.

-
-
+
+
+

Relative Date in Shortcodes

+

+
+
+

Current Team in Player Lists

+

+
+
+

Squad Number Zero

+

+
+
-
+
-
-
-

Other Notes

-
-
+
+
+

Other Notes

+
+
-
-
-

Schema Microdata

-

We've complied with schema.org's microdata formats by adding these attributes to event calendars, blocks, and lists throughout.

-
-
-

Competitions Are Now Leagues

-

The competitions taxonomy has been renamed to leagues, which still work in the exact same way.

-
-
-

Calendar Caching

-

To prevent event calendars from caching in third-party apps, an E-Tag header has been added to these feeds.

-
-
+
+
+

Short Names

+

+
+
+

Calculating Substitution Time

+

+
+
+

Localization Improvements

+

+
+
- + - -
- 'sportspress', 'tab' => 'general' ), 'admin.php' ) ) ); ?>"> +
+ -
- intro(); ?> - -

Contribute to SportsPress.', 'sportspress' ), 'https://github.com/ThemeBoy/SportsPress/blob/master/CONTRIBUTING.md' ); ?>

+ /** + * Output the credits. + */ + public function credits_screen() { + ?> +
+ intro(); ?> + +

Contribute to SportsPress.', 'sportspress' ), 'https://github.com/ThemeBoy/SportsPress/blob/master/CONTRIBUTING.md' ); ?>

-
- contributors(); ?> -
-
- + contributors(); ?> +
+ + -
+ /** + * Output the translators screen + */ + public function translators_screen() { + ?> +
- intro(); ?> + intro(); ?> -

Translate SportsPress.', 'sportspress' ), 'https://translate.wordpress.org/projects/wp-plugins/sportspress' ); ?>

-
- Translate SportsPress.', 'sportspress' ), 'https://translate.wordpress.org/projects/wp-plugins/sportspress' ); ?>

+
+ get_contributors(); + /** + * Render Contributors List + * + * @access public + * @return string $contributor_list HTML formatted list of contributors. + */ + public function contributors() { + $contributors = $this->get_contributors(); - if ( empty( $contributors ) ) { - return ''; - } + if ( empty( $contributors ) ) { + return ''; + } - $contributor_list = ''; - return $contributor_list; - } + return $contributor_list; + } - /** - * Retrieve list of contributors from GitHub. - * - * @access public - * @return mixed - */ - public function get_contributors() { - $contributors = get_transient( 'sportspress_contributors' ); + /** + * Retrieve list of contributors from GitHub. + * + * @access public + * @return mixed + */ + public function get_contributors() { + $contributors = get_transient( 'sportspress_contributors' ); - if ( false !== $contributors ) { - return $contributors; - } + if ( false !== $contributors ) { + return $contributors; + } - $response = wp_remote_get( 'https://api.github.com/repos/ThemeBoy/SportsPress/contributors', array( 'sslverify' => false ) ); + $response = wp_remote_get( 'https://api.github.com/repos/ThemeBoy/SportsPress/contributors', array( 'sslverify' => false ) ); - if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { - return array(); - } + if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { + return array(); + } - $contributors = json_decode( wp_remote_retrieve_body( $response ) ); + $contributors = json_decode( wp_remote_retrieve_body( $response ) ); - if ( ! is_array( $contributors ) ) { - return array(); - } + if ( ! is_array( $contributors ) ) { + return array(); + } - set_transient( 'sportspress_contributors', $contributors, HOUR_IN_SECONDS ); + set_transient( 'sportspress_contributors', $contributors, HOUR_IN_SECONDS ); - return $contributors; - } + return $contributors; + } - /** - * Sends user to the welcome page on first activation - */ - public function welcome() { + /** + * Sends user to the welcome page on first activation + */ + public function welcome() { - // Bail if no activation redirect transient is set - if ( ! get_transient( '_sp_activation_redirect' ) ) - return; + // Bail if no activation redirect transient is set + if ( ! get_transient( '_sp_activation_redirect' ) ) + return; - // Delete the redirect transient - delete_transient( '_sp_activation_redirect' ); + // Delete the redirect transient + delete_transient( '_sp_activation_redirect' ); - // Bail if we are waiting to install or update via the interface update/install links - if ( get_option( '_sp_needs_update' ) == 1 || get_option( '_sp_needs_pages' ) == 1 ) - return; + // Bail if we are waiting to install or update via the interface update/install links + if ( get_option( '_sp_needs_update' ) == 1 || get_option( '_sp_needs_pages' ) == 1 ) + return; - // Bail if activating from network, or bulk, or within an iFrame - if ( is_network_admin() || isset( $_GET['activate-multi'] ) || defined( 'IFRAME_REQUEST' ) ) - return; + // Bail if activating from network, or bulk, or within an iFrame + if ( is_network_admin() || isset( $_GET['activate-multi'] ) || defined( 'IFRAME_REQUEST' ) ) + return; - if ( ( isset( $_GET['action'] ) && 'upgrade-plugin' == $_GET['action'] ) && ( isset( $_GET['plugin'] ) && strstr( $_GET['plugin'], 'sportspress.php' ) ) ) - return; + if ( ( isset( $_GET['action'] ) && 'upgrade-plugin' == $_GET['action'] ) && ( isset( $_GET['plugin'] ) && strstr( $_GET['plugin'], 'sportspress.php' ) ) ) + return; - if ( ! get_option( 'sportspress_completed_setup' ) ) { - wp_redirect( admin_url( 'admin.php?page=sp-setup' ) ); - exit; - } + if ( ! get_option( 'sportspress_completed_setup' ) ) { + wp_redirect( admin_url( 'admin.php?page=sp-setup' ) ); + exit; + } - wp_redirect( admin_url( 'index.php?page=sp-about' ) ); - exit; - } + wp_redirect( admin_url( 'index.php?page=sp-about' ) ); + exit; + } } new SP_Admin_Welcome(); diff --git a/readme.txt b/readme.txt index 2e26162b..b7d2c0ec 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: calendars, club, club management, esports, events, fixtures, leagues, leag Donate link: http://tboy.co/donate Requires at least: 3.8 Tested up to: 4.9 -Stable tag: 2.5.10 +Stable tag: 2.6-RC1 License: GPLv3 License URI: http://www.gnu.org/licenses/gpl-3.0.html @@ -237,6 +237,23 @@ When you upgrade to one of the SportsPress Pro licenses, you can simply activate == Changelog == += 2.6 = +* Feature - Add custom details to events using event specs. +* Feature - Conditional equations for variables. +* Feature - Display the next opponent in league tables. +* Feature - Short name option added to teams. +* Feature - Automatic event titles using short name when available. +* Feature - Display featured image in countdown widget. +* Tweak - Relative date option added to editor shortcodes. +* Tweak - Display only current team in player list. +* Tweak - Filter players dropdown by current team only. +* Tweak - Allow 0 as a squad number when importing players. +* Tweak - Prevent filtering through empty results. +* Fix - Interpreting non-integer substitution times. +* Fix - Warning when sorting terms without order. +* Localization - Add WPML support to staff header. +* Localization - Fix RTL not being applied in league tables. + = 2.5.10 = * Fix - Date ranges not being applied to calendars. diff --git a/sportspress.php b/sportspress.php index a9ec087c..2232127d 100644 --- a/sportspress.php +++ b/sportspress.php @@ -3,7 +3,7 @@ * Plugin Name: SportsPress * Plugin URI: http://themeboy.com/sportspress/ * Description: Manage your club and its players, staff, events, league tables, and player lists. - * Version: 2.5.10 + * Version: 2.6-RC1 * Author: ThemeBoy * Author URI: http://themeboy.com * Requires at least: 3.8 @@ -26,14 +26,14 @@ if ( ! class_exists( 'SportsPress' ) ) : * Main SportsPress Class * * @class SportsPress - * @version 2.5.10 + * @version 2.6-RC1 */ final class SportsPress { /** * @var string */ - public $version = '2.5.10'; + public $version = '2.6-RC1'; /** * @var SportsPress The single instance of the class