File Editor
Directories:
.. (Back)
admin-pages
core-api
debugger
markdown
Files:
class-jetpack-ai-helper.php
class-jetpack-currencies.php
class-jetpack-instagram-gallery-helper.php
class-jetpack-mapbox-helper.php
class-jetpack-podcast-feed-locator.php
class-jetpack-podcast-helper.php
class-jetpack-recommendations.php
class-jetpack-top-posts-helper.php
class.color.php
class.core-rest-api-endpoints.php
class.jetpack-automatic-install-skin.php
class.jetpack-iframe-embed.php
class.jetpack-keyring-service-helper.php
class.jetpack-password-checker.php
class.jetpack-search-performance-logger.php
class.media-extractor.php
class.media-summary.php
class.media.php
components.php
debugger.php
functions.wp-notify.php
icalendar-reader.php
markdown.php
plans.php
plugins.php
tonesque.php
widgets.php
Create New File
Create
Edit File: class-jetpack-mapbox-helper.php
<?php /** * Mapbox API helper. * * @package automattic/jetpack */ use Automattic\Jetpack\Status\Host; /** * Class Jetpack_Mapbox_Helper */ class Jetpack_Mapbox_Helper { /** * Site option key for the Mapbox service. * * @var string */ private static $site_option_key = 'mapbox_api_key'; /** * Transient key for the WordPress.com Mapbox access token. * * @var string */ private static $transient_key = 'wpcom_mapbox_access_token'; /** * Get the site's own Mapbox access token if set, or the WordPress.com's one otherwise. * * @return array An array containing the key (if any) and its source ("site" or "wpcom"). */ public static function get_access_token() { // If the site provides its own Mapbox access token, return it. $service_api_key = Jetpack_Options::get_option( self::$site_option_key ); if ( $service_api_key ) { return self::format_access_token( $service_api_key ); } $site_id = self::get_wpcom_site_id(); // If on WordPress.com, try to return the access token straight away. if ( self::is_wpcom() && defined( 'WPCOM_MAPBOX_ACCESS_TOKEN' ) ) { require_lib( 'mapbox-blocklist' ); return wpcom_is_site_blocked_from_map_block( $site_id ) ? self::format_access_token() : self::format_access_token( WPCOM_MAPBOX_ACCESS_TOKEN, 'wpcom' ); } // If not on WordPress.com or Atomic, return an empty access token. if ( ! $site_id || ( ! self::is_wpcom() && ! ( new Host() )->is_woa_site() ) ) { return self::format_access_token(); } // If there is a cached token, return it. $cached_token = get_transient( self::$transient_key ); if ( $cached_token ) { return self::format_access_token( $cached_token, 'wpcom' ); } // Otherwise get it from the WordPress.com endpoint. $request_url = 'https://public-api.wordpress.com/wpcom/v2/sites/' . $site_id . '/mapbox'; $response = wp_remote_get( esc_url_raw( $request_url ) ); if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { return self::format_access_token(); } $response_body = json_decode( wp_remote_retrieve_body( $response ) ); $wpcom_mapbox_access_token = $response_body->wpcom_mapbox_access_token; set_transient( self::$transient_key, $wpcom_mapbox_access_token, HOUR_IN_SECONDS ); return self::format_access_token( $wpcom_mapbox_access_token, 'wpcom' ); } /** * Check if we're in WordPress.com. * * @return bool */ private static function is_wpcom() { return defined( 'IS_WPCOM' ) && IS_WPCOM; } /** * Get the current site's WordPress.com ID. * * @return mixed The site's WordPress.com ID. */ private static function get_wpcom_site_id() { if ( self::is_wpcom() ) { return get_current_blog_id(); } elseif ( method_exists( 'Jetpack', 'is_connection_ready' ) && Jetpack::is_connection_ready() ) { return Jetpack_Options::get_option( 'id' ); } return false; } /** * Format an access token and its source into an array. * * @param string $key The API key. * @param string $source The key's source ("site" or "wpcom"). * @return array */ private static function format_access_token( $key = '', $source = 'site' ) { return array( 'key' => $key, 'source' => $source, ); } }
Save Changes
Rename File
Rename