home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-admin / includes / class-bulk-upgrader-skin.php < prev    next >
Encoding:
PHP Script  |  2017-07-26  |  5.1 KB  |  176 lines

  1. <?php
  2. /**
  3.  * Upgrader API: Bulk_Upgrader_Skin class
  4.  *
  5.  * @package WordPress
  6.  * @subpackage Upgrader
  7.  * @since 4.6.0
  8.  */
  9.  
  10. /**
  11.  * Generic Bulk Upgrader Skin for WordPress Upgrades.
  12.  *
  13.  * @since 3.0.0
  14.  * @since 4.6.0 Moved to its own file from wp-admin/includes/class-wp-upgrader-skins.php.
  15.  *
  16.  * @see WP_Upgrader_Skin
  17.  */
  18. class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
  19.     public $in_loop = false;
  20.     /**
  21.      * @var string|false
  22.      */
  23.     public $error = false;
  24.  
  25.     /**
  26.      *
  27.      * @param array $args
  28.      */
  29.     public function __construct($args = array()) {
  30.         $defaults = array( 'url' => '', 'nonce' => '' );
  31.         $args = wp_parse_args($args, $defaults);
  32.  
  33.         parent::__construct($args);
  34.     }
  35.  
  36.     /**
  37.      */
  38.     public function add_strings() {
  39.         $this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.');
  40.         /* translators: 1: Title of an update, 2: Error message */
  41.         $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: %2$s');
  42.         /* translators: 1: Title of an update */
  43.         $this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.');
  44.         /* translators: 1: Title of an update */
  45.         $this->upgrader->strings['skin_update_successful'] = __( '%1$s updated successfully.' );
  46.         $this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.');
  47.     }
  48.  
  49.     /**
  50.      *
  51.      * @param string $string
  52.      */
  53.     public function feedback($string) {
  54.         if ( isset( $this->upgrader->strings[$string] ) )
  55.             $string = $this->upgrader->strings[$string];
  56.  
  57.         if ( strpos($string, '%') !== false ) {
  58.             $args = func_get_args();
  59.             $args = array_splice($args, 1);
  60.             if ( $args ) {
  61.                 $args = array_map( 'strip_tags', $args );
  62.                 $args = array_map( 'esc_html', $args );
  63.                 $string = vsprintf($string, $args);
  64.             }
  65.         }
  66.         if ( empty($string) )
  67.             return;
  68.         if ( $this->in_loop )
  69.             echo "$string<br />\n";
  70.         else
  71.             echo "<p>$string</p>\n";
  72.     }
  73.  
  74.     /**
  75.      */
  76.     public function header() {
  77.         // Nothing, This will be displayed within a iframe.
  78.     }
  79.  
  80.     /**
  81.      */
  82.     public function footer() {
  83.         // Nothing, This will be displayed within a iframe.
  84.     }
  85.  
  86.     /**
  87.      *
  88.      * @param string|WP_Error $error
  89.      */
  90.     public function error($error) {
  91.         if ( is_string($error) && isset( $this->upgrader->strings[$error] ) )
  92.             $this->error = $this->upgrader->strings[$error];
  93.  
  94.         if ( is_wp_error($error) ) {
  95.             $messages = array();
  96.             foreach ( $error->get_error_messages() as $emessage ) {
  97.                 if ( $error->get_error_data() && is_string( $error->get_error_data() ) )
  98.                     $messages[] = $emessage . ' ' . esc_html( strip_tags( $error->get_error_data() ) );
  99.                 else
  100.                     $messages[] = $emessage;
  101.             }
  102.             $this->error = implode(', ', $messages);
  103.         }
  104.         echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').hide();</script>';
  105.     }
  106.  
  107.     /**
  108.      */
  109.     public function bulk_header() {
  110.         $this->feedback('skin_upgrade_start');
  111.     }
  112.  
  113.     /**
  114.      */
  115.     public function bulk_footer() {
  116.         $this->feedback('skin_upgrade_end');
  117.     }
  118.  
  119.     /**
  120.      *
  121.      * @param string $title
  122.      */
  123.     public function before($title = '') {
  124.         $this->in_loop = true;
  125.         printf( '<h2>' . $this->upgrader->strings['skin_before_update_header'] . ' <span class="spinner waiting-' . $this->upgrader->update_current . '"></span></h2>', $title, $this->upgrader->update_current, $this->upgrader->update_count );
  126.         echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').css("display", "inline-block");</script>';
  127.         // This progress messages div gets moved via JavaScript when clicking on "Show details.".
  128.         echo '<div class="update-messages hide-if-js" id="progress-' . esc_attr($this->upgrader->update_current) . '"><p>';
  129.         $this->flush_output();
  130.     }
  131.  
  132.     /**
  133.      *
  134.      * @param string $title
  135.      */
  136.     public function after($title = '') {
  137.         echo '</p></div>';
  138.         if ( $this->error || ! $this->result ) {
  139.             if ( $this->error ) {
  140.                 echo '<div class="error"><p>' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, '<strong>' . $this->error . '</strong>' ) . '</p></div>';
  141.             } else {
  142.                 echo '<div class="error"><p>' . sprintf($this->upgrader->strings['skin_update_failed'], $title) . '</p></div>';
  143.             }
  144.  
  145.             echo '<script type="text/javascript">jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').show();</script>';
  146.         }
  147.         if ( $this->result && ! is_wp_error( $this->result ) ) {
  148.             if ( ! $this->error ) {
  149.                 echo '<div class="updated js-update-details" data-update-details="progress-' . esc_attr( $this->upgrader->update_current ) . '">' .
  150.                     '<p>' . sprintf( $this->upgrader->strings['skin_update_successful'], $title ) .
  151.                     ' <button type="button" class="hide-if-no-js button-link js-update-details-toggle" aria-expanded="false">' . __( 'Show details.' ) . '</button>' .
  152.                     '</p></div>';
  153.             }
  154.  
  155.             echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').hide();</script>';
  156.         }
  157.  
  158.         $this->reset();
  159.         $this->flush_output();
  160.     }
  161.  
  162.     /**
  163.      */
  164.     public function reset() {
  165.         $this->in_loop = false;
  166.         $this->error = false;
  167.     }
  168.  
  169.     /**
  170.      */
  171.     public function flush_output() {
  172.         wp_ob_end_flush_all();
  173.         flush();
  174.     }
  175. }
  176.