fix: P8a blocks Theme Builder layouts without Divi's theme_builder role (L6)
et_header_layout, et_body_layout, et_footer_layout and et_template showing a
global entry now block a confirmed edit unless et_pb_is_allowed('theme_builder'),
like Divi's own check for TB layouts.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -123,7 +123,7 @@ final class LibraryFixtures
|
||||
Functions\when('_get_non_cached_ids')->returnArg(1);
|
||||
Functions\when('_prime_post_caches')->justReturn(null);
|
||||
Functions\when('wp_cache_delete')->justReturn(true);
|
||||
$usages = Mockery::mock(GlobalUsages::class, [null, $roles])->makePartial();
|
||||
$usages = Mockery::mock(GlobalUsages::class, [null, $roles ?? self::roles()])->makePartial();
|
||||
$usages->allows('rows')->andReturnUsing(static fn (): array => is_array($rows) ? $rows : $rows());
|
||||
|
||||
return $usages;
|
||||
|
||||
@@ -124,6 +124,26 @@ final class GlobalUsagesTest extends TestCase
|
||||
self::assertSame(GlobalUsages::CHECK_CAP, $asked['read_post']);
|
||||
}
|
||||
|
||||
/** Audit L6: Theme Builder layouts additionally need Divi's role option theme_builder. */
|
||||
public function testThemeBuilderLayoutsNeedTheThemeBuilderRole(): void
|
||||
{
|
||||
$rows = [
|
||||
['id' => 1053, 'status' => 'publish', 'type' => 'page'],
|
||||
['id' => 1061, 'status' => 'publish', 'type' => 'et_header_layout'],
|
||||
['id' => 1062, 'status' => 'publish', 'type' => 'et_body_layout'],
|
||||
['id' => 1063, 'status' => 'publish', 'type' => 'et_footer_layout'],
|
||||
['id' => 1064, 'status' => 'publish', 'type' => 'et_template'],
|
||||
];
|
||||
Functions\when('get_post')->justReturn(null);
|
||||
Functions\when('current_user_can')->justReturn(true);
|
||||
|
||||
$without = LibraryFixtures::usages($rows, LibraryFixtures::roles(['theme_builder']))->report(1058);
|
||||
$with = LibraryFixtures::usages($rows, LibraryFixtures::roles())->report(1058);
|
||||
|
||||
self::assertSame([1061, 1062, 1063, 1064], $without->blocked);
|
||||
self::assertSame([], $with->blocked);
|
||||
}
|
||||
|
||||
public function testAListingSkipsTheEditChecks(): void
|
||||
{
|
||||
$usages = LibraryFixtures::usages(LibraryFixtures::rows([1053]));
|
||||
|
||||
Reference in New Issue
Block a user