Filesystem API: Output buffering for request_filesystem_credentials() should wrap the function directly.

Previously `ob_end_clean()` was only called when the previous condition was successful which led to unexpected results when another output buffering was involved, like PHPUnit's.

Fixes #37488.

git-svn-id: https://develop.svn.wordpress.org/trunk@38167 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dominik Schilling 2016-07-27 17:09:27 +00:00
parent 3b28231001
commit d097c1d916
3 changed files with 28 additions and 19 deletions

View File

@ -3515,12 +3515,13 @@ function wp_ajax_delete_theme() {
wp_send_json_error( $status );
}
// Check filesystem credentials. `delete_plugins()` will bail otherwise.
ob_start();
// Check filesystem credentials. `delete_theme()` will bail otherwise.
$url = wp_nonce_url( 'themes.php?action=delete&stylesheet=' . urlencode( $stylesheet ), 'delete-theme_' . $stylesheet );
if ( false === ( $credentials = request_filesystem_credentials( $url ) ) || ! WP_Filesystem( $credentials ) ) {
global $wp_filesystem;
ob_start();
$credentials = request_filesystem_credentials( $url );
ob_end_clean();
if ( false === $credentials || ! WP_Filesystem( $credentials ) ) {
global $wp_filesystem;
$status['errorCode'] = 'unable_to_connect_to_filesystem';
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
@ -3771,11 +3772,12 @@ function wp_ajax_delete_plugin() {
}
// Check filesystem credentials. `delete_plugins()` will bail otherwise.
ob_start();
$url = wp_nonce_url( 'plugins.php?action=delete-selected&verify-delete=1&checked[]=' . $plugin, 'bulk-plugins' );
if ( false === ( $credentials = request_filesystem_credentials( $url ) ) || ! WP_Filesystem( $credentials ) ) {
global $wp_filesystem;
ob_start();
$credentials = request_filesystem_credentials( $url );
ob_end_clean();
if ( false === $credentials || ! WP_Filesystem( $credentials ) ) {
global $wp_filesystem;
$status['errorCode'] = 'unable_to_connect_to_filesystem';
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );

View File

@ -782,11 +782,13 @@ function delete_plugins( $plugins, $deprecated = '' ) {
foreach ( $plugins as $plugin )
$checked[] = 'checked[]=' . $plugin;
ob_start();
$url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-plugins');
if ( false === ($credentials = request_filesystem_credentials($url)) ) {
ob_start();
$credentials = request_filesystem_credentials( $url );
$data = ob_get_clean();
if ( false === $credentials ) {
if ( ! empty($data) ){
include_once( ABSPATH . 'wp-admin/admin-header.php');
echo $data;
@ -797,7 +799,8 @@ function delete_plugins( $plugins, $deprecated = '' ) {
}
if ( ! WP_Filesystem( $credentials ) ) {
request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again
ob_start();
request_filesystem_credentials( $url, '', true ); // Failed to connect, Error and request again.
$data = ob_get_clean();
if ( ! empty($data) ){

View File

@ -23,12 +23,15 @@ function delete_theme($stylesheet, $redirect = '') {
if ( empty($stylesheet) )
return false;
ob_start();
if ( empty( $redirect ) )
if ( empty( $redirect ) ) {
$redirect = wp_nonce_url('themes.php?action=delete&stylesheet=' . urlencode( $stylesheet ), 'delete-theme_' . $stylesheet);
if ( false === ($credentials = request_filesystem_credentials($redirect)) ) {
}
ob_start();
$credentials = request_filesystem_credentials( $redirect );
$data = ob_get_clean();
if ( false === $credentials ) {
if ( ! empty( $data ) ){
include_once( ABSPATH . 'wp-admin/admin-header.php');
echo $data;
@ -39,7 +42,8 @@ function delete_theme($stylesheet, $redirect = '') {
}
if ( ! WP_Filesystem( $credentials ) ) {
request_filesystem_credentials($redirect, '', true); // Failed to connect, Error and request again
ob_start();
request_filesystem_credentials( $redirect, '', true ); // Failed to connect, Error and request again.
$data = ob_get_clean();
if ( ! empty($data) ) {