Changeset 3895

Show
Ignore:
Timestamp:
06/21/06 23:24:13 (3 years ago)
Author:
ryan
Message:

wp_check_filetype() from skeltoac.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/2.0/wp-admin/admin-functions.php

    r3892 r3895  
    16651665        __("Failed to write file to disk.")); 
    16661666 
    1667     // Accepted MIME types are set here as PCRE. Override with $override['mimes']. 
    1668     $mimes = apply_filters('upload_mimes', array ( 
    1669         'jpg|jpeg|jpe' => 'image/jpeg', 
    1670         'gif' => 'image/gif', 
    1671         'png' => 'image/png', 
    1672         'bmp' => 'image/bmp', 
    1673         'tif|tiff' => 'image/tiff', 
    1674         'ico' => 'image/x-icon', 
    1675         'asf|asx|wax|wmv|wmx' => 'video/asf', 
    1676         'avi' => 'video/avi', 
    1677         'mov|qt' => 'video/quicktime', 
    1678         'mpeg|mpg|mpe' => 'video/mpeg', 
    1679         'txt|c|cc|h' => 'text/plain', 
    1680         'rtx' => 'text/richtext', 
    1681         'css' => 'text/css', 
    1682         'htm|html' => 'text/html', 
    1683         'mp3|mp4' => 'audio/mpeg', 
    1684         'ra|ram' => 'audio/x-realaudio', 
    1685         'wav' => 'audio/wav', 
    1686         'ogg' => 'audio/ogg', 
    1687         'mid|midi' => 'audio/midi', 
    1688         'wma' => 'audio/wma', 
    1689         'rtf' => 'application/rtf', 
    1690         'js' => 'application/javascript', 
    1691         'pdf' => 'application/pdf', 
    1692         'doc' => 'application/msword', 
    1693         'pot|pps|ppt' => 'application/vnd.ms-powerpoint', 
    1694         'wri' => 'application/vnd.ms-write', 
    1695         'xla|xls|xlt|xlw' => 'application/vnd.ms-excel', 
    1696         'mdb' => 'application/vnd.ms-access', 
    1697         'mpp' => 'application/vnd.ms-project', 
    1698         'swf' => 'application/x-shockwave-flash', 
    1699         'class' => 'application/java', 
    1700         'tar' => 'application/x-tar', 
    1701         'zip' => 'application/zip', 
    1702         'gz|gzip' => 'application/x-gzip', 
    1703         'exe' => 'application/x-msdownload' 
    1704     )); 
    1705  
    17061667    // All tests are on by default. Most can be turned off by $override[{test_name}] = false; 
    17071668    $test_form = true; 
     
    17311692        return $upload_error_handler($file, __('Specified file failed upload test.')); 
    17321693 
    1733     // A correct MIME type will pass this test. 
     1694    // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. 
    17341695    if ( $test_type ) { 
    1735         $type = false; 
    1736         $ext = false; 
    1737         foreach ($mimes as $ext_preg => $mime_match) { 
    1738             $ext_preg = '![^.]\.(' . $ext_preg . ')$!i'; 
    1739             if ( preg_match($ext_preg, $file['name'], $ext_matches) ) { 
    1740                 $type = $mime_match; 
    1741                 $ext = $ext_matches[1]; 
    1742             } 
    1743         } 
     1696        $wp_filetype = wp_check_filetype($file['name'], $mimes); 
     1697 
     1698        extract($wp_filetype); 
    17441699 
    17451700        if ( !$type || !$ext ) 
  • branches/2.0/wp-includes/functions-post.php

    r3762 r3895  
    918918function wp_upload_bits($name, $type, $bits) { 
    919919    if ( empty($name) ) 
    920         return array('error' => "Empty filename"); 
     920        return array('error' => __("Empty filename")); 
     921 
     922    $wp_filetype = wp_check_filetype($name); 
     923    if ( !$wp_filetype['ext'] ) 
     924        return array('error' => __("Invalid file type")); 
    921925 
    922926    $upload = wp_upload_dir(); 
     
    964968} 
    965969 
     970function wp_check_filetype($filename, $mimes = null) { 
     971    // Accepted MIME types are set here as PCRE unless provided. 
     972    $mimes = is_array($mimes) ? $mimes : apply_filters('upload_mimes', array ( 
     973        'jpg|jpeg|jpe' => 'image/jpeg', 
     974        'gif' => 'image/gif', 
     975        'png' => 'image/png', 
     976        'bmp' => 'image/bmp', 
     977        'tif|tiff' => 'image/tiff', 
     978        'ico' => 'image/x-icon', 
     979        'asf|asx|wax|wmv|wmx' => 'video/asf', 
     980        'avi' => 'video/avi', 
     981        'mov|qt' => 'video/quicktime', 
     982        'mpeg|mpg|mpe' => 'video/mpeg', 
     983        'txt|c|cc|h' => 'text/plain', 
     984        'rtx' => 'text/richtext', 
     985        'css' => 'text/css', 
     986        'htm|html' => 'text/html', 
     987        'mp3|mp4' => 'audio/mpeg', 
     988        'ra|ram' => 'audio/x-realaudio', 
     989        'wav' => 'audio/wav', 
     990        'ogg' => 'audio/ogg', 
     991        'mid|midi' => 'audio/midi', 
     992        'wma' => 'audio/wma', 
     993        'rtf' => 'application/rtf', 
     994        'js' => 'application/javascript', 
     995        'pdf' => 'application/pdf', 
     996        'doc' => 'application/msword', 
     997        'pot|pps|ppt' => 'application/vnd.ms-powerpoint', 
     998        'wri' => 'application/vnd.ms-write', 
     999        'xla|xls|xlt|xlw' => 'application/vnd.ms-excel', 
     1000        'mdb' => 'application/vnd.ms-access', 
     1001        'mpp' => 'application/vnd.ms-project', 
     1002        'swf' => 'application/x-shockwave-flash', 
     1003        'class' => 'application/java', 
     1004        'tar' => 'application/x-tar', 
     1005        'zip' => 'application/zip', 
     1006        'gz|gzip' => 'application/x-gzip', 
     1007        'exe' => 'application/x-msdownload' 
     1008    )); 
     1009 
     1010    $type = false; 
     1011    $ext = false; 
     1012 
     1013    foreach ($mimes as $ext_preg => $mime_match) { 
     1014        $ext_preg = '!\.(' . $ext_preg . ')$!i'; 
     1015        if ( preg_match($ext_preg, $filename, $ext_matches) ) { 
     1016            $type = $mime_match; 
     1017            $ext = $ext_matches[1]; 
     1018            break; 
     1019        } 
     1020    } 
     1021 
     1022    return compact('ext', 'type'); 
     1023} 
     1024 
    9661025?>