resolver = $resolver; } /** * @return void */ public function register() { add_action( 'admin_init', array( $this, 'maybe_dismiss' ) ); } /** * @return void */ public function maybe_dismiss() { if ( ! Capabilities::current_user_can_manage() ) { return; } if ( ! isset( $_GET['aksmb_dismiss'] ) || 'pro_upgrade_cta' !== sanitize_key( wp_unslash( $_GET['aksmb_dismiss'] ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended return; } if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'aksmb_dismiss_pro_upgrade_cta' ) ) { return; } update_user_meta( get_current_user_id(), self::USER_META_DISMISSED, '1' ); wp_safe_redirect( Tabs::url( Tabs::LICENSE ) ); exit; } /** * Resolved state, computed once per request. * * @return string */ private function state() { $resolver = $this->resolver ? $this->resolver : new UpgradeStateResolver(); return $resolver->resolve(); } /** * Render the state-appropriate upgrade panel. * * @return void */ public function render() { if ( ! Capabilities::current_user_can_manage() ) { return; } if ( $this->is_dismissed() ) { return; } $state = $this->state(); if ( UpgradeStateResolver::STATE_DIRECT === $state ) { return; } $is_active = UpgradeStateResolver::STATE_PRO_ACTIVE === $state; if ( $is_active ) { return; } $is_not_entitled = UpgradeStateResolver::STATE_PRO_ACTIVE_NOT_ENTITLED === $state; $is_installed = UpgradeStateResolver::STATE_PRO_INSTALLED_INACTIVE === $state; $marketplace_url = ProMarketplace::url(); $has_channel = '' !== $marketplace_url; ?>

'marginbeacon', 'tab' => Tabs::LICENSE, 'aksmb_dismiss' => 'pro_upgrade_cta', ), admin_url( 'admin.php' ) ), 'aksmb_dismiss_pro_upgrade_cta' ); } }