File "update.php"
Full path: /home/kosmetik/public_html/wp-includes/wp-admin/includes/update.php
File
size: 22.62 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
function get_preferred_from_update_core()
{
$updates = get_core_updates();
if (!is_array($updates)) {
return false;
}
if (empty($updates)) {
return (object) array('response' => 'latest');
}
return $updates[0];
}
function get_core_updates($options = array())
{
$options = array_merge(array('available' => true, 'dismissed' => false), $options);
$dismissed = get_site_option('dismissed_update_core');
if (!is_array($dismissed)) {
$dismissed = array();
}
$from_api = get_site_transient('update_core');
if (!isset($from_api->updates) || !is_array($from_api->updates)) {
return false;
}
$updates = $from_api->updates;
$result = array();
foreach ($updates as $update) {
if ('autoupdate' === $update->response) {
continue;
}
if (array_key_exists($update->current . '|' . $update->locale, $dismissed)) {
if ($options['dismissed']) {
$update->dismissed = true;
$result[] = $update;
}
} else {
if ($options['available']) {
$update->dismissed = false;
$result[] = $update;
}
}
}
return $result;
}
function find_core_auto_update()
{
$updates = get_site_transient('update_core');
if (!$updates || empty($updates->updates)) {
return false;
}
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$auto_update = false;
$upgrader = new WP_Automatic_Updater();
foreach ($updates->updates as $update) {
if ('autoupdate' !== $update->response) {
continue;
}
if (!$upgrader->should_update('core', $update, ABSPATH)) {
continue;
}
if (!$auto_update || version_compare($update->current, $auto_update->current, '>')) {
$auto_update = $update;
}
}
return $auto_update;
}
function get_core_checksums($version, $locale)
{
$http_url = 'http://api.wordpress.org/core/checksums/1.0/?' . http_build_query(compact('version', 'locale'), null, '&');
$url = $http_url;
$ssl = wp_http_supports(array('ssl'));
if ($ssl) {
$url = set_url_scheme($url, 'https');
}
$options = array('timeout' => wp_doing_cron() ? 30 : 3);
$response = wp_remote_get($url, $options);
if ($ssl && is_wp_error($response)) {
trigger_error(sprintf(__('An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the <a href="%s">support forums</a>.'), __('https://wordpress.org/support/forums/')) . ' ' . __('(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)'), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE);
$response = wp_remote_get($http_url, $options);
}
if (is_wp_error($response) || 200 != wp_remote_retrieve_response_code($response)) {
return false;
}
$body = trim(wp_remote_retrieve_body($response));
$body = json_decode($body, true);
if (!is_array($body) || !isset($body['checksums']) || !is_array($body['checksums'])) {
return false;
}
return $body['checksums'];
}
function dismiss_core_update($update)
{
$dismissed = get_site_option('dismissed_update_core');
$dismissed[$update->current . '|' . $update->locale] = true;
return update_site_option('dismissed_update_core', $dismissed);
}
function undismiss_core_update($version, $locale)
{
$dismissed = get_site_option('dismissed_update_core');
$key = $version . '|' . $locale;
if (!isset($dismissed[$key])) {
return false;
}
unset($dismissed[$key]);
return update_site_option('dismissed_update_core', $dismissed);
}
function find_core_update($version, $locale)
{
$from_api = get_site_transient('update_core');
if (!isset($from_api->updates) || !is_array($from_api->updates)) {
return false;
}
$updates = $from_api->updates;
foreach ($updates as $update) {
if ($update->current == $version && $update->locale == $locale) {
return $update;
}
}
return false;
}
function core_update_footer($msg = '')
{
if (!current_user_can('update_core')) {
return sprintf(__('Version %s'), get_bloginfo('version', 'display'));
}
$cur = get_preferred_from_update_core();
if (!is_object($cur)) {
$cur = new stdClass();
}
if (!isset($cur->current)) {
$cur->current = '';
}
if (!isset($cur->response)) {
$cur->response = '';
}
require ABSPATH . WPINC . '/version.php';
$is_development_version = preg_match('/alpha|beta|RC/', $wp_version);
if ($is_development_version) {
return sprintf(__('You are using a development version (%1$s). Cool! Please <a href="%2$s">stay updated</a>.'), get_bloginfo('version', 'display'), network_admin_url('update-core.php'));
}
switch ($cur->response) {
case 'upgrade':
return sprintf('<strong><a href="%s">%s</a></strong>', network_admin_url('update-core.php'), sprintf(__('Get Version %s'), $cur->current));
case 'latest':
default:
return sprintf(__('Version %s'), get_bloginfo('version', 'display'));
}
}
function update_nag()
{
if (is_multisite() && !current_user_can('update_core')) {
return false;
}
global $pagenow;
if ('update-core.php' === $pagenow) {
return;
}
$cur = get_preferred_from_update_core();
if (!isset($cur->response) || 'upgrade' !== $cur->response) {
return false;
}
$version_url = sprintf(esc_url(__('https://wordpress.org/support/wordpress-version/version-%s/')), sanitize_title($cur->current));
if (current_user_can('update_core')) {
$msg = sprintf(__('<a href="%1$s">WordPress %2$s</a> is available! <a href="%3$s" aria-label="%4$s">Please update now</a>.'), $version_url, $cur->current, network_admin_url('update-core.php'), esc_attr__('Please update WordPress now'));
} else {
$msg = sprintf(__('<a href="%1$s">WordPress %2$s</a> is available! Please notify the site administrator.'), $version_url, $cur->current);
}
echo "<div class='update-nag notice notice-warning inline'>{$msg}</div>";
}
function update_right_now_message()
{
$theme_name = wp_get_theme();
if (current_user_can('switch_themes')) {
$theme_name = sprintf('<a href="themes.php">%1$s</a>', $theme_name);
}
$msg = '';
if (current_user_can('update_core')) {
$cur = get_preferred_from_update_core();
if (isset($cur->response) && 'upgrade' === $cur->response) {
$msg .= sprintf('<a href="%s" class="button" aria-describedby="wp-version">%s</a> ', network_admin_url('update-core.php'), sprintf(__('Update to %s'), $cur->current ? $cur->current : __('Latest')));
}
}
$content = __('WordPress %1$s running %2$s theme.');
$content = apply_filters('update_right_now_text', $content);
$msg .= sprintf('<span id="wp-version">' . $content . '</span>', get_bloginfo('version', 'display'), $theme_name);
echo "<p id='wp-version-message'>{$msg}</p>";
}
function get_plugin_updates()
{
$all_plugins = get_plugins();
$upgrade_plugins = array();
$current = get_site_transient('update_plugins');
foreach ((array) $all_plugins as $plugin_file => $plugin_data) {
if (isset($current->response[$plugin_file])) {
$upgrade_plugins[$plugin_file] = (object) $plugin_data;
$upgrade_plugins[$plugin_file]->update = $current->response[$plugin_file];
}
}
return $upgrade_plugins;
}
function wp_plugin_update_rows()
{
if (!current_user_can('update_plugins')) {
return;
}
$plugins = get_site_transient('update_plugins');
if (isset($plugins->response) && is_array($plugins->response)) {
$plugins = array_keys($plugins->response);
foreach ($plugins as $plugin_file) {
add_action("after_plugin_row_{$plugin_file}", 'wp_plugin_update_row', 10, 2);
}
}
}
function wp_plugin_update_row($file, $plugin_data)
{
$current = get_site_transient('update_plugins');
if (!isset($current->response[$file])) {
return false;
}
$response = $current->response[$file];
$plugins_allowedtags = array('a' => array('href' => array(), 'title' => array()), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'em' => array(), 'strong' => array());
$plugin_name = wp_kses($plugin_data['Name'], $plugins_allowedtags);
$details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $response->slug . '§ion=changelog&TB_iframe=true&width=600&height=800');
$wp_list_table = _get_list_table('WP_Plugins_List_Table', array('screen' => get_current_screen()));
if (is_network_admin() || !is_multisite()) {
if (is_network_admin()) {
$active_class = is_plugin_active_for_network($file) ? ' active' : '';
} else {
$active_class = is_plugin_active($file) ? ' active' : '';
}
$requires_php = isset($response->requires_php) ? $response->requires_php : null;
$compatible_php = is_php_version_compatible($requires_php);
$notice_type = $compatible_php ? 'notice-warning' : 'notice-error';
printf('<tr class="plugin-update-tr%s" id="%s" data-slug="%s" data-plugin="%s">' . '<td colspan="%s" class="plugin-update colspanchange">' . '<div class="update-message notice inline %s notice-alt"><p>', $active_class, esc_attr($response->slug . '-update'), esc_attr($response->slug), esc_attr($file), esc_attr($wp_list_table->get_column_count()), $notice_type);
if (!current_user_can('update_plugins')) {
printf(__('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>.'), $plugin_name, esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $plugin_name, $response->new_version))), esc_attr($response->new_version));
} elseif (empty($response->package)) {
printf(__('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>. <em>Automatic update is unavailable for this plugin.</em>'), $plugin_name, esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $plugin_name, $response->new_version))), esc_attr($response->new_version));
} else {
if ($compatible_php) {
printf(__('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a> or <a href="%5$s" %6$s>update now</a>.'), $plugin_name, esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $plugin_name, $response->new_version))), esc_attr($response->new_version), wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file), sprintf('class="update-link" aria-label="%s"', esc_attr(sprintf(_x('Update %s now', 'plugin'), $plugin_name))));
} else {
printf(__('There is a new version of %1$s available, but it doesn’t work with your version of PHP. <a href="%2$s" %3$s>View version %4$s details</a> or <a href="%5$s">learn more about updating PHP</a>.'), $plugin_name, esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $plugin_name, $response->new_version))), esc_attr($response->new_version), esc_url(wp_get_update_php_url()));
wp_update_php_annotation('<br><em>', '</em>');
}
}
do_action("in_plugin_update_message-{$file}", $plugin_data, $response);
echo '</p></div></td></tr>';
}
}
function get_theme_updates()
{
$current = get_site_transient('update_themes');
if (!isset($current->response)) {
return array();
}
$update_themes = array();
foreach ($current->response as $stylesheet => $data) {
$update_themes[$stylesheet] = wp_get_theme($stylesheet);
$update_themes[$stylesheet]->update = $data;
}
return $update_themes;
}
function wp_theme_update_rows()
{
if (!current_user_can('update_themes')) {
return;
}
$themes = get_site_transient('update_themes');
if (isset($themes->response) && is_array($themes->response)) {
$themes = array_keys($themes->response);
foreach ($themes as $theme) {
add_action("after_theme_row_{$theme}", 'wp_theme_update_row', 10, 2);
}
}
}
function wp_theme_update_row($theme_key, $theme)
{
$current = get_site_transient('update_themes');
if (!isset($current->response[$theme_key])) {
return false;
}
$response = $current->response[$theme_key];
$details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $current->response[$theme_key]['url']);
$wp_list_table = _get_list_table('WP_MS_Themes_List_Table');
$active = $theme->is_allowed('network') ? ' active' : '';
$requires_wp = isset($response['requires']) ? $response['requires'] : null;
$requires_php = isset($response['requires_php']) ? $response['requires_php'] : null;
$compatible_wp = is_wp_version_compatible($requires_wp);
$compatible_php = is_php_version_compatible($requires_php);
printf('<tr class="plugin-update-tr%s" id="%s" data-slug="%s">' . '<td colspan="%s" class="plugin-update colspanchange">' . '<div class="update-message notice inline notice-warning notice-alt"><p>', $active, esc_attr($theme->get_stylesheet() . '-update'), esc_attr($theme->get_stylesheet()), $wp_list_table->get_column_count());
if ($compatible_wp && $compatible_php) {
if (!current_user_can('update_themes')) {
printf(__('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>.'), $theme['Name'], esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $theme['Name'], $response['new_version']))), $response['new_version']);
} elseif (empty($response['package'])) {
printf(__('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>. <em>Automatic update is unavailable for this theme.</em>'), $theme['Name'], esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $theme['Name'], $response['new_version']))), $response['new_version']);
} else {
printf(__('There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a> or <a href="%5$s" %6$s>update now</a>.'), $theme['Name'], esc_url($details_url), sprintf('class="thickbox open-plugin-details-modal" aria-label="%s"', esc_attr(sprintf(__('View %1$s version %2$s details'), $theme['Name'], $response['new_version']))), $response['new_version'], wp_nonce_url(self_admin_url('update.php?action=upgrade-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key), sprintf('class="update-link" aria-label="%s"', esc_attr(sprintf(_x('Update %s now', 'theme'), $theme['Name']))));
}
} else {
if (!$compatible_wp && !$compatible_php) {
printf(__('There is a new version of %s available, but it doesn’t work with your versions of WordPress and PHP.'), $theme['Name']);
if (current_user_can('update_core') && current_user_can('update_php')) {
printf(' ' . __('<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.'), self_admin_url('update-core.php'), esc_url(wp_get_update_php_url()));
wp_update_php_annotation('</p><p><em>', '</em>');
} elseif (current_user_can('update_core')) {
printf(' ' . __('<a href="%s">Please update WordPress</a>.'), self_admin_url('update-core.php'));
} elseif (current_user_can('update_php')) {
printf(' ' . __('<a href="%s">Learn more about updating PHP</a>.'), esc_url(wp_get_update_php_url()));
wp_update_php_annotation('</p><p><em>', '</em>');
}
} elseif (!$compatible_wp) {
printf(__('There is a new version of %s available, but it doesn’t work with your version of WordPress.'), $theme['Name']);
if (current_user_can('update_core')) {
printf(' ' . __('<a href="%s">Please update WordPress</a>.'), self_admin_url('update-core.php'));
}
} elseif (!$compatible_php) {
printf(__('There is a new version of %s available, but it doesn’t work with your version of PHP.'), $theme['Name']);
if (current_user_can('update_php')) {
printf(' ' . __('<a href="%s">Learn more about updating PHP</a>.'), esc_url(wp_get_update_php_url()));
wp_update_php_annotation('</p><p><em>', '</em>');
}
}
}
do_action("in_theme_update_message-{$theme_key}", $theme, $response);
echo '</p></div></td></tr>';
}
function maintenance_nag()
{
require ABSPATH . WPINC . '/version.php';
global $upgrading;
$nag = isset($upgrading);
if (!$nag) {
$failed = get_site_option('auto_core_update_failed');
$comparison = !empty($failed['critical']) ? '>=' : '>';
if (isset($failed['attempted']) && version_compare($failed['attempted'], $wp_version, $comparison)) {
$nag = true;
}
}
if (!$nag) {
return false;
}
if (current_user_can('update_core')) {
$msg = sprintf(__('An automated WordPress update has failed to complete - <a href="%s">please attempt the update again now</a>.'), 'update-core.php');
} else {
$msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.');
}
echo "<div class='update-nag notice notice-warning inline'>{$msg}</div>";
}
function wp_print_admin_notice_templates()
{
?>
<script id="tmpl-wp-updates-admin-notice" type="text/html">
<div <# if ( data.id ) { #>id="{{ data.id }}"<# } #> class="notice {{ data.className }}"><p>{{{ data.message }}}</p></div>
</script>
<script id="tmpl-wp-bulk-updates-admin-notice" type="text/html">
<div id="{{ data.id }}" class="{{ data.className }} notice <# if ( data.errors ) { #>notice-error<# } else { #>notice-success<# } #>">
<p>
<# if ( data.successes ) { #>
<# if ( 1 === data.successes ) { #>
<# if ( 'plugin' === data.type ) { #>
<?php
printf(__('%s plugin successfully updated.'), '{{ data.successes }}');
?>
<# } else { #>
<?php
printf(__('%s theme successfully updated.'), '{{ data.successes }}');
?>
<# } #>
<# } else { #>
<# if ( 'plugin' === data.type ) { #>
<?php
printf(__('%s plugins successfully updated.'), '{{ data.successes }}');
?>
<# } else { #>
<?php
printf(__('%s themes successfully updated.'), '{{ data.successes }}');
?>
<# } #>
<# } #>
<# } #>
<# if ( data.errors ) { #>
<button class="button-link bulk-action-errors-collapsed" aria-expanded="false">
<# if ( 1 === data.errors ) { #>
<?php
printf(__('%s update failed.'), '{{ data.errors }}');
?>
<# } else { #>
<?php
printf(__('%s updates failed.'), '{{ data.errors }}');
?>
<# } #>
<span class="screen-reader-text"><?php
_e('Show more details');
?></span>
<span class="toggle-indicator" aria-hidden="true"></span>
</button>
<# } #>
</p>
<# if ( data.errors ) { #>
<ul class="bulk-action-errors hidden">
<# _.each( data.errorMessages, function( errorMessage ) { #>
<li>{{ errorMessage }}</li>
<# } ); #>
</ul>
<# } #>
</div>
</script>
<?php
}
function wp_print_update_row_templates()
{
?>
<script id="tmpl-item-update-row" type="text/template">
<tr class="plugin-update-tr update" id="{{ data.slug }}-update" data-slug="{{ data.slug }}" <# if ( data.plugin ) { #>data-plugin="{{ data.plugin }}"<# } #>>
<td colspan="{{ data.colspan }}" class="plugin-update colspanchange">
{{{ data.content }}}
</td>
</tr>
</script>
<script id="tmpl-item-deleted-row" type="text/template">
<tr class="plugin-deleted-tr inactive deleted" id="{{ data.slug }}-deleted" data-slug="{{ data.slug }}" <# if ( data.plugin ) { #>data-plugin="{{ data.plugin }}"<# } #>>
<td colspan="{{ data.colspan }}" class="plugin-update colspanchange">
<# if ( data.plugin ) { #>
<?php
printf(_x('%s was successfully deleted.', 'plugin'), '<strong>{{{ data.name }}}</strong>');
?>
<# } else { #>
<?php
printf(_x('%s was successfully deleted.', 'theme'), '<strong>{{{ data.name }}}</strong>');
?>
<# } #>
</td>
</tr>
</script>
<?php
}
function wp_recovery_mode_nag()
{
if (!wp_is_recovery_mode()) {
return;
}
$url = wp_login_url();
$url = add_query_arg('action', WP_Recovery_Mode::EXIT_ACTION, $url);
$url = wp_nonce_url($url, WP_Recovery_Mode::EXIT_ACTION);
?>
<div class="notice notice-info">
<p>
<?php
printf(__('You are in recovery mode. This means there may be an error with a theme or plugin. To exit recovery mode, log out or use the Exit button. <a href="%s">Exit Recovery Mode</a>'), esc_url($url));
?>
</p>
</div>
<?php
}
function wp_is_auto_update_enabled_for_type($type)
{
if (!class_exists('WP_Automatic_Updater')) {
require_once ABSPATH . 'wp-admin/includes/class-wp-automatic-updater.php';
}
$updater = new WP_Automatic_Updater();
$enabled = !$updater->is_disabled();
switch ($type) {
case 'plugin':
return apply_filters('plugins_auto_update_enabled', $enabled);
case 'theme':
return apply_filters('themes_auto_update_enabled', $enabled);
}
return false;
}
function wp_is_auto_update_forced_for_item($type, $update, $item)
{
return apply_filters("auto_update_{$type}", $update, $item);
}
function wp_get_auto_update_message()
{
$next_update_time = wp_next_scheduled('wp_version_check');
if (false === $next_update_time) {
$message = __('Automatic update not scheduled. There may be a problem with WP-Cron.');
} else {
$time_to_next_update = human_time_diff((int) $next_update_time);
$overdue = time() - $next_update_time > 0;
if ($overdue) {
$message = sprintf(__('Automatic update overdue by %s. There may be a problem with WP-Cron.'), $time_to_next_update);
} else {
$message = sprintf(__('Automatic update scheduled in %s.'), $time_to_next_update);
}
}
return $message;
}