PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.2
6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 5.2.2 5.3 All 153 releases
← All changes | class/class-mainwp-wp-cli-command.php +728 -758 5.34.2 View file →
@@ -4,9 +4,9 @@
4 4 *
5 5 * This file extends the WP-CLI and provides a set of SubCommands to Control your
6 6 * Child Sites that are added to the MainWP Dashboard.
7 7 *
8 - * @devtodo: allow to add or remove child sites
8 + * @todo: allow to add or remove child sites
9 9 * @package MainWP/Dashboard
10 10 */
11 11
12 12 namespace MainWP\Dashboard;
@@ -12,9 +12,9 @@
12 12 namespace MainWP\Dashboard;
13 13
14 14 // Exit if access directly.
15 15 if ( ! defined( 'WP_CLI' ) ) {
16 - return; // NOSONAR - jump to avoid CLI.
16 + return;
17 17 }
18 18
19 19 /**
20 20 * Class MainWP_WP_CLI_Command
@@ -22,842 +22,812 @@
22 22 * Manage all child sites added to the MainWP Dashboard.
23 23 *
24 24 * @package MainWP\Dashboard
25 25 */
26 -class MainWP_WP_CLI_Command extends \WP_CLI_Command { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
26 +class MainWP_WP_CLI_Command extends \WP_CLI_Command {
27 27
28 - /**
29 - * Method init()
30 - *
31 - * Initiate the MainWP CLI after all Plugins have loaded.
32 - */
33 - public static function init() {
34 - add_action( 'plugins_loaded', array( static::class, 'init_wpcli_commands' ), 99999 );
35 - }
28 + /**
29 + * Method init()
30 + *
31 + * Initiate the MainWP CLI after all Plugins have loaded.
32 + */
33 + public static function init() {
34 + add_action( 'plugins_loaded', array( self::class, 'init_wpcli_commands' ), 99999 );
35 + }
36 36
37 - /**
38 - * Method init_wpcli_commands
39 - *
40 - * Adds the MainWP WP CLI Commands via WP_CLI::add_command
41 - */
42 - public static function init_wpcli_commands() {
43 - \WP_CLI::add_command( 'mainwp', static::class );
44 - }
37 + /**
38 + * Method init_wpcli_commands
39 + *
40 + * Adds the MainWP WP CLI Commands via WP_CLI::add_command
41 + */
42 + public static function init_wpcli_commands() {
43 + \WP_CLI::add_command( 'mainwp', self::class );
44 + }
45 45
46 - /**
47 - * List information about added child sites.
48 - *
49 - * ## OPTIONS
50 - *
51 - * [--list]
52 - * : Get a list of all child sites
53 - *
54 - * [--count]
55 - * : If set, count child sites.
56 - *
57 - *
58 - * ## EXAMPLES
59 - *
60 - * wp mainwp sites --list
61 - * wp mainwp sites --all-sites-count
62 - *
63 - * ## Synopsis [--list] [--all-sites-count]
64 - *
65 - * @param array $args Function arguments.
66 - * @param array $assoc_args Function associate arguments.
67 - *
68 - * @uses \MainWP\Dashboard\MainWP_DB::query()
69 - * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
70 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
71 - * @uses \MainWP\Dashboard\MainWP_DB::free_result()
72 - * @uses \MainWP\Dashboard\MainWP_DB::data_seek()
73 - */
74 - public function sites( $args, $assoc_args ) {
46 + /**
47 + * List information about added child sites.
48 + *
49 + * ## OPTIONS
50 + *
51 + * [--list]
52 + * : Get a list of all child sites
53 + *
54 + * [--count]
55 + * : If set, count child sites.
56 + *
57 + *
58 + * ## EXAMPLES
59 + *
60 + * wp mainwp sites --list
61 + * wp mainwp sites --all-sites-count
62 + *
63 + * ## Synopsis [--list] [--all-sites-count]
64 + *
65 + * @param array $args Function arguments.
66 + * @param array $assoc_args Function associate arguments.
67 + *
68 + * @uses \MainWP\Dashboard\MainWP_DB::query()
69 + * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
70 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
71 + * @uses \MainWP\Dashboard\MainWP_DB::free_result()
72 + * @uses \MainWP\Dashboard\MainWP_DB::data_seek()
73 + */
74 + public function sites( $args, $assoc_args ) {
75 75
76 - // support new mainwp sites cli commands.
77 - $handle = MainWP_WP_CLI_Handle::get_assoc_args_commands( 'sites', $assoc_args );
78 - if ( ! empty( $handle ) ) {
79 - MainWP_WP_CLI_Handle::handle_cli_callback( 'sites', $args, $assoc_args );
80 - return;
81 - }
76 + // support new mainwp sites cli commands.
77 + $handle = MainWP_WP_CLI_Handle::get_assoc_args_commands( 'sites', $assoc_args );
78 + if ( ! empty( $handle ) ) {
79 + MainWP_WP_CLI_Handle::handle_cli_callback( 'sites', $args, $assoc_args );
80 + return;
81 + }
82 82
83 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
83 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
84 84
85 - $idLength = strlen( 'id' );
86 - $nameLength = strlen( 'name' );
87 - $urlLength = strlen( 'url' );
88 - $versionLength = strlen( 'version' );
89 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
90 - if ( $idLength < strlen( $website->id ) ) {
91 - $idLength = strlen( $website->id );
92 - }
93 - if ( $nameLength < strlen( $website->name ) ) {
94 - $nameLength = strlen( $website->name );
95 - }
96 - if ( $urlLength < strlen( $website->url ) ) {
97 - $urlLength = strlen( $website->url );
98 - }
99 - if ( $versionLength < strlen( $website->version ) ) {
100 - $versionLength = strlen( $website->version );
101 - }
102 - }
103 - MainWP_DB::data_seek( $websites, 0 );
85 + $idLength = strlen( 'id' );
86 + $nameLength = strlen( 'name' );
87 + $urlLength = strlen( 'url' );
88 + $versionLength = strlen( 'version' );
89 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
90 + if ( $idLength < strlen( $website->id ) ) {
91 + $idLength = strlen( $website->id );
92 + }
93 + if ( $nameLength < strlen( $website->name ) ) {
94 + $nameLength = strlen( $website->name );
95 + }
96 + if ( $urlLength < strlen( $website->url ) ) {
97 + $urlLength = strlen( $website->url );
98 + }
99 + if ( $versionLength < strlen( $website->version ) ) {
100 + $versionLength = strlen( $website->version );
101 + }
102 + }
103 + MainWP_DB::data_seek( $websites, 0 );
104 104
105 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $urlLength + 2 ) . "s+%'--" . ( $versionLength + 2 ) . 's+', '', '', '', '' ) );
106 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $urlLength . 's | %-' . $versionLength . 's |', 'id', 'name', 'url', 'version' ) );
107 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $urlLength + 2 ) . "s+%'--" . ( $versionLength + 2 ) . 's+', '', '', '', '' ) );
105 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $urlLength + 2 ) . "s+%'--" . ( $versionLength + 2 ) . 's+', '', '', '', '' ) );
106 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $urlLength . 's | %-' . $versionLength . 's |', 'id', 'name', 'url', 'version' ) );
107 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $urlLength + 2 ) . "s+%'--" . ( $versionLength + 2 ) . 's+', '', '', '', '' ) );
108 108
109 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
110 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $urlLength . 's | %-' . $versionLength . 's |', $website->id, $website->name, $website->url, $website->version ) );
111 - }
109 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
110 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $urlLength . 's | %-' . $versionLength . 's |', $website->id, $website->name, $website->url, $website->version ) );
111 + }
112 112
113 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $urlLength + 2 ) . "s+%'--" . ( $versionLength + 2 ) . 's+', '', '', '', '' ) );
114 - MainWP_DB::free_result( $websites );
115 - }
113 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $urlLength + 2 ) . "s+%'--" . ( $versionLength + 2 ) . 's+', '', '', '', '' ) );
114 + MainWP_DB::free_result( $websites );
115 + }
116 116
117 - /**
118 - * Site commands.
119 - *
120 - * ## OPTIONS
121 - *
122 - * [--site]
123 - * : Get site data
124 - *
125 - * [--site-info]
126 - * : If set, get site info.
127 - *
128 - *
129 - * ## EXAMPLES
130 - *
131 - * wp mainwp site --site [<websiteid>]
132 - * wp mainwp site --site-info [<websiteid>]
133 - *
134 - * ## Synopsis [--site] [--site-info] [...]
135 - *
136 - * @param array $args Function arguments.
137 - * @param array $assoc_args Function associate arguments.
138 - */
139 - public function site( $args, $assoc_args ) {
140 - MainWP_WP_CLI_Handle::handle_cli_callback( 'site', $args, $assoc_args );
141 - }
117 + /**
118 + * Site commands.
119 + *
120 + * ## OPTIONS
121 + *
122 + * [--site]
123 + * : Get site data
124 + *
125 + * [--site-info]
126 + * : If set, get site info.
127 + *
128 + *
129 + * ## EXAMPLES
130 + *
131 + * wp mainwp site --site [<websiteid>]
132 + * wp mainwp site --site-info [<websiteid>]
133 + *
134 + * ## Synopsis [--site] [--site-info] [...]
135 + *
136 + * @param array $args Function arguments.
137 + * @param array $assoc_args Function associate arguments.
138 + */
139 + public function site( $args, $assoc_args ) {
140 + MainWP_WP_CLI_Handle::handle_cli_callback( 'site', $args, $assoc_args );
141 + }
142 142
143 + /**
144 + * Updates commands.
145 + *
146 + * ## OPTIONS
147 + *
148 + * [--available-updates]
149 + * : Get available updates
150 + *
151 + * [--ignored-plugins-updates]
152 + * : If set, get ignored plugins updates.
153 + *
154 + *
155 + * ## EXAMPLES
156 + *
157 + * wp mainwp updates --available-updates
158 + * wp mainwp updates --ignored-plugins-updates
159 + *
160 + * ## Synopsis [--available-updates] [--ignored-plugins-updates] [...]
161 + *
162 + * @param array $args Function arguments.
163 + * @param array $assoc_args Function associate arguments.
164 + */
165 + public function updates( $args, $assoc_args ) {
166 + MainWP_WP_CLI_Handle::handle_cli_callback( 'updates', $args, $assoc_args );
167 + }
143 168
144 - /**
145 - * Updates commands.
146 - *
147 - * ## OPTIONS
148 - *
149 - * [--available-updates <websiteid>]
150 - * : Get available updates
151 - *
152 - * [--ignored-plugins-updates <websiteid>]
153 - * : If set, get ignored plugins updates.
154 - *
155 - * [--site-ignored-plugins-updates <websiteid>]
156 - * : If set, get ignored plugins updates of site.
157 - *
158 - * [--ignored-themes-updates <websiteid>]
159 - * : If set, get ignored themes updates.
160 - *
161 - * [--site-ignored-themes-updates <websiteid>]
162 - * : If set, get ignored themes updates of site.
163 - *
164 - * [--ignore-updates --type=[type] --slug=[slug]]
165 - * : If set, ignored updates.
166 - *
167 - * [--ignore-update <websiteid> --type=[type] --slug=[slug]]
168 - * : If set, ignored update.
169 - *
170 - * [--unignore-updates --type=[type] --slug=[slug]]
171 - * : If set, unignore updates.
172 - *
173 - * [--unignore-update <websiteid> --type=[type] --slug=[slug]]
174 - * : If set, unignore update.
175 - *
176 - *
177 - * ## EXAMPLES
178 - *
179 - * wp mainwp updates --available-updates
180 - * wp mainwp updates --ignored-plugins-updates
181 - * wp mainwp updates --site-ignored-plugins-updates 3
182 - *
183 - * ## Synopsis [--available-updates] [--ignored-plugins-updates] [--site-ignored-plugins-updates] [...]
184 - *
185 - * @param array $args Function arguments.
186 - * @param array $assoc_args Function associate arguments.
187 - */
188 - public function updates( $args, $assoc_args ) {
189 - MainWP_WP_CLI_Handle::handle_cli_callback( 'updates', $args, $assoc_args );
190 - }
169 + /**
170 + * Sync Data with Child Sites
171 + *
172 + * ## OPTIONS
173 + *
174 + * [<websiteid>]
175 + * : The id (or ids, comma separated) of the child sites that need to be synced.
176 + *
177 + * [--all]
178 + * : If set, all child sites will be synced.
179 + *
180 + * ## EXAMPLES
181 + *
182 + * wp mainwp sync 2,5
183 + * wp mainwp sync --all
184 + *
185 + * ## Synopsis [<websiteid>] [--all]
186 + *
187 + * @param array $args Function arguments.
188 + * @param array $assoc_args Function associate arguments.
189 + *
190 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
191 + * @uses \MainWP\Dashboard\MainWP_DB::query()
192 + * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
193 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
194 + * @uses \MainWP\Dashboard\MainWP_DB::free_result()
195 + * @uses \MainWP\Dashboard\MainWP_Sync::sync_site()
196 + */
197 + public function sync( $args, $assoc_args ) {
198 + $sites = array();
199 + if ( count( $args ) > 0 ) {
200 + $args_exploded = explode( ',', $args[0] );
201 + foreach ( $args_exploded as $arg ) {
202 + if ( ! is_numeric( trim( $arg ) ) ) {
203 + \WP_CLI::error( 'Child site ids should be numeric.' );
204 + }
191 205
192 - /**
193 - * Sync Data with Child Sites
194 - *
195 - * ## OPTIONS
196 - *
197 - * [<websiteid>]
198 - * : The id (or ids, comma separated) of the child sites that need to be synced.
199 - *
200 - * [--all]
201 - * : If set, all child sites will be synced.
202 - *
203 - * ## EXAMPLES
204 - *
205 - * wp mainwp sync 2,5
206 - * wp mainwp sync --all
207 - *
208 - * ## Synopsis [<websiteid>] [--all]
209 - *
210 - * @param array $args Function arguments.
211 - * @param array $assoc_args Function associate arguments.
212 - *
213 - * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
214 - * @uses \MainWP\Dashboard\MainWP_DB::query()
215 - * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
216 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
217 - * @uses \MainWP\Dashboard\MainWP_DB::free_result()
218 - * @uses \MainWP\Dashboard\MainWP_Sync::sync_site()
219 - */
220 - public function sync( $args, $assoc_args ) {
221 - $sites = array();
222 - if ( ! empty( $args ) ) {
223 - $args_exploded = explode( ',', $args[0] );
224 - foreach ( $args_exploded as $arg ) {
225 - if ( ! is_numeric( trim( $arg ) ) ) {
226 - \WP_CLI::error( 'Child site ids should be numeric.' );
227 - }
206 + $sites[] = trim( $arg );
207 + }
208 + }
228 209
229 - $sites[] = trim( $arg );
230 - }
231 - }
210 + if ( ( count( $sites ) == 0 ) && ( ! isset( $assoc_args['all'] ) ) ) {
211 + \WP_CLI::error( 'Please specify one or more child sites, or use --all.' );
212 + }
213 + MainWP_WP_CLI_Handle::handle_sync_sites( $args, $assoc_args );
214 + }
232 215
233 - if ( is_array( $assoc_args ) && isset( $assoc_args['all'] ) ) {
234 - update_option( 'mainwp_last_synced_all_sites', time() );
235 - }
216 + /**
217 + * Reconnect with Child Sites
218 + *
219 + * ## OPTIONS
220 + *
221 + * [<websiteid>]
222 + * : The id (or ids, comma separated) of the child sites that need to be reconnect.
223 + *
224 + * ## EXAMPLES
225 + *
226 + * wp mainwp reconnect 2,5
227 + *
228 + * ## Synopsis [<websiteid>]
229 + *
230 + * @param array $args Function arguments.
231 + * @param array $assoc_args Function associate arguments.
232 + *
233 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
234 + * @uses \MainWP\Dashboard\MainWP_DB::query()
235 + * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
236 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
237 + * @uses \MainWP\Dashboard\MainWP_DB::free_result()
238 + * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::m_reconnect_site()
239 + */
240 + public function reconnect( $args, $assoc_args ) {
241 + $sites = array();
242 + if ( 0 < count( $args ) ) {
243 + $args_exploded = explode( ',', $args[0] );
244 + foreach ( $args_exploded as $arg ) {
245 + if ( ! is_numeric( trim( $arg ) ) ) {
246 + \WP_CLI::error( 'Child site ids should be numeric.' );
247 + }
236 248
237 - if ( empty( $sites ) && ( ! isset( $assoc_args['all'] ) ) ) {
238 - \WP_CLI::error( 'Please specify one or more child sites, or use --all.' );
239 - }
240 - MainWP_WP_CLI_Handle::handle_sync_sites( $args, $assoc_args );
241 - }
249 + $sites[] = trim( $arg );
250 + }
251 + }
242 252
243 - /**
244 - * Reconnect with Child Sites
245 - *
246 - * ## OPTIONS
247 - *
248 - * [<websiteid>]
249 - * : The id (or ids, comma separated) of the child sites that need to be reconnect.
250 - *
251 - * ## EXAMPLES
252 - *
253 - * wp mainwp reconnect 2,5
254 - *
255 - * ## Synopsis [<websiteid>]
256 - *
257 - * @param array $args Function arguments.
258 - * @param array $assoc_args Function associate arguments.
259 - *
260 - * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
261 - * @uses \MainWP\Dashboard\MainWP_DB::query()
262 - * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
263 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
264 - * @uses \MainWP\Dashboard\MainWP_DB::free_result()
265 - * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::m_reconnect_site()
266 - */
267 - public function reconnect( $args, $assoc_args ) { //phpcs:ignore -- NOSONAR - complex.
268 - $sites = array();
269 - if ( ! empty( $args ) ) {
270 - $args_exploded = explode( ',', $args[0] );
271 - foreach ( $args_exploded as $arg ) {
272 - if ( ! is_numeric( trim( $arg ) ) ) {
273 - \WP_CLI::error( 'Child site ids should be numeric.' );
274 - }
253 + if ( count( $sites ) == 0 ) {
254 + \WP_CLI::error( 'Please specify one or more child sites.' );
255 + }
275 256
276 - $sites[] = trim( $arg );
277 - }
278 - }
257 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
258 + \WP_CLI::line( 'Reconnect started' );
259 + $warnings = 0;
260 + $errors = 0;
261 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
262 + if ( ( 0 < count( $sites ) ) && ( ! in_array( $website->id, $sites, true ) ) ) {
263 + continue;
264 + }
265 + \WP_CLI::line( ' -> ' . $website->name . ' (' . $website->url . ')' );
266 + try {
267 + if ( MainWP_Manage_Sites_View::m_reconnect_site( $website ) ) {
268 + \WP_CLI::success( ' Reconnected successfully' );
269 + } else {
270 + \WP_CLI::warning( ' Reconnect failed' );
271 + $warnings++;
272 + }
273 + } catch ( \Exception $e ) {
274 + \WP_CLI::error( ' Reconnect failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
275 + $errors++;
276 + }
277 + }
278 + MainWP_DB::free_result( $websites );
279 + if ( 0 < $errors ) {
280 + \WP_CLI::error( 'Reconnect completed with errors' );
281 + } elseif ( 0 < $warnings ) {
282 + \WP_CLI::warning( 'Reconnect completed with warnings' );
283 + } else {
284 + \WP_CLI::success( 'Reconnect completed' );
285 + }
286 + }
279 287
280 - if ( empty( $sites ) ) {
281 - \WP_CLI::error( 'Please specify one or more child sites.' );
282 - }
283 288
284 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
285 - \WP_CLI::line( 'Reconnect started' );
286 - $warnings = 0;
287 - $errors = 0;
288 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
289 - if ( ( ! empty( $sites ) ) && ( ! in_array( $website->id, $sites, true ) ) ) {
290 - continue;
291 - }
292 - \WP_CLI::line( ' -> ' . $website->name . ' (' . $website->url . ')' );
293 - try {
294 - if ( MainWP_Manage_Sites_View::m_reconnect_site( $website ) ) {
295 - \WP_CLI::success( ' Reconnected successfully' );
296 - } else {
297 - \WP_CLI::warning( ' Reconnect failed' );
298 - ++$warnings;
299 - }
300 - } catch ( \Exception $e ) {
301 - \WP_CLI::error( ' Reconnect failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
302 - ++$errors;
303 - }
304 - }
305 - MainWP_DB::free_result( $websites );
306 - if ( 0 < $errors ) {
307 - \WP_CLI::error( 'Reconnect completed with errors' );
308 - } elseif ( 0 < $warnings ) {
309 - \WP_CLI::warning( 'Reconnect completed with warnings' );
310 - } else {
311 - \WP_CLI::success( 'Reconnect completed' );
312 - }
313 - }
289 + /**
290 + * List information about plugin updates
291 + *
292 + * ## OPTIONS
293 + *
294 + * [<websiteid>]
295 + * : The id (or ids, comma separated) of the child sites that need to be listed/upgraded, when omitted all childsites are used.
296 + *
297 + * [--list]
298 + * : Get a list of plugins with available updates
299 + *
300 + * [--list-all]
301 + * : List all plugins
302 + *
303 + * [--upgrade=<pluginslug>]
304 + * : Update the plugin slugs
305 + *
306 + * [--upgrade-all]
307 + * : Update all plugins
308 + *
309 + * ## EXAMPLES
310 + *
311 + * wp mainwp plugin 2,5 --list
312 + * wp mainwp plugin --list
313 + * wp mainwp plugin 2,5 --list-all
314 + * wp mainwp plugin 2,5 --upgrade-all
315 + * wp mainwp plugin 2,5 --upgrade=mainwpchild
316 + *
317 + * ## Synopsis [<websiteid>] [--list] [--list-all] [--upgrade=<pluginslug>] [--upgrade-all]
318 + *
319 + * @param array $args Function arguments.
320 + * @param array $assoc_args Function associate arguments.
321 + *
322 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
323 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
324 + * @uses \MainWP\Dashboard\MainWP_DB::query()
325 + * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
326 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
327 + * @uses \MainWP\Dashboard\MainWP_Updates_Handler::upgrade_plugin_theme_translation()
328 + * @uses \MainWP\Dashboard\MainWP_Utility::value_to_string()
329 + */
330 + public function plugin( $args, $assoc_args ) { // phpcs:ignore -- Current complexity is the only way to achieve desired results, pull request solutions appreciated.
331 + $sites = array();
332 + if ( 0 < count( $args ) ) {
333 + $args_exploded = explode( ',', $args[0] );
334 + foreach ( $args_exploded as $arg ) {
335 + if ( ! is_numeric( trim( $arg ) ) ) {
336 + \WP_CLI::error( 'Child site IDs should be numeric.' );
337 + }
314 338
339 + $sites[] = trim( $arg );
340 + }
341 + }
315 342
316 - /**
317 - * List information about plugin updates
318 - *
319 - * ## OPTIONS
320 - *
321 - * [<websiteid>]
322 - * : The id (or ids, comma separated) of the child sites that need to be listed/upgraded, when omitted all childsites are used.
323 - *
324 - * [--list]
325 - * : Get a list of plugins with available updates
326 - *
327 - * [--list-all]
328 - * : List all plugins
329 - *
330 - * [--upgrade=<pluginslug>]
331 - * : Update the plugin slugs
332 - *
333 - * [--upgrade-all]
334 - * : Update all plugins
335 - *
336 - * ## EXAMPLES
337 - *
338 - * wp mainwp plugin 2,5 --list
339 - * wp mainwp plugin --list
340 - * wp mainwp plugin 2,5 --list-all
341 - * wp mainwp plugin 2,5 --upgrade-all
342 - * wp mainwp plugin 2,5 --upgrade=mainwpchild
343 - *
344 - * ## Synopsis [<websiteid>] [--list] [--list-all] [--upgrade=<pluginslug>] [--upgrade-all]
345 - *
346 - * @param array $args Function arguments.
347 - * @param array $assoc_args Function associate arguments.
348 - *
349 - * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
350 - * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
351 - * @uses \MainWP\Dashboard\MainWP_DB::query()
352 - * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
353 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
354 - * @uses \MainWP\Dashboard\MainWP_Updates_Handler::upgrade_plugin_theme_translation()
355 - * @uses \MainWP\Dashboard\MainWP_Utility::value_to_string()
356 - */
357 - public function plugin( $args, $assoc_args ) { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated.
358 - $sites = array();
359 - if ( ! empty( $args ) ) {
360 - $args_exploded = explode( ',', $args[0] );
361 - foreach ( $args_exploded as $arg ) {
362 - if ( ! is_numeric( trim( $arg ) ) ) {
363 - \WP_CLI::error( 'Child site IDs should be numeric.' );
364 - }
343 + if ( isset( $assoc_args['list'] ) ) {
344 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
345 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
346 + $websites_to_upgrade = array();
347 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
348 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
349 + continue;
350 + }
365 351
366 - $sites[] = trim( $arg );
367 - }
368 - }
352 + $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
369 353
370 - if ( isset( $assoc_args['list'] ) ) {
371 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
372 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
373 - $websites_to_upgrade = array();
374 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
375 - if ( ! empty( $sites ) && ( ! in_array( $website->id, $sites, true ) ) ) {
376 - continue;
377 - }
354 + if ( is_array( $plugin_upgrades ) ) {
355 + $ignored_plugins = json_decode( $website->ignored_plugins, true );
356 + if ( is_array( $ignored_plugins ) ) {
357 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
358 + }
378 359
379 - $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
360 + $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
361 + if ( is_array( $ignored_plugins ) ) {
362 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
363 + }
380 364
381 - if ( is_array( $plugin_upgrades ) ) {
382 - $ignored_plugins = json_decode( $website->ignored_plugins, true );
383 - if ( is_array( $ignored_plugins ) ) {
384 - $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins );
365 + $tmp = array();
366 + foreach ( $plugin_upgrades as $plugin_upgrade ) {
367 + $tmp[] = array(
368 + 'name' => $plugin_upgrade['update']['slug'],
369 + 'version' => $plugin_upgrade['Version'],
370 + 'new_version' => $plugin_upgrade['update']['new_version'],
371 + );
372 + }
373 + $websites_to_upgrade[] = array(
374 + 'id' => $website->id,
375 + 'name' => $website->name,
376 + 'plugins' => $tmp,
377 + );
378 + }
379 + }
385 380
386 - }
381 + $idLength = strlen( 'id' );
382 + $nameLength = strlen( 'name' );
383 + $pluginLength = strlen( 'plugin' );
384 + $oldVersionLength = strlen( 'version' );
385 + $newVersionLength = strlen( 'new version' );
386 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
387 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
388 + $idLength = strlen( $website_to_upgrade['id'] );
389 + }
390 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
391 + $nameLength = strlen( $website_to_upgrade['name'] );
392 + }
387 393
388 - $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
389 - if ( is_array( $ignored_plugins ) ) {
390 - $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins );
394 + foreach ( $website_to_upgrade['plugins'] as $plugin_to_upgrade ) {
395 + if ( $pluginLength < strlen( $plugin_to_upgrade['name'] ) ) {
396 + $pluginLength = strlen( $plugin_to_upgrade['name'] );
397 + }
398 + if ( $oldVersionLength < strlen( $plugin_to_upgrade['version'] ) ) {
399 + $oldVersionLength = strlen( $plugin_to_upgrade['version'] );
400 + }
401 + if ( $newVersionLength < strlen( $plugin_to_upgrade['new_version'] ) ) {
402 + $newVersionLength = strlen( $plugin_to_upgrade['new_version'] );
403 + }
404 + }
405 + }
391 406
392 - }
407 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
408 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', 'id', 'name', 'plugin', 'version', 'new version' ) );
409 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
393 410
394 - $tmp = array();
395 - foreach ( $plugin_upgrades as $plugin_upgrade ) {
396 - $tmp[] = array(
397 - 'name' => $plugin_upgrade['update']['slug'],
398 - 'version' => $plugin_upgrade['Version'],
399 - 'new_version' => $plugin_upgrade['update']['new_version'],
400 - );
401 - }
402 - $websites_to_upgrade[] = array(
403 - 'id' => $website->id,
404 - 'name' => $website->name,
405 - 'plugins' => $tmp,
406 - );
407 - }
408 - }
411 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
412 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
413 + $idLength = strlen( $website_to_upgrade['id'] );
414 + }
415 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
416 + $nameLength = strlen( $website_to_upgrade['name'] );
417 + }
409 418
410 - $idLength = strlen( 'id' );
411 - $nameLength = strlen( 'name' );
412 - $pluginLength = strlen( 'plugin' );
413 - $oldVersionLength = strlen( 'version' );
414 - $newVersionLength = strlen( 'new version' );
415 - foreach ( $websites_to_upgrade as $website_to_upgrade ) {
416 - if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
417 - $idLength = strlen( $website_to_upgrade['id'] );
418 - }
419 - if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
420 - $nameLength = strlen( $website_to_upgrade['name'] );
421 - }
419 + $i = 0;
420 + foreach ( $website_to_upgrade['plugins'] as $plugin_to_upgrade ) {
421 + if ( 0 == $i ) {
422 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', $website_to_upgrade['id'], $website_to_upgrade['name'], $plugin_to_upgrade['name'], $plugin_to_upgrade['version'], $plugin_to_upgrade['new_version'] ) );
423 + } else {
424 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', '', '', $plugin_to_upgrade['name'], $plugin_to_upgrade['version'], $plugin_to_upgrade['new_version'] ) );
425 + }
426 + $i++;
427 + }
428 + }
422 429
423 - foreach ( $website_to_upgrade['plugins'] as $plugin_to_upgrade ) {
424 - if ( $pluginLength < strlen( $plugin_to_upgrade['name'] ) ) {
425 - $pluginLength = strlen( $plugin_to_upgrade['name'] );
426 - }
427 - if ( $oldVersionLength < strlen( $plugin_to_upgrade['version'] ) ) {
428 - $oldVersionLength = strlen( $plugin_to_upgrade['version'] );
429 - }
430 - if ( $newVersionLength < strlen( $plugin_to_upgrade['new_version'] ) ) {
431 - $newVersionLength = strlen( $plugin_to_upgrade['new_version'] );
432 - }
433 - }
434 - }
430 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
431 + } elseif ( isset( $assoc_args['list-all'] ) ) {
432 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
433 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
434 + $websites_to_list = array();
435 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
436 + if ( ( 0 < count( $sites ) ) && ( ! in_array( $website->id, $sites, true ) ) ) {
437 + continue;
438 + }
435 439
436 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
437 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', 'id', 'name', 'plugin', 'version', 'new version' ) );
438 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
440 + $plugins_to_list = json_decode( $website->plugins, true );
441 + if ( is_array( $plugins_to_list ) ) {
442 + $tmp = array();
443 + foreach ( $plugins_to_list as $plugin ) {
444 + $tmp[] = array(
445 + 'name' => $plugin['slug'],
446 + 'version' => $plugin['version'],
447 + );
448 + }
449 + $websites_to_list[] = array(
450 + 'id' => $website->id,
451 + 'name' => $website->name,
452 + 'plugins' => $tmp,
453 + );
454 + }
455 + }
439 456
440 - foreach ( $websites_to_upgrade as $website_to_upgrade ) {
441 - if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
442 - $idLength = strlen( $website_to_upgrade['id'] );
443 - }
444 - if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
445 - $nameLength = strlen( $website_to_upgrade['name'] );
446 - }
457 + $idLength = strlen( 'id' );
458 + $nameLength = strlen( 'name' );
459 + $pluginLength = strlen( 'plugin' );
460 + $oldVersionLength = strlen( 'version' );
461 + foreach ( $websites_to_list as $website_item ) {
462 + if ( $idLength < strlen( $website_item['id'] ) ) {
463 + $idLength = strlen( $website_item['id'] );
464 + }
465 + if ( $nameLength < strlen( $website_item['name'] ) ) {
466 + $nameLength = strlen( $website_item['name'] );
467 + }
447 468
448 - $i = 0;
449 - foreach ( $website_to_upgrade['plugins'] as $plugin_to_upgrade ) {
450 - if ( 0 === $i ) {
451 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', $website_to_upgrade['id'], $website_to_upgrade['name'], $plugin_to_upgrade['name'], $plugin_to_upgrade['version'], $plugin_to_upgrade['new_version'] ) );
452 - } else {
453 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', '', '', $plugin_to_upgrade['name'], $plugin_to_upgrade['version'], $plugin_to_upgrade['new_version'] ) );
454 - }
455 - ++$i;
456 - }
457 - }
469 + foreach ( $website_item['plugins'] as $plugin_item ) {
470 + if ( $pluginLength < strlen( $plugin_item['name'] ) ) {
471 + $pluginLength = strlen( $plugin_item['name'] );
472 + }
473 + if ( $oldVersionLength < strlen( $plugin_item['version'] ) ) {
474 + $oldVersionLength = strlen( $plugin_item['version'] );
475 + }
476 + }
477 + }
458 478
459 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
460 - } elseif ( isset( $assoc_args['list-all'] ) ) {
461 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
462 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
463 - $websites_to_list = array();
464 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
465 - if ( ( ! empty( $sites ) ) && ( ! in_array( $website->id, $sites, true ) ) ) {
466 - continue;
467 - }
479 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
480 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', 'id', 'name', 'plugin', 'version' ) );
481 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
468 482
469 - $plugins_to_list = json_decode( $website->plugins, true );
470 - if ( is_array( $plugins_to_list ) ) {
471 - $tmp = array();
472 - foreach ( $plugins_to_list as $plugin ) {
473 - $tmp[] = array(
474 - 'name' => $plugin['slug'],
475 - 'version' => $plugin['version'],
476 - );
477 - }
478 - $websites_to_list[] = array(
479 - 'id' => $website->id,
480 - 'name' => $website->name,
481 - 'plugins' => $tmp,
482 - );
483 - }
484 - }
483 + foreach ( $websites_to_list as $website_item ) {
484 + if ( $idLength < strlen( $website_item['id'] ) ) {
485 + $idLength = strlen( $website_item['id'] );
486 + }
487 + if ( $nameLength < strlen( $website_item['name'] ) ) {
488 + $nameLength = strlen( $website_item['name'] );
489 + }
485 490
486 - $idLength = strlen( 'id' );
487 - $nameLength = strlen( 'name' );
488 - $pluginLength = strlen( 'plugin' );
489 - $oldVersionLength = strlen( 'version' );
490 - foreach ( $websites_to_list as $website_item ) {
491 - if ( $idLength < strlen( $website_item['id'] ) ) {
492 - $idLength = strlen( $website_item['id'] );
493 - }
494 - if ( $nameLength < strlen( $website_item['name'] ) ) {
495 - $nameLength = strlen( $website_item['name'] );
496 - }
491 + $i = 0;
492 + foreach ( $website_item['plugins'] as $plugin_item ) {
493 + if ( 0 == $i ) {
494 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', $website_item['id'], $website_item['name'], $plugin_item['name'], $plugin_item['version'] ) );
495 + } else {
496 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', '', '', $plugin_item['name'], $plugin_item['version'] ) );
497 + }
498 + $i++;
499 + }
500 + }
497 501
498 - foreach ( $website_item['plugins'] as $plugin_item ) {
499 - if ( $pluginLength < strlen( $plugin_item['name'] ) ) {
500 - $pluginLength = strlen( $plugin_item['name'] );
501 - }
502 - if ( $oldVersionLength < strlen( $plugin_item['version'] ) ) {
503 - $oldVersionLength = strlen( $plugin_item['version'] );
504 - }
505 - }
506 - }
502 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
503 + } elseif ( isset( $assoc_args['upgrade'] ) || isset( $assoc_args['upgrade-all'] ) ) {
507 504
508 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
509 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', 'id', 'name', 'plugin', 'version' ) );
510 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
505 + $pluginSlugs = array();
506 + if ( isset( $assoc_args['upgrade'] ) ) {
507 + $pluginSlugs = explode( ',', $assoc_args['upgrade'] );
508 + }
511 509
512 - foreach ( $websites_to_list as $website_item ) {
513 - if ( $idLength < strlen( $website_item['id'] ) ) {
514 - $idLength = strlen( $website_item['id'] );
515 - }
516 - if ( $nameLength < strlen( $website_item['name'] ) ) {
517 - $nameLength = strlen( $website_item['name'] );
518 - }
510 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
511 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
512 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
513 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
514 + continue;
515 + }
519 516
520 - $i = 0;
521 - foreach ( $website_item['plugins'] as $plugin_item ) {
522 - if ( 0 === $i ) {
523 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', $website_item['id'], $website_item['name'], $plugin_item['name'], $plugin_item['version'] ) );
524 - } else {
525 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', '', '', $plugin_item['name'], $plugin_item['version'] ) );
526 - }
527 - ++$i;
528 - }
529 - }
517 + $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
530 518
531 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
532 - } elseif ( isset( $assoc_args['upgrade'] ) || isset( $assoc_args['upgrade-all'] ) ) {
519 + if ( is_array( $plugin_upgrades ) ) {
520 + $ignored_plugins = json_decode( $website->ignored_plugins, true );
521 + if ( is_array( $ignored_plugins ) ) {
522 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
523 + }
533 524
534 - $pluginSlugs = array();
535 - if ( isset( $assoc_args['upgrade'] ) ) {
536 - $pluginSlugs = explode( ',', $assoc_args['upgrade'] );
537 - }
525 + $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
526 + if ( is_array( $ignored_plugins ) ) {
527 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
528 + }
538 529
539 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
540 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
541 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
542 - if ( ! empty( $sites ) && ( ! in_array( $website->id, $sites, true ) ) ) {
543 - continue;
544 - }
530 + $tmp = array();
531 + foreach ( $plugin_upgrades as $key => $plugin_upgrade ) {
532 + if ( ( count( $pluginSlugs ) > 0 ) && ( ! in_array( $plugin_upgrade['update']['slug'], $pluginSlugs, true ) ) ) {
533 + continue;
534 + }
545 535
546 - $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
536 + $tmp[] = $key;
537 + }
547 538
548 - if ( is_array( $plugin_upgrades ) ) {
549 - $ignored_plugins = json_decode( $website->ignored_plugins, true );
550 - if ( is_array( $ignored_plugins ) ) {
551 - $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins );
539 + if ( count( $tmp ) == 0 ) {
540 + \WP_CLI::line( 'No available plugin updates for ' . $website->name );
552 541
553 - }
542 + continue;
543 + }
554 544
555 - $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
556 - if ( is_array( $ignored_plugins ) ) {
557 - $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins );
545 + \WP_CLI::line( 'Updating ' . count( $tmp ) . ' plugins for ' . $website->name );
558 546
559 - }
547 + try {
548 + MainWP_Updates_Handler::upgrade_plugin_theme_translation( $website->id, 'plugin', implode( ',', $tmp ) );
549 + \WP_CLI::success( 'Updates completed' );
550 + } catch ( \Exception $e ) {
551 + \WP_CLI::error( 'Updates failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
552 + if ( $e->getMesage() == 'WPERROR' ) {
553 + \WP_CLI::debug( 'Error: ' . MainWP_Utility::value_to_string( $e->get_message_extra(), 1 ) );
554 + }
555 + }
556 + }
557 + }
558 + }
559 + }
560 560
561 - $tmp = array();
562 - foreach ( $plugin_upgrades as $key => $plugin_upgrade ) {
563 - if ( ! empty( $pluginSlugs ) && ( ! in_array( $plugin_upgrade['update']['slug'], $pluginSlugs, true ) ) ) {
564 - continue;
565 - }
561 + /**
562 + * List information about theme updates
563 + *
564 + * ## OPTIONS
565 + *
566 + * [<websiteid>]
567 + * : The id (or ids, comma separated) of the child sites that need to be listed/upgraded, when omitted all childsites are used.
568 + *
569 + * [--list]
570 + * : Get a list of themes with available updates
571 + *
572 + * [--list-all]
573 + * : list all themes
574 + *
575 + * [--upgrade=<theme>]
576 + * : Update the themes
577 + *
578 + * [--upgrade-all]
579 + * : Update all themes
580 + *
581 + * ## EXAMPLES
582 + *
583 + * wp mainwp theme 2,5 --list
584 + * wp mainwp theme --list
585 + * wp mainwp theme 2,5 --upgrade-all
586 + * wp mainwp theme 2,5 --upgrade=twentysixteen
587 + *
588 + * ## Synopsis [<websiteid>] [--list] [--list-all] [--upgrade=<theme>] [--upgrade-all]
589 + *
590 + * @param array $args Function arguments.
591 + * @param array $assoc_args Function associate arguments.
592 + *
593 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
594 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
595 + * @uses \MainWP\Dashboard\MainWP_DB::query()
596 + * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
597 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
598 + * @uses \MainWP\Dashboard\MainWP_Updates_Handler::upgrade_plugin_theme_translation()
599 + * @uses \MainWP\Dashboard\MainWP_Utility::value_to_string()
600 + */
601 + public function theme( $args, $assoc_args ) { // phpcs:ignore -- Current complexity is the only way to achieve desired results, pull request solutions appreciated.
602 + $sites = array();
603 + if ( count( $args ) > 0 ) {
604 + $args_exploded = explode( ',', $args[0] );
605 + foreach ( $args_exploded as $arg ) {
606 + if ( ! is_numeric( trim( $arg ) ) ) {
607 + \WP_CLI::error( 'Child site IDs should be numeric.' );
608 + }
566 609
567 - $tmp[] = $key;
568 - }
610 + $sites[] = trim( $arg );
611 + }
612 + }
569 613
570 - if ( empty( $tmp ) ) {
571 - \WP_CLI::line( 'No available plugin updates for ' . $website->name );
614 + if ( isset( $assoc_args['list'] ) ) {
615 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
616 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
617 + $websites_to_upgrade = array();
618 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
619 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
620 + continue;
621 + }
572 622
573 - continue;
574 - }
623 + $theme_upgrades = json_decode( $website->theme_upgrades, true );
575 624
576 - \WP_CLI::line( 'Updating ' . count( $tmp ) . ' plugins for ' . $website->name );
625 + if ( is_array( $theme_upgrades ) ) {
626 + $ignored_themes = json_decode( $website->ignored_themes, true );
627 + if ( is_array( $ignored_themes ) ) {
628 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
629 + }
577 630
578 - try {
579 - MainWP_Updates_Handler::upgrade_plugin_theme_translation( $website->id, 'plugin', implode( ',', $tmp ) );
580 - \WP_CLI::success( 'Updates completed' );
581 - } catch ( \Exception $e ) {
582 - \WP_CLI::error( 'Updates failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
583 - if ( $e->getMesage() === 'WPERROR' ) {
584 - \WP_CLI::debug( 'Error: ' . MainWP_Utility::value_to_string( $e->get_message_extra(), 1 ) );
585 - }
586 - }
587 - }
588 - }
589 - }
590 - }
631 + $ignored_themes = json_decode( $userExtension->ignored_themes, true );
632 + if ( is_array( $ignored_themes ) ) {
633 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
634 + }
591 635
592 - /**
593 - * List information about theme updates
594 - *
595 - * ## OPTIONS
596 - *
597 - * [<websiteid>]
598 - * : The id (or ids, comma separated) of the child sites that need to be listed/upgraded, when omitted all childsites are used.
599 - *
600 - * [--list]
601 - * : Get a list of themes with available updates
602 - *
603 - * [--list-all]
604 - * : list all themes
605 - *
606 - * [--upgrade=<theme>]
607 - * : Update the themes
608 - *
609 - * [--upgrade-all]
610 - * : Update all themes
611 - *
612 - * ## EXAMPLES
613 - *
614 - * wp mainwp theme 2,5 --list
615 - * wp mainwp theme --list
616 - * wp mainwp theme 2,5 --upgrade-all
617 - * wp mainwp theme 2,5 --upgrade=twentysixteen
618 - *
619 - * ## Synopsis [<websiteid>] [--list] [--list-all] [--upgrade=<theme>] [--upgrade-all]
620 - *
621 - * @param array $args Function arguments.
622 - * @param array $assoc_args Function associate arguments.
623 - *
624 - * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
625 - * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
626 - * @uses \MainWP\Dashboard\MainWP_DB::query()
627 - * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
628 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
629 - * @uses \MainWP\Dashboard\MainWP_Updates_Handler::upgrade_plugin_theme_translation()
630 - * @uses \MainWP\Dashboard\MainWP_Utility::value_to_string()
631 - */
632 - public function theme( $args, $assoc_args ) { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated.
633 - $sites = array();
634 - if ( ! empty( $args ) ) {
635 - $args_exploded = explode( ',', $args[0] );
636 - foreach ( $args_exploded as $arg ) {
637 - if ( ! is_numeric( trim( $arg ) ) ) {
638 - \WP_CLI::error( 'Child site IDs should be numeric.' );
639 - }
636 + $tmp = array();
637 + foreach ( $theme_upgrades as $theme_upgrade ) {
638 + $tmp[] = array(
639 + 'name' => $theme_upgrade['update']['theme'],
640 + 'version' => $theme_upgrade['Version'],
641 + 'new_version' => $theme_upgrade['update']['new_version'],
642 + );
643 + }
644 + $websites_to_upgrade[] = array(
645 + 'id' => $website->id,
646 + 'name' => $website->name,
647 + 'themes' => $tmp,
648 + );
649 + }
650 + }
640 651
641 - $sites[] = trim( $arg );
642 - }
643 - }
652 + $idLength = strlen( 'id' );
653 + $nameLength = strlen( 'name' );
654 + $themeLength = strlen( 'theme' );
655 + $oldVersionLength = strlen( 'version' );
656 + $newVersionLength = strlen( 'new version' );
657 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
658 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
659 + $idLength = strlen( $website_to_upgrade['id'] );
660 + }
661 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
662 + $nameLength = strlen( $website_to_upgrade['name'] );
663 + }
644 664
645 - if ( isset( $assoc_args['list'] ) ) {
646 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
647 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
648 - $websites_to_upgrade = array();
649 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
650 - if ( ! empty( $sites ) && ( ! in_array( $website->id, $sites, true ) ) ) {
651 - continue;
652 - }
665 + foreach ( $website_to_upgrade['themes'] as $theme_to_upgrade ) {
666 + if ( $themeLength < strlen( $theme_to_upgrade['name'] ) ) {
667 + $themeLength = strlen( $theme_to_upgrade['name'] );
668 + }
669 + if ( $oldVersionLength < strlen( $theme_to_upgrade['version'] ) ) {
670 + $oldVersionLength = strlen( $theme_to_upgrade['version'] );
671 + }
672 + if ( $newVersionLength < strlen( $theme_to_upgrade['new_version'] ) ) {
673 + $newVersionLength = strlen( $theme_to_upgrade['new_version'] );
674 + }
675 + }
676 + }
653 677
654 - $theme_upgrades = json_decode( $website->theme_upgrades, true );
678 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
679 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', 'id', 'name', 'theme', 'version', 'new version' ) );
680 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
655 681
656 - if ( is_array( $theme_upgrades ) ) {
657 - $ignored_themes = json_decode( $website->ignored_themes, true );
658 - if ( is_array( $ignored_themes ) ) {
659 - $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes );
660 - }
682 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
683 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
684 + $idLength = strlen( $website_to_upgrade['id'] );
685 + }
686 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
687 + $nameLength = strlen( $website_to_upgrade['name'] );
688 + }
661 689
662 - $ignored_themes = json_decode( $userExtension->ignored_themes, true );
663 - if ( is_array( $ignored_themes ) ) {
664 - $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes );
665 - }
690 + $i = 0;
691 + foreach ( $website_to_upgrade['themes'] as $theme_to_upgrade ) {
692 + if ( 0 == $i ) {
693 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', $website_to_upgrade['id'], $website_to_upgrade['name'], $theme_to_upgrade['name'], $theme_to_upgrade['version'], $theme_to_upgrade['new_version'] ) );
694 + } else {
695 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', '', '', $theme_to_upgrade['name'], $theme_to_upgrade['version'], $theme_to_upgrade['new_version'] ) );
696 + }
697 + $i++;
698 + }
699 + }
666 700
667 - $tmp = array();
668 - foreach ( $theme_upgrades as $theme_upgrade ) {
669 - $tmp[] = array(
670 - 'name' => $theme_upgrade['update']['theme'],
671 - 'version' => $theme_upgrade['Version'],
672 - 'new_version' => $theme_upgrade['update']['new_version'],
673 - );
674 - }
675 - $websites_to_upgrade[] = array(
676 - 'id' => $website->id,
677 - 'name' => $website->name,
678 - 'themes' => $tmp,
679 - );
680 - }
681 - }
701 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
702 + } elseif ( isset( $assoc_args['list-all'] ) ) {
703 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
704 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
705 + $websites_to_upgrade = array();
706 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
707 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
708 + continue;
709 + }
710 + $theme_to_list = json_decode( $website->themes, true );
711 + if ( is_array( $theme_to_list ) ) {
712 + $tmp = array();
713 + foreach ( $theme_to_list as $theme ) {
714 + $tmp[] = array(
715 + 'name' => $theme['name'],
716 + 'active' => $theme['active'] ? 'yes' : '',
717 + 'version' => $theme['version'],
718 + );
719 + }
720 + $websites_to_upgrade[] = array(
721 + 'id' => $website->id,
722 + 'name' => $website->name,
723 + 'themes' => $tmp,
724 + );
725 + }
726 + }
682 727
683 - $idLength = strlen( 'id' );
684 - $nameLength = strlen( 'name' );
685 - $themeLength = strlen( 'theme' );
686 - $oldVersionLength = strlen( 'version' );
687 - $newVersionLength = strlen( 'new version' );
688 - foreach ( $websites_to_upgrade as $website_to_upgrade ) {
689 - if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
690 - $idLength = strlen( $website_to_upgrade['id'] );
691 - }
692 - if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
693 - $nameLength = strlen( $website_to_upgrade['name'] );
694 - }
728 + $idLength = strlen( 'id' );
729 + $nameLength = strlen( 'name' );
730 + $themeLength = strlen( 'theme' );
731 + $oldVersionLength = strlen( 'version' );
732 + $activeLength = strlen( 'active' );
733 + foreach ( $websites_to_upgrade as $website_item ) {
734 + if ( $idLength < strlen( $website_item['id'] ) ) {
735 + $idLength = strlen( $website_item['id'] );
736 + }
737 + if ( $nameLength < strlen( $website_item['name'] ) ) {
738 + $nameLength = strlen( $website_item['name'] );
739 + }
695 740
696 - foreach ( $website_to_upgrade['themes'] as $theme_to_upgrade ) {
697 - if ( $themeLength < strlen( $theme_to_upgrade['name'] ) ) {
698 - $themeLength = strlen( $theme_to_upgrade['name'] );
699 - }
700 - if ( $oldVersionLength < strlen( $theme_to_upgrade['version'] ) ) {
701 - $oldVersionLength = strlen( $theme_to_upgrade['version'] );
702 - }
703 - if ( $newVersionLength < strlen( $theme_to_upgrade['new_version'] ) ) {
704 - $newVersionLength = strlen( $theme_to_upgrade['new_version'] );
705 - }
706 - }
707 - }
741 + foreach ( $website_item['themes'] as $theme_item ) {
742 + if ( $themeLength < strlen( $theme_item['name'] ) ) {
743 + $themeLength = strlen( $theme_item['name'] );
744 + }
745 + if ( $oldVersionLength < strlen( $theme_item['version'] ) ) {
746 + $oldVersionLength = strlen( $theme_item['version'] );
747 + }
748 + }
749 + }
708 750
709 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
710 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', 'id', 'name', 'theme', 'version', 'new version' ) );
711 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
751 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
752 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', 'id', 'name', 'theme', 'active', 'version' ) );
753 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
712 754
713 - foreach ( $websites_to_upgrade as $website_to_upgrade ) {
714 - if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
715 - $idLength = strlen( $website_to_upgrade['id'] );
716 - }
717 - if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
718 - $nameLength = strlen( $website_to_upgrade['name'] );
719 - }
755 + foreach ( $websites_to_upgrade as $website_item ) {
756 + if ( $idLength < strlen( $website_item['id'] ) ) {
757 + $idLength = strlen( $website_item['id'] );
758 + }
759 + if ( $nameLength < strlen( $website_item['name'] ) ) {
760 + $nameLength = strlen( $website_item['name'] );
761 + }
720 762
721 - $i = 0;
722 - foreach ( $website_to_upgrade['themes'] as $theme_to_upgrade ) {
723 - if ( 0 === $i ) {
724 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', $website_to_upgrade['id'], $website_to_upgrade['name'], $theme_to_upgrade['name'], $theme_to_upgrade['version'], $theme_to_upgrade['new_version'] ) );
725 - } else {
726 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', '', '', $theme_to_upgrade['name'], $theme_to_upgrade['version'], $theme_to_upgrade['new_version'] ) );
727 - }
728 - ++$i;
729 - }
730 - }
763 + $i = 0;
764 + foreach ( $website_item['themes'] as $theme_item ) {
765 + if ( 0 == $i ) {
766 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', $website_item['id'], $website_item['name'], $theme_item['name'], $theme_item['active'], $theme_item['version'] ) );
767 + } else {
768 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', '', '', $theme_item['name'], $theme_item['active'], $theme_item['version'] ) );
769 + }
770 + $i++;
771 + }
772 + }
731 773
732 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
733 - } elseif ( isset( $assoc_args['list-all'] ) ) {
734 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
735 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
736 - $websites_to_upgrade = array();
737 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
738 - if ( ! empty( $sites ) && ( ! in_array( $website->id, $sites, true ) ) ) {
739 - continue;
740 - }
741 - $theme_to_list = json_decode( $website->themes, true );
742 - if ( is_array( $theme_to_list ) ) {
743 - $tmp = array();
744 - foreach ( $theme_to_list as $theme ) {
745 - $tmp[] = array(
746 - 'name' => $theme['name'],
747 - 'active' => $theme['active'] ? 'yes' : '',
748 - 'version' => $theme['version'],
749 - );
750 - }
751 - $websites_to_upgrade[] = array(
752 - 'id' => $website->id,
753 - 'name' => $website->name,
754 - 'themes' => $tmp,
755 - );
756 - }
757 - }
774 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
775 + } elseif ( isset( $assoc_args['upgrade'] ) || isset( $assoc_args['upgrade-all'] ) ) {
758 776
759 - $idLength = strlen( 'id' );
760 - $nameLength = strlen( 'name' );
761 - $themeLength = strlen( 'theme' );
762 - $oldVersionLength = strlen( 'version' );
763 - $activeLength = strlen( 'active' );
764 - foreach ( $websites_to_upgrade as $website_item ) {
765 - if ( $idLength < strlen( $website_item['id'] ) ) {
766 - $idLength = strlen( $website_item['id'] );
767 - }
768 - if ( $nameLength < strlen( $website_item['name'] ) ) {
769 - $nameLength = strlen( $website_item['name'] );
770 - }
777 + $themeSlugs = array();
778 + if ( isset( $assoc_args['upgrade'] ) ) {
779 + $themeSlugs = explode( ',', $assoc_args['upgrade'] );
780 + }
771 781
772 - foreach ( $website_item['themes'] as $theme_item ) {
773 - if ( $themeLength < strlen( $theme_item['name'] ) ) {
774 - $themeLength = strlen( $theme_item['name'] );
775 - }
776 - if ( $oldVersionLength < strlen( $theme_item['version'] ) ) {
777 - $oldVersionLength = strlen( $theme_item['version'] );
778 - }
779 - }
780 - }
782 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
783 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
784 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
785 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
786 + continue;
787 + }
781 788
782 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
783 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', 'id', 'name', 'theme', 'active', 'version' ) );
784 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
789 + $theme_upgrades = json_decode( $website->theme_upgrades, true );
785 790
786 - foreach ( $websites_to_upgrade as $website_item ) {
787 - if ( $idLength < strlen( $website_item['id'] ) ) {
788 - $idLength = strlen( $website_item['id'] );
789 - }
790 - if ( $nameLength < strlen( $website_item['name'] ) ) {
791 - $nameLength = strlen( $website_item['name'] );
792 - }
791 + if ( is_array( $theme_upgrades ) ) {
792 + $ignored_themes = json_decode( $website->ignored_themes, true );
793 + if ( is_array( $ignored_themes ) ) {
794 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
795 + }
793 796
794 - $i = 0;
795 - foreach ( $website_item['themes'] as $theme_item ) {
796 - if ( 0 === $i ) {
797 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', $website_item['id'], $website_item['name'], $theme_item['name'], $theme_item['active'], $theme_item['version'] ) );
798 - } else {
799 - \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', '', '', $theme_item['name'], $theme_item['active'], $theme_item['version'] ) );
800 - }
801 - ++$i;
802 - }
803 - }
797 + $ignored_themes = json_decode( $userExtension->ignored_themes, true );
798 + if ( is_array( $ignored_themes ) ) {
799 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
800 + }
804 801
805 - \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
806 - } elseif ( isset( $assoc_args['upgrade'] ) || isset( $assoc_args['upgrade-all'] ) ) {
802 + $tmp = array();
803 + foreach ( $theme_upgrades as $key => $theme_upgrade ) {
804 + if ( ( count( $themeSlugs ) > 0 ) && ( ! in_array( $theme_upgrade['update']['slug'], $themeSlugs, true ) ) ) {
805 + continue;
806 + }
807 807
808 - $themeSlugs = array();
809 - if ( isset( $assoc_args['upgrade'] ) ) {
810 - $themeSlugs = explode( ',', $assoc_args['upgrade'] );
811 - }
808 + $tmp[] = $key;
809 + }
812 810
813 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
814 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
815 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
816 - if ( ! empty( $sites ) && ( ! in_array( $website->id, $sites, true ) ) ) {
817 - continue;
818 - }
811 + if ( count( $tmp ) == 0 ) {
812 + \WP_CLI::line( 'No available theme updates for ' . $website->name );
819 813
820 - $theme_upgrades = json_decode( $website->theme_upgrades, true );
814 + continue;
815 + }
821 816
822 - if ( is_array( $theme_upgrades ) ) {
823 - $ignored_themes = json_decode( $website->ignored_themes, true );
824 - if ( is_array( $ignored_themes ) ) {
825 - $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes );
826 - }
817 + \WP_CLI::line( 'Updating ' . count( $tmp ) . ' themes for ' . $website->name );
827 818
828 - $ignored_themes = json_decode( $userExtension->ignored_themes, true );
829 - if ( is_array( $ignored_themes ) ) {
830 - $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes );
831 - }
819 + try {
820 + MainWP_Updates_Handler::upgrade_plugin_theme_translation( $website->id, 'theme', implode( ',', $tmp ) );
821 + \WP_CLI::success( 'Updates completed' );
822 + } catch ( \Exception $e ) {
823 + \WP_CLI::error( 'Updates failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
824 + if ( $e->getMesage() == 'WPERROR' ) {
825 + \WP_CLI::debug( 'Error: ' . MainWP_Utility::value_to_string( $e->get_message_extra(), 1 ) );
826 + }
827 + }
828 + }
829 + }
830 + }
831 + }
832 832
833 - $tmp = array();
834 - foreach ( $theme_upgrades as $key => $theme_upgrade ) {
835 - if ( ! empty( $themeSlugs ) && ( ! in_array( $theme_upgrade['update']['slug'], $themeSlugs, true ) ) ) {
836 - continue;
837 - }
838 -
839 - $tmp[] = $key;
840 - }
841 -
842 - if ( empty( $tmp ) ) {
843 - \WP_CLI::line( 'No available theme updates for ' . $website->name );
844 -
845 - continue;
846 - }
847 -
848 - \WP_CLI::line( 'Updating ' . count( $tmp ) . ' themes for ' . $website->name );
849 -
850 - try {
851 - MainWP_Updates_Handler::upgrade_plugin_theme_translation( $website->id, 'theme', implode( ',', $tmp ) );
852 - \WP_CLI::success( 'Updates completed' );
853 - } catch ( \Exception $e ) {
854 - \WP_CLI::error( 'Updates failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
855 - if ( $e->getMesage() === 'WPERROR' ) {
856 - \WP_CLI::debug( 'Error: ' . MainWP_Utility::value_to_string( $e->get_message_extra(), 1 ) );
857 - }
858 - }
859 - }
860 - }
861 - }
862 - }
863 833 }