Passed
Push — master ( 90370d...def67b )
by Stiofan
29s
created

wpinv-admin-functions.php ➔ wpinv_show_test_payment_gateway_notice()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
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
function wpinv_columns( $columns ) {
15
    $columns = array(
16
        'cb'                => $columns['cb'],
17
        'number'            => __( 'Number', 'invoicing' ),
18
        'customer'          => __( 'Customer', 'invoicing' ),
19
        'amount'            => __( 'Amount', 'invoicing' ),
20
        'invoice_date'      => __( 'Created Date', 'invoicing' ),
21
        'payment_date'      => __( 'Payment Date', 'invoicing' ),
22
        'status'            => __( 'Status', 'invoicing' ),
23
        'ID'                => __( 'ID', 'invoicing' ),
24
        'wpi_actions'       => __( 'Actions', 'invoicing' ),
25
    );
26
27
    return apply_filters( 'wpi_invoice_table_columns', $columns );
28
}
29
add_filter( 'manage_wpi_invoice_posts_columns', 'wpinv_columns' );
30
31
function wpinv_bulk_actions( $actions ) {
32
    if ( isset( $actions['edit'] ) ) {
33
        unset( $actions['edit'] );
34
    }
35
36
    return $actions;
37
}
38
add_filter( 'bulk_actions-edit-wpi_invoice', 'wpinv_bulk_actions' );
39
add_filter( 'bulk_actions-edit-wpi_item', 'wpinv_bulk_actions' );
40
41
function wpinv_sortable_columns( $columns ) {
0 ignored issues
show
Unused Code introduced by
The parameter $columns is not used and could be removed.

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

Loading history...
42
    $columns = array(
43
        'ID'            => array( 'ID', true ),
44
        'number'        => array( 'number', false ),
45
        'amount'        => array( 'amount', false ),
46
        'invoice_date'  => array( 'date', false ),
47
        'payment_date'  => array( 'payment_date', true ),
48
        'customer'      => array( 'customer', false ),
49
        'status'        => array( 'status', false ),
50
    );
51
    
52
    return apply_filters( 'wpi_invoice_table_sortable_columns', $columns );
53
}
54
add_filter( 'manage_edit-wpi_invoice_sortable_columns', 'wpinv_sortable_columns' );
55
56
add_action( 'manage_wpi_invoice_posts_custom_column', 'wpinv_posts_custom_column');
57
function wpinv_posts_custom_column( $column_name, $post_id = 0 ) {
0 ignored issues
show
Unused Code introduced by
The parameter $post_id is not used and could be removed.

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

Loading history...
58
    global $post, $wpi_invoice;
59
    
60
    if ( empty( $wpi_invoice ) || ( !empty( $wpi_invoice ) && $post->ID != $wpi_invoice->ID ) ) {
61
        $wpi_invoice = new WPInv_Invoice( $post->ID );
62
    }
63
64
    $value = NULL;
65
    
66
    switch ( $column_name ) {
67
        case 'email' :
68
            $value   = $wpi_invoice->get_email();
69
            break;
70
        case 'customer' :
71
            $customer_name = $wpi_invoice->get_user_full_name();
72
            $customer_name = $customer_name != '' ? $customer_name : __( 'Customer', 'invoicing' );
73
            $value = '<a href="' . esc_url( get_edit_user_link( $wpi_invoice->get_user_id() ) ) . '">' . $customer_name . '</a>';
74
            if ( $email = $wpi_invoice->get_email() ) {
75
                $value .= '<br><a class="email" href="mailto:' . $email . '">' . $email . '</a>';
76
            }
77
            break;
78
        case 'amount' :
79
            echo $wpi_invoice->get_total( true );
80
            break;
81
        case 'invoice_date' :
82
            $date_format = get_option( 'date_format' );
83
            $time_format = get_option( 'time_format' );
84
            $date_time_format = $date_format . ' '. $time_format;
0 ignored issues
show
Unused Code introduced by
$date_time_format 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...
85
            
86
            $m_time = $post->post_date;
87
            $h_time = mysql2date( $date_format, $m_time );
88
            
89
            $value   = '<abbr title="' . $m_time . '">' . $h_time . '</abbr>';
90
            break;
91
        case 'payment_date' :
92
            if ( $date_completed = $wpi_invoice->get_meta( '_wpinv_completed_date', true ) ) {
93
                $date_format = get_option( 'date_format' );
94
                $time_format = get_option( 'time_format' );
95
                $date_time_format = $date_format . ' '. $time_format;
0 ignored issues
show
Unused Code introduced by
$date_time_format 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...
96
                
97
                $m_time = $date_completed;
98
                $h_time = mysql2date( $date_format, $m_time );
99
                
100
                $value   = '<abbr title="' . $m_time . '">' . $h_time . '</abbr>';
101
            } else {
102
                $value = '-';
103
            }
104
            break;
105
        case 'status' :
106
            $value   = $wpi_invoice->get_status( true ) . ( $wpi_invoice->is_recurring() && $wpi_invoice->is_parent() ? ' <span class="wpi-suffix">' . __( '(r)', 'invoicing' ) . '</span>' : '' );
107
            $is_viewed = wpinv_is_invoice_viewed( $wpi_invoice->ID );
108
            if ( 1 == $is_viewed ) {
109
                $value .= '&nbsp;&nbsp;<i class="fa fa-eye" title="'.__( 'Viewed by Customer', 'invoicing' ).'"></i>';
110
            }
111
            if ( ( $wpi_invoice->is_paid() || $wpi_invoice->is_refunded() ) && ( $gateway_title = wpinv_get_gateway_admin_label( $wpi_invoice->get_gateway() ) ) ) {
112
                $value .= '<br><small class="meta gateway">' . wp_sprintf( __( 'Via %s', 'invoicing' ), $gateway_title ) . '</small>';
113
            }
114
            break;
115
        case 'number' :
116
            $edit_link = get_edit_post_link( $post->ID );
117
            $value = '<a title="' . esc_attr__( 'View Invoice Details', 'invoicing' ) . '" href="' . esc_url( $edit_link ) . '">' . $wpi_invoice->get_number() . '</a>';
118
            break;
119
        case 'wpi_actions' :
120
            $value = '';
121
            if ( !empty( $post->post_name ) ) {
122
                $value .= '<a title="' . esc_attr__( 'Print invoice', 'invoicing' ) . '" href="' . esc_url( get_permalink( $post->ID ) ) . '" class="button ui-tip column-act-btn" title="" target="_blank"><span class="dashicons dashicons-print"><i style="" class="fa fa-print"></i></span></a>';
123
            }
124
            
125
            if ( $email = $wpi_invoice->get_email() ) {
0 ignored issues
show
Unused Code introduced by
$email 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...
126
                $value .= '<a title="' . esc_attr__( 'Send invoice to customer', 'invoicing' ) . '" href="' . esc_url( add_query_arg( array( 'wpi_action' => 'send_invoice', 'invoice_id' => $post->ID ) ) ) . '" class="button ui-tip column-act-btn"><span class="dashicons dashicons-email-alt"></span></a>';
127
            }
128
            
129
            break;
130
        default:
131
            $value = isset( $post->$column_name ) ? $post->$column_name : '';
132
            break;
133
134
    }
135
    $value = apply_filters( 'wpinv_payments_table_column', $value, $post->ID, $column_name );
136
    
137
    if ( $value !== NULL ) {
138
        echo $value;
139
    }
140
}
141
142
function wpinv_admin_post_id( $id = 0 ) {
143
    global $post;
144
145
    if ( isset( $id ) && ! empty( $id ) ) {
146
        return (int)$id;
147
    } else if ( get_the_ID() ) {
148
        return (int) get_the_ID();
149
    } else if ( isset( $post->ID ) && !empty( $post->ID ) ) {
150
        return (int) $post->ID;
151
    } else if ( isset( $_GET['post'] ) && !empty( $_GET['post'] ) ) {
152
        return (int) $_GET['post'];
153
    } else if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) ) {
154
        return (int) $_GET['id'];
155
    } else if ( isset( $_POST['id'] ) && !empty( $_POST['id'] ) ) {
156
        return (int) $_POST['id'];
157
    } 
158
159
    return null;
160
}
161
    
162
function wpinv_admin_post_type( $id = 0 ) {
163
    if ( !$id ) {
164
        $id = wpinv_admin_post_id();
165
    }
166
    
167
    $type = get_post_type( $id );
168
    
169
    if ( !$type ) {
170
        $type = isset( $_GET['post_type'] ) && !empty( $_GET['post_type'] ) ? $_GET['post_type'] : null;
171
    }
172
    
173
    return apply_filters( 'wpinv_admin_post_type', $type, $id );
174
}
175
176
function wpinv_admin_messages() {
177
	global $wpinv_options, $pagenow, $post;
178
179 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'discount_added' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
180
		 add_settings_error( 'wpinv-notices', 'wpinv-discount-added', __( 'Discount code added.', 'invoicing' ), 'updated' );
181
	}
182
183 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'discount_add_failed' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
184
		add_settings_error( 'wpinv-notices', 'wpinv-discount-add-fail', __( 'There was a problem adding your discount code, please try again.', 'invoicing' ), 'error' );
185
	}
186
187 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'discount_exists' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
188
		add_settings_error( 'wpinv-notices', 'wpinv-discount-exists', __( 'A discount with that code already exists, please use a different code.', 'invoicing' ), 'error' );
189
	}
190
191 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'discount_updated' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
192
		 add_settings_error( 'wpinv-notices', 'wpinv-discount-updated', __( 'Discount code updated.', 'invoicing' ), 'updated' );
193
	}
194
195 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'discount_update_failed' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
196
		add_settings_error( 'wpinv-notices', 'wpinv-discount-updated-fail', __( 'There was a problem updating your discount code, please try again.', 'invoicing' ), 'error' );
197
	}
198
199 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'invoice_deleted' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
200
		add_settings_error( 'wpinv-notices', 'wpinv-deleted', __( 'The invoice has been deleted.', 'invoicing' ), 'updated' );
201
	}
202
203 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'email_disabled' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
204
		add_settings_error( 'wpinv-notices', 'wpinv-sent-fail', __( 'Email notification is disabled. Please check settings.', 'invoicing' ), 'error' );
205
	}
206
207 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'email_sent' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
208
		add_settings_error( 'wpinv-notices', 'wpinv-sent', __( 'The email has been sent to customer.', 'invoicing' ), 'updated' );
209
    }
210
    
211 View Code Duplication
    if ( isset( $_GET['wpinv-message'] ) && 'email_fail' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
212
		add_settings_error( 'wpinv-notices', 'wpinv-sent-fail', __( 'Fail to send email to the customer.', 'invoicing' ), 'error' );
213
    }
214
215 View Code Duplication
    if ( isset( $_GET['wpinv-message'] ) && 'invoice-note-deleted' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
216
        add_settings_error( 'wpinv-notices', 'wpinv-note-deleted', __( 'The invoice note has been deleted.', 'invoicing' ), 'updated' );
217
    }
218
219 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'settings-imported' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
220
		add_settings_error( 'wpinv-notices', 'wpinv-settings-imported', __( 'The settings have been imported.', 'invoicing' ), 'updated' );
221
	}
222
223 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'note-added' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
224
		add_settings_error( 'wpinv-notices', 'wpinv-note-added', __( 'The invoice note has been added successfully.', 'invoicing' ), 'updated' );
225
	}
226
227 View Code Duplication
	if ( isset( $_GET['wpinv-message'] ) && 'invoice-updated' == $_GET['wpinv-message'] && current_user_can( 'manage_options' ) ) {
228
		add_settings_error( 'wpinv-notices', 'wpinv-updated', __( 'The invoice has been successfully updated.', 'invoicing' ), 'updated' );
229
	}
230
    
231
	if ( $pagenow == 'post.php' && !empty( $post->post_type ) && $post->post_type == 'wpi_item' && !wpinv_item_is_editable( $post ) ) {
232
		$message = apply_filters( 'wpinv_item_non_editable_message', __( 'This item in not editable.', 'invoicing' ), $post->ID );
233
234
		if ( !empty( $message ) ) {
235
			add_settings_error( 'wpinv-notices', 'wpinv-edit-n', $message, 'updated' );
236
		}
237
	}
238
239
	settings_errors( 'wpinv-notices' );
240
}
241
add_action( 'admin_notices', 'wpinv_admin_messages' );
242
243
add_action( 'admin_init', 'wpinv_show_test_payment_gateway_notice' );
244
function wpinv_show_test_payment_gateway_notice(){
245
    add_action( 'admin_notices', 'wpinv_test_payment_gateway_messages' );
246
}
247
248
function wpinv_test_payment_gateway_messages(){
249
    $gateways = wpinv_get_enabled_payment_gateways();
250
    $name = array(); $test_gateways = '';
251
    if ($gateways) {
252
        foreach ($gateways as $id => $gateway) {
253
            if (wpinv_is_test_mode($id)) {
254
                $name[] = $gateway['checkout_label'];
255
            }
256
        }
257
        $test_gateways = implode(', ', $name);
258
    }
259
    if(isset($test_gateways) && !empty($test_gateways)){
260
        $link = admin_url('admin.php?page=wpinv-settings&tab=gateways');
261
        $notice = wp_sprintf( __('<strong>Important:</strong> Payment Gateway(s) %s are in testing mode and will not receive real payments. Go to <a href="%s"> Gateway Settings</a>.', 'invoicing'), $test_gateways, $link );
262
        ?>
263
        <div class="notice notice-warning is-dismissible">
264
            <p><?php echo $notice; ?></p>
265
        </div>
266
        <?php
267
    }
268
}
269
270
function wpinv_items_columns( $existing_columns ) {
271
    global $wpinv_euvat;
272
    
273
    $columns                = array();
274
    $columns['cb']          = $existing_columns['cb'];
275
    $columns['title']       = __( 'Title', 'invoicing' );
276
    $columns['price']       = __( 'Price', 'invoicing' );
277
    if ( $wpinv_euvat->allow_vat_rules() ) {
278
        $columns['vat_rule']    = __( 'VAT rule type', 'invoicing' );
279
    }
280
    if ( $wpinv_euvat->allow_vat_classes() ) {
281
        $columns['vat_class']   = __( 'VAT class', 'invoicing' );
282
    }
283
    $columns['type']        = __( 'Type', 'invoicing' );
284
    $columns['recurring']   = __( 'Recurring', 'invoicing' );
285
    $columns['date']        = __( 'Date', 'invoicing' );
286
    $columns['id']          = __( 'ID', 'invoicing' );
287
288
    return apply_filters( 'wpinv_items_columns', $columns );
289
}
290
add_filter( 'manage_wpi_item_posts_columns', 'wpinv_items_columns' );
291
292
function wpinv_items_sortable_columns( $columns ) {
293
    $columns['price']       = 'price';
294
    $columns['vat_rule']    = 'vat_rule';
295
    $columns['vat_class']   = 'vat_class';
296
    $columns['type']        = 'type';
297
    //$columns['recurring']   = 'recurring';
0 ignored issues
show
Unused Code Comprehensibility introduced by
67% 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...
298
    $columns['id']          = 'ID';
299
300
    return $columns;
301
}
302
add_filter( 'manage_edit-wpi_item_sortable_columns', 'wpinv_items_sortable_columns' );
303
304
function wpinv_items_table_custom_column( $column ) {
305
    global $wpinv_euvat, $post, $wpi_item;
306
    
307
    if ( empty( $wpi_item ) || ( !empty( $wpi_item ) && $post->ID != $wpi_item->ID ) ) {
308
        $wpi_item = new WPInv_Item( $post->ID );
309
    }
310
311
    switch ( $column ) {
312
        case 'price' :
313
            echo wpinv_item_price( $post->ID );
314
        break;
315
        case 'vat_rule' :
316
            echo $wpinv_euvat->item_rule_label( $post->ID );
317
        break;
318
        case 'vat_class' :
319
            echo $wpinv_euvat->item_class_label( $post->ID );
320
        break;
321
        case 'type' :
322
            echo wpinv_item_type( $post->ID ) . '<span class="meta">' . $wpi_item->get_custom_singular_name() . '</span>';
323
        break;
324
        case 'recurring' :
325
            echo ( wpinv_is_recurring_item( $post->ID ) ? '<i class="fa fa-check fa-recurring-y"></i>' : '<i class="fa fa-close fa-recurring-n"></i>' );
326
        break;
327
        case 'id' :
328
           echo $post->ID;
329
           echo '<div class="hidden" id="wpinv_inline-' . $post->ID . '">
330
                    <div class="price">' . wpinv_get_item_price( $post->ID ) . '</div>';
331
                    if ( $wpinv_euvat->allow_vat_rules() ) {
332
                        echo '<div class="vat_rule">' . $wpinv_euvat->get_item_rule( $post->ID ) . '</div>';
333
                    }
334
                    if ( $wpinv_euvat->allow_vat_classes() ) {
335
                        echo '<div class="vat_class">' . $wpinv_euvat->get_item_class( $post->ID ) . '</div>';
336
                    }
337
                    echo '<div class="type">' . wpinv_get_item_type( $post->ID ) . '</div>
338
                </div>';
339
        break;
340
    }
341
    
342
    do_action( 'wpinv_items_table_column_item_' . $column, $wpi_item, $post );
343
}
344
add_action( 'manage_wpi_item_posts_custom_column', 'wpinv_items_table_custom_column' );
345
346
function wpinv_add_items_filters() {
347
    global $wpinv_euvat, $typenow;
348
349
    // Checks if the current post type is 'item'
350
    if ( $typenow == 'wpi_item') {
351 View Code Duplication
        if ( $wpinv_euvat->allow_vat_rules() ) {
352
            echo wpinv_html_select( array(
353
                    'options'          => array_merge( array( '' => __( 'All VAT rules', 'invoicing' ) ), $wpinv_euvat->get_rules() ),
354
                    'name'             => 'vat_rule',
355
                    'id'               => 'vat_rule',
356
                    'selected'         => ( isset( $_GET['vat_rule'] ) ? $_GET['vat_rule'] : '' ),
357
                    'show_option_all'  => false,
358
                    'show_option_none' => false,
359
                    'class'            => 'gdmbx2-text-medium',
360
                ) );
361
        }
362
        
363 View Code Duplication
        if ( $wpinv_euvat->allow_vat_classes() ) {
364
            echo wpinv_html_select( array(
365
                    'options'          => array_merge( array( '' => __( 'All VAT classes', 'invoicing' ) ), $wpinv_euvat->get_all_classes() ),
366
                    'name'             => 'vat_class',
367
                    'id'               => 'vat_class',
368
                    'selected'         => ( isset( $_GET['vat_class'] ) ? $_GET['vat_class'] : '' ),
369
                    'show_option_all'  => false,
370
                    'show_option_none' => false,
371
                    'class'            => 'gdmbx2-text-medium',
372
                ) );
373
        }
374
            
375
        echo wpinv_html_select( array(
376
                'options'          => array_merge( array( '' => __( 'All item types', 'invoicing' ) ), wpinv_get_item_types() ),
377
                'name'             => 'type',
378
                'id'               => 'type',
379
                'selected'         => ( isset( $_GET['type'] ) ? $_GET['type'] : '' ),
380
                'show_option_all'  => false,
381
                'show_option_none' => false,
382
                'class'            => 'gdmbx2-text-medium',
383
            ) );
384
385
        if ( isset( $_REQUEST['all_posts'] ) && '1' === $_REQUEST['all_posts'] ) {
386
            echo '<input type="hidden" name="all_posts" value="1" />';
387
        }
388
    }
389
}
390
add_action( 'restrict_manage_posts', 'wpinv_add_items_filters', 100 );
391
392
function wpinv_send_invoice_after_save( $invoice ) {
393
    if ( empty( $_POST['wpi_save_send'] ) ) {
394
        return;
395
    }
396
    
397
    if ( !empty( $invoice->ID ) && !empty( $invoice->post_type ) && 'wpi_invoice' == $invoice->post_type ) {
398
        wpinv_user_invoice_notification( $invoice->ID );
399
    }
400
}
401
add_action( 'wpinv_invoice_metabox_saved', 'wpinv_send_invoice_after_save', 100, 1 );
402
403
function wpinv_send_register_new_user( $data, $postarr ) {
404
    if ( current_user_can( 'manage_options' ) && !empty( $data['post_type'] ) && ( 'wpi_invoice' == $data['post_type'] || 'wpi_quote' == $data['post_type'] ) ) {
405
        $is_new_user = !empty( $postarr['wpinv_new_user'] ) ? true : false;
406
        $email = !empty( $postarr['wpinv_email'] ) && $postarr['wpinv_email'] && is_email( $postarr['wpinv_email'] ) ? $postarr['wpinv_email'] : NULL;
407
        
408
        if ( $is_new_user && $email && !email_exists( $email ) ) {
409
            $first_name = !empty( $postarr['wpinv_first_name'] ) ? sanitize_text_field( $postarr['wpinv_first_name'] ) : '';
410
            $last_name = !empty( $postarr['wpinv_last_name'] ) ? sanitize_text_field( $postarr['wpinv_last_name'] ) : '';
411
            $display_name = $first_name || $last_name ? trim( $first_name . ' ' . $last_name ) : '';
412
            $user_nicename = $display_name ? trim( $display_name ) : $email;
413
            $user_company = !empty( $postarr['wpinv_company'] ) ? sanitize_text_field( $postarr['wpinv_company'] ) : '';
0 ignored issues
show
Unused Code introduced by
$user_company 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...
414
            
415
            $user_login = sanitize_user( str_replace( ' ', '', $display_name ), true );
416
            if ( !( validate_username( $user_login ) && !username_exists( $user_login ) ) ) {
417
                $new_user_login = strstr($email, '@', true);
418
                if ( validate_username( $user_login ) && username_exists( $user_login ) ) {
419
                    $user_login = sanitize_user($new_user_login, true );
420
                }
421
                if ( validate_username( $user_login ) && username_exists( $user_login ) ) {
422
                    $user_append_text = rand(10,1000);
423
                    $user_login = sanitize_user($new_user_login.$user_append_text, true );
424
                }
425
                
426
                if ( !( validate_username( $user_login ) && !username_exists( $user_login ) ) ) {
427
                    $user_login = $email;
428
                }
429
            }
430
            
431
            $userdata = array(
432
                'user_login' => $user_login,
433
                'user_pass' => wp_generate_password( 12, false ),
434
                'user_email' => sanitize_text_field( $email ),
435
                'first_name' => $first_name,
436
                'last_name' => $last_name,
437
                'user_nicename' => wpinv_utf8_substr( $user_nicename, 0, 50 ),
438
                'nickname' => $display_name,
439
                'display_name' => $display_name,
440
            );
441
442
            $userdata = apply_filters( 'wpinv_register_new_user_data', $userdata );
443
            
444
            $new_user_id = wp_insert_user( $userdata );
445
            
446
            if ( !is_wp_error( $new_user_id ) ) {
447
                $data['post_author'] = $new_user_id;
448
                $_POST['post_author'] = $new_user_id;
449
                $_POST['post_author_override'] = $new_user_id;
450
                
451
                $meta_fields = array(
452
                    'first_name',
453
                    'last_name',
454
                    'company',
455
                    'vat_number',
456
                    ///'email',
457
                    'address',
458
                    'city',
459
                    'state',
460
                    'country',
461
                    'zip',
462
                    'phone',
463
                );
464
                
465
                $meta = array();
466
                ///$meta['_wpinv_user_id'] = $new_user_id;
0 ignored issues
show
Unused Code Comprehensibility introduced by
60% 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...
467
                foreach ( $meta_fields as $field ) {
468
                    $meta['_wpinv_' . $field] = isset( $postarr['wpinv_' . $field] ) ? sanitize_text_field( $postarr['wpinv_' . $field] ) : '';
469
                }
470
                
471
                $meta = apply_filters( 'wpinv_register_new_user_meta', $meta, $new_user_id );
472
473
                // Update user meta.
474
                foreach ( $meta as $key => $value ) {
475
                    update_user_meta( $new_user_id, $key, $value );
476
                }
477
                
478
                if ( function_exists( 'wp_send_new_user_notifications' ) ) {
479
                    // Send email notifications related to the creation of new user.
480
                    wp_send_new_user_notifications( $new_user_id, 'user' );
481
                }
482
            } else {
483
                wpinv_error_log( $new_user_id->get_error_message(), 'Invoice add new user', __FILE__, __LINE__ );
484
            }
485
        }
486
    }
487
    
488
    return $data;
489
}
490
add_filter( 'wp_insert_post_data', 'wpinv_send_register_new_user', 10, 2 );
491
492
function wpinv_show_recurring_supported_gateways( $item_ID ) {
0 ignored issues
show
Unused Code introduced by
The parameter $item_ID is not used and could be removed.

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

Loading history...
493
    $all_gateways = wpinv_get_payment_gateways();
494
495
    if ( !empty( $all_gateways ) ) {
496
        $gateways = array();
497
498
        foreach ( $all_gateways as $key => $gateway ) {
499
            if ( wpinv_gateway_support_subscription( $key ) ) {
500
                $gateways[] = $gateway['admin_label'];
501
            }
502
        }
503
504
        if ( !empty( $gateways ) ) {
505
            ?>
506
            <span class="description"><?php echo wp_sprintf( __( 'Recurring payments only supported by: %s', 'invoicing' ), implode( ', ', $gateways ) ); ?></span>
507
            <?php
508
        }
509
    }
510
}
511
add_action( 'wpinv_item_price_field', 'wpinv_show_recurring_supported_gateways', -10, 1 );
512
513
function wpinv_post_updated_messages( $messages ) {
514
    global $post, $post_ID;
515
516
    $messages['wpi_discount'] = array(
517
        0   => '',
518
        1   => __( 'Discount updated.', 'invoicing' ),
519
        2   => __( 'Custom field updated.', 'invoicing' ),
520
        3   => __( 'Custom field deleted.', 'invoicing' ),
521
        4   => __( 'Discount updated.', 'invoicing' ),
522
        5   => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
523
        6   => __( 'Discount updated.', 'invoicing' ),
524
        7   => __( 'Discount saved.', 'invoicing' ),
525
        8   => __( 'Discount submitted.', 'invoicing' ),
526
        9   => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
527
        10  => __( 'Discount draft updated.', 'invoicing' ),
528
    );
529
530
    return $messages;
531
}
532
add_filter( 'post_updated_messages', 'wpinv_post_updated_messages', 10, 1 );