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:
parent
3b28231001
commit
d097c1d916
|
@ -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 ) ) {
|
||||
ob_start();
|
||||
$credentials = request_filesystem_credentials( $url );
|
||||
ob_end_clean();
|
||||
if ( false === $credentials || ! WP_Filesystem( $credentials ) ) {
|
||||
global $wp_filesystem;
|
||||
ob_end_clean();
|
||||
|
||||
$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 ) ) {
|
||||
ob_start();
|
||||
$credentials = request_filesystem_credentials( $url );
|
||||
ob_end_clean();
|
||||
if ( false === $credentials || ! WP_Filesystem( $credentials ) ) {
|
||||
global $wp_filesystem;
|
||||
ob_end_clean();
|
||||
|
||||
$status['errorCode'] = 'unable_to_connect_to_filesystem';
|
||||
$status['errorMessage'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
|
||||
|
|
|
@ -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)) ) {
|
||||
$data = ob_get_clean();
|
||||
|
||||
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;
|
||||
|
@ -796,8 +798,9 @@ function delete_plugins( $plugins, $deprecated = '' ) {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( ! WP_Filesystem($credentials) ) {
|
||||
request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again
|
||||
if ( ! WP_Filesystem( $credentials ) ) {
|
||||
ob_start();
|
||||
request_filesystem_credentials( $url, '', true ); // Failed to connect, Error and request again.
|
||||
$data = ob_get_clean();
|
||||
|
||||
if ( ! empty($data) ){
|
||||
|
|
|
@ -23,13 +23,16 @@ 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)) ) {
|
||||
$data = ob_get_clean();
|
||||
}
|
||||
|
||||
if ( ! empty($data) ){
|
||||
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;
|
||||
include( ABSPATH . 'wp-admin/admin-footer.php');
|
||||
|
@ -38,8 +41,9 @@ function delete_theme($stylesheet, $redirect = '') {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( ! WP_Filesystem($credentials) ) {
|
||||
request_filesystem_credentials($redirect, '', true); // Failed to connect, Error and request again
|
||||
if ( ! WP_Filesystem( $credentials ) ) {
|
||||
ob_start();
|
||||
request_filesystem_credentials( $redirect, '', true ); // Failed to connect, Error and request again.
|
||||
$data = ob_get_clean();
|
||||
|
||||
if ( ! empty($data) ) {
|
||||
|
|
Loading…
Reference in New Issue