wp/wp-admin/includes/credits.php
changeset 16 a86126ab1dd4
parent 9 177826044cd9
child 18 be944660c56a
equal deleted inserted replaced
15:3d4e9c994f10 16:a86126ab1dd4
    13  * @since 3.2.0
    13  * @since 3.2.0
    14  *
    14  *
    15  * @return array|false A list of all of the contributors, or false on error.
    15  * @return array|false A list of all of the contributors, or false on error.
    16  */
    16  */
    17 function wp_credits() {
    17 function wp_credits() {
    18 	// include an unmodified $wp_version
    18 	// Include an unmodified $wp_version.
    19 	include( ABSPATH . WPINC . '/version.php' );
    19 	require ABSPATH . WPINC . '/version.php';
    20 
    20 
    21 	$locale = get_user_locale();
    21 	$locale = get_user_locale();
    22 
    22 
    23 	$results = get_site_transient( 'wordpress_credits_' . $locale );
    23 	$results = get_site_transient( 'wordpress_credits_' . $locale );
    24 
    24 
    74  * @param string $data External library data (passed by reference).
    74  * @param string $data External library data (passed by reference).
    75  */
    75  */
    76 function _wp_credits_build_object_link( &$data ) {
    76 function _wp_credits_build_object_link( &$data ) {
    77 	$data = '<a href="' . esc_url( $data[1] ) . '">' . esc_html( $data[0] ) . '</a>';
    77 	$data = '<a href="' . esc_url( $data[1] ) . '">' . esc_html( $data[0] ) . '</a>';
    78 }
    78 }
       
    79 
       
    80 /**
       
    81  * Displays the title for a given group of contributors.
       
    82  *
       
    83  * @since 5.3.0
       
    84  *
       
    85  * @param array $group_data The current contributor group.
       
    86  */
       
    87 function wp_credits_section_title( $group_data = array() ) {
       
    88 	if ( ! count( $group_data ) ) {
       
    89 		return;
       
    90 	}
       
    91 
       
    92 	if ( $group_data['name'] ) {
       
    93 		if ( 'Translators' === $group_data['name'] ) {
       
    94 			// Considered a special slug in the API response. (Also, will never be returned for en_US.)
       
    95 			$title = _x( 'Translators', 'Translate this to be the equivalent of English Translators in your language for the credits page Translators section' );
       
    96 		} elseif ( isset( $group_data['placeholders'] ) ) {
       
    97 			// phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction,WordPress.WP.I18n.NonSingularStringLiteralText
       
    98 			$title = vsprintf( translate( $group_data['name'] ), $group_data['placeholders'] );
       
    99 		} else {
       
   100 			// phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction,WordPress.WP.I18n.NonSingularStringLiteralText
       
   101 			$title = translate( $group_data['name'] );
       
   102 		}
       
   103 
       
   104 		echo '<h2 class="wp-people-group-title">' . esc_html( $title ) . "</h2>\n";
       
   105 	}
       
   106 }
       
   107 
       
   108 /**
       
   109  * Displays a list of contributors for a given group.
       
   110  *
       
   111  * @since 5.3.0
       
   112  *
       
   113  * @param array  $credits The credits groups returned from the API.
       
   114  * @param string $slug    The current group to display.
       
   115  */
       
   116 function wp_credits_section_list( $credits = array(), $slug = '' ) {
       
   117 	$group_data   = isset( $credits['groups'][ $slug ] ) ? $credits['groups'][ $slug ] : array();
       
   118 	$credits_data = $credits['data'];
       
   119 	if ( ! count( $group_data ) ) {
       
   120 		return;
       
   121 	}
       
   122 
       
   123 	if ( ! empty( $group_data['shuffle'] ) ) {
       
   124 		shuffle( $group_data['data'] ); // We were going to sort by ability to pronounce "hierarchical," but that wouldn't be fair to Matt.
       
   125 	}
       
   126 
       
   127 	switch ( $group_data['type'] ) {
       
   128 		case 'list':
       
   129 			array_walk( $group_data['data'], '_wp_credits_add_profile_link', $credits_data['profiles'] );
       
   130 			echo '<p class="wp-credits-list">' . wp_sprintf( '%l.', $group_data['data'] ) . "</p>\n\n";
       
   131 			break;
       
   132 		case 'libraries':
       
   133 			array_walk( $group_data['data'], '_wp_credits_build_object_link' );
       
   134 			echo '<p class="wp-credits-list">' . wp_sprintf( '%l.', $group_data['data'] ) . "</p>\n\n";
       
   135 			break;
       
   136 		default:
       
   137 			$compact = 'compact' === $group_data['type'];
       
   138 			$classes = 'wp-people-group ' . ( $compact ? 'compact' : '' );
       
   139 			echo '<ul class="' . $classes . '" id="wp-people-group-' . $slug . '">' . "\n";
       
   140 			foreach ( $group_data['data'] as $person_data ) {
       
   141 				echo '<li class="wp-person" id="wp-person-' . esc_attr( $person_data[2] ) . '">' . "\n\t";
       
   142 				echo '<a href="' . esc_url( sprintf( $credits_data['profiles'], $person_data[2] ) ) . '" class="web">';
       
   143 				$size   = $compact ? 40 : 80;
       
   144 				$data   = get_avatar_data( $person_data[1] . '@md5.gravatar.com', array( 'size' => $size ) );
       
   145 				$data2x = get_avatar_data( $person_data[1] . '@md5.gravatar.com', array( 'size' => $size * 2 ) );
       
   146 				echo '<img src="' . esc_url( $data['url'] ) . '" srcset="' . esc_url( $data2x['url'] ) . ' 2x" class="gravatar" alt="" />' . "\n";
       
   147 				echo esc_html( $person_data[0] ) . "</a>\n\t";
       
   148 				if ( ! $compact ) {
       
   149 					// phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction,WordPress.WP.I18n.NonSingularStringLiteralText
       
   150 					echo '<span class="title">' . translate( $person_data[3] ) . "</span>\n";
       
   151 				}
       
   152 				echo "</li>\n";
       
   153 			}
       
   154 			echo "</ul>\n";
       
   155 			break;
       
   156 	}
       
   157 }