diff options
| author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2006-06-22 10:08:38 +0000 |
|---|---|---|
| committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2006-06-22 10:08:38 +0000 |
| commit | 0637b21e512e0ee8bca53bdb479bf35f8085fe41 (patch) | |
| tree | d6226dbedba232a2ae71260381030df7a1e4fde4 | |
| parent | 9f63c9fe67acd3e6c600de8e4bec6de823c6e8da (diff) | |
WP Merge
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@587 7be80a69-a1ef-0310-a953-fb0f7c49ff36
| -rw-r--r-- | wp-inst/wp-admin/admin-functions.php | 53 | ||||
| -rw-r--r-- | wp-inst/wp-includes/bookmark-template.php | 2 | ||||
| -rw-r--r-- | wp-inst/wp-includes/functions.php | 63 | ||||
| -rw-r--r-- | wp-inst/wp-includes/query.php | 2 |
4 files changed, 67 insertions, 53 deletions
diff --git a/wp-inst/wp-admin/admin-functions.php b/wp-inst/wp-admin/admin-functions.php index e4b72b5..4b87a1d 100644 --- a/wp-inst/wp-admin/admin-functions.php +++ b/wp-inst/wp-admin/admin-functions.php @@ -1791,45 +1791,6 @@ function wp_handle_upload(&$file, $overrides = false) { __("Missing a temporary folder."), __("Failed to write file to disk.")); - // Accepted MIME types are set here as PCRE. Override with $override['mimes']. - $mimes = apply_filters('upload_mimes', array ( - 'jpg|jpeg|jpe' => 'image/jpeg', - 'gif' => 'image/gif', - 'png' => 'image/png', - 'bmp' => 'image/bmp', - 'tif|tiff' => 'image/tiff', - 'ico' => 'image/x-icon', - 'asf|asx|wax|wmv|wmx' => 'video/asf', - 'avi' => 'video/avi', - 'mov|qt' => 'video/quicktime', - 'mpeg|mpg|mpe' => 'video/mpeg', - 'txt|c|cc|h' => 'text/plain', - 'rtx' => 'text/richtext', - 'css' => 'text/css', - 'htm|html' => 'text/html', - 'mp3|mp4' => 'audio/mpeg', - 'ra|ram' => 'audio/x-realaudio', - 'wav' => 'audio/wav', - 'ogg' => 'audio/ogg', - 'mid|midi' => 'audio/midi', - 'wma' => 'audio/wma', - 'rtf' => 'application/rtf', - 'js' => 'application/javascript', - 'pdf' => 'application/pdf', - 'doc' => 'application/msword', - 'pot|pps|ppt' => 'application/vnd.ms-powerpoint', - 'wri' => 'application/vnd.ms-write', - 'xla|xls|xlt|xlw' => 'application/vnd.ms-excel', - 'mdb' => 'application/vnd.ms-access', - 'mpp' => 'application/vnd.ms-project', - 'swf' => 'application/x-shockwave-flash', - 'class' => 'application/java', - 'tar' => 'application/x-tar', - 'zip' => 'application/zip', - 'gz|gzip' => 'application/x-gzip', - 'exe' => 'application/x-msdownload' - )); - // All tests are on by default. Most can be turned off by $override[{test_name}] = false; $test_form = true; $test_size = true; @@ -1857,17 +1818,11 @@ function wp_handle_upload(&$file, $overrides = false) { if (! @ is_uploaded_file($file['tmp_name']) ) return $upload_error_handler($file, __('Specified file failed upload test.')); - // A correct MIME type will pass this test. + // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. if ( $test_type ) { - $type = false; - $ext = false; - foreach ($mimes as $ext_preg => $mime_match) { - $ext_preg = '![^.]\.(' . $ext_preg . ')$!i'; - if ( preg_match($ext_preg, $file['name'], $ext_matches) ) { - $type = $mime_match; - $ext = $ext_matches[1]; - } - } + $wp_filetype = wp_check_filetype($file['name'], $mimes); + + extract($wp_filetype); if ( !$type || !$ext ) return $upload_error_handler($file, __('File type does not meet security guidelines. Try another.')); diff --git a/wp-inst/wp-includes/bookmark-template.php b/wp-inst/wp-includes/bookmark-template.php index c1414c4..1e762e0 100644 --- a/wp-inst/wp-includes/bookmark-template.php +++ b/wp-inst/wp-includes/bookmark-template.php @@ -359,11 +359,11 @@ function wp_list_bookmarks($args = '') { if ( $categorize ) { $cats = get_categories("type=link&orderby=$category_orderby&order=$category_order&hierarchical=0"); foreach ( (array) $cats as $cat ) { + $r['category'] = $cat->cat_ID; $bookmarks = get_bookmarks($r); if ( empty($bookmarks) ) continue; $output .= "<li id=\"linkcat-$cat->cat_ID\">$title_before$cat->cat_name$title_after\n\t<ul>\n"; - $r['category'] = $cat->cat_ID; $output .= _walk_bookmarks($bookmarks, $r); $output .= "\n\t</ul>\n</li>\n"; } diff --git a/wp-inst/wp-includes/functions.php b/wp-inst/wp-includes/functions.php index 73bc0a9..a8f5b5c 100644 --- a/wp-inst/wp-includes/functions.php +++ b/wp-inst/wp-includes/functions.php @@ -721,7 +721,7 @@ function add_query_arg() { $base = $parts[0] . '?'; $query = $parts[1]; } - } else if ( strstr($uri, '/') ) { + } else if ( !empty($protocol) || strstr($uri, '/') ) { $base = $uri . '?'; $query = ''; } else { @@ -986,7 +986,11 @@ function wp_upload_dir() { function wp_upload_bits($name, $type, $bits) { if ( empty($name) ) - return array('error' => "Empty filename"); + return array('error' => __("Empty filename")); + + $wp_filetype = wp_check_filetype($name); + if ( !$wp_filetype['ext'] ) + return array('error' => __("Invalid file type")); $upload = wp_upload_dir(); @@ -1032,6 +1036,61 @@ function wp_upload_bits($name, $type, $bits) { return array('file' => $new_file, 'url' => $url, 'error' => false); } +function wp_check_filetype($filename, $mimes = null) { + // Accepted MIME types are set here as PCRE unless provided. + $mimes = is_array($mimes) ? $mimes : apply_filters('upload_mimes', array ( + 'jpg|jpeg|jpe' => 'image/jpeg', + 'gif' => 'image/gif', + 'png' => 'image/png', + 'bmp' => 'image/bmp', + 'tif|tiff' => 'image/tiff', + 'ico' => 'image/x-icon', + 'asf|asx|wax|wmv|wmx' => 'video/asf', + 'avi' => 'video/avi', + 'mov|qt' => 'video/quicktime', + 'mpeg|mpg|mpe' => 'video/mpeg', + 'txt|c|cc|h' => 'text/plain', + 'rtx' => 'text/richtext', + 'css' => 'text/css', + 'htm|html' => 'text/html', + 'mp3|mp4' => 'audio/mpeg', + 'ra|ram' => 'audio/x-realaudio', + 'wav' => 'audio/wav', + 'ogg' => 'audio/ogg', + 'mid|midi' => 'audio/midi', + 'wma' => 'audio/wma', + 'rtf' => 'application/rtf', + 'js' => 'application/javascript', + 'pdf' => 'application/pdf', + 'doc' => 'application/msword', + 'pot|pps|ppt' => 'application/vnd.ms-powerpoint', + 'wri' => 'application/vnd.ms-write', + 'xla|xls|xlt|xlw' => 'application/vnd.ms-excel', + 'mdb' => 'application/vnd.ms-access', + 'mpp' => 'application/vnd.ms-project', + 'swf' => 'application/x-shockwave-flash', + 'class' => 'application/java', + 'tar' => 'application/x-tar', + 'zip' => 'application/zip', + 'gz|gzip' => 'application/x-gzip', + 'exe' => 'application/x-msdownload' + )); + + $type = false; + $ext = false; + + foreach ($mimes as $ext_preg => $mime_match) { + $ext_preg = '!\.(' . $ext_preg . ')$!i'; + if ( preg_match($ext_preg, $filename, $ext_matches) ) { + $type = $mime_match; + $ext = $ext_matches[1]; + break; + } + } + + return compact('ext', 'type'); +} + function do_trackbacks($post_id) { global $wpdb; diff --git a/wp-inst/wp-includes/query.php b/wp-inst/wp-includes/query.php index 0aca74b..ae6ecbe 100644 --- a/wp-inst/wp-includes/query.php +++ b/wp-inst/wp-includes/query.php @@ -546,7 +546,7 @@ class WP_Query { $q['what_to_show'] = 'posts';
}
- if ( $this->is_home && empty($this->query) && ( 'page' == get_option('show_on_front') ) && get_option('page_on_front') ) {
+ if ( $this->is_home && (empty($this->query) || $q['preview'] == 'true') && ( 'page' == get_option('show_on_front') ) && get_option('page_on_front') ) {
$this->is_page = true;
$this->is_home = false;
$q['page_id'] = get_option('page_on_front');
|
