@@ -38,21 +38,8 @@ public function version( $args, $assoc_args ) {
3838 if ( $ slug == 'gravityforms ' ) {
3939 WP_CLI ::log ( GFForms::$ version );
4040 } else {
41- $ addon_class_names = GFAddOn::get_registered_addons ();
42- $ addon_found = false ;
43- foreach ( $ addon_class_names as $ addon_class_name ) {
44- /* @var GFAddon $addon */
45- $ addon = call_user_func ( array ( $ addon_class_name , 'get_instance ' ) );
46- if ( $ addon ->get_slug () == $ slug ) {
47- WP_CLI ::log ( $ addon ->get_version () );
48- $ addon_found = true ;
49- break ;
50- }
51- }
52-
53- if ( ! $ addon_found ) {
54- WP_CLI ::error ( 'Invalid plugin slug: ' . $ slug );
55- }
41+ $ addon = $ this ->get_addon ( $ slug );
42+ WP_CLI ::log ( $ addon ->get_version () );
5643 }
5744 }
5845
@@ -199,24 +186,32 @@ public function update( $args, $assoc_args ) {
199186 WP_CLI ::error ( 'A valid license key must be saved in the settings or specified in the GF_LICENSE_KEY constant or the --key option. ' );
200187 }
201188
189+ if ( $ slug === 'gravityforms ' ) {
190+ $ current_version = GFForms::$ version ;
191+ } else {
192+ $ addon = $ this ->get_addon ( $ slug );
193+ $ current_version = $ addon ->get_version ();
194+ }
195+
202196 $ version = isset ( $ assoc_args ['version ' ] ) ? $ assoc_args ['version ' ] : 'hotfix ' ;
203197 $ plugin_info = $ version === 'beta ' ? $ this ->get_beta_plugin_info ( $ slug , $ key ) : $ this ->get_plugin_info ( $ slug , $ key );
204198
205199 if ( $ version == 'hotfix ' ) {
206200 $ available_version = isset ( $ plugin_info ['version_latest ' ] ) ? $ plugin_info ['version_latest ' ] : '' ;
207- $ download_url = isset ( $ plugin_info ['download_url_latest ' ] ) ? $ plugin_info ['download_url_latest ' ] : '' ;
201+ $ download_url = isset ( $ plugin_info ['download_url_latest ' ] ) ? $ plugin_info ['download_url_latest ' ] : '' ;
208202 } else {
209203 $ available_version = isset ( $ plugin_info ['version ' ] ) ? $ plugin_info ['version ' ] : '' ;
210- $ download_url = isset ( $ plugin_info ['download_url ' ] ) ? $ plugin_info ['download_url ' ] : '' ;
211- }
212-
213- if ( version_compare ( GFForms::$ version , $ available_version , '>= ' ) ) {
214- WP_CLI ::success ( 'Plugin already updated ' );
215- return ;
204+ $ download_url = isset ( $ plugin_info ['download_url ' ] ) ? $ plugin_info ['download_url ' ] : '' ;
216205 }
217206
218207 if ( $ plugin_info && ! empty ( $ download_url ) ) {
219208
209+ if ( version_compare ( $ current_version , $ available_version , '>= ' ) ) {
210+ WP_CLI ::success ( 'Plugin already updated ' );
211+
212+ return ;
213+ }
214+
220215 $ download_url .= '&key= ' . $ key ;
221216
222217 $ command = sprintf ( 'plugin install "%s" --force ' , $ download_url );
@@ -282,15 +277,9 @@ public function setup( $args, $assoc_args ) {
282277 }
283278 }
284279 } else {
285- $ addon_class_names = GFAddOn::get_registered_addons ();
286- foreach ( $ addon_class_names as $ addon_class_name ) {
287- $ addon = call_user_func ( array ( $ addon_class_name , 'get_instance ' ) );
288- if ( $ addon ->get_slug () == $ slug ) {
289- $ addon ->setup ();
290- WP_CLI ::success ( 'setup ' . $ slug );
291- break ;
292- }
293- }
280+ $ addon = $ this ->get_addon ( $ slug );
281+ $ addon ->setup ();
282+ WP_CLI ::success ( 'setup ' . $ slug );
294283 }
295284 }
296285
@@ -437,4 +426,29 @@ private function get_slug( $args, $beta_check = false ) {
437426 return $ slug ;
438427 }
439428
429+ /**
430+ * Returns the add-on instance for the given slug.
431+ *
432+ * @since 1.4
433+ *
434+ * @param string $slug The add-on slug.
435+ *
436+ * @return GFAddon
437+ * @throws \WP_CLI\ExitException
438+ */
439+ private function get_addon ( $ slug ) {
440+ $ addon_class_names = GFAddOn::get_registered_addons ();
441+
442+ foreach ( $ addon_class_names as $ addon_class_name ) {
443+ /* @var GFAddon $addon */
444+ $ addon = call_user_func ( array ( $ addon_class_name , 'get_instance ' ) );
445+ if ( $ addon ->get_slug () == $ slug ) {
446+
447+ return $ addon ;
448+ }
449+ }
450+
451+ WP_CLI ::error ( 'Invalid slug or plugin not active: ' . $ slug );
452+ }
453+
440454}
0 commit comments