diff options
Diffstat (limited to 'plugins/jetpack/_inc/lib/admin-pages/class-jetpack-about-page.php')
-rw-r--r-- | plugins/jetpack/_inc/lib/admin-pages/class-jetpack-about-page.php | 216 |
1 files changed, 67 insertions, 149 deletions
diff --git a/plugins/jetpack/_inc/lib/admin-pages/class-jetpack-about-page.php b/plugins/jetpack/_inc/lib/admin-pages/class-jetpack-about-page.php index b9987a0f..5f519ff2 100644 --- a/plugins/jetpack/_inc/lib/admin-pages/class-jetpack-about-page.php +++ b/plugins/jetpack/_inc/lib/admin-pages/class-jetpack-about-page.php @@ -27,6 +27,13 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { protected $dont_show_if_not_active = true; /** + * Anonymous info about a12s. The method fetch_a8c_data() stores the response from wpcom here. + * + * @var array + */ + private $a8c_data = null; + + /** * Add a submenu item to the Jetpack admin menu. * * @return string @@ -34,9 +41,9 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { public function get_page_hook() { // Add the main admin Jetpack menu. return add_submenu_page( - 'jetpack', - esc_html__( 'About Jetpack', 'jetpack' ), + null, esc_html__( 'About Jetpack', 'jetpack' ), + '', 'jetpack_admin_page', 'jetpack_about', array( $this, 'render' ) @@ -49,9 +56,7 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { * @param string $hook Hook of current page, unused. */ public function add_page_actions( $hook ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // Place the Jetpack menu item on top and others in the order they appear. - add_filter( 'custom_menu_order', '__return_true' ); - add_filter( 'menu_order', array( $this, 'submenu_order' ) ); + $this->a8c_data = $this->fetch_a8c_data(); } /** @@ -82,37 +87,6 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { } /** - * Change order of menu item so the About page menu item is below Site Stats. - * - * @param array $menu_order List of menu slugs. It's unaffected. This filter is used to reorder the Jetpack submenu items. - * - * @return array - */ - public function submenu_order( $menu_order ) { - global $submenu; - - $stats_key = null; - $about_key = null; - - foreach ( $submenu['jetpack'] as $index => $menu_item ) { - if ( false !== array_search( 'stats', $menu_item, true ) ) { - $stats_key = $index; - } - if ( false !== array_search( 'jetpack_about', $menu_item, true ) ) { - $about_key = $index; - } - } - - if ( $stats_key && $about_key ) { - $temp = $submenu['jetpack'][ $stats_key ]; - $submenu['jetpack'][ $stats_key ] = $submenu['jetpack'][ $about_key ]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $submenu['jetpack'][ $about_key ] = $temp; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - } - - return $menu_order; - } - - /** * Render the page content */ public function page_render() { @@ -171,7 +145,17 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { </a> </p> <p> - <?php esc_html_e( 'We’re a distributed company with over 875 Automatticians in more than 67 countries speaking at least 83 different languages. Our common goal is to democratize publishing so that anyone with a story can tell it, regardless of income, gender, politics, language, or where they live in the world.', 'jetpack' ); ?> + <?php + echo esc_html( + sprintf( + /* translators: first placeholder is the number of Automattic employees. The second is the number of countries of origin*/ + __( 'We’re a distributed company with over %1$s Automatticians in more than %2$s countries speaking at least %3$s different languages. Our common goal is to democratize publishing so that anyone with a story can tell it, regardless of income, gender, politics, language, or where they live in the world.', 'jetpack' ), + $this->a8c_data['a12s'], + $this->a8c_data['countries'], + $this->a8c_data['languages'] + ) + ); + ?> </p> <p> <?php esc_html_e( 'We believe in Open Source and the vast majority of our work is available under the GPL.', 'jetpack' ); ?> @@ -253,12 +237,7 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { ); // slugs for plugins we want to display. - $a8c_plugins = array( - 'woocommerce', - 'wp-super-cache', - 'wp-job-manager', - 'co-authors-plus', - ); + $a8c_plugins = $this->a8c_data['featured_plugins']; // need this to access the plugins_api() function. include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; @@ -433,9 +412,9 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { /* translators: 1: "Update WordPress" screen URL, 2: "Update PHP" page URL */ ' ' . wp_kses( __( '<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.', 'jetpack' ), array( 'a' => array( 'href' => true ) ) ), esc_url( self_admin_url( 'update-core.php' ) ), - esc_url( $this->jp_get_update_php_url() ) + esc_url( wp_get_update_php_url() ) ); - $this->jp_update_php_annotation(); + wp_update_php_annotation(); } elseif ( current_user_can( 'update_core' ) ) { printf( /* translators: %s: "Update WordPress" screen URL */ @@ -446,9 +425,9 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { printf( /* translators: %s: "Update PHP" page URL */ ' ' . wp_kses( __( '<a href="%s">Learn more about updating PHP</a>.', 'jetpack' ), array( 'a' => array( 'href' => true ) ) ), - esc_url( $this->jp_get_update_php_url() ) + esc_url( wp_get_update_php_url() ) ); - $this->jp_update_php_annotation(); + wp_update_php_annotation(); } } elseif ( ! $compatible_wp ) { esc_html_e( 'This plugin doesn’t work with your version of WordPress.', 'jetpack' ); @@ -465,9 +444,9 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { printf( /* translators: %s: "Update PHP" page URL */ ' ' . wp_kses( __( '<a href="%s">Learn more about updating PHP</a>.', 'jetpack' ), array( 'a' => array( 'href' => true ) ) ), - esc_url( $this->jp_get_update_php_url() ) + esc_url( wp_get_update_php_url() ) ); - $this->jp_update_php_annotation(); + wp_update_php_annotation(); } } echo '</p></div>'; @@ -479,7 +458,7 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { <h3> <a href="<?php echo esc_url( $details_link ); ?>" class="jptracks thickbox open-plugin-details-modal" data-jptracks-name="jetpack_about_plugin_modal" data-jptracks-prop="<?php echo esc_attr( $plugin['slug'] ); ?>"> <?php echo esc_html( $title ); ?> - <img src="<?php echo esc_attr( $plugin_icon_url ); ?>" class="plugin-icon" alt=""> + <img src="<?php echo esc_url( $plugin_icon_url ); ?>" class="plugin-icon" alt="<?php esc_attr_e( 'Plugin icon', 'jetpack' ); ?>" aria-hidden="true"> </a> </h3> </div> @@ -542,7 +521,43 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { } /** - * Fetch Gravatar hashes for public A12s from wpcom and display them as a list. + * Fetch anonymous data about A12s from wpcom: total count, number of countries, languages spoken. + * + * @since 7.4 + * + * @return array $data + */ + private function fetch_a8c_data() { + $data = get_transient( 'jetpack_a8c_data' ); + if ( false === $data ) { + $data = json_decode( + wp_remote_retrieve_body( + wp_remote_get( 'https://public-api.wordpress.com/wpcom/v2/jetpack-about' ) + ), + true + ); + if ( ! empty( $data ) && is_array( $data ) ) { + set_transient( 'jetpack_a8c_data', $data, DAY_IN_SECONDS ); + } else { + // Fallback if everything fails. + $data = array( + 'a12s' => 888, + 'countries' => 69, + 'languages' => 83, + 'featured_plugins' => array( + 'woocommerce', + 'wp-super-cache', + 'wp-job-manager', + 'co-authors-plus', + ), + ); + } + } + return $data; + } + + /** + * Compile and display a list of avatars for A12s that gave their permission. * * @since 7.3 */ @@ -556,7 +571,7 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { 'https://1.gravatar.com/avatar/c510e69d83c7d10be4df64feeff4e46a', 'https://0.gravatar.com/avatar/88ec0dcadea38adf5f30a17e54e9b248', 'https://1.gravatar.com/avatar/bc45834430c5b0936d76e3f468f9ca57', - 'https://0.gravatar.com/avatar/032677e4115f3a38dc7785529e8cc4d9', + 'https://0.gravatar.com/avatar/0619d4de8aef78c81b2194ff1d164d85', 'https://0.gravatar.com/avatar/72a638c2520ea177976e8eafb201a82f', 'https://0.gravatar.com/avatar/b3618d70c63bbc5cc7caee0beded5ff0', 'https://1.gravatar.com/avatar/4d346581a3340e32cf93703c9ce46bd4', @@ -579,101 +594,4 @@ class Jetpack_About_Page extends Jetpack_Admin_Page { ) ); } - - // The following methods jp_get_update_php_url, jp_get_default_update_php_url, and jp_update_php_annotation, - // are copies of functions introduced in WP 5.1 - // At the time of releasing this, we're still supporting WP 5.0, so we needed - // to have them here to avoid fatal errors in old installations. - - /** - * Gets the URL to learn more about updating the PHP version the site is running on. - * - * This URL can be overridden by specifying an environment variable `WP_UPDATE_PHP_URL` or by using the - * {@see 'wp_update_php_url'} filter. Providing an empty string is not allowed and will result in the - * default URL being used. Furthermore the page the URL links to should preferably be localized in the - * site language. - * - * @todo: Remove when 5.1 is minimum WP version. - * @since 5.1.0 - * - * @return string URL to learn more about updating PHP. - */ - private function jp_get_update_php_url() { - $default_url = $this->jp_get_default_update_php_url(); - - $update_url = $default_url; - if ( false !== getenv( 'WP_UPDATE_PHP_URL' ) ) { - $update_url = getenv( 'WP_UPDATE_PHP_URL' ); - } - - /** - * Filters the URL to learn more about updating the PHP version the site is running on. - * - * Providing an empty string is not allowed and will result in the default URL being used. Furthermore - * the page the URL links to should preferably be localized in the site language. - * - * @since 5.1.0 - * - * @param string $update_url URL to learn more about updating PHP. - */ - $update_url = apply_filters( 'wp_update_php_url', $update_url ); - - if ( empty( $update_url ) ) { - $update_url = $default_url; - } - - return $update_url; - } - - /** - * Gets the default URL to learn more about updating the PHP version the site is running on. - * - * Do not use this function to retrieve this URL. Instead, use {@see wp_get_update_php_url()} when relying on the URL. - * This function does not allow modifying the returned URL, and is only used to compare the actually used URL with the - * default one. - * - * @todo: Remove when 5.1 is minimum WP version. - * @since 5.1.0 - * @access private - * - * @return string Default URL to learn more about updating PHP. - */ - private function jp_get_default_update_php_url() { - return _x( 'https://wordpress.org/support/update-php/', 'localized PHP upgrade information page', 'jetpack' ); - } - - /** - * Prints the default annotation for the web host altering the "Update PHP" page URL. - * - * This function is to be used after {@see wp_get_update_php_url()} to display a consistent - * annotation if the web host has altered the default "Update PHP" page URL. - * - * @todo: Remove when 5.1 is minimum WP version. - * @since 5.1.0 - */ - private function jp_update_php_annotation() { - $update_url = $this->jp_get_update_php_url(); - $default_url = $this->jp_get_default_update_php_url(); - - if ( $update_url === $default_url ) { - return; - } - - echo '<p class="description">'; - printf( - wp_kses( - /* translators: %s: default Update PHP page URL */ - __( 'This resource is provided by your web host, and is specific to your site. For more information, <a href="%s" target="_blank" rel="noopener noreferrer">see the official WordPress documentation</a>.', 'jetpack' ), - array( - 'a' => array( - 'href' => true, - 'rel' => true, - ), - ) - ), - esc_url( $default_url ) - ); - echo '</p>'; - } - } |