=== NTTB lijsten ===
Contributors: jacekoffierski
Tags: nttb, tafeltennis, ranglijst, rating, teams
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.6.0
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Toont de ledenlijst met ratings, de teams, de poulestanden en de wedstrijdagenda van de eigen vereniging op de website, via de NTTB-API.

== Description ==

WordPress-tegenhanger van de Joomla-plugin "Content - NTTB lijsten". De gegevens
komen rechtstreeks van de NTTB, worden een instelbaar aantal uren bewaard en
hoeven dus niet met de hand te worden bijgehouden.

Shortcodes:

* `[nttb type="leden"]` - ledenlijst met rating en licenties, op naam
* `[nttb type="leden" order="down"]` - dezelfde lijst, omgekeerd op naam
* `[nttb type="teams"]` - alle teams met hun spelers, gegroepeerd per competitie
* `[nttb type="poule"]` - stand en wedstrijden van elke poule waarin de vereniging speelt
* `[nttb type="poule" pid="1024138"]` - alleen die ene poule
* `[nttb type="agenda_7"]` - wedstrijden van de komende 7 dagen, vanaf vandaag
* `[nttb type="agenda_all"]` - alle wedstrijden vanaf vandaag

De kolomkoppen van de ledenlijst zijn aanklikbaar om te sorteren, ook op rating.
Wie van Joomla overstapt kan de oude schrijfwijze `{NTTB rating:orderup}` of
`{NTTB names:orderup}` in de tekst laten staan: beide komen bij dezelfde
ledenlijst uit.

== Installation ==

1. Zip-bestand uploaden via Plugins > Nieuwe plugin > Plugin uploaden.
2. Activeren.
3. Instellingen > NTTB lijsten openen en op "Verbinding testen" drukken.

**Welke vereniging wordt getoond?** De API herkent de vereniging aan het
IP-adres van de webserver. Dat adres moet bij de NTTB bekend zijn. Werkt het
niet, dan staat bij "Verbinding testen" welk IP-adres de API ziet; vraag met dat
adres toegang aan via dwf@tafeltennis.nl.

**Wisselt het IP-adres van de host?** Vraag dan bij de NTTB een clubnummer met
sleutel aan. De plug-in maakt daar bij elke aanroep een token van dat drie uur
geldig is; de sleutel zelf gaat nooit over de lijn. De API kijkt eerst naar het token en pas
daarna naar het IP-adres. Klopt het token, dan doet het IP-adres niet meer mee;
is er geen of een verlopen token, dan werkt het IP-adres gewoon zoals altijd.

Vul clubnummer en sleutel in onder Instellingen > NTTB lijsten. De sleutel zelf
gaat nooit over de lijn; er wordt per aanroep een token van gemaakt.

De plug-in heeft hiervoor de PHP-extensie openssl nodig. Ontbreekt die, dan
meldt de instellingenpagina dat en blijft alleen herkenning op IP-adres over.

== Frequently Asked Questions ==

= De lijst is niet bijgewerkt =

De gegevens worden standaard 24 uur bewaard. Met "Buffer leegmaken" op de
instellingenpagina worden ze direct opnieuw opgehaald.

= De teams laden traag =

De API levert de spelers per team apart, dus bij twintig teams zijn dat
eenentwintig aanroepen. Dat gebeurt hooguit een keer per 24 uur; de bezoekers
krijgen daarna de bewaarde versie. Met "Buffer leegmaken" is de lijst direct
opnieuw op te halen, bijvoorbeeld na een teamwijziging.

== Changelog ==

= 1.6.0 =
* Uitwijk voor verenigingen waarvan het IP-adres wisselt. De vereniging krijgt
  van de NTTB een clubnummer met een sleutel en vult die in onder Instellingen >
  NTTB lijsten. De plug-in stuurt daarna bij elke aanroep een token mee: het
  clubnummer, het tijdstip en een toevalstekst, versleuteld met de sleutel
  (AES-256-GCM). De sleutel zelf gaat nooit over de lijn en het token is drie
  uur geldig, met die marge naar beide kanten - het tijdstip is een
  Unix-tijdstip en dus UTC-gebaseerd, dus de tijdzone van de webserver speelt
  geen rol; de ruimte is er voor een klok die verkeerd loopt.
* De API controleert eerst het token en pas daarna het IP-adres. Een vereniging
  met een geldige sleutel hoeft dus niet meer in de IP-lijst te staan. Is er
  geen sleutel ingevuld, of is het token verlopen, dan werkt herkenning op
  IP-adres gewoon zoals voorheen.
* De instellingenpagina laat zien of er een token wordt meegestuurd, en
  waarschuwt als de PHP-extensie openssl ontbreekt - zonder openssl kan er geen
  token gemaakt worden en blijft alleen het IP-adres over.

= 1.5.0 =
* `rating` en `names` gaven dezelfde tabel, alleen anders voorgesorteerd. Ze
  zijn samengevoegd tot `[nttb type="leden"]`. De kolomkoppen zijn toch
  aanklikbaar, dus op rating sorteren kan gewoon nog. De Joomla-schrijfwijzen
  `{NTTB rating:...}` en `{NTTB names:...}` blijven werken.

= 1.4.1 =
* De twee agenda-shortcodes staan nu ook in de plugin-omschrijving.

= 1.4.0 =
* In de agenda staat achter de datum de dag van de week, in de taal van de site.
* De agenda wordt 24 uur bewaard. De bewaarde lijst is bewust ongefilterd; pas
  bij het tonen wordt "vanaf vandaag" bepaald, zodat er een dag later geen
  wedstrijden van gisteren in blijven staan.

= 1.3.0 =
* Agenda toegevoegd: `agenda_7` en `agenda_all`. Datum in de datumnotatie van
  WordPress, vet en oranje; daaronder per wedstrijd de tijd en de twee teams,
  met het eigen team vet. Spelen twee eigen teams tegen elkaar, dan staat de
  wedstrijd een keer in de lijst en is alleen het thuisteam vet.
* Teamnummers krijgen een voorvoegsel: S senioren, D seniorenduo, J jeugd. De
  jeugdduocompetities tellen als J, anders zouden ze botsen met de
  seniorenduoteams met hetzelfde nummer.
* De teamlijst wordt nu apart van de spelers opgehaald, zodat de poule- en
  agendaweergave niet langer een aanroep per team betalen.

= 1.2.0 =
* De teamlijst wordt nu altijd 24 uur bewaard, los van de instelling
  "Gegevens bewaren": die aanroep kost er een per team en de indeling
  verandert hooguit een paar keer per seizoen.

= 1.1.0 =
* Poulestanden en wedstrijden toegevoegd (`type="poule"`). Het poulenummer wordt
  uit de teamlijst gehaald, dus de redacteur hoeft niets op te zoeken.

= 1.0.0 =
* Eerste versie: ledenlijst met ratings, ledenlijst op naam, teams met spelers.
