plugin_meta = $plugin_meta; $this->dismiss_key = sprintf( '_%s-upgrade-notice-dismiss', $this->plugin_meta->get_short_slug() ); $this->dismiss_nonce_action = 'avf-upgrade-notice'; } public static function has_route_hooks( Route_Detector $route_detector ): bool { return $route_detector->is_admin_route(); } public function set_route_hooks( Route_Detector $route_detector ): void { $upgrade_notice = $this->get_upgrade_notice(); if ( strlen( $upgrade_notice ) > 0 ) { self::add_action( 'admin_notices', function (): void { if ( ! $this->hide_notice() ) { $this->print_notice(); } } ); } } /** * @param Version_Migration[] $version_migrations */ public function setup_upgrade_notice( array $version_migrations ): void { Plugin::on_translations_ready( function () use ( $version_migrations ): void { $upgrade_notices = array(); foreach ( $version_migrations as $version_migration ) { $version_upgrade_notice = $version_migration->get_upgrade_notice_text(); if ( is_string( $version_upgrade_notice ) ) { $upgrade_notices[] = sprintf( '%s (v. %s)', $version_upgrade_notice, $version_migration->introduced_version() ); } } if ( count( $upgrade_notices ) > 0 ) { $upgrade_notice = implode( "\n", $upgrade_notices ); Options_Storage::set_transient( Options_Storage::TRANSIENT_UPGRADE_NOTICE, $upgrade_notice, WEEK_IN_SECONDS ); } } ); } public function print_notice(): void { $upgrade_notice = $this->get_upgrade_notice(); echo '
';
echo esc_html__( 'Advanced Views plugin has been successfully upgraded!', 'acf-views' );
echo '
';
// @phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo str_replace( "\n", '
', esc_html( $upgrade_notice ) );
if ( Avf_User::can_manage() ) {
$dismiss_url = add_query_arg(
array(
$this->dismiss_key => 1,
'_wpnonce' => wp_create_nonce( $this->dismiss_nonce_action ),
),
Plugin::get_current_admin_url()
);
printf(
'%s',
esc_url( $dismiss_url ),
esc_html( __( 'Thanks, hide', 'acf-views' ) )
);
}
echo '