| @@ -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_notice_dismiss_token( get_option( self::NOTICE_OPTION, array() ) ) | |
| 152 | + $this->get_dismiss_version() | |
| 153 | 153 | ); |
| 154 | 154 | |
| 155 | 155 | wp_safe_redirect( |
| 156 | 156 | remove_query_arg( |
| @@ -181,9 +181,9 @@ | ||
| 181 | 181 | if ( $this->get_scan_version() !== $notice['version'] ) { |
| 182 | 182 | return; |
| 183 | 183 | } |
| 184 | 184 | |
| 185 | - if ( get_user_meta( get_current_user_id(), self::DISMISS_META_KEY, true ) === $this->get_notice_dismiss_token( $notice ) ) { | |
| 185 | + if ( $this->is_notice_dismissed( $notice ) ) { | |
| 186 | 186 | return; |
| 187 | 187 | } |
| 188 | 188 | |
| 189 | 189 | $forms = array_slice( $notice['forms'], 0, 5 ); |
| @@ -386,8 +386,33 @@ | ||
| 386 | 386 | } |
| 387 | 387 | |
| 388 | 388 | private function get_scan_version(): string { |
| 389 | 389 | return jet_form_builder()->get_version() . ':' . self::SCAN_SCHEMA_VERSION; |
| 390 | + } | |
| 391 | + | |
| 392 | + private function get_dismiss_version(): string { | |
| 393 | + return 'schema:' . self::SCAN_SCHEMA_VERSION; | |
| 394 | + } | |
| 395 | + | |
| 396 | + private function is_notice_dismissed( array $notice ): bool { | |
| 397 | + $dismissed = (string) get_user_meta( get_current_user_id(), self::DISMISS_META_KEY, true ); | |
| 398 | + | |
| 399 | + if ( '' === $dismissed ) { | |
| 400 | + return false; | |
| 401 | + } | |
| 402 | + | |
| 403 | + if ( | |
| 404 | + $dismissed === $this->get_dismiss_version() || | |
| 405 | + $dismissed === $this->get_notice_dismiss_token( $notice ) | |
| 406 | + ) { | |
| 407 | + return true; | |
| 408 | + } | |
| 409 | + | |
| 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; | |
| 390 | 415 | } |
| 391 | 416 | |
| 392 | 417 | private function get_notice_dismiss_token( array $notice ): string { |
| 393 | 418 | return (string) ( $notice['notice_token'] ?? $notice['version'] ?? '' ); |