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

  1. <?php
  2. /**
  3.  * Upgrader API: Automatic_Upgrader_Skin class
  4.  *
  5.  * @package WordPress
  6.  * @subpackage Upgrader
  7.  * @since 4.6.0
  8.  */
  9.  
  10. /**
  11.  * Upgrader Skin for Automatic WordPress Upgrades
  12.  *
  13.  * This skin is designed to be used when no output is intended, all output
  14.  * is captured and stored for the caller to process and log/email/discard.
  15.  *
  16.  * @since 3.7.0
  17.  * @since 4.6.0 Moved to its own file from wp-admin/includes/class-wp-upgrader-skins.php.
  18.  *
  19.  * @see Bulk_Upgrader_Skin
  20.  */
  21. class Automatic_Upgrader_Skin extends WP_Upgrader_Skin {
  22.     protected $messages = array();
  23.  
  24.     /**
  25.      * Determines whether the upgrader needs FTP/SSH details in order to connect
  26.      * to the filesystem.
  27.      *
  28.      * @since 3.7.0
  29.      * @since 4.6.0 The `$context` parameter default changed from `false` to an empty string.
  30.      *
  31.      * @see request_filesystem_credentials()
  32.      *
  33.      * @param bool   $error                        Optional. Whether the current request has failed to connect.
  34.      *                                             Default false.
  35.      * @param string $context                      Optional. Full path to the directory that is tested
  36.      *                                             for being writable. Default empty.
  37.      * @param bool   $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable. Default false.
  38.      * @return bool True on success, false on failure.
  39.      */
  40.     public function request_filesystem_credentials( $error = false, $context = '', $allow_relaxed_file_ownership = false ) {
  41.         if ( $context ) {
  42.             $this->options['context'] = $context;
  43.         }
  44.         // TODO: fix up request_filesystem_credentials(), or split it, to allow us to request a no-output version
  45.         // This will output a credentials form in event of failure, We don't want that, so just hide with a buffer
  46.         ob_start();
  47.         $result = parent::request_filesystem_credentials( $error, $context, $allow_relaxed_file_ownership );
  48.         ob_end_clean();
  49.         return $result;
  50.     }
  51.  
  52.     /**
  53.      *
  54.      * @return array
  55.      */
  56.     public function get_upgrade_messages() {
  57.         return $this->messages;
  58.     }
  59.  
  60.     /**
  61.      *
  62.      * @param string|array|WP_Error $data
  63.      */
  64.     public function feedback( $data ) {
  65.         if ( is_wp_error( $data ) ) {
  66.             $string = $data->get_error_message();
  67.         } elseif ( is_array( $data ) ) {
  68.             return;
  69.         } else {
  70.             $string = $data;
  71.         }
  72.         if ( ! empty( $this->upgrader->strings[ $string ] ) )
  73.             $string = $this->upgrader->strings[ $string ];
  74.  
  75.         if ( strpos( $string, '%' ) !== false ) {
  76.             $args = func_get_args();
  77.             $args = array_splice( $args, 1 );
  78.             if ( ! empty( $args ) )
  79.                 $string = vsprintf( $string, $args );
  80.         }
  81.  
  82.         $string = trim( $string );
  83.  
  84.         // Only allow basic HTML in the messages, as it'll be used in emails/logs rather than direct browser output.
  85.         $string = wp_kses( $string, array(
  86.             'a' => array(
  87.                 'href' => true
  88.             ),
  89.             'br' => true,
  90.             'em' => true,
  91.             'strong' => true,
  92.         ) );
  93.  
  94.         if ( empty( $string ) )
  95.             return;
  96.  
  97.         $this->messages[] = $string;
  98.     }
  99.  
  100.     /**
  101.      */
  102.     public function header() {
  103.         ob_start();
  104.     }
  105.  
  106.     /**
  107.      */
  108.     public function footer() {
  109.         $output = ob_get_clean();
  110.         if ( ! empty( $output ) )
  111.             $this->feedback( $output );
  112.     }
  113. }
  114.