XML-RPC: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
No edit summary
(Deze versie werkt samen met PHP 8)
 
(26 intermediate revisions by the same user not shown)
Line 15: Line 15:
** Controleer of een gebruiker bestaat
** Controleer of een gebruiker bestaat
** Wijzig het wachtwoord ('userPassword')
** Wijzig het wachtwoord ('userPassword')
** Zoek een gebruiker (t.b.v. PC30 en/of kantoor en/of LA-akties groeperingssecretaris)
** Zoek een gebruiker (t.b.v. kantoor en/of LA-akties groeperingssecretaris)
** Haal een token om als PC30 gebruiker een HCCnet mutatie te mogen maken
** Maak een gebruiker aan (geef gebruiker een andere hccLogin waarde, maak ook bij HCCnet deze gebruiker aan)
** Maak een gebruiker aan (geef gebruiker een andere hccLogin waarde, maak ook bij HCCnet deze gebruiker aan)
** Controleer of een gebruiker zijn profiel al doorlopen heeft
** Controleer of een gebruiker zijn profiel al doorlopen heeft
Line 24: Line 23:
* Aanroepen t.b.v. hcc partners
* Aanroepen t.b.v. hcc partners
** Controleer of lidnummer/postcode correct is
** Controleer of lidnummer/postcode correct is
** Controleer of lidnummer/postcode correct is, en tevens ingeschreven staat bij een specifieke IG


* Kadernet functies
* Joomla template site functies (op basis van JoomlaToken)
** Maak een JoomlaToken
** Ruim een JoomlaToken op
** Pas mijn OptIn (bulletin inschrijving) aan
** Regel alles rondom Onderwerpen en de autorisatie hiervan
** Pas mijn wachtwoord aan
 
* Joomla kadernet site functies (op basis van JoomlaToken)
** Zoek een hcc kaderlid (t.b.v. de kaderleden zoekpagina)
** Pas mijn kadermail forwarding aan en toon ja/nee mijn GSM nummer
** Pas het kadernet e-mail wachtwoord aan
** Pas het kadernet e-mail wachtwoord aan
** Controleer op kaderlidmaatschap
** Haal de lijst met alle groeperingen op
** Haal de lijst met alle groeperingen op
** Haal de lijst met alle kaderrollen op
** Haal de lijst met alle kaderrollen op
** Zoek een kaderlid op basis van groepering en/of rol
 
* Joomla hcc.nl site (op basis van JoomlaToken)(mijn.hcc.nl vervanging)
** Pas mijn adresgegevens aan
** Pas mijn voorletters, voornaam, pseudoniem, telefoonnummer, GSM nummer etcetera aan
** Schrijf me in of uit op een bulletin
** Toon info over de kosten van een IG lidmaatschap
** Voer een wachtwoord reset uit op basis van een PWResetToken (een variant op JoomlaToken)
** Vraag een nieuwe HCC code aan, en stuur die per SMS
 
* Joomla hobby.nl site (op basis van JoomlaToken)(t.b.v. IDEAL betaling)
** Haal het aantal hobbyDomains op
 
* Aanroepen t.b.v. CRM (Microsoft Dynamics Cloud) koppeling
** Haal de dagelijkse synchronisatie bestanden op
** Werk in het CRM dan wel in LDAP de NAW gegevens bij
** Werk in het CRM dan wel in LDAP de IG gegevens van een lid bij


* HenZ
* HenZ
Line 41: Line 64:
Dit valt uiteen in de volgende categorieën:
Dit valt uiteen in de volgende categorieën:
* gebruikersnaam ('hccLogin') en wachtwoord ('userPassword')
* gebruikersnaam ('hccLogin') en wachtwoord ('userPassword')
* gebruikersnaam ('hccLogin') en Joomla token ('JoomlaToken')
* hcc lidnummer ('hccLidnr'), Joomla token ('JoomlaToken') en website ('siteID')
* hcc lidnummer ('hccLidnummer') en hcc code ('hccCode')
* hcc lidnummer ('hccLidnr') en hcc code ('hccCode')
* beheerders-DN ('beheerLogin') en beheerders wachtwoord ('beheerPassword')
* beheerders-DN ('beheerLogin') en beheerders wachtwoord ('beheerPassword')
* partner-DN ('partnerLogin') en partner wachtwoord ('partnerPassword')
* partner-DN ('partnerLogin') en partner wachtwoord ('partnerPassword')
=== Aanroepen, gedaan via de bezoekersregistratie-proxy ===
(de bezoekersregistratie proxy is een mislukt project tbv de Android app van René Prins)
(deze proxy bestaat niet meer)<br>
Diverse aanroepen kunnen ook via de bezoekersregistratie-proxy aangeroepen worden.<br>
Dan zullen ze hccLidnr en JoomlaToken als extra parameter moeten hebben:
* GeefAlleGroeperingen
* GeefAlleKaderRollen
* GeefLocaties
* GeefLocatieNamen
De bezoekersregistratie aanroepen hebben 'JoomlaToken' als extra parameter nodig:
* LidBezoektBijeenkomst
* GeefBezoekersOverzicht
De aanroepen die over de proxy uitgevoerd worden dienen voorafgegaan te worden door een aanroep naar
* GeefMijnGegevens (dit geeft na validatie immers 'JoomlaToken' terug)


=== Resultaten ===
=== Resultaten ===
Line 59: Line 97:


<pre>
<pre>
2016.03.15 HaVe
2022.03.24 HaVe
XML-RPC Hobbynet versie 40.
XML-RPC Hobbynet versie 71.
</pre>
</pre>


=== Kort overzicht ===
=== Kort overzicht ===
Dit is een lijst met alle xml aanroepen. In het volgende hoofdstuk worden ze in detail besproken.
 
Dit is een lijst met alle XML-RPC aanroepen. In het volgende hoofdstuk worden ze in detail besproken.
<pre>
<pre>
echo (partners)
echo (partners)
GebruikerBestaatControle (kadersite)
ExpandeerPostcode              (Joomla module Bas, tbv verhuizingen)
GeefAlleGroeperingen (kadersite, forum, PC30 portal, secr. portal, kantoor portal, hobbynet portal)
GebruikerBestaatControle (Joomla sites)
GeefAlleKaderRollen (forum, PC30 portal, secr. portal, kantoor portal, hobbynet portal)
GeefAantalDomeinen              (Joomla module Bas)
GeefAlleBulletins              (Joomla module Bas)
GeefAlleGroeperingen (kadersite, forum, secr. portal, kantoor portal, hobbynet portal)
GeefAlleKaderRollen (forum, secr. portal, kantoor portal, hobbynet portal, Joomla module Bas)
GeefBezoekersOverzicht (bezoekersregistratie)
GeefBezoekersOverzicht (bezoekersregistratie)
GeefFactuurOverzicht (Joomla module Bas)
GeefhccEindDatum (HenZ)
GeefhccEindDatum (HenZ)
GeefKadermailGegevens (kantoor portal)
GeefLocatieNamen (kadersite, secr. portal, kantoor portal, hobbynet portal)
GeefLocatieNamen (kadersite, secr. portal, kantoor portal, hobbynet portal)
GeefLocaties (kadersite, secr. portal, kantoor portal, hobbynet portal)
GeefLocaties (kadersite, secr. portal, kantoor portal, hobbynet portal)
GeefMijnGegevens (Joomla inlog module Bas)
GeefMijnGegevens (Joomla inlog module Bas)
GeefMijnLidnummer (kadersite)
GeefMijnLidnummer (beheer.hcc.nl secretaris portal)
GeefUitgeschrevenLeden (drupal site en HenZ)
GeefOnderwerpen                (Joomla template sites)
GeefSSOUrls (Joomla module Bas)
GeefUitgeschrevenLeden (Joomla sites, HenZ)
HaalAanmeldingsformulier (Joomla module Bas)
HaalFactuur (Joomla module Bas)
HaalIGBedragenOp                (Joomla module Bas)
HaalTariefGroepenOp (kantoor portal)
HCCpartner (Partner aanroep)
HCCpartner (Partner aanroep)
HCCpartners (Partner aanroep)
HCCpartners (Partner aanroep)
HaalOptInKeuzen (kantoor portal)
HeeftOtpKey                    (Joomla Hobbynet/LA aanroep)
HaalOptInLijst (kantoor portal)(2016-02-04: mag vervallen, wordt niet langer gebruikt in de kantoor portal)
HaalPC30Token (PC30 portal)
IsDezeNaamNogBeschikbaar (aangeroepen vanuit de CRM omgeving)
IsDezeNaamNogBeschikbaar (aangeroepen vanuit de CRM omgeving)
IsDezePseudoniemNogBeschikbaar (!! 2015.06.27 wordt niet aangeroepen !!)
IsDezePseudoniemNogBeschikbaar (kantoor portal)
IsGroeperingsKaderlid (!! alleen in testomgeving Cor in gebruik !!)
IsHCCLid (vraagbaak aanroep)
IsGroeperingsLid (!! 2015.06.27 wordt niet aangeroepen !!)(maar wordt door de nieuwe Drupal module gebruikt!)
IsKaderLid (in veel apps gebruikt)
IsKaderLid (in veel apps gebruikt)
LidBezoektBijeenkomst (bezoekersregistratie)
LidBezoektBijeenkomst (bezoekersregistratie)
MaakGebruikerAan mijnhcc.nl, maak hccnet account aan en ldap gebruikersnaam
MaakGebruikerAan (mijnhcc.nl, maak hccnet account aan en ldap gebruikersnaam)
MatchPostcodeMetRegio (!! 2015.06.27 wordt niet aangeroepen !!)
MaakOnderwerp                  (Joomla template sites)
PasOptInKeuzeAan (Joomla inlog module Bas)
MaakPWResetToken                (Joomla module Bas)
PasKaderWachtwoordAan (kadersite, email ww aanpassen)
MaakTestLogin                  (Joomla module Bas)
MuteerAanmeldingsformulier (Joomla module Bas)
MuteerGroeperingSamenstelling  (Joomla kadernet module Bas)
MuteerOnderwerp                (Joomla template sites)
MuteerOnderwerpAutorisatie      (Joomla template sites)
NormaliseerTelefoon            (Joomla module Bas)
PasHccLoginAan (Joomla module Bas)(enkel Hobbynet)
PasInteressegroepAan            (Joomla module Bas)
PasKaderGegevensAan (kadersite, Joomla module Bas)
PasOptInKeuzeAan (Joomla module Bas)
PasPseudoniemAan (Joomla module Bas)
PasUserWachtwoordAan (beheer.hcc.nl Hobbynet gebruikers portal)
PasWachtwoordAan (Joomla module Bas)
RegistreerGast (bezoekersregistratie)
RegistreerGast (bezoekersregistratie)
ResetHCCCode                    (Joomla module Bas)
RuimJoomlaTokenOp              (Joomla module Bas)
SchrijfNietlidInOpBulletin      (Joomla site bulletin module Bas)
SchrijfNietlidInOpBulletin      (Joomla site bulletin module Bas)
SchrijfOptInKeuzen (!! 2015.06.27 wordt niet aangeroepen !!)
SchrijfNieuwLidIn              (Joomla CRM module Bas)
ToonOnderwerpAutorisatie        (Joomla template sites)
UpdateMobiel                    (Joomla module Bas)
UpdateNAW                      (Joomla module Bas)
UpdateOTP                      (Joomla module Bas)
Upload_CSV_bestand              (CRM webproxy)
ValideerPWResetToken            (Joomla module Bas)
ValideerWachtwoordEisen (Joomla module Bas)
Verwerk_JSON_mutatie            (CRM webproxy)
VerwijderNietLid (Joomla beheer module Bas)
VerwijderOnderwerp              (Joomla template sites)
VraagLidgegevensTokenAan (bezoekersregistratie)
VraagLidgegevensTokenAan (bezoekersregistratie)
WijzigGebruikersGegevens (PC30 en kantoor, ww aanpassen van gebruiker)
WijzigGebruikersGegevens (kantoor en Joomla template sites, ww aanpassen van gebruiker)
WijzigHccRol (!! 2015.06.27 wordt niet aangeroepen !!)
ZetKaderForward (kadersite, email forward instellen)
ZoekGroeperingsLid (secr. portal, kantoor portal, hobbynet portal)
ZoekGroeperingsLid (secr. portal, kantoor portal, hobbynet portal)
ZoekHCCLid (VZ portal)
ZoekKaderLeden (Joomla kadernet module Bas)
ZoekKaderLeden (Joomla kadernet module Bas)
ZoekHCCLid (PC30 portal)
</pre>
</pre>


Line 107: Line 176:


<pre>
<pre>
// ** Drupal www.hcc.nl **
// ** Joomla sites, www.hcc.nl **
// 1.1 controleer of een gebruiker bestaat - optie 1
// 1.1 controleer of een gebruiker bestaat - optie 1
// (authenticatie op basis van hccLidnr en hccCode)
// (authenticatie op basis van hccLidnr en hccCode)
Line 119: Line 188:
     ['SiteID'  => $siteID,]
     ['SiteID'  => $siteID,]
     ['RemoteID' => $remoteIPaddress]));
     ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => $method,
    'Status'  => 'TRUE',
    'Message' => 'Gebruikersgegevens opgevraagd');
    if ($hccLidnr      != '') { $reply['hccLidnr']      = $hccLidnr;      }
    if ($hccLogin      != '') { $reply['hccLogin']      = $hccLogin;      }
    if ($hccPseudoniem != '') { $reply['hccPseudoniem'] = $hccPseudoniem; }
    if ($cn            != '') { $reply['cn']            = $cn;            }
    if ($sn            != '') { $reply['sn']            = $sn;            }
    if ($mail          != '') { $reply['mail']          = $mail;          }
    if ($mailHccnet    != '') { $reply['mailHccnet']    = $mailHccnet;    }
    if ($hccRegio      != '') { $reply['hccRegio']      = $hccRegio;      }
    if ($hccIG        != '') { $reply['hccIG']        = $hccIG;        }
    if ($hccRol        != '') { $reply['hccRol']        = $hccRol;        }
    if ($ProfielBekend != '') { $reply['ProfielBekend'] = $ProfielBekend; }


// ** Drupal www.hcc.nl **
// ** Portal mijn.hcc.nl **
// 1.2 controleer of een gebruiker bestaat - optie 2
// 2.1 wijzig wachtwoord - optie 1
// (authenticatie op basis van hccLogin en userPassword)
// op basis van hccLidnummer en hccCode
// Essentiele aanroep, gebruikt vanuit mijnhcc.nl (lidnr + hccCode)
// Ook gebruikt t.b.v. wachtwoord-vergeten procedure op de Joomla template sites
// Als de profielpagina nog niet is doorlopen wordt deze aanroep afgekeurd.
//
// Ook gebruikt om gebruiker rechtstreeks vanaf Joomla template sites wachtwoord te
// laten aanpassen (op basis van lidnummer en hcc code)
//
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GebruikerBestaatControle',
     'WijzigGebruikersGegevens',
     array(
     array(
       'hccLogin'     => $hccLogin,
       'hccLidnr'          => $hccLidnr,
       'userPassword' => $userPassword,
      'hccCode'           => $hccCode,
     ['ServerID'     => gethostname(),]  
       'nieuw_userPassword' => $nieuw_userPassword,
     ['SiteID'       => $siteID,]
     ['ServerID'           => gethostname(),]  
     ['RemoteID'     => $remoteIPaddress]));
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'WijzigGebruikersGegevens',
    'Status'  => 'TRUE',
    'Message'  => 'Gebruikersgegevens gewijzigd',
    'hccLogin' => $hccLogin,
    'cn'      => $cn,
    'sn'      => $sn);


// 1.3 controleer of een gebruiker bestaat - optie 3
// 2.3 wijzig wachtwoord - optie 3
// (t.b.v. PC30 portal)
// (t.b.v. VZ-portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//  Als hccLidnr leeg  is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//  Als hccLidnr leeg  is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//  1 van beide velden MOET aanwezig zijn
//  1 van beide velden MOET aanwezig zijn
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GebruikerBestaatControle',
     'WijzigGebruikersGegevens',
     array(
     array(
       'beheerLogin'   => $beheerLogin,
       'beheerLogin'       => $beheerLogin,   // beheerder lidnummer
       'beheerPassword' => $beheerPassword,
       'beheerPassword'     => $beheerPassword, // beheerder hccCode
     ['hccLidnr'       => $hccLidnr,]
     ['hccLidnr'           => $hccLidnr,]
     ['hccLogin'       => $hccLogin,]
     ['hccLogin'           => $hccLogin,]
     ['ServerID'       => gethostname(),]  
      'nieuw_userPassword' => $nieuw_userPassword,
     ['SiteID'         => $siteID,]
     ['ServerID'           => gethostname(),]  
     ['RemoteID'       => $remoteIPaddress]));
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress]));


// 1.4 controleer of een gebruiker bestaat - optie 4
// ** Portal mijn.hcc.nl **
// (authenticatie op basis van hccLogin en userPassword)
// ** t.b.v. 1e keer doorlopen van de profielpagina **
// Enkel Hobbynet beheerders of hcc verenigingskantoor medewerkers
// 8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gebruikersnaam, pseudoniem
// kunnen gegevens van derden opvragen!)
//    en wachtwoord tevens in LDAP op
// (authenticatie op basis van hcc lidnummer en hcc-code)
// ** Deze gegevens worden doorgezet naar hccnet.nl (action=4) **
//  
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GebruikerBestaatControle',
     'MaakGebruikerAan',
     array(
     array(
       'hccLogin'     => $hccLogin,
       'hccLidnr'           => $hccLidnr,
       'userPassword' => $userPassword,
       'hccCode'             => $hccCode,
       'zoekHccLidnr' => $zoekHccLidnr,
       'nieuw_hccLogin'     => $nieuw_hccLogin,
       'zoekHccLogin' => $zoekHccLogin,
       'nieuw_userPassword' => $nieuw_userPassword,
     ['ServerID'     => gethostname(),]  
      'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem,
     ['SiteID'       => $siteID,]
     ['ServerID'           => gethostname(),]  
     ['RemoteID'     => $remoteIPaddress]));
     ['SiteID'             => $siteID,]
 
     ['RemoteID'           => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'         => 'GebruikerBestaatControle',
     'Action'       => 'MaakGebruikerAan',
     'Status'         => 'TRUE',
     'Status'       => 'TRUE',
     'Message'         => 'Gebruikersgegevens opgevraagd',
     'Message'       => 'Gebruiker aangemaakt',
     'hccLidnr'       => $hccLidnr,
     'mail'         => $mail,
    'hccLogin'        => $hccLogin,
     'hccPseudoniem' => $hccPseudoniem);
     'hccPseudoniem'   => $hccPseudoniem,
    'cn'              => $cn,
    'sn'              => $sn,
    'givenname'      => $givenname,
    'mail'            => $mail,
    'mailHccnet'      => $mailHccnet,
    'hccRegio'        => $hccRegio,
    'hccIG'          => $hccIG,
    'hccRol'          => $hccRol,
    'ProfielBekend'  => 'TRUE' | 'FALSE',
    'hccForumLogin'  => $hccForumLogin,
    'hccKaderForward' => $hccKaderForward);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'GebruikerBestaatControle',
     'Action'  => 'MaakGebruikerAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');
     'Message' => 'Onjuiste credentials'       |
                'Gebruikersnaam bestaat al'  |
                'Pseudoniem bestaat al'      |
                'Gegevenscombinatie onjuist' |
                'Vul alle verplichte velden in!');


// ** Portal mijn.hcc.nl **
// H.3 Haal al mijn gegevens
// 2.1 wijzig wachtwoord - optie 1
// (wordt gebruikt door de Joomla inlogmodule)
// op basis van hccLidnummer en hccCode
// Voor gebruik over de proxy t.b.v. de Android app kan compact=TRUE meegegeven worden.
// Essentiele aanroep, gebruikt vanuit mijnhcc.nl (lidnr + hccCode)
// In dat geval worden enkel de meest essentiele gegevens teruggestuurd
// Ook gebruikt t.b.v. wachtwoord-vergeten procedure op hcc.nl
// Voor gebruik na MaakGebruikerAan kan deze functie ook op basis van hccLidnr en JoomlaToken
// Als de profielpagina nog niet is doorlopen wordt deze aanroep afgekeurd.
// worden aangeroepen
//
// De optionele parameter 'PrevSiteID' is bedoeld voor single-sign-on. Op basis van JoomlaToken,
// Ook gebruikt om gebruiker rechtstreeks vanaf www.hcc.nl wachtwoord te
// hccLidnr en PrevSiteID worden dan de credentials gevalideerd. Als die kloppen, geeft deze aanroep
// laten aanpassen (op basis van lidnummer en hcc code)
// een 2e JoomlaToken terug, maar dan uitgegeven op basis van SiteID.
//
// Als PrevSiteID leeg is, dan wordt het token op basis van siteID gevalideerd.
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
$request = xmlrpc_encode_request(
  $request = xmlrpc_encode_request(
     'GeefMijnGegevens',
     'WijzigGebruikersGegevens',
     array(
     array(
    ['hccLogin'    => $hccLogin,
       'hccLidnr'           => $hccLidnr,
       'userPassword' => $userPassword,]
       'hccCode'           => $hccCode,
    ['hccLidnr'     => $hccLidnr,
      'nieuw_userPassword' => $nieuw_userPassword,
       'JoomlaToken'  => $JoomlaToken,]
     ['ServerID'           => gethostname(),]
    ['PrevSiteID'   => $PrevSiteID,]
    ['SiteID'             => $siteID,]
    ['compact'     => $compact,]        // leeg of 'TRUE'
    ['RemoteID'           => $remoteIPaddress]));
     ['hccGroepering'=> $hccGroepering,]  // Een testgebruiker mag alleen op deze site inloggen
      'ServerID'     => gethostname(),  
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'WijzigGebruikersGegevens',
     'Action'             => 'GeefMijnGegevens',
     'Status'   => 'TRUE',
     'Status'             => 'TRUE',
     'Message' => 'Gebruikersgegevens gewijzigd',
     'Message'           => 'Gebruikersgegevens opgevraagd',
     'hccLogin' => $hccLogin,
    'hccLidnr'          => $hccLidnr,
     'cn'       => $cn,
    'hccRegio'          => $hccRegio,
     'sn'      => $sn);
     'hccIG'              => $hccIG,
    'hccRol'            => $hccRol,
    'hccAutorisatie'     => $hccAutorisatie,
     'cn'                 => $cn,
     'sn'                => $sn,
    'JoomlaToken'        => $JoomlaToken,
  ['hccLogin'          => $hccLogin,
    'hccPseudoniem'      => $hccPseudoniem,
    'givenname'          => $givenname,
    'hccAanhef'          => $hccAanhef,
    'hccGeslacht'        => $hccGeslacht,
    'hccTussenVoegsels'  => $hccTussenVoegsels,
    'hccAchternaam'      => $hccAchternaam,
    'hccStraatnaam'      => $hccStraatnaam,
    'hccHuisnummer'      => $hccHuisnummer
    'hccPostcode'        => $hccPostcode,
    'hccWoonplaats'      => $hccWoonplaats,
    'hccLand'            => $hccLand,
    'hccTelefoon'        => $hccTelefoon,
    'mail'              => $mail,
    'mailHccnet'        => $mailHccnet,
    'hccKaderMail'      => $hccKaderMail,
    'hccKaderForward'    => $hccKaderForward,
    'hccKaderToonMobiel' => $hccKaderToonMobiel,
    'hccOptIn'          => $hccOptIn,
    'ProfielBekend'      => $ProfielBekend,
    'hccBeginDatum'      => $hccBeginDatum,
    'testaccount'        => is_testaccount(),    // 'TRUE' | 'FALSE'
    'hccOtpKey'          => $hccOtpKey,
    'hccOtep'            => $hccOtep,
  ['kadermail_omvang'          => $Formaat,    // in Mb
    'kadermail_aantal_inbox'    => $aantal_inbox,
    'kadermail_aantal_nieuw'    => $aantal_nieuw,
    'kadermail_laatst_opgehaald' => $laatst_opgehaald;]]);


=> OUD, NIET MEER GEBRUIKEN. GAAT VERVALLEN <=
Output negatief:
// ** Drupal www.hcc.nl **
   $reply = array(
// ** t.b.v. profielpagina van bestaande leden **
     'Action' => 'GeefMijnGegevens',
// 2.2 wijzig wachtwoord - optie 2
    'Status' => 'FALSE',
// (t.b.v. profiel-pagina)
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');
// (authenticatie op basis van hccLogin en userPassword)
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
   $request = xmlrpc_encode_request(
     'WijzigGebruikersGegevens',
    array(
      'hccLogin'           => $hccLogin,
      'userPassword'       => $userPassword,
      'nieuw_userPassword' => $nieuw_userPassword,
    ['ServerID'           => gethostname(),]
    ['SiteID'             => $siteID,]
    ['RemoteID'           => $remoteIPaddress]));


// 2.3 wijzig wachtwoord - optie 3
// ** t.b.v. aanpassen van de opt-in keuzes op een Joomla site **
// (t.b.v. PC30 portal)
// H.4 Pas 1 opt-in van een lid aan
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// (LET OP: authenticatie op basis van hccLidnr, JoomlaToken en siteID)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//         of
//   Als hccLidnr leeg  is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//          authenticatie op basis van hccLidnr en OptOutToken (voor een directe uitschrijving door een lid)
//  1 van beide velden MOET aanwezig zijn
// Als hccLidnummer gevuld is, dan is dat het lidnummer waar de mutatie op moet worden uitgevoerd.
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
// Dat kan alleen als de aanvrager HCC#LAD of HN#WM als rol heeft
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'WijzigGebruikersGegevens',
     'PasOptInKeuzeAan',
     array(
     array(
       'beheerLogin'        => $beheerLogin,
       'hccLidnr'     => $hccLidnr,
      'beheerPassword'      => $beheerPassword,
     ['JoomlaToken'  => $JoomlaToken,]
    ['hccLidnr'           => $hccLidnr,]
     ['OptOutToken' => $OptOutToken,]
     ['hccLogin'            => $hccLogin,]
     ['hccLidnummer' => $hccLidnummer,]
      'nieuw_userPassword'  => $nieuw_userPassword,
      'hccOptIn'    => $hccOptIn,
    ['ServerID'            => gethostname(),]  
       'actie'        => 'Nieuw' | 'Weg',
     ['SiteID'             => $siteID,]
      'ServerID'     => gethostname(),  
     ['RemoteID'           => $remoteIPaddress]));
      'SiteID'       => $siteID,
 
      'RemoteID'     => $remoteIPaddress));
=> FASE2? NOG NIET IN GEBRUIK OP MIJNHCC.NL <=
// ** Portal mijn.hcc.nl **
// ** t.b.v. profielpagina van bestaande leden **
// 2.5 wijzig pseudoniem
// (t.b.v. Drupal profiel-pagina)
// (authenticatie op basis van hccLogin en userPassword)
  $request = xmlrpc_encode_request(
    'WijzigGebruikersGegevens',
     array(
      'hccLogin'            => $hccLogin,
       'userPassword'        => $userPassword,
      'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem,
    ['ServerID'           => gethostname(),]
    ['SiteID'             => $siteID,]
    ['RemoteID'           => $remoteIPaddress]));
 
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'WijzigGebruikersGegevens',
     'Action'   => 'PasOptInKeuzeAan',
     'Status' => 'TRUE',
     'Status'   => 'TRUE',
     'Message' => 'Gebruikersgegevens gewijzigd',
     'Message' => 'OptIn aangepast');
    'cn'      => $cn,
    'sn'      => $sn);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'WijzigGebruikersGegevens',
     'Action'  => 'PasOptInKeuzeAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');
     'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials | Token ongeldig | Token verlopen');
   
// H.5 Zoek kaderleden NAW (t.b.v. de Joomla kadersite)
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// (wordt gebruikt door de Joomla kadersite module)
//
// * Er dient minstens 1 zoekcriterium opgegeven te worden.
// * Als zowel hccRegio als tegelijk ook hccIG opgegeven worden is de uitkomst onvoorspelbaar.
// * Als compact=TRUE worden enkel lidnummer, cn en sn in het antwoord gezet
$request = xmlrpc_encode_request(
    'ZoekKaderLeden',
    array(
      'hccLidnr'    => $hccLidnr,
      'JoomlaToken' => $JoomlaToken,
      'ServerID'    => gethostname(),
      'SiteID'      => $siteID,
      'RemoteID'    => $remoteIPaddress,
    ['hccRegio'    => $hccRegio,]
    ['hccIG'      => $hccIG,]
    ['hccRol'      => $hccRol,]
    ['hccLocatie'  => $hccLocatie,]
    ['achternaam'  => $achternaam,]
    ['compact'     => $compact]));       // leeg of 'TRUE'


// ** t.b.v. ophalen van de opt-in keuzes op de beheer pagina **
// 2.6 Geef de complete lijst met opt-ins van dit lid
// (LET OP: authenticatie op basis van beheerdernaam en beheerderwachtwoord)
  $request = xmlrpc_encode_request(
    'HaalOptInKeuzen',
    array(
      'beheerLogin'    => $beheerLogin,
      'beheerPassword' => $beheerPassword,
    ['hccLidnr'      => $hccLidnr,]
    ['hccLogin'      => $hccLogin],
    ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
    ['RemoteID'      => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'HaalOptInKeuzen',
     'Action' => 'ZoekKaderLeden',
     'Status'   => 'TRUE',
     'Status' => 'TRUE',
     'Message'  => 'OptInLijst opgehaald',
     'Message' => 'Kaderleden opgevraagd'
     'hccOptIn' => $hccOptIn);
    'Kaderleden'      => array(
Output negatief:
      'hccLidNummer'  => $hccLidNummer,
   $reply = array(
      'hccRol'        => $hccRol,
     'Action' => 'HaalOptInKeuzen',
      'hccAanhef'    => $hccAanhef,
     'Status' => 'FALSE',
      'givenname'    => $givenname,
     'Message' => 'Gegevenscombinatie onjuist');
      'cn'            => $cn,
      'sn'           => $sn,
      'hccWoonplaats' => $hccWoonplaats,
      'hccTelefoon'  => $hccTelefoon,
      'hccMobiel'     => $hccMobiel,
      'hccKaderMail' => $hccKaderMail);
 
Output negatief:
   $reply = array(
     'Action'   => 'ZoekKaderLeden',
     'Status'   => 'FALSE',
     'Message'   => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials',
  ['ExtraInfo' => 'Ongeldig token']);


=> OUD, NIET MEER GEBRUIKEN. GAAT VERVALLEN <=
// H.9 PasKaderGegevensAan
// ** Drupal www.hcc.nl **
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// ** t.b.v. aanpassen van de opt-in keuzes op de profielpagina **
// (wordt gebruikt door de Joomla kadersite module)
// 2.7 Schrijf de complete lijst met opt-ins van dit lid
// Om de kaderleden hun forward in te laten stellen,
// (LET OP: authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// en tegelijkertijd de opt-in / opt-out voor hccToonMobiel te laten regelen
// Kan tevens het kader email wachtwoord aanpassen
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'SchrijfOptInKeuzen',
     'PasKaderGegevensAan',
     array(
     array(
       'beheerLogin'   => $beheerLogin,
       'hccLidnr'           => $hccLidnr,
       'beheerPassword' => $beheerPassword,
       'JoomlaToken'         => $JoomlaToken,
    ['hccLidnr'       => $hccLidnr,]
      'ServerID'           => gethostname(),  
    ['hccLogin'       => $hccLogin,]
      'SiteID'             => $siteID,
       'hccOptIn'       => $hccOptIn),
       'RemoteID'           => $remoteIPaddress,
    ['ServerID'       => gethostname(),]
      'hccKaderForward'     => $hccKaderForward,   // '' | $mail | $mailHccNet
    ['SiteID'         => $siteID,]
      'hccKaderToonMobiel' => $hccKaderToonMobiel, // 'TRUE' | 'FALSE' | 'NULL'
     ['RemoteID'       => $remoteIPaddress]));
     ['nieuw_kaderPassword' => $nieuw_kaderPassword]));
 
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'SchrijfOptInKeuzen',
     'Action'             => 'PasKaderGegevensAan',
     'Status'   => 'TRUE',
     'Status'             => 'TRUE',
     'Message' => 'OptInLijst weggeschreven',
     'Message'           => 'kadergegevens aangepast');
    'hccOptIn' => $hccOptIn);
 
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action' => 'SchrijfOptInKeuzen',
     'Action'   => 'PasKaderGegevensAan',
     'Status' => 'FALSE',
     'Status'   => 'FALSE',
     'Message' => 'Gegevenscombinatie onjuist');
     'Message'   => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials',
  ['ExtraInfo' => 'Ongeldig token'|'Alleen kaderleden mogen deze aanroep uitvoeren']);


// 2016-02-04: mag vervallen, wordt niet langer gebruikt in de beheer portal
// ** Portal beheer.hcc.nl
// ** t.b.v. ophalen van de opt-in keuzes op de beheer pagina' **
// ** H.10 PasUserWachtwoordAan
// 2.8 Haal de lijst met alle mogelijke bulletins
// (laatste aanroep 2020.04.09)(niet gepoort naar Joomla, maar nog wel op oude beheer portal)
// (geen authenticatie)
// ** Betalende Hobbynet gebruikers kunnen hiermee hun wachtwoord aanpassen
// (authenticatie op basis van hccLogin en userpassword)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'HaalOptInLijst',
     'PasUserWachtwoordAan',
     array(
     array(
    ['ServerID'     => gethostname(),]
      'hccLogin'        => $username,
    ['SiteID'       => $siteID,]
      'userpassword'    => $password,
    ['RemoteID'     => $remoteIPaddress]));
      'hobbynetAccount'  => $hobbyname,
      'nieuw_wachtwoord' => $nieuw_wachtwoord,
      'ServerID'         => gethostname(),
      'SiteID'           => $serverName,
      'RemoteID'         => $remoteAddr));      
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'     => 'HaalOptInLijst',
     'Action' => 'PasUserWachtwoordAan',
     'Status'     => 'TRUE',
     'Status' => 'TRUE',
     'Message'   => 'OptInLijst opgehaald',
     'Message' => 'wachtwoord aangepast');
     'OptInLijst' => $OptInLijst);
Output negatief:
// ** Portal mijn.hcc.nl **
  $reply = array(
// ** t.b.v. 1e keer doorlopen van de profielpagina **
    'Action'  => 'PasUserWachtwoordAan',
// 8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gebruikersnaam, pseudoniem  
     'Status' => 'FALSE',
//    en wachtwoord tevens in LDAP op
    'Message' => 'Onjuiste credentials'          |
// (authenticatie op basis van hcc lidnummer en hcc-code)
                'Gegevenscombinatie onjuist'    |
// ** Deze gegevens worden doorgezet naar hccnet.nl (action=4) **
                'Vul alle verplichte velden in!' |
//
                'Het nieuwe wachtwoord voldoet niet aan de minimale eisen!'    |
                'account $hobbynetAccount behoort niet bij gebruiker $hccLogin' |
                'Kan ww van account $hobbynetAccount niet aanpassen');
 
// ** t.b.v. aanpassen van de gebruikersinstellingen op een Joomla site **
// H.11 Pas het pseudoniem van een lid aan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'MaakGebruikerAan',
     'PasPseudoniemAan',
     array(
     array(
       'hccLidnr'           => $hccLidnr,
       'hccLidnr'     => $hccLidnr,
       'hccCode'             => $hccCode,
       'JoomlaToken'   => $JoomlaToken,
       'nieuw_hccLogin'     => $nieuw_hccLogin,
       'hccPseudoniem' => $hccPseudoniem,
       'nieuw_userPassword'  => $nieuw_userPassword,
       'ServerID'      => gethostname(),
      'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem,
      'SiteID'       => $siteID,
     ['ServerID'            => gethostname(),]
      'RemoteID'     => $remoteIPaddress));
    ['SiteID'             => $siteID,]
    ['RemoteID'           => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'MaakGebruikerAan',
     'Action'   => 'PasPseudoniemAan',
     'Status'       => 'TRUE',
     'Status'   => 'TRUE',
     'Message'       => 'Gebruiker aangemaakt',
     'Message' => 'Pseudoniem aangepast');
    'mail'          => $mail,
    'hccPseudoniem' => $hccPseudoniem);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'MaakGebruikerAan',
     'Action'  => 'PasPseudoniemAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials'       |
     'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials' | 'Pseudoniem bestaat al');
                'Gebruikersnaam bestaat al' |
                'Pseudoniem bestaat al'      |
                'Gegevenscombinatie onjuist' |
                'Vul alle verplichte velden in!');


// H.3 Haal al mijn gegevens
// ** t.b.v. aanpassen van de gebruikersinstellingen op een Joomla site **
// (wordt gebruikt door de Joomla inlogmodule)
// H.12 Controleer of een opgegeven wachtwoord aan de minimum eisen voldoet
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefMijnGegevens',
     'ValideerWachtwoordEisen',
     array(
     array(
      'hccLogin'    => $hccLogin,
       'userPassword' => $userPassword,
       'userPassword' => $userPassword,
       'ServerID'    => gethostname(),  
       'ServerID'    => gethostname(),
       'SiteID'      => $siteID,
       'SiteID'      => $siteID,
       'RemoteID'    => $remoteIPaddress));
       'RemoteID'    => $remoteIPaddress));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'           => 'GeefMijnGegevens',
     'Action'   => 'ValideerWachtwoordEisen',
     'Status'           => 'TRUE',
     'Status'   => 'TRUE',
     'Message'           => 'Gebruikersgegevens opgevraagd',
     'Message' => 'Wachtwoord voldoet aan de minimale eisen');
    'hccLidnr'          => $hccLidnr,
    'hccLogin'          => $hccLogin,
    'hccPseudoniem'    => $hccPseudoniem,
    'cn'                => $cn,
    'sn'                => $sn,
    'givenname'        => $givenname,
    'hccAanhef'        => $hccAanhef,
    'hccGeslacht'      => $hccGeslacht,
    'hccTussenVoegsels' => $hccTussenVoegsels,
    'hccAchternaam'    => $hccAchternaam,
    'hccStraatnaam'    => $hccStraatnaam,
    'hccHuisnummer'    => $hccHuisnummer
    'hccPostcode'      => $hccPostcode,
    'hccWoonplaats'    => $hccWoonplaats,
    'hccLand'          => $hccLand,
    'hccTelefoon'      => $hccTelefoon,
    'mail'              => $mail,
    'hccRegio'          => $hccRegio,
    'hccIG'            => $hccIG,
    'hccRol'            => $hccRol,
    'hccOptIn'          => $hccOptIn,
    'hccForumLogin'    => $hccForumLogin,
    'ProfielBekend'    => $ProfielBekend,
    'JoomlaToken'      => $JoomlaToken);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'GeefMijnGegevens',
     'Action'  => 'ValideerWachtwoordEisen',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');
     'Message' => 'Wachtwoord voldoet niet aan de minimale eisen');


// ** t.b.v. aanpassen van de opt-in keuzes op een Joomla site **
// ** H.13 PasWachtwoordAan
// H.4 Pas 1 opt-in van een lid aan
// ** Vanuit een Joomla template site kunnen gebruikers hiermee hun eigen wachtwoord aanpassen
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en serverID)
// (authenticatie op basis van JoomlaToken, lidnummer, siteID. Extra controle via userpassword)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'PasOptInKeuzeAan',
     'PasWachtwoordAan',
     array(
     array(
       'hccLidnr'     => $hccLidnr,
       'hccLidnr'           => $hccLidnr,
       'JoomlaToken' => $JoomlaToken,
       'JoomlaToken'       => $JoomlaToken,
       'hccOptIn'     => $hccOptIn,
       'userpassword'       => $password,
       'actie'       => 'Nieuw' | 'Weg',
       'nieuw_userPassword' => $nieuw_userPassword,
       'ServerID'     => gethostname(),  
       'ServerID'           => gethostname(),
       'SiteID'       => $siteID,
       'SiteID'             => $serverName,
       'RemoteID'     => $remoteIPaddress));
       'RemoteID'           => $remoteAddr));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'PasOptInKeuzeAan',
     'Action' => 'PasWachtwoordAan',
     'Status'   => 'TRUE',
     'Status' => 'TRUE',
     'Message' => 'OptIn aangepast');
     'Message' => 'wachtwoord aangepast');
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'PasOptInKeuzeAan',
     'Action'  => 'PasWachtwoordAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');
     'Message' => 'Onjuiste credentials'          |
   
                'Gegevenscombinatie onjuist'     |
// H.5 Zoek kaderleden NAW (t.b.v. de Joomla kadersite)
                'Vul alle verplichte velden in!' |
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en serverID)
                'Het nieuwe wachtwoord voldoet niet aan de minimale eisen!');
// (wordt gebruikt door de Joomla kadersite module)
 
//
// ** H.13.1 PasWachtwoordAan
// * Er dient minstens 1 zoekcriterium opgegeven te worden.
// ** Vanuit www.hcc.nl kunnen gebruikers hiermee hun eigen wachtwoord resetten
// * Als zowel hccRegio als tegelijk ook hccIG opgegeven worden is de uitkomst onvoorspelbaar.
// (authenticatie op basis van PWResetToken en hccLogin).
// (Als de aanroep geslaagd is, dan is daarna het PWResetToken ongeldig)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'ZoekKaderLeden',
     'PasWachtwoordAan',
     array(
     array(
       'hccLidnr'   => $hccLidnr,
       'hccLogin'           => $hccLogin,
       'JoomlaToken' => $JoomlaToken,
       'PWResetToken'       => $PWResetToken,
       'ServerID'   => gethostname(),  
       'nieuw_userPassword' => $nieuw_userPassword,
       'SiteID'     => $siteID,
       'ServerID'           => gethostname(),
       'RemoteID'   => $remoteIPaddress,
       'SiteID'             => $serverName,
    ['hccRegio'    => $hccRegio,]
       'RemoteID'           => $remoteAddr));
    ['hccIG'       => $hccIG,]
Output positief:
    ['hccRol'     => $hccRol]);
   $reply = array(
 
     'Action'  => 'PasWachtwoordAan',
Output positief:
   $reply = array(
     'Action'  => 'ZoekKaderLeden',
     'Status'  => 'TRUE',
     'Status'  => 'TRUE',
     'Message' => 'Kaderleden opgevraagd'
     'Message' => 'wachtwoord aangepast');
    'Kaderleden'      => array(
      'hccRol'        => $hccRol,
      'hccAanhef'    => $hccAanhef,
      'givenname'    => $givenname,
      'cn'            => $cn,
      'sn'            => $sn,
      'hccWoonplaats' => $hccWoonplaats,
      'hccTelefoon'  => $hccTelefoon,
      'hccKaderMail'  => $hccKaderMail
    );
 
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'ZoekKaderLeden',
     'Action'  => 'PasWachtwoordAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Gegevenscombinatie onjuist');
     'Message' => 'Onjuiste credentials'          |
   
                'Gegevenscombinatie onjuist'    |
// 3.1 Geef mijn lidnummer
                'Vul alle verplichte velden in!' |
// (authenticatie op basis van hccLogin en userPassword)
                'Het nieuwe wachtwoord voldoet niet aan de minimale eisen!');
 
// ** H.14 MaakPWResetToken
// ** Vanuit www.hcc.nl kunnen gebruikers hiermee een wachtwoord reset aanvragen
//    Deze aanroep geeft naast het PWResetToken ook het contact emailadres mee terug,
//    zodat Joomla een reset-mail kan sturen
// (acties op basis van gebruikersnaam)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefMijnLidnummer',
     'MaakPWResetToken',
     array(
     array(
       'hccLogin'     => $hccLogin,
       'hccLogin'   => $username,
       'userPassword' => $userPassword,
       'ServerID'   => gethostname(),
    ['ServerID'     => gethostname(),]
      'SiteID'     => $serverName,
    ['SiteID'       => $siteID,]
      'RemoteID'   => $remoteAddr));
    ['RemoteID'     => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'GeefMijnLidnummer',
     'Action'       => 'MaakPWResetToken',
     'Status'   => 'TRUE',
     'Status'       => 'TRUE',
     'Message' => 'Lidnummer opgevraagd',
     'PWResetToken' => $PWResetToken,
     'hccLidnr' => $hccLidnr);
    'mail'         => $mail,
     'Message'     => 'Password reset token aangemaakt');
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action' => 'GeefMijnLidnummer',
     'Action'       => 'MaakPWResetToken',
     'Status' => 'FALSE',
     'Status'       => 'FALSE',
     'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');
     'Message'     => 'Gebruiker niet gevonden');


// ** Portal mijn.hcc.nl **
// ** H.15 ValideerPWResetToken
// ** t.b.v. 1e keer doorlopen van de profielpagina **
// ** Vanuit www.hcc.nl kunnen gebruikers een wachtwoord reset aanvragen
// 8.2 Controleer of de gebruikersnaam op dit moment bestaat
//   Controleer dat het hier om een bestaand (en nog niet gebruikt) token gaat
// (geen authenticatie)
// ** Deze gegevens worden opgevraagd bij hccnet.nl (action=3)      **
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsDezeNaamNogBeschikbaar',
     'ValideerPWResetToken',
     array(
     array(
       'nieuw_hccLogin' => $nieuw_hccLogin,
       'hccLogin'     => $hccLogin,
    ['ServerID'       => gethostname(),]
      'PWResetToken' => $PWResetToken,
    ['SiteID'         => $siteID,]
      'ServerID'     => gethostname(),
    ['RemoteID'       => $remoteIPaddress]));
      'SiteID'       => $serverName,
      'RemoteID'     => $remoteAddr));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'IsDezeNaamNogBeschikbaar',
     'Action'       => 'ValideerPWResetToken',
     'Status' => 'TRUE',
     'Status'       => 'TRUE',
     'Message' => 'Gebruikersnaam is nog beschikbaar');
     'Message'     => 'Password reset token gevonden');
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action' => 'IsDezeNaamNogBeschikbaar',
     'Action'       => 'ValideerPWResetToken',
     'Status' => 'FALSE',
     'Status'       => 'FALSE',
     'Message' => 'Gebruikersnaam bestaat al');
     'Message'     => 'hccLogin bestaat niet' | 'PWResetToken bestaat niet');


// ** Enkel voor gebruik vanaf de kantoor portal **
// H.16 Ruim een bestaand JoomlaToken op
// **  t.b.v. het hernoemen van accounts in CRM  **
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// 8.3 Controleer of een Pseudoniem op dit moment bestaat
// (geen authenticatie)
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsDezePseudoniemNogBeschikbaar',
     'RuimJoomlaTokenOp',
     array(
     array(
       'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem,
       'hccLidnr'   => $hccLidnr,
    ['ServerID'           => gethostname(),]
      'JoomlaToken' => $JoomlaToken,
    ['SiteID'             => $siteID,]
      'SiteID'     => $siteID,
     ['RemoteID'           => $remoteIPaddress]));
    ['ServerID'    => gethostname(),]  
     ['RemoteID'   => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'IsDezePseudoniemNogBeschikbaar',
     'Action'   => 'RuimJoomlaTokenOp',
     'Status' => 'TRUE',
     'Status'   => 'TRUE',
     'Message' => 'Pseudoniem is nog beschikbaar');
     'Message' => 'JoomlaToken opgeruimd');
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'IsDezePseudoniemNogBeschikbaar',
     'Action'  => 'RuimJoomlaTokenOp',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Pseudoniem bestaat al');
     'Message' => 'Onjuist JoomlaToken');


// ** t.b.v. de PC30 zoekpagina **
// ** Joomla module
// A.1 Zoek alle bij de query passende hcc leden
// ** H.17 GeefAantalDomeinen
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// ** Vraag het aantal domeinen op van een betalende Hobbynet gebruiker (t.b.v. IDEAL betaling)
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'ZoekHCCLid',
     'GeefAantalDomeinen',
     array(
     array(
       'beheerLogin'   => $beheerLogin,
       'JoomlaToken'     => $JoomlaToken,
       'beheerPassword' => $beheerPassword,
       'hccLidnr'       => $hccLidnr,
       'ZoekMethode'   => $ZoekMethode,
       'hobbynetAccount' => $hobbyname,
       'ZoekString'    => $zoekstring,
       'ServerID'       => gethostname(),
    ['ZoekLimiet'    => $ZoekLimiet],
      'SiteID'         => $serverName,
    ['ServerID'       => gethostname(),]
      'RemoteID'       => $remoteAddr));
    ['SiteID'         => $siteID,]
    ['RemoteID'       => $remoteIPaddress]));
+----------------+-----------------------------------------+
| ZoekMethode    |  ZoekString                            |
+----------------+-----------------------------------------+
| achternaam    | (eerste deel van) de naam              |
| postcode      | (eerste deel van) postcode              |
| lidnummer      | volledig lidnummer                      |
| emailadres    | (eerste deel van) e-mail adres          |
| gebruikersnaam | (eerste deel van) de login naam        |
| pseudoniem    | volledig pseudoniem                    |
+----------------+-----------------------------------------+
 
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'ZoekHCCLid',
     'Action'         => 'GeefAantalDomeinen',
     'Status'   => 'TRUE',
     'Status'         => 'TRUE',
     'Message'   => 'Gebruiker(s) gevonden',
     'hobbynetAccount' => $hobbyname,
  ['ExtraInfo' => 'Zoekopdracht afgebroken, Y van Z getoond'],
     'AantalDomeinen'  => $aantalDomeinen,
     'Results'  => array(
    'Message'        => 'aantal domeinen opgevraagd');
      'hccLidnummer'      => $hccLidnummer,
      'hccBeginDatum'      => $hccBeginDatum,
      'hccEindDatum'      => $hccEindDatum,
      'sn'                => $sn,
      'givenName'          => $givenName,
      'hccGeslacht'        => $hccGeslacht,
      'hccStraatnaam'      => $hccStraatnaam,
      'hccHuisnummer'      => $hccHuisnummer
      'hccHuisToevoeging'  => $hcchuisToevoeging,
      'hccPostcode'        => $hccPostcode,
      'hccWoonplaats'      => $hccWoonplaats,
      'hccLand'            => $hccLand,
      'hccTelefoon'        => $hccTelefoon,
      'hccMobiel'          => $hccMobiel,
      'mail'              => $mail,
      'mailHccnet'        => $mailHccnet,
      'hccIG'              => $hccIG,
      'hccRol'            => $hccRol,
      'hccLogin'          => $hccLogin,
      'hccPseudoniem'      => $hccPseudoniem,
      'ProfielBekend'      => 'TRUE' | 'FALSE'])*));
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'ZoekHCCLid',
     'Action'  => 'GeefAantalDomeinen',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Gebruiker niet gevonden');
     'Message' => 'Onjuiste credentials'          |
                'Gegevenscombinatie onjuist'    |
                'Vul alle verplichte velden in!' |
                'account $hobbynetAccount behoort niet bij deze gebruiker');
 
// ** Joomla module
// ** H.18 ResetHCCCode
// ** Reset de hcc code van een gebruiker, en stuur vervolgens een SMS naar de 06 van het lid
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'ResetHCCCode',
    array(
      'hccLidnummer'  => $hccLidnummer,  // Het lidnummer van het lid waarvan we de HCCcode aan gaan passen
      'beheerLogin'    => $beheerLogin,    // geheime credentials van de site
      'beheerPassword' => $beheerPassword, // geheime credentials van de site
      'ServerID'      => gethostname(),
      'SiteID'        => $serverName,
      'RemoteID'      => $remoteAddr));
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'ZoekHCCLid',
     'Action'         => 'ResetHCCCode',
     'Status' => 'FALSE',
     'Status'         => 'TRUE',
     'Message' => 'Onjuiste credentials');
     'Message'         => 'Nieuwe HCCcode aangemaakt en verstuurd');


// ** t.b.v. de PC30 zoekpagina **
// ** Joomla module
// A.2 Haal een hccnet.nl token t.b.v. 1 hcc lid op
// ** H.18.1 ResetHCCCode (hcc kantoor aanroep)
// ** Reset de hcc code van een gebruiker, en stuur vervolgens een SMS naar de 06 van het lid
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'HaalPC30Token',
     'ResetHCCCode',
     array(
     array(
       'beheerLogin'    => $beheerLogin,
       'JoomlaToken'    => $JoomlaToken,   // Het Joomla token van de sessie van de kantoor medewerker
       'beheerPassword' => $beheerPassword,
       'hccLidnr'      => $hccLidnr,      // Het lidnummer van de kantoor medewerker
       'hccLidnr'      => $hccLidnr,
      'hccLidnummer'  => $hccLidnummer,  // Het lidnummer van het lid waarvan we de HCCcode aan gaan passen
    ['ServerID'       => gethostname(),]
      'ServerID'      => gethostname(),
    ['SiteID'         => $siteID,]
      'SiteID'        => $serverName,
    ['RemoteID'       => $remoteIPaddress]));
      'RemoteID'      => $remoteAddr));
Output positief:
  $reply = array(
    'Action'          => 'ResetHCCCode',
    'Status'         => 'TRUE',
    'Message'        => 'Nieuwe HCCcode aangemaakt en verstuurd');
 
// ** t.b.v. aanpassen van de hccLogin van een gebruiker (Hobbynet functie op Joomla site)  **
// H.19 Pas de hccLogin van een lid aan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// hccLidnummer is het lidnummer waar de mutatie op moet worden uitgevoerd
// Kan alleen als de aanvrager HN#WM als rol heeft
  $request = xmlrpc_encode_request(
    'PasHccLoginAan',
    array(
       'hccLidnr'     => $hccLidnr,    // lidnummer van de aanvrager
      'JoomlaToken'  => $JoomlaToken,  // JoomlaToken van de aanvrager
      'hccLidnummer' => $hccLidnummer, // pas de hccLogin van dit lidnummer aan
       'hccLogin'    => $hccLogin,     // dit is de gewenste nieuwe hccLogin
      'ServerID'     => gethostname(),
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'HaalPC30Token',
     'Action'   => 'PasHccLoginAan',
     'Status' => 'TRUE',
     'Status'   => 'TRUE',
     'Message' => 'Token opgevraagd',
     'Message' => 'hccLogin aangepast');
    'Token'  => $PC30Token);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'HaalPC30Token',
     'Action'  => 'PasHccLoginAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Gebruiker niet gevonden' | 'Onjuiste credentials');
     'Message' => 'Gegevenscombinatie onjuist' |
                'Onjuiste credentials'      |
                'Gebruikersnaam al in gebruik');


// ** t.b.v. het Ledenadministratie overzicht op de kadersite **
// ** t.b.v. het aanmaken van een testaccount door een webmaster
// A.3 Zoek alle bij de query passende hcc leden van deze groepering
// H.20 Maak een testaccount aan
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
// Kan alleen als de aanvrager WM als rol heeft
// (authenticatie op basis van AccountNaam en AccountCode of token)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'ZoekGroeperingsLid',
     'MaakTestLogin',
     array(
     array(
       'AccountNaam' => $lidnr,
       'JoomlaToken'   => $JoomlaToken,     // JoomlaToken van de aanvrager
    ['AccountCode' => $AccountCode,]
      'hccLidnummer' => $hccLidnummer,   // lidnummer van de aanvrager
    ['token'      => $token,]
      'hccRol'       => $hccRol,          // (mag leeg zijn)
       'Groepering' => $groepering,
       'hccGroepering' => $hccGroepering,   // (regio of IG)
       'ZoekMethode' => $ZoekMethode,
       'ServerID'     => gethostname(),
       'ZoekString' => $zoekstring,
       'SiteID'       => $siteID,
    ['ZoekLimiet' => $ZoekLimiet,]
       'RemoteID'     => $remoteIPaddress));
    ['Bijeenkomst' => $Bijeenkomst], // Alleen voor gebruik op de
Output positief:
                                      // bijeenkomsten aanwezigheidsregistratie pagina
reply = array(
    ['ServerID'    => gethostname(),]
    'Action'          => 'MaakTestLogin',
    ['SiteID'     => $siteID,]
    'Status'         => 'TRUE',
    ['RemoteID'   => $remoteIPaddress]));
    'Message'         => 'Tijdelijk test account aangemaakt',
+-----------------+-----------------------------------------+
    'TestAccountNaam' => 'test-<groepering>-<hccLogin>'
| ZoekMethode     | ZoekString                            |
    'userpassword'    => $nieuw_userpassword,
  +-----------------+-----------------------------------------+
    'hccGroepering'   => $hccGroepering,
| achternaam      | (deel van) de naam                      |
    'hccRol'         => $hccRol);
| postcode        | (eerste deel van) postcode              |
Output negatief:
| lidnummer      | volledig lidnummer                      |
  $reply = array(
| nieuwe_leden    | YYYYMMDD vanaf waar gezocht moet worden |
     'Action' => 'MaakTestLogin',
| opgezegde_leden | YYYYMMDD tot waar gezocht moet worden  |
    'Status' => 'FALSE',
| kaderleden      | n.v.t.                                  |
    'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');
+-----------------+-----------------------------------------+


// Joomla functie
// ** t.b.v. aanpassen van de OneTime Passwords
// H.21 Pas de OTP gegevens van een lid aan
// (LET OP: authenticatie op basis van hccLidnr, JoomlaToken en siteID)
// Als hccLidnummer gevuld is, dan is dat het lidnummer waar de mutatie op moet worden uitgevoerd.
// Dat kan alleen als de aanvrager HCC#LAD of HN#WM als rol heeft
  $request = xmlrpc_encode_request(
    'UpdateOTP',
    array(
      'hccLidnr'    => $hccLidnr,
      'JoomlaToken'  => $JoomlaToken,
    ['hccLidnummer' => $hccLidnummer,]
      'hccOtpKey'    => $hccOtpKey, // De otp encryptie key van de gebruiker (mag leeg zijn, dan weg)
      'hccOtep'      => $hccOtep,  // Het one time recovery password (mag leeg zijn, dan weg)
      'ServerID'    => gethostname(),
      'SiteID'      => $siteID,
      'RemoteID'    => $remoteIPaddress));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'ZoekGroeperingsLid',
     'Action'   => 'UpdateOTP',
     'Status'   => 'TRUE',
     'Status'   => 'TRUE',
     'Message'   => 'Gebruiker(s) gevonden',
     'Message' => 'OTP gegevens aangepast');
  ['ExtraInfo' => 'Zoekopdracht afgebroken, Y van Z getoond'],
Output negatief:
    'Results'   =>
   $reply = array(
      [array(
    'Action'  => 'UpdateOTP',
        'hccLidnummer'  => $hccLidnummer,
    'Status'  => 'FALSE',
        'hccBeginDatum' => $hccBeginDatum,
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');
        'hccEindDatum'  => $hccEindDatum,
 
        'sn'           => $sn,
// Joomla functie
        'givenName'     => $givenName,
// H.22 Heeft een lid een OTP key ja/nee
        'hccGeslacht'   => $hccGeslacht,
// (LET OP: authenticatie op basis van hccLidnr, JoomlaToken en siteID)
        'hccStraatnaam' => $hccStraatnaam,
// hccLidnummer is het lidnummer waar de aanvraag op moet worden uitgevoerd.
        'hccHuisnummer' => $hccHuisnummer,  
// Dat kan alleen als de aanvrager HCC#LAD of HN#WM als rol heeft
        'hccPostcode'   => $hccPostcode,
   $request = xmlrpc_encode_request(
        'hccWoonplaats' => $hccWoonplaats,
    'HeeftOtpKey',
        'hccLand'       => $hccLand,  
    array(
        'hccTelefoon'   => $hccTelefoon,
      'hccLidnr'     => $hccLidnr,
        'hccMobiel'    => $hccMobiel,
      'JoomlaToken' => $JoomlaToken,
        'mail'          => $mail,
      'hccLidnummer' => $hccLidnummer,
        'mailHccnet'   => $mailHccnet,
      'ServerID'     => gethostname(),
        'hccKaderMail' => $hccKaderMail,
      'SiteID'       => $siteID,
        'hccRegio'      => $hccRegio,
      'RemoteID'    => $remoteIPaddress));
        'hccIG'         => $hccIG,
Output positief:
        'hccRol'       => $hccRol,
  $reply = array(
        'hccLogin'     => $hccLogin,
    'Action'     => 'HeeftOtpKey',
        'hccPseudoniem' => $hccPseudoniem)]*)));
    'Status'      => 'TRUE',
Output negatief:
    'HeeftOtpKey' => 'TRUE'|'FALSE',
   $reply = array(
    'Message'     => 'OTP status opgevraagd');
     'Action'  => 'ZoekGroeperingsLid',
Output negatief:
   $reply = array(
     'Action'  => 'HeeftOtpKey',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Gebruiker(s) niet gevonden' | 'Onjuiste credentials');
     'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');


// ** t.b.v. administreren van bijeenkomsten **
// 3.1 Geef mijn lidnummer
// A.4 Lid bezoekt bijeenkomst
// (authenticatie op basis van hccLogin en userPassword)
// (authenticatie op basis van AccountNaam en AccountCode of token)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'LidBezoektBijeenkomst',
     'GeefMijnLidnummer',
     array(
     array(
       'AccountNaam' => $lidnr,
       'hccLogin'     => $hccLogin,
    ['AccountCode' => $AccountCode,]
       'userPassword' => $userPassword,
    ['token'      => $token,]
     ['ServerID'     => gethostname(),]  
       'Bijeenkomst' => $Bijeenkomst, // groepering die deze bijeenkomst organiseert
     ['SiteID'       => $siteID,]
      'hccLidnr'    => $hccLidnr,    // lid dat aanwezig gemeld moet worden
     ['RemoteID'     => $remoteIPaddress]));
    ['correctie'  => $hccLidnr],  // lid dat gecorrigeerd moet worden
     ['ServerID'   => gethostname(),]  
     ['SiteID'     => $siteID,]
     ['RemoteID'   => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'LidBezoektBijeenkomst',
     'Action'   => 'GeefMijnLidnummer',
     'Status' => 'TRUE',
     'Status'   => 'TRUE',
     'Message' => 'Bezoeker weggeschreven',
     'Message' => 'Lidnummer opgevraagd',
     'Results' => array(
     'hccLidnr' => $hccLidnr);
      // info van deze bezoeker
      'cn'              => $cn,                // cn (Verbeek, H.J.)
      'hccGeslacht'      => $hccGeslacht,      // hccGeslacht van de bezoeker
      'groeperingslid'  => $groeperingslid,    // TRUE of FALSE: is deze persoon lid van deze groepering
      'mijnGroeperingen' => $mijnGroeperingen,  // komma-gescheiden lijst (regio, [hccIG]*)
      'aantalBezoeken'  => $aantalBezoeken,    // hoe vaak heeft dit lid deze bijeenkomst bezocht
      // info van de bijeenkomst
      'AantalBezoekers'  => $AantalBezoekers)); // aantal bezoekers van deze bijeenkomst
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'LidBezoektBijeenkomst',
     'Action'  => 'GeefMijnLidnummer',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials';
     'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');


// ** t.b.v. administreren van bijeenkomsten en opvragen van lidgegevens **
// ** Portal mijn.hcc.nl **
// A.5 Vraag Lidgegevens token aan (geldig voor dit lid, en deze groepering, op deze datum)
// ** t.b.v. 1e keer doorlopen van de profielpagina **
// Als geen datum gegeven is, dan is het token vandaag geldig
// 8.2 Controleer of de gebruikersnaam op dit moment bestaat
// (authenticatie op basis van AccountNaam en AccountCode)
// (geen authenticatie)
// ** Deze gegevens worden opgevraagd bij hccnet.nl (action=3)       **
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'VraagLidgegevensTokenAan',
     'IsDezeNaamNogBeschikbaar',
     array(
     array(
       'AccountNaam' => $lidnr,
       'nieuw_hccLogin' => $nieuw_hccLogin,
      'AccountCode' => $AccountCode,
     ['ServerID'      => gethostname(),]  
      'hccLidnr'    => $hccLidnummer, // vraag het token voor dit lid aan
     ['SiteID'         => $siteID,]
      'groepering'  => $groepering,  // zoek binnen deze groepering
     ['RemoteID'       => $remoteIPaddress]));
     ['datum'      => $datum],      // optioneel: datum YYYY-MM-DD, anders: vandaag
    ['ServerID'    => gethostname(),]  
     ['SiteID'     => $siteID,]
     ['RemoteID'   => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'     => 'VraagLidgegevensTokenAan',
     'Action' => 'IsDezeNaamNogBeschikbaar',
     'Status'     => 'TRUE',
     'Status' => 'TRUE',
     'Message'   => 'Token opgevraagd',
     'Message' => 'Gebruikersnaam is nog beschikbaar');
    'groepering' => $Groepering,
    'token'      => $token,
    'sn'        => $sn);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'VraagLidgegevensTokenAan',
     'Action'  => 'IsDezeNaamNogBeschikbaar',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials');
     'Message' => 'Gebruikersnaam bestaat al');


// ** t.b.v. administreren van bijeenkomsten en opvragen van lidgegevens **
// ** Enkel voor gebruik vanaf de kantoor portal **
// A.6 Toon bezoekersoverzicht
// **  t.b.v. het hernoemen van accounts in CRM  **
// (authenticatie op basis van AccountNaam en AccountCode of token)
// 8.3 Controleer of een Pseudoniem op dit moment bestaat ??? NIET GEBRUIKT ??
// (geen authenticatie)
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefBezoekersOverzicht',
     'IsDezePseudoniemNogBeschikbaar',
     array(
     array(
       'AccountNaam' => $lidnr,
       'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem));
      'AccountCode' => $AccountCode,
      'token'      => $token,
    ['datum'      => $datum,]      // optioneel: datum YYYY-MM-DD, anders: vandaag
      'Bijeenkomst' => $Bijeenkomst, // groepering die deze bijeenkomst organiseert
    ['ServerID'    => gethostname(),]
    ['SiteID'      => $siteID,]
    ['RemoteID'    => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'GeefBezoekersOverzicht',
     'Action' => 'IsDezePseudoniemNogBeschikbaar',
     'Status'   => 'TRUE',
     'Status' => 'TRUE',
     'Message'   => 'Bezoekersoverzicht opgevraagd',
     'Message' => 'Pseudoniem is nog beschikbaar');
    'Bezoekers' => $bezoekers,
  ['Locatie'  => $Locatie]);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'GeefBezoekersOverzicht',
     'Action'  => 'IsDezePseudoniemNogBeschikbaar',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials' | 'Geen bijeenkomst gevonden' | 'Geen bezoekers gevonden');
     'Message' => 'Pseudoniem bestaat al');


// A.7 Geef het array met alle locaties
// ** t.b.v. de verenigingszaken zoekpagina **
// (of beperk dit tot de locaties van de groepering $Groepering)
// A.1 Zoek alle bij de query passende hcc leden
// Desgewenst worden alle resultaten waarbij hccToonInJoomla aan staat onderdrukt
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// (geen authenticatie)
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefLocaties',
     'ZoekHCCLid',
     array(
     array(
     ['Groepering'   => $hccGroepering,]
      'beheerLogin'    => $beheerLogin,    // beheerder hccLidnummer
     ['ServerID'     => gethostname(),]  
      'beheerPassword' => $beheerPassword, // beheerder hccCode
     ['SiteID'       => $siteID,]
      'ZoekMethode'    => $ZoekMethode,
     ['RemoteID'     => $remoteIPaddress,]
      'ZoekString'    => $zoekstring,
     ['JoomlaFilter' => 'TRUE']));
    ['ZoekLimiet'    => $ZoekLimiet,]
Output positief:
     ['Groepering'     => $Groepering,]
     ['ServerID'       => gethostname(),]  
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
+---------------------+-----------------------------------------+
| ZoekMethode        |  ZoekString                            |
+---------------------+-----------------------------------------+
| achternaam          | (eerste deel van) de naam              |
| postcode            | (eerste deel van) postcode              |
| lidnummer          | volledig lidnummer                      |
| emailadres          | (eerste deel van) e-mail adres          |
| gebruikersnaam     | (eerste deel van) de login naam        |
| pseudoniem          | (eerste deel van) het pseudoniem        |
| opgezegde_leden    | YYYYMMDD tot waar gezocht moet worden  |
| uitgeschreven_leden | YYYYMMDD tot waar gezocht moet worden  |
| overleden_leden    | YYYYMMDD tot waar gezocht moet worden  |
| niet_leden          | het volledige niet-lid lidnummer        |
+---------------------+-----------------------------------------+
 
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'GeefLocaties',
     'Action'     => 'ZoekHCCLid',
     'Status'       => 'TRUE',
     'Status'     => 'TRUE',
     'Message'      => 'Locaties opgevraagd',
     'Message'    => 'Gebruiker(s) gevonden',
     'Locaties'    => $locaties,
    'ZoekMethode' => $ZoekMethode,
  ['JoomlaFilter' => $JoomlaFilter]);
  ['ExtraInfo'  => 'Zoekopdracht afgebroken, Y van Z getoond',]
    'Results'    => array(
      'hccLidnummer'      => $hccLidnummer,
      'hccBeginDatum'    => $hccBeginDatum,
      'hccEindDatum'      => $hccEindDatum,
      'sn'                => $sn,
      'givenName'        => $givenName,
      'hccGeslacht'       => $hccGeslacht,
      'hccStraatnaam'     => $hccStraatnaam,
      'hccHuisnummer'    => $hccHuisnummer
      'hccHuisToevoeging' => $hcchuisToevoeging,
      'hccPostcode'      => $hccPostcode,
      'hccWoonplaats'    => $hccWoonplaats,
      'hccLand'          => $hccLand,
      'hccTelefoon'      => $hccTelefoon,
      'hccMobiel'        => $hccMobiel,
      'mail'              => $mail,
      'mailHccnet'        => $mailHccnet,
      'hccIG'            => $hccIG,
      'hccRol'            => $hccRol,
      'hccLogin'          => $hccLogin,
      'hccPseudoniem'     => $hccPseudoniem,
      'ProfielBekend'    => 'TRUE' | 'FALSE'])*);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'   => 'GeefLocaties',
     'Action' => 'ZoekHCCLid',
     'Status'   => 'FALSE',
     'Status' => 'FALSE',
     'Message'  => 'Locaties niet beschikbaar',
     'Message' => 'Gebruiker niet gevonden');
     'ExtraInfo' => 'Geen locaties gevonden voor groepering $hccGroepering');
   $reply = array(
    'Action'  => 'ZoekHCCLid',
    'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials');


// A.8 Registreer een niet-hcclid als bezoeker tijdens een bijeenkomst
// ** t.b.v. beheer.hcc.nl **
// (authenticatie op basis van AccountNaam en AccountCode)
// A.3 Zoek alle bij de query passende hcc leden van deze groepering
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
// (authenticatie op basis van AccountNaam en AccountCode of token)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'RegistreerGast',
     'ZoekGroeperingsLid',
     array(
     array(
       'AccountNaam'   => $lidnr,       // credentials
       'AccountNaam' => $lidnr,
      'AccountCode'   => $AccountCode, // credentials
    ['AccountCode' => $AccountCode,]
      'token'         => $token,       // credentials
    ['token'       => $token,]
       'Bijeenkomst'   => $groepering,
       'Groepering' => $groepering,
       'geslacht'     => $geslacht,
       'ZoekMethode' => $ZoekMethode,
       'naam'         => $naam,
       'ZoekString' => $zoekstring,
      'mail'          => $mail,
     ['ZoekLimiet' => $ZoekLimiet,]
      'postcode'     => $postcode,
     ['Bijeenkomst' => $Bijeenkomst,] // Alleen voor gebruik op de
      'huisnummer'   => $huisnummer,
                                      // bijeenkomsten aanwezigheidsregistratie pagina
      'buitenland'    => $buitenland,
     ['ServerID'   => gethostname(),]  
     ['nietLidNummer' => $nietLidNummer,]
     ['SiteID'     => $siteID,]
    ['instructies'  => $instructies],
     ['RemoteID'   => $remoteIPaddress]));
     ['ServerID'     => gethostname(),]  
+---------------------+-----------------------------------------+
     ['SiteID'       => $siteID,]
| ZoekMethode        |  ZoekString                            |
     ['RemoteID'     => $remoteIPaddress]));
+---------------------+-----------------------------------------+
| achternaam          | (deel van) de naam                      |
| postcode            | (eerste deel van) postcode              |
| lidnummer          | volledig lidnummer                      |
| nieuwe_leden        | YYYYMMDD vanaf waar gezocht moet worden |
| opgezegde_leden    | YYYYMMDD tot waar gezocht moet worden  |
| uitgeschreven_leden | YYYYMMDD tot waar gezocht moet worden  |
| overleden_leden    | YYYYMMDD tot waar gezocht moet worden  |
| kaderleden          | n.v.t.                                  |
+---------------------+-----------------------------------------+
 
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => $aanroep,
     'Action'   => 'ZoekGroeperingsLid',
     'Status' => 'TRUE',
     'Status'   => 'TRUE',
     'Message' => 'Niet-lid als bezoeker geregistreerd',
     'Message'  => 'Gebruiker(s) gevonden',
     'Result'  => $result_array);
  ['ExtraInfo' => 'Zoekopdracht afgebroken, Y van Z getoond',]
 
     'Results'  =>
// A.9 Geef het array met alle locatienamen
      [array(
// (geen authenticatie)
        'hccLidnummer'  => $hccLidnummer,
  $request = xmlrpc_encode_request(
        'hccBeginDatum' => $hccBeginDatum,
    'GeefLocatieNamen',
        'hccEindDatum'  => $hccEindDatum,
    array(
        'cn'            => $cn,
    ['ServerID'     => gethostname(),]
        'sn'            => $sn,
    ['SiteID'       => $siteID,]
        'givenName'    => $givenName,
    ['RemoteID'     => $remoteIPaddress]));
        'hccAchternaam' => $hccAchternaam,
Output positief:
        'hccTussenVoegsels => hccTussenVoegsels, 
  $reply = array(
        'hccGeslacht'   => $hccGeslacht,
    'Action'  => 'GeefLocatieNamen',
        'hccStraatnaam' => $hccStraatnaam,
    'Status'   => 'TRUE',
        'hccHuisnummer' => $hccHuisnummer,
    'Message'  => 'Locaties opgevraagd',
        'hccPostcode'  => $hccPostcode,
    'Locaties' => $locaties);
        'hccWoonplaats' => $hccWoonplaats,
        'hccLand'      => $hccLand,
        'hccTelefoon'  => $hccTelefoon,
        'hccMobiel'     => $hccMobiel,
        'mail'         => $mail,
        'mailHccnet'   => $mailHccnet,
        'hccKaderMail'  => $hccKaderMail,
        'hccRegio'     => $hccRegio,
        'hccIG'        => $hccIG,
        'hccRol'        => $hccRol,
        'hccLogin'      => $hccLogin,
        'hccPseudoniem' => $hccPseudoniem)]*));
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'   => 'GeefLocatieNamen',
     'Action' => 'ZoekGroeperingsLid',
     'Status'   => 'FALSE',
     'Status' => 'FALSE',
     'Message'   => 'Locatienamen niet beschikbaar',
     'Message' => 'Gebruiker(s) niet gevonden' | 'Onjuiste credentials');
    'ExtraInfo' => 'Geen locatienamen gevonden');


// A.10 Schrijf een niet-lid in op een of meerdere bulletins
// ** t.b.v. administreren van bijeenkomsten **
//     Deze aanroep mag *ook* worden gebruikt om een wel-lid in te schrijven.
// A.4 Lid bezoekt bijeenkomst
//     Voorwaarde is dat bewezen is dat er controle bestaat over het opgegeven email adres
// (authenticatie op basis van AccountNaam en AccountCode of token)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'SchrijfNietlidInOpBulletin',
     'LidBezoektBijeenkomst',
     array(
     array(
      'beheerLogin'   => $beheerLogin,   // xmluser
    ['JoomlaToken' => $JoomlaToken,]
       'beheerPassword' => $beheerPassword, // xml password
       'AccountNaam' => $lidnr,
      'hccOptin’      => $hccOptin,      // bulletin(s) waarop ingeschreven wordt (komma gescheiden)
    ['AccountCode' => $AccountCode,]
      'hccOptinSource’ => $hccOptinSource, // site waar aanmelding vandaan komt
     ['token'       => $token,]
      'Email'         => $Email,         // niet-lid: email adres
      'Bijeenkomst' => $Bijeenkomst, // groepering die deze bijeenkomst organiseert
      'Naam'          => $Naam,          // niet-lid: naam
      'hccLidnr'   => $hccLidnr,    // lid dat aanwezig gemeld moet worden
     ['hccLidNummer'   => $hccLidNummer,] // optioneel: ik ben lid, dit is mijn lidnummer
     ['correctie'   => $hccLidnr,]   // lid dat gecorrigeerd moet worden
    ['Postcode'       => $Postcode,]      // optioneel: niet-lid: postcode
     ['ServerID'   => gethostname(),]  
    ['Huisnummer'     => $Huisnummer,]   // optioneel: niet-lid: huisnummer
     ['SiteID'     => $siteID,]
     ['hccGeslacht'   => $hccGeslacht], // optioneel: niet-lid: geslacht (M/V/O)
     ['RemoteID'   => $remoteIPaddress]));
     ['ServerID'       => gethostname(),]  
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'   => 'SchrijfNietlidInOpBulletin',
     'Action' => 'LidBezoektBijeenkomst',
     'Status'   => 'TRUE',
     'Status' => 'TRUE',
     'Message'  => 'Inschrijving op bulletin gelukt',
     'Message' => 'Bezoeker weggeschreven',
    'Results' => array(
      // info van deze bezoeker
      'cn'              => $cn,                // cn (Verbeek, H.J.)
      'hccGeslacht'      => $hccGeslacht,      // hccGeslacht van de bezoeker
      'groeperingslid'  => $groeperingslid,    // TRUE of FALSE: is deze persoon lid van deze groepering
      'mijnGroeperingen' => $mijnGroeperingen,  // komma-gescheiden lijst (regio, [hccIG]*)
      'aantalBezoeken'  => $aantalBezoeken,    // hoe vaak heeft dit lid deze bijeenkomst bezocht
      // info van de bijeenkomst
      'AantalBezoekers'  => $AantalBezoekers);  // aantal bezoekers van deze bijeenkomst
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'   => 'SchrijfNietlidInOpBulletin',
     'Action' => 'LidBezoektBijeenkomst',
     'Status'   => 'FALSE',
     'Status' => 'FALSE',
     'Message'   => 'Onjuiste credentials' |
     'Message' => 'Onjuiste credentials');
                  'Gegevenscombinatie onjuist',
    'ExtraInfo' => 'Invalid DN syntax'    |
                  'Invalid credentials')');
 
// ** Drupal www.hcc.nl **
// ** t.b.v. daily cron job  **
// C.1 Vraag de lijst met uitgeschreven leden op
//    Dit kan beperkt worden tot een bepaalde regio of interessegroep
//    Daarnaast kan het tijdvak waarin gezocht wordt vrij gekozen worden
//    (gesteld dat de LDAP database nog leden uit die periode bevat)
//    Antwoord: lijst met (lidnummer, hccLogin, sn,
//                          datum einde lidmaatschap (formaat:YYYYMMDD))
 
==> GeefUitgeschrevenLeden <== (oud: GeefOpgezegdeLeden)


// ** t.b.v. administreren van bijeenkomsten en opvragen van lidgegevens **
// A.5 Vraag Lidgegevens token aan (geldig voor dit lid, en deze groepering, op deze datum)
// Als geen datum gegeven is, dan is het token vandaag geldig
// (authenticatie op basis van AccountNaam en AccountCode)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefUitgeschrevenLeden',
     'VraagLidgegevensTokenAan',
     array(
     array(
       'beheerLogin'   => $beheerLogin,
       'AccountNaam' => $lidnr,
       'beheerPassword' => $beheerPassword,
       'AccountCode' => $AccountCode,
       'hccRegio'       => $hccRegio,   // of leeg
       'hccLidnr'   => $hccLidnummer, // vraag het token voor dit lid aan
       'hccIg'         => $hccIg,       // of leeg
       'groepering' => $groepering,   // zoek binnen deze groepering
      'datum_vanaf'   => $datum_sinds, // YYYY-MM-DD of YYYYMMDD of leeg (leeg: 3 dagen geleden)
    ['datum'       => $datum,]      // optioneel: datum YYYY-MM-DD, anders: vandaag
      'datum_tot'      => $datum_tot,   // YYYY-MM-DD of YYYYMMDD of leeg (leeg: vandaag)
     ['ServerID'   => gethostname(),]  
     ['ServerID'       => gethostname(),]  
     ['SiteID'     => $siteID,]
     ['SiteID'         => $siteID,]
     ['RemoteID'   => $remoteIPaddress]));
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'     => 'GeefUitgeschrevenLeden',
     'Action'     => 'VraagLidgegevensTokenAan',
     'Status'     => 'TRUE',
     'Status'     => 'TRUE',
     'Message'    => 'Uitgeschreven leden',
     'Message'    => 'Token opgevraagd',
  ['hccRegio'    => $hccRegio,]
    'groepering' => $Groepering,
  ['hccIg'       => $hccIg,]
    'token'      => $token,
  ['datum_vanaf' => $datum_vanaf,]
    'sn'        => $sn);
  ['datum_tot'   => $datum_tot,]
  ['Results' => array(
     [array(
        'hccLogin'              => $hccLogin,
        'hccLidNummer'           => $hccLidnummer,
         'sn'                    => $sn,
        'DatumEindeLidmaatschap' => $DatumEindeLidmaatschap)]*));
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'GeefUitgeschrevenLeden',
     'Action'  => 'VraagLidgegevensTokenAan',
     'Status'  => 'FALSE',
     'Status'  => 'FALSE',
     'Message' => 'Onjuiste credentials'));
     'Message' => 'Onjuiste credentials');
</pre>


=== HCCpartner aanroepen ===
// ** t.b.v. administreren van bijeenkomsten en opvragen van lidgegevens **
(interface versie 1)<br>
// A.6 Toon bezoekersoverzicht
(oude interface, niet meer gebruiken!)
// (authenticatie op basis van lidnummer en bezoekersregistratie token)
 
<pre>
// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// D.1 Controleer of iemand lid is op basis van lidnummer en postcode
//    Antwoord: TRUE of FALSE
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'HCCpartner',
     'GeefBezoekersOverzicht',
     array('ControleerHCCLidmaatschap',
     array(
    array('partnerLogin',   $partnerLogin),
    ['JoomlaToken' => $JoomlaToken,]
    array('partnerPassword', $partnerPassword),
      'AccountNaam' => $lidnr,
    array('hccLidnummer',   $hcclidnummer),
      'token'      => $token,
    array('postcode',       $postcode)));
      'Bijeenkomst' => $Bijeenkomst, // groepering die deze bijeenkomst organiseert
    ['ServerID'    => gethostname(),]
    ['SiteID'     => $siteID,]
    ['RemoteID'    => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'HCCpartner',
     'Action'    => 'GeefBezoekersOverzicht',
     array('Action', 'ControleerHCCLidmaatschap'),
     'Status'    => 'TRUE',
     array('Status', 'TRUE'));
    'Message'   => 'Bezoekersoverzicht opgevraagd',
     'Bezoekers' => $bezoekers,
  ['Locatie'   => $Locatie]);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'HCCpartner',
     'Action' => 'GeefBezoekersOverzicht',
    array('Action', 'ControleerHCCLidmaatschap'),
     'Status' => 'FALSE',
     array('Status', 'FALSE'));
    'Message' => 'Onjuiste credentials' | 'Geen bijeenkomst gevonden' | 'Geen bezoekers gevonden');
  $reply = array(
 
    'HCCpartner',
// A.7 Geef het array met alle locaties
    array('Action''ControleerHCCLidmaatschap'),
// (of beperk dit tot de locaties van de groepering $Groepering)
    array('Status',  'FALSE'),
// Desgewenst worden alle resultaten waarbij hccToonInJoomla aan staat onderdrukt
    array('Message', 'Onjuiste credentials'));
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
 
// Desgewenst worden alle resultaten waarbij ToonOpKaderNet aan staat onderdrukt
// onbekende aanroep
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
// (geen authenticatie)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'HCCpartner',
    'GeefLocaties',
     array(
    array(
      'OnbekendeAanroep',
    ['Groepering'    => $hccGroepering,]
       array('parameter', $iets)));
    ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
     ['RemoteID'       => $remoteIPaddress,]
     ['JoomlaFilter'  => '' | 'TRUE',]
    ['KadernetFilter' => '' | 'TRUE']);
Output positief:
  $reply = array(
    'Action'        => 'GeefLocaties',
    'Status'        => 'TRUE',
    'Message'       => 'Locaties opgevraagd',
    'Locaties'      => $locaties,
  ['JoomlaFilter'  => 'TRUE',]
  ['KadernetFilter' => 'TRUE']);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'HCCpartner',
     'Action'        => 'GeefLocaties',
     array('Action', 'OnbekendeAanroep'),
     'Status'        => 'FALSE',
     array('Status', 'FALSE'),
    'Message'        => 'Locaties niet beschikbaar',
    array('Message', 'Opdracht onbekend'));
     'ExtraInfo'      => 'Geen locaties gevonden voor groepering $hccGroepering',
</pre>
  ['JoomlaFilter'  => 'TRUE',]
  ['KadernetFilter' => 'TRUE']);


=== HCCpartners aanroepen ===
// A.8 Registreer een niet-hcclid als bezoeker tijdens een bijeenkomst
(interface versie 2)
// (authenticatie op basis van AccountNaam en AccountCode)
 
<pre>
// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// D.1 Controleer of iemand lid is op basis van lidnummer en postcode
//    Antwoord: TRUE of FALSE
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'HCCpartners',
     'RegistreerGast',
     array(
     array(
       'Action'         => 'ControleerHCCLidmaatschap',
       'AccountNaam'  => $lidnr,        // credentials
       'partnerLogin'   => $partnerLogin,
      'AccountCode'  => $AccountCode,  // credentials
       'partnerPassword' => $partnerPassword,
      'token'         => $token,        // credentials
       'hccLidnummer'   => $hcclidnummer,
      'Bijeenkomst'   => $groepering,
       'postcode'       => $postcode,
       'geslacht'     => $geslacht,
     ['ServerID'        => gethostname(),]  
       'naam'         => $naam,
     ['SiteID'         => $siteID,]
       'mail'         => $mail,
     ['RemoteID'       => $remoteIPaddress]));
       'postcode'     => $postcode,
Output positief:
      'huisnummer'    => $huisnummer,
      'buitenland'    => $buitenland,
    ['nietLidNummer' => $nietLidNummer,]
    ['instructies'  => $instructies,]
     ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
    ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => $aanroep,
    'Status'  => 'TRUE',
    'Message' => 'Niet-lid als bezoeker geregistreerd',
    'Result'  => $result_array);
 
// A.9 Geef het array met alle locatienamen
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefLocatieNamen',
    array(
    ['ServerID'          => gethostname(),]  
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress,]
    ['JoomlaFilter'      => '' | 'TRUE',]
    ['KadernetFilter'    => '' | 'TRUE']));
    ['KaderMutatieFilter' => '' | 'TRUE']));
 
Output positief:
   $reply = array(
   $reply = array(
     '0'     => 'HCCpartners',
     'Action'            => 'GeefLocatieNamen',
     'Action' => 'ControleerHCCLidmaatschap',
    'Status'             => 'TRUE',
     'Status' => 'TRUE',
     'Message'           => 'Locaties opgevraagd',
   ['ExtraInfo' => 'groepering=$groepering']); // als de partner beperkt is tot 1 groepering
     'Locaties'          => $locaties,
  ['JoomlaFilter'       => 'TRUE',]
   ['KadernetFilter'     => 'TRUE',]
  ['KaderMutatieFilter' => 'TRUE']));
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     '0'     => 'HCCpartners',
     'Action'             => 'GeefLocatieNamen',
     'Action' => 'ControleerHCCLidmaatschap',
     'Status'             => 'FALSE',
     'Status' => 'FALSE');
     'Message'           => 'Locatienamen niet beschikbaar',
  $reply = array(
     'ExtraInfo'         => 'Geen locatienamen gevonden',
     '0'       => 'HCCpartners',
  ['JoomlaFilter'       => 'TRUE',]
    'Action' => 'ControleerHCCLidmaatschap',
  ['KadernetFilter'     => 'TRUE',]
    'Status' => 'FALSE',
  ['KaderMutatieFilter' => 'TRUE']));
    'Message' => 'Onjuiste credentials');
 
 
// A.10 Schrijf een niet-lid in op een bulletin
// onbekende aanroep
// (2019.12.05: wordt actief gebruikt in Joomla module)
//      Deze aanroep mag *ook* worden gebruikt om een wel-lid in te schrijven.
//      Voorwaarde is dat bewezen is dat er controle bestaat over het opgegeven email adres
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'HCCpartners',
     'SchrijfNietlidInOpBulletin',
     array(
     array(
       'Action'    => 'OnbekendeAanroep',
       'beheerLogin'    => $beheerLogin,    // xml-rpc user
       'parameter' => $iets));
      'beheerPassword' => $beheerPassword, // xml-rpc password
Output negatief:
      'hccOptin'      => $hccOptin,      // bulletin waarop ingeschreven wordt
      'hccOptinSource' => $hccOptinSource, // site waar aanmelding vandaan komt
      'Email'          => $Email,          // niet-lid: email adres
      'Naam'          => $Naam,          // niet-lid: naam
    ['hccLidNummer'   => $hccLidNummer,]  // optioneel: ik ben lid, dit is mijn lidnummer
    ['Postcode'       => $Postcode,]      // optioneel: niet-lid: postcode
    ['Huisnummer'     => $Huisnummer,]    // optioneel: niet-lid: huisnummer
    ['hccGeslacht'    => $hccGeslacht,] // optioneel: niet-lid: geslacht (M/V/O)
    ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
    ['RemoteID'      => $remoteIPaddress]));
Output positief:
   $reply = array(
   $reply = array(
     '0'       => 'HCCpartners',
     'Action'   => 'SchrijfNietlidInOpBulletin',
     'Action' => 'OnbekendeAanroep',
    'Status'    => 'TRUE',
     'Status' => 'FALSE',
    'Message'  => 'Inschrijving op bulletin gelukt');
     'Message' => 'Opdracht onbekend');
Output negatief:
</pre>
  $reply = array(
 
     'Action'   => 'SchrijfNietlidInOpBulletin',
=== HCC-kader aanroepen ===
     'Status'   => 'FALSE',
 
     'Message'   => 'Onjuiste credentials' |
<pre>
                  'Gegevenscombinatie onjuist',
// ** t.b.v. aanpassen kadernet e-mail wachtwoord door de gebruiker **
    'ExtraInfo' => 'Invalid DN syntax'    |
// E.1 Pas het kadernet e-mail wachtwoord aan
                  'Invalid credentials');
// op basis van hccLidnummer en hccCode (t.b.v. wachtwoord-aanpassen kadernet procedure)
// (authenticatie op basis van hccLidnr en hccCode)
 
==> PasKaderWachtwoordAan <== (oud: HCC-kader / WijzigGebruikersGegevens)


// ** t.b.v. Joomla module Bas
// A.12 GeefAlleBulletins
// (geen authenticatie)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'PasKaderWachtwoordAan',
     'GeefAlleBulletins',
     array(
     array(
      'hccLidnr'           => $hccLidnr,
    ['ServerID'     => gethostname(),]
      'hccCode'             => $hccCode,
    ['SiteID'       => $siteID,]
      'nieuw_kaderPassword' => $nieuw_kaderPassword,
    ['RemoteID'     => $remoteIPaddress]));
    ['ServerID'           => gethostname(),]
Output positief:
    ['SiteID'             => $siteID,]
  $reply = array(
    ['RemoteID'           => $remoteIPaddress]));
    'Action'          => 'GeefAlleBulletins',
    'Status'         => 'TRUE',
    'Message'         => 'Bulletins opgevraagd',
    'bulletins'       => $bulletins);


// ** t.b.v. aanpassen kadernet e-mail wachtwoord door de gebruiker **
// ** t.b.v. Joomla module Bas
// E.2 Pas het kadernet e-mail wachtwoord aan
// A.13 ExpandeerPostcode
// op basis van hccLogin en userpassword (t.b.v. wachtwoord-aanpassen kadernet procedure)
// (geen authenticatie)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'PasKaderWachtwoordAan',
     'ExpandeerPostcode',
     array(
     array(
       'hccLogin'           => $hccLogin,
       'postcode'     => $postcode,
      'userPassword'        => $userPassword,
       'huisnummer'   => $huisnummer,
       'nieuw_kaderPassword' => $nieuw_kaderPassword,
     ['ServerID'     => gethostname(),]
     ['ServerID'           => gethostname(),]  
     ['SiteID'       => $siteID,]
     ['SiteID'             => $siteID,]
     ['RemoteID'     => $remoteIPaddress]));
     ['RemoteID'           => $remoteIPaddress]));
 
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'PasKaderWachtwoordAan',
     'Action'         => 'ExpandeerPostcode',
     'Status'       => 'TRUE',
     'Status'         => 'TRUE',
     'Message'     => 'Gebruikersgegevens gewijzigd',
     'Message'         => 'Postcode opgevraagd',
     'cn'           => $cn,
     'detailgegevens' => $detailgegevens);
    'hccKaderMail' => $hccKaderMail);
Output negatief:
  $reply = array(
    'Action'  => 'PasKaderWachtwoordAan',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');
 
// ** t.b.v. authenticatie op de kadersite of andere kader-gerelateerde sites **
// F.1 Controleer of dit een kaderlid is
// (authenticatie op basis van hccLidnr en hccCode)
 
==> IsKaderLid <== (oud: HCC-kader / ControleerKaderlid)


// ** t.b.v. Joomla module Bas
// A.25 UpdateNAW
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsKaderLid',
     'UpdateNAW',
     array(
     array(
       'hccLidnr' => $hccLidnr,
       'hccLidnr'     => $hcclidnr,
       'hccCode' => $hccCode,
      'JoomlaToken'  => $JoomlaToken,
     ['ServerID' => gethostname(),]
       'geslacht'     => $geslacht,
    ['SiteID'   => $siteID,]
      'postcode'     => $postcode,
    ['RemoteID' => $remoteIPaddress]));
      'huisnummer'    => $huisnummer,
      'toevoeging'    => $toevoeging,
      'straat'        => $straat,
      'woonplaats'    => $woonplaats,
      'landcode'      => $landcode,
      'email'        => $email,
      'voornaam'      => $voornaam,
      'voorletters'  => $voorletters,
      'hccTelefoon'  => $hccTelefoon,
      'hccMobiel'    => $hccMobiel,
      'ServerID'     => gethostname(),
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'          => 'UpdateNAW',
    'Status'          => 'TRUE',
    'Message'        => 'Contactgegevens bijgewerkt');


// F.2 Controleer of dit een kaderlid is
// ** t.b.v. Joomla module Bas
// (authenticatie op basis van hccLogin en userPassword)
// A.18 NormaliseerTelefoon
// (geen authenticatie)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsKaderLid',
     'NormaliseerTelefoon',
     array(
     array(
       'hccLogin'     => $hccLogin,
       'hccLand'       => $hccLand,
       'userPassword' => $userPassword,
       'ServerID'       => gethostname(),
    ['ServerID'     => gethostname(),]
      'SiteID'         => $siteID,
    ['SiteID'       => $siteID,]
      'RemoteID'       => $remoteIPaddress));
    ['RemoteID'     => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'NormaliseerTelefoon',
    'Status'          => 'TRUE',
    'Message'        => 'Telefoonnummer genormaliseerd',
    'Telefoonnummer'  => $Telefoonnummer);


// F.3 Controleer of dit een kaderlid is (t.b.v. ledenraad module op kadersite)
// ** t.b.v. Joomla module Bas
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// A.20 UpdateMobiel
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
//  Als hccLidnr leeg  is, dan wordt hccLogin of hccPseudoniem gebruikt om het juiste record te zoeken
//  1 van 3 velden MOET aanwezig zijn
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsKaderLid',
     'UpdateMobiel',
     array(
     array(
       'beheerLogin'   => $beheerLogin,
       'hccLidnr'     => $hcclidnr,
       'beheerPassword' => $beheerPassword,
       'JoomlaToken'   => $JoomlaToken,
    ['hccLidnr'       => $hccLidnr,]
      'hccMobiel'     => $hccMobiel,
    ['hccLogin'       => $hccLogin,]
       'ServerID'      => gethostname(),
    ['hccPseudoniem' => $hccPseudoniem],
      'SiteID'       => $siteID,
     ['ServerID'      => gethostname(),]
      'RemoteID'     => $remoteIPaddress));
    ['SiteID'         => $siteID,]
Output positief:
    ['RemoteID'       => $remoteIPaddress]));
 
Output positief (F.1 en F.2):
   $reply = array(
   $reply = array(
     'Action'          => 'IsKaderLid',
     'Action'          => 'UpdateMobiel',
     'Status'          => 'TRUE',
     'Status'          => 'TRUE',
     'Message'        => 'Is kaderlid',
     'Message'        => 'Mobiel nummer bijgewerkt');
    'hccLidnr'        => $hccLidnr,
    'cn'              => $cn,
    'sn'              => $sn,
    'hccRol'          => $hccRol,
    'mail'            => $mail,
    'mailHccnet'      => $mailHccnet,
    'hccKaderMail'    => $hccKaderMail,
    'hccKaderForward' => $hccKaderForward);


Voor F.3 is het antwoord uitgebreider:
// ** t.b.v. Joomla module Bas
// A.21 HaalIGBedragenOp
//      Geef alle IG's waar je zelf lid van kunt worden, inclusief het bijbehorende bedrag
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'HaalIGBedragenOp',
    array(
    ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
    ['RemoteID'      => $remoteIPaddress]));
Output positief:
   $reply = array(
   $reply = array(
     'Action'          => 'IsKaderLid',
     'Action'          => 'HaalIGBedragenOp',
     'Status'          => 'TRUE',
     'Status'          => 'TRUE',
     'Message'        => 'Is kaderlid',
     'Message'        => 'Interessegroepen en bedragen opgevraagd',
    'hccLidnr'        => $hccLidnr,
     'details'         => $details);
    'hccLogin'        => $hccLogin,
 
    'hccPseudoniem'  => $hccPseudoniem,
// ** t.b.v. Joomla module Bas
    'cn'              => $cn,
// A.22 HaalTariefGroepenOp
    'sn'              => $sn,
    'hccRol'          => $hccRol,
    'mail'            => $mail,
    'mailHccnet'     => $mailHccnet,
     'hccKaderMail'   => $hccKaderMail,
    'hccKaderForward' => $hccKaderForward);
 
Output negatief:
  $reply = array(
    'Action'  => 'IsKaderLid',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Is geen kaderlid');
 
// ** t.b.v. lijsten op de kadernet server en de kantoor-beheerpagina **
// F.4 Vraag alle groeperingen op
// Desgewenst worden alle resultaten waarbij hccToonInJoomla aan staat onderdrukt
// (geen authenticatie)
// (geen authenticatie)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefAlleGroeperingen',
     'HaalTariefGroepenOp',
     array(
     array(
     ['ServerID'      => gethostname(),]  
     ['ServerID'      => gethostname(),]  
     ['SiteID'        => $siteID,]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress],
     ['RemoteID'      => $remoteIPaddress]));
    ['JoomlaFilter' => 'TRUE']));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'GeefAlleGroeperingen',
     'Action'         => 'HaalTariefGroepenOp',
     'Status'       => 'TRUE',
     'Status'         => 'TRUE',
     'Message'     => 'Lijst met groeperingen opgevraagd',
     'Message'         => 'Tariefgroepen opgevraagd',
     'Result'       => $groeperingen,
     'details'         => $details);
  ['JoomlaFilter' => $JoomlaFilter]);


// ** t.b.v. lijsten op de kadernet server en de kantoor-beheerpagina **
// ** t.b.v. Joomla module Bas
// F.5 Vraag alle kaderrollen op
// A.23 PasInteressegroepAan
// Desgewenst worden alle resultaten waarbij hccToonInJoomla aan staat onderdrukt
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'PasInteressegroepAan',
    array(
      'hccLidnr'      => $hcclidnr,
      'JoomlaToken'  => $JoomlaToken,
    ['nieuw'        => $IG_lijst_nieuw,]
    ['weg'          => $IG_lijst_weg,]
    ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
    ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'PasInteressegroepAan',
    'Status'          => 'TRUE',
    'Message'        => 'IG keuzen aangepast');
 
// ** t.b.v. Joomla module Bas
// A.24 GeefSSOUrls
// (geen authenticatie)
// (geen authenticatie)
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefAlleKaderRollen',
     'GeefSSOUrls',
     array(
     array(
     ['ServerID'      => gethostname(),]  
     ['ServerID'      => gethostname(),]
     ['SiteID'        => $siteID,]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress],
     ['RemoteID'      => $remoteIPaddress]));
    ['JoomlaFilter' => 'TRUE']));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'GeefAlleKaderRollen',
     'Action'         => 'GeefSSOUrls',
     'Status'       => 'TRUE',
     'Status'         => 'TRUE',
     'Message'     => 'Lijst met kaderrollen opgevraagd',
     'SSO_urls'       => $sso_urls,
     'Result'       => $kaderrollen,
     'Message'         => 'Single Sign On URLs opgevraagd');
  ['JoomlaFilter' => $JoomlaFilter]);


// F.6 - Wijzig 1 kaderrol van een gebruiker
// ** t.b.v. de verenigingszaken beheer pagina **
// (Enkel nog van belang voor de demo- en acceptatieomgeving)
// A.26 Verwijder een niet-lid record
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'WijzigHccRol',
     'VerwijderNietLid',
     array(
     array(
       'beheerLogin'    => $beheerLidnr,
       'beheerLogin'    => $beheerLogin,   // beheerder hccLidnummer
       'beheerPassword' => $accountCode,
       'beheerPassword' => $beheerPassword, // beheerder hccCode
       'hccLidnr'      => $hccLidnr,
       'hccLidnr'      => $hccLidnummer,   // het te verwijderen niet-lid nummer
      'kaderrol'      => $groepering . '#' . $rol,
     ['ServerID'      => gethostname(),]
      'waarde'        => $waarde,
     ['ServerID'      => gethostname(),]  
     ['SiteID'        => $siteID,]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'WijzigHccRol',
     'Action'     => 'VerwijderNietLid',
     'Status'       => 'TRUE',
     'Status'     => 'TRUE',
     'Message'       => 'Kaderrol aangepast',
     'Message'     => 'Niet-lid record verwijderd',
    'sn'           => $sn,
    'nieuwKaderlid' => 'TRUE'|'FALSE');


// ** t.b.v. authenticatie op de kadersite of andere kader-gerelateerde sites **
Output negatief:
// F.7 Controleer of dit een kaderlid is uit de opgegeven groepering
  $reply = array(
//
    'Action'  => 'VerwijderNietLid',
// Aanvullende controle, die uitgevoerd kan worden nadat gecontroleerd
    'Status'  => 'FALSE',
// is dat het inderdaad om een kaderlid gaat
    'Message' => 'Niet-lid record niet gevonden');
// (geen authenticatie) ????? WAAROM ???? !! 2015.05.06 wordt niet aangeroepen !!
  $reply = array(
// Als relaxed=TRUE, dan wordt een ad-interim rol gelijk behandeld als een gewone rol
    'Action' => 'VerwijderNietLid',
// (dan is dus VZAI gelijk aan VZ)
    'Status' => 'FALSE',
    'Message' => 'Onjuiste credentials');


==> IsGroeperingsKaderlid <==
// ** HenZ **
// ** t.b.v. daily cron job  **
// ** t.b.v. dagelijkse opschoon jobs Joomla template sites **
// C.1 Vraag de lijst met uitgeschreven leden op
//    Dit kan beperkt worden tot een bepaalde regio of interessegroep
//    Daarnaast kan het tijdvak waarin gezocht wordt vrij gekozen worden
//    (gesteld dat de LDAP database nog leden uit die periode bevat)
//    Antwoord: lijst met (lidnummer, hccLogin, sn,
//                          datum einde lidmaatschap (formaat:YYYYMMDD))


  ==> ?? weghalen ?? <==
==> GeefUitgeschrevenLeden <== (oud: GeefOpgezegdeLeden)


   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsGroeperingsKaderlid',
     'GeefUitgeschrevenLeden',
     array(
     array(
       'username'     => $username,
       'beheerLogin'   => $beheerLogin,
       'valid_groups' => $valid_groups,
       'beheerPassword' => $beheerPassword,
    ['valid_roles' => $valid_roles,]
      'hccRegio'      => $hccRegio,    // of leeg
    ['relaxed'      => TRUE|FALSE],
      'hccIg'          => $hccIg,      // of leeg
     ['ServerID'     => gethostname(),]  
      'datum_vanaf'   => $datum_sinds, // YYYY-MM-DD of YYYYMMDD of leeg (leeg: 3 dagen geleden)
     ['SiteID'       => $siteID,]
      'datum_tot'      => $datum_tot,   // YYYY-MM-DD of YYYYMMDD of leeg (leeg: vandaag)
     ['RemoteID'     => $remoteIPaddress]));
     ['ServerID'       => gethostname(),]  
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action' => 'IsGroeperingsKaderlid',
     'Action'     => 'GeefUitgeschrevenLeden',
     'Status' => 'TRUE',
     'Status'     => 'TRUE',
     'Message' => 'Is groeperingslid');
     'Message'    => 'Uitgeschreven leden',
Output negatief:
  ['hccRegio'   => $hccRegio,]
  $reply = array(
  ['hccIg'      => $hccIg,]
     'Action'  => 'IsGroeperingsKaderlid',
  ['datum_vanaf' => $datum_vanaf,]
    'Status' => 'FALSE');
  ['datum_tot'   => $datum_tot,]
 
  ['Results' => array(
// ** t.b.v. instellen kadernet email forwards **
     [array(
// F.8 Stel de kadermail forward in
        'hccLogin'               => $hccLogin,
 
        'hccLidNummer'           => $hccLidnummer,
==> ZetKaderForward <==
        'sn'                     => $sn,
 
        'DatumEindeLidmaatschap' => $DatumEindeLidmaatschap)]*);
  $request = xmlrpc_encode_request(
    'ZetKaderForward',
    array(
      'hccLogin'         => $hccLogin,
       'userPassword'      => $userPassword,
      'NieuwKaderForward' => $NieuwKaderForward, // mag leeg zijn
    ['ServerID'         => gethostname(),]  
    ['SiteID'           => $siteID,]
     ['RemoteID'          => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action' => 'ZetKaderForward',
    'Status' => 'TRUE',
    'Message' => 'Kadermail forward ingesteld',
    'cn'     => $cn);
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'ZetKaderForward',
     'Action'  => 'GeefUitgeschrevenLeden',
     'Status'  => 'FALSE');
     'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');
</pre>
</pre>


 
=== HCCpartner aanroepen ===
=== HCC-groepering aanroepen ===
(interface versie 1)<br>
(oude interface, niet meer gebruiken!)


<pre>
<pre>
// H.1 controleer of deze gebruiker bestaat, en lid is van de opgegeven groepering(en)
// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// (authenticatie op basis van hccLogin en userPassword)
// D.1 Controleer of iemand lid is op basis van lidnummer en postcode
 
//    Antwoord: TRUE of FALSE
==> HCC-groepering / GebruikerBestaatControle <==
 
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'IsGroeperingsLid',
     'HCCpartner',
     array(
     array('ControleerHCCLidmaatschap',
      'hccLogin'     => $hccLogin,
    array('partnerLogin',    $partnerLogin),
      'userPassword' => $userPassword,
    array('partnerPassword', $partnerPassword),
      'hccGroepering => $hccGroepering, // 1 naam of komma-gescheiden lijst of '*'
     array('hccLidnummer',    $hcclidnummer),
    ['ServerID'     => gethostname(),]
    array('postcode',        $postcode)));
    ['SiteID'       => $siteID,]
    ['RemoteID'     => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'        => 'IsGroeperingsLid',
     'HCCpartner',
     'hccGroepering' => $hccGroepering, // de eerstgevonden groepering
     array('Action', 'ControleerHCCLidmaatschap'),
                                        // (of '*', als wildcard gebruikt wordt)
     array('Status', 'TRUE'));
     'Status'       => 'TRUE',
    'Message'      => 'Gebruikersgegevens gecontroleerd',
    'cn'            => $cn,
  ['hccLidnr'      => $hccLidnr],
  ['mail'          => $mail,]
  ['mailHccnet'    => $mailHccnet,]
  ['givenName'    => $givenName,]
  ['hccGeslacht'  => $hccGeslacht,] // M/V/O
  ['hccAanhef'    => $hccAanhef,]
  ['hccPseudoniem' => $hccPseudoniem,]
  ['hccRol'        => $hccRol]);   // de rollen in deze eerstgevonden groepering
                                    // (of leeg, als wildcard gebruikt wordt)
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action' => 'IsGroeperingsLid',
     'HCCpartner',
     'Status' => 'FALSE',
    array('Action', 'ControleerHCCLidmaatschap'),
     'Message' => 'Onjuiste credentials' | 'Geen groeperingslid');
     array('Status', 'FALSE'));
 
  $reply = array(
=> OUD, NIET MEER GEBRUIKEN. GAAT VERVALLEN <=
    'HCCpartner',
// H.2 Bepaal bij welke groepering een lid behoort op basis van de opgegeven postcode
     array('Action',  'ControleerHCCLidmaatschap'),
// (Alleen voor NL) (geen authenticatie)
    array('Status''FALSE'),
    array('Message', 'Onjuiste credentials'));


// onbekende aanroep
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
    'MatchPostcodeMetRegio',
    'HCCpartner',
    array(
    array(
      'postcode' => $postcode,
      'OnbekendeAanroep',
    ['ServerID' => gethostname(),]
      array('parameter', $iets)));
    ['SiteID'   => $siteID,]
    ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'MatchPostcodeMetRegio',
    'hccRegio' => $hccRegio,
    'postcode' => $postcode));
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'  => 'MatchPostcodeMetRegio',
     'HCCpartner',
     'Status'  => 'FALSE',
    array('Action', 'OnbekendeAanroep'),
     'Message' => 'Onbekende postcode');
     array('Status', 'FALSE'),
 
     array('Message', 'Opdracht onbekend'));
</pre>
</pre>


=== HenZ aanroepen ===
=== HCCpartners aanroepen ===
(interface versie 2)


<pre>
<pre>
 
// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// I.3 Geef de einddatum van een actief dan wel uitgeschreven lid
// D.2 Controleer of iemand lid is op basis van lidnummer en postcode
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
//    Antwoord: TRUE of FALSE
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'GeefhccEindDatum',
     'HCCpartners',
     array(
     array(
       'beheerLogin'    => $beheerLogin,
       'Action'          => 'ControleerHCCLidmaatschap',
       'beheerPassword' => $beheerPassword,
      'partnerLogin'    => $partnerLogin,
       'hccLidnummer'   => $hccLidnummer,
       'partnerPassword' => $partnerPassword,
     ['ServerID'       => gethostname(),]  
       'hccLidnummer'   => $hcclidnummer,
     ['SiteID'         => $siteID,]
      'postcode'        => $postcode,
     ['RemoteID'       => $remoteIPaddress]));
     ['ServerID'       => gethostname(),]  
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
Output positief:
   $reply = array(
   $reply = array(
     'Action'       => 'GeefhccEindDatum',
     '0'     => 'HCCpartners',
     'Status'       => 'TRUE',
     'Action' => 'ControleerHCCLidmaatschap',
     'hccLidnummer' => $hccLidnummer,
     'Status' => 'TRUE',
    'hccLogin'     => $hccLogin,
  ['ExtraInfo' => 'groepering=$groepering']); // als de partner beperkt is tot 1 groepering
    'hccEindDatum' => $hccEindDatum ('yyyymmdd' | ''));
Output negatief:
Output negatief:
   $reply = array(
   $reply = array(
     'Action'   => 'GeefhccEindDatum',
    '0'      => 'HCCpartners',
     'Status'   => 'FALSE',
     'Action' => 'ControleerHCCLidmaatschap',
     'Message'   => 'Gegevenscombinatie onjuist'
     'Status' => 'FALSE');
     'ExtraInfo' => 'Invalid credentials' |
  $reply = array(
                  'Lidnummer niet gevonden'
     '0'       => 'HCCpartners',
  </pre>
     'Action' => 'ControleerHCCLidmaatschap',
 
    'Status=> 'FALSE',
=== Echo test ===
    'Message' => 'Onjuiste credentials');
 
<pre>
 
// t.b.v. controle of de verbinding met de XML-RPC server functioneert
// Eenvoudige echo test


// onbekende aanroep
   $request = xmlrpc_encode_request(
   $request = xmlrpc_encode_request(
     'echo',
     'HCCpartners',
     array(
     array(
       'What'     => $string,
       'Action'   => 'OnbekendeAanroep',
    ['ServerID' => gethostname(),]
      'parameter' => $iets));
    ['SiteID'  => $siteID,]
Output negatief:
    ['RemoteID' => $remoteIPaddress]));
Output positief:
   $reply = array(
   $reply = array(
     'Action'  => 'echo',
    '0'      => 'HCCpartners',
     'Status'  => 'TRUE',
     'Action'  => 'OnbekendeAanroep',
     'Message' => $string);
     'Status'  => 'FALSE',
     'Message' => 'Opdracht onbekend');
</pre>
</pre>


=== HenZ XMLRPC interface ===
=== HCC-kader aanroepen ===
 
Overzicht van XML procedures die bij HenZ draaien
(worden via de Hobbynet XML-RPC server afgehandeld)


<pre>
<pre>
- Action=1
// ** beheer.hcc.nl **
  controleer of een gebruiker bestaat op basis van hcclidnummer en de hash van de hcccode.
// F.2 Controleer of dit een kaderlid is
   (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
// (authenticatie op basis van hccLogin en userPassword)
  Zie 1.1: controleer of een gebruiker bestaat - optie 1
   $request = xmlrpc_encode_request(
 
    'IsKaderLid',
- Action=2
    array(
  wijzig gebruikersnaam en wachtwoord op basis van hcclidnummer en de hash van de hcccode.
      'hccLogin'    => $hccLogin,
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
      'userPassword' => $userPassword,
   (XML-RPC server voert de hccnet XML-call uit, zie 2.1, 2.2 en 2.3)
    ['ServerID'    => gethostname(),]
    ['SiteID'      => $siteID,]
    ['RemoteID'    => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'IsKaderLid',
    'Status'          => 'TRUE',
    'Message'        => 'Is kaderlid',
    'hccLidnr'        => $hccLidnr,
    'cn'              => $cn,
    'sn'              => $sn,
    'hccRol'          => $hccRol,
    'mail'            => $mail,
    'mailHccnet'      => $mailHccnet,
    'hccKaderMail'    => $hccKaderMail,
    'hccKaderForward' => $hccKaderForward);
Output negatief:
   $reply = array(
    'Action'  => 'IsKaderLid',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Is geen kaderlid');


- Action=3
// ** t.b.v. lijsten op de kadernet server en de kantoor-beheerpagina **
  controleer of een gebruikersnaam bestaat
// F.4 Vraag alle groeperingen op
   (XML-RPC server voert de hccnet XML-call uit, zie 8.2)
// Het is mogelijk om een groepering te onderdrukken, als er in LDAP '''een''' waarde in een opgegeven attribuur aanwezig is.
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
//  JoomlaFilter            : attribuut 'hccToonInJoomla'
//  ToonInOverzichtenFilter : attribuut 'hccToonInOverzichten'
//  KadernetFilter          : attribuut 'hccToonOpKaderNet'
//  BulletinsFilter        : attribuut 'hccBulletins'
//  EmailFilter            : attribuut 'hccFunctionalEmail'
//  KaderMutatieFilter      : attribuut 'hccKaderMutaties'
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefAlleGroeperingen',
    array(
    ['ServerID'                => gethostname(),]
    ['SiteID'                  => $siteID,]
    ['RemoteID'                => $remoteIPaddress,]
    ['JoomlaFilter'            => '' | 'TRUE',]
    ['ToonInOverzichtenFilter' => '' | 'TRUE',]
    ['KadernetFilter'          => '' | 'TRUE',]
    ['BulletinsFilter'        => '' | 'TRUE',]
    ['EmailFilter'            => '' | 'TRUE',]
    ['KaderMutatieFilter'      => '' | 'TRUE'));
Output positief:
   $reply = array(
    'Action'                  => 'GeefAlleGroeperingen',
    'Status'                  => 'TRUE',
    'Message'                => 'Lijst met groeperingen opgevraagd',
    'Result'                  => $groeperingen,
  ['JoomlaFilter'            => 'TRUE',]
  ['ToonInOverzichtenFilter' => 'TRUE',]
  ['KadernetFilter'          => 'TRUE',]
  ['KaderMutatieFilter'      => 'TRUE']);


- Action=4
// ** t.b.v. lijsten op de kadernet server en de kantoor-beheerpagina **
  creer een nieuwe gebruiker. Per lidnummer is er 1 account. Als er al een  
// F.5 Vraag alle kaderrollen op
   account voor dit lidnummer bestaat wordt het bestaande account hernoemd.
// Het is mogelijk om een kaderrol  te onderdrukken, als er in LDAP '''een''' waarde in een opgegeven attribuur aanwezig is.
   (XML-RPC server voert de hccnet XML-call uit, zie 8.1)
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
//  JoomlaFilter            : attribuut 'hccToonInJoomla'
//  KadernetFilter          : attribuut 'hccToonOpKaderNet'
//  KaderMutatieFilter      : attribuut 'hccKaderMutaties'
// (geen authenticatie)
   $request = xmlrpc_encode_request(
    'GeefAlleKaderRollen',
    array(
    ['ServerID'          => gethostname(),]
    ['SiteID'            => $siteID,]
    ['RemoteID'          => $remoteIPaddress,]
    ['JoomlaFilter'      => '' | 'TRUE',]
    ['KadernetFilter'    => '' | 'TRUE',]
    ['KaderMutatieFilter' => '' | 'TRUE']));
Output positief:
   $reply = array(
    'Action'            => 'GeefAlleKaderRollen',
    'Status'            => 'TRUE',
    'Message'            => 'Lijst met kaderrollen opgevraagd',
    'Result'            => $kaderrollen,
  ['JoomlaFilter'      => 'TRUE',]
  ['KadernetFilter'    => 'TRUE',]
  ['KaderMutatieFilter' => '' | 'TRUE']);


- Action=5
// ** t.b.v. de kantoor-beheerpagina **
  wijzig wachtwoord op basis van hcclidnummer en de hash van de hcccode.
// F.9 Geef de gevevens van de mailbox van dit kaderlid
   (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
// (authenticatie op basis van beheerder hccLogin en beheerder userPassword)
   (XML-RPC server voert de hccnet XML-call uit, zie 2.1, 2.2 en 2.3)
$request = xmlrpc_encode_request(
    'GeefKadermailGegevens',
    array(
      'beheerLogin'    => $beheerLogin,
      'beheerPassword'  => $beheerPassword,
      'hccLidnummer'    => $hccLidnummer));
Output positief:
   $reply = array(
    'Action'  => 'GeefKadermailGegevens',
    'Status'  => 'TRUE',
    'Message' => 'Gebruiker(s) gevonden',
    'kadermail_omvang'          => $Formaat,
    'kadermail_aantal_inbox'    => $aantal_inbox,
    'kadermail_aantal_nieuw'    => $aantal_nieuw,
    'kadermail_laatst_opgehaald' => $laatst_opgehaald);
Output negatief:
   $reply = array(
    'Action'  => 'GeefKadermailGegevens',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' |
                'Gegevenscombinatie onjuist' |
                'Vul alle verplichte velden in!',
  ['ExtraInfo' => 'Invalid credentials' |
                  'lidnummer <hccLidnummer> is geen kaderlid'));


- Action=6
// ** t.b.v. de Joomla Kadernet module **
  Haal een PC30 beheertoken op basis van hcclidnummer en de hash van de hcccode.
//  * F.10 MuteerGroeperingSamenstelling
   (XML-RPC server voert de hccnet XML-call uit, zie A.2 HaalPC30Token)
// (authenticatie op basis van lidnummer, JoomlaToken en siteID en als extra hccCode van de aanvrager)
$request = xmlrpc_encode_request(
    'MuteerGroeperingSamenstelling',
    array(
      'hccLidnr'      => $hccLidnr,
      'JoomlaToken'    => $JoomlaToken,
      'hccCode'        => $hccCode,
      'groepering'    => $groepering,
      'hccLidnummer    => $hccLidnummer, // lidnummer van het te muteren hcc lid
      'hccRol'        => $hccRol,      // de nieuwe dan wel op te heffen rol
                                        // de rol 'ALLES_WEG' ruimt alle rollen van dit hcc lid voor deze groepering op
      'actie'          => 'Nieuw' | 'Weg',
    ['ServerID'      => gethostname(),]
      'SiteID'        => $siteID,
    ['RemoteID'      => $remoteIPaddress,]
Output positief:
   $reply = array(
    'Action'    => 'MuteerGroeperingSamenstelling',
    'Status'    => 'TRUE',
    'Message'  => 'Groepering samenstelling aangepast',
  ['ExtraInfo' => 'Bedankmail gestuuurd aan ex-kaderlid']);
Output negatief:
  $reply = array(
    'Action'  => 'MuteerGroeperingSamenstelling',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' |
                'Gegevenscombinatie onjuist' |
                'Vul alle verplichte velden in!',
  ['ExtraInfo' => 'Invalid credentials' |
                  'lidnummer <hccLidnummer> is geen kaderlid' |
  'Oude rol niet gevonden' |
  'Nieuwe rol kan niet samen met bestaande rol' |
  'Alleen voorzitter of secretaris kan kadermutaties uitvoeren']);
</pre>


- Action=7
=== HCC-groepering aanroepen ===
  Uitgeschreven lid is weer actief lid geworden
  (Wordt aangeroepen vanuit de cronjob)


- Action=8
<pre>
  Lid heeft een nieuwe hcc-code gekregen
// I.2 controleer of een gebruiker bestaat op basis van de combinatie
   (Wordt aangeroepen vanuit de cronjob)
//    lidnummer + postcode + huisnummer
// (authenticatie op basis van beheerder hccLogin en beheerder userPassword)
// (alternatieve authenticatie mogelijk door lidnummer + hcc-code in te vullen)
//
// Aan de aanroeper worden zekere eisen gesteld:
// * dient een rol te vervullen binnen de groepering 'FOR'(forum)
// * dan wel dient de rol 'VRBK' (vraagbaak) te vervullen binnen een groepering
//
// Er wordt door de gehele leden-database gezocht, waarna terug wordt gegeven
// * of dit hcc lid inderdaad bestaat
// en, als het om een aanvraag van een vraagbaak vrijwilliger gaat,
// * tevens of het gezochte hcc lid deel uitmaakt van zijn groepering
//
// 2021.12 Mocht weg: laatste aanroep 2018.07.27
// Toch weer terug: 2022.03.23 (OTOBO ticket 2022032394001082)
//
   $request = xmlrpc_encode_request(
    'IsHCCLid',
    array(
      'hccLogin'        => [$hccLogin | $hccLidnummer],
      'userPassword'    => [$userPassword | $hccCode],
      'zoekhccLidnr'    => $zoekhccLidnr,
      'zoekhccPostcode' => $zoekhccPostcode,
      'zoekhccHuisnr'  => $zoekhccHuisnr,
      'zoekgroepering'  => $zoekgroepering));
Output positief:
  $reply = array(
    'Action'  => 'IsHCCLid',
    'Status'  => 'TRUE',
    'Message' => 'Gebruikersgegevens gecontroleerd',
  ['Groeperingslid' => $IsGroeperingLid]));
Output negatief:
  $reply = array(
    'Action'  => 'IsHCCLid',
    'Status'  => 'FALSE',
    'Message' => 'Gebruiker bestaat niet' |
                'Onjuiste credentials' |
                'Wel HCC lid, maar geen lid van groepering $groepering' |
                'Onvoldoende rechten' |
                'Vul alle verplichte velden in!'));
</pre>
</pre>


=== Release notes ===
=== HenZ aanroepen ===
 
<pre>
<pre>
2012.02.08 Wijzigingen versie 5:
// I.3 Geef de einddatum van een actief dan wel uitgeschreven lid
- 4.1 verwijder_hcc_Lidnummer i.p.v. hcc_Lidnummer
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
- 4.1 optionele extra parameter verwijder_hccLogin
  $request = xmlrpc_encode_request(
- Optionele parameters aangegeven
    'GeefhccEindDatum',
- Vanwege de duidelijkheid de beheerLogin en beheerPassword velden
    array(
   bovenin de betreffende aanroepen gezet
      'beheerLogin'   => $beheerLogin,
  (De volgorde van de parameters is niet relevant, dus dit is geen
      'beheerPassword' => $beheerPassword,
    interface-aanpassing)
      'hccLidnummer'  => $hccLidnummer,
2012.02.16 Wijzigingen versie 6:
    ['ServerID'      => gethostname(),]
- 2.1/2.2/2.3 geef ook cn en sn terug na aanpassen van het wachtwoord
    ['SiteID'        => $siteID,]
- 3.1 geef cn en sn terug na aanmaken nieuwe gebruiker
    ['RemoteID'      => $remoteIPaddress]));
2012.02.27 Wijzigingen versie 7:
Output positief:
- Neem de XML interface van HenZ in deze XML-RPC server op
  $reply = array(
  8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gegevens tevens in LDAP op
    'Action'      => 'GeefhccEindDatum',
- 2.1 wijzig wachtwoord - optie 1
    'Status'      => 'TRUE',
   * Nieuw wachtwoord is verplicht, niet optioneel
    'hccLidnummer' => $hccLidnummer,
   * wijzigingen worden naar hccnet.nl doorgezet
    'hccLogin'    => $hccLogin,
- 2.2 wijzig wachtwoord, optie 2
    'hccEindDatum' => $hccEindDatum ('yyyymmdd' | ''));
  * Nieuw wachtwoord is verplicht, niet optioneel
Output negatief:
  * gebruikersnaam kan niet meer via deze interface aangepast worden
  $reply = array(
  * wijzigingen worden naar hccnet.nl doorgezet
    'Action'   => 'GeefhccEindDatum',
- 2.3 wijzig wachtwoord, optie 3
    'Status'   => 'FALSE',
  * wijzigingen worden naar hccnet.nl doorgezet
    'Message'  => 'Gegevenscombinatie onjuist'
2012.03.26 Wijzigingen versie 8:
    'ExtraInfo' => 'Invalid credentials' |
   - Breidt de XML interface van HenZ in deze XML-RPC server uit met
                  'Lidnummer niet gevonden');
     8.2 Controleer of de gebruikersnaam op dit moment bestaat
</pre>
2012.04.09 Wijzigingen versie 9:
 
- Vervang alle 'ldap' aanroepen door 'HCCldap' aanroepen
=== (Forum,vraagbaak) onderwerpen ===
- documentatie van HenZ call action=2 aangepast, action=5 toegevoegd
 
2012.05.03 Wijzigingen versie 10:
<pre>
- 1.1 / 1.2 / 1.3 geven nu ook 'ProfielBekend' terug om uniek te bepalen
// L.1 MaakOnderwerp
  of deze bezoeker een first-time-login pagina te zien dient te krijgen
   $request = xmlrpc_encode_request(
  - documentatie van 2.1 (wijzig wachtwoord) aangepast:  
    'MaakOnderwerp',
  2.1 kan alleen als profiel is doorlopen
     array(
- nieuwe procedure t.b.v. zoekscherm PC30
      'hccLidnr'   => $hccLidnr,
  * A.1 ZoekHCCLid
      'JoomlaToken' => $JoomlaToken,
    - hiervoor is de database met diverse velden uitgebreid
      'ServerID'    => gethostname(),
      (postcode, e-mailadres, huisadres, woonplaats, land, telefoonnummer)
      'SiteID'      => $siteID,
      Dit heeft impact op diverse andere procedures (t.b.s.)
      'RemoteID'    => $remoteIPaddress,
- nieuwe procedure t.b.v. 'gewone' profielpagina
      'description' => $description,
   * B.1 GeefDBFPersoonID
      'groepering' => $groepering));
- nieuwe procedure t.b.v. cron-job
Output positief:
  * C.1 GeefOpgezegdeLeden
  $reply = array(
2012.05.10 Wijzigingen versie 11
    'Action'      => 'MaakOnderwerp',
- 1.3 GebruikerBestaatControle
    'Status'      => 'TRUE',
  * nieuwe parameter: hccPseudoniem
    'Message'    => 'Onderwerp is aangemaakt',
  * nieuw veld in antwoord: hccPseudoniem
    'onderwerp'  => $onderwerpID,
- 2.3 WijzigGebruikersGegevens
    'description' => $description);
   * nieuwe parameter: hccPseudoniem
Output negatief:
- 2.4 WijzigGebruikersGegevens
  $reply = array(
   * nieuwe parameter: hccPseudoniem
    'Action'    => 'MaakOnderwerp',
- 3.1 NieuweGebruiker
    'Status'   => 'FALSE',
   * nieuwe parameter: hccPseudoniem
    'Message'  => 'Gegevenscombinatie onjuist'
- 8.1 MaakGebruikerAan
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
  * nieuwe parameter: nieuw_hccPseudoniem
                  'Onjuist JoomlaToken' |
  * alle parameters zijn verplicht (niet langer optioneel)
                  'Geen webmaster');
  * nieuw antwoord: Gegevenscombinatie onjuist
 
- 8.3 IsDezePseudoniemNogBeschikbaar
// L.2 VerwijderOnderwerp
  * Nieuwe procedure t.b.v. 1e keer doorlopen profielpagina
 
- A.1 ZoekHCCLid
$request = xmlrpc_encode_request(
  * 'Zoeklimiet bereikt' wordt als ExtraInfo meegegeven
    'VerwijderOnderwerp',
  * nieuwe velden in antwoord: hccPseudoniem en hccLogin
    array(
- B.1 GeefDBFPersoonID
      'hccLidnr'   => $hccLidnr,
   * Zoeken kan nu ook op hccLogin en op hccPseudoniem
      'JoomlaToken' => $JoomlaToken,
- C.1 GeefOpgezegdeLeden
      'ServerID'   => gethostname(),
  * Geef nu ook hccLogin en hccPseudoniem terug
      'SiteID'      => $siteID,
2012.05.14 Wijzigingen versie 12
      'RemoteID'   => $remoteIPaddress,
- 1.x GebruikerBestaatControle
      'onderwerp'  => $onderwerpID));
  * Geef ook DBFPersoonID terug
Output positief:
- 4.1 Gooi een gebruiker weg.
  $reply = array(
  * Haal ongebruikte parameter hccLogin weg
    'Action'      => 'VerwijderOnderwerp',
- 5.1 Wijzig hccIG
    'Status'      => 'TRUE',
  * Haal ongebruikte parameter hccLogin weg
    'onderwerp'  => $onderwerpID,
- 6.1 Wijzig hccRegio
    'Message'    => 'Onderwerp is verwijderd',
  * Haal ongebruikte parameter hccLogin weg
    'description' => $description);
- 7.1 Wijzig hccRol
Output negatief:
   * Haal ongebruikte parameter hccLogin weg
  $reply = array(
2012.05.20 Wijzigingen versie 13
    'Action'   => 'VerwijderOnderwerp',
- A.1 ZoekHCCLid
    'Status'    => 'FALSE',
   * Geef resultaten gestructureerder formaat
    'Message'  => 'Gegevenscombinatie onjuist'
  * Geef in ExtraInfo weer hoeveel echte resultaten er gevonden zijn
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
  - C.1 GeefOpgezegdeLeden
                  'Onjuist JoomlaToken'            |
  * Geef resultaten in gestructureerder formaat
                  'Geen webmaster'                |
2012.06.03 Wijzigingen versie 14
  'Onderwerp bestaat niet'        |
- 3.1 NieuweGebruiker
  'Ruim eerst alle geautoriseerde gebruikers op' |
  * Geef ook DBFPersoonID mee
  'Kan onderwerp niet verwijderen');
2012.08.17 Wijzigingen versie 15
 
- C.1 GeefOpgezegdeLeden
// L.3 GeefOnderwerpen
  * Geef ook hccLogin in het antwoord terug
// Geef het array met de lijst van onderwerpen voor de betreffende groepering
- D.1 HCCpartner/ControleerHCCLidmaatschap
//
   * Nieuwe aanroep
$request = xmlrpc_encode_request(
2012.09.29 Wijzigingen versie 16
  'GeefOnderwerpen',
- Alle cron gerelateerde opdrachten verwijderd
  array(
   * 3.1 NieuweGebruiker
    'ServerID'   => gethostname(),
  * 4.1 GooiGebruikerWeg
    'SiteID'      => $siteID,
  * 5.1 WijzigHccIG
    'RemoteID'   => $remoteIPaddress,
  * 6.1 WijzigHccRegio
    'groepering' => $groepering));
  * 7.1 WijzigHccRol
Output positief:
2012.10.28 Wijzigingen versie 17
  $reply = array(
- nieuwe procedure t.b.v. PC30 beheerpagina
    'Action'      => 'GeefOnderwerpen',
   * A.2 HaalPC30Token
    'Status'      => 'TRUE',
- nieuwe procedure t.b.v. Drupal profielpagina
    'Message'    => 'Onderwerpen opgevraagd',
   * 2.4 vervallen
    'onderwerpen' => $onderwerpen); // het array met onderwerpen
     (WijzigGebruikersGegevens op basis van pseudoniem)
Output negatief:
   * 2.5 WijzigGebruikersGegevens
  $reply = array(
     Nieuwe keuze: wijzig pseudoniem
    'Action'   => 'GeefOnderwerpen',
2012.11.14 Wijzigingen versie 18
    'Status'   => 'FALSE',
  - 1.x GebruikerBestaatControle
    'Message'  => 'Gegevenscombinatie onjuist'
  * Geef ook mail in het antwoord terug
    'ExtraInfo' => 'Vul alle verplichte velden in!');
2012.11.30 Wijzigingen versie 19
 
- E.1 HCCkader/WijzigGebruikersGegevens
// L.4 MuteerOnderwerp
  * Nieuwe aanroep
// Pas de description van een onderwerp aan
- F.1 / F.2 / F.3 ControleerKaderlid
//
  * Nieuwe aanroep
$request = xmlrpc_encode_request(
2012.12.18 Wijzigingen versie 20
   'MuteerOnderwerp',
- Haal DBFPersoonID weg uit alle aanroepen en alle resultaten
  array(
  * Antwoord van 1.x GebruikerBestaatControle
    'hccLidnr'   => $hccLidnr,
   * B.1 GeefDBFPersoonID opgeheven
     'JoomlaToken' => $JoomlaToken,
- A.1 ZoekHCCLid geeft nu ook hccMobiel terug (t.b.v. PC30 zoekpagina)
    'ServerID'   => gethostname(),
- C.1 GeefOpgezegdeLeden verder uitgewerkt:
     'SiteID'      => $siteID,
   * Geeft alleen de door Drupal gebruikte velden 'hccLogin' en 'hccEindDatum'
    'RemoteID'    => $remoteIPaddress,
    terug in het antwoord
    'groepering' => $groepering,
  * Geeft nu 'echte' antwoorden i.p.v. dummy resultaten
    'description' => $description,
- F.1 ControleerKaderlid geeft nu ook optioneel 'sn' en 'givenName'  
    'onderwerp'  => $onderwerpID));
    terug (in de beheer-variant)
Output positief:
2013.01.25 Wijzigingen versie 21
  $reply = array(
- A.1 ZoekHCCLid uitgebreid
    'Action'      => 'MuteerOnderwerp',
  * Geeft nu ook hccBeginDatum, hccEindDatum en hccRol terug
    'Status'      => 'TRUE',
2013.02.02 Wijzigingen versie 22
    'Message'    => 'Onderwerp aangepast',
- A.1 ZoekHCCLid
    'onderwerp'  => $onderwerpID,
  * Interface aangepast
    'description' => $description);
- A.3 ZoekGroeperingsLid
Output negatief:
  * Nieuwe aanroep
  $reply = array(
- F.4 GeefAlleGroeperingen
    'Action'   => 'MuteerOnderwerp',
   * Nieuwe aanroep
    'Status'   => 'FALSE',
- F.5 GeefAlleKaderRollen
    'Message'   => 'Gegevenscombinatie onjuist'
  * Nieuwe aanroep
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
2013.03.01 Wijzigingen versie 23
                  'Onjuist JoomlaToken' |
- A.3 ZoekGroeperingsLid
                  'Geen webmaster' |
  * Geeft andere resultaten terug
  'Onderwerp bestaat niet' |
- 2.2 WijzigWachtwoord
  'Onderwerp behoort bij andere groepering');
   * Geeft nu ook hccLogin terug (voor ww-vergeten op de Drupal site)
 
- HCCenquete implementatie
// L.5 MuteerOnderwerpAutorisatie
  * G.1 Expandeer NL postcode
// Geef kaderlid $kaderLidNr de autorisatie MOD, VRBK of RED bij onderwerp $onderwerp
  * G.2 Haal lidgegevens op
// (of haal die autorisatie weg)
  * G.3 Pas lidgegevens aan
$request = xmlrpc_encode_request(
2013.03.18 Wijzigingen versie 24
  'MuteerOnderwerpAutorisatie',
- ZoekGroeperingsLid op basis van token
  array(
- A.4 Lid bezoekt bijeenkomst
    'hccLidnr'      => $hccLidnr,
   * nieuwe aanroep
    'JoomlaToken'   => $JoomlaToken,
- A.5 VraagLidgegevensTokenAan
    'ServerID'      => gethostname(),
   * nieuwe aanroep
    'SiteID'        => $siteID,
2013.04.07 Wijzigingen versie 25
    'RemoteID'      => $remoteIPaddress,
- D.1 HCCpartner/ControleerHCCLidmaatschap
    'groepering'    => $groepering,
  Simpeler interface ontwikkeld ('HCCpartners' i.p.v. 'HCCpartner')
    'onderwerp'      => $onderwerpID,
- G.3 mag ook Tussenvoegsels aanpassen
    'kaderLidNr'    => $kaderLidNr,
2013.04.25 Wijzigingen versie 26
    'hccAutorisatie' => 'MOD' | 'VRBK' | 'RED',
- H.1 HCC-groepering / GebruikerBestaatControle
   ['verwijder'      => 'TRUE']));
  Nieuwe interface voor validatie vanaf groeperings websites
Output positief:
2013.05.03 Wijzigingen versie 27
  $reply = array(
- 2.6 HaalOptInKeuzen
    'Action'      => 'MuteerOnderwerpAutorisatie',
  * nieuwe aanroep
    'Status'      => 'TRUE',
- 2.7 SchrijfOptInKeuzen
    'Message'    => 'Onderwerp autorisatie aangepast');
   * nieuwe aanroep
Output negatief:
- 2.8 HaalOptInLijst
  $reply = array(
  * nieuwe aanroep
    'Action'   => 'MuteerOnderwerpAutorisatie',
- I.1 HCC-forum / GebruikerBestaatControle
    'Status'   => 'FALSE',
  * nieuwe aanroep
    'Message'   => 'Gegevenscombinatie onjuist'
- HCCpartners aanroep nieuwe interface ('Action' => 'ControleerHCCLidmaatschap')
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
2013.07.05 Wijzigingen versie 28
                  'Onjuist JoomlaToken' |
- 8.1 MaakGebruikerAan
                  'Geen webmaster' |
   * extra parameters (mail, hccPseudoniem) in het antwoord
  'Geen kaderlid' |
- 1.1/1.2/1.3 GebruikerBestaatControle
  'Onjuiste autorisatie opgegeven' |
  * extra parameter (mailHccnet)
  'Onderwerp bestaat niet');
- A.1 ZoekHCCLid
 
  * extra parameter (mailHccnet)
// L.6 ToonOnderwerpAutorisatie
- A.3 ZoekGroeperingsLid
$request = xmlrpc_encode_request(
   * extra parameter (mailHccnet)
  'ToonOnderwerpAutorisatie',
2013.08.31 Wijzigingen versie 29
  array(
- F.1 / F.2 / F.3 HCC-kader / ControleerKaderlid
    'hccLidnr'   => $hccLidnr,
  * extra output parameter (hccKaderMail)
    'JoomlaToken' => $JoomlaToken,
- 1.1/1.2/1.3 GebruikerBestaatControle
    'ServerID'   => gethostname(),
   * extra output parameter (hccForumLogin)
    'SiteID'      => $siteID,
- H.1 HCC-groepering / GebruikerBestaatControle
    'RemoteID'   => $remoteIPaddress,
  * komma-gescheiden lijst met groeperingen mogelijk
    'onderwerp'  => $onderwerpID));
  * extra output parameter (mailHccnet)
Output positief:
2013.12.26 Wijzigingen versie 30
  $reply = array(
- 3.1 Geef mijn lidnummer
    'Action'      => 'ToonOnderwerpAutorisatie',
  * nieuwe aanroep
    'Status'      => 'TRUE',
- A.1 ZoekHCCLid
    'Message'      => 'Autorisaties opgehaald',
  * geef nu ook 'ProfielBekend' terug om aan de PC30 omgeving door te geven
    'onderwerp'   => $onderwerpID,
    dat het wachtwoord niet veranderd mag worden door PC30
    'description'  => $description,
- A.6 GeefBezoekersOverzicht
    'autorisaties' =>
  * geef nu ook 'Locatie' terug indien van toepassing
      [Array(
- A.7 GeefLocaties
        'hccLidnummer'    => $hccLidnummer
  * nieuwe aanroep
        'cn'              => $cn
- I.1 HCC-forum / GebruikerBestaatControle
        'hccAutorisatie'  => {komma-gescheiden autorisaties})]);
  * parameters aangepast
Output negatief:
  * authenticatie op basis van hccLogin + userPassword of lidnummer + hcc-code
  $reply = array(
  * geen algemene hcc-forum authenticatie meer mogelijk
    'Action'    => 'ToonOnderwerpAutorisatie',
- F.7 ControleerKaderlidGroep
    'Status'   => 'FALSE',
  * Nieuwe aanroep
    'Message'  => 'Gegevenscombinatie onjuist'
2014.02.01 Wijzingingen versie 31
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
- A.8 RegistreerGast
                  'Onjuist JoomlaToken' |
  * nieuwe aanroep
                  'Geen webmaster' |
  - H.2 MatchPostcodeMetRegio
  'Onderwerp bestaat niet');
  * nieuwe aanroep
</pre>
- nieuwe interface (losse, unieke aanroepen, niet meer gegroepeerd)
 
2014.09.27 Wijzigingen versie 32
=== Microsoft Dynamics Cloud (Cayentis) onderwerpen ===
- C.1 GeefOpgezegdeLeden hernoemd naar GeefUitgeschrevenLeden
 
- I.3 GeefhccEindDatum
<pre>
  * nieuwe aanroep
// M.1 Upload_CSV_bestand
- Action=7 en Action=8 toegevoegd aan de HenZ interface
// De CRM proxy upload de dagelijkse CSV synchronisatie-bestanden naar de XML-RPC server
2014.12.12 Wijzigingen versie 33
// (authenticatie op basis van beheerLogin en beheerPassword)
- F.1 / F.2 / F.3 HCC-kader / IsKaderLid
$request = xmlrpc_encode_request(
  * extra output parameter (mail, mailHccnet, hccKaderForward)
  'Upload_CSV_bestand',
- F.8 HCC-kader / ZetKaderForward
  array(
   * nieuwe aanroep
    'beheerLogin'      => $beheerLogin,    // xml-rpc user
2015.05.06 Wijzigingen versie 34
    'beheerPassword'  => $beheerPassword, // xml-rpc password
- GeefMijnGegevens
    'CSV_bestand_type' => '1' | '2' | '3' , // 1=Contactpersonen/Hoofdlidmaatschappen
   * nieuwe aanroep
                                            // 2=Gremiumlidmaatschap codes
- ValideerPCActiveAbonnee
                                            // 3=Gremiumlidmaatschappen
  * vervallen
    'CSV_bestand'      => $CSV_bestand));  // het CSV bestand (base64 encoded)
- 1.4 GebruikerBestaatControle
Output positief:
   * extra output parameter (hccKaderForward)
  $reply = array(
- D.1 HCCpartner/ControleerHCCLidmaatschap
    'Action'   => 'Upload_CSV_bestand',
   * optionele extra output parameter (ExtraInfo)
    'Status'   => 'TRUE',
2015.09.27 Wijzigingen versie 35
    'Message'  => 'Bestand opgeslagen');
- HeeftForumCredentials
Output negatief:
  * vervallen
  $reply = array(
2015.11.20 Wijzigingen versie 36
    'Action'   => 'Upload_CSV_bestand',
- SchrijfNietlidInOpBulletin
    'Status'   => 'FALSE',
  * nieuwe aanroep
    'Message'  => 'Gegevenscombinatie onjuist'
2015.12.13 Wijzigingen versie 37
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
- serverID als optionele parameter
                  'Er is iets mis gegaan');
- SchrijfNietlidInOpBulletin
 
  * Maak velden optioneel
// M.2 SchrijfNieuwLidIn
2016.01.05 Wijzigingen versie 38
//
- A.7 GeefLocaties
// Maak in het CRM een nieuw HCC lid aan
  * optionele parameter JoomlaFilter
// De NAW gegevens worden in een dedicated formaat aangeleverd
- F.4 GeefAlleGroeperingen
// (authenticatie op basis van beheerLogin en beheerPassword)
   * optionele parameter JoomlaFilter
$request = xmlrpc_encode_request(
- F.5 GeefAlleKaderRollen
  'SchrijfNieuwLidIn',
  * optionele parameter JoomlaFilter
  array(
2016.01.15 Wijzigingen versie 39
    'beheerLogin'    => $beheerLogin,    // xml-rpc user
- H.3 GeefMijnGegevens
    'beheerPassword' => $beheerPassword, // xml-rpc password
  * geeft nu ook hccOptIn terug
    'NAWgegevens'   => $NAW_Array,
  * geeft nu ook JoomlaToken terug
    'ServerID'      => gethostname(),
- H.4 PasOptInKeuzeAan
    'SiteID'        => $siteID,
  * nieuwe aanroep
    'RemoteID'      => $remoteIPaddress);
- SiteID en RemoteID als optionele parameter
// $NAW_array = array(
2016.01.15 Wijzigingen versie 40
//  'GeboorteDatum'        => $geboortedatum,
- H.5 ZoekKaderLeden
//  'Geslacht'              => $geslacht,
//  'Voornaam'              => $voornaam,
//  'Voorletters'          => $voorletters,
//  'Tussenvoegsel'        => $tussenvoegsel,
//  'Achternaam'            => $achternaam,
//  'Straatnaam'            => $straatnaam,
//  'Huisnummer'            => $huisnummer,
//  'HuisnummerToevoeging'  => $huisnummertoevoeging,
//  'Woonplaats'            => $woonplaats,
//  'Postcode'              => $postcode,
//  'Land'                  => $land,
//  'Telefoonnummer'        => $telefoonnummer,
//  'MobielNummer'          => $mobielnummer,
//  'Mail'                  => $mail,
//  'IBAN'                  => $IBAN,
//  'Interessegroep'        => $IGs, // komma-gescheiden lijst met IG's
//  'Geschenk'              => $geschenk,
//  'Actiecode'            => $actiecode,
//  'Voorwaarden'          => $Akkoord); // 'Akkoord'
)
Output positief:
  $reply = array(
    'Action'    => 'SchrijfNieuwLidIn',
    'Status'    => 'TRUE',
    'Message'  => 'nieuw lid ingeschreven',
    'hccLidnr'  => $hccLidnr,
    'hccCode'  => $hccCode);
Output negatief:
  $reply = array(
    'Action'    => 'SchrijfNieuwLidIn',
    'Status'    => 'FALSE',
    'Message'  => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                  'Er is iets mis gegaan');
 
// M.3 Verwerk_JSON_mutatie
// De CRM proxy kan NAW en/of IG mutaties en/of hccCode mutaties live doorgeven
// Deze gegevens worden in JSON in een dedicated formaat aangeleverd
// (authenticatie op basis van beheerLogin en beheerPassword)
$request = xmlrpc_encode_request(
  'Verwerk_JSON_mutatie',
  array(
    'beheerLogin'    => $beheerLogin,    // xml-rpc user
    'beheerPassword' => $beheerPassword, // xml-rpc password
    'mutatie_type'  => '1' | '2',      // 1=Contactpersoon/Hoofdlidmaatschap
                                        // 2=Gremiumlidmaatschap
    'JSON_mutatie'  => $JSON_mutatie)); // de JSON payload
Output positief:
  $reply = array(
    'Action'    => 'Verwerk_JSON_mutatie',
    'Status'    => 'TRUE',
    'Message'  => 'Mutatie verwerkt');
Output negatief:
  $reply = array(
    'Action'    => 'Verwerk_JSON_mutatie',
    'Status'    => 'FALSE',
    'Message'  => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                  'Er is iets mis gegaan');
 
// M.4 Vertaal landcode
// Het CRM werkt met numerieke landcodes, wij met cijfers
// Vertaal die
// Er moet in de aanroep 1 veld aanwezig zijn, beide waarden komen in het antwoord terug
$request = xmlrpc_encode_request(
  'ISO_landcode',
  array(
    ['ISO_numeriek' => $ISO_numeriek,]
    ['ISO_code  '  => $ISO_code]));
Output positief:
  $reply = array(
    'Action'      => 'ISO_landcode',
    'Status'      => 'TRUE',
    'Message'      => 'ISO code lookup geslaagd',
    'ISO_numeriek' => $ISO_numeriek,
    'ISO_code  '  => $ISO_code,
    'ISO_benaming' => $ISO_benaming); // de descriptive name van deze ISO code
Output negatief:
  $reply = array(
    'Action'    => 'ISO_landcode',
    'Status'    => 'FALSE',
    'Message'  => 'Kan geen bijpassende vertaling vinden'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                  'Er is iets mis gegaan');
 
// M.5 MuteerAanmeldingsformulier
// Sla een JSON veld op in de XML-RPC server zodat deze weer opgehaald kan worden door de websites
// Authenticatie op basis van hccLidnummer en JoomlaToken
// Deze mutaties mogen alleen door HN#WM of SITE#WM gedaan worden.
 
  $request = xmlrpc_encode_request(
    'MuteerAanmeldingsformulier',
    array(
      'hccLidnummer'  => $hccLidnummer,
      'JoomlaToken'  => $JoomlaToken,
      'formulierdata' => $formulierdata, // JSON veld met alle gegevens voor het aanmeld formulier
      'ServerID'      => gethostname(),
      'SiteID'        => $siteID,
      'RemoteID'      => $remoteIPaddress ));
Output positief:
  $reply = array(
    'Action'  => 'MuteerAanmeldingsformulier',
    'Status'  => 'TRUE',
    'Message'  => 'aanmeldingsformulier bijgewerkt';
// M.6 HaalAanmeldingsformulier
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'HaalAanmeldingsformulier',
    array(
    ['ServerID' => gethostname(),]
    ['SiteID'  => $siteID,]
    ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'        => 'HaalAanmeldingsformulier',
    'Status'        => 'TRUE',
    'formulierdata' => $formulierdata); // JSON veld met alle gegevens voor het aanmeld formulier
 
// M.7 GeefFactuurOverzicht
// (authenticatie op basis van hccLidnummer + JoomlaToken + siteID
  $request = xmlrpc_encode_request(
    'GeefFactuurOverzicht',
    array(
      'hccLidnummer' => $hccLidnummer,
      'JoomlaToken'  => $JoomlaToken,
    ['ServerID'    => gethostname(),]
      'SiteID'      => $siteID,
    ['RemoteID'    => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'GeefFactuurOverzicht',
    'Status'          => 'TRUE',
    'FactuurOverzicht' => $FactuurOverzicht);
//  $FactuurOverzicht =
//    array(
//      array(
//        'FactuurID'    => 'a5b93460-4536-ea11-a813-000d3a2c53fa',
//        'FactuurNummer' => '200118673J5'
//        'FactuurDatum'  => '2020-01-15'
//        'bedrag'        => 42.37
//        'BetaalStatus'  => 0]));
//    )
 
// M.8 HaalFactuur
// (authenticatie op basis van JoomlaToken of FactuurToken)
  $request = xmlrpc_encode_request(
    'HaalFactuur',
    array(
      'hccLidnummer'  => $hccLidnummer,
    ['JoomlaToken'  => $JoomlaToken,]
    ['FactuurToken'  => $FactuurToken,]
      'FactuurNummer' => $FactuurNummer,
    ['ServerID'      => gethostname(),]
    ['SiteID'        => $siteID,]
    ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'HaalFactuur',
    'Status'  => 'TRUE',
    'factuur' => $factuurgegevens);
//  $factuurgegevens =
//    array(
//        'FactuurNummer' => $FactuurNummer,
//        'FactuurDatum'  => $FactuurDatum,
//        'FactuurID'    => $FactuurID,
//        'Bestandsnaam'  => $Bestandsnaam,
//        'PDF'          => $PDF) // base64 encoded PDF
</pre>
 
=== Echo test ===
 
<pre>
 
// t.b.v. controle of de verbinding met de XML-RPC server functioneert
// Eenvoudige echo test
 
  $request = xmlrpc_encode_request(
    'echo',
    array(
      'What'    => $string,
    ['ServerID' => gethostname(),]
    ['SiteID'  => $siteID,]
    ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'echo',
    'Status'  => 'TRUE',
    'Message' => $string);
</pre>
 
=== HenZ XML-RPC interface ===
 
Overzicht van XML-RPC procedures die bij HenZ draaien
(worden via de Hobbynet XML-RPC server afgehandeld)
 
<pre>
- Action=2
  wijzig gebruikersnaam en wachtwoord op basis van hcclidnummer en de hash van de hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  (XML-RPC server voert de hccnet XML-call uit, zie 2.1, 2.2 en 2.3)
 
- Action=3
  controleer of een gebruikersnaam bestaat
  (XML-RPC server voert de hccnet XML-call uit, zie 8.2)
 
- Action=4
  creer een nieuwe gebruiker. Per lidnummer is er 1 account. Als er al een
  account voor dit lidnummer bestaat wordt het bestaande account hernoemd.
  (XML-RPC server voert de hccnet XML-call uit, zie 8.1)
 
- Action=5
  wijzig wachtwoord op basis van hcclidnummer en de hash van de hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  (XML-RPC server voert de hccnet XML-call uit, zie 2.1, 2.2 en 2.3)
 
- Action=7
  Uitgeschreven lid is weer actief lid geworden
  (Wordt aangeroepen vanuit de cronjob)
 
- Action=8
  Lid heeft een nieuwe hcc-code gekregen
  (Wordt aangeroepen vanuit de cronjob)
</pre>
 
=== Release notes ===
<pre>
2012.02.08 Wijzigingen versie 5:
- 4.1 verwijder_hcc_Lidnummer i.p.v. hcc_Lidnummer
- 4.1 optionele extra parameter verwijder_hccLogin
- Optionele parameters aangegeven
- Vanwege de duidelijkheid de beheerLogin en beheerPassword velden
  bovenin de betreffende aanroepen gezet
  (De volgorde van de parameters is niet relevant, dus dit is geen
    interface-aanpassing)
2012.02.16 Wijzigingen versie 6:
- 2.1/2.2/2.3 geef ook cn en sn terug na aanpassen van het wachtwoord
- 3.1 geef cn en sn terug na aanmaken nieuwe gebruiker
2012.02.27 Wijzigingen versie 7:
- Neem de XML-RPC interface van HenZ in deze XML-RPC server op
  8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gegevens tevens in LDAP op
- 2.1 wijzig wachtwoord - optie 1
  * Nieuw wachtwoord is verplicht, niet optioneel
  * wijzigingen worden naar hccnet.nl doorgezet
- 2.2 wijzig wachtwoord, optie 2
  * Nieuw wachtwoord is verplicht, niet optioneel
  * gebruikersnaam kan niet meer via deze interface aangepast worden
  * wijzigingen worden naar hccnet.nl doorgezet
- 2.3 wijzig wachtwoord, optie 3
  * wijzigingen worden naar hccnet.nl doorgezet
2012.03.26 Wijzigingen versie 8:
  - Breidt de XML-RPC interface van HenZ in deze XML-RPC server uit met
    8.2 Controleer of de gebruikersnaam op dit moment bestaat
2012.04.09 Wijzigingen versie 9:
- Vervang alle 'ldap' aanroepen door 'HCCldap' aanroepen
- documentatie van HenZ call action=2 aangepast, action=5 toegevoegd
2012.05.03 Wijzigingen versie 10:
- 1.1 / 1.2 / 1.3 geven nu ook 'ProfielBekend' terug om uniek te bepalen
  of deze bezoeker een first-time-login pagina te zien dient te krijgen
- documentatie van 2.1 (wijzig wachtwoord) aangepast:
  2.1 kan alleen als profiel is doorlopen
- nieuwe procedure t.b.v. zoekscherm PC30
  * A.1 ZoekHCCLid
    - hiervoor is de database met diverse velden uitgebreid
      (postcode, e-mailadres, huisadres, woonplaats, land, telefoonnummer)
      Dit heeft impact op diverse andere procedures (t.b.s.)
- nieuwe procedure t.b.v. 'gewone' profielpagina
  * B.1 GeefDBFPersoonID
- nieuwe procedure t.b.v. cron-job
  * C.1 GeefOpgezegdeLeden
2012.05.10 Wijzigingen versie 11
- 1.3 GebruikerBestaatControle
  * nieuwe parameter: hccPseudoniem
  * nieuw veld in antwoord: hccPseudoniem
- 2.3 WijzigGebruikersGegevens
  * nieuwe parameter: hccPseudoniem
- 2.4 WijzigGebruikersGegevens
  * nieuwe parameter: hccPseudoniem
- 3.1 NieuweGebruiker
  * nieuwe parameter: hccPseudoniem
- 8.1 MaakGebruikerAan
  * nieuwe parameter: nieuw_hccPseudoniem
  * alle parameters zijn verplicht (niet langer optioneel)
  * nieuw antwoord: Gegevenscombinatie onjuist
- 8.3 IsDezePseudoniemNogBeschikbaar
  * Nieuwe procedure t.b.v. 1e keer doorlopen profielpagina
- A.1 ZoekHCCLid
  * 'Zoeklimiet bereikt' wordt als ExtraInfo meegegeven
  * nieuwe velden in antwoord: hccPseudoniem en hccLogin
- B.1 GeefDBFPersoonID
  * Zoeken kan nu ook op hccLogin en op hccPseudoniem
- C.1 GeefOpgezegdeLeden
  * Geef nu ook hccLogin en hccPseudoniem terug
2012.05.14 Wijzigingen versie 12
- 1.x GebruikerBestaatControle
  * Geef ook DBFPersoonID terug
- 4.1 Gooi een gebruiker weg.
  * Haal ongebruikte parameter hccLogin weg
- 5.1 Wijzig hccIG
  * Haal ongebruikte parameter hccLogin weg
- 6.1 Wijzig hccRegio
  * Haal ongebruikte parameter hccLogin weg
- 7.1 Wijzig hccRol
  * Haal ongebruikte parameter hccLogin weg
2012.05.20 Wijzigingen versie 13
- A.1 ZoekHCCLid
  * Geef resultaten gestructureerder formaat
  * Geef in ExtraInfo weer hoeveel echte resultaten er gevonden zijn
- C.1 GeefOpgezegdeLeden
  * Geef resultaten in gestructureerder formaat
2012.06.03 Wijzigingen versie 14
- 3.1 NieuweGebruiker
  * Geef ook DBFPersoonID mee
2012.08.17 Wijzigingen versie 15
- C.1 GeefOpgezegdeLeden
  * Geef ook hccLogin in het antwoord terug
- D.1 HCCpartner/ControleerHCCLidmaatschap
  * Nieuwe aanroep
2012.09.29 Wijzigingen versie 16
- Alle cron gerelateerde opdrachten verwijderd
  * 3.1 NieuweGebruiker
  * 4.1 GooiGebruikerWeg
  * 5.1 WijzigHccIG
  * 6.1 WijzigHccRegio
  * 7.1 WijzigHccRol
2012.10.28 Wijzigingen versie 17
- nieuwe procedure t.b.v. PC30 beheerpagina
  * A.2 HaalPC30Token
- nieuwe procedure t.b.v. Drupal profielpagina
  * 2.4 vervallen
    (WijzigGebruikersGegevens op basis van pseudoniem)
  * 2.5 WijzigGebruikersGegevens
    Nieuwe keuze: wijzig pseudoniem
2012.11.14 Wijzigingen versie 18
- 1.x GebruikerBestaatControle
  * Geef ook mail in het antwoord terug
2012.11.30 Wijzigingen versie 19
- E.1 HCCkader/WijzigGebruikersGegevens
  * Nieuwe aanroep
- F.1 / F.2 / F.3 ControleerKaderlid
  * Nieuwe aanroep
2012.12.18 Wijzigingen versie 20
- Haal DBFPersoonID weg uit alle aanroepen en alle resultaten
  * Antwoord van 1.x GebruikerBestaatControle
  * B.1 GeefDBFPersoonID opgeheven
- A.1 ZoekHCCLid geeft nu ook hccMobiel terug (t.b.v. PC30 zoekpagina)
- C.1 GeefOpgezegdeLeden verder uitgewerkt:
  * Geeft alleen de door Drupal gebruikte velden 'hccLogin' en 'hccEindDatum'
    terug in het antwoord
  * Geeft nu 'echte' antwoorden i.p.v. dummy resultaten
- F.1 ControleerKaderlid geeft nu ook optioneel 'sn' en 'givenName'
    terug (in de beheer-variant)
2013.01.25 Wijzigingen versie 21
- A.1 ZoekHCCLid uitgebreid
  * Geeft nu ook hccBeginDatum, hccEindDatum en hccRol terug
2013.02.02 Wijzigingen versie 22
- A.1 ZoekHCCLid
  * Interface aangepast
- A.3 ZoekGroeperingsLid
  * Nieuwe aanroep
- F.4 GeefAlleGroeperingen
  * Nieuwe aanroep
- F.5 GeefAlleKaderRollen
  * Nieuwe aanroep
2013.03.01 Wijzigingen versie 23
- A.3 ZoekGroeperingsLid
  * Geeft andere resultaten terug
- 2.2 WijzigWachtwoord
  * Geeft nu ook hccLogin terug (voor ww-vergeten op de Drupal site)
- HCCenquete implementatie
  * G.1 Expandeer NL postcode
  * G.2 Haal lidgegevens op
  * G.3 Pas lidgegevens aan
2013.03.18 Wijzigingen versie 24
- ZoekGroeperingsLid op basis van token
- A.4 Lid bezoekt bijeenkomst
  * nieuwe aanroep
- A.5 VraagLidgegevensTokenAan
  * nieuwe aanroep
2013.04.07 Wijzigingen versie 25
- D.1 HCCpartner/ControleerHCCLidmaatschap
  Simpeler interface ontwikkeld ('HCCpartners' i.p.v. 'HCCpartner')
- G.3 mag ook Tussenvoegsels aanpassen
2013.04.25 Wijzigingen versie 26
- H.1 HCC-groepering / GebruikerBestaatControle
  Nieuwe interface voor validatie vanaf groeperings websites
2013.05.03 Wijzigingen versie 27
- 2.6 HaalOptInKeuzen
  * nieuwe aanroep
- 2.7 SchrijfOptInKeuzen
   * nieuwe aanroep  
   * nieuwe aanroep  
</pre>
- 2.8 HaalOptInLijst
 
  * nieuwe aanroep
= Aanpassingen aan de Apache omgeving =
- I.1 HCC-forum / GebruikerBestaatControle
 
  * nieuwe aanroep
== php.ini aanpassingen ==
- HCCpartners aanroep nieuwe interface ('Action' => 'ControleerHCCLidmaatschap')
De XML-RPC server zal 'ergens' een bestand moeten kunnen vinden met de
2013.07.05 Wijzigingen versie 28
gebruikersnamen t.b.v. het authenticeren bij de LDAP-server.
- 8.1 MaakGebruikerAan
 
  * extra parameters (mail, hccPseudoniem) in het antwoord
Dit bestand wordt geplaatst in de map '/usr/local/hobbynet/etc'. Om dit
- 1.1/1.2/1.3 GebruikerBestaatControle
vanuit Apache te mogen benaderen, dient een aanpassing aan php.ini
  * extra parameter (mailHccnet)
gemaakt te worden:
- A.1 ZoekHCCLid
 
  * extra parameter (mailHccnet)
  /etc/php5/apache2/php.ini
- A.3 ZoekGroeperingsLid
   
  * extra parameter (mailHccnet)
  include_path = ".:/usr/share/php:/usr/share/pear:/usr/local/hobbynet/etc"
2013.08.31 Wijzigingen versie 29
 
- F.1 / F.2 / F.3 HCC-kader / ControleerKaderlid
== Apache modules ==
  * extra output parameter (hccKaderMail)
Nieuwe server geschikt maken voor XML-RPC gebruik
- 1.1/1.2/1.3 GebruikerBestaatControle
 
  * extra output parameter (hccForumLogin)
  apt-get install php5-xmlrpc
- H.1 HCC-groepering / GebruikerBestaatControle
 
  * komma-gescheiden lijst met groeperingen mogelijk
  Look for xmlrpc.ini. If it does not exist, create it. Now, make sure it has the following contents:
  * extra output parameter (mailHccnet)
  ; Enable xmlrpc extension module
2013.12.26 Wijzigingen versie 30
  extension=xmlrpc.so
- 3.1 Geef mijn lidnummer
 
  * nieuwe aanroep
  now restart Apache!
- A.1 ZoekHCCLid
 
  * geef nu ook 'ProfielBekend' terug om aan de PC30 omgeving door te geven
De xmlrpc server moet secure ldap sessies kunnen maken. Daar is de module php5-sasl voor nodig:
    dat het wachtwoord niet veranderd mag worden door PC30
  apt-get install ldap-utils
- A.6 GeefBezoekersOverzicht
  apt-get install php5-ldap
  * geef nu ook 'Locatie' terug indien van toepassing
  apt-get install libapache2-mod-php5
- A.7 GeefLocaties
 
  * nieuwe aanroep
Als je ldaps wilt gebruiken (port 636), dan is sasl nodig:
- I.1 HCC-forum / GebruikerBestaatControle
  apt-get install php5-sasl
  * parameters aangepast
 
  * authenticatie op basis van hccLogin + userPassword of lidnummer + hcc-code
== Loadbalancer akties niet naar de logbestanden schrijven ==
  * geen algemene hcc-forum authenticatie meer mogelijk
De loadbalancer haalt zeer frequent een testbestand op (/test.txt), om
- F.7 ControleerKaderlidGroep
te controleren of de xml-server operationeel is. Dat levert extreem veel
  * Nieuwe aanroep
logging op in /var/log/apache2/other_vhosts.log.
2014.02.01 Wijzigingen versie 31
 
- A.8 RegistreerGast
Pas de apache configuratie zo aan, dat logging van alle opvragingen
  * nieuwe aanroep
vanaf de loadbalancers uitgezet wordt.
- H.2 MatchPostcodeMetRegio
/etc/apache2/sites-enabled/xml-server
  * nieuwe aanroep
- nieuwe interface (losse, unieke aanroepen, niet meer gegroepeerd)
# Mark requests from loadbalancers
2014.09.27 Wijzigingen versie 32
SetEnvIf Remote_Addr "212\.72\.227\.93"          dontlog
- C.1 GeefOpgezegdeLeden hernoemd naar GeefUitgeschrevenLeden
SetEnvIf Remote_Addr "212\.72\.227\.94"          dontlog
- I.3 GeefhccEindDatum
SetEnvIf Remote_Addr "172\.31\.1\.249"          dontlog
  * nieuwe aanroep
SetEnvIf Remote_Addr "172\.31\.1\.250"          dontlog
- Action=7 en Action=8 toegevoegd aan de HenZ interface
CustomLog ${APACHE_LOG_DIR}/access.log common env=!dontlog
2014.12.12 Wijzigingen versie 33
- F.1 / F.2 / F.3 HCC-kader / IsKaderLid
  * extra output parameter (mail, mailHccnet, hccKaderForward)
- F.8 HCC-kader / ZetKaderForward
  * nieuwe aanroep
2015.05.06 Wijzigingen versie 34
- GeefMijnGegevens
  * nieuwe aanroep
- ValideerPCActiveAbonnee
  * vervallen
- 1.4 GebruikerBestaatControle
  * extra output parameter (hccKaderForward)
- D.1 HCCpartner/ControleerHCCLidmaatschap
  * optionele extra output parameter (ExtraInfo)
2015.09.27 Wijzigingen versie 35
- HeeftForumCredentials
  * vervallen
2015.11.20 Wijzigingen versie 36
- SchrijfNietlidInOpBulletin
  * nieuwe aanroep
2015.12.13 Wijzigingen versie 37
- serverID als optionele parameter
- SchrijfNietlidInOpBulletin
  * Maak velden optioneel
2016.01.05 Wijzigingen versie 38
- A.7 GeefLocaties
  * optionele parameter JoomlaFilter
- F.4 GeefAlleGroeperingen
  * optionele parameter JoomlaFilter
- F.5 GeefAlleKaderRollen
  * optionele parameter JoomlaFilter
2016.01.15 Wijzigingen versie 39
- H.3 GeefMijnGegevens
  * geeft nu ook hccOptIn terug
  * geeft nu ook JoomlaToken terug
- H.4 PasOptInKeuzeAan
  * nieuwe aanroep
- SiteID en RemoteID als optionele parameter
2016.03.17 Wijzigingen versie 40
- H.5 ZoekKaderLeden
  * nieuwe aanroep
2016.03.20 Wijzigingen versie 41
- ServerID, SiteID en RemoteID als optionele parameters bij alle aanroepen
- A.7 GeefLocaties
  * optionele parameter KadernetFilter
- A.9 GeefLocatieNamen
  * optionele parameter KadernetFilter
- F.4 GeefAlleGroeperingen
  * optionele parameter KadernetFilter
- F.5 GeefAlleKaderRollen
  * optionele parameter KadernetFilter
- F.6 WijzigHccRol
  * vervallen
- F.7 IsGroeperingsKaderlid
  * vervallen
- 8.3 IsDezePseudoniemNogBeschikbaar
  * vervallen
- 2.7 SchrijfOptInKeuzen
  * vervallen
- 2.5 WijzigGebruikersGegevens (hccPseudoniem)
  * vervallen
- H.2 MatchPostcodeMetRegio
  * vervallen
2016.04.02 Wijzigingen versie 42
- H.6 GeefMijnKaderDetails
  * nieuwe aanroep
2016.07.03 Wijzigingen versie 43
- Ubuntu 16.04 aanpassingen (PHP versie 7) beschreven
2016.09.01 Wijzigingen versie 44
- H.5 ZoekKaderLeden
  * extra parameter 'hccMobiel'
2016.10.13 Wijzigingen versie 45
- H.3 GeefMijnGegevens (dedecated Joomla aanroep)
  * hccForumLogin weg als parameter
  * Als het om een webmaster gaat, vul dan eventueel hccRegio of hccIG aan
    met die groepering, ook als hij geen lid is van die groepering
- I.4 GebruikerBestaatControle
  * hccForumLogin weg als parameter
2016.12.01 Wijzigingen versie 46
- 8.3 IsDezePseudoniemNogBeschikbaar teruggezet
2017.05.28 Wijzigingen versie 47
- H.7 GeefMinimaleKaderGegevens (t.b.v. eenmalige kadermailing)
- H.8 ZetMinimaleKaderGegevens  (t.b.v. eenmalige kadermailing)
2017.09.01 Wijzigingen versie 48
- A.10 SchrijfNietlidInOpBulletin nu alleen voor 1 bulletin tegelijk
- 2.2 WijzigGebruikersGegevens (op basis van gebruikersnaam en wachtwoord)
      is vervallen (was een oude Drupal aanroep)
- A.3 ZoekGroeperingsLid geeft ook hccKaderToonMobiel terug
- H.7 GeefMinimaleKaderGegevens geeft ook hccKaderToonMobiel terug
2017.11.14 Wijzigingen versie 49
- A.3 ZoekGroeperingsLid geeft geen hccKaderToonMobiel meer terug
- A.3 ZoekGroeperingsLid geeft alleen hccMobiel als hccKaderToonMobiel dat toestaat
2018.02.18 Wijzigingen versie 50
- H.6 GeefMijnKaderDetails geeft ook hccKaderToonMobiel terug
- H.9 PasKaderGegevensAan
  * nieuwe aanroep
- H.3 GeefMijnGegevens geeft 3 extra parameters terug (hccKaderMail, hccKaderForward,
  hccKaderToonMobiel)
- JoomlaTokens worden gevalideerd op siteID, niet langer op serverID
- diverse aanroepen kunnen nu ook via de bezoekersregistratie-proxy aangeroepen worden.
  Dan zullen ze hccLidnr en JoomlaToken als extra parameter moeten hebben:
  (GeefAlleGroeperingen, GeefAlleKaderRollen, GeefLocaties, GeefLocatieNamen)
  De bezoekersregistratie aanroepen hebben enkel JoomlaToken als extra parameter nodig:
  (LidBezoektBijeenkomst, GeefBezoekersOverzicht)
2018.02.26 Wijzigingen versie 51
- H.3 GeefMijnGegevens geeft extra parameter hccMobiel terug
- H.9 PasKaderGegevensAan kan nu ook kadermail password aanpassen
- K.1 ValideerToken
  * nieuwe aanroep
- K.2 ValideerHCCCode
  * nieuwe aanroep
2018.03.17 Wijzigingen versie 52
- H.3 Haal al mijn gegevens
  Extra optie 'compact' om alleen essentiele resultaten te verkrijgen
  (t.b.v. de Android bezoekersregistratie applicatie)
2018.03.25 Wijzigingen versie 53
- I.2 IsHCCLid
  (Oude aanroep teruggezet, wordt nog in vraagbaak module gebruikt)
2018.07.01 Wijzigingen versie 54
  * A.1 beheer authenticatie op basis van lidnummer + hccCode (tbv VZ-portal)
  * A.2 HaalPC30Token weggehaald
2018.08.22 Wijzigingen versie 55
  * 1.2 GebruikerBestaatControle' (op basis van hccLogin en userPassword) weggehaald
  * 1.4 GebruikerBestaatControle' (op basis van zoekHccLogin of zoekHccLidnr) weggehaald
  * 2.8 HaalOptInLijst weggehaald
  * E.1 PasKaderWachtwoordAan weggehaald
  * F.1 IsKaderLid (op basis van hccLidnr en hccCode) weggehaald
  * F.3 IsKaderLid (op basis van beheerdernaam en beheerderwachtwoord) was al weg
  * F.8 ZetKaderForward weggehaald
  * H.1 IsGroeperingsLid weggehaald
  * H.6 GeefMijnKaderDetails weggehaald
  * H.7 GeefMinimaleKaderGegevens weggehaald
  * H.8 ZetMinimaleKaderGegevens weggehaald
  * K.1 ValideerHCCCode weggehaald
  * K.2 ValideerToken weggehaald
  * H.3 GeefMijnGegevens geeft omvang kader mailbox mee terug
2018.11.06 Wijzigingen versie 56
  Nieuwe aanroepen t.b.v. forum en vraagbaak autorisaties
  * L.1 MaakOnderwerp
  * L.2 VerwijderOnderwerp
  * L.3 GeefOnderwerpen
  * L.4 MuteerOnderwerp
  * L.5 MuteerOnderwerpAutorisatie
  * L.6 ToonOnderwerpAutorisatie
  * H.5 ZoekKaderLeden heeft compact optie
2018.11.16 Wijzigingen versie 57
  * L.5 MuteerOnderwerpAutorisatie kent nu ook RED(acteur)
2018.12.17 Wijzigingen versie 58
  * A.11 GeefBezoekersAantallen (nieuwe aanroep)
  * H.10 PasUserWachtwoordAan (nieuwe aanroep)
2019.02.21 Wijzigingen versie 59
  * A. 6 GeefBezoekersOverzicht geeft enkel lijst van bezoekers laatste bijeenkomst
2019.10.26 Wijzigingen versie 60
  * A.4 Schrijf bezoekers niet meer automatisch in op bulletins
  * H.4  PasOptInKeuzeAan kan ook door LA aangeroepen worden
  Nieuwe aanroepen t.b.v. eigen implementatie van mijn.hcc.nl in de Joomla modules
  * H.11 PasPseudoniemAan
  * H.12 ValideerWachtwoordEisen
  * H.13 PasWachtwoordAan (1: op JoomlaToken, 2: op PWResetToken)
  * H.14 MaakPWResetToken
  * H.15 ValideerPWResetToken
  * H.16 RuimJoomlaTokenOp
  * A.12 GeefAlleBulletins
  * A.13 ExpandeerPostcode
  * A.14 UpdateContactGegevens
  * A.15 UpdateContactEmail
  * A.16 UpdateVoornaam
  * A.17 UpdateVoorletters
  * A.18 NormaliseerTelefoon
  * A.19 UpdateTelefoon
  * A.20 UpdateMobiel
  * A.21 HaalIGBedragenOp
  * A.22 HaalTariefGroepenOp
  * A.23 PasInteressegroepAan
  * F.10 MuteerGroeperingSamenstelling
  * A.24 GeefSSOUrls
  Aanpassingen gemaakt aan
  8.1 MaakGebruikerAan
  F.5 GeefAlleKaderRollen
2020.01.04 Wijzigingen versie 61
  Nieuwe aanroepen t.b.v. IDEAL betaling hobbynet abonnees
  H.17 GeefAantalDomeinen
2020.01.06 Wijzigingen versie 62
  Nieuwe aanroepen t.b.v. Cayentis (CRM webproxy) implementatie
  * M.1  Upload_CSV_bestand
  * M.2  SchrijfNieuwLidIn
  * M.3  Verwerk_JSON_mutatie
  * M.4  ISO_landcode
  * M.5 MuteerAanmeldingsformulier
  * M.6  HaalAanmeldingsformulier
  * M.7 GeefFactuurOverzicht
  * M.8 HaalFactuur
  * A.25 UpdateNAW
  Vervallen aanroepen
  * A.14 UpdateContactGegevens
  * A.15 UpdateContactEmail
  * A.16 UpdateVoornaam
  * A.17 UpdateVoorletters
  * A.19 UpdateTelefoon
  * A.20 UpdateMobiel
  Aangepaste aanroepen
  * A.23 PasInteressegroepAan
2020.03.27 Wijzigingen versie 63
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  * H.18 ResetHCCCode
  * H.19 PasHccLoginAan
2020.04.10 Wijzigingen versie 64
  Nieuwe aanroepen
  * A.26 VerwijderNietLid
  Aanpassingen gemaakt aan
  * A.1  ZoekHCCLid: nieuwe zoekoptie 'niet_leden'
  Opnieuw geimplementeerd
  * A.20 UpdateMobiel
2020.11.26 Wijzigingen versie 65
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  * H.20 MaakTestLogin
  Aanpassingen gemaakt aan
  - H.3 GeefMijnGegevens: optionele parameter 'hccGroepering'
  Het werken met een testaccount heeft impact op de volgende aanroepen:
  - G.7  GeefFactuurOverzicht
  - M.8  HaalFactuur
  - L.1  MaakOnderwerp
  - H.14 MaakPWResetToken
  - F.10 MuteerGroeperingSamenstelling
  - L.4  MuteerOnderwerp
  - L.5 MuteerOnderwerpAutorisatie
  - H.19 PasHccLoginAan
  - A.23 PasInteressegroepAan
  - H.9  PasKaderGegevensAan
  - H.4 PasOptInKeuzeAan
  - H.11 PasPseudoniemAan
  - H.13 PasWachtwoordAan
  - H.18 ResetHCCCode
  - A.20 UpdateMobiel
  - A.25 UpdateNAW
  - L.2  VerwijderOnderwerp
  - A.5 VraagLidgegevensTokenAan
  - 2.1  WijzigGebruikersGegevens
  - H.3 GeefMijnGegevens geeft extra parameter terug (testaccount)
2021.08.01 Wijzigingen versie 66
  Aanpassingen gemaakt aan
  - H.4 PasOptInKeuzeAan werkt nu ook op basis van OptOutToken
2021.10.10 Wijzigingen versie 67
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  - H.21 UpdateOTP
  Aanpassingen gemaakt aan
  - H.3 GeefMijnGegevens geeft extra parameters terug (hccOtpKey en hccOtep)
2021.10.13 Wijzigingen versie 68
  Aanpassingen gemaakt aan
  - H.21 UpdateOTP
2021.11.03 Wijzigingen versie 69
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  - H.22 HeeftOtpKey
2021.12.24 Wijzigingen versie 70
  Vervallen aanroepen
  - A.11 GeefBezoekersAantallen (laatste aanroep 2018.12.15)
  - I.2 IsHCCLid (vraagbaak module al minstens 2 jaar niet meer gebruikt)
  - 2.6  HaalOptInKeuzen (niet meer in gebruik sinds 2020.03.01)
2022.03.24 Wijzigingen versie 71
  - I.2 IsHCCLid
  (Oude aanroep teruggezet, Esther vraagt opnieuw om deze functionaliteit tbv vraagbaak, ticket 2022032394001082)
</pre>
 
= Aanpassingen aan de Apache omgeving =
 
== Apache modules (PHP 8) ==
Ubuntu 20.04 wordt standaard met PHP versie 7.0 uitgeleverd.
 
In /etc/apt/sources.list.d/ondrej-ubuntu-php-focal.list dient de volgende regel opgenomen te worden:
  deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main
 
De opdrachten om de modules op te halen zijn:
apt-get install php-xmlrpc
apt-get install apache2
  apt-get install ldap-utils
  apt-get install php-ldap
  apt-get install libapache2-mod-php
  apt-get install php-gnupg
 
= algemeen =
 
Het encrypted backup script is verplaatst naar '/usr/local/hobbynet/local' en hernoemd naar 'backup-encrypted.bash'.
Dit is omdat deze niet mee mag worden gesynchroniseerd.
 
Tevens wordt 1x per dag /usr/local/hobbynet/bin gesynchroniseerd (1-richting van hcc-ldap-lb1 naar hcc-ldap-lb2)
 
== Aanpassingen in de firewall ==
Op de server waar de XML-RPC server staat, moeten enkele firewall aanpassingen gemaakt worden.
* inkomend: sta TCP 443 toe vanaf het interne netwerk (www-prod, www-test), en vanaf eventuele andere plekken die we expliciet toe willen staan.
* inkomend: sta TCP 443 toe vanaf mijn.hcc.nl (XML-RPC aanroepen vanaf de portal)
* inkomend: sta TCP 443 toe vanaf service.hccnet.nl toe (XML-RPC aanroep GeefUitgeschrevenLeden vanuit HenZ)
* uitgaand: sta TCP 443 naar service.hccnet.nl toe (XML-RPC aanroepen naar HenZ)


= Firewall algemeen =
== Aanpassingen aan AppArmor ==
In de file /etc/hobby-firewall/hobby-firewall.local wordt het script
Alhoewel technisch gezien dit bij slapd behoort, neem ik het toch hier op.
'/usr/local/hobbynet/bin/gen_fw.sh' aangeroepen.
Deze haalt de IP adressen op uit ldap.
(.local omdat we dit ook zo doen op de webservers).


De firewall wordt 4 x per dag herstart en /etc/hobby-firewall wordt
Als het Hobbynet certificaat in de map /disk/site/etc/ssl/hobby.nl/ wordt neergezet, dan zal apparrmor de toegang tot de certificaten blokkeren. Neem daarom in de '''local''' directory van apparmor het volgende op:
gesynchroniseerd (1-richting van lb1 naar lb2) met de volgende crontab
# /etc/apparmor.d/local/usr.sbin.slapd
entries:
# Site-specific additions and overrides for usr.sbin.slapd.
# For more details, please see /etc/apparmor.d/local/README.
#include <abstractions/ssl_certs>
/disk/site/etc/ssl/hobby.nl/ r,
/disk/site/etc/ssl/hobby.nl/* r,


Op lb1:
= CRM (Azure) proxy herstarten =
  0  0 * * * /etc/init.d/hobby-firewall restart        >/dev/null
Als er indicaties zijn dat niet alle JSON berichten meer vanuit het CRM aangeboden worden aan de XML-RPC server, dan kan het helpen om de CRM proxy te herstarten
55  5 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
  0  6 * * * /etc/init.d/hobby-firewall restart        >/dev/null
55 11 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
  0 12 * * * /etc/init.d/hobby-firewall restart        >/dev/null
55 17 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
  0 18 * * * /etc/init.d/hobby-firewall restart        >/dev/null
55 23 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null


Op lb2:
* Ga naar https://portal.azure.com/
15  6 * * * /etc/init.d/hobby-firewall restart >/dev/null
* Login met zelfde account als voor het CRM
15 12 * * * /etc/init.d/hobby-firewall restart >/dev/null
* Soms krijg je een popup. Die kan je weg klikken, je wilt geen rondleiding
15 18 * * * /etc/init.d/hobby-firewall restart >/dev/null
* Klik op '''hccdyn01-aps-crm01''' voor productie en '''hccdyn01-aps-dev01''' voor test
15  0 * * * /etc/init.d/hobby-firewall restart >/dev/null
* En dan kan je op opnieuw starten klikken.
 
Het encrypted backup script is verplaatst naar '/usr/local/hobbynet/local' en hernoemd naar 'backup-encrypted.bash'.
Dit is omdat deze niet mee mag worden gesynchroniseerd.
 
Tevens wordt 1x per dag /usr/local/hobbynet/bin gesynchroniseerd (1-richting van hcc-ldap-lb1 naar hcc-ldap-lb2)
 
== Aanpassingen in de firewall ==
Op de server waar de XML-RPC server staat, moeten enkele firewall aanpassingen gemaakt worden.
* inkomend: sta TCP 443 toe vanaf het interne netwerk (www-prod, www-test), en vanaf eventuele andere plekken die we expliciet toe willen staan.
* inkomend: sta TCP 443 toe vanaf mijn.hcc.nl (XML aanroepen vanaf de portal)
* inkomend: sta TCP 443 toe vanaf service.hccnet.nl toe (xml aanroep GeefUitgeschrevenLeden vanuit HenZ)
* uitgaand: sta TCP 443 naar service.hccnet.nl toe (xml aanroepen naar HenZ)
* uitgaand: sta TCP 990 en 5000-6000 naar Apps.HCC.local (FTPS verkeer naar de HCC server bij Tosch)

Latest revision as of 14:43, 10 April 2022

XML-RPC interface

De LDAP server kan direct gemuteerd worden via een LDAP koppeling. Zie de standaard LDAP pagina voor de uitleg welke poorten daarvoor gebruikt kunnen worden.

Daarnaast is er de wens ontstaan om via een standaard protocol met de LDAP omgeving te kunnen communiceren. Er is hiertoe een XML-RPC koppeling ontwikkeld. XML-RPC is een standaard interface, waarmee het mogelijk is om vanuit diverse omgevingen op een gestandaardiseerde manier te communiceren.

Globale functie omschrijving

  • Algemene aanroepen
    • Controleer of een gebruiker bestaat
    • Wijzig het wachtwoord ('userPassword')
    • Zoek een gebruiker (t.b.v. kantoor en/of LA-akties groeperingssecretaris)
    • Maak een gebruiker aan (geef gebruiker een andere hccLogin waarde, maak ook bij HCCnet deze gebruiker aan)
    • Controleer of een gebruiker zijn profiel al doorlopen heeft
    • Haal de lijst met opgeheven accounts op
    • Haal de lijst met bulletins van een hcc lid (OptIn)
  • Aanroepen t.b.v. hcc partners
    • Controleer of lidnummer/postcode correct is
    • Controleer of lidnummer/postcode correct is, en tevens ingeschreven staat bij een specifieke IG
  • Joomla template site functies (op basis van JoomlaToken)
    • Maak een JoomlaToken
    • Ruim een JoomlaToken op
    • Pas mijn OptIn (bulletin inschrijving) aan
    • Regel alles rondom Onderwerpen en de autorisatie hiervan
    • Pas mijn wachtwoord aan
  • Joomla kadernet site functies (op basis van JoomlaToken)
    • Zoek een hcc kaderlid (t.b.v. de kaderleden zoekpagina)
    • Pas mijn kadermail forwarding aan en toon ja/nee mijn GSM nummer
    • Pas het kadernet e-mail wachtwoord aan
    • Haal de lijst met alle groeperingen op
    • Haal de lijst met alle kaderrollen op
  • Joomla hcc.nl site (op basis van JoomlaToken)(mijn.hcc.nl vervanging)
    • Pas mijn adresgegevens aan
    • Pas mijn voorletters, voornaam, pseudoniem, telefoonnummer, GSM nummer etcetera aan
    • Schrijf me in of uit op een bulletin
    • Toon info over de kosten van een IG lidmaatschap
    • Voer een wachtwoord reset uit op basis van een PWResetToken (een variant op JoomlaToken)
    • Vraag een nieuwe HCC code aan, en stuur die per SMS
  • Joomla hobby.nl site (op basis van JoomlaToken)(t.b.v. IDEAL betaling)
    • Haal het aantal hobbyDomains op
  • Aanroepen t.b.v. CRM (Microsoft Dynamics Cloud) koppeling
    • Haal de dagelijkse synchronisatie bestanden op
    • Werk in het CRM dan wel in LDAP de NAW gegevens bij
    • Werk in het CRM dan wel in LDAP de IG gegevens van een lid bij
  • HenZ
    • Haal de lijst met opzeggers op
    • Valideer de opzegdatum van een opgegeven gebruiker

Authenticatie

Alle aanroepen gebeuren op basis van authenticatie vanuit de aanroeper. Dit valt uiteen in de volgende categorieën:

  • gebruikersnaam ('hccLogin') en wachtwoord ('userPassword')
  • hcc lidnummer ('hccLidnr'), Joomla token ('JoomlaToken') en website ('siteID')
  • hcc lidnummer ('hccLidnr') en hcc code ('hccCode')
  • beheerders-DN ('beheerLogin') en beheerders wachtwoord ('beheerPassword')
  • partner-DN ('partnerLogin') en partner wachtwoord ('partnerPassword')

Aanroepen, gedaan via de bezoekersregistratie-proxy

(de bezoekersregistratie proxy is een mislukt project tbv de Android app van René Prins) (deze proxy bestaat niet meer)
Diverse aanroepen kunnen ook via de bezoekersregistratie-proxy aangeroepen worden.
Dan zullen ze hccLidnr en JoomlaToken als extra parameter moeten hebben:

  • GeefAlleGroeperingen
  • GeefAlleKaderRollen
  • GeefLocaties
  • GeefLocatieNamen

De bezoekersregistratie aanroepen hebben 'JoomlaToken' als extra parameter nodig:

  • LidBezoektBijeenkomst
  • GeefBezoekersOverzicht

De aanroepen die over de proxy uitgevoerd worden dienen voorafgegaan te worden door een aanroep naar

  • GeefMijnGegevens (dit geeft na validatie immers 'JoomlaToken' terug)

Resultaten

Alle aanroepen geven de volgende elementen terug:

  • Naam van de uitgevoerde procedure ('Action')
  • Resultaat van de uitgevoerde procedure ('Status')
  • Een tekstuele vertaling van het resultaat dan wel de foutmelding ('Message')
  • Tijdens de ontwikkelfase kan er debug-info teruggeleverd worden ('ExtraInfo')

Daarnaast geven specifieke aanroepen extra resultaten terug

Technische omschrijving

XML-RPC beschrijving van acties in hcc.nl LDAP database

2022.03.24 HaVe
XML-RPC Hobbynet versie 71.

Kort overzicht

Dit is een lijst met alle XML-RPC aanroepen. In het volgende hoofdstuk worden ze in detail besproken.

echo				(partners)
ExpandeerPostcode               (Joomla module Bas, tbv verhuizingen)
GebruikerBestaatControle	(Joomla sites)
GeefAantalDomeinen              (Joomla module Bas)
GeefAlleBulletins               (Joomla module Bas)
GeefAlleGroeperingen		(kadersite, forum, secr. portal, kantoor portal, hobbynet portal)
GeefAlleKaderRollen		(forum, secr. portal, kantoor portal, hobbynet portal, Joomla module Bas)
GeefBezoekersOverzicht		(bezoekersregistratie)
GeefFactuurOverzicht		(Joomla module Bas)
GeefhccEindDatum		(HenZ)
GeefKadermailGegevens		(kantoor portal)
GeefLocatieNamen		(kadersite, secr. portal, kantoor portal, hobbynet portal)
GeefLocaties			(kadersite, secr. portal, kantoor portal, hobbynet portal)
GeefMijnGegevens		(Joomla inlog module Bas)
GeefMijnLidnummer		(beheer.hcc.nl secretaris portal)
GeefOnderwerpen                 (Joomla template sites)
GeefSSOUrls			(Joomla module Bas)
GeefUitgeschrevenLeden		(Joomla sites, HenZ)
HaalAanmeldingsformulier	(Joomla module Bas)
HaalFactuur			(Joomla module Bas)
HaalIGBedragenOp                (Joomla module Bas)
HaalTariefGroepenOp		(kantoor portal)
HCCpartner			(Partner aanroep)
HCCpartners			(Partner aanroep)
HeeftOtpKey                     (Joomla Hobbynet/LA aanroep)
IsDezeNaamNogBeschikbaar	(aangeroepen vanuit de CRM omgeving)
IsDezePseudoniemNogBeschikbaar	(kantoor portal)
IsHCCLid			(vraagbaak aanroep)
IsKaderLid			(in veel apps gebruikt)
LidBezoektBijeenkomst		(bezoekersregistratie)
MaakGebruikerAan		(mijnhcc.nl, maak hccnet account aan en ldap gebruikersnaam)
MaakOnderwerp                   (Joomla template sites)
MaakPWResetToken                (Joomla module Bas)
MaakTestLogin                   (Joomla module Bas)
MuteerAanmeldingsformulier	(Joomla module Bas)
MuteerGroeperingSamenstelling   (Joomla kadernet module Bas)
MuteerOnderwerp                 (Joomla template sites)
MuteerOnderwerpAutorisatie      (Joomla template sites)
NormaliseerTelefoon             (Joomla module Bas)
PasHccLoginAan			(Joomla module Bas)(enkel Hobbynet)
PasInteressegroepAan            (Joomla module Bas)
PasKaderGegevensAan		(kadersite, Joomla module Bas)
PasOptInKeuzeAan		(Joomla module Bas)
PasPseudoniemAan		(Joomla module Bas)
PasUserWachtwoordAan		(beheer.hcc.nl Hobbynet gebruikers portal)
PasWachtwoordAan		(Joomla module Bas)
RegistreerGast			(bezoekersregistratie)
ResetHCCCode                    (Joomla module Bas)
RuimJoomlaTokenOp               (Joomla module Bas)
SchrijfNietlidInOpBulletin      (Joomla site bulletin module Bas)
SchrijfNieuwLidIn               (Joomla CRM module Bas)
ToonOnderwerpAutorisatie        (Joomla template sites)
UpdateMobiel                    (Joomla module Bas)
UpdateNAW                       (Joomla module Bas)
UpdateOTP                       (Joomla module Bas)
Upload_CSV_bestand              (CRM webproxy)
ValideerPWResetToken            (Joomla module Bas)
ValideerWachtwoordEisen		(Joomla module Bas)
Verwerk_JSON_mutatie            (CRM webproxy)
VerwijderNietLid		(Joomla beheer module Bas)
VerwijderOnderwerp              (Joomla template sites)
VraagLidgegevensTokenAan	(bezoekersregistratie)
WijzigGebruikersGegevens	(kantoor en Joomla template sites, ww aanpassen van gebruiker)
ZoekGroeperingsLid		(secr. portal, kantoor portal, hobbynet portal)
ZoekHCCLid			(VZ portal)
ZoekKaderLeden			(Joomla kadernet module Bas)

HCC-ldap en/of HCC-net aanroepen

// ** Joomla sites, www.hcc.nl **
// 1.1 controleer of een gebruiker bestaat - optie 1
// (authenticatie op basis van hccLidnr en hccCode)
// Alleen bedoeld om gebruikers op www.hcc.nl op basis van het lidnr het ww te laten wijzigen
  $request = xmlrpc_encode_request(
    'GebruikerBestaatControle',
    array(
      'hccLidnr' => $hccLidnr,
      'hccCode'  => $hccCode,
     ['ServerID' => gethostname(),] 
     ['SiteID'   => $siteID,]
     ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => $method,
    'Status'  => 'TRUE',
    'Message' => 'Gebruikersgegevens opgevraagd');
    if ($hccLidnr      != '') { $reply['hccLidnr']      = $hccLidnr;      }
    if ($hccLogin      != '') { $reply['hccLogin']      = $hccLogin;      }
    if ($hccPseudoniem != '') { $reply['hccPseudoniem'] = $hccPseudoniem; }
    if ($cn            != '') { $reply['cn']            = $cn;            }
    if ($sn            != '') { $reply['sn']            = $sn;            }
    if ($mail          != '') { $reply['mail']          = $mail;          }
    if ($mailHccnet    != '') { $reply['mailHccnet']    = $mailHccnet;    }
    if ($hccRegio      != '') { $reply['hccRegio']      = $hccRegio;      }
    if ($hccIG         != '') { $reply['hccIG']         = $hccIG;         }
    if ($hccRol        != '') { $reply['hccRol']        = $hccRol;        }
    if ($ProfielBekend != '') { $reply['ProfielBekend'] = $ProfielBekend; }

// ** Portal mijn.hcc.nl **
// 2.1 wijzig wachtwoord - optie 1
// op basis van hccLidnummer en hccCode 
// Essentiele aanroep, gebruikt vanuit mijnhcc.nl (lidnr + hccCode)
// Ook gebruikt t.b.v. wachtwoord-vergeten procedure op de Joomla template sites
// Als de profielpagina nog niet is doorlopen wordt deze aanroep afgekeurd.
//
// Ook gebruikt om gebruiker rechtstreeks vanaf Joomla template sites wachtwoord te
// laten aanpassen (op basis van lidnummer en hcc code)
//
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
  $request = xmlrpc_encode_request(
    'WijzigGebruikersGegevens',
    array(
      'hccLidnr'           => $hccLidnr,
      'hccCode'            => $hccCode,
      'nieuw_userPassword' => $nieuw_userPassword,
     ['ServerID'           => gethostname(),] 
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'   => 'WijzigGebruikersGegevens',
    'Status'   => 'TRUE',
    'Message'  => 'Gebruikersgegevens gewijzigd',
    'hccLogin' => $hccLogin,
    'cn'       => $cn,
    'sn'       => $sn);

// 2.3 wijzig wachtwoord - optie 3
// (t.b.v. VZ-portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
  $request = xmlrpc_encode_request(
    'WijzigGebruikersGegevens',
    array(
      'beheerLogin'        => $beheerLogin,    // beheerder lidnummer
      'beheerPassword'     => $beheerPassword, // beheerder hccCode
     ['hccLidnr'           => $hccLidnr,]
     ['hccLogin'           => $hccLogin,]
      'nieuw_userPassword' => $nieuw_userPassword,
     ['ServerID'           => gethostname(),] 
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress]));

// ** Portal mijn.hcc.nl **
// ** t.b.v. 1e keer doorlopen van de profielpagina **
// 8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gebruikersnaam, pseudoniem 
//     en wachtwoord tevens in LDAP op
// (authenticatie op basis van hcc lidnummer en hcc-code)
// ** Deze gegevens worden doorgezet naar hccnet.nl (action=4) **
// 
  $request = xmlrpc_encode_request(
    'MaakGebruikerAan',
    array(
      'hccLidnr'            => $hccLidnr,
      'hccCode'             => $hccCode,
      'nieuw_hccLogin'      => $nieuw_hccLogin,
      'nieuw_userPassword'  => $nieuw_userPassword,
      'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem,
     ['ServerID'            => gethostname(),] 
     ['SiteID'              => $siteID,]
     ['RemoteID'            => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'        => 'MaakGebruikerAan',
    'Status'        => 'TRUE',
    'Message'       => 'Gebruiker aangemaakt',
    'mail'          => $mail,
    'hccPseudoniem' => $hccPseudoniem);
Output negatief:
  $reply = array(
    'Action'  => 'MaakGebruikerAan',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials'       |
                 'Gebruikersnaam bestaat al'  |
                 'Pseudoniem bestaat al'      |
                 'Gegevenscombinatie onjuist' |
                 'Vul alle verplichte velden in!');

// H.3 Haal al mijn gegevens
// (wordt gebruikt door de Joomla inlogmodule)
// Voor gebruik over de proxy t.b.v. de Android app kan compact=TRUE meegegeven worden.
// In dat geval worden enkel de meest essentiele gegevens teruggestuurd
// Voor gebruik na MaakGebruikerAan kan deze functie ook op basis van hccLidnr en JoomlaToken
// worden aangeroepen
// De optionele parameter 'PrevSiteID' is bedoeld voor single-sign-on. Op basis van JoomlaToken,
// hccLidnr en PrevSiteID worden dan de credentials gevalideerd. Als die kloppen, geeft deze aanroep
// een 2e JoomlaToken terug, maar dan uitgegeven op basis van SiteID.
// Als PrevSiteID leeg is, dan wordt het token op basis van siteID gevalideerd.
$request = xmlrpc_encode_request(
    'GeefMijnGegevens',
    array(
     ['hccLogin'     => $hccLogin,
      'userPassword' => $userPassword,]
     ['hccLidnr'     => $hccLidnr,
      'JoomlaToken'  => $JoomlaToken,]
     ['PrevSiteID'   => $PrevSiteID,]
     ['compact'      => $compact,]        // leeg of 'TRUE'
     ['hccGroepering'=> $hccGroepering,]  // Een testgebruiker mag alleen op deze site inloggen
      'ServerID'     => gethostname(), 
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'             => 'GeefMijnGegevens',
    'Status'             => 'TRUE',
    'Message'            => 'Gebruikersgegevens opgevraagd',
    'hccLidnr'           => $hccLidnr,
    'hccRegio'           => $hccRegio,
    'hccIG'              => $hccIG,
    'hccRol'             => $hccRol,
    'hccAutorisatie'     => $hccAutorisatie,
    'cn'                 => $cn,
    'sn'                 => $sn,
    'JoomlaToken'        => $JoomlaToken,
   ['hccLogin'           => $hccLogin,
    'hccPseudoniem'      => $hccPseudoniem,
    'givenname'          => $givenname,
    'hccAanhef'          => $hccAanhef,
    'hccGeslacht'        => $hccGeslacht,
    'hccTussenVoegsels'  => $hccTussenVoegsels,
    'hccAchternaam'      => $hccAchternaam,
    'hccStraatnaam'      => $hccStraatnaam,
    'hccHuisnummer'      => $hccHuisnummer
    'hccPostcode'        => $hccPostcode,
    'hccWoonplaats'      => $hccWoonplaats,
    'hccLand'            => $hccLand,
    'hccTelefoon'        => $hccTelefoon,
    'mail'               => $mail,
    'mailHccnet'         => $mailHccnet,
    'hccKaderMail'       => $hccKaderMail, 
    'hccKaderForward'    => $hccKaderForward,
    'hccKaderToonMobiel' => $hccKaderToonMobiel,
    'hccOptIn'           => $hccOptIn,
    'ProfielBekend'      => $ProfielBekend,
    'hccBeginDatum'      => $hccBeginDatum,
    'testaccount'        => is_testaccount(),     // 'TRUE' | 'FALSE'
    'hccOtpKey'          => $hccOtpKey,
    'hccOtep'            => $hccOtep,
   ['kadermail_omvang'           => $Formaat,     // in Mb
    'kadermail_aantal_inbox'     => $aantal_inbox,
    'kadermail_aantal_nieuw'     => $aantal_nieuw,
    'kadermail_laatst_opgehaald' => $laatst_opgehaald;]]);

Output negatief:
  $reply = array(
    'Action'  => 'GeefMijnGegevens',
    'Status'  => 'FALSE',
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');

// ** t.b.v. aanpassen van de opt-in keuzes op een Joomla site **
// H.4 Pas 1 opt-in van een lid aan
// (LET OP: authenticatie op basis van hccLidnr, JoomlaToken en siteID)
//          of
//          authenticatie op basis van hccLidnr en OptOutToken (voor een directe uitschrijving door een lid)
// Als hccLidnummer gevuld is, dan is dat het lidnummer waar de mutatie op moet worden uitgevoerd.
// Dat kan alleen als de aanvrager HCC#LAD of HN#WM als rol heeft
  $request = xmlrpc_encode_request(
    'PasOptInKeuzeAan',
    array(
      'hccLidnr'     => $hccLidnr,
     ['JoomlaToken'  => $JoomlaToken,]
     ['OptOutToken'  => $OptOutToken,]
     ['hccLidnummer' => $hccLidnummer,]
      'hccOptIn'     => $hccOptIn,
      'actie'        => 'Nieuw' | 'Weg',
      'ServerID'     => gethostname(), 
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'   => 'PasOptInKeuzeAan',
    'Status'   => 'TRUE',
    'Message'  => 'OptIn aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'PasOptInKeuzeAan',
    'Status'  => 'FALSE',
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials | Token ongeldig | Token verlopen');
    
// H.5 Zoek kaderleden NAW (t.b.v. de Joomla kadersite)
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// (wordt gebruikt door de Joomla kadersite module)
//
// * Er dient minstens 1 zoekcriterium opgegeven te worden.
// * Als zowel hccRegio als tegelijk ook hccIG opgegeven worden is de uitkomst onvoorspelbaar.
// * Als compact=TRUE worden enkel lidnummer, cn en sn in het antwoord gezet
$request = xmlrpc_encode_request(
    'ZoekKaderLeden',
    array(
      'hccLidnr'    => $hccLidnr,
      'JoomlaToken' => $JoomlaToken,
      'ServerID'    => gethostname(), 
      'SiteID'      => $siteID,
      'RemoteID'    => $remoteIPaddress,
     ['hccRegio'    => $hccRegio,]
     ['hccIG'       => $hccIG,]
     ['hccRol'      => $hccRol,]
     ['hccLocatie'  => $hccLocatie,]
     ['achternaam'  => $achternaam,]
     ['compact'     => $compact]));        // leeg of 'TRUE'

Output positief:
  $reply = array(
    'Action'  => 'ZoekKaderLeden',
    'Status'  => 'TRUE',
    'Message' => 'Kaderleden opgevraagd'
    'Kaderleden'      => array(
      'hccLidNummer'  => $hccLidNummer,
      'hccRol'        => $hccRol,
      'hccAanhef'     => $hccAanhef,
      'givenname'     => $givenname,
      'cn'            => $cn,
      'sn'            => $sn,
      'hccWoonplaats' => $hccWoonplaats,
      'hccTelefoon'   => $hccTelefoon,
      'hccMobiel'     => $hccMobiel,
      'hccKaderMail'  => $hccKaderMail);

Output negatief:
  $reply = array(
    'Action'    => 'ZoekKaderLeden',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials',
   ['ExtraInfo' => 'Ongeldig token']);

// H.9 PasKaderGegevensAan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// (wordt gebruikt door de Joomla kadersite module)
// Om de kaderleden hun forward in te laten stellen,
// en tegelijkertijd de opt-in / opt-out voor hccToonMobiel te laten regelen
// Kan tevens het kader email wachtwoord aanpassen
  $request = xmlrpc_encode_request(
    'PasKaderGegevensAan',
    array(
      'hccLidnr'            => $hccLidnr,
      'JoomlaToken'         => $JoomlaToken,
      'ServerID'            => gethostname(), 
      'SiteID'              => $siteID,
      'RemoteID'            => $remoteIPaddress,
      'hccKaderForward'     => $hccKaderForward,    // '' | $mail | $mailHccNet
      'hccKaderToonMobiel'  => $hccKaderToonMobiel, // 'TRUE' | 'FALSE' | 'NULL'
     ['nieuw_kaderPassword' => $nieuw_kaderPassword]));

Output positief:
  $reply = array(
    'Action'             => 'PasKaderGegevensAan',
    'Status'             => 'TRUE',
    'Message'            => 'kadergegevens aangepast');

Output negatief:
  $reply = array(
    'Action'    => 'PasKaderGegevensAan',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials',
   ['ExtraInfo' => 'Ongeldig token'|'Alleen kaderleden mogen deze aanroep uitvoeren']);

// ** Portal beheer.hcc.nl
// ** H.10 PasUserWachtwoordAan
// (laatste aanroep 2020.04.09)(niet gepoort naar Joomla, maar nog wel op oude beheer portal)
// ** Betalende Hobbynet gebruikers kunnen hiermee hun wachtwoord aanpassen
// (authenticatie op basis van hccLogin en userpassword)
  $request = xmlrpc_encode_request(
    'PasUserWachtwoordAan',
    array(
      'hccLogin'         => $username,
      'userpassword'     => $password,
      'hobbynetAccount'  => $hobbyname,
      'nieuw_wachtwoord' => $nieuw_wachtwoord,
      'ServerID'         => gethostname(),
      'SiteID'           => $serverName,
      'RemoteID'         => $remoteAddr));        
Output positief:
  $reply = array(
    'Action'  => 'PasUserWachtwoordAan',
    'Status'  => 'TRUE',
    'Message' => 'wachtwoord aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'PasUserWachtwoordAan',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials'           |
                 'Gegevenscombinatie onjuist'     |
                 'Vul alle verplichte velden in!' |
                 'Het nieuwe wachtwoord voldoet niet aan de minimale eisen!'     |
                 'account $hobbynetAccount behoort niet bij gebruiker $hccLogin' |
                 'Kan ww van account $hobbynetAccount niet aanpassen');

// ** t.b.v. aanpassen van de gebruikersinstellingen op een Joomla site **
// H.11 Pas het pseudoniem van een lid aan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'PasPseudoniemAan',
    array(
      'hccLidnr'      => $hccLidnr,
      'JoomlaToken'   => $JoomlaToken,
      'hccPseudoniem' => $hccPseudoniem,
      'ServerID'      => gethostname(),
      'SiteID'        => $siteID,
      'RemoteID'      => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'   => 'PasPseudoniemAan',
    'Status'   => 'TRUE',
    'Message'  => 'Pseudoniem aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'PasPseudoniemAan',
    'Status'  => 'FALSE',
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials' | 'Pseudoniem bestaat al');

// ** t.b.v. aanpassen van de gebruikersinstellingen op een Joomla site **
// H.12 Controleer of een opgegeven wachtwoord aan de minimum eisen voldoet
  $request = xmlrpc_encode_request(
    'ValideerWachtwoordEisen',
    array(
      'userPassword' => $userPassword,
      'ServerID'     => gethostname(),
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'   => 'ValideerWachtwoordEisen',
    'Status'   => 'TRUE',
    'Message'  => 'Wachtwoord voldoet aan de minimale eisen');
Output negatief:
  $reply = array(
    'Action'  => 'ValideerWachtwoordEisen',
    'Status'  => 'FALSE',
    'Message' => 'Wachtwoord voldoet niet aan de minimale eisen');

// ** H.13 PasWachtwoordAan
// ** Vanuit een Joomla template site kunnen gebruikers hiermee hun eigen wachtwoord aanpassen
// (authenticatie op basis van JoomlaToken, lidnummer, siteID. Extra controle via userpassword)
  $request = xmlrpc_encode_request(
    'PasWachtwoordAan',
    array(
      'hccLidnr'           => $hccLidnr,
      'JoomlaToken'        => $JoomlaToken,
      'userpassword'       => $password,
      'nieuw_userPassword' => $nieuw_userPassword,
      'ServerID'           => gethostname(),
      'SiteID'             => $serverName,
      'RemoteID'           => $remoteAddr));
Output positief:
  $reply = array(
    'Action'  => 'PasWachtwoordAan',
    'Status'  => 'TRUE',
    'Message' => 'wachtwoord aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'PasWachtwoordAan',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials'           |
                 'Gegevenscombinatie onjuist'     |
                 'Vul alle verplichte velden in!' |
                 'Het nieuwe wachtwoord voldoet niet aan de minimale eisen!');

// ** H.13.1 PasWachtwoordAan
// ** Vanuit www.hcc.nl kunnen gebruikers hiermee hun eigen wachtwoord resetten
// (authenticatie op basis van PWResetToken en hccLogin).
// (Als de aanroep geslaagd is, dan is daarna het PWResetToken ongeldig)
  $request = xmlrpc_encode_request(
    'PasWachtwoordAan',
    array(
      'hccLogin'           => $hccLogin,
      'PWResetToken'       => $PWResetToken,
      'nieuw_userPassword' => $nieuw_userPassword,
      'ServerID'           => gethostname(),
      'SiteID'             => $serverName,
      'RemoteID'           => $remoteAddr));
Output positief:
  $reply = array(
    'Action'  => 'PasWachtwoordAan',
    'Status'  => 'TRUE',
    'Message' => 'wachtwoord aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'PasWachtwoordAan',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials'           |
                 'Gegevenscombinatie onjuist'     |
                 'Vul alle verplichte velden in!' |
                 'Het nieuwe wachtwoord voldoet niet aan de minimale eisen!');

// ** H.14 MaakPWResetToken
// ** Vanuit www.hcc.nl kunnen gebruikers hiermee een wachtwoord reset aanvragen
//    Deze aanroep geeft naast het PWResetToken ook het contact emailadres mee terug,
//    zodat Joomla een reset-mail kan sturen
// (acties op basis van gebruikersnaam)
  $request = xmlrpc_encode_request(
    'MaakPWResetToken',
    array(
      'hccLogin'   => $username,
      'ServerID'   => gethostname(),
      'SiteID'     => $serverName,
      'RemoteID'   => $remoteAddr));
Output positief:
  $reply = array(
    'Action'       => 'MaakPWResetToken',
    'Status'       => 'TRUE',
    'PWResetToken' => $PWResetToken,
    'mail'         => $mail,
    'Message'      => 'Password reset token aangemaakt');
Output negatief:
  $reply = array(
    'Action'       => 'MaakPWResetToken',
    'Status'       => 'FALSE',
    'Message'      => 'Gebruiker niet gevonden');

// ** H.15 ValideerPWResetToken
// ** Vanuit www.hcc.nl kunnen gebruikers een wachtwoord reset aanvragen
//    Controleer dat het hier om een bestaand (en nog niet gebruikt) token gaat
  $request = xmlrpc_encode_request(
    'ValideerPWResetToken',
    array(
      'hccLogin'     => $hccLogin,
      'PWResetToken' => $PWResetToken,
      'ServerID'     => gethostname(),
      'SiteID'       => $serverName,
      'RemoteID'     => $remoteAddr));
Output positief:
  $reply = array(
    'Action'       => 'ValideerPWResetToken',
    'Status'       => 'TRUE',
    'Message'      => 'Password reset token gevonden');
Output negatief:
  $reply = array(
    'Action'       => 'ValideerPWResetToken',
    'Status'       => 'FALSE',
    'Message'      => 'hccLogin bestaat niet' | 'PWResetToken bestaat niet');

// H.16 Ruim een bestaand JoomlaToken op
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'RuimJoomlaTokenOp',
    array(
      'hccLidnr'    => $hccLidnr,
      'JoomlaToken' => $JoomlaToken,
      'SiteID'      => $siteID,
     ['ServerID'    => gethostname(),] 
     ['RemoteID'    => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'   => 'RuimJoomlaTokenOp',
    'Status'   => 'TRUE',
    'Message'  => 'JoomlaToken opgeruimd');
Output negatief:
  $reply = array(
    'Action'  => 'RuimJoomlaTokenOp',
    'Status'  => 'FALSE',
    'Message' => 'Onjuist JoomlaToken');

// ** Joomla module
// ** H.17 GeefAantalDomeinen
// ** Vraag het aantal domeinen op van een betalende Hobbynet gebruiker (t.b.v. IDEAL betaling)
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'GeefAantalDomeinen',
    array(
      'JoomlaToken'     => $JoomlaToken,
      'hccLidnr'        => $hccLidnr,
      'hobbynetAccount' => $hobbyname,
      'ServerID'        => gethostname(),
      'SiteID'          => $serverName,
      'RemoteID'        => $remoteAddr));
Output positief:
  $reply = array(
    'Action'          => 'GeefAantalDomeinen',
    'Status'          => 'TRUE',
    'hobbynetAccount' => $hobbyname,
    'AantalDomeinen'  => $aantalDomeinen,
    'Message'         => 'aantal domeinen opgevraagd');
Output negatief:
  $reply = array(
    'Action'  => 'GeefAantalDomeinen',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials'           |
                 'Gegevenscombinatie onjuist'     |
                 'Vul alle verplichte velden in!' |
                 'account $hobbynetAccount behoort niet bij deze gebruiker');

// ** Joomla module
// ** H.18 ResetHCCCode
// ** Reset de hcc code van een gebruiker, en stuur vervolgens een SMS naar de 06 van het lid
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'ResetHCCCode',
    array(
      'hccLidnummer'   => $hccLidnummer,   // Het lidnummer van het lid waarvan we de HCCcode aan gaan passen
      'beheerLogin'    => $beheerLogin,    // geheime credentials van de site
      'beheerPassword' => $beheerPassword, // geheime credentials van de site
      'ServerID'       => gethostname(),
      'SiteID'         => $serverName,
      'RemoteID'       => $remoteAddr));
Output positief:
  $reply = array(
    'Action'          => 'ResetHCCCode',
    'Status'          => 'TRUE',
    'Message'         => 'Nieuwe HCCcode aangemaakt en verstuurd');

// ** Joomla module
// ** H.18.1 ResetHCCCode (hcc kantoor aanroep)
// ** Reset de hcc code van een gebruiker, en stuur vervolgens een SMS naar de 06 van het lid
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'ResetHCCCode',
    array(
      'JoomlaToken'    => $JoomlaToken,    // Het Joomla token van de sessie van de kantoor medewerker
      'hccLidnr'       => $hccLidnr,       // Het lidnummer van de kantoor medewerker
      'hccLidnummer'   => $hccLidnummer,   // Het lidnummer van het lid waarvan we de HCCcode aan gaan passen
      'ServerID'       => gethostname(),
      'SiteID'         => $serverName,
      'RemoteID'       => $remoteAddr));
Output positief:
  $reply = array(
    'Action'          => 'ResetHCCCode',
    'Status'          => 'TRUE',
    'Message'         => 'Nieuwe HCCcode aangemaakt en verstuurd');

// ** t.b.v. aanpassen van de hccLogin van een gebruiker (Hobbynet functie op Joomla site)  **
// H.19 Pas de hccLogin van een lid aan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// hccLidnummer is het lidnummer waar de mutatie op moet worden uitgevoerd
// Kan alleen als de aanvrager HN#WM als rol heeft
  $request = xmlrpc_encode_request(
    'PasHccLoginAan',
    array(
      'hccLidnr'     => $hccLidnr,     // lidnummer van de aanvrager
      'JoomlaToken'  => $JoomlaToken,  // JoomlaToken van de aanvrager
      'hccLidnummer' => $hccLidnummer, // pas de hccLogin van dit lidnummer aan
      'hccLogin'     => $hccLogin,     // dit is de gewenste nieuwe hccLogin
      'ServerID'     => gethostname(),
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'   => 'PasHccLoginAan',
    'Status'   => 'TRUE',
    'Message'  => 'hccLogin aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'PasHccLoginAan',
    'Status'  => 'FALSE',
    'Message' => 'Gegevenscombinatie onjuist' |
                 'Onjuiste credentials'       | 
                 'Gebruikersnaam al in gebruik');

// ** t.b.v. het aanmaken van een testaccount door een webmaster
// H.20 Maak een testaccount aan
// (LET OP: authenticatie op basis van lidnummer, JoomlaToken en siteID)
// Kan alleen als de aanvrager WM als rol heeft
  $request = xmlrpc_encode_request(
    'MaakTestLogin',
    array(
      'JoomlaToken'   => $JoomlaToken,     // JoomlaToken van de aanvrager
      'hccLidnummer'  => $hccLidnummer,    // lidnummer van de aanvrager
      'hccRol'        => $hccRol,          // (mag leeg zijn)
      'hccGroepering' => $hccGroepering,   // (regio of IG)
      'ServerID'      => gethostname(),
      'SiteID'        => $siteID,
      'RemoteID'      => $remoteIPaddress));
Output positief:
reply = array(
    'Action'          => 'MaakTestLogin',
    'Status'          => 'TRUE',
    'Message'         => 'Tijdelijk test account aangemaakt',
    'TestAccountNaam' => 'test-<groepering>-<hccLogin>'
    'userpassword'    => $nieuw_userpassword,
    'hccGroepering'   => $hccGroepering,
    'hccRol'          => $hccRol);
Output negatief:
  $reply = array(
    'Action'  => 'MaakTestLogin',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');

// Joomla functie
// ** t.b.v. aanpassen van de OneTime Passwords 
// H.21 Pas de OTP gegevens van een lid aan
// (LET OP: authenticatie op basis van hccLidnr, JoomlaToken en siteID)
// Als hccLidnummer gevuld is, dan is dat het lidnummer waar de mutatie op moet worden uitgevoerd.
// Dat kan alleen als de aanvrager HCC#LAD of HN#WM als rol heeft
  $request = xmlrpc_encode_request(
    'UpdateOTP',
    array(
      'hccLidnr'     => $hccLidnr,
      'JoomlaToken'  => $JoomlaToken,
     ['hccLidnummer' => $hccLidnummer,]
      'hccOtpKey'    => $hccOtpKey, // De otp encryptie key van de gebruiker (mag leeg zijn, dan weg)
      'hccOtep'      => $hccOtep,   // Het one time recovery password (mag leeg zijn, dan weg)
      'ServerID'     => gethostname(),
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'   => 'UpdateOTP',
    'Status'   => 'TRUE',
    'Message'  => 'OTP gegevens aangepast');
Output negatief:
  $reply = array(
    'Action'  => 'UpdateOTP',
    'Status'  => 'FALSE',
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');

// Joomla functie
// H.22 Heeft een lid een OTP key ja/nee
// (LET OP: authenticatie op basis van hccLidnr, JoomlaToken en siteID)
// hccLidnummer is het lidnummer waar de aanvraag op moet worden uitgevoerd.
// Dat kan alleen als de aanvrager HCC#LAD of HN#WM als rol heeft
  $request = xmlrpc_encode_request(
    'HeeftOtpKey',
    array(
      'hccLidnr'     => $hccLidnr,
      'JoomlaToken'  => $JoomlaToken,
      'hccLidnummer' => $hccLidnummer,
      'ServerID'     => gethostname(),
      'SiteID'       => $siteID,
      'RemoteID'     => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'      => 'HeeftOtpKey',
    'Status'      => 'TRUE',
    'HeeftOtpKey' => 'TRUE'|'FALSE',
    'Message'     => 'OTP status opgevraagd');
Output negatief:
  $reply = array(
    'Action'  => 'HeeftOtpKey',
    'Status'  => 'FALSE',
    'Message' => 'Gegevenscombinatie onjuist' | 'Onjuiste credentials');

// 3.1 Geef mijn lidnummer
// (authenticatie op basis van hccLogin en userPassword)
  $request = xmlrpc_encode_request(
    'GeefMijnLidnummer',
    array(
      'hccLogin'     => $hccLogin,
      'userPassword' => $userPassword,
     ['ServerID'     => gethostname(),] 
     ['SiteID'       => $siteID,]
     ['RemoteID'     => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'   => 'GeefMijnLidnummer',
    'Status'   => 'TRUE',
    'Message'  => 'Lidnummer opgevraagd',
    'hccLidnr' => $hccLidnr);
Output negatief:
  $reply = array(
    'Action'  => 'GeefMijnLidnummer',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Gegevenscombinatie onjuist');

// ** Portal mijn.hcc.nl **
// ** t.b.v. 1e keer doorlopen van de profielpagina **
// 8.2 Controleer of de gebruikersnaam op dit moment bestaat
// (geen authenticatie)
// ** Deze gegevens worden opgevraagd bij hccnet.nl (action=3)       **
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
  $request = xmlrpc_encode_request(
    'IsDezeNaamNogBeschikbaar',
    array(
      'nieuw_hccLogin' => $nieuw_hccLogin,
     ['ServerID'       => gethostname(),] 
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'IsDezeNaamNogBeschikbaar',
    'Status'  => 'TRUE',
    'Message' => 'Gebruikersnaam is nog beschikbaar');
Output negatief:
  $reply = array(
    'Action'  => 'IsDezeNaamNogBeschikbaar',
    'Status'  => 'FALSE',
    'Message' => 'Gebruikersnaam bestaat al');

// ** Enkel voor gebruik vanaf de kantoor portal **
// **  t.b.v. het hernoemen van accounts in CRM  **
// 8.3 Controleer of een Pseudoniem op dit moment bestaat		??? NIET GEBRUIKT ??
// (geen authenticatie)
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
  $request = xmlrpc_encode_request(
    'IsDezePseudoniemNogBeschikbaar',
    array(
      'nieuw_hccPseudoniem' => $nieuw_hccPseudoniem));
Output positief:
  $reply = array(
    'Action'  => 'IsDezePseudoniemNogBeschikbaar',
    'Status'  => 'TRUE',
    'Message' => 'Pseudoniem is nog beschikbaar');
Output negatief:
  $reply = array(
    'Action'  => 'IsDezePseudoniemNogBeschikbaar',
    'Status'  => 'FALSE',
    'Message' => 'Pseudoniem bestaat al');

// ** t.b.v. de verenigingszaken zoekpagina **
// A.1 Zoek alle bij de query passende hcc leden
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
  $request = xmlrpc_encode_request(
    'ZoekHCCLid',
    array(
      'beheerLogin'    => $beheerLogin,    // beheerder hccLidnummer
      'beheerPassword' => $beheerPassword, // beheerder hccCode
      'ZoekMethode'    => $ZoekMethode,
      'ZoekString'     => $zoekstring,
     ['ZoekLimiet'     => $ZoekLimiet,]
     ['Groepering'     => $Groepering,]
     ['ServerID'       => gethostname(),] 
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
 +---------------------+-----------------------------------------+
 | ZoekMethode         |  ZoekString                             |
 +---------------------+-----------------------------------------+
 | achternaam          | (eerste deel van) de naam               |
 | postcode            | (eerste deel van) postcode              |
 | lidnummer           | volledig lidnummer                      |
 | emailadres          | (eerste deel van) e-mail adres          |
 | gebruikersnaam      | (eerste deel van) de login naam         |
 | pseudoniem          | (eerste deel van) het pseudoniem        |
 | opgezegde_leden     | YYYYMMDD tot waar gezocht moet worden   |
 | uitgeschreven_leden | YYYYMMDD tot waar gezocht moet worden   |
 | overleden_leden     | YYYYMMDD tot waar gezocht moet worden   |
 | niet_leden          | het volledige niet-lid lidnummer        |
 +---------------------+-----------------------------------------+

Output positief:
  $reply = array(
    'Action'      => 'ZoekHCCLid',
    'Status'      => 'TRUE',
    'Message'     => 'Gebruiker(s) gevonden',
    'ZoekMethode' => $ZoekMethode,
   ['ExtraInfo'   => 'Zoekopdracht afgebroken, Y van Z getoond',]
    'Results'     => array(
      'hccLidnummer'      => $hccLidnummer,
      'hccBeginDatum'     => $hccBeginDatum,
      'hccEindDatum'      => $hccEindDatum,
      'sn'                => $sn,
      'givenName'         => $givenName,
      'hccGeslacht'       => $hccGeslacht,
      'hccStraatnaam'     => $hccStraatnaam,
      'hccHuisnummer'     => $hccHuisnummer
      'hccHuisToevoeging' => $hcchuisToevoeging,
      'hccPostcode'       => $hccPostcode,
      'hccWoonplaats'     => $hccWoonplaats,
      'hccLand'           => $hccLand,
      'hccTelefoon'       => $hccTelefoon,
      'hccMobiel'         => $hccMobiel,
      'mail'              => $mail,
      'mailHccnet'        => $mailHccnet,
      'hccIG'             => $hccIG,
      'hccRol'            => $hccRol,
      'hccLogin'          => $hccLogin,
      'hccPseudoniem'     => $hccPseudoniem,
      'ProfielBekend'     => 'TRUE' | 'FALSE'])*);
Output negatief:
  $reply = array(
    'Action'  => 'ZoekHCCLid',
    'Status'  => 'FALSE',
    'Message' => 'Gebruiker niet gevonden');
  $reply = array(
    'Action'  => 'ZoekHCCLid',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');

// ** t.b.v. beheer.hcc.nl **
// A.3 Zoek alle bij de query passende hcc leden van deze groepering
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
// (authenticatie op basis van AccountNaam en AccountCode of token)
  $request = xmlrpc_encode_request(
    'ZoekGroeperingsLid',
    array(
      'AccountNaam' => $lidnr,
     ['AccountCode' => $AccountCode,]
     ['token'       => $token,]
      'Groepering'  => $groepering,
      'ZoekMethode' => $ZoekMethode,
      'ZoekString'  => $zoekstring,
     ['ZoekLimiet'  => $ZoekLimiet,]
     ['Bijeenkomst' => $Bijeenkomst,] // Alleen voor gebruik op de
                                      // bijeenkomsten aanwezigheidsregistratie pagina
     ['ServerID'    => gethostname(),] 
     ['SiteID'      => $siteID,]
     ['RemoteID'    => $remoteIPaddress]));
 +---------------------+-----------------------------------------+
 | ZoekMethode         |  ZoekString                             |
 +---------------------+-----------------------------------------+
 | achternaam          | (deel van) de naam                      |
 | postcode            | (eerste deel van) postcode              |
 | lidnummer           | volledig lidnummer                      |
 | nieuwe_leden        | YYYYMMDD vanaf waar gezocht moet worden |
 | opgezegde_leden     | YYYYMMDD tot waar gezocht moet worden   |
 | uitgeschreven_leden | YYYYMMDD tot waar gezocht moet worden   |
 | overleden_leden     | YYYYMMDD tot waar gezocht moet worden   |
 | kaderleden          | n.v.t.                                  |
 +---------------------+-----------------------------------------+

Output positief:
  $reply = array(
    'Action'    => 'ZoekGroeperingsLid',
    'Status'    => 'TRUE',
    'Message'   => 'Gebruiker(s) gevonden',
   ['ExtraInfo' => 'Zoekopdracht afgebroken, Y van Z getoond',]
    'Results'   =>
      [array(
         'hccLidnummer'  => $hccLidnummer,
         'hccBeginDatum' => $hccBeginDatum,
         'hccEindDatum'  => $hccEindDatum,
         'cn'            => $cn,
         'sn'            => $sn,
         'givenName'     => $givenName,
         'hccAchternaam' => $hccAchternaam,
         'hccTussenVoegsels => hccTussenVoegsels,  
         'hccGeslacht'   => $hccGeslacht,
         'hccStraatnaam' => $hccStraatnaam,
         'hccHuisnummer' => $hccHuisnummer, 
         'hccPostcode'   => $hccPostcode,
         'hccWoonplaats' => $hccWoonplaats,
         'hccLand'       => $hccLand, 
         'hccTelefoon'   => $hccTelefoon,
         'hccMobiel'     => $hccMobiel,
         'mail'          => $mail,
         'mailHccnet'    => $mailHccnet,
         'hccKaderMail'  => $hccKaderMail,
         'hccRegio'      => $hccRegio,
         'hccIG'         => $hccIG,
         'hccRol'        => $hccRol,
         'hccLogin'      => $hccLogin,
         'hccPseudoniem' => $hccPseudoniem)]*));
Output negatief:
  $reply = array(
    'Action'  => 'ZoekGroeperingsLid',
    'Status'  => 'FALSE',
    'Message' => 'Gebruiker(s) niet gevonden' | 'Onjuiste credentials');

// ** t.b.v. administreren van bijeenkomsten **
// A.4 Lid bezoekt bijeenkomst
// (authenticatie op basis van AccountNaam en AccountCode of token)
  $request = xmlrpc_encode_request(
    'LidBezoektBijeenkomst',
    array(
     ['JoomlaToken' => $JoomlaToken,]
      'AccountNaam' => $lidnr,
     ['AccountCode' => $AccountCode,]
     ['token'       => $token,]
      'Bijeenkomst' => $Bijeenkomst, // groepering die deze bijeenkomst organiseert
      'hccLidnr'    => $hccLidnr,    // lid dat aanwezig gemeld moet worden
     ['correctie'   => $hccLidnr,]   // lid dat gecorrigeerd moet worden
     ['ServerID'    => gethostname(),] 
     ['SiteID'      => $siteID,]
     ['RemoteID'    => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'LidBezoektBijeenkomst',
    'Status'  => 'TRUE',
    'Message' => 'Bezoeker weggeschreven',
    'Results' => array(
      // info van deze bezoeker
      'cn'               => $cn,                // cn (Verbeek, H.J.)
      'hccGeslacht'      => $hccGeslacht,       // hccGeslacht van de bezoeker
      'groeperingslid'   => $groeperingslid,    // TRUE of FALSE: is deze persoon lid van deze groepering
      'mijnGroeperingen' => $mijnGroeperingen,  // komma-gescheiden lijst (regio, [hccIG]*)
      'aantalBezoeken'   => $aantalBezoeken,    // hoe vaak heeft dit lid deze bijeenkomst bezocht
      // info van de bijeenkomst
      'AantalBezoekers'  => $AantalBezoekers);  // aantal bezoekers van deze bijeenkomst
Output negatief:
  $reply = array(
    'Action'  => 'LidBezoektBijeenkomst',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');

// ** t.b.v. administreren van bijeenkomsten en opvragen van lidgegevens **
// A.5 Vraag Lidgegevens token aan (geldig voor dit lid, en deze groepering, op deze datum)
// Als geen datum gegeven is, dan is het token vandaag geldig
// (authenticatie op basis van AccountNaam en AccountCode)
  $request = xmlrpc_encode_request(
    'VraagLidgegevensTokenAan',
    array(
      'AccountNaam' => $lidnr,
      'AccountCode' => $AccountCode,
      'hccLidnr'    => $hccLidnummer, // vraag het token voor dit lid aan
      'groepering'  => $groepering,   // zoek binnen deze groepering
     ['datum'       => $datum,]       // optioneel: datum YYYY-MM-DD, anders: vandaag
     ['ServerID'    => gethostname(),] 
     ['SiteID'      => $siteID,]
     ['RemoteID'    => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'     => 'VraagLidgegevensTokenAan',
    'Status'     => 'TRUE',
    'Message'    => 'Token opgevraagd',
    'groepering' => $Groepering,
    'token'      => $token,
    'sn'         => $sn);
Output negatief:
  $reply = array(
    'Action'  => 'VraagLidgegevensTokenAan',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');

// ** t.b.v. administreren van bijeenkomsten en opvragen van lidgegevens **
// A.6 Toon bezoekersoverzicht
// (authenticatie op basis van lidnummer en bezoekersregistratie token)
  $request = xmlrpc_encode_request(
    'GeefBezoekersOverzicht',
    array(
     ['JoomlaToken' => $JoomlaToken,]
      'AccountNaam' => $lidnr,
      'token'       => $token,
      'Bijeenkomst' => $Bijeenkomst, // groepering die deze bijeenkomst organiseert
     ['ServerID'    => gethostname(),] 
     ['SiteID'      => $siteID,]
     ['RemoteID'    => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'    => 'GeefBezoekersOverzicht',
    'Status'    => 'TRUE',
    'Message'   => 'Bezoekersoverzicht opgevraagd',
    'Bezoekers' => $bezoekers,
   ['Locatie'   => $Locatie]);
Output negatief:
  $reply = array(
    'Action'  => 'GeefBezoekersOverzicht',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Geen bijeenkomst gevonden' | 'Geen bezoekers gevonden');

// A.7 Geef het array met alle locaties
// (of beperk dit tot de locaties van de groepering $Groepering)
// Desgewenst worden alle resultaten waarbij hccToonInJoomla aan staat onderdrukt
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
// Desgewenst worden alle resultaten waarbij ToonOpKaderNet aan staat onderdrukt
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefLocaties',
    array(
     ['Groepering'     => $hccGroepering,]
     ['ServerID'       => gethostname(),] 
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress,]
     ['JoomlaFilter'   => '' | 'TRUE',]
     ['KadernetFilter' => '' | 'TRUE']);
Output positief:
  $reply = array(
    'Action'         => 'GeefLocaties',
    'Status'         => 'TRUE',
    'Message'        => 'Locaties opgevraagd',
    'Locaties'       => $locaties,
   ['JoomlaFilter'   => 'TRUE',]
   ['KadernetFilter' => 'TRUE']);
Output negatief:
  $reply = array(
    'Action'         => 'GeefLocaties',
    'Status'         => 'FALSE',
    'Message'        => 'Locaties niet beschikbaar',
    'ExtraInfo'      => 'Geen locaties gevonden voor groepering $hccGroepering',
   ['JoomlaFilter'   => 'TRUE',]
   ['KadernetFilter' => 'TRUE']);

// A.8 Registreer een niet-hcclid als bezoeker tijdens een bijeenkomst
// (authenticatie op basis van AccountNaam en AccountCode)
  $request = xmlrpc_encode_request(
    'RegistreerGast',
    array(
      'AccountNaam'   => $lidnr,        // credentials
      'AccountCode'   => $AccountCode,  // credentials
      'token'         => $token,        // credentials
      'Bijeenkomst'   => $groepering,
      'geslacht'      => $geslacht,
      'naam'          => $naam,
      'mail'          => $mail,
      'postcode'      => $postcode,
      'huisnummer'    => $huisnummer,
      'buitenland'    => $buitenland,
     ['nietLidNummer' => $nietLidNummer,]
     ['instructies'   => $instructies,]
     ['ServerID'      => gethostname(),] 
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => $aanroep,
    'Status'  => 'TRUE',
    'Message' => 'Niet-lid als bezoeker geregistreerd',
    'Result'  => $result_array);

// A.9 Geef het array met alle locatienamen
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefLocatieNamen',
    array(
     ['ServerID'           => gethostname(),] 
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress,]
     ['JoomlaFilter'       => '' | 'TRUE',]
     ['KadernetFilter'     => '' | 'TRUE']));
     ['KaderMutatieFilter' => '' | 'TRUE']));

Output positief:
  $reply = array(
    'Action'             => 'GeefLocatieNamen',
    'Status'             => 'TRUE',
    'Message'            => 'Locaties opgevraagd',
    'Locaties'           => $locaties,
   ['JoomlaFilter'       => 'TRUE',]
   ['KadernetFilter'     => 'TRUE',]
   ['KaderMutatieFilter' => 'TRUE']));
Output negatief:
  $reply = array(
    'Action'             => 'GeefLocatieNamen',
    'Status'             => 'FALSE',
    'Message'            => 'Locatienamen niet beschikbaar',
    'ExtraInfo'          => 'Geen locatienamen gevonden',
   ['JoomlaFilter'       => 'TRUE',]
   ['KadernetFilter'     => 'TRUE',]
   ['KaderMutatieFilter' => 'TRUE']));

// A.10 Schrijf een niet-lid in op een bulletin
// (2019.12.05: wordt actief gebruikt in Joomla module)
//      Deze aanroep mag *ook* worden gebruikt om een wel-lid in te schrijven.
//      Voorwaarde is dat bewezen is dat er controle bestaat over het opgegeven email adres
  $request = xmlrpc_encode_request(
    'SchrijfNietlidInOpBulletin',
    array(
      'beheerLogin'    => $beheerLogin,    // xml-rpc user
      'beheerPassword' => $beheerPassword, // xml-rpc password
      'hccOptin'       => $hccOptin,       // bulletin waarop ingeschreven wordt
      'hccOptinSource' => $hccOptinSource, // site waar aanmelding vandaan komt
      'Email'          => $Email,          // niet-lid: email adres
      'Naam'           => $Naam,           // niet-lid: naam
     ['hccLidNummer'   => $hccLidNummer,]  // optioneel: ik ben lid, dit is mijn lidnummer
     ['Postcode'       => $Postcode,]      // optioneel: niet-lid: postcode
     ['Huisnummer'     => $Huisnummer,]    // optioneel: niet-lid: huisnummer
     ['hccGeslacht'    => $hccGeslacht,] // optioneel: niet-lid: geslacht (M/V/O)
     ['ServerID'       => gethostname(),] 
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'    => 'SchrijfNietlidInOpBulletin',
    'Status'    => 'TRUE',
    'Message'   => 'Inschrijving op bulletin gelukt');
Output negatief:
  $reply = array(
    'Action'    => 'SchrijfNietlidInOpBulletin',
    'Status'    => 'FALSE',
    'Message'   => 'Onjuiste credentials' |
                   'Gegevenscombinatie onjuist',
    'ExtraInfo' => 'Invalid DN syntax'    |
                   'Invalid credentials');

// ** t.b.v. Joomla module Bas
// A.12 GeefAlleBulletins
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefAlleBulletins',
    array(
     ['ServerID'      => gethostname(),] 
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'GeefAlleBulletins',
    'Status'          => 'TRUE',
    'Message'         => 'Bulletins opgevraagd',
    'bulletins'       => $bulletins);

// ** t.b.v. Joomla module Bas
// A.13 ExpandeerPostcode
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'ExpandeerPostcode',
    array(
      'postcode'      => $postcode,
      'huisnummer'    => $huisnummer,
     ['ServerID'      => gethostname(),]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'ExpandeerPostcode',
    'Status'          => 'TRUE',
    'Message'         => 'Postcode opgevraagd',
    'detailgegevens'  => $detailgegevens);

// ** t.b.v. Joomla module Bas
// A.25 UpdateNAW
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'UpdateNAW',
    array(
      'hccLidnr'      => $hcclidnr,
      'JoomlaToken'   => $JoomlaToken,
      'geslacht'      => $geslacht,
      'postcode'      => $postcode,
      'huisnummer'    => $huisnummer,
      'toevoeging'    => $toevoeging,
      'straat'        => $straat,
      'woonplaats'    => $woonplaats,
      'landcode'      => $landcode,
      'email'         => $email,
      'voornaam'      => $voornaam,
      'voorletters'   => $voorletters,
      'hccTelefoon'   => $hccTelefoon,
      'hccMobiel'     => $hccMobiel,
      'ServerID'      => gethostname(),
      'SiteID'        => $siteID,
      'RemoteID'      => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'          => 'UpdateNAW',
    'Status'          => 'TRUE',
    'Message'         => 'Contactgegevens bijgewerkt');

// ** t.b.v. Joomla module Bas
// A.18 NormaliseerTelefoon
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'NormaliseerTelefoon',
    array(
      'hccLand'        => $hccLand,
      'ServerID'       => gethostname(),
      'SiteID'         => $siteID,
      'RemoteID'       => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'          => 'NormaliseerTelefoon',
    'Status'          => 'TRUE',
    'Message'         => 'Telefoonnummer genormaliseerd',
    'Telefoonnummer'  => $Telefoonnummer);

// ** t.b.v. Joomla module Bas
// A.20 UpdateMobiel
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'UpdateMobiel',
    array(
      'hccLidnr'      => $hcclidnr,
      'JoomlaToken'   => $JoomlaToken,
      'hccMobiel'     => $hccMobiel,
      'ServerID'      => gethostname(),
      'SiteID'        => $siteID,
      'RemoteID'      => $remoteIPaddress));
Output positief:
  $reply = array(
    'Action'          => 'UpdateMobiel',
    'Status'          => 'TRUE',
    'Message'         => 'Mobiel nummer bijgewerkt');

// ** t.b.v. Joomla module Bas
// A.21 HaalIGBedragenOp
//      Geef alle IG's waar je zelf lid van kunt worden, inclusief het bijbehorende bedrag
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'HaalIGBedragenOp',
    array(
     ['ServerID'      => gethostname(),] 
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'HaalIGBedragenOp',
    'Status'          => 'TRUE',
    'Message'         => 'Interessegroepen en bedragen opgevraagd',
    'details'         => $details);

// ** t.b.v. Joomla module Bas
// A.22 HaalTariefGroepenOp
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'HaalTariefGroepenOp',
    array(
     ['ServerID'      => gethostname(),] 
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'HaalTariefGroepenOp',
    'Status'          => 'TRUE',
    'Message'         => 'Tariefgroepen opgevraagd',
    'details'         => $details);

// ** t.b.v. Joomla module Bas
// A.23 PasInteressegroepAan
// (authenticatie op basis van lidnummer, JoomlaToken en siteID)
  $request = xmlrpc_encode_request(
    'PasInteressegroepAan',
    array(
      'hccLidnr'      => $hcclidnr,
      'JoomlaToken'   => $JoomlaToken,
     ['nieuw'         => $IG_lijst_nieuw,]
     ['weg'           => $IG_lijst_weg,]
     ['ServerID'      => gethostname(),]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'PasInteressegroepAan',
    'Status'          => 'TRUE',
    'Message'         => 'IG keuzen aangepast');

// ** t.b.v. Joomla module Bas
// A.24 GeefSSOUrls
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefSSOUrls',
    array(
     ['ServerID'      => gethostname(),]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'GeefSSOUrls',
    'Status'          => 'TRUE',
    'SSO_urls'        => $sso_urls,
    'Message'         => 'Single Sign On URLs opgevraagd');

// ** t.b.v. de verenigingszaken beheer pagina **
// A.26 Verwijder een niet-lid record
  $request = xmlrpc_encode_request(
    'VerwijderNietLid',
    array(
      'beheerLogin'    => $beheerLogin,    // beheerder hccLidnummer
      'beheerPassword' => $beheerPassword, // beheerder hccCode
      'hccLidnr'       => $hccLidnummer,   // het te verwijderen niet-lid nummer
     ['ServerID'       => gethostname(),]
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));

Output positief:
  $reply = array(
    'Action'      => 'VerwijderNietLid',
    'Status'      => 'TRUE',
    'Message'     => 'Niet-lid record verwijderd',

Output negatief:
  $reply = array(
    'Action'  => 'VerwijderNietLid',
    'Status'  => 'FALSE',
    'Message' => 'Niet-lid record niet gevonden');
  $reply = array(
    'Action'  => 'VerwijderNietLid',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');

// ** HenZ **
// ** t.b.v. daily cron job  **
// ** t.b.v. dagelijkse opschoon jobs Joomla template sites **
// C.1 Vraag de lijst met uitgeschreven leden op
//     Dit kan beperkt worden tot een bepaalde regio of interessegroep
//     Daarnaast kan het tijdvak waarin gezocht wordt vrij gekozen worden
//     (gesteld dat de LDAP database nog leden uit die periode bevat)
//     Antwoord: lijst met (lidnummer, hccLogin, sn,
//                          datum einde lidmaatschap (formaat:YYYYMMDD))

==> GeefUitgeschrevenLeden <== (oud: GeefOpgezegdeLeden)

  $request = xmlrpc_encode_request(
    'GeefUitgeschrevenLeden',
    array(
      'beheerLogin'    => $beheerLogin,
      'beheerPassword' => $beheerPassword,
      'hccRegio'       => $hccRegio,    // of leeg
      'hccIg'          => $hccIg,       // of leeg
      'datum_vanaf'    => $datum_sinds, // YYYY-MM-DD of YYYYMMDD of leeg (leeg: 3 dagen geleden)
      'datum_tot'      => $datum_tot,   // YYYY-MM-DD of YYYYMMDD of leeg (leeg: vandaag)
     ['ServerID'       => gethostname(),] 
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'      => 'GeefUitgeschrevenLeden',
    'Status'      => 'TRUE',
    'Message'     => 'Uitgeschreven leden',
   ['hccRegio'    => $hccRegio,]
   ['hccIg'       => $hccIg,]
   ['datum_vanaf' => $datum_vanaf,]
   ['datum_tot'   => $datum_tot,]
   ['Results' => array(
     [array(
        'hccLogin'               => $hccLogin,
        'hccLidNummer'           => $hccLidnummer,
        'sn'                     => $sn,
        'DatumEindeLidmaatschap' => $DatumEindeLidmaatschap)]*);
Output negatief:
  $reply = array(
    'Action'  => 'GeefUitgeschrevenLeden',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');

HCCpartner aanroepen

(interface versie 1)
(oude interface, niet meer gebruiken!)

// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// D.1 Controleer of iemand lid is op basis van lidnummer en postcode
//     Antwoord: TRUE of FALSE
  $request = xmlrpc_encode_request(
    'HCCpartner',
    array('ControleerHCCLidmaatschap',
    array('partnerLogin',    $partnerLogin),
    array('partnerPassword', $partnerPassword),
    array('hccLidnummer',    $hcclidnummer),
    array('postcode',        $postcode)));
Output positief:
  $reply = array(
    'HCCpartner',
    array('Action', 'ControleerHCCLidmaatschap'),
    array('Status', 'TRUE'));
Output negatief:
  $reply = array(
    'HCCpartner',
    array('Action', 'ControleerHCCLidmaatschap'),
    array('Status', 'FALSE'));
  $reply = array(
    'HCCpartner',
    array('Action',  'ControleerHCCLidmaatschap'),
    array('Status',  'FALSE'),
    array('Message', 'Onjuiste credentials'));

// onbekende aanroep
  $request = xmlrpc_encode_request(
     'HCCpartner',
     array(
       'OnbekendeAanroep',
       array('parameter', $iets)));
Output negatief:
  $reply = array(
    'HCCpartner',
    array('Action',  'OnbekendeAanroep'),
    array('Status',  'FALSE'),
    array('Message', 'Opdracht onbekend'));

HCCpartners aanroepen

(interface versie 2)

// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// D.2 Controleer of iemand lid is op basis van lidnummer en postcode
//     Antwoord: TRUE of FALSE
  $request = xmlrpc_encode_request(
    'HCCpartners',
    array(
      'Action'          => 'ControleerHCCLidmaatschap',
      'partnerLogin'    => $partnerLogin,
      'partnerPassword' => $partnerPassword,
      'hccLidnummer'    => $hcclidnummer,
      'postcode'        => $postcode,
     ['ServerID'        => gethostname(),] 
     ['SiteID'          => $siteID,]
     ['RemoteID'        => $remoteIPaddress]));
Output positief:
  $reply = array(
    '0'      => 'HCCpartners',
    'Action' => 'ControleerHCCLidmaatschap',
    'Status' => 'TRUE',
   ['ExtraInfo' => 'groepering=$groepering']); // als de partner beperkt is tot 1 groepering
Output negatief:
  $reply = array(
    '0'      => 'HCCpartners',
    'Action' => 'ControleerHCCLidmaatschap',
    'Status' => 'FALSE');
  $reply = array(
    '0'       => 'HCCpartners',
    'Action'  => 'ControleerHCCLidmaatschap',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials');

// onbekende aanroep
  $request = xmlrpc_encode_request(
    'HCCpartners',
    array(
      'Action'    => 'OnbekendeAanroep',
      'parameter' => $iets));
Output negatief:
  $reply = array(
    '0'       => 'HCCpartners',
    'Action'  => 'OnbekendeAanroep',
    'Status'  => 'FALSE',
    'Message' => 'Opdracht onbekend');

HCC-kader aanroepen

// ** beheer.hcc.nl **
// F.2 Controleer of dit een kaderlid is
// (authenticatie op basis van hccLogin en userPassword)
  $request = xmlrpc_encode_request(
    'IsKaderLid',
    array(
      'hccLogin'     => $hccLogin,
      'userPassword' => $userPassword,
     ['ServerID'     => gethostname(),] 
     ['SiteID'       => $siteID,]
     ['RemoteID'     => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'          => 'IsKaderLid',
    'Status'          => 'TRUE',
    'Message'         => 'Is kaderlid',
    'hccLidnr'        => $hccLidnr,
    'cn'              => $cn,
    'sn'              => $sn,
    'hccRol'          => $hccRol,
    'mail'            => $mail,
    'mailHccnet'      => $mailHccnet,
    'hccKaderMail'    => $hccKaderMail,
    'hccKaderForward' => $hccKaderForward);
Output negatief:
  $reply = array(
    'Action'  => 'IsKaderLid',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' | 'Is geen kaderlid');

// ** t.b.v. lijsten op de kadernet server en de kantoor-beheerpagina **
// F.4 Vraag alle groeperingen op
// Het is mogelijk om een groepering te onderdrukken, als er in LDAP '''een''' waarde in een opgegeven attribuur aanwezig is.
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
//  JoomlaFilter            : attribuut 'hccToonInJoomla'
//  ToonInOverzichtenFilter : attribuut 'hccToonInOverzichten'
//  KadernetFilter          : attribuut 'hccToonOpKaderNet'
//  BulletinsFilter         : attribuut 'hccBulletins'
//  EmailFilter             : attribuut 'hccFunctionalEmail'
//  KaderMutatieFilter      : attribuut 'hccKaderMutaties'
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefAlleGroeperingen',
    array(
     ['ServerID'                => gethostname(),] 
     ['SiteID'                  => $siteID,]
     ['RemoteID'                => $remoteIPaddress,]
     ['JoomlaFilter'            => '' | 'TRUE',]
     ['ToonInOverzichtenFilter' => '' | 'TRUE',]
     ['KadernetFilter'          => '' | 'TRUE',]
     ['BulletinsFilter'         => '' | 'TRUE',]
     ['EmailFilter'             => '' | 'TRUE',]
     ['KaderMutatieFilter'      => '' | 'TRUE'));
Output positief:
  $reply = array(
    'Action'                  => 'GeefAlleGroeperingen',
    'Status'                  => 'TRUE',
    'Message'                 => 'Lijst met groeperingen opgevraagd',
    'Result'                  => $groeperingen,
   ['JoomlaFilter'            => 'TRUE',]
   ['ToonInOverzichtenFilter' => 'TRUE',]
   ['KadernetFilter'          => 'TRUE',]
   ['KaderMutatieFilter'      => 'TRUE']);

// ** t.b.v. lijsten op de kadernet server en de kantoor-beheerpagina **
// F.5 Vraag alle kaderrollen op
// Het is mogelijk om een kaderrol  te onderdrukken, als er in LDAP '''een''' waarde in een opgegeven attribuur aanwezig is.
// (iedere waarde anders dan een lege string wordt behandeld alsof 'TRUE' gegeven is)
//  JoomlaFilter            : attribuut 'hccToonInJoomla'
//  KadernetFilter          : attribuut 'hccToonOpKaderNet'
//  KaderMutatieFilter      : attribuut 'hccKaderMutaties'
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'GeefAlleKaderRollen',
    array(
     ['ServerID'           => gethostname(),] 
     ['SiteID'             => $siteID,]
     ['RemoteID'           => $remoteIPaddress,]
     ['JoomlaFilter'       => '' | 'TRUE',]
     ['KadernetFilter'     => '' | 'TRUE',]
     ['KaderMutatieFilter' => '' | 'TRUE']));
Output positief:
  $reply = array(
    'Action'             => 'GeefAlleKaderRollen',
    'Status'             => 'TRUE',
    'Message'            => 'Lijst met kaderrollen opgevraagd',
    'Result'             => $kaderrollen,
   ['JoomlaFilter'       => 'TRUE',]
   ['KadernetFilter'     => 'TRUE',]
   ['KaderMutatieFilter' => '' | 'TRUE']);

// ** t.b.v. de kantoor-beheerpagina **
// F.9 Geef de gevevens van de mailbox van dit kaderlid
// (authenticatie op basis van beheerder hccLogin en beheerder userPassword)
 $request = xmlrpc_encode_request(
    'GeefKadermailGegevens',
    array(
      'beheerLogin'     => $beheerLogin,
      'beheerPassword'  => $beheerPassword,
      'hccLidnummer'    => $hccLidnummer));
Output positief:
  $reply = array(
    'Action'  => 'GeefKadermailGegevens',
    'Status'  => 'TRUE',
    'Message' => 'Gebruiker(s) gevonden',
    'kadermail_omvang'           => $Formaat,
    'kadermail_aantal_inbox'     => $aantal_inbox,
    'kadermail_aantal_nieuw'     => $aantal_nieuw,
    'kadermail_laatst_opgehaald' => $laatst_opgehaald);
Output negatief:
  $reply = array(
    'Action'  => 'GeefKadermailGegevens',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' |
                 'Gegevenscombinatie onjuist' |
                 'Vul alle verplichte velden in!',
   ['ExtraInfo' => 'Invalid credentials' |
                   'lidnummer <hccLidnummer> is geen kaderlid'));

// ** t.b.v. de Joomla Kadernet module **
//  * F.10 MuteerGroeperingSamenstelling
// (authenticatie op basis van lidnummer, JoomlaToken en siteID en als extra hccCode van de aanvrager)
 $request = xmlrpc_encode_request(
    'MuteerGroeperingSamenstelling',
    array(
      'hccLidnr'       => $hccLidnr,
      'JoomlaToken'    => $JoomlaToken,
      'hccCode'        => $hccCode,
      'groepering'     => $groepering,
      'hccLidnummer    => $hccLidnummer, // lidnummer van het te muteren hcc lid
      'hccRol'         => $hccRol,       // de nieuwe dan wel op te heffen rol
                                         // de rol 'ALLES_WEG' ruimt alle rollen van dit hcc lid voor deze groepering op
      'actie'          => 'Nieuw' | 'Weg',
     ['ServerID'       => gethostname(),] 
      'SiteID'         => $siteID,
     ['RemoteID'       => $remoteIPaddress,]
Output positief:
  $reply = array(
    'Action'    => 'MuteerGroeperingSamenstelling',
    'Status'    => 'TRUE',
    'Message'   => 'Groepering samenstelling aangepast',
   ['ExtraInfo' => 'Bedankmail gestuuurd aan ex-kaderlid']);
Output negatief:
  $reply = array(
    'Action'  => 'MuteerGroeperingSamenstelling',
    'Status'  => 'FALSE',
    'Message' => 'Onjuiste credentials' |
                 'Gegevenscombinatie onjuist' |
                 'Vul alle verplichte velden in!',
   ['ExtraInfo' => 'Invalid credentials' |
                   'lidnummer <hccLidnummer> is geen kaderlid' |
		   'Oude rol niet gevonden' |
		   'Nieuwe rol kan niet samen met bestaande rol' |
		   'Alleen voorzitter of secretaris kan kadermutaties uitvoeren']);

HCC-groepering aanroepen

// I.2 controleer of een gebruiker bestaat op basis van de combinatie
//     lidnummer + postcode + huisnummer
// (authenticatie op basis van beheerder hccLogin en beheerder userPassword)
// (alternatieve authenticatie mogelijk door lidnummer + hcc-code in te vullen)
//
// Aan de aanroeper worden zekere eisen gesteld:
// * dient een rol te vervullen binnen de groepering 'FOR'(forum)
// * dan wel dient de rol 'VRBK' (vraagbaak) te vervullen binnen een groepering
//
// Er wordt door de gehele leden-database gezocht, waarna terug wordt gegeven 
// * of dit hcc lid inderdaad bestaat
// en, als het om een aanvraag van een vraagbaak vrijwilliger gaat, 
// * tevens of het gezochte hcc lid deel uitmaakt van zijn groepering
//
// 2021.12 Mocht weg: laatste aanroep 2018.07.27
// Toch weer terug: 2022.03.23 (OTOBO ticket 2022032394001082)
//
  $request = xmlrpc_encode_request(
    'IsHCCLid',
    array(
      'hccLogin'        => [$hccLogin | $hccLidnummer],
      'userPassword'    => [$userPassword | $hccCode],
      'zoekhccLidnr'    => $zoekhccLidnr,
      'zoekhccPostcode' => $zoekhccPostcode,
      'zoekhccHuisnr'   => $zoekhccHuisnr,
      'zoekgroepering'  => $zoekgroepering));
Output positief:
  $reply = array(
    'Action'  => 'IsHCCLid',
    'Status'  => 'TRUE',
    'Message' => 'Gebruikersgegevens gecontroleerd',
   ['Groeperingslid' => $IsGroeperingLid]));
Output negatief:
  $reply = array(
    'Action'  => 'IsHCCLid',
    'Status'  => 'FALSE',
    'Message' => 'Gebruiker bestaat niet' |
                 'Onjuiste credentials' |
                 'Wel HCC lid, maar geen lid van groepering $groepering' |
                 'Onvoldoende rechten' |
                 'Vul alle verplichte velden in!'));

HenZ aanroepen

// I.3 Geef de einddatum van een actief dan wel uitgeschreven lid
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
  $request = xmlrpc_encode_request(
    'GeefhccEindDatum',
    array(
      'beheerLogin'    => $beheerLogin,
      'beheerPassword' => $beheerPassword,
      'hccLidnummer'   => $hccLidnummer,
     ['ServerID'       => gethostname(),] 
     ['SiteID'         => $siteID,]
     ['RemoteID'       => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'       => 'GeefhccEindDatum',
    'Status'       => 'TRUE',
    'hccLidnummer' => $hccLidnummer,
    'hccLogin'     => $hccLogin,
    'hccEindDatum' => $hccEindDatum ('yyyymmdd' | ''));
Output negatief:
  $reply = array(
    'Action'    => 'GeefhccEindDatum',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Invalid credentials' |
                   'Lidnummer niet gevonden');

(Forum,vraagbaak) onderwerpen

// L.1 MaakOnderwerp
  $request = xmlrpc_encode_request(
    'MaakOnderwerp',
    array(
      'hccLidnr'    => $hccLidnr,
      'JoomlaToken' => $JoomlaToken,
      'ServerID'    => gethostname(),
      'SiteID'      => $siteID,
      'RemoteID'    => $remoteIPaddress,
      'description' => $description,
      'groepering'  => $groepering));
Output positief:
  $reply = array(
    'Action'      => 'MaakOnderwerp',
    'Status'      => 'TRUE',
    'Message'     => 'Onderwerp is aangemaakt',
    'onderwerp'   => $onderwerpID,
    'description' => $description);
Output negatief:
  $reply = array(
    'Action'    => 'MaakOnderwerp',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Onjuist JoomlaToken' |
                   'Geen webmaster');

// L.2 VerwijderOnderwerp

$request = xmlrpc_encode_request(
    'VerwijderOnderwerp',
    array(
      'hccLidnr'    => $hccLidnr,
      'JoomlaToken' => $JoomlaToken,
      'ServerID'    => gethostname(),
      'SiteID'      => $siteID,
      'RemoteID'    => $remoteIPaddress,
      'onderwerp'   => $onderwerpID));
Output positief:
  $reply = array(
    'Action'      => 'VerwijderOnderwerp',
    'Status'      => 'TRUE',
    'onderwerp'   => $onderwerpID,
    'Message'     => 'Onderwerp is verwijderd',
    'description' => $description);
Output negatief:
  $reply = array(
    'Action'    => 'VerwijderOnderwerp',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Onjuist JoomlaToken'            |
                   'Geen webmaster'                 |
		   'Onderwerp bestaat niet'         |
		   'Ruim eerst alle geautoriseerde gebruikers op' |
		   'Kan onderwerp niet verwijderen');

// L.3 GeefOnderwerpen 
// Geef het array met de lijst van onderwerpen voor de betreffende groepering
//
$request = xmlrpc_encode_request(
  'GeefOnderwerpen',
  array(
    'ServerID'    => gethostname(),
    'SiteID'      => $siteID,
    'RemoteID'    => $remoteIPaddress,
    'groepering'  => $groepering));
Output positief:
  $reply = array(
    'Action'      => 'GeefOnderwerpen',
    'Status'      => 'TRUE',
    'Message'     => 'Onderwerpen opgevraagd',
    'onderwerpen' => $onderwerpen); // het array met onderwerpen
Output negatief:
  $reply = array(
    'Action'    => 'GeefOnderwerpen',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!');

// L.4 MuteerOnderwerp
// Pas de description van een onderwerp aan
//
$request = xmlrpc_encode_request(
   'MuteerOnderwerp',
   array(
     'hccLidnr'    => $hccLidnr,
     'JoomlaToken' => $JoomlaToken,
     'ServerID'    => gethostname(),
     'SiteID'      => $siteID,
     'RemoteID'    => $remoteIPaddress,
     'groepering'  => $groepering,
     'description' => $description,
     'onderwerp'   => $onderwerpID));
Output positief:
  $reply = array(
    'Action'      => 'MuteerOnderwerp',
    'Status'      => 'TRUE',
    'Message'     => 'Onderwerp aangepast',
    'onderwerp'   => $onderwerpID,
    'description' => $description);
Output negatief:
  $reply = array(
    'Action'    => 'MuteerOnderwerp',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Onjuist JoomlaToken' |
                   'Geen webmaster' |
		   'Onderwerp bestaat niet' |
		   'Onderwerp behoort bij andere groepering');

// L.5 MuteerOnderwerpAutorisatie
// Geef kaderlid $kaderLidNr de autorisatie MOD, VRBK of RED bij onderwerp $onderwerp
// (of haal die autorisatie weg)
$request = xmlrpc_encode_request(
  'MuteerOnderwerpAutorisatie',
  array(
    'hccLidnr'       => $hccLidnr,
    'JoomlaToken'    => $JoomlaToken,
    'ServerID'       => gethostname(),
    'SiteID'         => $siteID,
    'RemoteID'       => $remoteIPaddress,
    'groepering'     => $groepering,
    'onderwerp'      => $onderwerpID,
    'kaderLidNr'     => $kaderLidNr,
    'hccAutorisatie' => 'MOD' | 'VRBK' | 'RED',
   ['verwijder'      => 'TRUE']));
Output positief:
  $reply = array(
    'Action'      => 'MuteerOnderwerpAutorisatie',
    'Status'      => 'TRUE',
    'Message'     => 'Onderwerp autorisatie aangepast');
Output negatief:
  $reply = array(
    'Action'    => 'MuteerOnderwerpAutorisatie',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Onjuist JoomlaToken' |
                   'Geen webmaster' |
		   'Geen kaderlid' |
		   'Onjuiste autorisatie opgegeven' |
		   'Onderwerp bestaat niet');

// L.6 ToonOnderwerpAutorisatie
$request = xmlrpc_encode_request(
  'ToonOnderwerpAutorisatie',
  array(
    'hccLidnr'    => $hccLidnr,
    'JoomlaToken' => $JoomlaToken,
    'ServerID'    => gethostname(),
    'SiteID'      => $siteID,
    'RemoteID'    => $remoteIPaddress,
    'onderwerp'   => $onderwerpID));
Output positief:
  $reply = array(
    'Action'       => 'ToonOnderwerpAutorisatie',
    'Status'       => 'TRUE',
    'Message'      => 'Autorisaties opgehaald',
    'onderwerp'    => $onderwerpID,
    'description'  => $description,
    'autorisaties' => 
      [Array(
        'hccLidnummer'    => $hccLidnummer
        'cn'              => $cn
        'hccAutorisatie'  => {komma-gescheiden autorisaties})]);
Output negatief:
  $reply = array(
    'Action'    => 'ToonOnderwerpAutorisatie',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Onjuist JoomlaToken' |
                   'Geen webmaster' |
		   'Onderwerp bestaat niet');

Microsoft Dynamics Cloud (Cayentis) onderwerpen

// M.1 Upload_CSV_bestand
// De CRM proxy upload de dagelijkse CSV synchronisatie-bestanden naar de XML-RPC server
// (authenticatie op basis van beheerLogin en beheerPassword)
$request = xmlrpc_encode_request(
  'Upload_CSV_bestand',
  array(
    'beheerLogin'      => $beheerLogin,     // xml-rpc user
    'beheerPassword'   => $beheerPassword,  // xml-rpc password
    'CSV_bestand_type' => '1' | '2' | '3' , // 1=Contactpersonen/Hoofdlidmaatschappen
                                            // 2=Gremiumlidmaatschap codes
                                            // 3=Gremiumlidmaatschappen
    'CSV_bestand'      => $CSV_bestand));   // het CSV bestand (base64 encoded)
Output positief:
  $reply = array(
    'Action'    => 'Upload_CSV_bestand',
    'Status'    => 'TRUE',
    'Message'   => 'Bestand opgeslagen');
Output negatief:
  $reply = array(
    'Action'    => 'Upload_CSV_bestand',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Er is iets mis gegaan');

// M.2 SchrijfNieuwLidIn
// 
// Maak in het CRM een nieuw HCC lid aan
// De NAW gegevens worden in een dedicated formaat aangeleverd
// (authenticatie op basis van beheerLogin en beheerPassword)
$request = xmlrpc_encode_request(
  'SchrijfNieuwLidIn',
  array(
    'beheerLogin'    => $beheerLogin,    // xml-rpc user
    'beheerPassword' => $beheerPassword, // xml-rpc password
    'NAWgegevens'    => $NAW_Array,
    'ServerID'       => gethostname(),
    'SiteID'         => $siteID,
    'RemoteID'       => $remoteIPaddress);
// $NAW_array = array(
//   'GeboorteDatum'         => $geboortedatum,
//   'Geslacht'              => $geslacht,
//   'Voornaam'              => $voornaam,
//   'Voorletters'           => $voorletters,
//   'Tussenvoegsel'         => $tussenvoegsel,
//   'Achternaam'            => $achternaam,
//   'Straatnaam'            => $straatnaam,
//   'Huisnummer'            => $huisnummer,
//   'HuisnummerToevoeging'  => $huisnummertoevoeging,
//   'Woonplaats'            => $woonplaats,
//   'Postcode'              => $postcode,
//   'Land'                  => $land,
//   'Telefoonnummer'        => $telefoonnummer,
//   'MobielNummer'          => $mobielnummer,
//   'Mail'                  => $mail,
//   'IBAN'                  => $IBAN,
//   'Interessegroep'        => $IGs, // komma-gescheiden lijst met IG's
//   'Geschenk'              => $geschenk,
//   'Actiecode'             => $actiecode,
//   'Voorwaarden'           => $Akkoord); // 'Akkoord'
)
Output positief:
  $reply = array(
    'Action'    => 'SchrijfNieuwLidIn',
    'Status'    => 'TRUE',
    'Message'   => 'nieuw lid ingeschreven',
    'hccLidnr'  => $hccLidnr,
    'hccCode'   => $hccCode);
Output negatief:
  $reply = array(
    'Action'    => 'SchrijfNieuwLidIn',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Er is iets mis gegaan');

// M.3 Verwerk_JSON_mutatie
// De CRM proxy kan NAW en/of IG mutaties en/of hccCode mutaties live doorgeven
// Deze gegevens worden in JSON in een dedicated formaat aangeleverd
// (authenticatie op basis van beheerLogin en beheerPassword)
$request = xmlrpc_encode_request(
  'Verwerk_JSON_mutatie',
  array(
    'beheerLogin'    => $beheerLogin,    // xml-rpc user
    'beheerPassword' => $beheerPassword, // xml-rpc password
    'mutatie_type'   => '1' | '2',       // 1=Contactpersoon/Hoofdlidmaatschap
                                         // 2=Gremiumlidmaatschap
    'JSON_mutatie'   => $JSON_mutatie)); // de JSON payload
Output positief:
  $reply = array(
    'Action'    => 'Verwerk_JSON_mutatie',
    'Status'    => 'TRUE',
    'Message'   => 'Mutatie verwerkt');
Output negatief:
  $reply = array(
    'Action'    => 'Verwerk_JSON_mutatie',
    'Status'    => 'FALSE',
    'Message'   => 'Gegevenscombinatie onjuist'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Er is iets mis gegaan');

// M.4 Vertaal landcode
// Het CRM werkt met numerieke landcodes, wij met cijfers
// Vertaal die
// Er moet in de aanroep 1 veld aanwezig zijn, beide waarden komen in het antwoord terug
$request = xmlrpc_encode_request(
  'ISO_landcode',
  array(
    ['ISO_numeriek' => $ISO_numeriek,]
    ['ISO_code   '  => $ISO_code]));
Output positief:
  $reply = array(
    'Action'       => 'ISO_landcode',
    'Status'       => 'TRUE',
    'Message'      => 'ISO code lookup geslaagd',
    'ISO_numeriek' => $ISO_numeriek,
    'ISO_code   '  => $ISO_code,
    'ISO_benaming' => $ISO_benaming); // de descriptive name van deze ISO code
Output negatief:
  $reply = array(
    'Action'    => 'ISO_landcode',
    'Status'    => 'FALSE',
    'Message'   => 'Kan geen bijpassende vertaling vinden'
    'ExtraInfo' => 'Vul alle verplichte velden in!' |
                   'Er is iets mis gegaan');

// M.5 MuteerAanmeldingsformulier
// Sla een JSON veld op in de XML-RPC server zodat deze weer opgehaald kan worden door de websites
// Authenticatie op basis van hccLidnummer en JoomlaToken
// Deze mutaties mogen alleen door HN#WM of SITE#WM gedaan worden.

  $request = xmlrpc_encode_request(
    'MuteerAanmeldingsformulier',
    array(
      'hccLidnummer'  => $hccLidnummer,
      'JoomlaToken'   => $JoomlaToken,
      'formulierdata' => $formulierdata, // JSON veld met alle gegevens voor het aanmeld formulier
      'ServerID'      => gethostname(), 
      'SiteID'        => $siteID,
      'RemoteID'      => $remoteIPaddress ));
Output positief:
  $reply = array(
    'Action'   => 'MuteerAanmeldingsformulier',
    'Status'   => 'TRUE',
    'Message'  => 'aanmeldingsformulier bijgewerkt';
 
// M.6 HaalAanmeldingsformulier
// (geen authenticatie)
  $request = xmlrpc_encode_request(
    'HaalAanmeldingsformulier',
    array(
     ['ServerID' => gethostname(),]
     ['SiteID'   => $siteID,]
     ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'        => 'HaalAanmeldingsformulier',
    'Status'        => 'TRUE',
    'formulierdata' => $formulierdata); // JSON veld met alle gegevens voor het aanmeld formulier 

// M.7 GeefFactuurOverzicht
// (authenticatie op basis van hccLidnummer + JoomlaToken + siteID
  $request = xmlrpc_encode_request(
    'GeefFactuurOverzicht',
    array(
      'hccLidnummer' => $hccLidnummer,
      'JoomlaToken'  => $JoomlaToken,
     ['ServerID'     => gethostname(),]
      'SiteID'       => $siteID, 
     ['RemoteID'     => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'           => 'GeefFactuurOverzicht',
    'Status'           => 'TRUE',
    'FactuurOverzicht' => $FactuurOverzicht); 
//  $FactuurOverzicht =
//     array(
//       array(
//         'FactuurID'     => 'a5b93460-4536-ea11-a813-000d3a2c53fa',
//         'FactuurNummer' => '200118673J5'
//         'FactuurDatum'  => '2020-01-15'
//         'bedrag'        => 42.37
//         'BetaalStatus'  => 0]));
//     )

// M.8 HaalFactuur
// (authenticatie op basis van JoomlaToken of FactuurToken)
  $request = xmlrpc_encode_request(
    'HaalFactuur',
    array(
      'hccLidnummer'  => $hccLidnummer,
     ['JoomlaToken'   => $JoomlaToken,]
     ['FactuurToken'  => $FactuurToken,]
      'FactuurNummer' => $FactuurNummer,
     ['ServerID'      => gethostname(),]
     ['SiteID'        => $siteID,]
     ['RemoteID'      => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'HaalFactuur',
    'Status'  => 'TRUE',
    'factuur' => $factuurgegevens); 
//  $factuurgegevens =
//    array(
//         'FactuurNummer' => $FactuurNummer,
//         'FactuurDatum'  => $FactuurDatum,
//         'FactuurID'     => $FactuurID,
//         'Bestandsnaam'  => $Bestandsnaam,
//         'PDF'           => $PDF) // base64 encoded PDF

Echo test


// t.b.v. controle of de verbinding met de XML-RPC server functioneert
// Eenvoudige echo test

  $request = xmlrpc_encode_request(
    'echo',
    array(
      'What'     => $string,
     ['ServerID' => gethostname(),] 
     ['SiteID'   => $siteID,]
     ['RemoteID' => $remoteIPaddress]));
Output positief:
  $reply = array(
    'Action'  => 'echo',
    'Status'  => 'TRUE',
    'Message' => $string);

HenZ XML-RPC interface

Overzicht van XML-RPC procedures die bij HenZ draaien (worden via de Hobbynet XML-RPC server afgehandeld)

- Action=2
  wijzig gebruikersnaam en wachtwoord op basis van hcclidnummer en de hash van de hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  (XML-RPC server voert de hccnet XML-call uit, zie 2.1, 2.2 en 2.3)

- Action=3
  controleer of een gebruikersnaam bestaat
  (XML-RPC server voert de hccnet XML-call uit, zie 8.2)

- Action=4
  creer een nieuwe gebruiker. Per lidnummer is er 1 account. Als er al een 
  account voor dit lidnummer bestaat wordt het bestaande account hernoemd.
  (XML-RPC server voert de hccnet XML-call uit, zie 8.1)

- Action=5
  wijzig wachtwoord op basis van hcclidnummer en de hash van de hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  (XML-RPC server voert de hccnet XML-call uit, zie 2.1, 2.2 en 2.3)

- Action=7
  Uitgeschreven lid is weer actief lid geworden
  (Wordt aangeroepen vanuit de cronjob)

- Action=8
  Lid heeft een nieuwe hcc-code gekregen
  (Wordt aangeroepen vanuit de cronjob)

Release notes

2012.02.08 Wijzigingen versie 5:
 - 4.1 verwijder_hcc_Lidnummer i.p.v. hcc_Lidnummer
 - 4.1 optionele extra parameter verwijder_hccLogin
 - Optionele parameters aangegeven
 - Vanwege de duidelijkheid de beheerLogin en beheerPassword velden
   bovenin de betreffende aanroepen gezet
   (De volgorde van de parameters is niet relevant, dus dit is geen
    interface-aanpassing)
2012.02.16 Wijzigingen versie 6:
 - 2.1/2.2/2.3 geef ook cn en sn terug na aanpassen van het wachtwoord
 - 3.1 geef cn en sn terug na aanmaken nieuwe gebruiker
2012.02.27 Wijzigingen versie 7:
 - Neem de XML-RPC interface van HenZ in deze XML-RPC server op
   8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gegevens tevens in LDAP op
 - 2.1 wijzig wachtwoord - optie 1
   * Nieuw wachtwoord is verplicht, niet optioneel
   * wijzigingen worden naar hccnet.nl doorgezet
 - 2.2 wijzig wachtwoord, optie 2
   * Nieuw wachtwoord is verplicht, niet optioneel
   * gebruikersnaam kan niet meer via deze interface aangepast worden
   * wijzigingen worden naar hccnet.nl doorgezet
 - 2.3 wijzig wachtwoord, optie 3
   * wijzigingen worden naar hccnet.nl doorgezet
2012.03.26 Wijzigingen versie 8:
  - Breidt de XML-RPC interface van HenZ in deze XML-RPC server uit met
    8.2 Controleer of de gebruikersnaam op dit moment bestaat
2012.04.09 Wijzigingen versie 9:
 - Vervang alle 'ldap' aanroepen door 'HCCldap' aanroepen
 - documentatie van HenZ call action=2 aangepast, action=5 toegevoegd
2012.05.03 Wijzigingen versie 10:
 - 1.1 / 1.2 / 1.3 geven nu ook 'ProfielBekend' terug om uniek te bepalen
   of deze bezoeker een first-time-login pagina te zien dient te krijgen
 - documentatie van 2.1 (wijzig wachtwoord) aangepast: 
   2.1 kan alleen als profiel is doorlopen
 - nieuwe procedure t.b.v. zoekscherm PC30
   * A.1 ZoekHCCLid 
     - hiervoor is de database met diverse velden uitgebreid
       (postcode, e-mailadres, huisadres, woonplaats, land, telefoonnummer)
       Dit heeft impact op diverse andere procedures (t.b.s.)
 - nieuwe procedure t.b.v. 'gewone' profielpagina
   * B.1 GeefDBFPersoonID
 - nieuwe procedure t.b.v. cron-job
   * C.1 GeefOpgezegdeLeden
2012.05.10 Wijzigingen versie 11
 - 1.3 GebruikerBestaatControle
   * nieuwe parameter: hccPseudoniem
   * nieuw veld in antwoord: hccPseudoniem
 - 2.3 WijzigGebruikersGegevens
   * nieuwe parameter: hccPseudoniem
 - 2.4 WijzigGebruikersGegevens
   * nieuwe parameter: hccPseudoniem
 - 3.1 NieuweGebruiker
   * nieuwe parameter: hccPseudoniem
 - 8.1 MaakGebruikerAan
   * nieuwe parameter: nieuw_hccPseudoniem
   * alle parameters zijn verplicht (niet langer optioneel)
   * nieuw antwoord: Gegevenscombinatie onjuist
 - 8.3 IsDezePseudoniemNogBeschikbaar
   * Nieuwe procedure t.b.v. 1e keer doorlopen profielpagina
 - A.1 ZoekHCCLid
   * 'Zoeklimiet bereikt' wordt als ExtraInfo meegegeven
   * nieuwe velden in antwoord: hccPseudoniem en hccLogin
 - B.1 GeefDBFPersoonID
   * Zoeken kan nu ook op hccLogin en op hccPseudoniem
 - C.1 GeefOpgezegdeLeden
   * Geef nu ook hccLogin en hccPseudoniem terug
2012.05.14 Wijzigingen versie 12
 - 1.x GebruikerBestaatControle
   * Geef ook DBFPersoonID terug
 - 4.1 Gooi een gebruiker weg.
   * Haal ongebruikte parameter hccLogin weg
 - 5.1 Wijzig hccIG
   * Haal ongebruikte parameter hccLogin weg
 - 6.1 Wijzig hccRegio
   * Haal ongebruikte parameter hccLogin weg
 - 7.1 Wijzig hccRol
   * Haal ongebruikte parameter hccLogin weg
2012.05.20 Wijzigingen versie 13
 - A.1 ZoekHCCLid 
   * Geef resultaten gestructureerder formaat
   * Geef in ExtraInfo weer hoeveel echte resultaten er gevonden zijn
 - C.1 GeefOpgezegdeLeden 
   * Geef resultaten in gestructureerder formaat
2012.06.03 Wijzigingen versie 14
 - 3.1 NieuweGebruiker
   * Geef ook DBFPersoonID mee
2012.08.17 Wijzigingen versie 15
 - C.1 GeefOpgezegdeLeden 
   * Geef ook hccLogin in het antwoord terug
 - D.1 HCCpartner/ControleerHCCLidmaatschap
   * Nieuwe aanroep
2012.09.29 Wijzigingen versie 16
 - Alle cron gerelateerde opdrachten verwijderd
   * 3.1 NieuweGebruiker
   * 4.1 GooiGebruikerWeg
   * 5.1 WijzigHccIG
   * 6.1 WijzigHccRegio
   * 7.1 WijzigHccRol
2012.10.28 Wijzigingen versie 17
 - nieuwe procedure t.b.v. PC30 beheerpagina
   * A.2 HaalPC30Token
 - nieuwe procedure t.b.v. Drupal profielpagina
   * 2.4 vervallen 
     (WijzigGebruikersGegevens op basis van pseudoniem)
   * 2.5 WijzigGebruikersGegevens
     Nieuwe keuze: wijzig pseudoniem
2012.11.14 Wijzigingen versie 18
 - 1.x GebruikerBestaatControle
   * Geef ook mail in het antwoord terug
2012.11.30 Wijzigingen versie 19
 - E.1 HCCkader/WijzigGebruikersGegevens
   * Nieuwe aanroep
 - F.1 / F.2 / F.3 ControleerKaderlid
   * Nieuwe aanroep
2012.12.18 Wijzigingen versie 20
 - Haal DBFPersoonID weg uit alle aanroepen en alle resultaten
   * Antwoord van 1.x GebruikerBestaatControle
   * B.1 GeefDBFPersoonID opgeheven
 - A.1 ZoekHCCLid geeft nu ook hccMobiel terug (t.b.v. PC30 zoekpagina)
 - C.1 GeefOpgezegdeLeden verder uitgewerkt:
   * Geeft alleen de door Drupal gebruikte velden 'hccLogin' en 'hccEindDatum'
     terug in het antwoord
   * Geeft nu 'echte' antwoorden i.p.v. dummy resultaten
 - F.1 ControleerKaderlid geeft nu ook optioneel 'sn' en 'givenName' 
     terug (in de beheer-variant)
2013.01.25 Wijzigingen versie 21
 - A.1 ZoekHCCLid uitgebreid
   * Geeft nu ook hccBeginDatum, hccEindDatum en hccRol terug
2013.02.02 Wijzigingen versie 22
 - A.1 ZoekHCCLid
   * Interface aangepast
 - A.3 ZoekGroeperingsLid
   * Nieuwe aanroep
 - F.4 GeefAlleGroeperingen
   * Nieuwe aanroep
 - F.5 GeefAlleKaderRollen
   * Nieuwe aanroep
2013.03.01 Wijzigingen versie 23
 - A.3 ZoekGroeperingsLid
   * Geeft andere resultaten terug
 - 2.2 WijzigWachtwoord
   * Geeft nu ook hccLogin terug (voor ww-vergeten op de Drupal site)
 - HCCenquete implementatie
   * G.1 Expandeer NL postcode
   * G.2 Haal lidgegevens op
   * G.3 Pas lidgegevens aan
2013.03.18 Wijzigingen versie 24
 - ZoekGroeperingsLid op basis van token
 - A.4 Lid bezoekt bijeenkomst
   * nieuwe aanroep 
 - A.5 VraagLidgegevensTokenAan
   * nieuwe aanroep 
2013.04.07 Wijzigingen versie 25
 - D.1 HCCpartner/ControleerHCCLidmaatschap
   Simpeler interface ontwikkeld ('HCCpartners' i.p.v. 'HCCpartner')
 - G.3 mag ook Tussenvoegsels aanpassen
2013.04.25 Wijzigingen versie 26
 - H.1 HCC-groepering / GebruikerBestaatControle
   Nieuwe interface voor validatie vanaf groeperings websites
2013.05.03 Wijzigingen versie 27
 - 2.6 HaalOptInKeuzen
   * nieuwe aanroep 
 - 2.7 SchrijfOptInKeuzen
   * nieuwe aanroep 
 - 2.8 HaalOptInLijst
   * nieuwe aanroep 
 - I.1 HCC-forum / GebruikerBestaatControle
   * nieuwe aanroep
 - HCCpartners aanroep nieuwe interface ('Action' => 'ControleerHCCLidmaatschap')
2013.07.05 Wijzigingen versie 28
 - 8.1 MaakGebruikerAan
   * extra parameters (mail, hccPseudoniem) in het antwoord
 - 1.1/1.2/1.3 GebruikerBestaatControle
   * extra parameter (mailHccnet)
 - A.1 ZoekHCCLid
   * extra parameter (mailHccnet)
 - A.3 ZoekGroeperingsLid
   * extra parameter (mailHccnet)
2013.08.31 Wijzigingen versie 29
 - F.1 / F.2 / F.3 HCC-kader / ControleerKaderlid
   * extra output parameter (hccKaderMail)
 - 1.1/1.2/1.3 GebruikerBestaatControle
   * extra output parameter (hccForumLogin)
 - H.1 HCC-groepering / GebruikerBestaatControle
   * komma-gescheiden lijst met groeperingen mogelijk
   * extra output parameter (mailHccnet)
2013.12.26 Wijzigingen versie 30
 - 3.1 Geef mijn lidnummer
   * nieuwe aanroep
 - A.1 ZoekHCCLid
   * geef nu ook 'ProfielBekend' terug om aan de PC30 omgeving door te geven
     dat het wachtwoord niet veranderd mag worden door PC30
 - A.6 GeefBezoekersOverzicht
   * geef nu ook 'Locatie' terug indien van toepassing
 - A.7 GeefLocaties
   * nieuwe aanroep
 - I.1 HCC-forum / GebruikerBestaatControle
   * parameters aangepast
   * authenticatie op basis van hccLogin + userPassword of lidnummer + hcc-code
   * geen algemene hcc-forum authenticatie meer mogelijk
 - F.7 ControleerKaderlidGroep
   * Nieuwe aanroep
2014.02.01 Wijzigingen versie 31
 - A.8 RegistreerGast
   * nieuwe aanroep
 - H.2 MatchPostcodeMetRegio
   * nieuwe aanroep
 - nieuwe interface (losse, unieke aanroepen, niet meer gegroepeerd)
2014.09.27 Wijzigingen versie 32
 - C.1 GeefOpgezegdeLeden hernoemd naar GeefUitgeschrevenLeden
 - I.3 GeefhccEindDatum
   * nieuwe aanroep
 - Action=7 en Action=8 toegevoegd aan de HenZ interface
2014.12.12 Wijzigingen versie 33
 - F.1 / F.2 / F.3 HCC-kader / IsKaderLid
   * extra output parameter (mail, mailHccnet, hccKaderForward)
 - F.8 HCC-kader / ZetKaderForward
   * nieuwe aanroep
2015.05.06 Wijzigingen versie 34
 - GeefMijnGegevens
   * nieuwe aanroep
 - ValideerPCActiveAbonnee
   * vervallen
 - 1.4 GebruikerBestaatControle
   * extra output parameter (hccKaderForward)
 - D.1 HCCpartner/ControleerHCCLidmaatschap
   * optionele extra output parameter (ExtraInfo)
2015.09.27 Wijzigingen versie 35
 - HeeftForumCredentials
   * vervallen
2015.11.20 Wijzigingen versie 36
 - SchrijfNietlidInOpBulletin
   * nieuwe aanroep
2015.12.13 Wijzigingen versie 37
 - serverID als optionele parameter
 - SchrijfNietlidInOpBulletin
   * Maak velden optioneel
2016.01.05 Wijzigingen versie 38
 - A.7 GeefLocaties
   * optionele parameter JoomlaFilter
 - F.4 GeefAlleGroeperingen
   * optionele parameter JoomlaFilter
 - F.5 GeefAlleKaderRollen
   * optionele parameter JoomlaFilter
2016.01.15 Wijzigingen versie 39
 - H.3 GeefMijnGegevens
   * geeft nu ook hccOptIn terug
   * geeft nu ook JoomlaToken terug
 - H.4 PasOptInKeuzeAan
   * nieuwe aanroep
 - SiteID en RemoteID als optionele parameter
2016.03.17 Wijzigingen versie 40
 - H.5 ZoekKaderLeden
   * nieuwe aanroep 
2016.03.20 Wijzigingen versie 41
 - ServerID, SiteID en RemoteID als optionele parameters bij alle aanroepen
 - A.7 GeefLocaties
   * optionele parameter KadernetFilter
 - A.9 GeefLocatieNamen
   * optionele parameter KadernetFilter
 - F.4 GeefAlleGroeperingen
   * optionele parameter KadernetFilter
 - F.5 GeefAlleKaderRollen
   * optionele parameter KadernetFilter
 - F.6 WijzigHccRol
   * vervallen
 - F.7 IsGroeperingsKaderlid
   * vervallen
 - 8.3 IsDezePseudoniemNogBeschikbaar
   * vervallen
 - 2.7 SchrijfOptInKeuzen
   * vervallen
 - 2.5 WijzigGebruikersGegevens (hccPseudoniem)
   * vervallen
 - H.2 MatchPostcodeMetRegio
   * vervallen
2016.04.02 Wijzigingen versie 42
 - H.6 GeefMijnKaderDetails
   * nieuwe aanroep 
2016.07.03 Wijzigingen versie 43
 - Ubuntu 16.04 aanpassingen (PHP versie 7) beschreven
2016.09.01 Wijzigingen versie 44
 - H.5 ZoekKaderLeden
   * extra parameter 'hccMobiel'
2016.10.13 Wijzigingen versie 45
 - H.3 GeefMijnGegevens (dedecated Joomla aanroep)
   * hccForumLogin weg als parameter
   * Als het om een webmaster gaat, vul dan eventueel hccRegio of hccIG aan 
     met die groepering, ook als hij geen lid is van die groepering
 - I.4 GebruikerBestaatControle
   * hccForumLogin weg als parameter
2016.12.01 Wijzigingen versie 46
 - 8.3 IsDezePseudoniemNogBeschikbaar teruggezet
2017.05.28 Wijzigingen versie 47
 - H.7 GeefMinimaleKaderGegevens (t.b.v. eenmalige kadermailing)
 - H.8 ZetMinimaleKaderGegevens  (t.b.v. eenmalige kadermailing)
2017.09.01 Wijzigingen versie 48
 - A.10 SchrijfNietlidInOpBulletin nu alleen voor 1 bulletin tegelijk
 - 2.2 WijzigGebruikersGegevens (op basis van gebruikersnaam en wachtwoord)
       is vervallen (was een oude Drupal aanroep)
 - A.3 ZoekGroeperingsLid geeft ook hccKaderToonMobiel terug
 - H.7 GeefMinimaleKaderGegevens geeft ook hccKaderToonMobiel terug
2017.11.14 Wijzigingen versie 49
 - A.3 ZoekGroeperingsLid geeft geen hccKaderToonMobiel meer terug
 - A.3 ZoekGroeperingsLid geeft alleen hccMobiel als hccKaderToonMobiel dat toestaat
2018.02.18 Wijzigingen versie 50
 - H.6 GeefMijnKaderDetails geeft ook hccKaderToonMobiel terug
 - H.9 PasKaderGegevensAan
   * nieuwe aanroep
 - H.3 GeefMijnGegevens geeft 3 extra parameters terug (hccKaderMail, hccKaderForward,
   hccKaderToonMobiel)
 - JoomlaTokens worden gevalideerd op siteID, niet langer op serverID
 - diverse aanroepen kunnen nu ook via de bezoekersregistratie-proxy aangeroepen worden. 
   Dan zullen ze hccLidnr en JoomlaToken als extra parameter moeten hebben:
   (GeefAlleGroeperingen, GeefAlleKaderRollen, GeefLocaties, GeefLocatieNamen)
   De bezoekersregistratie aanroepen hebben enkel JoomlaToken als extra parameter nodig:
   (LidBezoektBijeenkomst, GeefBezoekersOverzicht)
2018.02.26 Wijzigingen versie 51
 - H.3 GeefMijnGegevens geeft extra parameter hccMobiel terug 
 - H.9 PasKaderGegevensAan kan nu ook kadermail password aanpassen
 - K.1 ValideerToken
   * nieuwe aanroep
 - K.2 ValideerHCCCode
   * nieuwe aanroep
2018.03.17 Wijzigingen versie 52
 - H.3 Haal al mijn gegevens
   Extra optie 'compact' om alleen essentiele resultaten te verkrijgen
   (t.b.v. de Android bezoekersregistratie applicatie)
2018.03.25 Wijzigingen versie 53
 - I.2 IsHCCLid
   (Oude aanroep teruggezet, wordt nog in vraagbaak module gebruikt)
2018.07.01 Wijzigingen versie 54
   * A.1 beheer authenticatie op basis van lidnummer + hccCode (tbv VZ-portal)
   * A.2 HaalPC30Token weggehaald
2018.08.22 Wijzigingen versie 55
  * 1.2 GebruikerBestaatControle' (op basis van hccLogin en userPassword) weggehaald
  * 1.4 GebruikerBestaatControle' (op basis van zoekHccLogin of zoekHccLidnr) weggehaald
  * 2.8 HaalOptInLijst weggehaald
  * E.1 PasKaderWachtwoordAan weggehaald
  * F.1 IsKaderLid (op basis van hccLidnr en hccCode) weggehaald
  * F.3 IsKaderLid (op basis van beheerdernaam en beheerderwachtwoord) was al weg
  * F.8 ZetKaderForward weggehaald
  * H.1 IsGroeperingsLid weggehaald
  * H.6 GeefMijnKaderDetails weggehaald
  * H.7 GeefMinimaleKaderGegevens weggehaald
  * H.8 ZetMinimaleKaderGegevens weggehaald
  * K.1 ValideerHCCCode weggehaald
  * K.2 ValideerToken weggehaald
  * H.3 GeefMijnGegevens geeft omvang kader mailbox mee terug
2018.11.06 Wijzigingen versie 56
  Nieuwe aanroepen t.b.v. forum en vraagbaak autorisaties
  * L.1 MaakOnderwerp
  * L.2 VerwijderOnderwerp
  * L.3 GeefOnderwerpen
  * L.4 MuteerOnderwerp
  * L.5 MuteerOnderwerpAutorisatie
  * L.6 ToonOnderwerpAutorisatie
  * H.5 ZoekKaderLeden heeft compact optie
2018.11.16 Wijzigingen versie 57
  * L.5 MuteerOnderwerpAutorisatie kent nu ook RED(acteur)
2018.12.17 Wijzigingen versie 58
  * A.11 GeefBezoekersAantallen (nieuwe aanroep)
  * H.10 PasUserWachtwoordAan (nieuwe aanroep)
2019.02.21 Wijzigingen versie 59
  * A. 6 GeefBezoekersOverzicht geeft enkel lijst van bezoekers laatste bijeenkomst
2019.10.26 Wijzigingen versie 60
  * A.4 Schrijf bezoekers niet meer automatisch in op bulletins
  * H.4  PasOptInKeuzeAan kan ook door LA aangeroepen worden
  Nieuwe aanroepen t.b.v. eigen implementatie van mijn.hcc.nl in de Joomla modules
  * H.11 PasPseudoniemAan
  * H.12 ValideerWachtwoordEisen
  * H.13 PasWachtwoordAan (1: op JoomlaToken, 2: op PWResetToken)
  * H.14 MaakPWResetToken
  * H.15 ValideerPWResetToken
  * H.16 RuimJoomlaTokenOp
  * A.12 GeefAlleBulletins
  * A.13 ExpandeerPostcode
  * A.14 UpdateContactGegevens
  * A.15 UpdateContactEmail
  * A.16 UpdateVoornaam
  * A.17 UpdateVoorletters
  * A.18 NormaliseerTelefoon
  * A.19 UpdateTelefoon
  * A.20 UpdateMobiel
  * A.21 HaalIGBedragenOp
  * A.22 HaalTariefGroepenOp
  * A.23 PasInteressegroepAan
  * F.10 MuteerGroeperingSamenstelling
  * A.24 GeefSSOUrls
  Aanpassingen gemaakt aan
  8.1 MaakGebruikerAan
  F.5 GeefAlleKaderRollen
2020.01.04 Wijzigingen versie 61
  Nieuwe aanroepen t.b.v. IDEAL betaling hobbynet abonnees
  H.17 GeefAantalDomeinen
2020.01.06 Wijzigingen versie 62
  Nieuwe aanroepen t.b.v. Cayentis (CRM webproxy) implementatie
  * M.1  Upload_CSV_bestand
  * M.2  SchrijfNieuwLidIn
  * M.3  Verwerk_JSON_mutatie
  * M.4  ISO_landcode
  * M.5  MuteerAanmeldingsformulier
  * M.6  HaalAanmeldingsformulier
  * M.7  GeefFactuurOverzicht
  * M.8  HaalFactuur
  * A.25 UpdateNAW
  Vervallen aanroepen
  * A.14 UpdateContactGegevens
  * A.15 UpdateContactEmail
  * A.16 UpdateVoornaam
  * A.17 UpdateVoorletters
  * A.19 UpdateTelefoon
  * A.20 UpdateMobiel
  Aangepaste aanroepen
  * A.23 PasInteressegroepAan
2020.03.27 Wijzigingen versie 63
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  * H.18 ResetHCCCode
  * H.19 PasHccLoginAan
2020.04.10 Wijzigingen versie 64
  Nieuwe aanroepen 
  * A.26 VerwijderNietLid
  Aanpassingen gemaakt aan
  * A.1  ZoekHCCLid: nieuwe zoekoptie 'niet_leden'
  Opnieuw geimplementeerd
  * A.20 UpdateMobiel
2020.11.26 Wijzigingen versie 65
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  * H.20 MaakTestLogin
  Aanpassingen gemaakt aan
  - H.3 GeefMijnGegevens: optionele parameter 'hccGroepering'
  Het werken met een testaccount heeft impact op de volgende aanroepen:
  - G.7  GeefFactuurOverzicht
  - M.8  HaalFactuur
  - L.1  MaakOnderwerp
  - H.14 MaakPWResetToken
  - F.10 MuteerGroeperingSamenstelling
  - L.4  MuteerOnderwerp
  - L.5  MuteerOnderwerpAutorisatie
  - H.19 PasHccLoginAan
  - A.23 PasInteressegroepAan
  - H.9  PasKaderGegevensAan
  - H.4  PasOptInKeuzeAan
  - H.11 PasPseudoniemAan
  - H.13 PasWachtwoordAan
  - H.18 ResetHCCCode
  - A.20 UpdateMobiel
  - A.25 UpdateNAW
  - L.2  VerwijderOnderwerp
  - A.5  VraagLidgegevensTokenAan
  - 2.1  WijzigGebruikersGegevens
  - H.3 GeefMijnGegevens geeft extra parameter terug (testaccount)
2021.08.01 Wijzigingen versie 66
  Aanpassingen gemaakt aan
  - H.4 PasOptInKeuzeAan werkt nu ook op basis van OptOutToken
2021.10.10 Wijzigingen versie 67
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  - H.21 UpdateOTP
  Aanpassingen gemaakt aan
  - H.3 GeefMijnGegevens geeft extra parameters terug (hccOtpKey en hccOtep)
2021.10.13 Wijzigingen versie 68
  Aanpassingen gemaakt aan
  - H.21 UpdateOTP 
2021.11.03 Wijzigingen versie 69
  Nieuwe aanroepen t.b.v. Joomla module aanpassingen
  - H.22 HeeftOtpKey
2021.12.24 Wijzigingen versie 70
  Vervallen aanroepen
  - A.11 GeefBezoekersAantallen (laatste aanroep 2018.12.15)
  - I.2  IsHCCLid (vraagbaak module al minstens 2 jaar niet meer gebruikt)
  - 2.6  HaalOptInKeuzen (niet meer in gebruik sinds 2020.03.01)
2022.03.24 Wijzigingen versie 71
 - I.2 IsHCCLid
   (Oude aanroep teruggezet, Esther vraagt opnieuw om deze functionaliteit tbv vraagbaak, ticket 2022032394001082)

Aanpassingen aan de Apache omgeving

Apache modules (PHP 8)

Ubuntu 20.04 wordt standaard met PHP versie 7.0 uitgeleverd.

In /etc/apt/sources.list.d/ondrej-ubuntu-php-focal.list dient de volgende regel opgenomen te worden:

deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main

De opdrachten om de modules op te halen zijn:

apt-get install php-xmlrpc
apt-get install apache2
apt-get install ldap-utils
apt-get install php-ldap
apt-get install libapache2-mod-php
apt-get install php-gnupg

algemeen

Het encrypted backup script is verplaatst naar '/usr/local/hobbynet/local' en hernoemd naar 'backup-encrypted.bash'. Dit is omdat deze niet mee mag worden gesynchroniseerd.

Tevens wordt 1x per dag /usr/local/hobbynet/bin gesynchroniseerd (1-richting van hcc-ldap-lb1 naar hcc-ldap-lb2)

Aanpassingen in de firewall

Op de server waar de XML-RPC server staat, moeten enkele firewall aanpassingen gemaakt worden.

  • inkomend: sta TCP 443 toe vanaf het interne netwerk (www-prod, www-test), en vanaf eventuele andere plekken die we expliciet toe willen staan.
  • inkomend: sta TCP 443 toe vanaf mijn.hcc.nl (XML-RPC aanroepen vanaf de portal)
  • inkomend: sta TCP 443 toe vanaf service.hccnet.nl toe (XML-RPC aanroep GeefUitgeschrevenLeden vanuit HenZ)
  • uitgaand: sta TCP 443 naar service.hccnet.nl toe (XML-RPC aanroepen naar HenZ)

Aanpassingen aan AppArmor

Alhoewel technisch gezien dit bij slapd behoort, neem ik het toch hier op.

Als het Hobbynet certificaat in de map /disk/site/etc/ssl/hobby.nl/ wordt neergezet, dan zal apparrmor de toegang tot de certificaten blokkeren. Neem daarom in de local directory van apparmor het volgende op:

# /etc/apparmor.d/local/usr.sbin.slapd
# Site-specific additions and overrides for usr.sbin.slapd.
# For more details, please see /etc/apparmor.d/local/README.
#include <abstractions/ssl_certs>
/disk/site/etc/ssl/hobby.nl/ r,
/disk/site/etc/ssl/hobby.nl/* r,

CRM (Azure) proxy herstarten

Als er indicaties zijn dat niet alle JSON berichten meer vanuit het CRM aangeboden worden aan de XML-RPC server, dan kan het helpen om de CRM proxy te herstarten

  • Ga naar https://portal.azure.com/
  • Login met zelfde account als voor het CRM
  • Soms krijg je een popup. Die kan je weg klikken, je wilt geen rondleiding
  • Klik op hccdyn01-aps-crm01 voor productie en hccdyn01-aps-dev01 voor test
  • En dan kan je op opnieuw starten klikken.