0, 'paidSubscribers' => 0, 'allSubscribers' => 0, 'subscriberTotalsByDate' => array(), 'isStatsModuleActive' => false, 'showHeader' => false, 'showChart' => false, 'isWidgetVisible' => false, 'newsletterSettingsUrl' => \Automattic\Jetpack\Newsletter\Urls::get_newsletter_settings_url(), ); if ( Jetpack::is_connection_ready() ) { $site_id = Jetpack_Options::get_option( 'id' ); $api_path = sprintf( '/sites/%d/subscribers/stats', $site_id ); $response = Client::wpcom_json_api_request_as_blog( $api_path, '2', array(), null, 'wpcom' ); if ( 200 === wp_remote_retrieve_response_code( $response ) ) { $subscriber_counts = json_decode( wp_remote_retrieve_body( $response ), true ); if ( isset( $subscriber_counts['counts']['email_subscribers'] ) ) { $config_data['emailSubscribers'] = (int) $subscriber_counts['counts']['email_subscribers']; } if ( isset( $subscriber_counts['counts']['paid_subscribers'] ) ) { $config_data['paidSubscribers'] = (int) $subscriber_counts['counts']['paid_subscribers']; } if ( isset( $subscriber_counts['counts']['all_subscribers'] ) ) { $config_data['allSubscribers'] = (int) $subscriber_counts['counts']['all_subscribers']; } if ( isset( $subscriber_counts['aggregate'] ) ) { $config_data['subscriberTotalsByDate'] = $subscriber_counts['aggregate']; } } $config_data['isStatsModuleActive'] = ( new Modules() )->is_active( 'stats' ); $config_data['showHeader'] = $config_data['isStatsModuleActive'] && ( $config_data['allSubscribers'] > 0 || $config_data['paidSubscribers'] > 0 ); foreach ( $config_data['subscriberTotalsByDate'] as $day ) { if ( $day && ( $day['all'] >= 5 || $day['paid'] > 0 ) ) { $config_data['showChart'] = true; break; } } $config_data['isWidgetVisible'] = $config_data['showHeader'] || $config_data['showChart']; } return $config_data; } /** * Sets up the Jetpack Newsletter widget in the WordPress admin dashboard. */ public static function wp_dashboard_setup() { // Do not show the widget to non-admins. if ( ! current_user_can( 'manage_options' ) ) { return; } if ( Jetpack::is_connection_ready() ) { $config_data = static::get_config_data(); if ( ! $config_data['isWidgetVisible'] ) { return; } static::load_admin_scripts( 'jp-newsletter-widget', 'newsletter-widget', array( 'config_variable_name' => 'jetpackNewsletterWidgetConfigData', 'config_data' => $config_data, 'load_minified_js' => false, ) ); wp_add_dashboard_widget( self::$widget_id, /** "Newsletter" is a product name, do not translate. */ 'Jetpack Newsletter', array( static::class, 'render' ), // @phan-suppress-next-line PhanTypeMismatchArgumentProbablyReal -- Core should ideally document null for no-callback arg. https://core.trac.wordpress.org/ticket/52539. null, array(), 'side', 'high' ); } } /** * Render the Jetpack Newsletter widget. * * @return void */ public static function render() { ?>