@@ -107,32 +107,13 @@ public function get_useful_plugins_info() {
107107
108108 foreach ( self ::$ PLUGINS as $ key => $ plugin ) {
109109 $ status = 'not_installed ' ;
110- $ action_link = '' ;
111-
112- if ( $ current_user_cap === 2 ) { // user can install plugins
113- $ action_link = wp_nonce_url (
114- add_query_arg ( [
115- 'action ' => 'install-plugin ' ,
116- 'plugin ' => $ plugin ['slug ' ],
117- ], admin_url ( 'update.php ' ) ),
118- 'install-plugin_ ' . $ plugin ['slug ' ]
119- );
120- }
121110
122111 if ( isset ( $ all_plugins [ $ plugin ['full_slug ' ] ] ) ) {
123112 $ status = 'installed ' ;
124- $ action_link = wp_nonce_url (
125- add_query_arg ( [
126- 'action ' => 'activate ' ,
127- 'plugin ' => $ plugin ['full_slug ' ],
128- ], admin_url ( 'plugins.php ' ) ),
129- 'activate-plugin_ ' . $ plugin ['full_slug ' ]
130- );
131113 }
132114
133115 if ( is_plugin_active ( $ plugin ['full_slug ' ] ) ) {
134116 $ status = 'activated ' ;
135- $ action_link = '' ; // nothing to do
136117 }
137118
138119 $ plugin_info = plugins_api ( 'plugin_information ' , [
@@ -152,21 +133,57 @@ public function get_useful_plugins_info() {
152133 }
153134
154135 // Make Cimo available in the block editor
155- add_filter ( 'stackable_localize_script ' , function ( $ args ) use ( $ data_to_localize , $ action_link ) {
156- $ cimo_data = $ data_to_localize [ 'cimo-image-optimizer ' ];
157- $ cimo_data [ 'action ' ] = html_entity_decode ( $ action_link );
158- $ cimo_data ['nonce ' ] = wp_create_nonce ( 'stackable_cimo_status ' );
136+ $ this ->add_cimo_args_to_localize_editor ( $ data_to_localize , $ current_user_cap );
137+ // Make all plugin data and the ajax url available in the admin settings
138+ $ this ->add_args_to_localize_admin ( $ data_to_localize );
139+ }
140+
141+ public function add_cimo_args_to_localize_editor ( $ data_to_localize , $ current_user_cap ) {
142+ $ slug = 'cimo-image-optimizer ' ;
143+ $ full_slug = self ::$ PLUGINS [ $ slug ][ 'full_slug ' ];
144+
145+ $ cimo_data = $ data_to_localize [ $ slug ];
146+ $ cimo_data ['nonce ' ] = wp_create_nonce ( 'stackable_cimo_status ' );
147+ $ action_link = '' ;
148+
149+ if ( $ current_user_cap === 2 && $ cimo_data [ 'status ' ] === 'not_installed ' ) {
150+ $ action_link = wp_nonce_url (
151+ add_query_arg (
152+ [
153+ 'action ' => 'install-plugin ' ,
154+ 'plugin ' => $ slug ,
155+ ],
156+ admin_url ( 'update.php ' )
157+ ),
158+ 'install-plugin_ ' . $ slug
159+ );
160+ } else if ( $ current_user_cap >= 1 && $ cimo_data [ 'status ' ] === 'installed ' ) {
161+ $ action_link = wp_nonce_url (
162+ add_query_arg ( [
163+ 'action ' => 'activate ' ,
164+ 'plugin ' => $ full_slug ,
165+ ], admin_url ( 'plugins.php ' ) ),
166+ 'activate-plugin_ ' . $ full_slug
167+ );
168+ }
169+
170+ $ cimo_data [ 'action ' ] = $ action_link ;
171+
172+ add_filter ( 'stackable_localize_script ' , function ( $ args ) use ( $ cimo_data ) {
159173 return $ this ->add_localize_script ( $ args , 'cimo ' , $ cimo_data );
160174 }, 1 );
161175
162- // Make all plugin data and the ajax url available in the admin settings
163- add_filter ( 'stackable_localize_settings_script ' , function ( $ args ) use ( $ data_to_localize ) {
164- $ argsToAdd = array (
165- 'usefulPlugins ' => $ data_to_localize ,
166- 'installerNonce ' => wp_create_nonce ( "updates " ),
167- 'activateNonce ' => wp_create_nonce ( "stk_activate_useful_plugin " ),
168- 'ajaxUrl ' => admin_url ('admin-ajax.php ' )
169- );
176+ }
177+
178+ public function add_args_to_localize_admin ( $ data_to_localize ) {
179+ $ argsToAdd = array (
180+ 'usefulPlugins ' => $ data_to_localize ,
181+ 'installerNonce ' => wp_create_nonce ( "updates " ),
182+ 'activateNonce ' => wp_create_nonce ( "stk_activate_useful_plugin " ),
183+ 'ajaxUrl ' => admin_url ('admin-ajax.php ' )
184+ );
185+
186+ add_filter ( 'stackable_localize_settings_script ' , function ( $ args ) use ( $ argsToAdd ) {
170187 return $ this ->add_localize_script ( $ args , '' , $ argsToAdd );
171188 } );
172189 }
0 commit comments