|
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 } |