refactor: make ElasticSearch date meta sortable, minimum PHP 8.2 requirement - #4
Open
rivanuff wants to merge 2 commits into
Open
refactor: make ElasticSearch date meta sortable, minimum PHP 8.2 requirement#4rivanuff wants to merge 2 commits into
rivanuff wants to merge 2 commits into
Conversation
Composer package changes
|
rivanuff
requested review from
a team,
Rovasch,
ShunLuk,
SimonvanWijhe,
dtakken,
ictbeheer and
mvdhoek1
and
a lite review from Copilot
and removed request for
a team
August 27, 2026 11:34
rivanuff
marked this pull request as ready for review
August 27, 2026 11:36
There was a problem hiding this comment.
Pull request overview
Deze PR maakt de ontvangst- en oordeelsdatum weer sorteerbaar in ElasticSearch door vaste-format datumvelden toe te voegen (datepicker-opslag) en daaruit ISO-8601 “sortable” velden af te leiden, terwijl legacy free-text datumvelden gedepricate maar behouden blijven. Daarnaast wordt de codebase gemoderniseerd voor PHP 8.2 / WordPress 6.5 en wordt tooling (PHPUnit/PHPStan/CS) toegevoegd/aangescherpt voor CI en lokale development.
Changes:
- Introduceert
*_dateopslag (fixedd-m-Y) en ES*_sortable(ISOY-m-d) afleiding, zonder legacy free-text datumvelden nog te gebruiken als fallback. - Refactor van meta-key conventies (centrale
Metahelper) en modernisering van service providers / type hints (PHP 8.2). - Tooling & release housekeeping: PHPUnit + PHPStan configuratie, GitHub Actions workflows, dependency/requirements updates, changelog + plugin headers.
Reviewed changes
Copilot reviewed 40 out of 44 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Unit/GravityForms/AfterSubmitTest.php | Unit tests voor nieuwe GravityForms meta-opslag (fixed date format, year-derivation, deprecated fields niet meer schrijven). |
| tests/Unit/Foundation/MetaTest.php | Unit tests voor nieuwe Meta conventies (prefixing, date format contract, date->year mapping). |
| tests/Unit/ElasticSearch/HooksTest.php | Unit tests voor ES sync args: sortable date afleiding, legacy gedrag, validatie/unparseable cases. |
| tests/phpstan/bootstrap.php | PHPStan bootstrap voor runtime-constants die in WordPress bootstrap normaliter gezet worden. |
| tests/bootstrap.php | PHPUnit bootstrap incl. WP_Mock en test-constants. |
| src/OpenKlacht/Settings/SettingsServiceProvider.php | Refactor settings-registratie: CMB2 field registratie via Meta::addFields() en PHP 8.2 callables. |
| src/OpenKlacht/Settings/SettingsPageOptions.php | Modernisering: readonly ctor, types, static return; kleine docs/Stan hints. |
| src/OpenKlacht/RestAPI/RestAPIServiceProvider.php | REST veldregistratie op rest_api_init; meta keys via Meta::key(); gedeelde callback. |
| src/OpenKlacht/RestAPI/Hooks.php | Strictere types + WP_REST_Request typing in REST query uitbreiding. |
| src/OpenKlacht/PostType/PostTypeServiceProvider.php | Modernisering hooks registratie (first-class callables) + strict types. |
| src/OpenKlacht/PostType/MetaboxFields.php | Metabox veldregistratie gedelegeerd naar Meta::addFields() voor consistente id-prefixing/opties. |
| src/OpenKlacht/OpenKlachtServiceProvider.php | Modernisering provider boot loop (instantiatie) + strict types. |
| src/OpenKlacht/GravityForms/SubmissionHandler.php | Refactor mapping logic; typed ctor/make; extract fieldKey() en doc/Stan hints. |
| src/OpenKlacht/GravityForms/GravityFormsServiceProvider.php | Typed callback signature voor GravityForms hook + first-class callable registratie. |
| src/OpenKlacht/GravityForms/AfterSubmit.php | Nieuwe datum meta-opslag via Meta::DATE_FORMAT/DATE_FIELDS; deprecated velden niet meer schrijven; DateTimeImmutable parsing. |
| src/OpenKlacht/GravityForms/AbstractAfterSubmit.php | Readonly ctor + static factory return type; phpstan consistent constructor. |
| src/OpenKlacht/Foundation/ServiceProvider.php | Strict types + formatting/modernisering; init flow ongewijzigd inhoudelijk. |
| src/OpenKlacht/Foundation/Meta.php | Nieuw: centrale meta-key prefixing, gedeelde date-constanten en CMB2 field toevoeging. |
| src/OpenKlacht/Foundation/Config.php | Modernisering types + ctor promotion; scan/merge logic behouden maar hergestructureerd. |
| src/OpenKlacht/ElasticSearch/Hooks.php | ES sync args uitgebreid met sortable dates (ISO) afgeleid uit fixed-format datepicker velden. |
| src/OpenKlacht/ElasticSearch/ElasticSearchServiceProvider.php | Modernisering hook registratie (first-class callable). |
| src/OpenKlacht/Admin/AdminServiceProvider.php | Modernisering hooks + strictere param types (o.a. $sample bool). |
| publiccode.yaml | Correctere YAML structuur + bijgewerkte minimale versies (WP 6.5, PHP 8.2). |
| phpunit.xml.dist | Nieuwe PHPUnit configuratie incl. coverage include paths. |
| phpstan.neon | Nieuwe PHPStan configuratie (PHP 8.2 target, bootstrap, WP extensions/stubs). |
| openklacht.php | Major bump naar 2.0.0 + WP/PHP requirements + “Requires Plugins: cmb2” header. |
| languages/openklacht.pot | Regeneratie POT met nieuwe strings voor (verouderde) datumvelden en metadata updates. |
| config/settings_pages.php | Strict types + formatting; inhoudelijk settings unchanged. |
| config/metaboxes.php | Wijzigt date fields naar text_date met vaste opslag + behoud legacy text velden met “verouderd” beschrijving. |
| config/core.php | Strict types + formatting; providerslijst inhoudelijk gelijk. |
| composer.lock | Dependency herstructurering (runtime leeg; dev tooling uitgebreid; PHP platform 8.2). |
| composer.json | Minimum PHP 8.2; CMB2 naar require-dev; WP stubs + tooling toegevoegd; autoload-dev en scripts aangepast. |
| CHANGELOG.md | Nieuwe 2.0.0 release notes incl. breaking changes en ES/date rationale. |
| autoloader.php | Formatting/modernisering (geen functionele wijziging). |
| .php-cs-fixer.php | Migratie naar Yard ruleset + aangepaste Finder configuratie. |
| .idea/php.xml | IDE config updates (PHP 8.2 level, dependency include paths opgeschoond). |
| .idea/openklacht.iml | IDE module config: packagePrefix fix + exclude cleanup. |
| .gitignore | Negeert phpunit.xml en coverage logs. |
| .github/workflows/test-php.yml | Nieuwe CI workflow voor PHPUnit op PHP 8.2. |
| .github/workflows/format-php.yml | Nieuwe CI workflow voor php-cs-fixer via gedeelde workflow. |
| .github/workflows/dependabot-automerge.yml | Workflow voor Dependabot automerge via gedeelde workflow. |
| .github/dependabot.yml | Dependabot configuratie voor actions + composer (lockfile-only). |
| .github/CODEOWNERS | CODEOWNERS toegevoegd; composer.lock expliciet “unowned” om review requests te vermijden. |
| .gitattributes | LF normalisatie + export-ignore dev files + markering van generated files. |
Files not reviewed (2)
- .idea/openklacht.iml: Generated file
- .idea/php.xml: Generated file
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+72
to
+79
| /** | ||
| * @param array<string, mixed> $object REST response of the post being prepared. | ||
| * @param string $metaKey Name of the REST field being resolved. | ||
| */ | ||
| public function getFieldValue(array $object, string $metaKey): mixed | ||
| { | ||
| return get_post_meta($object['id'], $metaKey, true); | ||
| } |
Comment on lines
+147
to
+155
| // Get the path from the starting path. | ||
| $path = str_replace($this->path.'/', '', $path); | ||
|
|
||
| // Build an array from the path. | ||
| $items = []; | ||
| $items[$name] = $value; | ||
| foreach (array_reverse(explode('/', $path)) as $key) { | ||
| $items = [ $key => $items ]; | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uit ticket #10841 (geen link wegens publieke repo) kwam naar boven dat met de huidige implementatie de ontvangst en oordeel datum niet sorteerbaar zijn met ElasticSearch. Dit komt wegens de invoer van deze data d.m.v. een text veld gedaan worden.
Als oplossing worden deze oude velden gedeprecate (wel behouden), en nieuwe text_date velden aangeboden. Wanneer de nieuwe velden zijn ingevuld, kunnen de klachten wel gesorteerd worden.
Ik heb daarbij gelijk een refactor gedaan:
Plugins Requiredheader geforceerd.Dit wordt een major release