From 4d95baf2292a50578ff0f56c11c4253e161a08cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20de=20la=20Pen=CC=83a?= Date: Wed, 21 Oct 2026 16:56:01 +0100 Subject: [PATCH 1/3] feat: hide sensitive columns from find and replace --- .phpstan/config.neon | 2 + .phpstan/constants.php | 15 ++++++ src/FindReplace/Exclusion/Package.php | 38 +++++++++++++++ tests/FindReplace/Exclusion/PackageTest.php | 52 +++++++++++++++++++++ tests/bootstrap.php | 12 +++++ 5 files changed, 119 insertions(+) create mode 100644 .phpstan/constants.php create mode 100644 src/FindReplace/Exclusion/Package.php create mode 100644 tests/FindReplace/Exclusion/PackageTest.php diff --git a/.phpstan/config.neon b/.phpstan/config.neon index e3cfdba9..d5835435 100644 --- a/.phpstan/config.neon +++ b/.phpstan/config.neon @@ -1,4 +1,6 @@ parameters: + bootstrapFiles: + - constants.php level: 0 paths: - ../helpers diff --git a/.phpstan/constants.php b/.phpstan/constants.php new file mode 100644 index 00000000..d0d94090 --- /dev/null +++ b/.phpstan/constants.php @@ -0,0 +1,15 @@ +hidden() + ); + } + + public function testReadOnly(): void + { + self::assertSame( + [ + NAILS_DB_PREFIX . 'cms_page.draft_slug', + NAILS_DB_PREFIX . 'cms_page.draft_slug_end', + NAILS_DB_PREFIX . 'cms_page.published_slug', + NAILS_DB_PREFIX . 'cms_page.published_slug_end', + NAILS_DB_PREFIX . 'cms_page.draft_template', + NAILS_DB_PREFIX . 'cms_page.published_template', + NAILS_DB_PREFIX . 'cms_page_preview.draft_slug', + NAILS_DB_PREFIX . 'cms_page_preview.draft_slug_end', + NAILS_DB_PREFIX . 'cms_page_preview.published_slug', + NAILS_DB_PREFIX . 'cms_page_preview.published_slug_end', + NAILS_DB_PREFIX . 'cms_page_preview.draft_template', + NAILS_DB_PREFIX . 'cms_page_preview.published_template', + NAILS_DB_PREFIX . 'cms_menu_item.url', + ], + (new Package())->readOnly() + ); + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 93ac78fe..67eac2b9 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -5,3 +5,15 @@ require 'vendor/autoload.php'; Testing::bootstrapModule(__FILE__); + +if (!interface_exists(\Nails\FindReplace\Interfaces\Exclusion::class, false)) { + foreach ([ + dirname(__DIR__) . '/vendor/nails/common/src/FindReplace/Interfaces/Exclusion.php', + dirname(__DIR__, 2) . '/common/src/FindReplace/Interfaces/Exclusion.php', + ] as $nailsFindReplaceExclusion) { + if (is_file($nailsFindReplaceExclusion)) { + require_once $nailsFindReplaceExclusion; + break; + } + } +} From b771620acb19718ff44f49bf5dc6fd2cdbafead5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20de=20la=20Pen=CC=83a?= Date: Wed, 21 Oct 2026 17:04:35 +0100 Subject: [PATCH 2/3] fix: require find-replace so exclusion tests can autoload --- composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/composer.json b/composer.json index 4f7a2496..ca4bd587 100644 --- a/composer.json +++ b/composer.json @@ -34,6 +34,7 @@ "nails/module-redirect": "dev-develop" }, "require-dev": { + "nails/module-find-replace": "dev-develop", "phpunit/phpunit": "^12.0", "phpstan/phpstan": "^2.0" }, From 7629453494280e2bdcfd8a9fc529a0c4e0915e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20de=20la=20Pen=CC=83a?= Date: Wed, 21 Oct 2026 17:19:14 +0100 Subject: [PATCH 3/3] fix: drop the find-replace exclusion interface stub --- .phpstan/constants.php | 12 ------------ tests/bootstrap.php | 12 ------------ 2 files changed, 24 deletions(-) diff --git a/.phpstan/constants.php b/.phpstan/constants.php index d0d94090..e90363f6 100644 --- a/.phpstan/constants.php +++ b/.phpstan/constants.php @@ -1,15 +1,3 @@