Passed
Push — master ( edd4c4...9643cd )
by Chris
03:53
created

monsterinsights_am_notice_optout()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 3
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 5
rs 9.4285
1
<?php
2
/**
3
 * Admin class.
4
 *
5
 * @since 6.0.0
6
 *
7
 * @package MonsterInsights
8
 * @subpackage Admin
9
 * @author  Chris Christoff
10
 */
11
12
// Exit if accessed directly
13
if ( ! defined( 'ABSPATH' ) ) {
14
    exit;
15
}
16
17
/**
18
 * Register menu items for MonsterInsights.
19
 *
20
 * @since 6.0.0
21
 * @access public
22
 *
23
 * @return void
24
 */
25
function monsterinsights_admin_menu() {
26
27
    // Get the base class object.
28
    $base = MonsterInsights();
29
    
30
    $dashboards_disabled = monsterinsights_get_option( 'dashboards_disabled', false );
31
    $is_authed           = ( MonsterInsights()->auth->is_authed() || MonsterInsights()->auth->is_network_authed() );
0 ignored issues
show
Bug Best Practice introduced by
The property $auth is declared protected in MonsterInsights_Lite. Since you implement __get, consider adding a @property or @property-read.
Loading history...
32
33
    $hook = 'monsterinsights_settings';
34
35
    if ( $dashboards_disabled || ! $is_authed || ( current_user_can( 'monsterinsights_save_settings' ) && ! current_user_can( 'monsterinsights_view_dashboard' ) ) ) {
36
        // If dashboards disabled, first settings page
37
        add_menu_page( __( 'Settings:', 'google-analytics-for-wordpress' ), __( 'Insights', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_settings', 'monsterinsights_settings_page',  plugins_url( 'assets/css/images/[email protected]', $base->file ), '100.00013467543' );
0 ignored issues
show
Bug introduced by
'100.00013467543' of type string is incompatible with the type integer expected by parameter $position of add_menu_page(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

37
        add_menu_page( __( 'Settings:', 'google-analytics-for-wordpress' ), __( 'Insights', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_settings', 'monsterinsights_settings_page',  plugins_url( 'assets/css/images/[email protected]', $base->file ), /** @scrutinizer ignore-type */ '100.00013467543' );
Loading history...
38
        $hook = 'monsterinsights_settings';
39
40
        add_submenu_page( $hook, __( 'Settings:', 'google-analytics-for-wordpress' ), __( 'Settings', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_settings' );
41
        add_submenu_page( $hook, __( 'Settings - Tracking:', 'google-analytics-for-wordpress' ), __( 'Settings - Tracking', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_tracking', 'monsterinsights_tracking_page' );
42
    } else {
43
        // if dashboards enabled, first dashboard
44
        add_menu_page( __( 'General:', 'google-analytics-for-wordpress' ), __( 'Insights', 'google-analytics-for-wordpress' ), 'monsterinsights_view_dashboard', 'monsterinsights_reports', 'monsterinsights_reports_page',  plugins_url( 'assets/css/images/[email protected]', $base->file ), '100.00013467543' );
45
46
        $hook = 'monsterinsights_reports';
47
48
        add_submenu_page( $hook, __( 'General Reports:', 'google-analytics-for-wordpress' ), __( 'Reports', 'google-analytics-for-wordpress' ), 'monsterinsights_view_dashboard', 'monsterinsights_reports', 'monsterinsights_reports_page' );
49
50
        // then settings page
51
        add_submenu_page( $hook, __( 'Settings:', 'google-analytics-for-wordpress' ), __( 'Settings', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_settings', 'monsterinsights_settings_page' );
52
53
        add_submenu_page( $hook, __( 'Settings - Tracking:', 'google-analytics-for-wordpress' ), __( 'Settings - Tracking', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_tracking', 'monsterinsights_tracking_page' );
54
55
    }
56
    
57
    // then tools
58
    add_submenu_page( $hook, __( 'Tools:', 'google-analytics-for-wordpress' ), __( 'Tools', 'google-analytics-for-wordpress' ), 'manage_options', 'monsterinsights_tools', 'monsterinsights_tools_page' );
59
    
60
    // then addons
61
    $network_key = MonsterInsights()->license->get_network_license_key();
0 ignored issues
show
Bug Best Practice introduced by
The property $license is declared protected in MonsterInsights_Lite. Since you implement __get, consider adding a @property or @property-read.
Loading history...
62
    if ( ! monsterinsights_is_network_active() || ( monsterinsights_is_network_active() && empty( $network_key ) ) ) {
63
        add_submenu_page( $hook, __( 'Addons:', 'google-analytics-for-wordpress' ), '<span style="color:#7cc048"> ' . __( 'Addons', 'google-analytics-for-wordpress' ) . '</span>', 'monsterinsights_save_settings', 'monsterinsights_addons', 'monsterinsights_addons_page' );
64
    }
65
}
66
add_action( 'admin_menu', 'monsterinsights_admin_menu' );
67
68
69
70
function monsterinsights_network_admin_menu() {
71
    // Get the base class object.
72
    $base = MonsterInsights();
73
74
    // First, let's see if this is an MS network enabled plugin. If it is, we should load the license 
75
    // menu page and the updater on the network panel
76
    if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
77
        require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
78
    }
79
80
    $plugin = plugin_basename( MONSTERINSIGHTS_PLUGIN_FILE );
81
    if ( ! is_plugin_active_for_network( $plugin ) ) {
82
        return;
83
    }
84
85
    $hook = 'monsterinsights_network';
86
    add_menu_page( __( 'Network Settings:', 'google-analytics-for-wordpress' ), __( 'Insights', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_network', 'monsterinsights_network_page',  plugins_url( 'assets/css/images/[email protected]', $base->file ), '100.00013467543' );
0 ignored issues
show
Bug introduced by
'100.00013467543' of type string is incompatible with the type integer expected by parameter $position of add_menu_page(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

86
    add_menu_page( __( 'Network Settings:', 'google-analytics-for-wordpress' ), __( 'Insights', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_network', 'monsterinsights_network_page',  plugins_url( 'assets/css/images/[email protected]', $base->file ), /** @scrutinizer ignore-type */ '100.00013467543' );
Loading history...
87
88
    add_submenu_page( $hook, __( 'Network Settings:', 'google-analytics-for-wordpress' ), __( 'Network Settings', 'google-analytics-for-wordpress' ), 'monsterinsights_save_settings', 'monsterinsights_network', 'monsterinsights_network_page' );
89
90
    add_submenu_page( $hook, __( 'General Reports:', 'google-analytics-for-wordpress' ), __( 'Reports', 'google-analytics-for-wordpress' ), 'monsterinsights_view_dashboard', 'monsterinsights_reports', 'monsterinsights_reports_page' );
91
92
    // then addons
93
    add_submenu_page( $hook, __( 'Addons:', 'google-analytics-for-wordpress' ), '<span style="color:#7cc048"> ' . __( 'Addons', 'google-analytics-for-wordpress' ) . '</span>', 'monsterinsights_save_settings', 'monsterinsights_addons', 'monsterinsights_addons_page' );
94
}
95
add_action( 'network_admin_menu', 'monsterinsights_network_admin_menu', 5 );
96
97
/**
98
 * Adds one or more classes to the body tag in the dashboard.
99
 *
100
 * @param  String $classes Current body classes.
101
 * @return String          Altered body classes.
102
 */
103
function monsterinsights_add_admin_body_class( $classes ) {
104
    $screen = get_current_screen(); 
105
    if ( empty( $screen->id ) || strpos( $screen->id, 'monsterinsights' ) === false ) {
106
        return $classes;
107
    }
108
       
109
    return "$classes monsterinsights_page ";
110
}
111
add_filter( 'admin_body_class', 'monsterinsights_add_admin_body_class', 10, 1 );
112
113
/**
114
 * Add a link to the settings page to the plugins list
115
 *
116
 * @param array $links array of links for the plugins, adapted when the current plugin is found.
117
 *
118
 * @return array $links
119
 */
120
function monsterinsights_add_action_links( $links ) {
121
    $docs = '<a title="' . esc_html__( 'MonsterInsights Knowledge Base', 'google-analytics-for-wordpress' ) . '" href="https://www.monsterinsights.com/docs/">' . esc_html__( 'Documentation', 'google-analytics-for-wordpress' ) . '</a>';
122
    array_unshift( $links, $docs );
123
124
    // If lite, show a link where they can get pro from
125
    if ( ! monsterinsights_is_pro_version() ) {
126
        $get_pro = '<a title="' . esc_html__( 'Get MonsterInsights Pro', 'google-analytics-for-wordpress' ) .'" href="https://www.monsterinsights.com/lite/">' . esc_html__( 'Get MonsterInsights Pro', 'google-analytics-for-wordpress' ) . '</a>';
127
        array_unshift( $links, $get_pro );
128
    }   
129
    
130
    // If Lite, support goes to forum. If pro, it goes to our website
131
    if ( monsterinsights_is_pro_version() ) {
132
        $support = '<a title="MonsterInsights Pro Support" href="https://www.monsterinsights.com/my-account/support/">' . esc_html__( 'Support', 'google-analytics-for-wordpress' ) . '</a>';
133
        array_unshift( $links, $support );
134
    } else {
135
        $support = '<a title="MonsterInsights Lite Support" href="https://wordpress.org/support/plugin/google-analytics-for-wordpress">' . esc_html__( 'Support', 'google-analytics-for-wordpress' ) . '</a>';
136
        array_unshift( $links, $support );      
137
    }
138
139
    $settings_link = '<a href="' . esc_url( admin_url( 'admin.php?page=monsterinsights_settings' ) ) . '">' . esc_html__( 'Settings', 'google-analytics-for-wordpress' ) . '</a>';
140
    array_unshift( $links, $settings_link );
141
142
    return $links;
143
}
144
add_filter( 'plugin_action_links_' . plugin_basename( MONSTERINSIGHTS_PLUGIN_FILE ), 'monsterinsights_add_action_links' );
145
146
147
148
/**
149
 * Loads a partial view for the Administration screen
150
 * 
151
 * @access public
152
 * @since 6.0.0
153
 *
154
 * @param   string  $template   PHP file at includes/admin/partials, excluding file extension
155
 * @param   array   $data       Any data to pass to the view
156
 * @return  void
157
 */
158
function monsterinsights_load_admin_partial( $template, $data = array() ) {
0 ignored issues
show
Unused Code introduced by
The parameter $data is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

158
function monsterinsights_load_admin_partial( $template, /** @scrutinizer ignore-unused */ $data = array() ) {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
159
160
    if ( monsterinsights_is_pro_version() ) {
161
        $dir = trailingslashit( plugin_dir_path( MonsterInsights()->file ) . 'pro/includes/admin/partials' );
162
    
163
        if ( file_exists( $dir . $template . '.php' ) ) {
164
            require_once(  $dir . $template . '.php' );
165
            return true;
166
        }
167
    } else {
168
        $dir = trailingslashit( plugin_dir_path( MonsterInsights()->file ) . 'lite/includes/admin/partials' );
169
    
170
        if ( file_exists( $dir . $template . '.php' ) ) {
171
            require_once(  $dir . $template . '.php' );
172
            return true;
173
        }   
174
    }
175
        
176
    $dir = trailingslashit( plugin_dir_path( MonsterInsights()->file ) . 'includes/admin/partials' );
177
178
    if ( file_exists( $dir . $template . '.php' ) ) {
179
        require_once(  $dir . $template . '.php' );
180
        return true;
181
    }
182
                
183
    return false;
184
}
185
186
187
/**
188
 * Outputs the MonsterInsights Header.
189
 *
190
 * @since 6.0.0
191
 */
192
function monsterinsights_admin_header() {
193
    // Get the current screen, and check whether we're viewing a MonsterInsights screen;
194
    $screen = get_current_screen(); 
195
    if ( empty( $screen->id ) || strpos( $screen->id, 'monsterinsights' ) === false ) {
196
        return;
197
    }
198
199
    // If here, we're on an MonsterInsights screen, so output the header.
200
    monsterinsights_load_admin_partial( 'header', array(
201
        'mascot'   => plugins_url( 'assets/css/images/mascot.png', MonsterInsights()->file ),
202
        'logo'     => plugins_url( 'assets/css/images/logo.png', MonsterInsights()->file ),
203
        '2xmascot' => plugins_url( 'assets/css/images/[email protected]', MonsterInsights()->file ),
204
        '2xlogo'   => plugins_url( 'assets/css/images/[email protected]', MonsterInsights()->file ),
205
    ) );
206
}
207
add_action( 'in_admin_header','monsterinsights_admin_header', 100 );
208
209
function monsterinsights_welcome_redirect() {
210
    // Bail if no activation redirect
211
    if ( ! get_transient( '_monsterinsights_activation_redirect' ) ) {
212
        return;
213
    }
214
215
    // Delete the redirect transient
216
    delete_transient( '_monsterinsights_activation_redirect' );
217
218
    // Bail if activating from network, or bulk
219
    if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
220
        return;
221
    }
222
223
    $upgrade = get_option( 'monsterinsights_version_upgraded_from' );
224
    if( ! $upgrade ) { // First time install
225
        //wp_safe_redirect( admin_url( 'admin.php?page=monsterinsights_settings#monsterinsights-main-tab-general' ) ); exit;
226
    } else { // Update
227
        return;
228
        //wp_safe_redirect( admin_url( 'admin.php?page=monsterinsights_settings#monsterinsights-main-tab-general' ) ); exit;
229
    }
230
}
231
//add_action( 'admin_init', 'monsterinsights_welcome_redirect', 11 ); @todo: Investigate
232
233
/**
234
 * When user is on a MonsterInsights related admin page, display footer text
235
 * that graciously asks them to rate us.
236
 *
237
 * @since 6.0.0
238
 * @param string $text
239
 * @return string
240
 */
241
function monsterinsights_admin_footer( $text ) {
242
    global $current_screen;
243
    if ( ! empty( $current_screen->id ) && strpos( $current_screen->id, 'monsterinsights' ) !== false ) {
244
        $url  = 'https://wordpress.org/support/view/plugin-reviews/google-analytics-for-wordpress?filter=5';
245
        $text = sprintf( esc_html__( 'Please rate %sMonsterInsights%s %s on %sWordPress.org%s to help us spread the word. Thank you from the MonsterInsights team!', 'google-analytics-for-wordpress' ), '<strong>', '</strong>', '<a class="monsterinsights-no-text-decoration" href="' .  $url . '" target="_blank" rel="noopener noreferrer">&#9733;&#9733;&#9733;&#9733;&#9733;</a>', '<a href="' . $url . '" target="_blank" rel="noopener noreferrer">', '</a>' );
246
    }
247
    return $text;
248
}
249
add_filter( 'admin_footer_text', 'monsterinsights_admin_footer', 1, 2 );
250
251
function monsterinsights_admin_setup_notices() {
252
253
    // Don't show on MonsterInsights pages
254
    $screen = get_current_screen(); 
255
    if ( empty( $screen->id ) || strpos( $screen->id, 'monsterinsights' ) !== false ) {
256
        return;
257
    }
258
259
    // Make sure they have the permissions to do something
260
    if ( ! current_user_can( 'monsterinsights_save_settings' ) ) {
261
        return;
262
    }
263
264
    // Priority:
265
    // 1. Google Analytics not authenticated
266
    // 2. License key not entered for pro
267
    // 3. License key not valid/okay for pro
268
    // 4. Optin setting not configured
269
    // 5. Automatic updates not configured
270
271
272
    // 1. Google Analytics not authenticated
273
    if ( ! is_network_admin() && ! monsterinsights_get_ua() ) {
274
        $page = admin_url( 'admin.php?page=monsterinsights_settings' );
275
        $message = sprintf( esc_html__( 'Please configure your %1$sGoogle Analytics settings%2$s!', 'google-analytics-for-wordpress' ),'<a href="' . $page . '">', '</a>' );
276
        echo '<div class="error"><p>'. $message.'</p></div>';
277
        return;
278
    }
279
280
    // 2. License key not entered for pro
281
    $key = monsterinsights_is_pro_version() ? MonsterInsights()->license->get_license_key() : '';
0 ignored issues
show
Bug Best Practice introduced by
The property $license is declared protected in MonsterInsights_Lite. Since you implement __get, consider adding a @property or @property-read.
Loading history...
282
    if ( monsterinsights_is_pro_version() && empty( $key ) ) {
283
        $page = is_network_admin() ? network_admin_url( 'admin.php?page=monsterinsights_network' ) : admin_url( 'admin.php?page=monsterinsights_settings' );
284
        $message = sprintf( esc_html__( 'Warning: No valid license key has been entered for MonsterInsights. You are currently not getting updates, and are not able to view reports. %1$sPlease click here to enter your license key and begin receiving updates and reports.%2$s', 'google-analytics-for-wordpress' ), '<a href="'. esc_url( $page ) . '">', '</a>' );
285
        echo '<div class="error"><p>'. $message.'</p></div>';
286
        return;
287
    }
288
289
    // 3. License key not valid/okay for pro
290
    if ( monsterinsights_is_pro_version() ) {
291
        $message = '';
292
        if ( MonsterInsights()->license->get_site_license_key() ){
293
            if ( MonsterInsights()->license->site_license_expired() ) {
294
                $message = sprintf( esc_html__( 'Your license key for MonsterInsights has expired. %1$sPlease click here to renew your license key.%2$s', 'google-analytics-for-wordpress' ), '<a href="https://www.monsterinsights.com/login/" target="_blank" rel="noopener noreferrer" referrer="no-referrer">', '</a>' );
295
            } else if ( MonsterInsights()->license->site_license_disabled() ) {
296
                $message = esc_html__( 'Your license key for MonsterInsights has been disabled. Please use a different key.', 'google-analytics-for-wordpress' );
297
            } else if ( MonsterInsights()->license->site_license_invalid() ) {
298
                $message = esc_html__( 'Your license key for MonsterInsights is invalid. The key no longer exists or the user associated with the key has been deleted. Please use a different key.', 'google-analytics-for-wordpress' );
299
            }
300
        } else if ( MonsterInsights()->license->get_network_license_key() ) {
301
            if ( MonsterInsights()->license->network_license_expired() ) {
302
                $message = sprintf( esc_html__( 'Your network license key for MonsterInsights has expired. %1$sPlease click here to renew your license key.%2$s', 'google-analytics-for-wordpress' ), '<a href="https://www.monsterinsights.com/login/" target="_blank" rel="noopener noreferrer" referrer="no-referrer">', '</a>' );
303
            } else if ( MonsterInsights()->license->network_license_disabled() ) {
304
                $message = esc_html__( 'Your network license key for MonsterInsights has been disabled. Please use a different key.', 'google-analytics-for-wordpress' );
305
            } else if ( MonsterInsights()->license->network_license_invalid() ) {
306
                $message = esc_html__( 'Your network license key for MonsterInsights is invalid. The key no longer exists or the user associated with the key has been deleted. Please use a different key.', 'google-analytics-for-wordpress' );
307
            }
308
        }
309
        if ( ! empty( $message ) ) {
310
            echo '<div class="error"><p>'. $message.'</p></div>';
311
            return;
312
        }
313
    }
314
315
    // 4. Optin setting not configured
316
    // if ( ! is_network_admin() ) {
317
    //     if ( ! get_option( 'monsterinsights_tracking_notice' ) ) {
318
    //         if ( ! monsterinsights_get_option( 'anonymous_data', false ) ) {
319
    //             if ( ! monsterinsights_is_dev_url( network_site_url( '/' ) ) ) {
320
    //                 if ( monsterinsights_is_pro_version() ) {
321
    //                     monsterinsights_update_option( 'anonymous_data', 1 );
322
    //                     return;
323
    //                 }
324
    //                 $optin_url  = add_query_arg( 'mi_action', 'opt_into_tracking' );
325
    //                 $optout_url = add_query_arg( 'mi_action', 'opt_out_of_tracking' );
326
    //                 echo '<div class="updated"><p>';
327
    //                 echo esc_html__( 'Allow MonsterInsights to track plugin usage? Opt-in to tracking and our newsletter to stay informed of the latest changes to MonsterInsights and help us ensure compatibility.', 'google-analytics-for-wordpress' );
328
    //                 echo '&nbsp;<a href="' . esc_url( $optin_url ) . '" class="button-secondary">' . __( 'Allow', 'google-analytics-for-wordpress' ) . '</a>';
329
    //                 echo '&nbsp;<a href="' . esc_url( $optout_url ) . '" class="button-secondary">' . __( 'Do not allow', 'google-analytics-for-wordpress' ) . '</a>';
330
    //                 echo '</p></div>';
331
    //                 return;
332
    //             } else {
333
    //                 // is testing site
334
    //                  update_option( 'monsterinsights_tracking_notice', '1' );
335
    //             }
336
    //         }
337
    //     }
338
    // }
339
340
    $notices   = get_option( 'monsterinsights_notices' );
341
    if ( ! is_array( $notices ) ) {
342
        $notices = array();
343
    }
344
345
    // 5. Authenticate, not manual
346
    $authed   = MonsterInsights()->auth->is_authed() || MonsterInsights()->auth->is_network_authed();
0 ignored issues
show
Bug Best Practice introduced by
The property $auth is declared protected in MonsterInsights_Lite. Since you implement __get, consider adding a @property or @property-read.
Loading history...
347
    $url      = is_network_admin() ? network_admin_url( 'admin.php?page=monsterinsights_network' ) : admin_url( 'admin.php?page=monsterinsights_settings' );
348
349
    if ( empty( $authed ) && ! isset( $notices['monsterinsights_auth_not_manual' ] ) ) { 
350
        echo '<div class="notice notice-info is-dismissible monsterinsights-notice" data-notice="monsterinsights_auth_not_manual">';
351
            echo '<p>';
352
            echo sprintf( esc_html__( 'Important: You are currently using manual UA code output. We highly recommend %1$sauthenticating with MonsterInsights%2$s so that you can access our new reporting area and take advantage of new MonsterInsights features.', 'google-analytics-for-wordpress' ), '<a href="' . $url .'">', '</a>' ); 
353
            echo '</p>';
354
        echo '</div>';
355
        return;
356
    }
357
358
    // 6. Automatic updates not configured
359
    // if ( ! is_network_admin() ) {
360
    //     $updates   = monsterinsights_get_option( 'automatic_updates', false );
361
    //     $url       = admin_url( 'admin.php?page=monsterinsights_settings' );
362
363
    //     if ( empty( $updates) && ! isset( $notices['monsterinsights_automatic_updates' ] ) ) { 
364
    //         echo '<div class="notice notice-info is-dismissible monsterinsights-notice" data-notice="monsterinsights_automatic_updates">';
365
    //             echo '<p>';
366
    //             echo sprintf( esc_html__( 'Important: Please %1$sconfigure the Automatic Updates Settings%2$s in MonsterInsights.', 'google-analytics-for-wordpress' ), '<a href="' . $url .'">', '</a>' ); 
367
    //             echo '</p>';
368
    //         echo '</div>';
369
    //         return;
370
    //     }
371
    // }
372
373
    // 7. WooUpsell
374
    if ( ! monsterinsights_is_pro_version() && class_exists( 'WooCommerce' ) ) {
375
        if ( ! isset( $notices['monsterinsights_woocommerce_tracking_available' ] ) ) { 
376
            echo '<div class="notice notice-success is-dismissible monsterinsights-notice monsterinsights-wooedd-upsell-row" data-notice="monsterinsights_woocommerce_tracking_available">';
377
                echo '<div class="monsterinsights-wooedd-upsell-left">';
378
                    echo '<p><strong>';
379
                    echo esc_html( 'Enhanced Ecommerce Analytics for Your WooCommerce Store', 'google-analytics-for-wordpress' );
0 ignored issues
show
Unused Code introduced by
The call to esc_html() has too many arguments starting with 'google-analytics-for-wordpress'. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

379
                    echo /** @scrutinizer ignore-call */ esc_html( 'Enhanced Ecommerce Analytics for Your WooCommerce Store', 'google-analytics-for-wordpress' );

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
380
                    echo '</strong></p>';
381
                    echo '<img class="monsterinsights-wooedd-upsell-image monsterinsights-wooedd-upsell-image-small" src="' . trailingslashit( MONSTERINSIGHTS_PLUGIN_URL ) . 'assets/images/upsell/woo-edd-upsell.png">';
382
                    echo '<p>';
383
                    echo esc_html( 'MonsterInsights Pro gives you detailed stats and insights about your customers.', 'google-analytics-for-wordpress' );
384
                    echo '</p>';
385
                    echo '<p>';
386
                    echo esc_html( 'This helps you make data-driven decisions about your content, and marketing strategy so you can increase your website traffic, leads, and sales.', 'google-analytics-for-wordpress' );
387
                    echo '</p>';
388
                    echo '<p>';
389
                    echo esc_html( 'Pro customers also get Form Tracking, Custom Dimensions Tracking, UserID Tracking and much more.', 'google-analytics-for-wordpress' );
390
                    echo '</p>';
391
                    echo '<p>';
392
                    echo esc_html( 'Start making data-driven decisions to grow your business.', 'google-analytics-for-wordpress' );
393
                    echo '</p>';
394
                    echo sprintf( esc_html__( '%1$sGet MonsterInsights Pro%2$s', 'google-analytics-for-wordpress' ), '<a class="button button-primary button-hero" href="https://www.monsterinsights.com/lite/?utm_source=wpdashboard&utm_campaign=woocommercelite">', ' &raquo;</a>' ); 
395
                    echo '</p>';
396
                echo '</div><div class="monsterinsights-wooedd-upsell-right">';
397
                    echo '<img class="monsterinsights-wooedd-upsell-image monsterinsights-wooedd-upsell-image-large" src="' . trailingslashit( MONSTERINSIGHTS_PLUGIN_URL ) . 'assets/images/upsell/woo-edd-upsell.png">';
398
                echo '</div>';
399
            echo '</div>';
400
            return;
401
        }
402
    }
403
404
    // 8. EDDUpsell
405
    if ( ! monsterinsights_is_pro_version() && class_exists( 'Easy_Digital_Downloads' ) ) {
406
        if ( ! isset( $notices['monsterinsights_edd_tracking_available' ] ) ) { 
407
            echo '<div class="notice notice-success is-dismissible monsterinsights-notice monsterinsights-wooedd-upsell-row" data-notice="monsterinsights_edd_tracking_available">';
408
                echo '<div class="monsterinsights-wooedd-upsell-left">';
409
                    echo '<p><strong>';
410
                    echo esc_html( 'Enhanced Ecommerce Analytics for Your Easy Digital Downloads Store', 'google-analytics-for-wordpress' );
411
                    echo '</strong></p>';
412
                    echo '<img class="monsterinsights-wooedd-upsell-image monsterinsights-wooedd-upsell-image-small" src="' . trailingslashit( MONSTERINSIGHTS_PLUGIN_URL ) . 'assets/images/upsell/woo-edd-upsell.png">';
413
                    echo '<p>';
414
                    echo esc_html( 'MonsterInsights Pro gives you detailed stats and insights about your customers.', 'google-analytics-for-wordpress' );
415
                    echo '</p>';
416
                    echo '<p>';
417
                    echo esc_html( 'This helps you make data-driven decisions about your content, and marketing strategy so you can increase your website traffic, leads, and sales.', 'google-analytics-for-wordpress' );
418
                    echo '</p>';
419
                    echo '<p>';
420
                    echo esc_html( 'Pro customers also get Form Tracking, Custom Dimensions Tracking, UserID Tracking and much more.', 'google-analytics-for-wordpress' );
421
                    echo '</p>';
422
                    echo '<p>';
423
                    echo esc_html( 'Start making data-driven decisions to grow your business.', 'google-analytics-for-wordpress' );
424
                    echo '</p>';
425
                    echo sprintf( esc_html__( '%1$sGet MonsterInsights Pro%2$s', 'google-analytics-for-wordpress' ), '<a class="button button-primary button-hero" href="https://www.monsterinsights.com/lite/?utm_source=wpdashboard&utm_campaign=eddlite">', ' &raquo;</a>' ); 
426
                    echo '</p>';
427
                echo '</div><div class="monsterinsights-wooedd-upsell-right">';
428
                    echo '<img class="monsterinsights-wooedd-upsell-image monsterinsights-wooedd-upsell-image-large" src="' . trailingslashit( MONSTERINSIGHTS_PLUGIN_URL ) . 'assets/images/upsell/woo-edd-upsell.png">';
429
                echo '</div>';
430
            echo '</div>';
431
            return;
432
        }
433
    }
434
}
435
add_action( 'admin_notices', 'monsterinsights_admin_setup_notices' );
436
add_action( 'network_admin_notices', 'monsterinsights_admin_setup_notices' );
437
438
439
// AM Notices
440
function monsterinsights_am_notice_optout( $super_admin ) {
441
    if ( monsterinsights_get_option( 'hide_am_notices', false ) || monsterinsights_get_option( 'network_hide_am_notices', false ) ) {
442
        return false;
443
    }
444
    return $super_admin;
445
}
446
add_filter( "am_notifications_display", 'monsterinsights_am_notice_optout', 10, 1 );