WordPress.org

Make WordPress Core

Ticket #11742: 11742.2.diff

File 11742.2.diff, 6.0 KB (added by nacin, 8 years ago)

Sets error_reporting to 0, removing requirement for a new SHORTLOAD constant and error suppression operators.

  • wp-admin/includes/htaccess.ms

     
    44#uploaded files
    55RewriteRule ^(.*/)?files/$ index.php [L]
    66RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
    7 RewriteRule ^(.*/)?files/(.*) wp-includes/blogs.php?file=$2 [L]
     7RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]
    88
    99# add a trailing slash to /wp-admin
    1010RewriteCond %{REQUEST_URI} ^.*/wp-admin$
  • wp-includes/blogs.php

     
    88 * @subpackage Multisite
    99 */
    1010
     11error_reporting(0);
     12
    1113define( 'SHORTINIT', true );
    12 require_once( dirname( dirname( __FILE__) ) . '/wp-load.php' ); // absolute includes are faster
    13 require_once( WP_CONTENT_DIR . '/blogs.php' );
    14 exit();
     14require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
     15ms_default_constants( 'ms-files' );
     16
     17error_reporting(0);
     18
     19// Allow wp-content/blogs.php to be used.
     20if ( file_exists( WP_CONTENT_DIR . '/blogs.php' ) ) {
     21        require_once( WP_CONTENT_DIR . '/blogs.php' );
     22        exit;
     23}
     24
     25if ( $current_blog->archived == '1' || $current_blog->spam == '1' || $current_blog->deleted == '1' ) {
     26        status_header( 404 );
     27        die( '404 — File not found.' );
     28}
     29
     30if ( !function_exists('wp_check_filetype') ) :
     31function wp_check_filetype($filename, $mimes = null) {
     32        // Accepted MIME types are set here as PCRE unless provided.
     33        $mimes = is_array($mimes) ? $mimes : array (
     34                'jpg|jpeg|jpe' => 'image/jpeg',
     35                'gif' => 'image/gif',
     36                'png' => 'image/png',
     37                'bmp' => 'image/bmp',
     38                'tif|tiff' => 'image/tiff',
     39                'ico' => 'image/x-icon',
     40                'asf|asx|wax|wmv|wmx' => 'video/asf',
     41                'avi' => 'video/avi',
     42                'mov|qt' => 'video/quicktime',
     43                'mpeg|mpg|mpe' => 'video/mpeg',
     44                'txt|c|cc|h' => 'text/plain',
     45                'rtx' => 'text/richtext',
     46                'css' => 'text/css',
     47                'htm|html' => 'text/html',
     48                'mp3|mp4' => 'audio/mpeg',
     49                'ra|ram' => 'audio/x-realaudio',
     50                'wav' => 'audio/wav',
     51                'ogg' => 'audio/ogg',
     52                'mid|midi' => 'audio/midi',
     53                'wma' => 'audio/wma',
     54                'rtf' => 'application/rtf',
     55                'js' => 'application/javascript',
     56                'pdf' => 'application/pdf',
     57                'doc' => 'application/msword',
     58                'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
     59                'wri' => 'application/vnd.ms-write',
     60                'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
     61                'mdb' => 'application/vnd.ms-access',
     62                'mpp' => 'application/vnd.ms-project',
     63                'swf' => 'application/x-shockwave-flash',
     64                'class' => 'application/java',
     65                'tar' => 'application/x-tar',
     66                'zip' => 'application/zip',
     67                'gz|gzip' => 'application/x-gzip',
     68                'exe' => 'application/x-msdownload'
     69        );
     70
     71        $type = false;
     72        $ext = false;
     73
     74        foreach ( (array) $mimes as $ext_preg => $mime_match ) {
     75                $ext_preg = '!\.(' . $ext_preg . ')$!i';
     76                if ( preg_match($ext_preg, $filename, $ext_matches) ) {
     77                        $type = $mime_match;
     78                        $ext = $ext_matches[1];
     79                        break;
     80                }
     81        }
     82
     83        return compact('ext', 'type');
     84}
     85endif;
     86
     87$file = BLOGUPLOADDIR . str_replace( '..', '', $_GET[ 'file' ] );
     88if ( !is_file( $file ) ) {
     89        status_header( 404 );
     90        die( '404 — File not found.' );
     91}
     92
     93$mime = wp_check_filetype( $_SERVER[ 'REQUEST_URI' ] );
     94if( false === $mime[ 'type' ] && function_exists( 'mime_content_type' ) )
     95        $mime[ 'type' ] = mime_content_type( $file );
     96
     97if( $mime[ 'type' ] )
     98        $mimetype = $mime[ 'type' ];
     99else
     100        $mimetype = 'image/' . substr( $_SERVER[ 'REQUEST_URI' ], strrpos( $_SERVER[ 'REQUEST_URI' ], '.' ) + 1 );
     101
     102header( 'Content-type: ' . $mimetype ); // always send this
     103if ( false === strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS' ) )
     104        header( 'Content-Length: ' . filesize( $file ) );
     105
     106// Optional support for X-Sendfile and X-Accel-Redirect
     107if ( WPMU_ACCEL_REDIRECT ) {
     108        header( 'X-Accel-Redirect: ' . str_replace( WP_CONTENT_DIR, '', $file ) );
     109        exit;
     110} elseif ( WPMU_SENDFILE ) {
     111        header( 'X-Sendfile: ' . $file );
     112        exit;
     113}
     114
     115$last_modified = gmdate( 'D, d M Y H:i:s', filemtime( $file ) );
     116$etag = '"' . md5( $last_modified ) . '"';
     117header( "Last-Modified: $last_modified GMT" );
     118header( 'ETag: ' . $etag );
     119header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', time() + 100000000 ) . ' GMT' );
     120
     121// Support for Conditional GET
     122$client_etag = isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) ? stripslashes( $_SERVER['HTTP_IF_NONE_MATCH'] ) : false;
     123
     124if( ! isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) )
     125        $_SERVER['HTTP_IF_MODIFIED_SINCE'] = false;
     126
     127$client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE'] );
     128// If string is empty, return 0. If not, attempt to parse into a timestamp
     129$client_modified_timestamp = $client_last_modified ? strtotime( $client_last_modified ) : 0;
     130
     131// Make a timestamp for our most recent modification...
     132$modified_timestamp = strtotime($last_modified);
     133
     134if ( ( $client_last_modified && $client_etag )
     135        ? ( ( $client_modified_timestamp >= $modified_timestamp) && ( $client_etag == $etag ) )
     136        : ( ( $client_modified_timestamp >= $modified_timestamp) || ( $client_etag == $etag ) )
     137        ) {
     138        status_header( 304 );
     139        exit;
     140}
     141
     142// If we made it this far, just serve the file
     143readfile( $file );
     144
     145?>
     146 No newline at end of file
  • wp-includes/ms-default-constants.php

     
    5454                        if ( !defined('COOKIE_DOMAIN') )
    5555                                        define('COOKIE_DOMAIN', '.' . $current_site->cookie_domain);
    5656                        break;
     57                case 'ms-files' :
     58                        /**
     59                         * Optional support for X-Sendfile header
     60                         * @since 3.0.0
     61                         */
     62                        if ( !defined( 'WPMU_SENDFILE' ) )
     63                                define( 'WPMU_SENDFILE', false );
     64                        /**
     65                         * Optional support for X-Accel-Redirect header
     66                         * @since 3.0.0
     67                         */
     68                        if ( !defined( 'WPMU_ACCEL_REDIRECT' ) )
     69                                define( 'WPMU_ACCEL_REDIRECT', false );
     70                        break;
    5771        }
    5872}
    5973?>
     74 No newline at end of file