Passed
Pull Request — master (#126)
by Kiran
03:46
created

wpinv-admin-functions.php ➔ wpinv_posts_custom_column()   D

Complexity

Conditions 25
Paths 128

Size

Total Lines 86
Code Lines 65

Duplication

Lines 0
Ratio 0 %

Importance

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