_get_plugin_data_markup_translate() – Sanitizes plugin data, optionally adds markup, optionally translates.

You appear to be a bot. Output may be restricted

Description

Sanitizes plugin data, optionally adds markup, optionally translates.

Usage

$array = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );

Parameters

$plugin_file
( string ) required – Path to the main plugin file.
$plugin_data
( array ) required – An array of plugin data. See get_plugin_data().
$markup
( bool ) optional default: 1 – Optional. If the returned data should have HTML markup applied. Default true.
$translate
( bool ) optional default: 1 – Optional. If the returned data should be translated. Default true.

Returns

array Plugin data. Values will be empty if not supplied by the plugin. See get_plugin_data() for the list of possible values.

Source

File name: wordpress/wp-admin/includes/plugin.php
Lines:

1 to 83 of 83
function _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup = true, $translate = true ) {

  // Sanitize the plugin filename to a WP_PLUGIN_DIR relative path.
  $plugin_file = plugin_basename( $plugin_file );

  // Translate fields.
  if ( $translate ) {
    $textdomain = $plugin_data['TextDomain'];
    if ( $textdomain ) {
      if ( ! is_textdomain_loaded( $textdomain ) ) {
        if ( $plugin_data['DomainPath'] ) {
          load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) . $plugin_data['DomainPath'] );
        } else {
          load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) );
        }
      }
    } elseif ( 'hello.php' === basename( $plugin_file ) ) {
      $textdomain = 'default';
    }
    if ( $textdomain ) {
      foreach ( array( 'Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version' ) as $field ) {
        if ( ! empty( $plugin_data[ $field ] ) ) {
          // phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction,WordPress.WP.I18n.NonSingularStringLiteralText,WordPress.WP.I18n.NonSingularStringLiteralDomain
          $plugin_data[ $field ] = translate( $plugin_data[ $field ], $textdomain );
        }
      }
    }
  }

  // Sanitize fields.
  $allowed_tags_in_links = array(
    'abbr'    => array( 'title' => true ),
    'acronym' => array( 'title' => true ),
    'code'    => true,
    'em'      => true,
    'strong'  => true,
  );

  $allowed_tags      = $allowed_tags_in_links;
  $allowed_tags['a'] = array(
    'href'  => true,
    'title' => true,
  );

  /*
	 * Name is marked up inside <a> tags. Don't allow these.
	 * Author is too, but some plugins have used <a> here (omitting Author URI).
	 */
  $plugin_data['Name']   = wp_kses( $plugin_data['Name'], $allowed_tags_in_links );
  $plugin_data['Author'] = wp_kses( $plugin_data['Author'], $allowed_tags );

  $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $allowed_tags );
  $plugin_data['Version']     = wp_kses( $plugin_data['Version'], $allowed_tags );

  $plugin_data['PluginURI'] = esc_url( $plugin_data['PluginURI'] );
  $plugin_data['AuthorURI'] = esc_url( $plugin_data['AuthorURI'] );

  $plugin_data['Title']      = $plugin_data['Name'];
  $plugin_data['AuthorName'] = $plugin_data['Author'];

  // Apply markup.
  if ( $markup ) {
    if ( $plugin_data['PluginURI'] && $plugin_data['Name'] ) {
      $plugin_data['Title'] = '<a href="' . $plugin_data['PluginURI'] . '">' . $plugin_data['Name'] . '</a>';
    }

    if ( $plugin_data['AuthorURI'] && $plugin_data['Author'] ) {
      $plugin_data['Author'] = '<a href="' . $plugin_data['AuthorURI'] . '">' . $plugin_data['Author'] . '</a>';
    }

    $plugin_data['Description'] = wptexturize( $plugin_data['Description'] );

    if ( $plugin_data['Author'] ) {
      $plugin_data['Description'] .= sprintf(
        /* translators: %s: Plugin author. */
        ' <cite>' . __( 'By %s.' ) . '</cite>',
        $plugin_data['Author']
      );
    }
  }

  return $plugin_data;
}
 

 View on GitHub View on Trac