| @@ -114,9 +114,19 @@ | ||
| 114 | 114 | * page caching off, and a host that turns it on unprompted is making a |
| 115 | 115 | * decision about shared WordPress state on the user's behalf. |
| 116 | 116 | */ |
| 117 | 117 | public static function enable_page_cache(): ?string { |
| 118 | - $state = Cache::toggle( true ); | |
| 118 | + /* | |
| 119 | + * Not consented, deliberately. A host plugin calling this is acting | |
| 120 | + * on its OWN user's click in its own onboarding — nobody has been | |
| 121 | + * shown whose advanced-cache.php is about to be replaced, which is | |
| 122 | + * the disclosure that makes a takeover legitimate in the dashboard. | |
| 123 | + * | |
| 124 | + * So a competitor's drop-in comes back as a reason the host can | |
| 125 | + * render, exactly as it did before, and the takeover stays something | |
| 126 | + * the site owner does knowingly in xSpeed's own UI. | |
| 127 | + */ | |
| 128 | + $state = Cache::toggle( true, false ); | |
| 119 | 129 | |
| 120 | 130 | if ( ! empty( $state['blocked'] ) ) { |
| 121 | 131 | return is_string( $state['blocked_reason'] ) && '' !== $state['blocked_reason'] |
| 122 | 132 | ? $state['blocked_reason'] |