| @@ -148,9 +148,9 @@ | ||
| 148 | 148 | |
| 149 | 149 | update_user_meta( |
| 150 | 150 | get_current_user_id(), |
| 151 | 151 | self::DISMISS_META_KEY, |
| 152 | - $this->get_scan_version() | |
| 152 | + $this->get_dismiss_version() | |
| 153 | 153 | ); |
| 154 | 154 | |
| 155 | 155 | wp_safe_redirect( |
| 156 | 156 | remove_query_arg( |
| @@ -388,8 +388,12 @@ | ||
| 388 | 388 | private function get_scan_version(): string { |
| 389 | 389 | return jet_form_builder()->get_version() . ':' . self::SCAN_SCHEMA_VERSION; |
| 390 | 390 | } |
| 391 | 391 | |
| 392 | + private function get_dismiss_version(): string { | |
| 393 | + return 'schema:' . self::SCAN_SCHEMA_VERSION; | |
| 394 | + } | |
| 395 | + | |
| 392 | 396 | private function is_notice_dismissed( array $notice ): bool { |
| 393 | 397 | $dismissed = (string) get_user_meta( get_current_user_id(), self::DISMISS_META_KEY, true ); |
| 394 | 398 | |
| 395 | 399 | if ( '' === $dismissed ) { |
| @@ -395,13 +399,20 @@ | ||
| 395 | 399 | if ( '' === $dismissed ) { |
| 396 | 400 | return false; |
| 397 | 401 | } |
| 398 | 402 | |
| 399 | - if ( $dismissed === $this->get_scan_version() ) { | |
| 403 | + if ( | |
| 404 | + $dismissed === $this->get_dismiss_version() || | |
| 405 | + $dismissed === $this->get_notice_dismiss_token( $notice ) | |
| 406 | + ) { | |
| 400 | 407 | return true; |
| 401 | 408 | } |
| 402 | 409 | |
| 403 | - return $dismissed === $this->get_notice_dismiss_token( $notice ); | |
| 410 | + // Older builds stored "<plugin-version>:<schema>" in user meta. | |
| 411 | + $legacy_suffix = ':' . self::SCAN_SCHEMA_VERSION; | |
| 412 | + | |
| 413 | + return strlen( $dismissed ) > strlen( $legacy_suffix ) | |
| 414 | + && substr( $dismissed, -strlen( $legacy_suffix ) ) === $legacy_suffix; | |
| 404 | 415 | } |
| 405 | 416 | |
| 406 | 417 | private function get_notice_dismiss_token( array $notice ): string { |
| 407 | 418 | return (string) ( $notice['notice_token'] ?? $notice['version'] ?? '' ); |