internalOptions->internal->v3SettingsMigrated = true; return; } $options = aioseo404To301()->options; if ( isset( $legacy['redirect_type'] ) ) { $options->redirects->statusCode = Sanitizer::enum( (string) $legacy['redirect_type'], [ '301', '302', '303', '307', '308', '410', '451' ], '301' ); } if ( isset( $legacy['redirect_to'] ) ) { // The v3 vocabulary was page, link, or zero meaning don't redirect at all. switch ( (string) $legacy['redirect_to'] ) { case 'page': $target = 'page'; break; case '0': $target = 'none'; break; default: $target = 'link'; } $options->redirects->target = $target; $options->redirects->enabled = 'none' !== $target; } if ( isset( $legacy['redirect_link'] ) ) { $options->redirects->link = Sanitizer::url( (string) $legacy['redirect_link'] ); } if ( isset( $legacy['redirect_page'] ) ) { $options->redirects->pageId = Sanitizer::integer( $legacy['redirect_page'], 0 ); } if ( isset( $legacy['redirect_log'] ) ) { $options->logs->enabled = Sanitizer::boolean( $legacy['redirect_log'] ); } if ( isset( $legacy['email_notify'] ) ) { $options->notifications->email->enabled = Sanitizer::boolean( $legacy['email_notify'] ); } if ( isset( $legacy['email_notify_address'] ) ) { $options->notifications->email->recipients = Sanitizer::emailList( (string) $legacy['email_notify_address'] ); } if ( isset( $legacy['disable_guessing'] ) ) { // v3 stored a single boolean. Its "on" bypassed canonical guessing entirely, which is what // `strict` does here — `light` would quietly weaken the setting the user chose. $options->general->disableGuessing = Sanitizer::boolean( $legacy['disable_guessing'] ) ? 'strict' : 'off'; } if ( isset( $legacy['exclude_paths'] ) ) { $options->general->excludePaths = Sanitizer::stringList( $legacy['exclude_paths'] ); } aioseo404To301()->internalOptions->internal->v3SettingsMigrated = true; } /** * {@inheritDoc} * * @since 4.0.4 * * @return bool */ public function verify() { return (bool) aioseo404To301()->internalOptions->internal->v3SettingsMigrated; } }