PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.4.1
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.4.1
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 +753 -756 5.2.24.4.1 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,839 @@
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 143
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 - }
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 + }
191 191
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 - }
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 ( count( $args ) > 0 ) {
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 + }
228 228
229 - $sites[] = trim( $arg );
230 - }
231 - }
229 + $sites[] = trim( $arg );
230 + }
231 + }
232 232
233 - if ( is_array( $assoc_args ) && isset( $assoc_args['all'] ) ) {
234 - update_option( 'mainwp_last_synced_all_sites', time() );
235 - }
233 + if ( is_array( $assoc_args ) && isset( $assoc_args['all'] ) ) {
234 + update_option( 'mainwp_last_synced_all_sites', time() );
235 + }
236 236
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 - }
237 + if ( ( count( $sites ) == 0 ) && ( ! 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 + }
242 242
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 - }
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 ) {
268 + $sites = array();
269 + if ( 0 < count( $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 + }
275 275
276 - $sites[] = trim( $arg );
277 - }
278 - }
276 + $sites[] = trim( $arg );
277 + }
278 + }
279 279
280 - if ( empty( $sites ) ) {
281 - \WP_CLI::error( 'Please specify one or more child sites.' );
282 - }
280 + if ( count( $sites ) == 0 ) {
281 + \WP_CLI::error( 'Please specify one or more child sites.' );
282 + }
283 283
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 - }
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 ( ( 0 < count( $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 + }
314 314
315 315
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 - }
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 -- Current complexity is the only way to achieve desired results, pull request solutions appreciated.
358 + $sites = array();
359 + if ( 0 < count( $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 + }
365 365
366 - $sites[] = trim( $arg );
367 - }
368 - }
366 + $sites[] = trim( $arg );
367 + }
368 + }
369 369
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 - }
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 ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
376 + continue;
377 + }
378 378
379 - $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
379 + $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
380 380
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 );
381 + if ( is_array( $plugin_upgrades ) ) {
382 + $ignored_plugins = json_decode( $website->ignored_plugins, true );
383 + if ( is_array( $ignored_plugins ) ) {
384 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
385 + }
385 386
386 - }
387 + $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
388 + if ( is_array( $ignored_plugins ) ) {
389 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
390 + }
387 391
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 );
392 + $tmp = array();
393 + foreach ( $plugin_upgrades as $plugin_upgrade ) {
394 + $tmp[] = array(
395 + 'name' => $plugin_upgrade['update']['slug'],
396 + 'version' => $plugin_upgrade['Version'],
397 + 'new_version' => $plugin_upgrade['update']['new_version'],
398 + );
399 + }
400 + $websites_to_upgrade[] = array(
401 + 'id' => $website->id,
402 + 'name' => $website->name,
403 + 'plugins' => $tmp,
404 + );
405 + }
406 + }
391 407
392 - }
408 + $idLength = strlen( 'id' );
409 + $nameLength = strlen( 'name' );
410 + $pluginLength = strlen( 'plugin' );
411 + $oldVersionLength = strlen( 'version' );
412 + $newVersionLength = strlen( 'new version' );
413 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
414 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
415 + $idLength = strlen( $website_to_upgrade['id'] );
416 + }
417 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
418 + $nameLength = strlen( $website_to_upgrade['name'] );
419 + }
393 420
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 - }
421 + foreach ( $website_to_upgrade['plugins'] as $plugin_to_upgrade ) {
422 + if ( $pluginLength < strlen( $plugin_to_upgrade['name'] ) ) {
423 + $pluginLength = strlen( $plugin_to_upgrade['name'] );
424 + }
425 + if ( $oldVersionLength < strlen( $plugin_to_upgrade['version'] ) ) {
426 + $oldVersionLength = strlen( $plugin_to_upgrade['version'] );
427 + }
428 + if ( $newVersionLength < strlen( $plugin_to_upgrade['new_version'] ) ) {
429 + $newVersionLength = strlen( $plugin_to_upgrade['new_version'] );
430 + }
431 + }
432 + }
409 433
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 - }
434 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
435 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', 'id', 'name', 'plugin', 'version', 'new version' ) );
436 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
422 437
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 - }
438 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
439 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
440 + $idLength = strlen( $website_to_upgrade['id'] );
441 + }
442 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
443 + $nameLength = strlen( $website_to_upgrade['name'] );
444 + }
435 445
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+', '', '', '', '', '' ) );
446 + $i = 0;
447 + foreach ( $website_to_upgrade['plugins'] as $plugin_to_upgrade ) {
448 + if ( 0 == $i ) {
449 + \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'] ) );
450 + } else {
451 + \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'] ) );
452 + }
453 + $i++;
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 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
458 + } elseif ( isset( $assoc_args['list-all'] ) ) {
459 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
460 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
461 + $websites_to_list = array();
462 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
463 + if ( ( 0 < count( $sites ) ) && ( ! in_array( $website->id, $sites, true ) ) ) {
464 + continue;
465 + }
447 466
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 - }
467 + $plugins_to_list = json_decode( $website->plugins, true );
468 + if ( is_array( $plugins_to_list ) ) {
469 + $tmp = array();
470 + foreach ( $plugins_to_list as $plugin ) {
471 + $tmp[] = array(
472 + 'name' => $plugin['slug'],
473 + 'version' => $plugin['version'],
474 + );
475 + }
476 + $websites_to_list[] = array(
477 + 'id' => $website->id,
478 + 'name' => $website->name,
479 + 'plugins' => $tmp,
480 + );
481 + }
482 + }
458 483
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 - }
484 + $idLength = strlen( 'id' );
485 + $nameLength = strlen( 'name' );
486 + $pluginLength = strlen( 'plugin' );
487 + $oldVersionLength = strlen( 'version' );
488 + foreach ( $websites_to_list as $website_item ) {
489 + if ( $idLength < strlen( $website_item['id'] ) ) {
490 + $idLength = strlen( $website_item['id'] );
491 + }
492 + if ( $nameLength < strlen( $website_item['name'] ) ) {
493 + $nameLength = strlen( $website_item['name'] );
494 + }
468 495
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 - }
496 + foreach ( $website_item['plugins'] as $plugin_item ) {
497 + if ( $pluginLength < strlen( $plugin_item['name'] ) ) {
498 + $pluginLength = strlen( $plugin_item['name'] );
499 + }
500 + if ( $oldVersionLength < strlen( $plugin_item['version'] ) ) {
501 + $oldVersionLength = strlen( $plugin_item['version'] );
502 + }
503 + }
504 + }
485 505
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 - }
506 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
507 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', 'id', 'name', 'plugin', 'version' ) );
508 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
497 509
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 - }
510 + foreach ( $websites_to_list as $website_item ) {
511 + if ( $idLength < strlen( $website_item['id'] ) ) {
512 + $idLength = strlen( $website_item['id'] );
513 + }
514 + if ( $nameLength < strlen( $website_item['name'] ) ) {
515 + $nameLength = strlen( $website_item['name'] );
516 + }
507 517
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+', '', '', '', '' ) );
518 + $i = 0;
519 + foreach ( $website_item['plugins'] as $plugin_item ) {
520 + if ( 0 == $i ) {
521 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', $website_item['id'], $website_item['name'], $plugin_item['name'], $plugin_item['version'] ) );
522 + } else {
523 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $pluginLength . 's | %-' . $oldVersionLength . 's |', '', '', $plugin_item['name'], $plugin_item['version'] ) );
524 + }
525 + $i++;
526 + }
527 + }
511 528
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 - }
529 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $pluginLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '' ) );
530 + } elseif ( isset( $assoc_args['upgrade'] ) || isset( $assoc_args['upgrade-all'] ) ) {
519 531
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 - }
532 + $pluginSlugs = array();
533 + if ( isset( $assoc_args['upgrade'] ) ) {
534 + $pluginSlugs = explode( ',', $assoc_args['upgrade'] );
535 + }
530 536
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'] ) ) {
537 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
538 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
539 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
540 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
541 + continue;
542 + }
533 543
534 - $pluginSlugs = array();
535 - if ( isset( $assoc_args['upgrade'] ) ) {
536 - $pluginSlugs = explode( ',', $assoc_args['upgrade'] );
537 - }
544 + $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
538 545
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 - }
546 + if ( is_array( $plugin_upgrades ) ) {
547 + $ignored_plugins = json_decode( $website->ignored_plugins, true );
548 + if ( is_array( $ignored_plugins ) ) {
549 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
550 + }
545 551
546 - $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
552 + $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
553 + if ( is_array( $ignored_plugins ) ) {
554 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
555 + }
547 556
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 );
557 + $tmp = array();
558 + foreach ( $plugin_upgrades as $key => $plugin_upgrade ) {
559 + if ( ( count( $pluginSlugs ) > 0 ) && ( ! in_array( $plugin_upgrade['update']['slug'], $pluginSlugs, true ) ) ) {
560 + continue;
561 + }
552 562
553 - }
563 + $tmp[] = $key;
564 + }
554 565
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 );
566 + if ( count( $tmp ) == 0 ) {
567 + \WP_CLI::line( 'No available plugin updates for ' . $website->name );
558 568
559 - }
569 + continue;
570 + }
560 571
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 - }
572 + \WP_CLI::line( 'Updating ' . count( $tmp ) . ' plugins for ' . $website->name );
566 573
567 - $tmp[] = $key;
568 - }
574 + try {
575 + MainWP_Updates_Handler::upgrade_plugin_theme_translation( $website->id, 'plugin', implode( ',', $tmp ) );
576 + \WP_CLI::success( 'Updates completed' );
577 + } catch ( \Exception $e ) {
578 + \WP_CLI::error( 'Updates failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
579 + if ( $e->getMesage() == 'WPERROR' ) {
580 + \WP_CLI::debug( 'Error: ' . MainWP_Utility::value_to_string( $e->get_message_extra(), 1 ) );
581 + }
582 + }
583 + }
584 + }
585 + }
586 + }
569 587
570 - if ( empty( $tmp ) ) {
571 - \WP_CLI::line( 'No available plugin updates for ' . $website->name );
588 + /**
589 + * List information about theme updates
590 + *
591 + * ## OPTIONS
592 + *
593 + * [<websiteid>]
594 + * : The id (or ids, comma separated) of the child sites that need to be listed/upgraded, when omitted all childsites are used.
595 + *
596 + * [--list]
597 + * : Get a list of themes with available updates
598 + *
599 + * [--list-all]
600 + * : list all themes
601 + *
602 + * [--upgrade=<theme>]
603 + * : Update the themes
604 + *
605 + * [--upgrade-all]
606 + * : Update all themes
607 + *
608 + * ## EXAMPLES
609 + *
610 + * wp mainwp theme 2,5 --list
611 + * wp mainwp theme --list
612 + * wp mainwp theme 2,5 --upgrade-all
613 + * wp mainwp theme 2,5 --upgrade=twentysixteen
614 + *
615 + * ## Synopsis [<websiteid>] [--list] [--list-all] [--upgrade=<theme>] [--upgrade-all]
616 + *
617 + * @param array $args Function arguments.
618 + * @param array $assoc_args Function associate arguments.
619 + *
620 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
621 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_console_error_message()
622 + * @uses \MainWP\Dashboard\MainWP_DB::query()
623 + * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user()
624 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
625 + * @uses \MainWP\Dashboard\MainWP_Updates_Handler::upgrade_plugin_theme_translation()
626 + * @uses \MainWP\Dashboard\MainWP_Utility::value_to_string()
627 + */
628 + public function theme( $args, $assoc_args ) { // phpcs:ignore -- Current complexity is the only way to achieve desired results, pull request solutions appreciated.
629 + $sites = array();
630 + if ( count( $args ) > 0 ) {
631 + $args_exploded = explode( ',', $args[0] );
632 + foreach ( $args_exploded as $arg ) {
633 + if ( ! is_numeric( trim( $arg ) ) ) {
634 + \WP_CLI::error( 'Child site IDs should be numeric.' );
635 + }
572 636
573 - continue;
574 - }
637 + $sites[] = trim( $arg );
638 + }
639 + }
575 640
576 - \WP_CLI::line( 'Updating ' . count( $tmp ) . ' plugins for ' . $website->name );
641 + if ( isset( $assoc_args['list'] ) ) {
642 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
643 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
644 + $websites_to_upgrade = array();
645 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
646 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
647 + continue;
648 + }
577 649
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 - }
650 + $theme_upgrades = json_decode( $website->theme_upgrades, true );
591 651
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 - }
652 + if ( is_array( $theme_upgrades ) ) {
653 + $ignored_themes = json_decode( $website->ignored_themes, true );
654 + if ( is_array( $ignored_themes ) ) {
655 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
656 + }
640 657
641 - $sites[] = trim( $arg );
642 - }
643 - }
658 + $ignored_themes = json_decode( $userExtension->ignored_themes, true );
659 + if ( is_array( $ignored_themes ) ) {
660 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
661 + }
644 662
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 - }
663 + $tmp = array();
664 + foreach ( $theme_upgrades as $theme_upgrade ) {
665 + $tmp[] = array(
666 + 'name' => $theme_upgrade['update']['theme'],
667 + 'version' => $theme_upgrade['Version'],
668 + 'new_version' => $theme_upgrade['update']['new_version'],
669 + );
670 + }
671 + $websites_to_upgrade[] = array(
672 + 'id' => $website->id,
673 + 'name' => $website->name,
674 + 'themes' => $tmp,
675 + );
676 + }
677 + }
653 678
654 - $theme_upgrades = json_decode( $website->theme_upgrades, true );
679 + $idLength = strlen( 'id' );
680 + $nameLength = strlen( 'name' );
681 + $themeLength = strlen( 'theme' );
682 + $oldVersionLength = strlen( 'version' );
683 + $newVersionLength = strlen( 'new version' );
684 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
685 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
686 + $idLength = strlen( $website_to_upgrade['id'] );
687 + }
688 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
689 + $nameLength = strlen( $website_to_upgrade['name'] );
690 + }
655 691
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 - }
692 + foreach ( $website_to_upgrade['themes'] as $theme_to_upgrade ) {
693 + if ( $themeLength < strlen( $theme_to_upgrade['name'] ) ) {
694 + $themeLength = strlen( $theme_to_upgrade['name'] );
695 + }
696 + if ( $oldVersionLength < strlen( $theme_to_upgrade['version'] ) ) {
697 + $oldVersionLength = strlen( $theme_to_upgrade['version'] );
698 + }
699 + if ( $newVersionLength < strlen( $theme_to_upgrade['new_version'] ) ) {
700 + $newVersionLength = strlen( $theme_to_upgrade['new_version'] );
701 + }
702 + }
703 + }
661 704
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 - }
705 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
706 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $oldVersionLength . 's | %-' . $newVersionLength . 's |', 'id', 'name', 'theme', 'version', 'new version' ) );
707 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
666 708
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 - }
709 + foreach ( $websites_to_upgrade as $website_to_upgrade ) {
710 + if ( $idLength < strlen( $website_to_upgrade['id'] ) ) {
711 + $idLength = strlen( $website_to_upgrade['id'] );
712 + }
713 + if ( $nameLength < strlen( $website_to_upgrade['name'] ) ) {
714 + $nameLength = strlen( $website_to_upgrade['name'] );
715 + }
682 716
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 - }
717 + $i = 0;
718 + foreach ( $website_to_upgrade['themes'] as $theme_to_upgrade ) {
719 + if ( 0 == $i ) {
720 + \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'] ) );
721 + } else {
722 + \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'] ) );
723 + }
724 + $i++;
725 + }
726 + }
695 727
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 - }
728 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . "s+%'--" . ( $newVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
729 + } elseif ( isset( $assoc_args['list-all'] ) ) {
730 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
731 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
732 + $websites_to_upgrade = array();
733 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
734 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
735 + continue;
736 + }
737 + $theme_to_list = json_decode( $website->themes, true );
738 + if ( is_array( $theme_to_list ) ) {
739 + $tmp = array();
740 + foreach ( $theme_to_list as $theme ) {
741 + $tmp[] = array(
742 + 'name' => $theme['name'],
743 + 'active' => $theme['active'] ? 'yes' : '',
744 + 'version' => $theme['version'],
745 + );
746 + }
747 + $websites_to_upgrade[] = array(
748 + 'id' => $website->id,
749 + 'name' => $website->name,
750 + 'themes' => $tmp,
751 + );
752 + }
753 + }
708 754
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+', '', '', '', '', '' ) );
755 + $idLength = strlen( 'id' );
756 + $nameLength = strlen( 'name' );
757 + $themeLength = strlen( 'theme' );
758 + $oldVersionLength = strlen( 'version' );
759 + $activeLength = strlen( 'active' );
760 + foreach ( $websites_to_upgrade as $website_item ) {
761 + if ( $idLength < strlen( $website_item['id'] ) ) {
762 + $idLength = strlen( $website_item['id'] );
763 + }
764 + if ( $nameLength < strlen( $website_item['name'] ) ) {
765 + $nameLength = strlen( $website_item['name'] );
766 + }
712 767
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 - }
768 + foreach ( $website_item['themes'] as $theme_item ) {
769 + if ( $themeLength < strlen( $theme_item['name'] ) ) {
770 + $themeLength = strlen( $theme_item['name'] );
771 + }
772 + if ( $oldVersionLength < strlen( $theme_item['version'] ) ) {
773 + $oldVersionLength = strlen( $theme_item['version'] );
774 + }
775 + }
776 + }
720 777
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 - }
778 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
779 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', 'id', 'name', 'theme', 'active', 'version' ) );
780 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
731 781
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 - }
782 + foreach ( $websites_to_upgrade as $website_item ) {
783 + if ( $idLength < strlen( $website_item['id'] ) ) {
784 + $idLength = strlen( $website_item['id'] );
785 + }
786 + if ( $nameLength < strlen( $website_item['name'] ) ) {
787 + $nameLength = strlen( $website_item['name'] );
788 + }
758 789
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 - }
790 + $i = 0;
791 + foreach ( $website_item['themes'] as $theme_item ) {
792 + if ( 0 == $i ) {
793 + \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'] ) );
794 + } else {
795 + \WP_CLI::line( sprintf( '| %-' . $idLength . 's | %-' . $nameLength . 's | %-' . $themeLength . 's | %-' . $activeLength . 's | %-' . $oldVersionLength . 's |', '', '', $theme_item['name'], $theme_item['active'], $theme_item['version'] ) );
796 + }
797 + $i++;
798 + }
799 + }
771 800
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 - }
801 + \WP_CLI::line( sprintf( "+%'--" . ( $idLength + 2 ) . "s+%'--" . ( $nameLength + 2 ) . "s+%'--" . ( $themeLength + 2 ) . "s+%'--" . ( $activeLength + 2 ) . "s+%'--" . ( $oldVersionLength + 2 ) . 's+', '', '', '', '', '' ) );
802 + } elseif ( isset( $assoc_args['upgrade'] ) || isset( $assoc_args['upgrade-all'] ) ) {
781 803
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+', '', '', '', '', '' ) );
804 + $themeSlugs = array();
805 + if ( isset( $assoc_args['upgrade'] ) ) {
806 + $themeSlugs = explode( ',', $assoc_args['upgrade'] );
807 + }
785 808
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 - }
809 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, true ) );
810 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
811 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
812 + if ( ( count( $sites ) > 0 ) && ( ! in_array( $website->id, $sites, true ) ) ) {
813 + continue;
814 + }
793 815
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 - }
816 + $theme_upgrades = json_decode( $website->theme_upgrades, true );
804 817
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'] ) ) {
818 + if ( is_array( $theme_upgrades ) ) {
819 + $ignored_themes = json_decode( $website->ignored_themes, true );
820 + if ( is_array( $ignored_themes ) ) {
821 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
822 + }
807 823
808 - $themeSlugs = array();
809 - if ( isset( $assoc_args['upgrade'] ) ) {
810 - $themeSlugs = explode( ',', $assoc_args['upgrade'] );
811 - }
824 + $ignored_themes = json_decode( $userExtension->ignored_themes, true );
825 + if ( is_array( $ignored_themes ) ) {
826 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
827 + }
812 828
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 - }
829 + $tmp = array();
830 + foreach ( $theme_upgrades as $key => $theme_upgrade ) {
831 + if ( ( count( $themeSlugs ) > 0 ) && ( ! in_array( $theme_upgrade['update']['slug'], $themeSlugs, true ) ) ) {
832 + continue;
833 + }
819 834
820 - $theme_upgrades = json_decode( $website->theme_upgrades, true );
835 + $tmp[] = $key;
836 + }
821 837
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 - }
838 + if ( count( $tmp ) == 0 ) {
839 + \WP_CLI::line( 'No available theme updates for ' . $website->name );
827 840
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 - }
841 + continue;
842 + }
832 843
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 - }
844 + \WP_CLI::line( 'Updating ' . count( $tmp ) . ' themes for ' . $website->name );
838 845
839 - $tmp[] = $key;
840 - }
846 + try {
847 + MainWP_Updates_Handler::upgrade_plugin_theme_translation( $website->id, 'theme', implode( ',', $tmp ) );
848 + \WP_CLI::success( 'Updates completed' );
849 + } catch ( \Exception $e ) {
850 + \WP_CLI::error( 'Updates failed: ' . MainWP_Error_Helper::get_console_error_message( $e ) );
851 + if ( $e->getMesage() == 'WPERROR' ) {
852 + \WP_CLI::debug( 'Error: ' . MainWP_Utility::value_to_string( $e->get_message_extra(), 1 ) );
853 + }
854 + }
855 + }
856 + }
857 + }
858 + }
841 859
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 860 }