Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,15 @@ do_action('pg::exception/intercept', $exception, $method)
```

The `$exception` parameter contains the caught exception object.

### Provide Custom Mapping Options from a Theme Directory

This plugin includes supplier-specific mapping option files. In version 1 of the "HaalCentraal API", all available fields were returned, even when only a subset was needed.

Since version 2 of HaalCentraal, this has changed: the goal binding (doelbinding) now determines which fields are returned. This results in a more concise dataset that contains only the necessary fields. Because each municipality (gemeente) can define its own unique goal bindings and corresponding fields, this plugin cannot include all possible mapping configurations by default.

```php
add_filter('pg::theme/dir_mapping_options', function ($value) {
return __DIR__ . '/templates/owc-prefill/';
}, 10, 1);
```
13 changes: 8 additions & 5 deletions config/suppliers.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
declare(strict_types=1);

return [
'enable-u' => 'EnableU',
'openzaak' => 'OpenZaak',
'pink-roccade' => 'PinkRoccade',
'vrij-brp' => 'VrijBRP',
'we-are-frank' => 'WeAreFrank'
'mapping' => [
'enable-u' => 'EnableU',
'openzaak' => 'OpenZaak',
'pink-roccade' => 'PinkRoccade',
'pink-roccade-v2' => 'PinkRoccadeV2',
'vrij-brp' => 'VrijBRP',
'we-are-frank' => 'WeAreFrank',
]
];
122 changes: 83 additions & 39 deletions languages/prefill-gravity-forms.pot
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2026-01-08T15:38:42+00:00\n"
"POT-Creation-Date: 2026-01-09T09:41:51+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: prefill-gravity-forms\n"
Expand Down Expand Up @@ -717,145 +717,189 @@ msgid "Basis URL"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:99
msgid "Verwerking"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:100
msgid "Uitleg nog te bepalen..."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:107
msgid "Gebruiker"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:108
msgid "Gebruiker die de \"HaalCentraal\" aanroept, meestal \"BurgerZelf\"."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:115
msgid "Leverancier"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:112
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:128
msgid "Gebruik API authenticatie"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:113
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:129
msgid "Deze authenticatie zal gebruikt worden naast de gebruikelijke authenticatie middels certificaten."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:120
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:136
msgid "Gebruik SSL certificaten"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:121
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:137
msgid "Schakel deze optie in om SSL certificaten te gebruiken voor de communicatie met de API van de leverancier."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:130
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:146
msgid "API sleutel"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:132
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:162
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:148
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:178
msgid "Vul alleen in als de API van de leverancier dit gebruikt."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:135
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:151
msgid "Sleutel"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:141
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:157
msgid "Header naam"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:146
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:162
msgid "Is vereist als header in HTTP verzoeken."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:160
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:176
msgid "API OAuth 2.0"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:165
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:181
msgid "Gebruikersnaam"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:171
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:243
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:187
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:259
msgid "Wachtwoord"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:189
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:205
msgid "Gebruikersmodel"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:192
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:208
msgid "Activeer gebruikersmodel"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:193
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:209
msgid "Het Gebruikersmodel (UserModel) bevat gegevens van de ingelogde burger die beschikbaar worden gesteld voor gebruik in templates en weergaven. Meer informatie is te vinden in de README van deze plugin."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:205
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:221
msgid "Berichtenverkeer logboek"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:209
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:225
msgid "Logging inschakelen"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:213
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:229
msgid "Schakel deze optie in om het loggen van foutmeldingen te activeren. Dit kan nuttig zijn voor het opsporen en oplossen van problemen binnen de plug-in."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:218
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:234
msgid "Certificaten"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:221
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:237
msgid "Certificaten hoofd locatie"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:229
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:245
msgid "Publieke locatie certificaten"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:236
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:252
msgid "Privé locatie certificaten"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:248
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:264
msgid "Dit veld mag leeg gelaten worden als er geen wachtwoord vereist is voor het maken van de verzoeken naar de \"Haalcentraal\" API."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:271
#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:287
msgid "Geen certificaat geselecteerd"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:12
msgid "OWC Prefill"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:17
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:19
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:23
msgid "Breid de resultaten uit met andere entiteiten. Kommagescheiden waardes in vullen. Bijvoorbeeld: 'ouders,partners,kinderen'"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:28
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:30
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:34
msgid "Selecteer een leverancier"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:28
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:17
msgid "Kies een leverancier. Let op dat je de inloggegevens ook moet configureren in de algemene instellingen van Gravity Forms."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:39
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:28
msgid "OpenZaak"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:44
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:33
msgid "EnableU"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:49
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:38
msgid "PinkRoccade"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:54
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:43
msgid "VrijBRP"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:59
#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:48
msgid "WeAreFrank!"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:55
msgid "Verwerking (V2)"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:56
msgid "Schrijf de globale instelling over op formulier niveau."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:62
msgid "Doelbinding"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:68
msgid "Uitbreiden (V1)"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:70
msgid "Breidt de resultaten uit met andere entiteiten. Kommagescheiden waardes in vullen. Bijvoorbeeld: 'ouders,partners,kinderen'. Alleen gebruiken wanneer de doelbinding niet verantwoordelijk is voor het ophalen van extra velden. (vaak alleen voor versie 1 van de HaalCentraal)"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:91
msgid "Selecteer een mappingbestand uit het thema"
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:92
msgid "Gebruik een eigen bestand vanuit bijv. een thema om formuliervelden te kunnen mappen."
msgstr ""

#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:125
msgid "Selecteer een bestand"
msgstr ""

#: src/PrefillGravityForms/Providers/GravityFormsServiceProvider.php:90
msgid "BRP Prefill velden"
msgstr ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
"label": ""
}
},
"goalBinding": {
"type": "string",
"default": ""
},
"selectedOption": {
"type": "object",
"default": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ const supplierOptions = [
label: 'PinkRoccade',
value: 'PinkRoccade',
},
{
label: 'PinkRoccadeV2',
value: 'PinkRoccadeV2',
},
{
label: 'VrijBRP',
value: 'VrijBRP',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import personalDataOptions from './config/personalDataOptions';
import supplierOptions from './config/supplierOptions';

export default function Edit( { attributes, setAttributes, clientId } ) {
const { selectedSupplier, selectedOption, htmlElement, isChildOfTable } =
const { selectedSupplier, goalBinding, selectedOption, htmlElement, isChildOfTable } =
attributes;

const { blockParents } = useSelect( ( select ) => ( {
Expand Down Expand Up @@ -78,6 +78,16 @@ export default function Edit( { attributes, setAttributes, clientId } ) {
/>
);

const goalBindingControl = (
<TextControl
label="Doelbinding"
value={ goalBinding }
onChange={ ( value ) => {
setAttributes( { goalBinding: value } );
} }
/>
);

const selectPersonalDataControl = (
<SelectControl
label="Automatisch invullen"
Expand Down Expand Up @@ -126,6 +136,7 @@ export default function Edit( { attributes, setAttributes, clientId } ) {
{ tab.name === 'settings' && (
<>
{ selectSupplierControl }
{ goalBindingControl }
{ selectPersonalDataControl }
{ ! isChildOfTable &&
selectHtmlElementControl }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

use OWC\PrefillGravityForms\Services\PersonalDataService;

$retrievedValue = (new PersonalDataService($attributes['selectedSupplier']['value'] ?? ''))->get($attributes['selectedOption']['value'] ?? '');
$retrievedValue = (new PersonalDataService($attributes['selectedSupplier']['value'] ?? ''))->get($attributes['selectedOption']['value'] ?? '', $attributes['goalBinding'] ?? '');

if ($attributes['isChildOfTable'] && ! empty($retrievedValue)) : ?>
<tr>
Expand Down
18 changes: 9 additions & 9 deletions src/PrefillGravityForms/Controllers/BaseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ protected function isBlockEditor(): bool
return method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor();
}

public function get(): array
public function get(string $doelBindig = ''): array
{
return static::makeRequest();
return static::makeRequest($doelBindig);
}

abstract protected function makeRequest(): array;
abstract protected function makeRequest(string $doelBindig = ''): array;

protected function preFillFields(array $form, array $response): array
{
Expand Down Expand Up @@ -321,18 +321,18 @@ protected function handleCurl(array $args, string $transientKey): array
throw new Exception(curl_error($curl));
}

$httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if (200 !== $httpStatus) {
throw new Exception('Request failed', is_int($httpStatus) ? $httpStatus : 500);
}

$response = json_decode($output, true);

if (! is_array($response) || [] === $response || json_last_error() !== JSON_ERROR_NONE) {
throw new Exception('Something went wrong with decoding of the JSON output.', 500);
}

$httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if (200 !== $httpStatus) {
throw new Exception(sprintf('%s', $decoded['detail'] ?? ($decoded['Error Details'] ?? 'Request failed, error unknown')), is_int($httpStatus) ? $httpStatus : 500);
}

$this->handleTransient($response, $transientKey);

return $response;
Expand Down
4 changes: 2 additions & 2 deletions src/PrefillGravityForms/Controllers/EnableUController.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ public function handle(array $form): array
return $this->preFillFields($form, $apiResponse);
}

protected function makeRequest(): array
protected function makeRequest(string $doelBinding = ''): array
{
$bsn = $this->getBSN();

if ('' === $bsn) {
return [];
}

return $this->fetchApiResponse($bsn);
return $this->fetchApiResponse($bsn, $doelBinding);
}

protected function fetchApiResponse(string $bsn, string $doelBinding = '', string $expand = ''): array
Expand Down
Loading