=== Fixture Viewer for PlayHQ === Contributors: markrblackburn Tags: playhq, fixtures, sports, teams, shortcode Requires at least: 5.0 Requires PHP: 7.2 Tested up to: 6.8 Stable tag: 1.5 License: GPLv2 or later Display PlayHQ team fixtures on your WordPress site with a shortcode. Includes team selection and advanced table styling options. == Description == Fixture Viewer for PlayHQ allows you to display fixtures for a selected team from the PlayHQ API. Admins can configure the plugin via the WordPress settings page, fetch teams for an organisation, and optionally allow visitors to select a team on the front end. == External Services == This plugin connects to the PlayHQ API (https://api.playhq.com) to retrieve sports fixture data for your selected team or organisation. This is required to display up-to-date fixtures and results on your website. **What the service is and what it is used for:** - The PlayHQ API is a third-party service provided by PlayHQ Pty Ltd. It is used to fetch fixture, team, and season data for sports competitions. **What data is sent and when:** - When you configure the plugin, your PlayHQ API key, organisation ID, and selected team ID are used to make requests to the PlayHQ API. - The plugin sends these identifiers as part of the API request headers or URL to retrieve fixture and team data. - No personal user data from your WordPress site is sent to PlayHQ. **Links to the service's terms of service and privacy policy:** - PlayHQ Terms of Service: https://www.playhq.com/terms-of-use - PlayHQ Privacy Policy: https://www.playhq.com/privacy-policy By using this plugin, you agree that your site will communicate with the PlayHQ API to display sports fixtures. Please review PlayHQ's terms and privacy policy for more information. == Installation == 1. Upload the plugin folder to `/wp-content/plugins/fixture-viewer-for-playhq/` or install via the WordPress Plugins screen. 2. Activate the plugin through the 'Plugins' menu in WordPress. 3. Go to **Settings > Fixture Viewer for PlayHQ** to configure the plugin. 4. Enter your PlayHQ API Key and Organisation ID. 5. Enter your Sport (x-phq-tenant) value (e.g. `afl`, `netball`, etc.). 6. Click "Fetch Teams" to load the teams for your organisation. 7. Select your default team and adjust other settings as needed. 8. Use the `[playhq_fixtures]` shortcode on any page or post to display fixtures. == Configuration Options == On the **Settings > Fixture Viewer for PlayHQ** page, you can configure: - **API Key (x-api-key):** Your PlayHQ API key (required). - **Organisation ID:** Your PlayHQ organisation ID (required). - **Sport (x-phq-tenant):** Enter the PlayHQ tenant ID for your sport (required, default: afl). - **Fetch Teams:** Click to fetch and save teams for your organisation. - **Team:** Select the default team to display fixtures for. - **Date Format:** Choose how dates are displayed. - **Time Format:** Choose how times are displayed. - **Enable Team Selector on Display Page:** If checked, visitors can select a team from a dropdown above the fixtures table. - **Selected Team Color:** Pick a color or enter a hex code to highlight the selected team in the fixtures table. - **Filter Fixtures:** Show all, only upcoming, or only past fixtures. - **Clean Team Names:** Remove common suffixes (e.g., "Over 35s") from team names. - **Table Styling:** - **Table Colors:** Set header, row, alternate row, text, and hover colors (with color picker and hex input). - **Table Borders:** Independently style the outer border and the row/column dividers (style, weight, color). - **Table Typography:** Set font size and header alignment. - **Custom CSS:** Add your own CSS for further customization. == Shortcode Usage == Basic usage: ``` [playhq_fixtures] ``` This will display fixtures for the default team selected in the settings. **Shortcode Attributes:** - `team` (optional): Specify a team by ID or name to override the default team and hide the selector. - Example by ID: `[playhq_fixtures team="123456"]` - Example by name: `[playhq_fixtures team="My Team Name"]` If the `team` attribute is used, a heading with the team name will appear above the table. == Front-End Team Selector == If "Enable Team Selector on Display Page" is checked in settings, a dropdown will appear above the fixtures table, allowing visitors to select a team. The selected team will update the fixtures table automatically. == Table Styling Features == - **Table Colors:** Header, row, alternate row, text, and hover colors (color picker + hex input). - **Table Borders:** Outer border and row/column dividers can be styled independently (style, weight, color). - **Table Typography:** Font size and header alignment. - **Responsive:** Mobile-friendly table layout with simplified columns and font size on small screens. == Frequently Asked Questions == = Can I use the shortcode multiple times on a page? = Yes, but each instance will use its own team selection based on the shortcode attribute or the default setting. = How do I get my PlayHQ API key? = You must request an API key from PlayHQ. This plugin does not provide one. = Why are no teams showing in the dropdown? = Ensure you have entered a valid Organisation ID, API Key, and Sport (x-phq-tenant), then click "Fetch Teams" on the settings page. = Can I style the table? = Yes, use the Table Styling settings. **All core table and responsive CSS is loaded from a dedicated CSS file for better performance and maintainability.** = How do I change the sport/tenant? = Enter the required tenant ID (e.g., `afl`, `netball`, etc.) in the Sport (x-phq-tenant) field in settings. == Screenshots == 1. **Settings Page:** Configure your API key, organisation, sport, and display options. 2. **Team Selector:** Let visitors choose a team above the fixtures table. 3. **Fixtures Table:** Responsive, styled table of upcoming or past fixtures. == Upgrade Notice == = 1.5 = Improves team loading to support paginated PlayHQ season team results, ensuring all teams are fetched when an organisation has multiple pages. = 1.4 = Major Table Styling update: Borders can be styled independently, all color settings support hex input, and mobile font size is fixed. Review your settings after upgrading. = 1.3 = Mobile table layout improved: Only Date/Time, Opponent, and Venue columns are shown in the correct order. All columns visible on desktop. **All core CSS is now loaded from a dedicated file for better performance and maintainability.** Please review your settings after upgrading. = 1.2 = Major update: Adds team selection by name, color picker for selected team, tenant selector, and improved shortcode options. Please review your settings after upgrading. = 1.0 = * Initial release. == Changelog == = 1.5 = * Improved team fetching from PlayHQ seasons API to support pagination via `metadata.hasMore` and `metadata.nextCursor`. * Ensures all teams are loaded and saved when more than one page of team results exists. = 1.4 = * Major Table Styling improvements: - Outer border and row/column borders can be styled independently (style, weight, color). - All color settings now support both color picker and hex code input. - Table styling settings are grouped for clarity. - Mobile font size is always 15px for readability. * Addressed review comments: - Use wp_enqueue commands - Data Must be Sanitized, Escaped, and Validated - Processing the whole input - Attempting to process custom CSS/JS/PHP / Allowing arbitrary script insertion = 1.3 = * Renamed plugin to "Fixture Viewer for PlayHQ" * Updated documentation and versioning * Minor improvements and bug fixes = 1.2 = * Optimised mobile display: Only Date/Time, Opponent, and Venue columns are shown in the correct order on mobile. * All columns visible on desktop. * All core CSS moved to a dedicated file and enqueued for better performance. * Version bump. = 1.1 = * Added support for team selection by name or ID via shortcode. * Added optional team selector dropdown on the display page. * Added color picker for selected team highlight. * Added configurable sport/tenant (x-phq-tenant). * Improved styling and mobile responsiveness. = 1.0 = * Initial release. == License == This plugin is licensed under the GPLv2 or later. See https://www.gnu.org/licenses/gpl-2.0.html