WordPress.org

Make WordPress Core

Ticket #12130: 12130.4.diff

File 12130.4.diff, 4.0 KB (added by Denis-de-Bernardy, 6 years ago)
  • wp-includes/functions.php

     
    39983998 * @param string $file Path to the file 
    39993999 * @param bool $markup If the returned data should have HTML markup applied 
    40004000 * @param string $context If specified adds filter hook "extra_<$context>_headers" 
     4001 * @param int $max_bytes Maximum bytes to read in file. Defaults to 8192 = 8kB 
    40014002 */ 
    4002 function get_file_data( $file, $default_headers, $context = '' ) { 
     4003function get_file_data( $file, $default_headers, $context = '', $max_bytes = 8192 ) { 
     4004        $max_bytes = apply_filters('get_max_' . $context . '_file_bytes', $max_bytes); 
     4005         
     4006        if ( !$max_bytes ) 
     4007                return $default_headers; 
     4008 
    40034009        // We don't need to write to the file, so just open for reading. 
    40044010        $fp = fopen( $file, 'r' ); 
    40054011 
    4006         // Pull only the first 8kiB of the file in. 
    4007         $file_data = fread( $fp, 8192 ); 
     4012        // Pull only the beginning start of the file. 
     4013        $file_data = fread( $fp, $max_bytes ); 
    40084014 
    40094015        // PHP will close file handle, but we are good citizens. 
    40104016        fclose( $fp ); 
  • wp-admin/includes/plugin.php

     
    4242 *              from the author. 
    4343 *              'Author' - The author's name 
    4444 *              'AuthorURI' - The authors web site address. 
     45 *              'DonateURI' - Web address to donate to the plugin author.  
    4546 *              'Version' - The plugin version number. 
    4647 *              'PluginURI' - Plugin web site address. 
    4748 *              'TextDomain' - Plugin's text domain for localization. 
     
    7879                'Description' => 'Description', 
    7980                'Author' => 'Author', 
    8081                'AuthorURI' => 'Author URI', 
     82                'DonateURI' => 'Donate URI', 
    8183                'TextDomain' => 'Text Domain', 
    8284                'DomainPath' => 'Domain Path', 
    8385                'Network' => 'Network', 
     
    98100        //For backward compatibility by default Title is the same as Name. 
    99101        $plugin_data['Title'] = $plugin_data['Name']; 
    100102 
     103        if ( empty($plugin_data['DonateURI']) ) { 
     104                // Read info in from readme.txt 
     105                $readme_headers = array( 
     106                        'DonateURI' => '', 
     107                ); 
     108 
     109                $readme_file = plugin_dir_path( $plugin_file ) . 'readme.txt'; 
     110                if ( file_exists( $readme_file ) ) { 
     111                        $readme_data = get_file_data( $readme_file, $readme_headers, 'readme', 1024 ); 
     112                        unset($plugin_data['DonateURI']); 
     113                        $plugin_data = array_merge( $readme_data, $plugin_data ); 
     114                } 
     115        } 
     116 
    101117        if ( $markup || $translate ) 
    102118                $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate ); 
    103119 
     
    113129                else 
    114130                        load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file)); 
    115131 
    116                 foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version') as $field ) 
     132                foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version', 'DonateURI') as $field ) 
    117133                        $plugin_data[ $field ] = translate($plugin_data[ $field ], $plugin_data['TextDomain']); 
    118134        } 
    119135 
     136        // Sanitize urls 
     137        foreach ( array('PluginURI', 'AuthorURI', 'DonateURI') as $field ) { 
     138                if ( !empty($plugin_data[$field]) ) 
     139                        $plugin_data[$field] = esc_url($plugin_data[$field]); 
     140        } 
     141                 
     142 
    120143        //Apply Markup 
    121144        if ( $markup ) { 
    122145                if ( ! empty($plugin_data['PluginURI']) && ! empty($plugin_data['Name']) ) 
  • wp-admin/plugins.php

     
    620620                } 
    621621                if ( ! empty($plugin_data['PluginURI']) ) 
    622622                        $plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __('Visit plugin site') . '</a>'; 
    623  
     623                if ( ! empty($plugin_data['DonateURI']) )  
     624                        $plugin_meta[] = '<a href="' . $plugin_data['DonateURI'] . '" title="' . __( 'Donate' ) . '">' . __('Donate') . '</a>';  
     625                         
    624626                $plugin_meta = apply_filters('plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $context); 
    625627                echo implode(' | ', $plugin_meta); 
    626628                echo "</td>