Make WordPress Core

Ticket #35425: 35425.wp-admin.diff

File 35425.wp-admin.diff, 39.1 KB (added by voldemortensen, 9 years ago)
  • src/wp-admin/includes/bookmark.php

     
    197197        if ( $update ) {
    198198                if ( false === $wpdb->update( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss' ), compact( 'link_id' ) ) ) {
    199199                        if ( $wp_error ) {
    200                                 return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error );
     200                                return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), array( 'status' => 500, 'db_error' => $wpdb->last_error ) );
    201201                        } else {
    202202                                return 0;
    203203                        }
     
    205205        } else {
    206206                if ( false === $wpdb->insert( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss' ) ) ) {
    207207                        if ( $wp_error ) {
    208                                 return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error );
     208                                return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), array( 'status' => 500, 'db_error' => $wpdb->last_error ) );
    209209                        } else {
    210210                                return 0;
    211211                        }
  • src/wp-admin/includes/class-wp-press-this.php

     
    259259                global $wp_version;
    260260
    261261                if ( empty( $url ) ) {
    262                         return new WP_Error( 'invalid-url', __( 'A valid URL was not provided.' ) );
     262                        return new WP_Error( 'invalid-url', __( 'A valid URL was not provided.' ), array( 'status' => 404 ) );
    263263                }
    264264
    265265                $remote_url = wp_safe_remote_get( $url, array(
  • src/wp-admin/includes/class-wp-upgrader.php

     
    178178                }
    179179
    180180                if ( ! is_object($wp_filesystem) )
    181                         return new WP_Error('fs_unavailable', $this->strings['fs_unavailable'] );
     181                        return new WP_Error( 'fs_unavailable', $this->strings['fs_unavailable'], array( 'status' => 500 ) );
    182182
    183183                if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
    184                         return new WP_Error('fs_error', $this->strings['fs_error'], $wp_filesystem->errors);
     184                        return new WP_Error( 'fs_error', $this->strings['fs_error'], array( 'status' => 500, 'error' => $wp_filesystem->errors ) );
    185185
    186186                foreach ( (array)$directories as $dir ) {
    187187                        switch ( $dir ) {
    188188                                case ABSPATH:
    189189                                        if ( ! $wp_filesystem->abspath() )
    190                                                 return new WP_Error('fs_no_root_dir', $this->strings['fs_no_root_dir']);
     190                                                return new WP_Error( 'fs_no_root_dir', $this->strings['fs_no_root_dir'], array( 'status' => 500 ) );
    191191                                        break;
    192192                                case WP_CONTENT_DIR:
    193193                                        if ( ! $wp_filesystem->wp_content_dir() )
    194                                                 return new WP_Error('fs_no_content_dir', $this->strings['fs_no_content_dir']);
     194                                                return new WP_Error( 'fs_no_content_dir', $this->strings['fs_no_content_dir'], array( 'status' => 500 ) );
    195195                                        break;
    196196                                case WP_PLUGIN_DIR:
    197197                                        if ( ! $wp_filesystem->wp_plugins_dir() )
    198                                                 return new WP_Error('fs_no_plugins_dir', $this->strings['fs_no_plugins_dir']);
     198                                                return new WP_Error( 'fs_no_plugins_dir', $this->strings['fs_no_plugins_dir'], array( 'status' => 500 ) );
    199199                                        break;
    200200                                case get_theme_root():
    201201                                        if ( ! $wp_filesystem->wp_themes_dir() )
    202                                                 return new WP_Error('fs_no_themes_dir', $this->strings['fs_no_themes_dir']);
     202                                                return new WP_Error( 'fs_no_themes_dir', $this->strings['fs_no_themes_dir'], array( 'status' => 500 ) );
    203203                                        break;
    204204                                default:
    205205                                        if ( ! $wp_filesystem->find_folder($dir) )
    206                                                 return new WP_Error( 'fs_no_folder', sprintf( $this->strings['fs_no_folder'], esc_html( basename( $dir ) ) ) );
     206                                                return new WP_Error( 'fs_no_folder', sprintf( $this->strings['fs_no_folder'], esc_html( basename( $dir ) ) ), array( 'status' => 500 ) );
    207207                                        break;
    208208                        }
    209209                }
     
    241241                        return $package; //must be a local file..
    242242
    243243                if ( empty($package) )
    244                         return new WP_Error('no_package', $this->strings['no_package']);
     244                        return new WP_Error( 'no_package', $this->strings['no_package'], array( 'status' => 404 ) );
    245245
    246246                $this->skin->feedback('downloading_package', $package);
    247247
     
    248248                $download_file = download_url($package);
    249249
    250250                if ( is_wp_error($download_file) )
    251                         return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message());
     251                        return new WP_Error( 'download_failed', $this->strings['download_failed'], array( 'status' => 500, 'error' => $download_file->get_error_message() ) );
    252252
    253253                return $download_file;
    254254        }
     
    297297                if ( is_wp_error($result) ) {
    298298                        $wp_filesystem->delete($working_dir, true);
    299299                        if ( 'incompatible_archive' == $result->get_error_code() ) {
    300                                 return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], $result->get_error_data() );
     300                                return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], array( 'status' => 500, 'error' => $result->get_error_data() ) );
    301301                        }
    302302                        return $result;
    303303                }
     
    355355                }
    356356
    357357                if ( ! empty( $unwritable_files ) ) {
    358                         return new WP_Error( 'files_not_writable', $this->strings['files_not_writable'], implode( ', ', $unwritable_files ) );
     358                        return new WP_Error( 'files_not_writable', $this->strings['files_not_writable'], array( 'status' => 500, 'error' => implode( ', ', $unwritable_files ) ) );
    359359                }
    360360
    361361                if ( ! $wp_filesystem->delete( $remote_destination, true ) ) {
    362                         return new WP_Error( 'remove_old_failed', $this->strings['remove_old_failed'] );
     362                        return new WP_Error( 'remove_old_failed', $this->strings['remove_old_failed'], array( 'status' => 500 ) );
    363363                }
    364364
    365365                return true;
     
    418418                @set_time_limit( 300 );
    419419
    420420                if ( empty( $source ) || empty( $destination ) ) {
    421                         return new WP_Error( 'bad_request', $this->strings['bad_request'] );
     421                        return new WP_Error( 'bad_request', $this->strings['bad_request'], array( 'status' => 400 ) );
    422422                }
    423423                $this->skin->feedback( 'installing_package' );
    424424
     
    451451                if ( 1 == count( $source_files ) && $wp_filesystem->is_dir( trailingslashit( $args['source'] ) . $source_files[0] . '/' ) ) { //Only one folder? Then we want its contents.
    452452                        $source = trailingslashit( $args['source'] ) . trailingslashit( $source_files[0] );
    453453                } elseif ( count( $source_files ) == 0 ) {
    454                         return new WP_Error( 'incompatible_archive_empty', $this->strings['incompatible_archive'], $this->strings['no_files'] ); // There are no files?
     454                        return new WP_Error( 'incompatible_archive_empty', $this->strings['incompatible_archive'], array( 'status' => 500, 'error' => $this->strings['no_files'] ) ); // There are no files?
    455455                } else { // It's only a single file, the upgrader will use the folder name of this file as the destination folder. Folder name is based on zip filename.
    456456                        $source = trailingslashit( $args['source'] );
    457457                }
     
    523523                        $_files = $wp_filesystem->dirlist($remote_destination);
    524524                        if ( ! empty($_files) ) {
    525525                                $wp_filesystem->delete($remote_source, true); //Clear out the source files.
    526                                 return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination );
     526                                return new WP_Error( 'folder_exists', $this->strings['folder_exists'], array( 'status' => 500, 'error' => $remote_destination ) );
    527527                        }
    528528                }
    529529
     
    530530                //Create destination if needed
    531531                if ( ! $wp_filesystem->exists( $remote_destination ) ) {
    532532                        if ( ! $wp_filesystem->mkdir( $remote_destination, FS_CHMOD_DIR ) ) {
    533                                 return new WP_Error( 'mkdir_failed_destination', $this->strings['mkdir_failed'], $remote_destination );
     533                                return new WP_Error( 'mkdir_failed_destination', $this->strings['mkdir_failed'], array( 'status' => 500, 'error' => $remote_destination ) );
    534534                        }
    535535                }
    536536                // Copy new version of item into place.
     
    11101110                }
    11111111
    11121112                if ( ! $plugins_found )
    1113                         return new WP_Error( 'incompatible_archive_no_plugins', $this->strings['incompatible_archive'], __( 'No valid plugins were found.' ) );
     1113                        return new WP_Error( 'incompatible_archive_no_plugins', $this->strings['incompatible_archive'], array( 'status' => 404, 'error' => __( 'No valid plugins were found.' ) ) );
    11141114
    11151115                return $source;
    11161116        }
     
    11641164
    11651165                $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : '';
    11661166                if ( empty($plugin) )
    1167                         return new WP_Error('bad_request', $this->strings['bad_request']);
     1167                        return new WP_Error( 'bad_request', $this->strings['bad_request'], array( 'status' => 400 ) );
    11681168
    11691169                if ( is_plugin_active($plugin) ) {
    11701170                        //Deactivate the plugin silently, Prevent deactivation hooks from running.
     
    11991199
    12001200                $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : '';
    12011201                if ( empty($plugin) )
    1202                         return new WP_Error('bad_request', $this->strings['bad_request']);
     1202                        return new WP_Error( 'bad_request', $this->strings['bad_request'], array( 'status' => 400 ) );
    12031203
    12041204                $plugins_dir = $wp_filesystem->wp_plugins_dir();
    12051205                $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) );
     
    12141214                        $deleted = $wp_filesystem->delete($plugins_dir . $plugin);
    12151215
    12161216                if ( ! $deleted )
    1217                         return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']);
     1217                        return new WP_Error( 'remove_old_failed', $this->strings['remove_old_failed'], array( 'status' => 500 ) );
    12181218
    12191219                return true;
    12201220        }
     
    16531653                // A proper archive should have a style.css file in the single subdirectory
    16541654                if ( ! file_exists( $working_directory . 'style.css' ) ) {
    16551655                        return new WP_Error( 'incompatible_archive_theme_no_style', $this->strings['incompatible_archive'],
    1656                                 /* translators: %s: style.css */
    1657                                 sprintf( __( 'The theme is missing the %s stylesheet.' ),
    1658                                         '<code>style.css</code>'
     1656                                array(
     1657                                        /* translators: %s: style.css */
     1658                                        'error' => sprintf( __( 'The theme is missing the %s stylesheet.' ),
     1659                                                '<code>style.css</code>'
     1660                                        ),
     1661                                        'status' => 500,
    16591662                                )
    16601663                        );
    16611664                }
     
    16641667
    16651668                if ( empty( $info['Name'] ) ) {
    16661669                        return new WP_Error( 'incompatible_archive_theme_no_name', $this->strings['incompatible_archive'],
    1667                                 /* translators: %s: style.css */
    1668                                 sprintf( __( 'The %s stylesheet doesn&#8217;t contain a valid theme header.' ),
    1669                                         '<code>style.css</code>'
     1670                                array(
     1671                                        /* translators: %s: style.css */
     1672                                        'error' => sprintf( __( 'The %s stylesheet doesn&#8217;t contain a valid theme header.' ),
     1673                                                '<code>style.css</code>'
     1674                                        ),
     1675                                        'status' => 500,
    16701676                                )
    16711677                        );
    16721678                }
     
    16741680                // If it's not a child theme, it must have at least an index.php to be legit.
    16751681                if ( empty( $info['Template'] ) && ! file_exists( $working_directory . 'index.php' ) ) {
    16761682                        return new WP_Error( 'incompatible_archive_theme_no_index', $this->strings['incompatible_archive'],
    1677                                 /* translators: %s: index.php */
    1678                                 sprintf( __( 'The theme is missing the %s file.' ),
    1679                                         '<code>index.php</code>'
     1683                                array(
     1684                                        /* translators: %s: index.php */
     1685                                        'error' => sprintf( __( 'The theme is missing the %s file.' ),
     1686                                                '<code>index.php</code>'
     1687                                        ),
     1688                                        'status' => 500,
    16801689                                )
    16811690                        );
    16821691                }
     
    20222031                $remote_destination = $wp_filesystem->find_folder( WP_LANG_DIR );
    20232032                if ( ! $wp_filesystem->exists( $remote_destination ) )
    20242033                        if ( ! $wp_filesystem->mkdir( $remote_destination, FS_CHMOD_DIR ) )
    2025                                 return new WP_Error( 'mkdir_failed_lang_dir', $this->strings['mkdir_failed'], $remote_destination );
     2034                                return new WP_Error( 'mkdir_failed_lang_dir', $this->strings['mkdir_failed'], array( 'status' => 500, 'error' => $remote_destination ) );
    20262035
    20272036                foreach ( $language_updates as $language_update ) {
    20282037
     
    21062115
    21072116                if ( ! $mo || ! $po ) {
    21082117                        return new WP_Error( 'incompatible_archive_pomo', $this->strings['incompatible_archive'],
    2109                                 /* translators: 1: .po 2: .mo */
    2110                                 sprintf( __( 'The language pack is missing either the %1$s or %2$s files.' ),
    2111                                         '<code>.po</code>',
    2112                                         '<code>.mo</code>'
     2118                                array(
     2119                                        /* translators: 1: .po 2: .mo */
     2120                                        'error' => sprintf( __( 'The language pack is missing either the %1$s or %2$s files.' ),
     2121                                                '<code>.po</code>',
     2122                                                '<code>.mo</code>'
     2123                                        ),
     2124                                        'status' => 500,
    21132125                                )
    21142126                        );
    21152127                }
     
    22192231
    22202232                // Is an update available?
    22212233                if ( !isset( $current->response ) || $current->response == 'latest' )
    2222                         return new WP_Error('up_to_date', $this->strings['up_to_date']);
     2234                        return new WP_Error( 'up_to_date', $this->strings['up_to_date'], array( 'status' => 400 ) );
    22232235
    22242236                $res = $this->fs_connect( array( ABSPATH, WP_CONTENT_DIR ), $parsed_args['allow_relaxed_file_ownership'] );
    22252237                if ( ! $res || is_wp_error( $res ) ) {
     
    22632275                // Copy update-core.php from the new version into place.
    22642276                if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) {
    22652277                        $wp_filesystem->delete($working_dir, true);
    2266                         return new WP_Error( 'copy_failed_for_update_core_file', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), 'wp-admin/includes/update-core.php' );
     2278                        return new WP_Error( 'copy_failed_for_update_core_file', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), array( 'status' => 500, 'error' => 'wp-admin/includes/update-core.php' ) );
    22672279                }
    22682280                $wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE);
    22692281
     
    22702282                require_once( ABSPATH . 'wp-admin/includes/update-core.php' );
    22712283
    22722284                if ( ! function_exists( 'update_core' ) )
    2273                         return new WP_Error( 'copy_failed_space', $this->strings['copy_failed_space'] );
     2285                        return new WP_Error( 'copy_failed_space', $this->strings['copy_failed_space'], array( 'status' => 500 ) );
    22742286
    22752287                $result = update_core( $working_dir, $wp_dir );
    22762288
  • src/wp-admin/includes/file.php

     
    479479function download_url( $url, $timeout = 300 ) {
    480480        //WARNING: The file is not automatically deleted, The script must unlink() the file.
    481481        if ( ! $url )
    482                 return new WP_Error('http_no_url', __('Invalid URL Provided.'));
     482                return new WP_Error( 'http_no_url', __('Invalid URL Provided.'), array( 'status' => 500 ) );
    483483
    484484        $tmpfname = wp_tempnam($url);
    485485        if ( ! $tmpfname )
    486                 return new WP_Error('http_no_file', __('Could not create Temporary file.'));
     486                return new WP_Error( 'http_no_file', __('Could not create Temporary file.'), array( 'status' => 500 ) );
    487487
    488488        $response = wp_safe_remote_get( $url, array( 'timeout' => $timeout, 'stream' => true, 'filename' => $tmpfname ) );
    489489
     
    494494
    495495        if ( 200 != wp_remote_retrieve_response_code( $response ) ){
    496496                unlink( $tmpfname );
    497                 return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ) );
     497                return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ), array( 'status' => 404 ) );
    498498        }
    499499
    500500        $content_md5 = wp_remote_retrieve_header( $response, 'content-md5' );
     
    531531        if ( $file_md5 === $expected_raw_md5 )
    532532                return true;
    533533
    534         return new WP_Error( 'md5_mismatch', sprintf( __( 'The checksum of the file (%1$s) does not match the expected checksum value (%2$s).' ), bin2hex( $file_md5 ), bin2hex( $expected_raw_md5 ) ) );
     534        return new WP_Error( 'md5_mismatch', sprintf( __( 'The checksum of the file (%1$s) does not match the expected checksum value (%2$s).' ), array( 'status' => 500, 'error' => bin2hex( $file_md5 ), bin2hex( $expected_raw_md5 ) ) ) );
    535535}
    536536
    537537/**
     
    553553        global $wp_filesystem;
    554554
    555555        if ( ! $wp_filesystem || !is_object($wp_filesystem) )
    556                 return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
     556                return new WP_Error( 'fs_unavailable', __('Could not access filesystem.'), array( 'status' => 500 ) );
    557557
    558558        // Unzip can use a lot of memory, but not this much hopefully
    559559        /** This filter is documented in wp-admin/admin.php */
     
    622622
    623623        $zopen = $z->open( $file, ZIPARCHIVE::CHECKCONS );
    624624        if ( true !== $zopen )
    625                 return new WP_Error( 'incompatible_archive', __( 'Incompatible Archive.' ), array( 'ziparchive_error' => $zopen ) );
     625                return new WP_Error( 'incompatible_archive', __( 'Incompatible Archive.' ), array( 'status' => 500, 'ziparchive_error' => $zopen ) );
    626626
    627627        $uncompressed_size = 0;
    628628
    629629        for ( $i = 0; $i < $z->numFiles; $i++ ) {
    630630                if ( ! $info = $z->statIndex($i) )
    631                         return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ) );
     631                        return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ), array( 'status' => 500 ) );
    632632
    633633                if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Skip the OS X-created __MACOSX directory
    634634                        continue;
     
    649649        if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
    650650                $available_space = @disk_free_space( WP_CONTENT_DIR );
    651651                if ( $available_space && ( $uncompressed_size * 2.1 ) > $available_space )
    652                         return new WP_Error( 'disk_full_unzip_file', __( 'Could not copy files. You may have run out of disk space.' ), compact( 'uncompressed_size', 'available_space' ) );
     652                        return new WP_Error( 'disk_full_unzip_file', __( 'Could not copy files. You may have run out of disk space.' ), array( 'status' => 507, 'error' => compact( 'uncompressed_size', 'available_space' ) ) );
    653653        }
    654654
    655655        $needed_dirs = array_unique($needed_dirs);
     
    672672        foreach ( $needed_dirs as $_dir ) {
    673673                // Only check to see if the Dir exists upon creation failure. Less I/O this way.
    674674                if ( ! $wp_filesystem->mkdir( $_dir, FS_CHMOD_DIR ) && ! $wp_filesystem->is_dir( $_dir ) ) {
    675                         return new WP_Error( 'mkdir_failed_ziparchive', __( 'Could not create directory.' ), substr( $_dir, strlen( $to ) ) );
     675                        return new WP_Error( 'mkdir_failed_ziparchive', __( 'Could not create directory.' ), array( 'status' => 500, 'error' => substr( $_dir, strlen( $to ) ) ) );
    676676                }
    677677        }
    678678        unset($needed_dirs);
     
    679679
    680680        for ( $i = 0; $i < $z->numFiles; $i++ ) {
    681681                if ( ! $info = $z->statIndex($i) )
    682                         return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ) );
     682                        return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ), array( 'status' => 500 ) );
    683683
    684684                if ( '/' == substr($info['name'], -1) ) // directory
    685685                        continue;
     
    689689
    690690                $contents = $z->getFromIndex($i);
    691691                if ( false === $contents )
    692                         return new WP_Error( 'extract_failed_ziparchive', __( 'Could not extract file from archive.' ), $info['name'] );
     692                        return new WP_Error( 'extract_failed_ziparchive', __( 'Could not extract file from archive.' ), $info['name'], array( 'status' => 500 ) );
    693693
    694694                if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) )
    695                         return new WP_Error( 'copy_failed_ziparchive', __( 'Could not copy file.' ), $info['name'] );
     695                        return new WP_Error( 'copy_failed_ziparchive', __( 'Could not copy file.' ), $info['name'], array( 'status' => 500 ) );
    696696        }
    697697
    698698        $z->close();
     
    730730
    731731        // Is the archive valid?
    732732        if ( !is_array($archive_files) )
    733                 return new WP_Error('incompatible_archive', __('Incompatible Archive.'), $archive->errorInfo(true));
     733                return new WP_Error( 'incompatible_archive', __('Incompatible Archive.'), array( 'status' => 500, 'error' => $archive->errorInfo(true) ) );
    734734
    735735        if ( 0 == count($archive_files) )
    736                 return new WP_Error( 'empty_archive_pclzip', __( 'Empty archive.' ) );
     736                return new WP_Error( 'empty_archive_pclzip', __( 'Empty archive.' ), array( 'status' => 500 ) );
    737737
    738738        $uncompressed_size = 0;
    739739
     
    755755        if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
    756756                $available_space = @disk_free_space( WP_CONTENT_DIR );
    757757                if ( $available_space && ( $uncompressed_size * 2.1 ) > $available_space )
    758                         return new WP_Error( 'disk_full_unzip_file', __( 'Could not copy files. You may have run out of disk space.' ), compact( 'uncompressed_size', 'available_space' ) );
     758                        return new WP_Error( 'disk_full_unzip_file', __( 'Could not copy files. You may have run out of disk space.' ), array( 'status' => 500, 'error' => compact( 'uncompressed_size', 'available_space' ) ) );
    759759        }
    760760
    761761        $needed_dirs = array_unique($needed_dirs);
     
    778778        foreach ( $needed_dirs as $_dir ) {
    779779                // Only check to see if the dir exists upon creation failure. Less I/O this way.
    780780                if ( ! $wp_filesystem->mkdir( $_dir, FS_CHMOD_DIR ) && ! $wp_filesystem->is_dir( $_dir ) )
    781                         return new WP_Error( 'mkdir_failed_pclzip', __( 'Could not create directory.' ), substr( $_dir, strlen( $to ) ) );
     781                        return new WP_Error( 'mkdir_failed_pclzip', __( 'Could not create directory.' ), array( 'status' => 500, 'error' => substr( $_dir, strlen( $to ) ) ) );
    782782        }
    783783        unset($needed_dirs);
    784784
     
    791791                        continue;
    792792
    793793                if ( ! $wp_filesystem->put_contents( $to . $file['filename'], $file['content'], FS_CHMOD_FILE) )
    794                         return new WP_Error( 'copy_failed_pclzip', __( 'Could not copy file.' ), $file['filename'] );
     794                        return new WP_Error( 'copy_failed_pclzip', __( 'Could not copy file.' ), $file['filename'], array( 'status' => 500 ) );
    795795        }
    796796        return true;
    797797}
     
    826826                                // If copy failed, chmod file to 0644 and try again.
    827827                                $wp_filesystem->chmod( $to . $filename, FS_CHMOD_FILE );
    828828                                if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) )
    829                                         return new WP_Error( 'copy_failed_copy_dir', __( 'Could not copy file.' ), $to . $filename );
     829                                        return new WP_Error( 'copy_failed_copy_dir', __( 'Could not copy file.' ), array( 'status' => 500, 'error' => $to . $filename ) );
    830830                        }
    831831                } elseif ( 'd' == $fileinfo['type'] ) {
    832832                        if ( !$wp_filesystem->is_dir($to . $filename) ) {
    833833                                if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) )
    834                                         return new WP_Error( 'mkdir_failed_copy_dir', __( 'Could not create directory.' ), $to . $filename );
     834                                        return new WP_Error( 'mkdir_failed_copy_dir', __( 'Could not create directory.' ), array( 'status' => 500, 'error' => $to . $filename ) );
    835835                        }
    836836
    837837                        // generate the $sub_skip_list for the subdirectory as a sub-set of the existing $skip_list
  • src/wp-admin/includes/media.php

     
    278278        $file = wp_handle_upload($_FILES[$file_id], $overrides, $time);
    279279
    280280        if ( isset($file['error']) )
    281                 return new WP_Error( 'upload_error', $file['error'] );
     281                return new WP_Error( 'upload_error', $file['error'], array( 'status' => 500 ) );
    282282
    283283        $name_parts = pathinfo($name);
    284284        $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) );
     
    397397
    398398        $file = wp_handle_sideload( $file_array, $overrides, $time );
    399399        if ( isset($file['error']) )
    400                 return new WP_Error( 'upload_error', $file['error'] );
     400                return new WP_Error( 'upload_error', $file['error'], array( 'status' => 500 ) );
    401401
    402402        $url = $file['url'];
    403403        $type = $file['type'];
     
    851851                // Set variables for storage, fix file filename for query strings.
    852852                preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
    853853                if ( ! $matches ) {
    854                         return new WP_Error( 'image_sideload_failed', __( 'Invalid image URL' ) );
     854                        return new WP_Error( 'image_sideload_failed', __( 'Invalid image URL' ), array( 'status' => 404 ) );
    855855                }
    856856
    857857                $file_array = array();
     
    887887                $html = "<img src='$src' alt='$alt' />";
    888888                return $html;
    889889        } else {
    890                 return new WP_Error( 'image_sideload_failed' );
     890                return new WP_Error( 'image_sideload_failed', null, array( 'status' => 500 ) );
    891891        }
    892892}
    893893
  • src/wp-admin/includes/nav-menu.php

     
    906906                                /* translators: %s: walker class name */
    907907                                sprintf( __( 'The Walker class named %s does not exist.' ),
    908908                                        '<strong>' . $walker_class_name . '</strong>'
    909                                 )
     909                                ),
     910                                array( 'status' => 500 )
    910911                        );
    911912                }
    912913
  • src/wp-admin/includes/plugin.php

     
    601601
    602602                if ( ob_get_length() > 0 ) {
    603603                        $output = ob_get_clean();
    604                         return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output);
     604                        return new WP_Error( 'unexpected_output', __('The plugin generated unexpected output.'), array( 'status' => 500, 'error' => $output ) );
    605605                }
    606606                ob_end_clean();
    607607        }
     
    738738        }
    739739
    740740        if ( !empty($errors) )
    741                 return new WP_Error('plugins_invalid', __('One of the plugins is invalid.'), $errors);
     741                return new WP_Error( 'plugins_invalid', __('One of the plugins is invalid.'), array( 'status' => 500, 'error' => $errors ) );
    742742
    743743        return true;
    744744}
     
    793793        }
    794794
    795795        if ( ! is_object($wp_filesystem) )
    796                 return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
     796                return new WP_Error( 'fs_unavailable', __('Could not access filesystem.'), array( 'status' => 500 ) );
    797797
    798798        if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
    799                 return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors);
     799                return new WP_Error( 'fs_error', __('Filesystem error.'), array( 'status' => 500, 'error' => $wp_filesystem->errors ) );
    800800
    801801        // Get the base plugin folder.
    802802        $plugins_dir = $wp_filesystem->wp_plugins_dir();
    803803        if ( empty( $plugins_dir ) ) {
    804                 return new WP_Error( 'fs_no_plugins_dir', __( 'Unable to locate WordPress Plugin directory.' ) );
     804                return new WP_Error( 'fs_no_plugins_dir', __( 'Unable to locate WordPress Plugin directory.' ), array( 'status' => 404 ) );
    805805        }
    806806
    807807        $plugins_dir = trailingslashit( $plugins_dir );
     
    874874        }
    875875
    876876        if ( ! empty($errors) )
    877                 return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s.'), implode(', ', $errors)) );
     877                return new WP_Error( 'could_not_remove_plugin', sprintf( __( 'Could not fully remove the plugin(s) %s.' ), implode( ', ', $errors ) ), array( 'status' => 500 ) );
    878878
    879879        return true;
    880880}
     
    929929 */
    930930function validate_plugin($plugin) {
    931931        if ( validate_file($plugin) )
    932                 return new WP_Error('plugin_invalid', __('Invalid plugin path.'));
     932                return new WP_Error( 'plugin_invalid', __( 'Invalid plugin path.' ), array( 'status' => 500 ) );
    933933        if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
    934                 return new WP_Error('plugin_not_found', __('Plugin file does not exist.'));
     934                return new WP_Error( 'plugin_not_found', __( 'Plugin file does not exist.' ), array( 'status' => 500 ) );
    935935
    936936        $installed_plugins = get_plugins();
    937937        if ( ! isset($installed_plugins[$plugin]) )
    938                 return new WP_Error('no_plugin_header', __('The plugin does not have a valid header.'));
     938                return new WP_Error( 'no_plugin_header', __( 'The plugin does not have a valid header.' ), array( 'status' => 500 ) );
    939939        return 0;
    940940}
    941941
  • src/wp-admin/includes/post.php

     
    3030
    3131        if ( $update && ! current_user_can( 'edit_post', $post_data['ID'] ) ) {
    3232                if ( 'page' == $post_data['post_type'] )
    33                         return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ) );
     33                        return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ), array( 'status' => 403 ) );
    3434                else
    35                         return new WP_Error( 'edit_others_posts', __( 'You are not allowed to edit posts as this user.' ) );
     35                        return new WP_Error( 'edit_others_posts', __( 'You are not allowed to edit posts as this user.' ), array( 'status' => 403 ) );
    3636        } elseif ( ! $update && ! current_user_can( $ptype->cap->create_posts ) ) {
    3737                if ( 'page' == $post_data['post_type'] )
    38                         return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) );
     38                        return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ), array( 'status' => 403 ) );
    3939                else
    40                         return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ) );
     40                        return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ), array( 'status' => 403 ) );
    4141        }
    4242
    4343        if ( isset( $post_data['content'] ) )
     
    6868                 && ! current_user_can( $ptype->cap->edit_others_posts ) ) {
    6969                if ( $update ) {
    7070                        if ( 'page' == $post_data['post_type'] )
    71                                 return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ) );
     71                                return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ), array( 'status' => 403 ) );
    7272                        else
    73                                 return new WP_Error( 'edit_others_posts', __( 'You are not allowed to edit posts as this user.' ) );
     73                                return new WP_Error( 'edit_others_posts', __( 'You are not allowed to edit posts as this user.' ), array( 'status' => 403 ) );
    7474                } else {
    7575                        if ( 'page' == $post_data['post_type'] )
    76                                 return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) );
     76                                return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ), array( 'status' => 403 ) );
    7777                        else
    78                                 return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ) );
     78                                return new WP_Error( 'edit_others_posts', __( 'You are not allowed to create posts as this user.' ), array( 'status' => 403 ) );
    7979                }
    8080        }
    8181
     
    160160                $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
    161161                $valid_date = wp_checkdate( $mm, $jj, $aa, $post_data['post_date'] );
    162162                if ( !$valid_date ) {
    163                         return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
     163                        return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ), array( 'status' => 500 ) );
    164164                }
    165165                $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
    166166        }
     
    714714
    715715        if ( !current_user_can( $ptype->cap->edit_posts ) ) {
    716716                if ( 'page' == $ptype->name )
    717                         return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this site.' ) );
     717                        return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this site.' ), array( 'status' => 403 ) );
    718718                else
    719                         return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this site.' ) );
     719                        return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this site.' ), array( 'status' => 403 ) );
    720720        }
    721721
    722722        $_POST['post_mime_type'] = '';
     
    17681768        $post_data['ID'] = $post_data['post_ID'] = $post_id;
    17691769
    17701770        if ( false === wp_verify_nonce( $post_data['_wpnonce'], 'update-post_' . $post_id ) ) {
    1771                 return new WP_Error( 'invalid_nonce', __( 'Error while saving.' ) );
     1771                return new WP_Error( 'invalid_nonce', __( 'Error while saving.' ), array( 'status' => 403 ) );
    17721772        }
    17731773
    17741774        $post = get_post( $post_id );
    17751775
    17761776        if ( ! current_user_can( 'edit_post', $post->ID ) ) {
    1777                 return new WP_Error( 'edit_posts', __( 'You are not allowed to edit this item.' ) );
     1777                return new WP_Error( 'edit_posts', __( 'You are not allowed to edit this item.' ), array( 'status' => 403 ) );
    17781778        }
    17791779
    17801780        if ( 'auto-draft' == $post->post_status )
  • src/wp-admin/includes/schema.php

     
    11031103
    11041104                        $msg .= '<p>' . __( 'You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.' ) . '</p>';
    11051105
    1106                         return new WP_Error( 'no_wildcard_dns', $msg );
     1106                        return new WP_Error( 'no_wildcard_dns', $msg, array( 'status' => 500 ) );
    11071107                }
    11081108        }
    11091109
  • src/wp-admin/includes/taxonomy.php

     
    113113                if ( ! $wp_error ) {
    114114                        return 0;
    115115                } else {
    116                         return new WP_Error( 'cat_name', __( 'You did not enter a category name.' ) );
     116                        return new WP_Error( 'cat_name', __( 'You did not enter a category name.' ), array( 'status' => 500 ) );
    117117                }
    118118        }
    119119
  • src/wp-admin/includes/theme.php

     
    5252        }
    5353
    5454        if ( ! is_object($wp_filesystem) )
    55                 return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
     55                return new WP_Error( 'fs_unavailable', __( 'Could not access filesystem.' ), array( 'status' => 500 ) );
    5656
    5757        if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
    58                 return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors);
     58                return new WP_Error( 'fs_error', __( 'Filesystem error.' ), array( 'status' => 500, 'error' => $wp_filesystem->errors ) );
    5959
    6060        // Get the base plugin folder.
    6161        $themes_dir = $wp_filesystem->wp_themes_dir();
    6262        if ( empty( $themes_dir ) ) {
    63                 return new WP_Error( 'fs_no_themes_dir', __( 'Unable to locate WordPress theme directory.' ) );
     63                return new WP_Error( 'fs_no_themes_dir', __( 'Unable to locate WordPress theme directory.' ), array( 'status' => 500 ) );
    6464        }
    6565
    6666        $themes_dir = trailingslashit( $themes_dir );
     
    6868        $deleted = $wp_filesystem->delete( $theme_dir, true );
    6969
    7070        if ( ! $deleted ) {
    71                 return new WP_Error( 'could_not_remove_theme', sprintf( __( 'Could not fully remove the theme %s.' ), $stylesheet ) );
     71                return new WP_Error( 'could_not_remove_theme', sprintf( __( 'Could not fully remove the theme %s.' ), $stylesheet ), array( 'status' => 500 ) );
    7272        }
    7373
    7474        $theme_translations = wp_get_installed_translations( 'themes' );
  • src/wp-admin/includes/update-core.php

     
    831831        }
    832832        if ( ! $distro ) {
    833833                $wp_filesystem->delete( $from, true );
    834                 return new WP_Error( 'insane_distro', __('The update could not be unpacked') );
     834                return new WP_Error( 'insane_distro', __('The update could not be unpacked'), array( 'status' => 500 ) );
    835835        }
    836836
    837837
     
    848848        $versions_file = trailingslashit( $wp_filesystem->wp_content_dir() ) . 'upgrade/version-current.php';
    849849        if ( ! $wp_filesystem->copy( $from . $distro . 'wp-includes/version.php', $versions_file ) ) {
    850850                $wp_filesystem->delete( $from, true );
    851                 return new WP_Error( 'copy_failed_for_version_file', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), 'wp-includes/version.php' );
     851                return new WP_Error( 'copy_failed_for_version_file', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), array( 'status' => 500, 'error' => 'wp-includes/version.php' ) );
    852852        }
    853853
    854854        $wp_filesystem->chmod( $versions_file, FS_CHMOD_FILE );
     
    869869                $wp_filesystem->delete($from, true);
    870870
    871871        if ( !$mysql_compat && !$php_compat )
    872                 return new WP_Error( 'php_mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ) );
     872                return new WP_Error( 'php_mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ), array( 'status' => 500 ) );
    873873        elseif ( !$php_compat )
    874                 return new WP_Error( 'php_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ) );
     874                return new WP_Error( 'php_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ), array( 'status' => 500 ) );
    875875        elseif ( !$mysql_compat )
    876                 return new WP_Error( 'mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ) );
     876                return new WP_Error( 'mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ), array( 'status' => 500 ) );
    877877
    878878        /** This filter is documented in wp-admin/includes/update-core.php */
    879879        apply_filters( 'update_feedback', __( 'Preparing to install the latest version&#8230;' ) );
     
    923923                        $error_data = version_compare( $old_wp_version, '3.7-beta2', '>' ) ? array_keys( $files_not_writable ) : '';
    924924
    925925                        if ( $files_not_writable )
    926                                 return new WP_Error( 'files_not_writable', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), implode( ', ', $error_data ) );
     926                                return new WP_Error( 'files_not_writable', __( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ), array( 'status' => 500, 'error' => implode( ', ', $error_data ) ) );
    927927                }
    928928        }
    929929
     
    11591159                                // If copy failed, chmod file to 0644 and try again.
    11601160                                $wp_filesystem->chmod( $to . $filename, FS_CHMOD_FILE );
    11611161                                if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) )
    1162                                         return new WP_Error( 'copy_failed__copy_dir', __( 'Could not copy file.' ), $to . $filename );
     1162                                        return new WP_Error( 'copy_failed__copy_dir', __( 'Could not copy file.' ), array( 'status' => 500, 'error' => $to . $filename ) );
    11631163                        }
    11641164                } elseif ( 'd' == $fileinfo['type'] ) {
    11651165                        if ( !$wp_filesystem->is_dir($to . $filename) ) {
    11661166                                if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) )
    1167                                         return new WP_Error( 'mkdir_failed__copy_dir', __( 'Could not create directory.' ), $to . $filename );
     1167                                        return new WP_Error( 'mkdir_failed__copy_dir', __( 'Could not create directory.' ), array( 'status' => 500, 'error' => $to . $filename ) );
    11681168                        }
    11691169
    11701170                        /*