Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-admin/includes
File: class-wp-automatic-updater.php
$upgrader->maintenance_mode( true );
[500] Fix | Delete
}
[501] Fix | Delete
[502] Fix | Delete
// If the filesystem is unavailable, false is returned.
[503] Fix | Delete
if ( false === $upgrade_result ) {
[504] Fix | Delete
$upgrade_result = new WP_Error( 'fs_unavailable', __( 'Could not access filesystem.' ) );
[505] Fix | Delete
}
[506] Fix | Delete
[507] Fix | Delete
if ( 'core' === $type ) {
[508] Fix | Delete
if ( is_wp_error( $upgrade_result )
[509] Fix | Delete
&& ( 'up_to_date' === $upgrade_result->get_error_code()
[510] Fix | Delete
|| 'locked' === $upgrade_result->get_error_code() )
[511] Fix | Delete
) {
[512] Fix | Delete
// Allow visitors to browse the site again.
[513] Fix | Delete
$upgrader->maintenance_mode( false );
[514] Fix | Delete
[515] Fix | Delete
/*
[516] Fix | Delete
* These aren't actual errors, treat it as a skipped-update instead
[517] Fix | Delete
* to avoid triggering the post-core update failure routines.
[518] Fix | Delete
*/
[519] Fix | Delete
return false;
[520] Fix | Delete
}
[521] Fix | Delete
[522] Fix | Delete
// Core doesn't output this, so let's append it, so we don't get confused.
[523] Fix | Delete
if ( is_wp_error( $upgrade_result ) ) {
[524] Fix | Delete
$upgrade_result->add( 'installation_failed', __( 'Installation failed.' ) );
[525] Fix | Delete
$skin->error( $upgrade_result );
[526] Fix | Delete
} else {
[527] Fix | Delete
$skin->feedback( __( 'WordPress updated successfully.' ) );
[528] Fix | Delete
}
[529] Fix | Delete
}
[530] Fix | Delete
[531] Fix | Delete
$is_debug = WP_DEBUG && WP_DEBUG_LOG;
[532] Fix | Delete
[533] Fix | Delete
if ( 'theme' === $type && $is_debug ) {
[534] Fix | Delete
error_log( ' Theme ' . var_export( $item->theme, true ) . ' has been upgraded.' );
[535] Fix | Delete
}
[536] Fix | Delete
[537] Fix | Delete
if ( 'plugin' === $type ) {
[538] Fix | Delete
if ( $is_debug ) {
[539] Fix | Delete
error_log( ' Plugin ' . var_export( $item->slug, true ) . ' has been upgraded.' );
[540] Fix | Delete
if ( is_plugin_inactive( $upgrader_item ) ) {
[541] Fix | Delete
error_log( ' ' . var_export( $upgrader_item, true ) . ' is inactive and will not be checked for fatal errors.' );
[542] Fix | Delete
}
[543] Fix | Delete
}
[544] Fix | Delete
[545] Fix | Delete
if ( $was_active && ! is_wp_error( $upgrade_result ) ) {
[546] Fix | Delete
[547] Fix | Delete
/*
[548] Fix | Delete
* The usual time limit is five minutes. However, as a loopback request
[549] Fix | Delete
* is about to be performed, increase the time limit to account for this.
[550] Fix | Delete
*/
[551] Fix | Delete
if ( function_exists( 'set_time_limit' ) ) {
[552] Fix | Delete
set_time_limit( 10 * MINUTE_IN_SECONDS );
[553] Fix | Delete
}
[554] Fix | Delete
[555] Fix | Delete
/*
[556] Fix | Delete
* Avoids a race condition when there are 2 sequential plugins that have
[557] Fix | Delete
* fatal errors. It seems a slight delay is required for the loopback to
[558] Fix | Delete
* use the updated plugin code in the request. This can cause the second
[559] Fix | Delete
* plugin's fatal error checking to be inaccurate, and may also affect
[560] Fix | Delete
* subsequent plugin checks.
[561] Fix | Delete
*/
[562] Fix | Delete
sleep( 2 );
[563] Fix | Delete
[564] Fix | Delete
if ( $this->has_fatal_error() ) {
[565] Fix | Delete
$upgrade_result = new WP_Error();
[566] Fix | Delete
$temp_backup = array(
[567] Fix | Delete
array(
[568] Fix | Delete
'dir' => 'plugins',
[569] Fix | Delete
'slug' => $item->slug,
[570] Fix | Delete
'src' => WP_PLUGIN_DIR,
[571] Fix | Delete
),
[572] Fix | Delete
);
[573] Fix | Delete
[574] Fix | Delete
$backup_restored = $upgrader->restore_temp_backup( $temp_backup );
[575] Fix | Delete
if ( is_wp_error( $backup_restored ) ) {
[576] Fix | Delete
$upgrade_result->add(
[577] Fix | Delete
'plugin_update_fatal_error_rollback_failed',
[578] Fix | Delete
sprintf(
[579] Fix | Delete
/* translators: %s: The plugin's slug. */
[580] Fix | Delete
__( "The update for '%s' contained a fatal error. The previously installed version could not be restored." ),
[581] Fix | Delete
$item->slug
[582] Fix | Delete
)
[583] Fix | Delete
);
[584] Fix | Delete
[585] Fix | Delete
$upgrade_result->merge_from( $backup_restored );
[586] Fix | Delete
} else {
[587] Fix | Delete
$upgrade_result->add(
[588] Fix | Delete
'plugin_update_fatal_error_rollback_successful',
[589] Fix | Delete
sprintf(
[590] Fix | Delete
/* translators: %s: The plugin's slug. */
[591] Fix | Delete
__( "The update for '%s' contained a fatal error. The previously installed version has been restored." ),
[592] Fix | Delete
$item->slug
[593] Fix | Delete
)
[594] Fix | Delete
);
[595] Fix | Delete
[596] Fix | Delete
$backup_deleted = $upgrader->delete_temp_backup( $temp_backup );
[597] Fix | Delete
if ( is_wp_error( $backup_deleted ) ) {
[598] Fix | Delete
$upgrade_result->merge_from( $backup_deleted );
[599] Fix | Delete
}
[600] Fix | Delete
}
[601] Fix | Delete
[602] Fix | Delete
/*
[603] Fix | Delete
* Should emails not be working, log the message(s) so that
[604] Fix | Delete
* the log file contains context for the fatal error,
[605] Fix | Delete
* and whether a rollback was performed.
[606] Fix | Delete
*
[607] Fix | Delete
* `trigger_error()` is not used as it outputs a stack trace
[608] Fix | Delete
* to this location rather than to the fatal error, which will
[609] Fix | Delete
* appear above this entry in the log file.
[610] Fix | Delete
*/
[611] Fix | Delete
if ( $is_debug ) {
[612] Fix | Delete
error_log( ' ' . implode( "\n", $upgrade_result->get_error_messages() ) );
[613] Fix | Delete
}
[614] Fix | Delete
} elseif ( $is_debug ) {
[615] Fix | Delete
error_log( ' The update for ' . var_export( $item->slug, true ) . ' has no fatal errors.' );
[616] Fix | Delete
}
[617] Fix | Delete
}
[618] Fix | Delete
}
[619] Fix | Delete
[620] Fix | Delete
// All processes are complete. Allow visitors to browse the site again.
[621] Fix | Delete
if ( 'translation' !== $type ) {
[622] Fix | Delete
$upgrader->maintenance_mode( false );
[623] Fix | Delete
}
[624] Fix | Delete
[625] Fix | Delete
$this->update_results[ $type ][] = (object) array(
[626] Fix | Delete
'item' => $item,
[627] Fix | Delete
'result' => $upgrade_result,
[628] Fix | Delete
'name' => $item_name,
[629] Fix | Delete
'messages' => $skin->get_upgrade_messages(),
[630] Fix | Delete
);
[631] Fix | Delete
[632] Fix | Delete
return $upgrade_result;
[633] Fix | Delete
}
[634] Fix | Delete
[635] Fix | Delete
/**
[636] Fix | Delete
* Kicks off the background update process, looping through all pending updates.
[637] Fix | Delete
*
[638] Fix | Delete
* @since 3.7.0
[639] Fix | Delete
*/
[640] Fix | Delete
public function run() {
[641] Fix | Delete
if ( $this->is_disabled() ) {
[642] Fix | Delete
return;
[643] Fix | Delete
}
[644] Fix | Delete
[645] Fix | Delete
if ( ! is_main_network() || ! is_main_site() ) {
[646] Fix | Delete
return;
[647] Fix | Delete
}
[648] Fix | Delete
[649] Fix | Delete
if ( ! WP_Upgrader::create_lock( 'auto_updater' ) ) {
[650] Fix | Delete
return;
[651] Fix | Delete
}
[652] Fix | Delete
[653] Fix | Delete
$is_debug = WP_DEBUG && WP_DEBUG_LOG;
[654] Fix | Delete
[655] Fix | Delete
if ( $is_debug ) {
[656] Fix | Delete
error_log( 'Automatic updates starting...' );
[657] Fix | Delete
}
[658] Fix | Delete
[659] Fix | Delete
// Don't automatically run these things, as we'll handle it ourselves.
[660] Fix | Delete
remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 );
[661] Fix | Delete
remove_action( 'upgrader_process_complete', 'wp_version_check' );
[662] Fix | Delete
remove_action( 'upgrader_process_complete', 'wp_update_plugins' );
[663] Fix | Delete
remove_action( 'upgrader_process_complete', 'wp_update_themes' );
[664] Fix | Delete
[665] Fix | Delete
// Next, plugins.
[666] Fix | Delete
wp_update_plugins(); // Check for plugin updates.
[667] Fix | Delete
$plugin_updates = get_site_transient( 'update_plugins' );
[668] Fix | Delete
if ( $plugin_updates && ! empty( $plugin_updates->response ) ) {
[669] Fix | Delete
if ( $is_debug ) {
[670] Fix | Delete
error_log( ' Automatic plugin updates starting...' );
[671] Fix | Delete
}
[672] Fix | Delete
[673] Fix | Delete
foreach ( $plugin_updates->response as $plugin ) {
[674] Fix | Delete
$this->update( 'plugin', $plugin );
[675] Fix | Delete
}
[676] Fix | Delete
[677] Fix | Delete
// Force refresh of plugin update information.
[678] Fix | Delete
wp_clean_plugins_cache();
[679] Fix | Delete
[680] Fix | Delete
if ( $is_debug ) {
[681] Fix | Delete
error_log( ' Automatic plugin updates complete.' );
[682] Fix | Delete
}
[683] Fix | Delete
}
[684] Fix | Delete
[685] Fix | Delete
// Next, those themes we all love.
[686] Fix | Delete
wp_update_themes(); // Check for theme updates.
[687] Fix | Delete
$theme_updates = get_site_transient( 'update_themes' );
[688] Fix | Delete
if ( $theme_updates && ! empty( $theme_updates->response ) ) {
[689] Fix | Delete
if ( $is_debug ) {
[690] Fix | Delete
error_log( ' Automatic theme updates starting...' );
[691] Fix | Delete
}
[692] Fix | Delete
[693] Fix | Delete
foreach ( $theme_updates->response as $theme ) {
[694] Fix | Delete
$this->update( 'theme', (object) $theme );
[695] Fix | Delete
}
[696] Fix | Delete
// Force refresh of theme update information.
[697] Fix | Delete
wp_clean_themes_cache();
[698] Fix | Delete
[699] Fix | Delete
if ( $is_debug ) {
[700] Fix | Delete
error_log( ' Automatic theme updates complete.' );
[701] Fix | Delete
}
[702] Fix | Delete
}
[703] Fix | Delete
[704] Fix | Delete
if ( $is_debug ) {
[705] Fix | Delete
error_log( 'Automatic updates complete.' );
[706] Fix | Delete
}
[707] Fix | Delete
[708] Fix | Delete
// Next, process any core update.
[709] Fix | Delete
wp_version_check(); // Check for core updates.
[710] Fix | Delete
$core_update = find_core_auto_update();
[711] Fix | Delete
[712] Fix | Delete
if ( $core_update ) {
[713] Fix | Delete
$this->update( 'core', $core_update );
[714] Fix | Delete
}
[715] Fix | Delete
[716] Fix | Delete
/*
[717] Fix | Delete
* Clean up, and check for any pending translations.
[718] Fix | Delete
* (Core_Upgrader checks for core updates.)
[719] Fix | Delete
*/
[720] Fix | Delete
$theme_stats = array();
[721] Fix | Delete
if ( isset( $this->update_results['theme'] ) ) {
[722] Fix | Delete
foreach ( $this->update_results['theme'] as $upgrade ) {
[723] Fix | Delete
$theme_stats[ $upgrade->item->theme ] = ( true === $upgrade->result );
[724] Fix | Delete
}
[725] Fix | Delete
}
[726] Fix | Delete
wp_update_themes( $theme_stats ); // Check for theme updates.
[727] Fix | Delete
[728] Fix | Delete
$plugin_stats = array();
[729] Fix | Delete
if ( isset( $this->update_results['plugin'] ) ) {
[730] Fix | Delete
foreach ( $this->update_results['plugin'] as $upgrade ) {
[731] Fix | Delete
$plugin_stats[ $upgrade->item->plugin ] = ( true === $upgrade->result );
[732] Fix | Delete
}
[733] Fix | Delete
}
[734] Fix | Delete
wp_update_plugins( $plugin_stats ); // Check for plugin updates.
[735] Fix | Delete
[736] Fix | Delete
// Finally, process any new translations.
[737] Fix | Delete
$language_updates = wp_get_translation_updates();
[738] Fix | Delete
if ( $language_updates ) {
[739] Fix | Delete
foreach ( $language_updates as $update ) {
[740] Fix | Delete
$this->update( 'translation', $update );
[741] Fix | Delete
}
[742] Fix | Delete
[743] Fix | Delete
// Clear existing caches.
[744] Fix | Delete
wp_clean_update_cache();
[745] Fix | Delete
[746] Fix | Delete
wp_version_check(); // Check for core updates.
[747] Fix | Delete
wp_update_themes(); // Check for theme updates.
[748] Fix | Delete
wp_update_plugins(); // Check for plugin updates.
[749] Fix | Delete
}
[750] Fix | Delete
[751] Fix | Delete
// Send debugging email to admin for all development installations.
[752] Fix | Delete
if ( ! empty( $this->update_results ) ) {
[753] Fix | Delete
$development_version = str_contains( get_bloginfo( 'version' ), '-' );
[754] Fix | Delete
[755] Fix | Delete
/**
[756] Fix | Delete
* Filters whether to send a debugging email for each automatic background update.
[757] Fix | Delete
*
[758] Fix | Delete
* @since 3.7.0
[759] Fix | Delete
*
[760] Fix | Delete
* @param bool $development_version By default, emails are sent if the
[761] Fix | Delete
* install is a development version.
[762] Fix | Delete
* Return false to avoid the email.
[763] Fix | Delete
*/
[764] Fix | Delete
if ( apply_filters( 'automatic_updates_send_debug_email', $development_version ) ) {
[765] Fix | Delete
$this->send_debug_email();
[766] Fix | Delete
}
[767] Fix | Delete
[768] Fix | Delete
if ( ! empty( $this->update_results['core'] ) ) {
[769] Fix | Delete
$this->after_core_update( $this->update_results['core'][0] );
[770] Fix | Delete
} elseif ( ! empty( $this->update_results['plugin'] ) || ! empty( $this->update_results['theme'] ) ) {
[771] Fix | Delete
$this->after_plugin_theme_update( $this->update_results );
[772] Fix | Delete
}
[773] Fix | Delete
[774] Fix | Delete
/**
[775] Fix | Delete
* Fires after all automatic updates have run.
[776] Fix | Delete
*
[777] Fix | Delete
* @since 3.8.0
[778] Fix | Delete
*
[779] Fix | Delete
* @param array $update_results The results of all attempted updates.
[780] Fix | Delete
*/
[781] Fix | Delete
do_action( 'automatic_updates_complete', $this->update_results );
[782] Fix | Delete
}
[783] Fix | Delete
[784] Fix | Delete
WP_Upgrader::release_lock( 'auto_updater' );
[785] Fix | Delete
}
[786] Fix | Delete
[787] Fix | Delete
/**
[788] Fix | Delete
* Checks whether to send an email and avoid processing future updates after
[789] Fix | Delete
* attempting a core update.
[790] Fix | Delete
*
[791] Fix | Delete
* @since 3.7.0
[792] Fix | Delete
*
[793] Fix | Delete
* @param object $update_result The result of the core update. Includes the update offer and result.
[794] Fix | Delete
*/
[795] Fix | Delete
protected function after_core_update( $update_result ) {
[796] Fix | Delete
$wp_version = get_bloginfo( 'version' );
[797] Fix | Delete
[798] Fix | Delete
$core_update = $update_result->item;
[799] Fix | Delete
$result = $update_result->result;
[800] Fix | Delete
[801] Fix | Delete
if ( ! is_wp_error( $result ) ) {
[802] Fix | Delete
$this->send_email( 'success', $core_update );
[803] Fix | Delete
return;
[804] Fix | Delete
}
[805] Fix | Delete
[806] Fix | Delete
$error_code = $result->get_error_code();
[807] Fix | Delete
[808] Fix | Delete
/*
[809] Fix | Delete
* Any of these WP_Error codes are critical failures, as in they occurred after we started to copy core files.
[810] Fix | Delete
* We should not try to perform a background update again until there is a successful one-click update performed by the user.
[811] Fix | Delete
*/
[812] Fix | Delete
$critical = false;
[813] Fix | Delete
if ( 'disk_full' === $error_code || str_contains( $error_code, '__copy_dir' ) ) {
[814] Fix | Delete
$critical = true;
[815] Fix | Delete
} elseif ( 'rollback_was_required' === $error_code && is_wp_error( $result->get_error_data()->rollback ) ) {
[816] Fix | Delete
// A rollback is only critical if it failed too.
[817] Fix | Delete
$critical = true;
[818] Fix | Delete
$rollback_result = $result->get_error_data()->rollback;
[819] Fix | Delete
} elseif ( str_contains( $error_code, 'do_rollback' ) ) {
[820] Fix | Delete
$critical = true;
[821] Fix | Delete
}
[822] Fix | Delete
[823] Fix | Delete
if ( $critical ) {
[824] Fix | Delete
$critical_data = array(
[825] Fix | Delete
'attempted' => $core_update->current,
[826] Fix | Delete
'current' => $wp_version,
[827] Fix | Delete
'error_code' => $error_code,
[828] Fix | Delete
'error_data' => $result->get_error_data(),
[829] Fix | Delete
'timestamp' => time(),
[830] Fix | Delete
'critical' => true,
[831] Fix | Delete
);
[832] Fix | Delete
if ( isset( $rollback_result ) ) {
[833] Fix | Delete
$critical_data['rollback_code'] = $rollback_result->get_error_code();
[834] Fix | Delete
$critical_data['rollback_data'] = $rollback_result->get_error_data();
[835] Fix | Delete
}
[836] Fix | Delete
update_site_option( 'auto_core_update_failed', $critical_data );
[837] Fix | Delete
$this->send_email( 'critical', $core_update, $result );
[838] Fix | Delete
return;
[839] Fix | Delete
}
[840] Fix | Delete
[841] Fix | Delete
/*
[842] Fix | Delete
* Any other WP_Error code (like download_failed or files_not_writable) occurs before
[843] Fix | Delete
* we tried to copy over core files. Thus, the failures are early and graceful.
[844] Fix | Delete
*
[845] Fix | Delete
* We should avoid trying to perform a background update again for the same version.
[846] Fix | Delete
* But we can try again if another version is released.
[847] Fix | Delete
*
[848] Fix | Delete
* For certain 'transient' failures, like download_failed, we should allow retries.
[849] Fix | Delete
* In fact, let's schedule a special update for an hour from now. (It's possible
[850] Fix | Delete
* the issue could actually be on WordPress.org's side.) If that one fails, then email.
[851] Fix | Delete
*/
[852] Fix | Delete
$send = true;
[853] Fix | Delete
$transient_failures = array( 'incompatible_archive', 'download_failed', 'insane_distro', 'locked' );
[854] Fix | Delete
if ( in_array( $error_code, $transient_failures, true ) && ! get_site_option( 'auto_core_update_failed' ) ) {
[855] Fix | Delete
wp_schedule_single_event( time() + HOUR_IN_SECONDS, 'wp_maybe_auto_update' );
[856] Fix | Delete
$send = false;
[857] Fix | Delete
}
[858] Fix | Delete
[859] Fix | Delete
$notified = get_site_option( 'auto_core_update_notified' );
[860] Fix | Delete
[861] Fix | Delete
// Don't notify if we've already notified the same email address of the same version of the same notification type.
[862] Fix | Delete
if ( $notified
[863] Fix | Delete
&& 'fail' === $notified['type']
[864] Fix | Delete
&& get_site_option( 'admin_email' ) === $notified['email']
[865] Fix | Delete
&& $notified['version'] === $core_update->current
[866] Fix | Delete
) {
[867] Fix | Delete
$send = false;
[868] Fix | Delete
}
[869] Fix | Delete
[870] Fix | Delete
update_site_option(
[871] Fix | Delete
'auto_core_update_failed',
[872] Fix | Delete
array(
[873] Fix | Delete
'attempted' => $core_update->current,
[874] Fix | Delete
'current' => $wp_version,
[875] Fix | Delete
'error_code' => $error_code,
[876] Fix | Delete
'error_data' => $result->get_error_data(),
[877] Fix | Delete
'timestamp' => time(),
[878] Fix | Delete
'retry' => in_array( $error_code, $transient_failures, true ),
[879] Fix | Delete
)
[880] Fix | Delete
);
[881] Fix | Delete
[882] Fix | Delete
if ( $send ) {
[883] Fix | Delete
$this->send_email( 'fail', $core_update, $result );
[884] Fix | Delete
}
[885] Fix | Delete
}
[886] Fix | Delete
[887] Fix | Delete
/**
[888] Fix | Delete
* Sends an email upon the completion or failure of a background core update.
[889] Fix | Delete
*
[890] Fix | Delete
* @since 3.7.0
[891] Fix | Delete
*
[892] Fix | Delete
* @param string $type The type of email to send. Can be one of 'success', 'fail', 'manual', 'critical'.
[893] Fix | Delete
* @param object $core_update The update offer that was attempted.
[894] Fix | Delete
* @param mixed $result Optional. The result for the core update. Can be WP_Error.
[895] Fix | Delete
*/
[896] Fix | Delete
protected function send_email( $type, $core_update, $result = null ) {
[897] Fix | Delete
update_site_option(
[898] Fix | Delete
'auto_core_update_notified',
[899] Fix | Delete
array(
[900] Fix | Delete
'type' => $type,
[901] Fix | Delete
'email' => get_site_option( 'admin_email' ),
[902] Fix | Delete
'version' => $core_update->current,
[903] Fix | Delete
'timestamp' => time(),
[904] Fix | Delete
)
[905] Fix | Delete
);
[906] Fix | Delete
[907] Fix | Delete
$next_user_core_update = get_preferred_from_update_core();
[908] Fix | Delete
[909] Fix | Delete
// If the update transient is empty, use the update we just performed.
[910] Fix | Delete
if ( ! $next_user_core_update ) {
[911] Fix | Delete
$next_user_core_update = $core_update;
[912] Fix | Delete
}
[913] Fix | Delete
[914] Fix | Delete
if ( 'upgrade' === $next_user_core_update->response
[915] Fix | Delete
&& version_compare( $next_user_core_update->version, $core_update->version, '>' )
[916] Fix | Delete
) {
[917] Fix | Delete
$newer_version_available = true;
[918] Fix | Delete
} else {
[919] Fix | Delete
$newer_version_available = false;
[920] Fix | Delete
}
[921] Fix | Delete
[922] Fix | Delete
/**
[923] Fix | Delete
* Filters whether to send an email following an automatic background core update.
[924] Fix | Delete
*
[925] Fix | Delete
* @since 3.7.0
[926] Fix | Delete
*
[927] Fix | Delete
* @param bool $send Whether to send the email. Default true.
[928] Fix | Delete
* @param string $type The type of email to send. Can be one of
[929] Fix | Delete
* 'success', 'fail', 'critical'.
[930] Fix | Delete
* @param object $core_update The update offer that was attempted.
[931] Fix | Delete
* @param mixed $result The result for the core update. Can be WP_Error.
[932] Fix | Delete
*/
[933] Fix | Delete
if ( 'manual' !== $type && ! apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result ) ) {
[934] Fix | Delete
return;
[935] Fix | Delete
}
[936] Fix | Delete
[937] Fix | Delete
switch ( $type ) {
[938] Fix | Delete
case 'success': // We updated.
[939] Fix | Delete
/* translators: Site updated notification email subject. 1: Site title, 2: WordPress version. */
[940] Fix | Delete
$subject = __( '[%1$s] Your site has updated to WordPress %2$s' );
[941] Fix | Delete
break;
[942] Fix | Delete
[943] Fix | Delete
case 'fail': // We tried to update but couldn't.
[944] Fix | Delete
case 'manual': // We can't update (and made no attempt).
[945] Fix | Delete
/* translators: Update available notification email subject. 1: Site title, 2: WordPress version. */
[946] Fix | Delete
$subject = __( '[%1$s] WordPress %2$s is available. Please update!' );
[947] Fix | Delete
break;
[948] Fix | Delete
[949] Fix | Delete
case 'critical': // We tried to update, started to copy files, then things went wrong.
[950] Fix | Delete
/* translators: Site down notification email subject. 1: Site title. */
[951] Fix | Delete
$subject = __( '[%1$s] URGENT: Your site may be down due to a failed update' );
[952] Fix | Delete
break;
[953] Fix | Delete
[954] Fix | Delete
default:
[955] Fix | Delete
return;
[956] Fix | Delete
}
[957] Fix | Delete
[958] Fix | Delete
// If the auto-update is not to the latest version, say that the current version of WP is available instead.
[959] Fix | Delete
$version = 'success' === $type ? $core_update->current : $next_user_core_update->current;
[960] Fix | Delete
$subject = sprintf( $subject, wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ), $version );
[961] Fix | Delete
[962] Fix | Delete
$body = '';
[963] Fix | Delete
[964] Fix | Delete
switch ( $type ) {
[965] Fix | Delete
case 'success':
[966] Fix | Delete
$body .= sprintf(
[967] Fix | Delete
/* translators: 1: Home URL, 2: WordPress version. */
[968] Fix | Delete
__( 'Howdy! Your site at %1$s has been updated automatically to WordPress %2$s.' ),
[969] Fix | Delete
home_url(),
[970] Fix | Delete
$core_update->current
[971] Fix | Delete
);
[972] Fix | Delete
$body .= "\n\n";
[973] Fix | Delete
if ( ! $newer_version_available ) {
[974] Fix | Delete
$body .= __( 'No further action is needed on your part.' ) . ' ';
[975] Fix | Delete
}
[976] Fix | Delete
[977] Fix | Delete
// Can only reference the About screen if their update was successful.
[978] Fix | Delete
list( $about_version ) = explode( '-', $core_update->current, 2 );
[979] Fix | Delete
/* translators: %s: WordPress version. */
[980] Fix | Delete
$body .= sprintf( __( 'For more on version %s, see the About WordPress screen:' ), $about_version );
[981] Fix | Delete
$body .= "\n" . admin_url( 'about.php' );
[982] Fix | Delete
[983] Fix | Delete
if ( $newer_version_available ) {
[984] Fix | Delete
/* translators: %s: WordPress latest version. */
[985] Fix | Delete
$body .= "\n\n" . sprintf( __( 'WordPress %s is also now available.' ), $next_user_core_update->current ) . ' ';
[986] Fix | Delete
$body .= __( 'Updating is easy and only takes a few moments:' );
[987] Fix | Delete
$body .= "\n" . network_admin_url( 'update-core.php' );
[988] Fix | Delete
}
[989] Fix | Delete
[990] Fix | Delete
break;
[991] Fix | Delete
[992] Fix | Delete
case 'fail':
[993] Fix | Delete
case 'manual':
[994] Fix | Delete
$body .= sprintf(
[995] Fix | Delete
/* translators: 1: Home URL, 2: WordPress version. */
[996] Fix | Delete
__( 'Please update your site at %1$s to WordPress %2$s.' ),
[997] Fix | Delete
home_url(),
[998] Fix | Delete
$next_user_core_update->current
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function