feat: builder layout and design system reach RawIR (Elementor tree, Divi, global styles, block templates) - #29
Merged
Merged
Conversation
…Divi switches, global settings, block templates, Elementor kit, Divi options - _elementor_data (decoded, secrets filtered at every depth), _elementor_page_settings/edit_mode/template_type/version and Divi _et_pb_* switches are understood without selection; a password-protected post carries none of them - options: stylesheet/template, wp_get_global_settings/styles, block templates and parts (block themes), the Elementor kit settings, et_divi, all through the secret filter - coverage reports those options as exported:design - tests/builder.php acceptance (npm run test:builder, in CI): planted secrets never leave, protected tree excluded, status/protection marker unchanged
- sensitive(): webhook|hook_url keys (Elementor Pro/Divi form actions) - clean(): Slack, Discord, Zapier and Make webhook URLs dropped by value, under any key - builder meta, the Elementor kit and global settings/styles clean to depth 64 (Elementor spends two levels per container step); everything else keeps 12 - tests/builder.php: planted webhooks (keyed and under an innocent key) never leave; a widget six containers deep keeps its settings
Policy::clean() gained a fifth parameter on both sides: $max_depth here (builder trees, BUILDER_DEPTH 64) and $field_names on main (#32, ACF names judged by secret_name()). Both kept: $field_names stays fifth as on main, $max_depth moves to sixth; the builder callers pass false for field names. sensitive() keeps the webhook/hook_url keys (QA-34).
Member
Author
|
main merged (4a6bd6a). The only conflict was Resolution:
CI is green (acceptance, large 64M/128M, PHP 7.4/8.3). For re-review: only the conflict resolution. |
Member
Author
|
t6 QA — Bridge #29 çakışma çözümü (4a6bd6a): ONAY
|
Merged
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.
Why
Migrate v3 builds the site from facts, and the builder layout was the missing fact:
_elementor_dataonly arrived when an admin selected it.Orchestrator approved this, with two conditions: keep status parity with wp-import
mapStatus, and protected content must not leak.What
_elementor_data(decoded JSON, so the secret filter reaches every widget setting),_elementor_page_settings,_elementor_edit_mode,_elementor_template_type,_elementor_version, and Divi's_et_pb_use_builder,_et_pb_page_layout,_et_pb_side_nav,_et_pb_post_hide_nav,_et_pb_show_title._et_pb_old_content(the pre-builder backup) stays out.password-protected.options(RawIRoptions, Bridge rung):stylesheetandtemplate;global_settingsandglobal_styles(theme.json merged with Site Editor changes);block_templates(templates and parts with raw block markup, block themes only);elementor_kit(the active kit's settings);et_divi. Every value goes throughPolicy::clean.exported:design.Conditions
status,passwordand visibility are not touched. wp-import already drops_elementor_*meta (CORE_META), so entries and statuses are unchanged. The test asserts that a protected post is stillpublish+[protected].Tests
New
tests/builder.php(npm run test:builder, a CI step aftertest:reader). It cleans up what it creates. Docker/PHP are not available on my machine, so this runs in CI.Note: posts that carry builder meta get a new inventory fingerprint once, because meta is part of it, so the next delta run lists them as modified.
Reviewer: t6. Consumer: migrate
@migrate/facts(#90) readsmeta._elementor_dataandoptions.