WC_Helper::_helper_subscription_activate()private staticWC 1.0

Active a product subscription.

Method of the class: WC_Helper{}

Return

null. Ничего (null).

Usage

$result = WC_Helper::_helper_subscription_activate();

WC_Helper::_helper_subscription_activate() code WC 8.0.2

private static function _helper_subscription_activate() {
	$product_key = isset( $_GET['wc-helper-product-key'] ) ? wc_clean( wp_unslash( $_GET['wc-helper-product-key'] ) ) : '';
	$product_id  = isset( $_GET['wc-helper-product-id'] ) ? absint( $_GET['wc-helper-product-id'] ) : 0;

	if ( empty( $_GET['wc-helper-nonce'] ) || ! wp_verify_nonce( wp_unslash( $_GET['wc-helper-nonce'] ), 'activate:' . $product_key ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
		self::log( 'Could not verify nonce in _helper_subscription_activate' );
		wp_die( 'Could not verify nonce' );
	}

	// Activate subscription.
	$activation_response = WC_Helper_API::post(
		'activate',
		array(
			'authenticated' => true,
			'body'          => wp_json_encode(
				array(
					'product_key' => $product_key,
				)
			),
		)
	);

	$activated = wp_remote_retrieve_response_code( $activation_response ) === 200;
	$body      = json_decode( wp_remote_retrieve_body( $activation_response ), true );

	if ( ! $activated && ! empty( $body['code'] ) && 'already_connected' === $body['code'] ) {
		$activated = true;
	}

	if ( $activated ) {
		/**
		 * Fires when the Helper activates a product successfully.
		 *
		 * @param int    $product_id Product ID being activated.
		 * @param string $product_key Subscription product key.
		 * @param array  $activation_response The response object from wp_safe_remote_request().
		 */
		do_action( 'woocommerce_helper_subscription_activate_success', $product_id, $product_key, $activation_response );
	} else {
		/**
		 * Fires when the Helper fails to activate a product.
		 *
		 * @param int    $product_id Product ID being activated.
		 * @param string $product_key Subscription product key.
		 * @param array  $activation_response The response object from wp_safe_remote_request().
		 */
		do_action( 'woocommerce_helper_subscription_activate_error', $product_id, $product_key, $activation_response );
	}

	// Attempt to activate this plugin.
	$local = self::_get_local_from_product_id( $product_id );
	if ( $local && 'plugin' == $local['_type'] && current_user_can( 'activate_plugins' ) && ! is_plugin_active( $local['_filename'] ) ) {
		activate_plugin( $local['_filename'] );
	}

	self::_flush_subscriptions_cache();
	self::_flush_updates_cache();

	$redirect_uri = add_query_arg(
		array(
			'page'                 => 'wc-addons',
			'section'              => 'helper',
			'filter'               => self::get_current_filter(),
			'wc-helper-status'     => $activated ? 'activate-success' : 'activate-error',
			'wc-helper-product-id' => $product_id,
		),
		admin_url( 'admin.php' )
	);

	wp_safe_redirect( $redirect_uri );
	die();
}