diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php index a733ede8cf..64e180d03b 100644 --- a/wp-admin/includes/plugin.php +++ b/wp-admin/includes/plugin.php @@ -112,53 +112,27 @@ function plugin_has_required_fields($plugin_contents) { */ function get_plugin_data( $plugin_file ) { $plugin_data = plugin_get_contents( $plugin_file ); - preg_match( '|Plugin Name:(.*)$|mi', $plugin_data, $plugin_name ); - preg_match( '|Plugin URI:(.*)$|mi', $plugin_data, $plugin_uri ); + preg_match( '|Plugin Name:(.*)$|mi', $plugin_data, $name ); + preg_match( '|Plugin URI:(.*)$|mi', $plugin_data, $uri ); + preg_match( '|Version:(.*)|i', $plugin_data, $version ); preg_match( '|Description:(.*)$|mi', $plugin_data, $description ); preg_match( '|Author:(.*)$|mi', $plugin_data, $author_name ); preg_match( '|Author URI:(.*)$|mi', $plugin_data, $author_uri ); + preg_match( '|Text Domain:(.*)$|mi', $plugin_data, $text_domain ); + preg_match( '|Domain Path:(.*)$|mi', $plugin_data, $domain_path ); - if ( preg_match( "|Version:(.*)|i", $plugin_data, $version )) - $version = trim( $version[1] ); - else - $version = ''; - - if( preg_match( '|Text Domain:(.*)$|mi', $plugin_data, $text_domain ) ) { - if( preg_match( '|Domain Path:(.*)$|mi', $plugin_data, $domain_path ) ) - $domain_path = trim( $domain_path[1] ); - - $text_domain = trim( $text_domain[1] ); - - if( !empty( $text_domain ) ) { - if( !empty( $domain_path ) ) - load_plugin_textdomain($text_domain, dirname($plugin_file). $domain_path); - else - load_plugin_textdomain($text_domain, dirname($plugin_file)); - } - - $description[1] = translate(trim($description[1]), $text_domain); - $plugin_name[1] = translate(trim($plugin_name[1]), $text_domain); - $plugin_uri[1] = translate(trim($plugin_uri[1]), $text_domain); - $author_name[1] = translate(trim($author_name[1]), $text_domain); - $author_uri[1] = translate(trim($author_uri[1]), $text_domain); + foreach ( array( 'name', 'uri', 'version', 'description', 'author_name', 'author_uri', 'text_domain', 'domain_path' ) as $field ) { + if ( !empty( ${$field} ) ) + ${$field} = trim(${$field}[1]); + else + ${$field} = ''; } - $description = wptexturize( trim( $description[1] )); - - $name = $plugin_name[1]; - $name = trim( $name ); - $plugin = $name; - if ('' != trim($plugin_uri[1]) && '' != $name ) { - $plugin = ''.$plugin.''; - } - - if ('' == $author_uri[1] ) { - $author = trim( $author_name[1] ); - } else { - $author = '' . trim( $author_name[1] ) . ''; - } - - return array('Name' => $name, 'Title' => $plugin, 'Description' => $description, 'Author' => $author, 'Version' => $version); + return array( + 'Name' => $name, 'PluginURI' => $uri, 'Description' => $description, + 'Author' => $author_name, 'AuthorURI' => $author_uri, 'Version' => $version, + 'TextDomain' => $text_domain, 'DomainPath' => $domain_path + ); } function get_plugins($plugin_folder = '') { diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index 6584d0804d..883d88bffe 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -216,6 +216,27 @@ $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()), foreach( (array)$all_plugins as $plugin_file => $plugin_data) { + //Translate fields + if( !empty($plugin_data['TextDomain']) ) { + if( !empty( $plugin_data['DomainPath'] ) ) + load_plugin_textdomain($plugin_data['TextDomain'], dirname($plugin_file). $plugin_data['DomainPath']); + else + load_plugin_textdomain($plugin_data['TextDomain'], dirname($plugin_file)); + + foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version') as $field ) + $plugin_data[ $field ] = translate($plugin_data[ $field ], $plugin_data['TextDomain']); + } + + //Apply Markup + $plugin_data['Title'] = $plugin_data['Name']; + if ( !empty($plugin_data['PluginURI']) && !empty($plugin_data['Name']) ) + $plugin_data['Title'] = '' . $plugin_data['Name'] . ''; + + if ( ! empty($plugin_data['AuthorURI']) ) + $plugin_data['Author'] = '' . $plugin_data['Author'] . ''; + + $plugin_data['Description'] = wptexturize( $plugin_data['Description'] ); + // Sanitize all displayed data $plugin_data['Title'] = wp_kses($plugin_data['Title'], $plugins_allowedtags); $plugin_data['Version'] = wp_kses($plugin_data['Version'], $plugins_allowedtags); @@ -263,7 +284,7 @@ function print_plugins_table($plugins, $context = '') { if( 'active' == $context ) $action_links[] = '' . __('Deactivate') . ''; - else //Available or Recently deactivated + else //Inactive or Recently deactivated $action_links[] = '' . __('Activate') . ''; if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )