Automattic\WooCommerce\Internal\PushNotifications\Controllers

PushTokenRestController::indexpublicWC 10.8.0

Returns all push tokens for roles that can receive push notifications, formatted for the WPCOM push notifications endpoint.

Method of the class: PushTokenRestController{}

No Hooks.

Returns

WP_REST_Response|WP_Error.

Usage

$PushTokenRestController = new PushTokenRestController();
$PushTokenRestController->index( $request );
$request(WP_REST_Request) (required)
The request object.

Changelog

Since 10.8.0 Introduced.

PushTokenRestController::index() code WC 11.0.1

public function index( WP_REST_Request $request ) {
	$page     = (int) $request->get_param( 'page' );
	$per_page = (int) $request->get_param( 'per_page' );

	try {
		/**
		 * Paginated result from get_tokens_for_roles.
		 *
		 * @var array{tokens: PushToken[], total: int, total_pages: int} $result
		 */
		$result = wc_get_container()
			->get( PushTokensDataStore::class )
			->get_tokens_for_roles(
				PushNotifications::ROLES_WITH_PUSH_NOTIFICATIONS_ENABLED,
				$page,
				$per_page
			);
	} catch ( Exception $e ) {
		return $this->convert_exception_to_wp_error( $e );
	}

	$response = new WP_REST_Response(
		array(
			'tokens' => array_map(
				fn ( $token ) => $token->to_wpcom_format(),
				$result['tokens']
			),
		),
		WP_Http::OK
	);

	$response->header( 'X-WP-Total', (string) $result['total'] );
	$response->header( 'X-WP-TotalPages', (string) $result['total_pages'] );

	return $response;
}