Passed
Pull Request — master (#126)
by Kiran
04:13
created

WPInv_Plugin::admin_enqueue_scripts()   F

Complexity

Conditions 24
Paths 2304

Size

Total Lines 94
Code Lines 71

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 24
eloc 71
nc 2304
nop 0
dl 0
loc 94
rs 2
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Contains functions related to Invoicing plugin.
4
 *
5
 * @since 1.0.0
6
 * @package Invoicing
7
 */
8
 
9
// MUST have WordPress.
10
if ( !defined( 'WPINC' ) ) {
11
    exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) );
12
}
13
14
class WPInv_Plugin {
15
    private static $instance;
16
    
17
    public static function run() {
18
        if ( !isset( self::$instance ) && !( self::$instance instanceof WPInv_Plugin ) ) {
19
            self::$instance = new WPInv_Plugin;
20
            self::$instance->includes();
21
            self::$instance->actions();
22
            self::$instance->notes      = new WPInv_Notes();
0 ignored issues
show
Bug introduced by
The property notes does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
23
            self::$instance->reports    = new WPInv_Reports();
0 ignored issues
show
Bug introduced by
The property reports does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
24
        }
25
26
        return self::$instance;
27
    }
28
    
29
    public function __construct() {
30
        $this->define_constants();
31
    }
32
    
33
    public function define_constants() {
34
        define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
35
        define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
36
    }
37
    
38
    private function actions() {
39
        /* Internationalize the text strings used. */
40
        add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
41
        
42
        /* Perform actions on admin initialization. */
43
        add_action( 'admin_init', array( &$this, 'admin_init') );
44
        add_action( 'init', array( &$this, 'init' ), 3 );
45
        add_action( 'init', array( 'WPInv_Shortcodes', 'init' ) );
46
        add_action( 'init', array( &$this, 'wpinv_actions' ) );
47
        
48
        if ( class_exists( 'BuddyPress' ) ) {
49
            add_action( 'bp_include', array( &$this, 'bp_invoicing_init' ) );
50
        }
51
52
        add_action( 'wp_enqueue_scripts', array( &$this, 'enqueue_scripts' ) );
53
        
54
        if ( is_admin() ) {
55
            add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
56
            add_action( 'admin_body_class', array( &$this, 'admin_body_class' ) );
57
        } else {
58
            add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
59
        }
60
        
61
        /**
62
         * Fires after the setup of all WPInv_Plugin actions.
63
         *
64
         * @since 1.0.0
65
         *
66
         * @param WPInv_Plugin $this. Current WPInv_Plugin instance. Passed by reference.
67
         */
68
        do_action_ref_array( 'wpinv_actions', array( &$this ) );
69
70
        add_action( 'admin_init', array( &$this, 'activation_redirect') );
71
    }
72
    
73
    public function plugins_loaded() {
74
        /* Internationalize the text strings used. */
75
        $this->load_textdomain();
76
77
        do_action( 'wpinv_loaded' );
78
    }
79
    
80
    /**
81
     * Load the translation of the plugin.
82
     *
83
     * @since 1.0
84
     */
85
    public function load_textdomain( $locale = NULL ) {
86
        if ( empty( $locale ) ) {
87
            $locale = is_admin() && function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale();
88
        }
89
90
        $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' );
91
        
92
        unload_textdomain( 'invoicing' );
93
        load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' );
94
        load_plugin_textdomain( 'invoicing', false, WPINV_PLUGIN_DIR . 'languages' );
95
        
96
        /**
97
         * Define language constants.
98
         */
99
        require_once( WPINV_PLUGIN_DIR . 'language.php' );
100
    }
101
        
102
    public function includes() {
103
        global $wpinv_options;
104
        
105
        require_once( WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php' );
106
        $wpinv_options = wpinv_get_settings();
107
        
108
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-post-types.php' );
109
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php' );
110
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php' );
111
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php' );
112
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php' );
113
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php' );
114
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php' );
115
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-invoice-functions.php' );
116
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php' );
117
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php' );
118
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php' );
119
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php' );
120
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-user-functions.php' );
121
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-error-functions.php' );
122
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-invoice.php' );
123
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-item.php' );
124
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-notes.php' );
125
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-session.php' );
126
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php' );
127
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php' );
128
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-reports.php' );
129
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-shortcodes.php' );
130
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php' );
131
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php' );
132
        require_once( WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php' );
133
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php' );
134
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions.php' );
135
        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php' );
136
        require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-subscriptions-list-table.php' );
137
        if ( !class_exists( 'WPInv_EUVat' ) ) {
138
            require_once( WPINV_PLUGIN_DIR . 'includes/libraries/wpinv-euvat/class-wpinv-euvat.php' );
139
        }
140
        
141
        $gateways = array_keys( wpinv_get_enabled_payment_gateways() );
142
        if ( !empty( $gateways ) ) {
143
            foreach ( $gateways as $gateway ) {
144
                if ( $gateway == 'manual' ) {
145
                    continue;
146
                }
147
                
148
                $gateway_file = WPINV_PLUGIN_DIR . 'includes/gateways/' . $gateway . '.php';
149
                
150
                if ( file_exists( $gateway_file ) ) {
151
                    require_once( $gateway_file );
152
                }
153
            }
154
        }
155
        require_once( WPINV_PLUGIN_DIR . 'includes/gateways/manual.php' );
156
        
157
        if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
158
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-upgrade-functions.php' );
159
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php' );
160
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/admin-meta-boxes.php' );
161
            //require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-recurring-admin.php' );
0 ignored issues
show
Unused Code Comprehensibility introduced by
46% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
162
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-details.php' );
163
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-items.php' );
164
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php' );
165
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-address.php' );
166
            require_once( WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php' );
167
            //require_once( WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php' );
0 ignored issues
show
Unused Code Comprehensibility introduced by
46% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
168
        }
169
        
170
        // include css inliner
171
        if ( ! class_exists( 'Emogrifier' ) && class_exists( 'DOMDocument' ) ) {
172
            include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' );
173
        }
174
        
175
        require_once( WPINV_PLUGIN_DIR . 'includes/admin/install.php' );
176
    }
177
    
178
    public function init() {
179
    }
180
    
181
    public function admin_init() {
182
        if (!(defined( 'DOING_AJAX' ) && DOING_AJAX)) {
183
        }
184
        
185
        add_action( 'admin_print_scripts-edit.php', array( &$this, 'admin_print_scripts_edit_php' ) );
186
    }
187
188
    public function activation_redirect() {
189
        // Bail if no activation redirect
190
        if ( !get_transient( '_wpinv_activation_redirect' ) ) {
191
            return;
192
        }
193
194
        // Delete the redirect transient
195
        delete_transient( '_wpinv_activation_redirect' );
196
197
        // Bail if activating from network, or bulk
198
        if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
199
            return;
200
        }
201
202
        wp_safe_redirect( admin_url( 'admin.php?page=wpinv-settings&tab=general' ) );
203
        exit;
204
    }
205
    
206
    public function enqueue_scripts() {
207
        $suffix       = '';//defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
0 ignored issues
show
Unused Code Comprehensibility introduced by
48% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
208
        
209
        wp_deregister_style( 'font-awesome' );
210
        wp_register_style( 'font-awesome', '//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome' . $suffix . '.css', array(), '4.7.0' );
211
        wp_enqueue_style( 'font-awesome' );
212
        
213
        wp_register_style( 'wpinv_front_style', WPINV_PLUGIN_URL . 'assets/css/invoice-front.css', array(), WPINV_VERSION );
214
        wp_enqueue_style( 'wpinv_front_style' );
215
               
216
        // Register scripts
217
        wp_register_script( 'jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array( 'jquery' ), '2.70', true );
218
        wp_register_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/invoice-front' . $suffix . '.js', array( 'jquery', 'wpinv-vat-script' ),  WPINV_VERSION );
219
        
220
        $localize                         = array();
221
        $localize['ajax_url']             = admin_url( 'admin-ajax.php' );
222
        $localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
223
        $localize['currency_symbol']      = wpinv_currency_symbol();
224
        $localize['currency_pos']         = wpinv_currency_position();
225
        $localize['thousand_sep']         = wpinv_thousands_separator();
226
        $localize['decimal_sep']          = wpinv_decimal_separator();
227
        $localize['decimals']             = wpinv_decimals();
228
        $localize['txtComplete']          = __( 'Complete', 'invoicing' );
229
        
230
        $localize = apply_filters( 'wpinv_front_js_localize', $localize );
231
        
232
        wp_enqueue_script( 'jquery-blockui' );
233
        $autofill_api = wpinv_get_option('address_autofill_api');
234
        $autofill_active = wpinv_get_option('address_autofill_active');
235
        if ( isset( $autofill_active ) && 1 == $autofill_active && !empty( $autofill_api ) && wpinv_is_checkout() ) {
236
            if ( wp_script_is( 'google-maps-api', 'enqueued' ) ) {
237
                wp_dequeue_script( 'google-maps-api' );
238
            }
239
            wp_enqueue_script( 'google-maps-api', 'https://maps.googleapis.com/maps/api/js?key=' . $autofill_api . '&libraries=places', array( 'jquery' ), '', false );
240
            wp_enqueue_script( 'google-maps-init', WPINV_PLUGIN_URL . 'assets/js/gaaf.js', array( 'jquery', 'google-maps-api' ), '', true );
241
        }
242
        wp_enqueue_script( 'wpinv-front-script' );
243
        wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
244
    }
245
246
    public function admin_enqueue_scripts() {
247
        global $post, $pagenow;
248
        
249
        $post_type  = wpinv_admin_post_type();
250
        $suffix     = '';//defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
0 ignored issues
show
Unused Code Comprehensibility introduced by
48% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
251
        $page       = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : '';
252
253
        wp_deregister_style( 'font-awesome' );
254
        wp_register_style( 'font-awesome', '//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome' . $suffix . '.css', array(), '4.7.0' );
255
        wp_enqueue_style( 'font-awesome' );
256
        
257
        $jquery_ui_css = false;
258
        if ( ( $post_type == 'wpi_invoice' || $post_type == 'wpi_quote' || $post_type == 'wpi_discount' ) && ( $pagenow == 'post-new.php' || $pagenow == 'post.php' ) ) {
259
            $jquery_ui_css = true;
260
        } else if ( $page == 'wpinv-settings' || $page == 'wpinv-reports' ) {
261
            $jquery_ui_css = true;
262
        }
263
        if ( $jquery_ui_css ) {
264
            wp_register_style( 'jquery-ui-css', WPINV_PLUGIN_URL . 'assets/css/jquery-ui' . $suffix . '.css', array(), '1.8.16' );
265
            wp_enqueue_style( 'jquery-ui-css' );
266
        }
267
268
        wp_register_style( 'wpinv_meta_box_style', WPINV_PLUGIN_URL . 'assets/css/meta-box.css', array(), WPINV_VERSION );
269
        wp_enqueue_style( 'wpinv_meta_box_style' );
270
        
271
        wp_register_style( 'wpinv_admin_style', WPINV_PLUGIN_URL . 'assets/css/admin.css', array(), WPINV_VERSION );
272
        wp_enqueue_style( 'wpinv_admin_style' );
273
274
        $enqueue = ( $post_type == 'wpi_discount' || $post_type == 'wpi_invoice' && ( $pagenow == 'post-new.php' || $pagenow == 'post.php' ) );
275
        if ( $page == 'wpinv-subscriptions' ) {
276
            wp_enqueue_script( 'jquery-ui-datepicker' );
277
        }
278
        $enqueue_datepicker = apply_filters( 'wpinv_admin_enqueue_jquery_ui_datepicker', $enqueue );
0 ignored issues
show
Unused Code introduced by
$enqueue_datepicker is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
279
        
280
        if ( $enqueue_datepicker = apply_filters( 'wpinv_admin_enqueue_jquery_ui_datepicker', $enqueue ) ) {
0 ignored issues
show
Unused Code introduced by
$enqueue_datepicker is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
281
            wp_enqueue_script( 'jquery-ui-datepicker' );
282
        }
283
284
        wp_enqueue_style( 'wp-color-picker' );
285
        wp_enqueue_script( 'wp-color-picker' );
286
        
287
        wp_register_script( 'jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array( 'jquery' ), '2.70', true );
288
289
        if ($post_type == 'wpi_invoice' || $post_type == 'wpi_quote' && ($pagenow == 'post-new.php' || $pagenow == 'post.php')) {
290
            $autofill_api = wpinv_get_option('address_autofill_api');
291
            $autofill_active = wpinv_get_option('address_autofill_active');
292
            if (isset($autofill_active) && 1 == $autofill_active && !empty($autofill_api)) {
293
                wp_enqueue_script('google-maps-api', 'https://maps.googleapis.com/maps/api/js?key=' . $autofill_api . '&libraries=places', array('jquery'), '', false);
294
                wp_enqueue_script('google-maps-init', WPINV_PLUGIN_URL . 'assets/js/gaaf.js', array('jquery'), '', true);
295
            }
296
        }
297
298
        wp_register_script( 'wpinv-admin-script', WPINV_PLUGIN_URL . 'assets/js/admin' . $suffix . '.js', array( 'jquery', 'jquery-blockui','jquery-ui-tooltip' ),  WPINV_VERSION );
299
        wp_enqueue_script( 'wpinv-admin-script' );
300
        
301
        $localize                               = array();
302
        $localize['ajax_url']                   = admin_url( 'admin-ajax.php' );
303
        $localize['post_ID']                    = isset( $post->ID ) ? $post->ID : '';
304
        $localize['wpinv_nonce']                = wp_create_nonce( 'wpinv-nonce' );
305
        $localize['add_invoice_note_nonce']     = wp_create_nonce( 'add-invoice-note' );
306
        $localize['delete_invoice_note_nonce']  = wp_create_nonce( 'delete-invoice-note' );
307
        $localize['invoice_item_nonce']         = wp_create_nonce( 'invoice-item' );
308
        $localize['billing_details_nonce']      = wp_create_nonce( 'get-billing-details' );
309
        $localize['tax']                        = wpinv_tax_amount();
310
        $localize['discount']                   = wpinv_discount_amount();
311
        $localize['currency_symbol']            = wpinv_currency_symbol();
312
        $localize['currency_pos']               = wpinv_currency_position();
313
        $localize['thousand_sep']               = wpinv_thousands_separator();
314
        $localize['decimal_sep']                = wpinv_decimal_separator();
315
        $localize['decimals']                   = wpinv_decimals();
316
        $localize['save_invoice']               = __( 'Save Invoice', 'invoicing' );
317
        $localize['status_publish']             = wpinv_status_nicename( 'publish' );
318
        $localize['status_pending']             = wpinv_status_nicename( 'wpi-pending' );
319
        $localize['delete_tax_rate']            = __( 'Are you sure you wish to delete this tax rate?', 'invoicing' );
320
        $localize['OneItemMin']                 = __( 'Invoice must contain at least one item', 'invoicing' );
321
        $localize['DeleteInvoiceItem']          = __( 'Are you sure you wish to delete this item?', 'invoicing' );
322
        $localize['FillBillingDetails']         = __( 'Fill the user\'s billing information? This will remove any currently entered billing information', 'invoicing' );
323
        $localize['confirmCalcTotals']          = __( 'Recalculate totals? This will recalculate totals based on the user billing country. If no billing country is set it will use the base country.', 'invoicing' );
324
        $localize['AreYouSure']                 = __( 'Are you sure?', 'invoicing' );
325
        $localize['emptyInvoice']               = __( 'Add at least one item to save invoice!', 'invoicing' );
326
        $localize['errDeleteItem']              = __( 'This item is in use! Before delete this item, you need to delete all the invoice(s) using this item.', 'invoicing' );
327
        $localize['delete_subscription']        = __( 'Are you sure you want to delete this subscription?', 'invoicing' );
328
        $localize['action_edit']                = __( 'Edit', 'invoicing' );
329
        $localize['action_cancel']              = __( 'Cancel', 'invoicing' );
330
331
        $localize = apply_filters( 'wpinv_admin_js_localize', $localize );
332
333
        wp_localize_script( 'wpinv-admin-script', 'WPInv_Admin', $localize );
334
335
        if ( $page == 'wpinv-subscriptions' ) {
336
            wp_register_script( 'wpinv-sub-admin-script', WPINV_PLUGIN_URL . 'assets/js/subscriptions' . $suffix . '.js', array( 'wpinv-admin-script' ),  WPINV_VERSION );
337
            wp_enqueue_script( 'wpinv-sub-admin-script' );
338
        }
339
    }
340
    
341
    public function admin_body_class( $classes ) {
342
        global $pagenow, $post, $current_screen;
343
        
344
        if ( !empty( $current_screen->post_type ) && ( $current_screen->post_type == 'wpi_invoice' || $current_screen->post_type == 'wpi_quote' ) ) {
345
            $classes .= ' wpinv-cpt';
346
        }
347
        
348
        $page = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : false;
349
350
        $add_class = $page && $pagenow == 'admin.php' && strpos( $page, 'wpinv-' ) === 0 ? true : false;
0 ignored issues
show
Bug Best Practice introduced by
The expression $page of type string|false is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== false instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
351
        if ( $add_class ) {
352
            $classes .= ' wpi-' . wpinv_sanitize_key( $page );
353
        }
354
        
355
        $settings_class = array();
356
        if ( $page == 'wpinv-settings' ) {
357
            if ( !empty( $_REQUEST['tab'] ) ) {
358
                $settings_class[] = sanitize_text_field( $_REQUEST['tab'] );
359
            }
360
            
361
            if ( !empty( $_REQUEST['section'] ) ) {
362
                $settings_class[] = sanitize_text_field( $_REQUEST['section'] );
363
            }
364
            
365
            $settings_class[] = isset( $_REQUEST['wpi_sub'] ) && $_REQUEST['wpi_sub'] !== '' ? sanitize_text_field( $_REQUEST['wpi_sub'] ) : 'main';
366
        }
367
        
368
        if ( !empty( $settings_class ) ) {
369
            $classes .= ' wpi-' . wpinv_sanitize_key( implode( $settings_class, '-' ) );
370
        }
371
        
372
        $post_type = wpinv_admin_post_type();
373
374
        if ( $post_type == 'wpi_invoice' || $post_type == 'wpi_quote' || $add_class !== false ) {
375
            return $classes .= ' wpinv';
376
        }
377
        
378
        if ( $pagenow == 'post.php' && $post_type == 'wpi_item' && !empty( $post ) && !wpinv_item_is_editable( $post ) ) {
379
            $classes .= ' wpi-editable-n';
380
        }
381
382
        return $classes;
383
    }
384
    
385
    public function admin_print_scripts_edit_php() {
386
387
    }
388
    
389
    public function wpinv_actions() {
390
        if ( isset( $_REQUEST['wpi_action'] ) ) {
391
            do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
392
        }
393
    }
394
    
395
    public function pre_get_posts( $wp_query ) {
396
        if ( !empty( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] == 'wpi_invoice' && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) {
397
            $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses() );
398
        }
399
        
400
        return $wp_query;
401
    }
402
    
403
    public function bp_invoicing_init() {
404
        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' );
405
    }
406
}