'', 'nonce' => '', ); $args = wp_parse_args( $args, $defaults ); parent::__construct( $args ); } /** */ public function add_strings() { $this->upgrader->strings['skin_upgrade_start'] = __( 'The update process is starting. This process may take a while on some hosts, so please be patient.' ); /* translators: 1: Title of an update, 2: Error message */ $this->upgrader->strings['skin_update_failed_error'] = __( 'An error occurred while updating %1$s: %2$s' ); /* translators: %s: Title of an update */ $this->upgrader->strings['skin_update_failed'] = __( 'The update of %s failed.' ); /* translators: %s: Title of an update */ $this->upgrader->strings['skin_update_successful'] = __( '%s updated successfully.' ); $this->upgrader->strings['skin_upgrade_end'] = __( 'All updates have been completed.' ); } /** * @param string $string */ public function feedback( $string ) { if ( isset( $this->upgrader->strings[ $string ] ) ) { $string = $this->upgrader->strings[ $string ]; } if ( strpos( $string, '%' ) !== false ) { $args = func_get_args(); $args = array_splice( $args, 1 ); if ( $args ) { $args = array_map( 'strip_tags', $args ); $args = array_map( 'esc_html', $args ); $string = vsprintf( $string, $args ); } } if ( empty( $string ) ) { return; } if ( $this->in_loop ) { echo "$string
\n"; } else { echo "

$string

\n"; } } /** */ public function header() { // Nothing, This will be displayed within a iframe. } /** */ public function footer() { // Nothing, This will be displayed within a iframe. } /** * @param string|WP_Error $error */ public function error( $error ) { if ( is_string( $error ) && isset( $this->upgrader->strings[ $error ] ) ) { $this->error = $this->upgrader->strings[ $error ]; } if ( is_wp_error( $error ) ) { $messages = array(); foreach ( $error->get_error_messages() as $emessage ) { if ( $error->get_error_data() && is_string( $error->get_error_data() ) ) { $messages[] = $emessage . ' ' . esc_html( strip_tags( $error->get_error_data() ) ); } else { $messages[] = $emessage; } } $this->error = implode( ', ', $messages ); } echo ''; } /** */ public function bulk_header() { $this->feedback( 'skin_upgrade_start' ); } /** */ public function bulk_footer() { $this->feedback( 'skin_upgrade_end' ); } /** * @param string $title */ public function before( $title = '' ) { $this->in_loop = true; printf( '

' . $this->upgrader->strings['skin_before_update_header'] . '

', $title, $this->upgrader->update_current, $this->upgrader->update_count ); echo ''; // This progress messages div gets moved via JavaScript when clicking on "Show details.". echo '

'; $this->flush_output(); } /** * @param string $title */ public function after( $title = '' ) { echo '

'; if ( $this->error || ! $this->result ) { if ( $this->error ) { echo '

' . sprintf( $this->upgrader->strings['skin_update_failed_error'], $title, '' . $this->error . '' ) . '

'; } else { echo '

' . sprintf( $this->upgrader->strings['skin_update_failed'], $title ) . '

'; } echo ''; } if ( $this->result && ! is_wp_error( $this->result ) ) { if ( ! $this->error ) { echo '
' . '

' . sprintf( $this->upgrader->strings['skin_update_successful'], $title ) . ' ' . '

'; } echo ''; } $this->reset(); $this->flush_output(); } /** */ public function reset() { $this->in_loop = false; $this->error = false; } /** */ public function flush_output() { wp_ob_end_flush_all(); flush(); } }