=== Planaday Connector ===
Contributors: Planaday
Tags: cursus, planning, administratie, connector, boeking
Requires at least: 5.9
Tested up to: 7.0
Stable tag: 1.2.11
Requires PHP: 8.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Toon het cursusaanbod vanuit Planaday op jouw website met de verschillende shortcodes die deze WordPress plugin beschikbaar stelt.

== Description ==

Met deze plugin is het mogelijk alle 'open' cursussen vanuit Planaday applicatie plaatsen op je website.
Optioneel kunnen jouw bezoekers een cursus boeken.

Deze boekingen komen direct in jouw eigen planaday omgeving.
Deze boekingen zijn een optie en moeten in Planaday zelf nog geaccordeerd worden bij cursussen -> open aanvragen.

In de plugin kun je diversen opties zelf aan/uitzetten.
En met CSS kun je je overzichten etc verder personaliseren

== Screenshots ==

1. Overzicht van cursussen
2. Detail van cursus met boek mogelijkheid
3. Instellingen in Wordpress Admin

== Installation ==

Deze Planaday Wordpress plugin werkt enkel in combinatie met de Planaday omgeving.
Hiervoor heb je eveneens een API-sleutel nodig, welke in Planaday opgehaald kan worden.

1. Maak een API-sleutel in Planaday
2. Activeer de API.
3. Download deze wordpress-plugin
4. Activeer de wordpress-plugin
5. Vul de API-sleutel van Planaday in de Wordpress Plugin
6. Maak de benodigde pagina's aan met shortcode(s) ([padc-course] voor een detailpagina en [padc-courseListList start=now end=+2months] voor een lijst overzicht)
7. Vul de instellingen aan en selecteer de detailpagina als deze gebruikt wordt
8. (optioneel) Voeg de mollie API-sleutels toe in de betalingsinstellingen en zet betaling aan om betaling te kunnen gebruiken.

Zie volledige installatie hier: https://planaday.freshdesk.com/support/solutions/articles/11000058859-wordpress-in-website-met-publieke-api


== Frequently Asked Questions ==

= Hoe stap ik over van de oude plugin naar de nieuwe? =

De nieuwe plugin doet al veel zelf echter moeten er nog een paar stappen gedaan worden.
Om over te stappen naar de nieuwe plugin moet het volgende gedaan worden:
1. Installeer de nieuwe plugin, en activeer deze
2. Zet de gebruikte shortcodes om naar de nieuwe versie:
   - [pad-course] -> [padc-course]
   - [pad-name] -> [padc-name]
   - [pad-dates] -> [padc-dates]
   - [pad-dates-locations] -> [padc-dates-locations]
   - [pad-price] -> [padc-price]
   - [pad-price-remark] -> [padc-price-remark]
   - [pad-button] -> [padc-button]
   - [pad-bookingform] -> [padc-booking-form]
   - [pad-courseid] -> [padc-courseid]
   - [bookingform] -> [padc-booking-form]
   - [courselisttable] -> [padc-courseListTable]
   - [courselistlist] -> [padc-courseListList]
   - [courselistblock] -> [padc-courseListBlock]
   - [courselistblock2] -> [padc-courseListBlock2]
   - [coursesearch] -> [padc-courseSearch]
   - [coursecalendar] -> [padc-courseCalendar]
3. Selecteer de pagina met de [padc-course] shortcode bij "planaday-connector -> cursus instellingen -> detail -> detail pagina"
4. Sla de instellingen op, als er problemen zijn die worden aangegeven, los deze op
5. Als eigen CSS is toegevoegd kan deze worden omgezet met een tool die te vinden is bij "planaday-connector -> support -> oude css updaten"
   1. Zet hier de oude css in
   2. Druk op de convert knop
   3. Check of alle conversies succesvol zijn geweest (geen rode secties)
   4. Als er delen niet zijn geluk moeten deze handmatig opgelost worden
   5. Vervang de oude css met de nieuwe css
6. Ga alle instellingen lang en probeer deze op te slaan, als er problemen zijn los deze op. Dit is om oude instel fouten van de originele plugin te kunnen vinden.

= In welke PHP versie werkt deze plugin? =

Wij hebben de plugin getest in de volgende PHP-versies:
- 8.1
- 8.2
- 8.3
- 8.4

= Krijg ik alle cursussen te zien? =

Ja, maar wel de cursussen vanaf vandaag. En enkel de cursussen die 'open' zijn in Planaday en website/api 'ja'
Je hebt wel een optie om volle cursussen te tonen (deze zijn niet meer boekbaar).
En er is een optie (instelling) om cursussen met tenminste één dagdeel in het verleden optioneel niet te tonen.

= Kan ik ook één specifieke cursus op een pagina laten zien? =

Ja, maar wel enkel de cursussen vanaf vandaag. En enkel de cursussen die 'open' zijn in Planaday en website/api op: 'ja'
Deze pagina maak je eerst aan in Wordpress en vervolgens plaats je daar een specifieke shortcode.
Deze zijn toepasbaar op iedere pagina. Nummer id=3 verwijst naar cursus 3 in jouw Planaday omgeving:

    ([padc-name id=3]) geeft naam van cursus
    ([padc-dates id=3]) geeft lijst met datums van dagdelen
    ([padc-dates-locations id=3]) geeft lijst met datums van dagdelen inclusief locaties
    ([padc-price id=3]) geeft prijs per persoon van cursus
    ([padc-price-remark id=3]) geeft opmerkingen bij prijs
    ([padc-button id=3]) geeft een button met link naar de juiste cursus

= Ik heb geen API-key =

Ga hiervoor naar jouw eigen Planaday omgeving.
Daar kun je zelf via 'Beheer -> Instellingen -> Publieke pagina's, API, Webhooks, Links -> Publieke API sleutels' toevoegen en maken.
Hiervoor moet wel de optie aanstaan dat je dit mag.
Zie ook: https://planaday.freshdesk.com/support/solutions/articles/11000045430

= Ik kan de cursus detail pagina niet bekijken =

Als alle checks op de welkom pagina groen zijn is het mogelijk dat één van je andere plugins het doorsturen veranderd.
Plugins waarbij dit bekend is zijn de volgende:
* Permalink Manager: om op te lossen ga naar Instellingen -> Omleiding instellingen -> Canonieke omleiding en zet deze uit

= De omschrijving wordt niet meer goed getoond =

Je kunt hiervoor een extra CSS regel toevoegen. Hierdoor wordt de omschrijving in een 'block' getoond.
Voorbeeld:

.pad-detail-description {
  display: block;
  float: left;
}

= Detailpagina is aangemaakt met [padc-course], maar werkt niet =

De detailpagina moet ook ingesteld zijn als detail pagina in gebruik door deze te selecteren bij "cursus instellingen"
-> "Detail" en de instellingen op te slaan.

In enkele uitzonderlijke gevallen moet je 'cache' (kan een plugin zijn) worden geleegd.

= Ik ontvang geen mail bij een aanmelding =

Het mailen van een aanvraag gaat via E-mail (of eventueel SMTP) van/via Wordpress.
Dit kan worden aangemerkt als Spam en kunnen wij al developer van de plugin niet voorkomen.
Kijk daarom altijd in de spamfolder en voeg de afzender/mail toe aan je vertrouwde personen/mappen.
Of maak gebruik van een SMTP plugin die het mailen wat veiliger en stabieler maakt.

= Ik kan niet meer vertalen =

Kijk na of in de plugin bestanden in de `/languages` folder de planaday*.mo bestanden staan. Als die er niet staan moeten deze opnieuw gemaakt worden.
Gebruik Loco Translate om ze te bewerken!

= Als een betaling niet is gelukt of geannuleerd, staat deze nog steeds in Planaday =

Je wil als opleider geen boekingen missen. Daarom wordt een boeking gedaan en hierna doorverwezen om te betalen
(als dit actief is).
Tip:
    Je kunt optioneel via 'betalingen' de boeking ook 'annuleren' als betaling om welke reden dan ook is mislukt

== Changelog ==
= 1.2.11 =
* Kritieke fout in het boekingsformulier (blok en widget) opgelost die bij bepaalde cursussen kon optreden. Het formulier wordt nu altijd correct gegenereerd.

= 1.2.10 =
* Probleem in de instellingen schermen opgelost waardoor sommige instellingen niet zichtbaar waren.

= 1.2.9 =
* Je kunt nu een aparte enkelvouds- en meervoudsbenaming voor 'dagdelen' instellen (bijvoorbeeld '1 dag' en '2 dagen'). Bestaande installaties behouden hun huidige tekst.

= 1.2.8 =
* Het adres is nu altijd verplicht bij een bedrijf om aan te sluiten met de API.
* Er is een optie toegevoegd om in het widget/block formulier een toggle te tonen om het factuuradres hetzelfde te maken.

= 1.2.7 =
* Een check is toegevoegd om, bij een boeking, te controleren of deze boeking al succesvol is gedaan.
Is dit het geval en zijn de gegevens niet aangepast, dan wordt de boeking niet opnieuw gedaan.

= 1.2.6 =
* Probleem opgelost waarbij het boekingsformulier widget niet werkte wanneer geplaatst met een builder.
* De widgets en blokken tonen nu de omschrijvingen van dagdelen en cursussen met de html goed gerenderd.

= 1.2.5 =
* De zoekmethode voor het tijdvak heeft nu geen problemen meer bij MariaDB

= 1.2.4 =
* company locaties veroorzaken geen problemen meer. (let op: Ids van locaties zijn aangepast, als een eigen extensie van de plugin is gemaakt kan dit relevant zijn)

= 1.2.3 =
* Als de startdatum van een dagdeel niet ingesteld is, wordt er nu geen startdatum weergegeven in plaats van 1970-01-01.
* Als e-learning niet als start telt, wordt deze nu ook niet meer behandeld als start in het boekingsformulier.
* Autofill van velden in het boekingsformulier is verbeterd. (blokken en widget versie)

= 1.2.2 =
* Aantal beschikbare plekken kan niet meer negatief zijn.

= 1.2.1 =
* Compatibiliteit met plugins die de link naar pagina's veranderen verbeterd.

= 1.2.0 =
Nieuwe functies:
* Hoe de locatie wordt weergeven in de cursus lijst en dagdelen lijst is nu in te stellen met een template. Dit maakt
het mogelijk om alleen de stad of zelfs het hele adres te tonen.

bugfixes:
* API Attributen met waarde worden nu goed verzonden naar Planaday.

= 1.1.6 =
* Probleem bij api attributen met een lege waarde opgelost

= 1.1.5 =
* Probleem bij het tonen van een dagdeel zonder locatie in agenda opgelost

= 1.1.4 =
* Probleem bij het laden van meer dan 100 cursussen opgelost

= 1.1.3 =
* connectie probleem met planaday opgelost

= 1.1.2 =
* problemen met database herladen opgelost

= 1.1.1 =
* bug opgelost waarbij de plugin een fatale foutmelding kon veroorzaken

= 1.1.0 =
Features:
* Betere feedback bij het veranderen van de instellingen.
* Shortcodes kunnen nu als blocken of widgets toegevoegd worden.
* Bij blocken en widgets kunnen de instellingen worden ingesteld per item in plaats van globaal.
* Bij blocken en widgets kunnen globale instellingen worden overschreven naar een andere waarde.
* Het url van de website wordt nu geregistreerd bij de API, zodat aanpassingen gelijk kunnen worden doorgegeven.

Boekingsformulier:
* gender en initialen kunnen nu worden weggelaten op de shortcode.
* kortingscodes kunnen nu worden toegevoegd aan een boeking wanneer dit wordt aangezet.
* de vraag naar het geslacht van de cursist kan nu uit worden gezet.

Kortingscodes:
* kortingscodes kunnen een melding tonen als deze bijna op is (Wanneer deze wordt gecheckt door het nieuwe Block/Widget formulier).
* kortingscodes kunnen een melding tonen als deze bijna verlopen is (Wanneer deze wordt gecheckt door het nieuwe Block/Widget formulier).

= 1.0.27 =
* Bij verzoeken naar de API wordt er meer tijd gegeven om de PHP request te voltooien

= 1.0.26 =
* Bug opgelost waar de knop om een deelnemer toe te voegen werd getoond als bedrijven niet mogen boeken
* Als de detailpagina nog niet is ingesteld, stuurt de link nu naar de huidige pagina
* Afhandeling van een cursus met alleen e-learning verbeterd

= 1.0.25 =
* Bug opgelost Waardoor de tijden als een uur te laat werden getoond.

= 1.0.24 =
* Bug opgelost waarbij een kritieke fout naar boven kon komen.

= 1.0.22 =
* Bug opgelost waarbij informatie onnodig werd opgehaald bij de API

= 1.0.21 =
* Bug opgelost waarbij bestaande cursussen verloren gingen als er meer opgehaald werden

= 1.0.20 =
* Bug opgelost waardoor te veel requests werden verzonden naar Planaday

= 1.0.19 =
* Bug dat database herladen niet succesvol was bij te veel cursussen opgelost

= 1.0.18 =
* optie is toegevoegd om e-learning wel of niet als start te laten tellen

= 1.0.17 =
* cursist nummer in email bij inschrijving start nu bij 1 in plaats van 0

= 1.0.16 =
* Bug opgelost met een risico op een foutmelding bij een dagdeel zonder locatie.
* Toon cursussen in het verleden wordt nu toegepast op basis van de geselecteerde startdatum.

= 1.0.15 =
* Bug opgelost waarbij de robot.txt en vergelijkbare bestanden misvormt konden worden.

= 1.0.14 =
* Missende spatie in validatie van boekingsformulier opgelost
* 4 instellingen voor het bedrijf in het boekingsformulier slaan nu juist op

= 1.0.13 =
* Bug opgelost die een kritieke fout veroorzaakte wanneer een boekingsformulier met factuur email maar zonder factuur adres was ingevuld.

= 1.0.12 =
* Extra bescherming toegevoegd voor inschrijven onder een bedrijf

= 1.0.11 =
* Incompany cursussen worden niet meer getoond in de overzichtsweergaves.

= 1.0.10 =
* Bug opgelost waar de startDatum niet werd getoond als de locatie niet opgehaald kon worden.

= 1.0.9 =
* Bij het boekingsformulier is het nu mogelijk om dagdelen te selecteren

= 1.0.8 =
* Een shortcode is toegevoegd die er voor zorgt dat wanneer deze geplaatst is op een detailpagina en de cursus niet
gevonden kan worden, de gebruiker doorgestuurd wordt naar een ingestelde pagina

= 1.0.7 =
* Een optie is toegevoegd om de detailpagina te kiezen uit alle pagina's in het geval dat door ACF de pagina waarop de
padc-detail shortcode wordt gebruikt niet gevonden kan worden.

= 1.0.6 =
* probleem wat soms kon voorkomen bij het herladen van de database is opgelost.

= 1.0.5 =
* cursuslijst toont nu juist de cursussen in het verleden als dit aan staat en een start van -3months bijvoorbeeld is ingevuld
* cursus overzicht shortcodes kunnen nu "show-past=yes" en "show-full=yes" meekrijgen (net als de start) om de cursussen in het verleden of die vol zijn toch te tonen, kan ook op "no" gezet worden om nooit te tonen
* urls in versie 1.0.4 werkte niet altijd

= 1.0.4 =

* Een waarschuwing is toegevoegd die zichtbaar is wanneer de PHP-versie te oud is voor de volgende updates.
* Door middel van batch calls zijn het aantal calls wat wordt gedaan voor de database verversing veel minder

= 1.0.3 =

bugfixes
* padc-courselist... shortcodes: prijs weergave gebruikt nu wel de komma of punt instelling
* instellingen: instelling voor volle cursussen wel of niet tonen in overzicht zegt nu volle in plaats van volledige
* boekingsformulier: de vraag of de cursist een contactpersoon is, is niet meer standaard zichtbaar zonder dat in het formulier bedrijf is geselecteerd.
* boekingsformulier: de algemene voorwaarden moeten nu geaccepteerd worden.
* boekingsformulier: een boeking versturen met bedrijf zonder factuur informatie veroorzaakt niet meer een kritieke fout.
* emails: De inhoud van emails bevat nu juist de enters.
* widgets: de widgets slaan nu hun instellingen op in Avada

= 1.0.2 =

bugfixes
* instellingen: Boekingsformulier Opties en Boeking Indien Opties hernoemd naar Boekingsformulier Instellingen en Boeking Indien Instellingen
* Boeking: instelling om al gestarte cursussen te kunnen boeken werkt nu
* instellingen: omschrijving van cursussen met alleen e-learning overslaan aangepast
* shortcodes: padc-bookingform shortcode toegevoegd
* instellingen: instelling toegevoegd die font awesome uit zet vanuit de plugin


= 1.0.1 =

bugfixes
* shortcodes: versies zonder hoofdletters zijn toegevoegd voor gebruikersgemak
* zeldzame fout wat de plugin brak bij het inladen van data is nu gefixed

= 1.0.0 =

Nieuwe Functionaliteit
* Admin: Volledig vernieuwde admin pagina's
* Admin: Instellingen bevatten nu checks om fouten te voorkomen


* Zoek Widget: pagina waar de gebruiker naar gestuurd wordt is nu instelbaar
* Zoek Widget: Meer opties voor waar op gezocht kan worden


* Cursus Detail Widget: wordt zichtbaar op elke pagina waar `[padc-course]` shortcode aanwezig is


* CourseList... Shortcodes: Detail pagina waarnaar gelinkt wordt is nu instelbaar (settings → planaday → cursus instellingen → detail → detail pagina)


* CourseCalendar Shortcode: Er is nu een optie beschikbaar om alle dagdelen te tonen in de kalender


* CourseSearch Shortcode: Zoek functionaliteit werkt nu
* CourseSearch Shortcode: beter instelbaar inclusief de vorm van weergave


* Betaling: Betalingen worden nu rechtstreeks met de Mollie API gedaan
* Betaling: De prijs die betaald moet worden voor materialen wordt nu correct berekend (per persoon of bedrijf)


* Booking formulier: een bedrijf kan nu meerdere deelnemers toevoegen, maar niet meer dan beschikbaar is.


Bugfixes
Door verbeterde code zijn veel bugs opgelost, maar is het ook lastig om deze bij te houden, deze lijst zal veel bugfixes missen.
* Gedrag van detail links is nu voorspelbaar
* Als de API niet kan worden bereikt wordt deze nu goed weergegeven en breekt alles niet meer
* Meerdere "collision" risico's zijn opgelost met namespacing en prefixing in de code
* logica van de prijs weergave is nu als verwacht
* logica van het boeking formulier is nu als verwacht
* veel duplicate html ID's zijn verwijderd

Brekende Veranderingen
* Door het toevoegen van prefixes en het weghalen van veel duplicate ID's is de html structuur licht veranderd. Er is een CSS-converter beschikbaar op de support-tab in de instellingen waar oude CSS ingevoerd kan worden en deze wordt dan omgezet naar de nieuwe structuur.
* shortcodes gebruiken nu een padc- prefix in plaats van pad-

Niet Meer Ondersteunde Functionaliteit
* cursus afbeeldingen zijn niet meer beschikbaar
* Dit is de laatste versie van de plugin die versies van php voor 8.2 ondersteunt. Deze versie ondersteunt 7.3.5 tot 8.2 nog om de overgang te ondersteunen.