=== 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

