This is giving me a syntax error. It looks gross this way, but I can't think of any...
[lhc/web/wiklou.git] / includes / StreamFile.php
index 6418269..2dbbe6d 100644 (file)
@@ -2,12 +2,12 @@
 /** */
 
 /** */
-function wfStreamFile( $fname ) {
+function wfStreamFile( $fname, $headers = array() ) {
        $stat = @stat( $fname );
        if ( !$stat ) {
                header( 'HTTP/1.0 404 Not Found' );
                header( 'Cache-Control: no-cache' );
-               header( 'Content-Type: text/html' );
+               header( 'Content-Type: text/html; charset=utf-8' );
                $encFile = htmlspecialchars( $fname );
                $encScript = htmlspecialchars( $_SERVER['SCRIPT_NAME'] );
                echo "<html><body>
@@ -22,12 +22,7 @@ function wfStreamFile( $fname ) {
        header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', $stat['mtime'] ) . ' GMT' );
 
        // Cancel output buffering and gzipping if set
-       while( $status = ob_get_status() ) {
-               ob_end_clean();
-               if( $status['name'] == 'ob_gzhandler' ) {
-                       header( 'Content-Encoding:' );
-               }
-       }
+       wfResetOutputBuffers();
        
        $type = wfGetType( $fname );
        if ( $type and $type!="unknown/unknown") {
@@ -36,6 +31,13 @@ function wfStreamFile( $fname ) {
                header('Content-type: application/x-wiki');
        }
 
+       global $wgContLanguageCode;
+       header( "Content-Disposition: inline;filename*=utf-8'$wgContLanguageCode'" . urlencode( basename( $fname ) ) );
+
+       foreach ( $headers as $header ) {
+               header( $header );
+       }
+
        if ( !empty( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) {
                $modsince = preg_replace( '/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE'] );
                $sinceTime = strtotime( $modsince );
@@ -74,4 +76,4 @@ function wfGetType( $filename ) {
        }
 }
 
-?>
+