Spaces:
Sleeping
Sleeping
File size: 4,176 Bytes
7428bdb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
<?php
/**
* Upgrader API: Theme_Upgrader_Skin class
*
* @package WordPress
* @subpackage Upgrader
* @since 4.6.0
*/
/**
* Theme Upgrader Skin for WordPress Theme Upgrades.
*
* @since 2.8.0
* @since 4.6.0 Moved to its own file from wp-admin/includes/class-wp-upgrader-skins.php.
*
* @see WP_Upgrader_Skin
*/
class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
/**
* Holds the theme slug in the Theme Directory.
*
* @since 2.8.0
*
* @var string
*/
public $theme = '';
/**
* Constructor.
*
* Sets up the theme upgrader skin.
*
* @since 2.8.0
*
* @param array $args Optional. The theme upgrader skin arguments to
* override default options. Default empty array.
*/
public function __construct( $args = array() ) {
$defaults = array(
'url' => '',
'theme' => '',
'nonce' => '',
'title' => __( 'Update Theme' ),
);
$args = wp_parse_args( $args, $defaults );
$this->theme = $args['theme'];
parent::__construct( $args );
}
/**
* Performs an action following a single theme update.
*
* @since 2.8.0
*/
public function after() {
$this->decrement_update_count( 'theme' );
$update_actions = array();
$theme_info = $this->upgrader->theme_info();
if ( $theme_info ) {
$name = $theme_info->display( 'Name' );
$stylesheet = $this->upgrader->result['destination_name'];
$template = $theme_info->get_template();
$activate_link = add_query_arg(
array(
'action' => 'activate',
'template' => urlencode( $template ),
'stylesheet' => urlencode( $stylesheet ),
),
admin_url( 'themes.php' )
);
$activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet );
$customize_url = add_query_arg(
array(
'theme' => urlencode( $stylesheet ),
'return' => urlencode( admin_url( 'themes.php' ) ),
),
admin_url( 'customize.php' )
);
if ( get_stylesheet() === $stylesheet ) {
if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) {
$update_actions['preview'] = sprintf(
'<a href="%s" class="hide-if-no-customize load-customize">' .
'<span aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
esc_url( $customize_url ),
__( 'Customize' ),
/* translators: Hidden accessibility text. %s: Theme name. */
sprintf( __( 'Customize “%s”' ), $name )
);
}
} elseif ( current_user_can( 'switch_themes' ) ) {
if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) {
$update_actions['preview'] = sprintf(
'<a href="%s" class="hide-if-no-customize load-customize">' .
'<span aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
esc_url( $customize_url ),
__( 'Live Preview' ),
/* translators: Hidden accessibility text. %s: Theme name. */
sprintf( __( 'Live Preview “%s”' ), $name )
);
}
$update_actions['activate'] = sprintf(
'<a href="%s" class="activatelink">' .
'<span aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
esc_url( $activate_link ),
_x( 'Activate', 'theme' ),
/* translators: Hidden accessibility text. %s: Theme name. */
sprintf( _x( 'Activate “%s”', 'theme' ), $name )
);
}
if ( ! $this->result || is_wp_error( $this->result ) || is_network_admin() ) {
unset( $update_actions['preview'], $update_actions['activate'] );
}
}
$update_actions['themes_page'] = sprintf(
'<a href="%s" target="_parent">%s</a>',
self_admin_url( 'themes.php' ),
__( 'Go to Themes page' )
);
/**
* Filters the list of action links available following a single theme update.
*
* @since 2.8.0
*
* @param string[] $update_actions Array of theme action links.
* @param string $theme Theme directory name.
*/
$update_actions = apply_filters( 'update_theme_complete_actions', $update_actions, $this->theme );
if ( ! empty( $update_actions ) ) {
$this->feedback( implode( ' | ', (array) $update_actions ) );
}
}
}
|