Passed
Push — master ( 3b6696...7383db )
by Brian
04:13
created
includes/admin/class-getpaid-admin.php 1 patch
Indentation   +386 added lines, -386 removed lines patch added patch discarded remove patch
@@ -14,76 +14,76 @@  discard block
 block discarded – undo
14 14
 class GetPaid_Admin {
15 15
 
16 16
     /**
17
-	 * Local path to this plugins admin directory
18
-	 *
19
-	 * @var         string
20
-	 */
21
-	public $admin_path;
22
-
23
-	/**
24
-	 * Web path to this plugins admin directory
25
-	 *
26
-	 * @var         string
27
-	 */
28
-	public $admin_url;
17
+     * Local path to this plugins admin directory
18
+     *
19
+     * @var         string
20
+     */
21
+    public $admin_path;
22
+
23
+    /**
24
+     * Web path to this plugins admin directory
25
+     *
26
+     * @var         string
27
+     */
28
+    public $admin_url;
29 29
 	
30
-	/**
31
-	 * Reports components.
32
-	 *
33
-	 * @var GetPaid_Reports
34
-	 */
30
+    /**
31
+     * Reports components.
32
+     *
33
+     * @var GetPaid_Reports
34
+     */
35 35
     public $reports;
36 36
 
37 37
     /**
38
-	 * Class constructor.
39
-	 */
40
-	public function __construct(){
38
+     * Class constructor.
39
+     */
40
+    public function __construct(){
41 41
 
42 42
         $this->admin_path  = plugin_dir_path( __FILE__ );
43
-		$this->admin_url   = plugins_url( '/', __FILE__ );
44
-		$this->reports     = new GetPaid_Reports();
43
+        $this->admin_url   = plugins_url( '/', __FILE__ );
44
+        $this->reports     = new GetPaid_Reports();
45 45
 
46 46
         if ( is_admin() ) {
47
-			$this->init_admin_hooks();
47
+            $this->init_admin_hooks();
48 48
         }
49 49
 
50 50
     }
51 51
 
52 52
     /**
53
-	 * Init action and filter hooks
54
-	 *
55
-	 */
56
-	private function init_admin_hooks() {
53
+     * Init action and filter hooks
54
+     *
55
+     */
56
+    private function init_admin_hooks() {
57 57
         add_action( 'admin_enqueue_scripts', array( $this, 'enqeue_scripts' ) );
58 58
         add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
59 59
         add_action( 'admin_init', array( $this, 'init_ayecode_connect_helper' ) );
60 60
         add_action( 'admin_init', array( $this, 'activation_redirect') );
61 61
         add_action( 'admin_init', array( $this, 'maybe_do_admin_action') );
62
-		add_action( 'admin_notices', array( $this, 'show_notices' ) );
63
-		add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) );
64
-		add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) );
65
-		add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) );
62
+        add_action( 'admin_notices', array( $this, 'show_notices' ) );
63
+        add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) );
64
+        add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) );
65
+        add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) );
66 66
         add_action( 'getpaid_authenticated_admin_action_reset_tax_rates', array( $this, 'admin_reset_tax_rates' ) );
67
-		add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) );
68
-		add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) );
69
-		add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) );
70
-		add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
71
-		do_action( 'getpaid_init_admin_hooks', $this );
67
+        add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) );
68
+        add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) );
69
+        add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) );
70
+        add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
71
+        do_action( 'getpaid_init_admin_hooks', $this );
72 72
 
73 73
     }
74 74
 
75 75
     /**
76
-	 * Register admin scripts
77
-	 *
78
-	 */
79
-	public function enqeue_scripts() {
76
+     * Register admin scripts
77
+     *
78
+     */
79
+    public function enqeue_scripts() {
80 80
         global $current_screen, $pagenow;
81 81
 
82
-		$page    = isset( $_GET['page'] ) ? $_GET['page'] : '';
83
-		$editing = $pagenow == 'post.php' || $pagenow == 'post-new.php';
82
+        $page    = isset( $_GET['page'] ) ? $_GET['page'] : '';
83
+        $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php';
84 84
 
85 85
         if ( ! empty( $current_screen->post_type ) ) {
86
-			$page = $current_screen->post_type;
86
+            $page = $current_screen->post_type;
87 87
         }
88 88
 
89 89
         // General styles.
@@ -105,54 +105,54 @@  discard block
 block discarded – undo
105 105
         }
106 106
 
107 107
         // Payment form scripts.
108
-		if ( 'wpi_payment_form' == $page && $editing ) {
108
+        if ( 'wpi_payment_form' == $page && $editing ) {
109 109
             $this->load_payment_form_scripts();
110 110
         }
111 111
 
112
-		if ( $page == 'wpinv-subscriptions' ) {
113
-			wp_enqueue_script( 'postbox' );
114
-		}
112
+        if ( $page == 'wpinv-subscriptions' ) {
113
+            wp_enqueue_script( 'postbox' );
114
+        }
115 115
 
116 116
     }
117 117
 
118 118
     /**
119
-	 * Returns admin js translations.
120
-	 *
121
-	 */
122
-	protected function get_admin_i18() {
119
+     * Returns admin js translations.
120
+     *
121
+     */
122
+    protected function get_admin_i18() {
123 123
         global $post;
124 124
 
125
-		$date_range = array(
126
-			'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days'
127
-		);
125
+        $date_range = array(
126
+            'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days'
127
+        );
128 128
 
129
-		if ( $date_range['period'] == 'custom' ) {
129
+        if ( $date_range['period'] == 'custom' ) {
130 130
 			
131
-			if ( isset( $_GET['from'] ) ) {
132
-				$date_range[ 'after' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS );
133
-			}
131
+            if ( isset( $_GET['from'] ) ) {
132
+                $date_range[ 'after' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS );
133
+            }
134 134
 
135
-			if ( isset( $_GET['to'] ) ) {
136
-				$date_range[ 'before' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS );
137
-			}
135
+            if ( isset( $_GET['to'] ) ) {
136
+                $date_range[ 'before' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS );
137
+            }
138 138
 
139
-		}
139
+        }
140 140
 
141 141
         $i18n = array(
142 142
             'ajax_url'                  => admin_url( 'admin-ajax.php' ),
143 143
             'post_ID'                   => isset( $post->ID ) ? $post->ID : '',
144
-			'wpinv_nonce'               => wp_create_nonce( 'wpinv-nonce' ),
145
-			'rest_nonce'                => wp_create_nonce( 'wp_rest' ),
146
-			'rest_root'                 => esc_url_raw( rest_url() ),
147
-			'date_range'                => $date_range,
144
+            'wpinv_nonce'               => wp_create_nonce( 'wpinv-nonce' ),
145
+            'rest_nonce'                => wp_create_nonce( 'wp_rest' ),
146
+            'rest_root'                 => esc_url_raw( rest_url() ),
147
+            'date_range'                => $date_range,
148 148
             'add_invoice_note_nonce'    => wp_create_nonce( 'add-invoice-note' ),
149 149
             'delete_invoice_note_nonce' => wp_create_nonce( 'delete-invoice-note' ),
150 150
             'invoice_item_nonce'        => wp_create_nonce( 'invoice-item' ),
151 151
             'billing_details_nonce'     => wp_create_nonce( 'get-billing-details' ),
152 152
             'tax'                       => wpinv_tax_amount(),
153 153
             'discount'                  => 0,
154
-			'currency_symbol'           => wpinv_currency_symbol(),
155
-			'currency'                  => wpinv_get_currency(),
154
+            'currency_symbol'           => wpinv_currency_symbol(),
155
+            'currency'                  => wpinv_get_currency(),
156 156
             'currency_pos'              => wpinv_currency_position(),
157 157
             'thousand_sep'              => wpinv_thousands_separator(),
158 158
             'decimal_sep'               => wpinv_decimal_separator(),
@@ -172,116 +172,116 @@  discard block
 block discarded – undo
172 172
             'item_description'          => __( 'Item Description', 'invoicing' ),
173 173
             'invoice_description'       => __( 'Invoice Description', 'invoicing' ),
174 174
             'discount_description'      => __( 'Discount Description', 'invoicing' ),
175
-			'searching'                 => __( 'Searching', 'invoicing' ),
176
-			'loading'                   => __( 'Loading...', 'invoicing' ),
175
+            'searching'                 => __( 'Searching', 'invoicing' ),
176
+            'loading'                   => __( 'Loading...', 'invoicing' ),
177 177
         );
178 178
 
179
-		if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) {
179
+        if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) {
180 180
 
181
-			$invoice              = new WPInv_Invoice( $post );
182
-			$i18n['save_invoice'] = sprintf(
183
-				__( 'Save %s', 'invoicing' ),
184
-				ucfirst( $invoice->get_invoice_quote_type() )
185
-			);
181
+            $invoice              = new WPInv_Invoice( $post );
182
+            $i18n['save_invoice'] = sprintf(
183
+                __( 'Save %s', 'invoicing' ),
184
+                ucfirst( $invoice->get_invoice_quote_type() )
185
+            );
186 186
 
187
-			$i18n['invoice_description'] = sprintf(
188
-				__( '%s Description', 'invoicing' ),
189
-				ucfirst( $invoice->get_invoice_quote_type() )
190
-			);
187
+            $i18n['invoice_description'] = sprintf(
188
+                __( '%s Description', 'invoicing' ),
189
+                ucfirst( $invoice->get_invoice_quote_type() )
190
+            );
191 191
 
192
-		}
193
-		return $i18n;
194
-	}
192
+        }
193
+        return $i18n;
194
+    }
195 195
 
196
-	/**
197
-	 * Change the admin footer text on GetPaid admin pages.
198
-	 *
199
-	 * @since  2.0.0
200
-	 * @param  string $footer_text
201
-	 * @return string
202
-	 */
203
-	public function admin_footer_text( $footer_text ) {
204
-		global $current_screen;
196
+    /**
197
+     * Change the admin footer text on GetPaid admin pages.
198
+     *
199
+     * @since  2.0.0
200
+     * @param  string $footer_text
201
+     * @return string
202
+     */
203
+    public function admin_footer_text( $footer_text ) {
204
+        global $current_screen;
205 205
 
206
-		$page    = isset( $_GET['page'] ) ? $_GET['page'] : '';
206
+        $page    = isset( $_GET['page'] ) ? $_GET['page'] : '';
207 207
 
208 208
         if ( ! empty( $current_screen->post_type ) ) {
209
-			$page = $current_screen->post_type;
209
+            $page = $current_screen->post_type;
210 210
         }
211 211
 
212 212
         // General styles.
213 213
         if ( apply_filters( 'getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing() ) && false !== stripos( $page, 'wpi' ) ) {
214 214
 
215
-			// Change the footer text
216
-			if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) {
217
-
218
-				$rating_url  = esc_url(
219
-					wp_nonce_url(
220
-						admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ),
221
-						'getpaid-nonce',
222
-						'getpaid-nonce'
223
-						)
224
-				);
225
-
226
-				$footer_text = sprintf(
227
-					/* translators: %s: five stars */
228
-					__( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ),
229
-					"<a href='$rating_url'>&#9733;&#9733;&#9733;&#9733;&#9733;</a>"
230
-				);
231
-
232
-			} else {
233
-
234
-				$footer_text = sprintf(
235
-					/* translators: %s: GetPaid */
236
-					__( 'Thank you for using %s!', 'invoicing' ),
237
-					"<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>"
238
-				);
239
-
240
-			}
241
-
242
-		}
243
-
244
-		return $footer_text;
245
-	}
246
-
247
-	/**
248
-	 * Redirects to wp.org to rate the plugin.
249
-	 *
250
-	 * @since  2.0.0
251
-	 */
252
-	public function redirect_to_wordpress_rating_page() {
253
-		update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 );
254
-		wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' );
255
-		exit;
256
-	}
215
+            // Change the footer text
216
+            if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) {
217
+
218
+                $rating_url  = esc_url(
219
+                    wp_nonce_url(
220
+                        admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ),
221
+                        'getpaid-nonce',
222
+                        'getpaid-nonce'
223
+                        )
224
+                );
225
+
226
+                $footer_text = sprintf(
227
+                    /* translators: %s: five stars */
228
+                    __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ),
229
+                    "<a href='$rating_url'>&#9733;&#9733;&#9733;&#9733;&#9733;</a>"
230
+                );
231
+
232
+            } else {
233
+
234
+                $footer_text = sprintf(
235
+                    /* translators: %s: GetPaid */
236
+                    __( 'Thank you for using %s!', 'invoicing' ),
237
+                    "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>"
238
+                );
239
+
240
+            }
241
+
242
+        }
243
+
244
+        return $footer_text;
245
+    }
246
+
247
+    /**
248
+     * Redirects to wp.org to rate the plugin.
249
+     *
250
+     * @since  2.0.0
251
+     */
252
+    public function redirect_to_wordpress_rating_page() {
253
+        update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 );
254
+        wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' );
255
+        exit;
256
+    }
257 257
 
258 258
     /**
259
-	 * Loads payment form js.
260
-	 *
261
-	 */
262
-	protected function load_payment_form_scripts() {
259
+     * Loads payment form js.
260
+     *
261
+     */
262
+    protected function load_payment_form_scripts() {
263 263
         global $post;
264 264
 
265 265
         wp_enqueue_script( 'vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.js', array(), WPINV_VERSION );
266
-		wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION );
267
-		wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION );
266
+        wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION );
267
+        wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION );
268 268
 
269
-		$version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' );
270
-		wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable' ),  $version );
269
+        $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' );
270
+        wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable' ),  $version );
271 271
 
272
-		wp_localize_script(
272
+        wp_localize_script(
273 273
             'wpinv-admin-payment-form-script',
274 274
             'wpinvPaymentFormAdmin',
275 275
             array(
276
-				'elements'      => wpinv_get_data( 'payment-form-elements' ),
277
-				'form_elements' => getpaid_get_payment_form_elements( $post->ID ),
278
-				'currency'      => wpinv_currency_symbol(),
279
-				'position'      => wpinv_currency_position(),
280
-				'decimals'      => (int) wpinv_decimals(),
281
-				'thousands_sep' => wpinv_thousands_separator(),
282
-				'decimals_sep'  => wpinv_decimal_separator(),
283
-				'form_items'    => gepaid_get_form_items( $post->ID ),
284
-				'is_default'    => $post->ID == wpinv_get_default_payment_form(),
276
+                'elements'      => wpinv_get_data( 'payment-form-elements' ),
277
+                'form_elements' => getpaid_get_payment_form_elements( $post->ID ),
278
+                'currency'      => wpinv_currency_symbol(),
279
+                'position'      => wpinv_currency_position(),
280
+                'decimals'      => (int) wpinv_decimals(),
281
+                'thousands_sep' => wpinv_thousands_separator(),
282
+                'decimals_sep'  => wpinv_decimal_separator(),
283
+                'form_items'    => gepaid_get_form_items( $post->ID ),
284
+                'is_default'    => $post->ID == wpinv_get_default_payment_form(),
285 285
             )
286 286
         );
287 287
 
@@ -290,20 +290,20 @@  discard block
 block discarded – undo
290 290
     }
291 291
 
292 292
     /**
293
-	 * Add our classes to admin pages.
293
+     * Add our classes to admin pages.
294 294
      *
295 295
      * @param string $classes
296 296
      * @return string
297
-	 *
298
-	 */
297
+     *
298
+     */
299 299
     public function admin_body_class( $classes ) {
300
-		global $pagenow, $post, $current_screen;
300
+        global $pagenow, $post, $current_screen;
301 301
 
302 302
 
303 303
         $page = isset( $_GET['page'] ) ? $_GET['page'] : '';
304 304
 
305 305
         if ( ! empty( $current_screen->post_type ) ) {
306
-			$page = $current_screen->post_type;
306
+            $page = $current_screen->post_type;
307 307
         }
308 308
 
309 309
         if ( false !== stripos( $page, 'wpi' ) ) {
@@ -312,59 +312,59 @@  discard block
 block discarded – undo
312 312
 
313 313
         if ( in_array( $page, wpinv_parse_list( 'wpi_invoice wpi_payment_form wpi_quote' ) ) ) {
314 314
             $classes .= ' wpinv-cpt wpinv';
315
-		}
315
+        }
316 316
 		
317
-		if ( getpaid_is_invoice_post_type( $page ) ) {
317
+        if ( getpaid_is_invoice_post_type( $page ) ) {
318 318
             $classes .= ' getpaid-is-invoice-cpt';
319 319
         }
320 320
 
321
-		return $classes;
321
+        return $classes;
322 322
     }
323 323
 
324 324
     /**
325
-	 * Maybe show the AyeCode Connect Notice.
326
-	 */
327
-	public function init_ayecode_connect_helper(){
325
+     * Maybe show the AyeCode Connect Notice.
326
+     */
327
+    public function init_ayecode_connect_helper(){
328 328
 
329 329
         new AyeCode_Connect_Helper(
330 330
             array(
331
-				'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"),
332
-				'connect_external'  => __( "Please confirm you wish to connect your site?","invoicing" ),
333
-				'connect'           => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ),
334
-				'connect_button'    => __("Connect Site","invoicing"),
335
-				'connecting_button'    => __("Connecting...","invoicing"),
336
-				'error_localhost'   => __( "This service will only work with a live domain, not a localhost.","invoicing" ),
337
-				'error'             => __( "Something went wrong, please refresh and try again.","invoicing" ),
331
+                'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"),
332
+                'connect_external'  => __( "Please confirm you wish to connect your site?","invoicing" ),
333
+                'connect'           => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ),
334
+                'connect_button'    => __("Connect Site","invoicing"),
335
+                'connecting_button'    => __("Connecting...","invoicing"),
336
+                'error_localhost'   => __( "This service will only work with a live domain, not a localhost.","invoicing" ),
337
+                'error'             => __( "Something went wrong, please refresh and try again.","invoicing" ),
338 338
             ),
339 339
             array( 'wpi-addons' )
340 340
         );
341 341
 
342 342
     }
343 343
 
344
-	/**
345
-	 * Redirect users to settings on activation.
346
-	 *
347
-	 * @return void
348
-	 */
349
-	public function activation_redirect() {
344
+    /**
345
+     * Redirect users to settings on activation.
346
+     *
347
+     * @return void
348
+     */
349
+    public function activation_redirect() {
350 350
 
351
-		$redirected = get_option( 'wpinv_redirected_to_settings' );
351
+        $redirected = get_option( 'wpinv_redirected_to_settings' );
352 352
 
353
-		if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) {
354
-			return;
355
-		}
353
+        if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) {
354
+            return;
355
+        }
356 356
 
357
-		// Bail if activating from network, or bulk
358
-		if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
359
-			return;
360
-		}
357
+        // Bail if activating from network, or bulk
358
+        if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
359
+            return;
360
+        }
361 361
 
362
-	    update_option( 'wpinv_redirected_to_settings', 1 );
362
+        update_option( 'wpinv_redirected_to_settings', 1 );
363 363
 
364 364
         wp_safe_redirect( admin_url( 'admin.php?page=wpinv-settings&tab=general' ) );
365 365
         exit;
366 366
 
367
-	}
367
+    }
368 368
 
369 369
     /**
370 370
      * Fires an admin action after verifying that a user can fire them.
@@ -378,261 +378,261 @@  discard block
 block discarded – undo
378 378
 
379 379
     }
380 380
 
381
-	/**
381
+    /**
382 382
      * Sends a payment reminder to a customer.
383
-	 * 
384
-	 * @param array $args
383
+     * 
384
+     * @param array $args
385 385
      */
386 386
     public function send_customer_invoice( $args ) {
387
-		$sent = getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ) );
387
+        $sent = getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ) );
388 388
 
389
-		if ( $sent ) {
390
-			$this->show_success( __( 'Invoice was successfully sent to the customer', 'invoicing' ) );
391
-		} else {
392
-			$this->show_error( __( 'Could not sent the invoice to the customer', 'invoicing' ) );
393
-		}
389
+        if ( $sent ) {
390
+            $this->show_success( __( 'Invoice was successfully sent to the customer', 'invoicing' ) );
391
+        } else {
392
+            $this->show_error( __( 'Could not sent the invoice to the customer', 'invoicing' ) );
393
+        }
394 394
 
395
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
396
-		exit;
397
-	}
395
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
396
+        exit;
397
+    }
398 398
 
399
-	/**
399
+    /**
400 400
      * Sends a payment reminder to a customer.
401
-	 * 
402
-	 * @param array $args
401
+     * 
402
+     * @param array $args
403 403
      */
404 404
     public function send_customer_payment_reminder( $args ) {
405
-		$sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) );
405
+        $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) );
406 406
 
407
-		if ( $sent ) {
408
-			$this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) );
409
-		} else {
410
-			$this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) );
411
-		}
407
+        if ( $sent ) {
408
+            $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) );
409
+        } else {
410
+            $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) );
411
+        }
412 412
 
413
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
414
-		exit;
415
-	}
413
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
414
+        exit;
415
+    }
416 416
 
417
-	/**
417
+    /**
418 418
      * Resets tax rates.
419
-	 * 
419
+     * 
420 420
      */
421 421
     public function admin_reset_tax_rates() {
422 422
 
423
-		update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) );
424
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
425
-		exit;
423
+        update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) );
424
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
425
+        exit;
426 426
 
427
-	}
427
+    }
428 428
 
429
-	/**
429
+    /**
430 430
      * Resets admin pages.
431
-	 * 
431
+     * 
432 432
      */
433 433
     public function admin_create_missing_pages() {
434
-		$installer = new GetPaid_Installer();
435
-		$installer->create_pages();
436
-		$this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) );
437
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
438
-		exit;
439
-	}
440
-
441
-	/**
434
+        $installer = new GetPaid_Installer();
435
+        $installer->create_pages();
436
+        $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) );
437
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
438
+        exit;
439
+    }
440
+
441
+    /**
442 442
      * Creates an missing admin tables.
443
-	 * 
443
+     * 
444 444
      */
445 445
     public function admin_create_missing_tables() {
446
-		global $wpdb;
447
-		$installer = new GetPaid_Installer();
446
+        global $wpdb;
447
+        $installer = new GetPaid_Installer();
448 448
 
449
-		if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) {
450
-			$installer->create_subscriptions_table();
449
+        if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) {
450
+            $installer->create_subscriptions_table();
451 451
 
452
-			if ( $wpdb->last_error !== '' ) {
453
-				$this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
454
-			}
455
-		}
452
+            if ( $wpdb->last_error !== '' ) {
453
+                $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
454
+            }
455
+        }
456 456
 
457
-		if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) {
458
-			$installer->create_invoices_table();
457
+        if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) {
458
+            $installer->create_invoices_table();
459 459
 
460
-			if ( $wpdb->last_error !== '' ) {
461
-				$this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
462
-			}
463
-		}
460
+            if ( $wpdb->last_error !== '' ) {
461
+                $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
462
+            }
463
+        }
464 464
 
465
-		if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) {
466
-			$installer->create_invoice_items_table();
465
+        if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) {
466
+            $installer->create_invoice_items_table();
467 467
 
468
-			if ( $wpdb->last_error !== '' ) {
469
-				$this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
470
-			}
471
-		}
468
+            if ( $wpdb->last_error !== '' ) {
469
+                $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error );
470
+            }
471
+        }
472 472
 
473
-		if ( ! $this->has_notices() ) {
474
-			$this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) );
475
-		}
473
+        if ( ! $this->has_notices() ) {
474
+            $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) );
475
+        }
476 476
 
477
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
478
-		exit;
479
-	}
477
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
478
+        exit;
479
+    }
480 480
 
481
-	/**
481
+    /**
482 482
      * Migrates old invoices to the new database tables.
483
-	 * 
483
+     * 
484 484
      */
485 485
     public function admin_migrate_old_invoices() {
486 486
 
487
-		// Migrate the invoices.
488
-		$installer = new GetPaid_Installer();
489
-		$installer->migrate_old_invoices();
487
+        // Migrate the invoices.
488
+        $installer = new GetPaid_Installer();
489
+        $installer->migrate_old_invoices();
490 490
 
491
-		// Show an admin message.
492
-		$this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) );
491
+        // Show an admin message.
492
+        $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) );
493 493
 
494
-		// Redirect the admin.
495
-		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
496
-		exit;
494
+        // Redirect the admin.
495
+        wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) );
496
+        exit;
497 497
 
498
-	}
498
+    }
499 499
 
500 500
     /**
501
-	 * Returns an array of admin notices.
502
-	 *
503
-	 * @since       1.0.19
501
+     * Returns an array of admin notices.
502
+     *
503
+     * @since       1.0.19
504 504
      * @return array
505
-	 */
506
-	public function get_notices() {
507
-		$notices = get_option( 'wpinv_admin_notices' );
505
+     */
506
+    public function get_notices() {
507
+        $notices = get_option( 'wpinv_admin_notices' );
508 508
         return is_array( $notices ) ? $notices : array();
509
-	}
509
+    }
510 510
 
511
-	/**
512
-	 * Checks if we have any admin notices.
513
-	 *
514
-	 * @since       2.0.4
511
+    /**
512
+     * Checks if we have any admin notices.
513
+     *
514
+     * @since       2.0.4
515 515
      * @return array
516
-	 */
517
-	public function has_notices() {
518
-		return count( $this->get_notices() ) > 0;
519
-	}
520
-
521
-	/**
522
-	 * Clears all admin notices
523
-	 *
524
-	 * @access      public
525
-	 * @since       1.0.19
526
-	 */
527
-	public function clear_notices() {
528
-		delete_option( 'wpinv_admin_notices' );
529
-	}
530
-
531
-	/**
532
-	 * Saves a new admin notice
533
-	 *
534
-	 * @access      public
535
-	 * @since       1.0.19
536
-	 */
537
-	public function save_notice( $type, $message ) {
538
-		$notices = $this->get_notices();
539
-
540
-		if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ]) ) {
541
-			$notices[ $type ] = array();
542
-		}
543
-
544
-		$notices[ $type ][] = $message;
545
-
546
-		update_option( 'wpinv_admin_notices', $notices );
547
-	}
548
-
549
-	/**
550
-	 * Displays a success notice
551
-	 *
552
-	 * @param       string $msg The message to qeue.
553
-	 * @access      public
554
-	 * @since       1.0.19
555
-	 */
556
-	public function show_success( $msg ) {
557
-		$this->save_notice( 'success', $msg );
558
-	}
559
-
560
-	/**
561
-	 * Displays a error notice
562
-	 *
563
-	 * @access      public
564
-	 * @param       string $msg The message to qeue.
565
-	 * @since       1.0.19
566
-	 */
567
-	public function show_error( $msg ) {
568
-		$this->save_notice( 'error', $msg );
569
-	}
570
-
571
-	/**
572
-	 * Displays a warning notice
573
-	 *
574
-	 * @access      public
575
-	 * @param       string $msg The message to qeue.
576
-	 * @since       1.0.19
577
-	 */
578
-	public function show_warning( $msg ) {
579
-		$this->save_notice( 'warning', $msg );
580
-	}
581
-
582
-	/**
583
-	 * Displays a info notice
584
-	 *
585
-	 * @access      public
586
-	 * @param       string $msg The message to qeue.
587
-	 * @since       1.0.19
588
-	 */
589
-	public function show_info( $msg ) {
590
-		$this->save_notice( 'info', $msg );
591
-	}
592
-
593
-	/**
594
-	 * Show notices
595
-	 *
596
-	 * @access      public
597
-	 * @since       1.0.19
598
-	 */
599
-	public function show_notices() {
516
+     */
517
+    public function has_notices() {
518
+        return count( $this->get_notices() ) > 0;
519
+    }
520
+
521
+    /**
522
+     * Clears all admin notices
523
+     *
524
+     * @access      public
525
+     * @since       1.0.19
526
+     */
527
+    public function clear_notices() {
528
+        delete_option( 'wpinv_admin_notices' );
529
+    }
530
+
531
+    /**
532
+     * Saves a new admin notice
533
+     *
534
+     * @access      public
535
+     * @since       1.0.19
536
+     */
537
+    public function save_notice( $type, $message ) {
538
+        $notices = $this->get_notices();
539
+
540
+        if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ]) ) {
541
+            $notices[ $type ] = array();
542
+        }
543
+
544
+        $notices[ $type ][] = $message;
545
+
546
+        update_option( 'wpinv_admin_notices', $notices );
547
+    }
548
+
549
+    /**
550
+     * Displays a success notice
551
+     *
552
+     * @param       string $msg The message to qeue.
553
+     * @access      public
554
+     * @since       1.0.19
555
+     */
556
+    public function show_success( $msg ) {
557
+        $this->save_notice( 'success', $msg );
558
+    }
559
+
560
+    /**
561
+     * Displays a error notice
562
+     *
563
+     * @access      public
564
+     * @param       string $msg The message to qeue.
565
+     * @since       1.0.19
566
+     */
567
+    public function show_error( $msg ) {
568
+        $this->save_notice( 'error', $msg );
569
+    }
570
+
571
+    /**
572
+     * Displays a warning notice
573
+     *
574
+     * @access      public
575
+     * @param       string $msg The message to qeue.
576
+     * @since       1.0.19
577
+     */
578
+    public function show_warning( $msg ) {
579
+        $this->save_notice( 'warning', $msg );
580
+    }
581
+
582
+    /**
583
+     * Displays a info notice
584
+     *
585
+     * @access      public
586
+     * @param       string $msg The message to qeue.
587
+     * @since       1.0.19
588
+     */
589
+    public function show_info( $msg ) {
590
+        $this->save_notice( 'info', $msg );
591
+    }
592
+
593
+    /**
594
+     * Show notices
595
+     *
596
+     * @access      public
597
+     * @since       1.0.19
598
+     */
599
+    public function show_notices() {
600 600
 
601 601
         $notices = $this->get_notices();
602 602
         $this->clear_notices();
603 603
 
604
-		foreach ( $notices as $type => $messages ) {
604
+        foreach ( $notices as $type => $messages ) {
605 605
 
606
-			if ( ! is_array( $messages ) ) {
607
-				continue;
608
-			}
606
+            if ( ! is_array( $messages ) ) {
607
+                continue;
608
+            }
609 609
 
610 610
             $type  = sanitize_key( $type );
611
-			foreach ( $messages as $message ) {
611
+            foreach ( $messages as $message ) {
612 612
                 $message = wp_kses_post( $message );
613
-				echo "<div class='notice notice-$type is-dismissible'><p>$message</p></div>";
613
+                echo "<div class='notice notice-$type is-dismissible'><p>$message</p></div>";
614
+            }
615
+
616
+        }
617
+
618
+        foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) {
619
+
620
+            if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) {
621
+                $url     = esc_url(
622
+                    wp_nonce_url(
623
+                        add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
624
+                        'getpaid-nonce',
625
+                        'getpaid-nonce'
626
+                    )
627
+                );
628
+                $message  = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' );
629
+                $message2 = __( 'Generate Pages', 'invoicing' );
630
+                echo "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>";
631
+                break;
614 632
             }
615 633
 
616 634
         }
617 635
 
618
-		foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) {
619
-
620
-			if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) {
621
-				$url     = esc_url(
622
-					wp_nonce_url(
623
-						add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
624
-						'getpaid-nonce',
625
-						'getpaid-nonce'
626
-					)
627
-				);
628
-				$message  = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' );
629
-				$message2 = __( 'Generate Pages', 'invoicing' );
630
-				echo "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>";
631
-				break;
632
-			}
633
-
634
-		}
635
-
636
-	}
636
+    }
637 637
 
638 638
 }
Please login to merge, or discard this patch.
includes/class-getpaid-invoice-notification-emails.php 1 patch
Indentation   +390 added lines, -390 removed lines patch added patch discarded remove patch
@@ -12,444 +12,444 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Invoice_Notification_Emails {
14 14
 
15
-	/**
16
-	 * The array of invoice email actions.
17
-	 *
18
-	 * @param array
19
-	 */
20
-	public $invoice_actions;
21
-
22
-	/**
23
-	 * Class constructor
24
-	 *
25
-	 */
26
-	public function __construct() {
27
-
28
-		$this->invoice_actions = apply_filters(
29
-			'getpaid_notification_email_invoice_triggers',
30
-			array(
31
-				'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
32
-				'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33
-				'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34
-				'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
35
-				'getpaid_invoice_status_wpi-processing' => 'processing_invoice',
36
-				'getpaid_invoice_status_publish'        => 'completed_invoice',
37
-				'getpaid_invoice_status_wpi-renewal'    => 'completed_invoice',
38
-				'getpaid_invoice_status_wpi-refunded'   => 'refunded_invoice',
39
-				'getpaid_new_customer_note'             => 'user_note',
40
-				'getpaid_daily_maintenance'             => 'overdue',
41
-			)
42
-		);
43
-
44
-		$this->init_hooks();
45
-
46
-	}
47
-
48
-	/**
49
-	 * Registers email hooks.
50
-	 */
51
-	public function init_hooks() {
52
-
53
-		add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
-		add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
55
-
56
-		foreach ( $this->invoice_actions as $hook => $email_type ) {
57
-			$this->init_email_type_hook( $hook, $email_type );
58
-		}
59
-	}
60
-
61
-	/**
62
-	 * Registers an email hook for an invoice action.
63
-	 * 
64
-	 * @param string $hook
65
-	 * @param string|array $email_type
66
-	 */
67
-	public function init_email_type_hook( $hook, $email_type ) {
68
-
69
-		$email_type = wpinv_parse_list( $email_type );
70
-
71
-		foreach ( $email_type as $type ) {
72
-
73
-			$email = new GetPaid_Notification_Email( $type );
74
-
75
-			// Abort if it is not active.
76
-			if ( ! $email->is_active() ) {
77
-				continue;
78
-			}
79
-
80
-			if ( method_exists( $this, $type ) ) {
81
-				add_action( $hook, array( $this, $type ), 100, 2 );
82
-				continue;
83
-			}
84
-
85
-			do_action( 'getpaid_invoice_init_email_type_hook', $type, $hook );
86
-		}
87
-
88
-	}
89
-
90
-	/**
91
-	 * Filters invoice merge tags.
92
-	 *
93
-	 * @param array $merge_tags
94
-	 * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95
-	 */
96
-	public function invoice_merge_tags( $merge_tags, $object ) {
97
-
98
-		if ( is_a( $object, 'WPInv_Invoice' ) ) {
99
-			return array_merge(
100
-				$merge_tags,
101
-				$this->get_invoice_merge_tags( $object )
102
-			);
103
-		}
104
-
105
-		if ( is_a( $object, 'WPInv_Subscription' ) ) {
106
-			return array_merge(
107
-				$merge_tags,
108
-				$this->get_invoice_merge_tags( $object->get_parent_payment() )
109
-			);
110
-		}
111
-
112
-		return $merge_tags;
113
-
114
-	}
115
-
116
-	/**
117
-	 * Generates invoice merge tags.
118
-	 *
119
-	 * @param WPInv_Invoice $invoice
120
-	 * @return array
121
-	 */
122
-	public function get_invoice_merge_tags( $invoice ) {
123
-
124
-		// Abort if it does not exist.
125
-		if ( ! $invoice->get_id() ) {
126
-			return array();
127
-		}
128
-
129
-		$merge_tags = array(
130
-			'{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
-			'{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
-			'{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
-			'{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
-			'{email}'               => sanitize_email( $invoice->get_email() ),
135
-			'{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
-			'{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
-			'{invoice_total}'       => sanitize_text_field( wpinv_price( $invoice->get_total(), $invoice->get_currency() ) ),
138
-			'{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
-			'{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
-			'{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
-			'{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
-			'{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
-			'{invoice_quote}'       => sanitize_text_field( strtolower( $invoice->get_label() ) ),
144
-			'{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_label() ) ),
145
-			'{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
-			'{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
-			'{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
148
-		);
149
-
150
-		return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
151
-	}
152
-
153
-	/**
154
-	 * Helper function to send an email.
155
-	 *
156
-	 * @param WPInv_Invoice $invoice
157
-	 * @param GetPaid_Notification_Email $email
158
-	 * @param string $type
159
-	 * @param string|array $recipients
160
-	 * @param array $extra_args Extra template args.
161
-	 */
162
-	public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
163
-
164
-		do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
165
-
166
-		$mailer     = new GetPaid_Notification_Email_Sender();
167
-		$merge_tags = $email->get_merge_tags();
168
-
169
-		$result = $mailer->send(
170
-			apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
171
-			$email->add_merge_tags( $email->get_subject(), $merge_tags ),
172
-			$email->get_content( $merge_tags, $extra_args ),
173
-			$email->get_attachments()
174
-		);
175
-
176
-		// Maybe send a copy to the admin.
177
-		if ( $email->include_admin_bcc() ) {
178
-			$mailer->send(
179
-				wpinv_get_admin_email(),
180
-				$email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
181
-				$email->get_content( $merge_tags ),
182
-				$email->get_attachments()
183
-			);
184
-		}
185
-
186
-		if ( ! $result ) {
187
-			$invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
188
-		}
189
-
190
-		do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
191
-
192
-		return $result;
193
-	}
194
-
195
-	/**
196
-	 * Also send emails to any cc users.
197
-	 *
198
-	 * @param array $recipients
199
-	 * @param GetPaid_Notification_Email $email
200
-	 */
201
-	public function filter_email_recipients( $recipients, $email ) {
202
-
203
-		if ( ! $email->is_admin_email() ) {
204
-			$cc = $email->object->get_email_cc();
205
-
206
-			if ( ! empty( $cc ) ) {
207
-				$cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
208
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
209
-			}
210
-
211
-		}
212
-
213
-		return $recipients;
214
-
215
-	}
216
-
217
-	/**
218
-	 * Sends a new invoice notification.
219
-	 *
220
-	 * @param WPInv_Invoice $invoice
221
-	 */
222
-	public function new_invoice( $invoice ) {
223
-
224
-		// Only send this email for invoices created via the admin page.
225
-		if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
226
-			return;
227
-		}
228
-
229
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
230
-		$recipient = wpinv_get_admin_email();
231
-
232
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
233
-
234
-	}
235
-
236
-	/**
237
-	 * Sends a cancelled invoice notification.
238
-	 *
239
-	 * @param WPInv_Invoice $invoice
240
-	 */
241
-	public function cancelled_invoice( $invoice ) {
15
+    /**
16
+     * The array of invoice email actions.
17
+     *
18
+     * @param array
19
+     */
20
+    public $invoice_actions;
21
+
22
+    /**
23
+     * Class constructor
24
+     *
25
+     */
26
+    public function __construct() {
27
+
28
+        $this->invoice_actions = apply_filters(
29
+            'getpaid_notification_email_invoice_triggers',
30
+            array(
31
+                'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
32
+                'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33
+                'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34
+                'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
35
+                'getpaid_invoice_status_wpi-processing' => 'processing_invoice',
36
+                'getpaid_invoice_status_publish'        => 'completed_invoice',
37
+                'getpaid_invoice_status_wpi-renewal'    => 'completed_invoice',
38
+                'getpaid_invoice_status_wpi-refunded'   => 'refunded_invoice',
39
+                'getpaid_new_customer_note'             => 'user_note',
40
+                'getpaid_daily_maintenance'             => 'overdue',
41
+            )
42
+        );
43
+
44
+        $this->init_hooks();
45
+
46
+    }
47
+
48
+    /**
49
+     * Registers email hooks.
50
+     */
51
+    public function init_hooks() {
52
+
53
+        add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
+        add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
55
+
56
+        foreach ( $this->invoice_actions as $hook => $email_type ) {
57
+            $this->init_email_type_hook( $hook, $email_type );
58
+        }
59
+    }
60
+
61
+    /**
62
+     * Registers an email hook for an invoice action.
63
+     * 
64
+     * @param string $hook
65
+     * @param string|array $email_type
66
+     */
67
+    public function init_email_type_hook( $hook, $email_type ) {
68
+
69
+        $email_type = wpinv_parse_list( $email_type );
70
+
71
+        foreach ( $email_type as $type ) {
72
+
73
+            $email = new GetPaid_Notification_Email( $type );
74
+
75
+            // Abort if it is not active.
76
+            if ( ! $email->is_active() ) {
77
+                continue;
78
+            }
79
+
80
+            if ( method_exists( $this, $type ) ) {
81
+                add_action( $hook, array( $this, $type ), 100, 2 );
82
+                continue;
83
+            }
84
+
85
+            do_action( 'getpaid_invoice_init_email_type_hook', $type, $hook );
86
+        }
87
+
88
+    }
89
+
90
+    /**
91
+     * Filters invoice merge tags.
92
+     *
93
+     * @param array $merge_tags
94
+     * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95
+     */
96
+    public function invoice_merge_tags( $merge_tags, $object ) {
97
+
98
+        if ( is_a( $object, 'WPInv_Invoice' ) ) {
99
+            return array_merge(
100
+                $merge_tags,
101
+                $this->get_invoice_merge_tags( $object )
102
+            );
103
+        }
104
+
105
+        if ( is_a( $object, 'WPInv_Subscription' ) ) {
106
+            return array_merge(
107
+                $merge_tags,
108
+                $this->get_invoice_merge_tags( $object->get_parent_payment() )
109
+            );
110
+        }
111
+
112
+        return $merge_tags;
113
+
114
+    }
115
+
116
+    /**
117
+     * Generates invoice merge tags.
118
+     *
119
+     * @param WPInv_Invoice $invoice
120
+     * @return array
121
+     */
122
+    public function get_invoice_merge_tags( $invoice ) {
123
+
124
+        // Abort if it does not exist.
125
+        if ( ! $invoice->get_id() ) {
126
+            return array();
127
+        }
128
+
129
+        $merge_tags = array(
130
+            '{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
+            '{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
+            '{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
+            '{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
+            '{email}'               => sanitize_email( $invoice->get_email() ),
135
+            '{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
+            '{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
+            '{invoice_total}'       => sanitize_text_field( wpinv_price( $invoice->get_total(), $invoice->get_currency() ) ),
138
+            '{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
+            '{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
+            '{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
+            '{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
+            '{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
+            '{invoice_quote}'       => sanitize_text_field( strtolower( $invoice->get_label() ) ),
144
+            '{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_label() ) ),
145
+            '{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
+            '{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
+            '{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
148
+        );
149
+
150
+        return apply_filters( 'getpaid_invoice_email_merge_tags', $merge_tags, $invoice );
151
+    }
152
+
153
+    /**
154
+     * Helper function to send an email.
155
+     *
156
+     * @param WPInv_Invoice $invoice
157
+     * @param GetPaid_Notification_Email $email
158
+     * @param string $type
159
+     * @param string|array $recipients
160
+     * @param array $extra_args Extra template args.
161
+     */
162
+    public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
163
+
164
+        do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
165
+
166
+        $mailer     = new GetPaid_Notification_Email_Sender();
167
+        $merge_tags = $email->get_merge_tags();
168
+
169
+        $result = $mailer->send(
170
+            apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
171
+            $email->add_merge_tags( $email->get_subject(), $merge_tags ),
172
+            $email->get_content( $merge_tags, $extra_args ),
173
+            $email->get_attachments()
174
+        );
175
+
176
+        // Maybe send a copy to the admin.
177
+        if ( $email->include_admin_bcc() ) {
178
+            $mailer->send(
179
+                wpinv_get_admin_email(),
180
+                $email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
181
+                $email->get_content( $merge_tags ),
182
+                $email->get_attachments()
183
+            );
184
+        }
185
+
186
+        if ( ! $result ) {
187
+            $invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
188
+        }
189
+
190
+        do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
191
+
192
+        return $result;
193
+    }
194
+
195
+    /**
196
+     * Also send emails to any cc users.
197
+     *
198
+     * @param array $recipients
199
+     * @param GetPaid_Notification_Email $email
200
+     */
201
+    public function filter_email_recipients( $recipients, $email ) {
202
+
203
+        if ( ! $email->is_admin_email() ) {
204
+            $cc = $email->object->get_email_cc();
205
+
206
+            if ( ! empty( $cc ) ) {
207
+                $cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
208
+                $recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
209
+            }
210
+
211
+        }
212
+
213
+        return $recipients;
214
+
215
+    }
216
+
217
+    /**
218
+     * Sends a new invoice notification.
219
+     *
220
+     * @param WPInv_Invoice $invoice
221
+     */
222
+    public function new_invoice( $invoice ) {
223
+
224
+        // Only send this email for invoices created via the admin page.
225
+        if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
226
+            return;
227
+        }
228
+
229
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
230
+        $recipient = wpinv_get_admin_email();
231
+
232
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
233
+
234
+    }
235
+
236
+    /**
237
+     * Sends a cancelled invoice notification.
238
+     *
239
+     * @param WPInv_Invoice $invoice
240
+     */
241
+    public function cancelled_invoice( $invoice ) {
242 242
 
243
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
244
-		$recipient = wpinv_get_admin_email();
243
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
244
+        $recipient = wpinv_get_admin_email();
245 245
 
246
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
246
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
247 247
 
248
-	}
248
+    }
249 249
 
250
-	/**
251
-	 * Sends a failed invoice notification.
252
-	 *
253
-	 * @param WPInv_Invoice $invoice
254
-	 */
255
-	public function failed_invoice( $invoice ) {
250
+    /**
251
+     * Sends a failed invoice notification.
252
+     *
253
+     * @param WPInv_Invoice $invoice
254
+     */
255
+    public function failed_invoice( $invoice ) {
256 256
 
257
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
258
-		$recipient = wpinv_get_admin_email();
257
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
258
+        $recipient = wpinv_get_admin_email();
259 259
 
260
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
260
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
261 261
 
262
-	}
262
+    }
263 263
 
264
-	/**
265
-	 * Sends a notification whenever an invoice is put on hold.
266
-	 *
267
-	 * @param WPInv_Invoice $invoice
268
-	 */
269
-	public function onhold_invoice( $invoice ) {
264
+    /**
265
+     * Sends a notification whenever an invoice is put on hold.
266
+     *
267
+     * @param WPInv_Invoice $invoice
268
+     */
269
+    public function onhold_invoice( $invoice ) {
270 270
 
271
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
272
-		$recipient = $invoice->get_email();
271
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
272
+        $recipient = $invoice->get_email();
273 273
 
274
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
274
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
275 275
 
276
-	}
276
+    }
277 277
 
278
-	/**
279
-	 * Sends a notification whenever an invoice is marked as processing payment.
280
-	 *
281
-	 * @param WPInv_Invoice $invoice
282
-	 */
283
-	public function processing_invoice( $invoice ) {
278
+    /**
279
+     * Sends a notification whenever an invoice is marked as processing payment.
280
+     *
281
+     * @param WPInv_Invoice $invoice
282
+     */
283
+    public function processing_invoice( $invoice ) {
284 284
 
285
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
286
-		$recipient = $invoice->get_email();
285
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
286
+        $recipient = $invoice->get_email();
287 287
 
288
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
288
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
289 289
 
290
-	}
290
+    }
291 291
 
292
-	/**
293
-	 * Sends a notification whenever an invoice is paid.
294
-	 *
295
-	 * @param WPInv_Invoice $invoice
296
-	 */
297
-	public function completed_invoice( $invoice ) {
292
+    /**
293
+     * Sends a notification whenever an invoice is paid.
294
+     *
295
+     * @param WPInv_Invoice $invoice
296
+     */
297
+    public function completed_invoice( $invoice ) {
298 298
 
299
-		// (Maybe) abort if it is a renewal invoice.
300
-		if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
301
-			return;
302
-		}
299
+        // (Maybe) abort if it is a renewal invoice.
300
+        if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
301
+            return;
302
+        }
303 303
 
304
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
305
-		$recipient = $invoice->get_email();
304
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
305
+        $recipient = $invoice->get_email();
306 306
 
307
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
307
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
308 308
 
309
-	}
309
+    }
310 310
 
311
-	/**
312
-	 * Sends a notification whenever an invoice is refunded.
313
-	 *
314
-	 * @param WPInv_Invoice $invoice
315
-	 */
316
-	public function refunded_invoice( $invoice ) {
311
+    /**
312
+     * Sends a notification whenever an invoice is refunded.
313
+     *
314
+     * @param WPInv_Invoice $invoice
315
+     */
316
+    public function refunded_invoice( $invoice ) {
317 317
 
318
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
319
-		$recipient = $invoice->get_email();
318
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
319
+        $recipient = $invoice->get_email();
320 320
 
321
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
321
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
322 322
 
323
-	}
323
+    }
324 324
 
325
-	/**
326
-	 * Notifies a user about new invoices
327
-	 *
328
-	 * @param WPInv_Invoice $invoice
329
-	 */
330
-	public function user_invoice( $invoice ) {
325
+    /**
326
+     * Notifies a user about new invoices
327
+     *
328
+     * @param WPInv_Invoice $invoice
329
+     */
330
+    public function user_invoice( $invoice ) {
331 331
 
332
-		// Only send this email for invoices created via the admin page.
333
-		if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
334
-			return;
335
-		}
332
+        // Only send this email for invoices created via the admin page.
333
+        if ( ! $invoice->is_type( 'invoice' ) || $this->is_payment_form_invoice( $invoice->get_id() ) ) {
334
+            return;
335
+        }
336 336
 
337
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
338
-		$recipient = $invoice->get_email();
337
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
338
+        $recipient = $invoice->get_email();
339 339
 
340
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
340
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
341 341
 
342
-	}
342
+    }
343 343
 
344
-	/**
345
-	 * Checks if an invoice is a payment form invoice.
346
-	 *
347
-	 * @param int $invoice
348
-	 * @return bool
349
-	 */
350
-	public function is_payment_form_invoice( $invoice ) {
351
-		return empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' == get_post_meta( $invoice, 'wpinv_created_via', true ) );
352
-	}
344
+    /**
345
+     * Checks if an invoice is a payment form invoice.
346
+     *
347
+     * @param int $invoice
348
+     * @return bool
349
+     */
350
+    public function is_payment_form_invoice( $invoice ) {
351
+        return empty( $_GET['getpaid-admin-action'] ) && ( 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true ) || 'geodirectory' == get_post_meta( $invoice, 'wpinv_created_via', true ) );
352
+    }
353 353
 
354
-	/**
355
-	 * Notifies admin about new invoice notes
356
-	 *
357
-	 * @param WPInv_Invoice $invoice
358
-	 * @param string $note
359
-	 */
360
-	public function user_note( $invoice, $note ) {
354
+    /**
355
+     * Notifies admin about new invoice notes
356
+     *
357
+     * @param WPInv_Invoice $invoice
358
+     * @param string $note
359
+     */
360
+    public function user_note( $invoice, $note ) {
361 361
 
362
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
363
-		$recipient = $invoice->get_email();
364
-
365
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
366
-
367
-	}
362
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
363
+        $recipient = $invoice->get_email();
364
+
365
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
366
+
367
+    }
368 368
 
369
-	/**
370
-	 * (Force) Sends overdue notices.
371
-	 *
372
-	 * @param WPInv_Invoice $invoice
373
-	 */
374
-	public function force_send_overdue_notice( $invoice ) {
375
-		$email = new GetPaid_Notification_Email( 'overdue', $invoice );
376
-		return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
377
-	}
378
-
379
-	/**
380
-	 * Sends overdue notices.
381
-	 *
382
-	 * @TODO: Create an invoices query class.
383
-	 */
384
-	public function overdue() {
385
-		global $wpdb;
386
-
387
-		$email = new GetPaid_Notification_Email( __FUNCTION__ );
388
-
389
-		// Fetch reminder days.
390
-		$reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
391
-
392
-		// Abort if non is set.
393
-		if ( empty( $reminder_days ) ) {
394
-			return;
395
-		}
396
-
397
-		// Retrieve date query.
398
-		$date_query = $this->get_date_query( $reminder_days );
399
-
400
-		// Invoices table.
401
-		$table = $wpdb->prefix . 'getpaid_invoices';
402
-
403
-		// Fetch invoices.
404
-		$invoices  = $wpdb->get_col(
405
-			"SELECT posts.ID FROM $wpdb->posts as posts
369
+    /**
370
+     * (Force) Sends overdue notices.
371
+     *
372
+     * @param WPInv_Invoice $invoice
373
+     */
374
+    public function force_send_overdue_notice( $invoice ) {
375
+        $email = new GetPaid_Notification_Email( 'overdue', $invoice );
376
+        return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
377
+    }
378
+
379
+    /**
380
+     * Sends overdue notices.
381
+     *
382
+     * @TODO: Create an invoices query class.
383
+     */
384
+    public function overdue() {
385
+        global $wpdb;
386
+
387
+        $email = new GetPaid_Notification_Email( __FUNCTION__ );
388
+
389
+        // Fetch reminder days.
390
+        $reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
391
+
392
+        // Abort if non is set.
393
+        if ( empty( $reminder_days ) ) {
394
+            return;
395
+        }
396
+
397
+        // Retrieve date query.
398
+        $date_query = $this->get_date_query( $reminder_days );
399
+
400
+        // Invoices table.
401
+        $table = $wpdb->prefix . 'getpaid_invoices';
402
+
403
+        // Fetch invoices.
404
+        $invoices  = $wpdb->get_col(
405
+            "SELECT posts.ID FROM $wpdb->posts as posts
406 406
 			LEFT JOIN $table as invoices ON invoices.post_id = posts.ID
407 407
 			WHERE posts.post_type = 'wpi_invoice' AND posts.post_status = 'wpi-pending' $date_query");
408 408
 
409
-		foreach ( $invoices as $invoice ) {
409
+        foreach ( $invoices as $invoice ) {
410 410
 
411
-			// Only send this email for invoices created via the admin page.
412
-			if ( ! $this->is_payment_form_invoice( $invoice ) ) {
413
-				$invoice       = new WPInv_Invoice( $invoice );
414
-				$email->object = $invoice;
411
+            // Only send this email for invoices created via the admin page.
412
+            if ( ! $this->is_payment_form_invoice( $invoice ) ) {
413
+                $invoice       = new WPInv_Invoice( $invoice );
414
+                $email->object = $invoice;
415 415
 
416
-				if ( $invoice->needs_payment() ) {
417
-					$this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
418
-				}
416
+                if ( $invoice->needs_payment() ) {
417
+                    $this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
418
+                }
419 419
 
420
-			}
420
+            }
421 421
 
422
-		}
422
+        }
423 423
 
424
-	}
424
+    }
425 425
 
426
-	/**
427
-	 * Calculates the date query for an invoices query
428
-	 *
429
-	 * @param array $reminder_days
430
-	 * @return string
431
-	 */
432
-	public function get_date_query( $reminder_days ) {
426
+    /**
427
+     * Calculates the date query for an invoices query
428
+     *
429
+     * @param array $reminder_days
430
+     * @return string
431
+     */
432
+    public function get_date_query( $reminder_days ) {
433 433
 
434
-		$date_query = array(
435
-			'relation'  => 'OR'
436
-		);
434
+        $date_query = array(
435
+            'relation'  => 'OR'
436
+        );
437 437
 
438
-		foreach ( $reminder_days as $days ) {
439
-			$date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
438
+        foreach ( $reminder_days as $days ) {
439
+            $date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
440 440
 
441
-			$date_query[] = array(
442
-				'year'  => $date['year'],
443
-				'month' => $date['month'],
444
-				'day'   => $date['day'],
445
-			);
441
+            $date_query[] = array(
442
+                'year'  => $date['year'],
443
+                'month' => $date['month'],
444
+                'day'   => $date['day'],
445
+            );
446 446
 
447
-		}
447
+        }
448 448
 
449
-		$date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
449
+        $date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
450 450
 
451
-		return $date_query->get_sql();
451
+        return $date_query->get_sql();
452 452
 
453
-	}
453
+    }
454 454
 
455 455
 }
Please login to merge, or discard this patch.
includes/admin/register-settings.php 1 patch
Indentation   +308 added lines, -308 removed lines patch added patch discarded remove patch
@@ -196,11 +196,11 @@  discard block
 block discarded – undo
196 196
     $cb      = "wpinv_{$option['type']}_callback";
197 197
     $section = "wpinv_settings_{$tab}_$section";
198 198
 
199
-	if ( isset( $option['desc'] ) && ! empty( $option['help-tip'] ) ) {
200
-		$tip   = wpinv_clean( $option['desc'] );
201
-		$name .= "<span class='dashicons dashicons-editor-help wpi-help-tip' title='$tip'></span>";
202
-		unset( $option['desc'] );
203
-	}
199
+    if ( isset( $option['desc'] ) && ! empty( $option['help-tip'] ) ) {
200
+        $tip   = wpinv_clean( $option['desc'] );
201
+        $name .= "<span class='dashicons dashicons-editor-help wpi-help-tip' title='$tip'></span>";
202
+        unset( $option['desc'] );
203
+    }
204 204
 
205 205
     // Loop through all tabs.
206 206
     add_settings_field(
@@ -227,8 +227,8 @@  discard block
 block discarded – undo
227 227
             'faux'        => isset( $option['faux'] )        ? $option['faux']        : false,
228 228
             'onchange'    => isset( $option['onchange'] )   ? $option['onchange']     : '',
229 229
             'custom'      => isset( $option['custom'] )     ? $option['custom']       : '',
230
-			'class'       => isset( $option['class'] )     ? $option['class']         : '',
231
-			'style'       => isset( $option['style'] )     ? $option['style']         : '',
230
+            'class'       => isset( $option['class'] )     ? $option['class']         : '',
231
+            'style'       => isset( $option['style'] )     ? $option['style']         : '',
232 232
             'cols'        => isset( $option['cols'] ) && (int) $option['cols'] > 0 ? (int) $option['cols'] : 50,
233 233
             'rows'        => isset( $option['rows'] ) && (int) $option['rows'] > 0 ? (int) $option['rows'] : 5,
234 234
         )
@@ -242,7 +242,7 @@  discard block
 block discarded – undo
242 242
  * @return array
243 243
  */
244 244
 function wpinv_get_registered_settings() {
245
-	return array_filter( apply_filters( 'wpinv_registered_settings', wpinv_get_data( 'admin-settings' ) ) );
245
+    return array_filter( apply_filters( 'wpinv_registered_settings', wpinv_get_data( 'admin-settings' ) ) );
246 246
 }
247 247
 
248 248
 /**
@@ -261,8 +261,8 @@  discard block
 block discarded – undo
261 261
  */
262 262
 function wpinv_settings_sanitize( $input = array() ) {
263 263
 
264
-	$wpinv_options = wpinv_get_options();
265
-	$raw_referrer  = wp_get_raw_referer();
264
+    $wpinv_options = wpinv_get_options();
265
+    $raw_referrer  = wp_get_raw_referer();
266 266
 
267 267
     if ( empty( $raw_referrer ) ) {
268 268
         return $input;
@@ -270,9 +270,9 @@  discard block
 block discarded – undo
270 270
 
271 271
     wp_parse_str( $raw_referrer, $referrer );
272 272
 
273
-	if ( empty( $referrer['tab'] ) ) {
273
+    if ( empty( $referrer['tab'] ) ) {
274 274
         return $input;
275
-	}
275
+    }
276 276
 
277 277
     $settings = wpinv_get_registered_settings();
278 278
     $tab      = isset( $referrer['tab'] ) ? $referrer['tab'] : 'general';
@@ -294,10 +294,10 @@  discard block
 block discarded – undo
294 294
         }
295 295
 
296 296
         // General filter
297
-		$input[ $key ] = apply_filters( 'wpinv_settings_sanitize', $input[ $key ], $key );
297
+        $input[ $key ] = apply_filters( 'wpinv_settings_sanitize', $input[ $key ], $key );
298 298
 
299
-		// Key specific filter.
300
-		$input[ $key ] = apply_filters( "wpinv_settings_sanitize_$key", $input[ $key ] );
299
+        // Key specific filter.
300
+        $input[ $key ] = apply_filters( "wpinv_settings_sanitize_$key", $input[ $key ] );
301 301
     }
302 302
 
303 303
     // Loop through the whitelist and unset any that are empty for the tab being saved
@@ -353,14 +353,14 @@  discard block
 block discarded – undo
353 353
 
354 354
     foreach ( $new_rates as $rate ) {
355 355
 
356
-		$rate['rate']    = wpinv_sanitize_amount( $rate['rate'] );
357
-		$rate['name']    = sanitize_text_field( $rate['name'] );
358
-		$rate['state']   = sanitize_text_field( $rate['state'] );
359
-		$rate['country'] = sanitize_text_field( $rate['country'] );
360
-		$rate['global']  = empty( $rate['state'] );
361
-		$tax_rates[]     = $rate;
356
+        $rate['rate']    = wpinv_sanitize_amount( $rate['rate'] );
357
+        $rate['name']    = sanitize_text_field( $rate['name'] );
358
+        $rate['state']   = sanitize_text_field( $rate['state'] );
359
+        $rate['country'] = sanitize_text_field( $rate['country'] );
360
+        $rate['global']  = empty( $rate['state'] );
361
+        $tax_rates[]     = $rate;
362 362
 
363
-	}
363
+    }
364 364
 
365 365
     update_option( 'wpinv_tax_rates', $tax_rates );
366 366
 
@@ -378,11 +378,11 @@  discard block
 block discarded – undo
378 378
     $tabs['general']  = __( 'General', 'invoicing' );
379 379
     $tabs['gateways'] = __( 'Payment Gateways', 'invoicing' );
380 380
     $tabs['taxes']    = __( 'Taxes', 'invoicing' );
381
-	$tabs['emails']   = __( 'Emails', 'invoicing' );
381
+    $tabs['emails']   = __( 'Emails', 'invoicing' );
382 382
 
383
-	if ( count( getpaid_get_integration_settings() ) > 0 ) {
384
-		$tabs['integrations'] = __( 'Integrations', 'invoicing' );
385
-	}
383
+    if ( count( getpaid_get_integration_settings() ) > 0 ) {
384
+        $tabs['integrations'] = __( 'Integrations', 'invoicing' );
385
+    }
386 386
 
387 387
     $tabs['privacy']  = __( 'Privacy', 'invoicing' );
388 388
     $tabs['misc']     = __( 'Misc', 'invoicing' );
@@ -420,14 +420,14 @@  discard block
 block discarded – undo
420 420
         ) ),
421 421
         'taxes' => apply_filters( 'wpinv_settings_sections_taxes', array(
422 422
             'main'  => __( 'Tax Settings', 'invoicing' ),
423
-			'rates' => __( 'Tax Rates', 'invoicing' ),
424
-			'vat'   => __( 'EU VAT Settings', 'invoicing' )
423
+            'rates' => __( 'Tax Rates', 'invoicing' ),
424
+            'vat'   => __( 'EU VAT Settings', 'invoicing' )
425 425
         ) ),
426 426
         'emails' => apply_filters( 'wpinv_settings_sections_emails', array(
427 427
             'main' => __( 'Email Settings', 'invoicing' ),
428
-		) ),
428
+        ) ),
429 429
 
430
-		'integrations' => wp_list_pluck( getpaid_get_integration_settings(), 'label', 'id' ),
430
+        'integrations' => wp_list_pluck( getpaid_get_integration_settings(), 'label', 'id' ),
431 431
 
432 432
         'privacy' => apply_filters( 'wpinv_settings_sections_privacy', array(
433 433
             'main' => __( 'Privacy policy', 'invoicing' ),
@@ -447,51 +447,51 @@  discard block
 block discarded – undo
447 447
 }
448 448
 
449 449
 function wpinv_get_pages( $with_slug = false, $default_label = NULL ) {
450
-	$pages_options = array();
450
+    $pages_options = array();
451 451
 
452
-	if( $default_label !== NULL && $default_label !== false ) {
453
-		$pages_options = array( '' => $default_label ); // Blank option
454
-	}
452
+    if( $default_label !== NULL && $default_label !== false ) {
453
+        $pages_options = array( '' => $default_label ); // Blank option
454
+    }
455 455
 
456
-	$pages = get_pages();
457
-	if ( $pages ) {
458
-		foreach ( $pages as $page ) {
459
-			$title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title;
456
+    $pages = get_pages();
457
+    if ( $pages ) {
458
+        foreach ( $pages as $page ) {
459
+            $title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title;
460 460
             $pages_options[ $page->ID ] = $title;
461
-		}
462
-	}
461
+        }
462
+    }
463 463
 
464
-	return $pages_options;
464
+    return $pages_options;
465 465
 }
466 466
 
467 467
 function wpinv_header_callback( $args ) {
468
-	if ( !empty( $args['desc'] ) ) {
468
+    if ( !empty( $args['desc'] ) ) {
469 469
         echo $args['desc'];
470 470
     }
471 471
 }
472 472
 
473 473
 function wpinv_hidden_callback( $args ) {
474
-	global $wpinv_options;
475
-
476
-	if ( isset( $args['set_value'] ) ) {
477
-		$value = $args['set_value'];
478
-	} elseif ( isset( $wpinv_options[ $args['id'] ] ) ) {
479
-		$value = $wpinv_options[ $args['id'] ];
480
-	} else {
481
-		$value = isset( $args['std'] ) ? $args['std'] : '';
482
-	}
483
-
484
-	if ( isset( $args['faux'] ) && true === $args['faux'] ) {
485
-		$args['readonly'] = true;
486
-		$value = isset( $args['std'] ) ? $args['std'] : '';
487
-		$name  = '';
488
-	} else {
489
-		$name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
490
-	}
491
-
492
-	$html = '<input type="hidden" id="wpinv_settings[' . wpinv_sanitize_key( $args['id'] ) . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '" />';
474
+    global $wpinv_options;
475
+
476
+    if ( isset( $args['set_value'] ) ) {
477
+        $value = $args['set_value'];
478
+    } elseif ( isset( $wpinv_options[ $args['id'] ] ) ) {
479
+        $value = $wpinv_options[ $args['id'] ];
480
+    } else {
481
+        $value = isset( $args['std'] ) ? $args['std'] : '';
482
+    }
483
+
484
+    if ( isset( $args['faux'] ) && true === $args['faux'] ) {
485
+        $args['readonly'] = true;
486
+        $value = isset( $args['std'] ) ? $args['std'] : '';
487
+        $name  = '';
488
+    } else {
489
+        $name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
490
+    }
491
+
492
+    $html = '<input type="hidden" id="wpinv_settings[' . wpinv_sanitize_key( $args['id'] ) . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '" />';
493 493
     
494
-	echo $html;
494
+    echo $html;
495 495
 }
496 496
 
497 497
 /**
@@ -499,12 +499,12 @@  discard block
 block discarded – undo
499 499
  */
500 500
 function wpinv_checkbox_callback( $args ) {
501 501
 
502
-	$std = isset( $args['std'] ) ? $args['std'] : '';
503
-	$std = wpinv_get_option( $args['id'], $std );
504
-	$id  = esc_attr( $args['id'] );
502
+    $std = isset( $args['std'] ) ? $args['std'] : '';
503
+    $std = wpinv_get_option( $args['id'], $std );
504
+    $id  = esc_attr( $args['id'] );
505 505
 
506
-	getpaid_hidden_field( "wpinv_settings[$id]", '0' );
507
-	?>
506
+    getpaid_hidden_field( "wpinv_settings[$id]", '0' );
507
+    ?>
508 508
 		<fieldset>
509 509
 			<label>
510 510
 				<input id="wpinv-settings-<?php echo $id; ?>" name="wpinv_settings[<?php echo $id; ?>]" <?php checked( empty( $std ), false ); ?> value="1" type="checkbox">
@@ -516,77 +516,77 @@  discard block
 block discarded – undo
516 516
 
517 517
 function wpinv_multicheck_callback( $args ) {
518 518
 	
519
-	global $wpinv_options;
519
+    global $wpinv_options;
520 520
 
521
-	$sanitize_id = wpinv_sanitize_key( $args['id'] );
522
-	$class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
521
+    $sanitize_id = wpinv_sanitize_key( $args['id'] );
522
+    $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
523 523
 
524
-	if ( ! empty( $args['options'] ) ) {
524
+    if ( ! empty( $args['options'] ) ) {
525 525
 
526
-		$std     = isset( $args['std'] ) ? $args['std'] : array();
527
-		$value   = isset( $wpinv_options[ $args['id'] ] ) ? $wpinv_options[ $args['id'] ] : $std;
526
+        $std     = isset( $args['std'] ) ? $args['std'] : array();
527
+        $value   = isset( $wpinv_options[ $args['id'] ] ) ? $wpinv_options[ $args['id'] ] : $std;
528 528
 
529
-		echo '<div class="wpi-mcheck-rows wpi-mcheck-' . $sanitize_id . $class . '">';
529
+        echo '<div class="wpi-mcheck-rows wpi-mcheck-' . $sanitize_id . $class . '">';
530 530
         foreach( $args['options'] as $key => $option ):
531
-			$sanitize_key = wpinv_sanitize_key( $key );
532
-			if ( in_array( $sanitize_key, $value ) ) { 
533
-				$enabled = $sanitize_key;
534
-			} else { 
535
-				$enabled = NULL; 
536
-			}
537
-			echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/>&nbsp;';
538
-			echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . wp_kses_post( $option ) . '</label></div>';
539
-		endforeach;
540
-		echo '</div>';
541
-		echo '<p class="description">' . $args['desc'] . '</p>';
542
-	}
531
+            $sanitize_key = wpinv_sanitize_key( $key );
532
+            if ( in_array( $sanitize_key, $value ) ) { 
533
+                $enabled = $sanitize_key;
534
+            } else { 
535
+                $enabled = NULL; 
536
+            }
537
+            echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/>&nbsp;';
538
+            echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . wp_kses_post( $option ) . '</label></div>';
539
+        endforeach;
540
+        echo '</div>';
541
+        echo '<p class="description">' . $args['desc'] . '</p>';
542
+    }
543 543
 }
544 544
 
545 545
 function wpinv_payment_icons_callback( $args ) {
546
-	global $wpinv_options;
546
+    global $wpinv_options;
547 547
     
548 548
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
549 549
 
550
-	if ( ! empty( $args['options'] ) ) {
551
-		foreach( $args['options'] as $key => $option ) {
550
+    if ( ! empty( $args['options'] ) ) {
551
+        foreach( $args['options'] as $key => $option ) {
552 552
             $sanitize_key = wpinv_sanitize_key( $key );
553 553
             
554
-			if( isset( $wpinv_options[$args['id']][$key] ) ) {
555
-				$enabled = $option;
556
-			} else {
557
-				$enabled = NULL;
558
-			}
559
-
560
-			echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">';
561
-
562
-				echo '<input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/>&nbsp;';
563
-
564
-				if ( wpinv_string_is_image_url( $key ) ) {
565
-					echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
566
-				} else {
567
-					$card = strtolower( str_replace( ' ', '', $option ) );
568
-
569
-					if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) {
570
-						$image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' );
571
-					} else {
572
-						$image       = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false );
573
-						$content_dir = WP_CONTENT_DIR;
574
-
575
-						if ( function_exists( 'wp_normalize_path' ) ) {
576
-							// Replaces backslashes with forward slashes for Windows systems
577
-							$image = wp_normalize_path( $image );
578
-							$content_dir = wp_normalize_path( $content_dir );
579
-						}
580
-
581
-						$image = str_replace( $content_dir, content_url(), $image );
582
-					}
583
-
584
-					echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
585
-				}
586
-			echo $option . '</label>';
587
-		}
588
-		echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>';
589
-	}
554
+            if( isset( $wpinv_options[$args['id']][$key] ) ) {
555
+                $enabled = $option;
556
+            } else {
557
+                $enabled = NULL;
558
+            }
559
+
560
+            echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">';
561
+
562
+                echo '<input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/>&nbsp;';
563
+
564
+                if ( wpinv_string_is_image_url( $key ) ) {
565
+                    echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
566
+                } else {
567
+                    $card = strtolower( str_replace( ' ', '', $option ) );
568
+
569
+                    if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) {
570
+                        $image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' );
571
+                    } else {
572
+                        $image       = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false );
573
+                        $content_dir = WP_CONTENT_DIR;
574
+
575
+                        if ( function_exists( 'wp_normalize_path' ) ) {
576
+                            // Replaces backslashes with forward slashes for Windows systems
577
+                            $image = wp_normalize_path( $image );
578
+                            $content_dir = wp_normalize_path( $content_dir );
579
+                        }
580
+
581
+                        $image = str_replace( $content_dir, content_url(), $image );
582
+                    }
583
+
584
+                    echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
585
+                }
586
+            echo $option . '</label>';
587
+        }
588
+        echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>';
589
+    }
590 590
 }
591 591
 
592 592
 /**
@@ -594,9 +594,9 @@  discard block
 block discarded – undo
594 594
  */
595 595
 function wpinv_radio_callback( $args ) {
596 596
 
597
-	$std = isset( $args['std'] ) ? $args['std'] : '';
598
-	$std = wpinv_get_option( $args['id'], $std );
599
-	?>
597
+    $std = isset( $args['std'] ) ? $args['std'] : '';
598
+    $std = wpinv_get_option( $args['id'], $std );
599
+    ?>
600 600
 		<fieldset>
601 601
 			<ul id="wpinv-settings-<?php echo esc_attr( $args['id'] ); ?>" style="margin-top: 0;">
602 602
 				<?php foreach( $args['options'] as $key => $option ) : ?>
@@ -610,7 +610,7 @@  discard block
 block discarded – undo
610 610
 			</ul>
611 611
 		</fieldset>
612 612
 	<?php
613
-	getpaid_settings_description_callback( $args );
613
+    getpaid_settings_description_callback( $args );
614 614
 }
615 615
 
616 616
 /**
@@ -618,10 +618,10 @@  discard block
 block discarded – undo
618 618
  */
619 619
 function getpaid_settings_description_callback( $args ) {
620 620
 
621
-	if ( ! empty( $args['desc'] ) ) {
622
-		$description = wp_kses_post( $args['desc'] );
623
-		echo "<p class='description'>$description</p>";
624
-	}
621
+    if ( ! empty( $args['desc'] ) ) {
622
+        $description = wp_kses_post( $args['desc'] );
623
+        echo "<p class='description'>$description</p>";
624
+    }
625 625
 
626 626
 }
627 627
 
@@ -630,7 +630,7 @@  discard block
 block discarded – undo
630 630
  */
631 631
 function wpinv_gateways_callback() {
632 632
 
633
-	?>
633
+    ?>
634 634
 		</td>
635 635
 	</tr>
636 636
 	<tr class="bsui">
@@ -641,24 +641,24 @@  discard block
 block discarded – undo
641 641
 }
642 642
 
643 643
 function wpinv_gateway_select_callback($args) {
644
-	global $wpinv_options;
644
+    global $wpinv_options;
645 645
     
646 646
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
647 647
     $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
648 648
 
649
-	echo '<select name="wpinv_settings[' . $sanitize_id . ']"" id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'" >';
649
+    echo '<select name="wpinv_settings[' . $sanitize_id . ']"" id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'" >';
650 650
 
651
-	foreach ( $args['options'] as $key => $option ) :
652
-		if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
651
+    foreach ( $args['options'] as $key => $option ) :
652
+        if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
653 653
             $selected = selected( $key, $args['selected'], false );
654 654
         } else {
655 655
             $selected = isset( $wpinv_options[ $args['id'] ] ) ? selected( $key, $wpinv_options[$args['id']], false ) : '';
656 656
         }
657
-		echo '<option value="' . wpinv_sanitize_key( $key ) . '"' . $selected . '>' . esc_html( $option['admin_label'] ) . '</option>';
658
-	endforeach;
657
+        echo '<option value="' . wpinv_sanitize_key( $key ) . '"' . $selected . '>' . esc_html( $option['admin_label'] ) . '</option>';
658
+    endforeach;
659 659
 
660
-	echo '</select>';
661
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
660
+    echo '</select>';
661
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
662 662
 }
663 663
 
664 664
 /**
@@ -669,29 +669,29 @@  discard block
 block discarded – undo
669 669
  */
670 670
 function wpinv_settings_attrs_helper( $args ) {
671 671
 
672
-	$value        = isset( $args['std'] ) ? $args['std'] : '';
673
-	$id           = esc_attr( $args['id'] );
674
-	$placeholder  = esc_attr( $args['placeholder'] );
672
+    $value        = isset( $args['std'] ) ? $args['std'] : '';
673
+    $id           = esc_attr( $args['id'] );
674
+    $placeholder  = esc_attr( $args['placeholder'] );
675 675
 
676
-	if ( ! empty( $args['faux'] ) ) {
677
-		$args['readonly'] = true;
678
-		$name             = '';
679
-	} else {
680
-		$value  = wpinv_get_option( $args['id'], $value );
681
-		$name   = "wpinv_settings[$id]";
682
-	}
676
+    if ( ! empty( $args['faux'] ) ) {
677
+        $args['readonly'] = true;
678
+        $name             = '';
679
+    } else {
680
+        $value  = wpinv_get_option( $args['id'], $value );
681
+        $name   = "wpinv_settings[$id]";
682
+    }
683 683
 
684
-	$value    = is_scalar( $value ) ? esc_attr( $value ) : '';
685
-	$class    = esc_attr( $args['class'] );
686
-	$style    = esc_attr( $args['style'] );
687
-	$readonly = empty( $args['readonly'] ) ? '' : 'readonly onclick="this.select()"';
684
+    $value    = is_scalar( $value ) ? esc_attr( $value ) : '';
685
+    $class    = esc_attr( $args['class'] );
686
+    $style    = esc_attr( $args['style'] );
687
+    $readonly = empty( $args['readonly'] ) ? '' : 'readonly onclick="this.select()"';
688 688
 
689
-	$onchange = '';
689
+    $onchange = '';
690 690
     if ( ! empty( $args['onchange'] ) ) {
691 691
         $onchange = ' onchange="' . esc_attr( $args['onchange'] ) . '"';
692
-	}
692
+    }
693 693
 
694
-	return "name='$name' id='wpinv-settings-$id' style='$style' value='$value' class='$class' placeholder='$placeholder' data-placeholder='$placeholder' $onchange $readonly";
694
+    return "name='$name' id='wpinv-settings-$id' style='$style' value='$value' class='$class' placeholder='$placeholder' data-placeholder='$placeholder' $onchange $readonly";
695 695
 }
696 696
 
697 697
 /**
@@ -699,11 +699,11 @@  discard block
 block discarded – undo
699 699
  */
700 700
 function wpinv_text_callback( $args ) {
701 701
 
702
-	$desc = wp_kses_post( $args['desc'] );
703
-	$desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
704
-	$attr = wpinv_settings_attrs_helper( $args );
702
+    $desc = wp_kses_post( $args['desc'] );
703
+    $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
704
+    $attr = wpinv_settings_attrs_helper( $args );
705 705
 
706
-	?>
706
+    ?>
707 707
 		<label style="width: 100%;">
708 708
 			<input type="text" <?php echo $attr; ?>>
709 709
 			<?php echo $desc; ?>
@@ -717,14 +717,14 @@  discard block
 block discarded – undo
717 717
  */
718 718
 function wpinv_number_callback( $args ) {
719 719
 
720
-	$desc = wp_kses_post( $args['desc'] );
721
-	$desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
722
-	$attr = wpinv_settings_attrs_helper( $args );
723
-	$max  = intval( $args['max'] );
724
-	$min  = intval( $args['min'] );
725
-	$step = floatval( $args['step'] );
720
+    $desc = wp_kses_post( $args['desc'] );
721
+    $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
722
+    $attr = wpinv_settings_attrs_helper( $args );
723
+    $max  = intval( $args['max'] );
724
+    $min  = intval( $args['min'] );
725
+    $step = floatval( $args['step'] );
726 726
 
727
-	?>
727
+    ?>
728 728
 		<label style="width: 100%;">
729 729
 			<input type="number" step="<?php echo $step; ?>" max="<?php echo $max; ?>" min="<?php echo $min; ?>" <?php echo $attr; ?>>
730 730
 			<?php echo $desc; ?>
@@ -734,48 +734,48 @@  discard block
 block discarded – undo
734 734
 }
735 735
 
736 736
 function wpinv_textarea_callback( $args ) {
737
-	global $wpinv_options;
737
+    global $wpinv_options;
738 738
     
739 739
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
740 740
 
741
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
742
-		$value = $wpinv_options[ $args['id'] ];
743
-	} else {
744
-		$value = isset( $args['std'] ) ? $args['std'] : '';
745
-	}
741
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
742
+        $value = $wpinv_options[ $args['id'] ];
743
+    } else {
744
+        $value = isset( $args['std'] ) ? $args['std'] : '';
745
+    }
746 746
     
747 747
     $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
748 748
     $class = ( isset( $args['class'] ) && ! is_null( $args['class'] ) ) ? $args['class'] : 'large-text';
749 749
 
750
-	$html = '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
751
-	$html .= '<br /><label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
750
+    $html = '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
751
+    $html .= '<br /><label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
752 752
 
753
-	echo $html;
753
+    echo $html;
754 754
 }
755 755
 
756 756
 function wpinv_password_callback( $args ) {
757
-	global $wpinv_options;
757
+    global $wpinv_options;
758 758
     
759 759
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
760 760
 
761
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
762
-		$value = $wpinv_options[ $args['id'] ];
763
-	} else {
764
-		$value = isset( $args['std'] ) ? $args['std'] : '';
765
-	}
761
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
762
+        $value = $wpinv_options[ $args['id'] ];
763
+    } else {
764
+        $value = isset( $args['std'] ) ? $args['std'] : '';
765
+    }
766 766
 
767
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
768
-	$html = '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>';
769
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
767
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
768
+    $html = '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>';
769
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
770 770
 
771
-	echo $html;
771
+    echo $html;
772 772
 }
773 773
 
774 774
 function wpinv_missing_callback($args) {
775
-	printf(
776
-		__( 'The callback function used for the %s setting is missing.', 'invoicing' ),
777
-		'<strong>' . $args['id'] . '</strong>'
778
-	);
775
+    printf(
776
+        __( 'The callback function used for the %s setting is missing.', 'invoicing' ),
777
+        '<strong>' . $args['id'] . '</strong>'
778
+    );
779 779
 }
780 780
 
781 781
 /**
@@ -783,13 +783,13 @@  discard block
 block discarded – undo
783 783
  */
784 784
 function wpinv_select_callback( $args ) {
785 785
 
786
-	$desc   = wp_kses_post( $args['desc'] );
787
-	$desc   = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
788
-	$attr   = wpinv_settings_attrs_helper( $args );
789
-	$value  = isset( $args['std'] ) ? $args['std'] : '';
790
-	$value  = wpinv_get_option( $args['id'], $value );
786
+    $desc   = wp_kses_post( $args['desc'] );
787
+    $desc   = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
788
+    $attr   = wpinv_settings_attrs_helper( $args );
789
+    $value  = isset( $args['std'] ) ? $args['std'] : '';
790
+    $value  = wpinv_get_option( $args['id'], $value );
791 791
 
792
-	?>
792
+    ?>
793 793
 		<label style="width: 100%;">
794 794
 			<select <?php echo $attr; ?>>
795 795
 				<?php foreach ( $args['options'] as $option => $name ) : ?>
@@ -803,123 +803,123 @@  discard block
 block discarded – undo
803 803
 }
804 804
 
805 805
 function wpinv_color_select_callback( $args ) {
806
-	global $wpinv_options;
806
+    global $wpinv_options;
807 807
     
808 808
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
809 809
 
810
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
811
-		$value = $wpinv_options[ $args['id'] ];
812
-	} else {
813
-		$value = isset( $args['std'] ) ? $args['std'] : '';
814
-	}
810
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
811
+        $value = $wpinv_options[ $args['id'] ];
812
+    } else {
813
+        $value = isset( $args['std'] ) ? $args['std'] : '';
814
+    }
815 815
 
816
-	$html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>';
816
+    $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>';
817 817
 
818
-	foreach ( $args['options'] as $option => $color ) {
819
-		$selected = selected( $option, $value, false );
820
-		$html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $color['label'] ) . '</option>';
821
-	}
818
+    foreach ( $args['options'] as $option => $color ) {
819
+        $selected = selected( $option, $value, false );
820
+        $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $color['label'] ) . '</option>';
821
+    }
822 822
 
823
-	$html .= '</select>';
824
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
823
+    $html .= '</select>';
824
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
825 825
 
826
-	echo $html;
826
+    echo $html;
827 827
 }
828 828
 
829 829
 function wpinv_rich_editor_callback( $args ) {
830
-	global $wpinv_options, $wp_version;
830
+    global $wpinv_options, $wp_version;
831 831
     
832 832
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
833 833
 
834
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
835
-		$value = $wpinv_options[ $args['id'] ];
834
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
835
+        $value = $wpinv_options[ $args['id'] ];
836 836
 
837
-		if( empty( $args['allow_blank'] ) && empty( $value ) ) {
838
-			$value = isset( $args['std'] ) ? $args['std'] : '';
839
-		}
840
-	} else {
841
-		$value = isset( $args['std'] ) ? $args['std'] : '';
842
-	}
837
+        if( empty( $args['allow_blank'] ) && empty( $value ) ) {
838
+            $value = isset( $args['std'] ) ? $args['std'] : '';
839
+        }
840
+    } else {
841
+        $value = isset( $args['std'] ) ? $args['std'] : '';
842
+    }
843 843
 
844
-	$rows = isset( $args['size'] ) ? $args['size'] : 20;
844
+    $rows = isset( $args['size'] ) ? $args['size'] : 20;
845 845
 
846
-	$html = '<div class="getpaid-settings-editor-input">';
847
-	if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) {
848
-		ob_start();
849
-		wp_editor( stripslashes( $value ), 'wpinv_settings_' . esc_attr( $args['id'] ), array( 'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']', 'textarea_rows' => absint( $rows ), 'media_buttons' => false ) );
850
-		$html .= ob_get_clean();
851
-	} else {
852
-		$html .= '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
853
-	}
846
+    $html = '<div class="getpaid-settings-editor-input">';
847
+    if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) {
848
+        ob_start();
849
+        wp_editor( stripslashes( $value ), 'wpinv_settings_' . esc_attr( $args['id'] ), array( 'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']', 'textarea_rows' => absint( $rows ), 'media_buttons' => false ) );
850
+        $html .= ob_get_clean();
851
+    } else {
852
+        $html .= '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
853
+    }
854 854
 
855
-	$html .= '</div><br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
855
+    $html .= '</div><br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
856 856
 
857
-	echo $html;
857
+    echo $html;
858 858
 }
859 859
 
860 860
 function wpinv_upload_callback( $args ) {
861
-	global $wpinv_options;
861
+    global $wpinv_options;
862 862
     
863 863
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
864 864
 
865
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
866
-		$value = $wpinv_options[$args['id']];
867
-	} else {
868
-		$value = isset($args['std']) ? $args['std'] : '';
869
-	}
865
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
866
+        $value = $wpinv_options[$args['id']];
867
+    } else {
868
+        $value = isset($args['std']) ? $args['std'] : '';
869
+    }
870 870
 
871
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
872
-	$html = '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
873
-	$html .= '<span>&nbsp;<input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>';
874
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
871
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
872
+    $html = '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
873
+    $html .= '<span>&nbsp;<input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>';
874
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
875 875
 
876
-	echo $html;
876
+    echo $html;
877 877
 }
878 878
 
879 879
 function wpinv_color_callback( $args ) {
880
-	global $wpinv_options;
880
+    global $wpinv_options;
881 881
     
882 882
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
883 883
 
884
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
885
-		$value = $wpinv_options[ $args['id'] ];
886
-	} else {
887
-		$value = isset( $args['std'] ) ? $args['std'] : '';
888
-	}
884
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
885
+        $value = $wpinv_options[ $args['id'] ];
886
+    } else {
887
+        $value = isset( $args['std'] ) ? $args['std'] : '';
888
+    }
889 889
 
890
-	$default = isset( $args['std'] ) ? $args['std'] : '';
890
+    $default = isset( $args['std'] ) ? $args['std'] : '';
891 891
 
892
-	$html = '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $default ) . '" />';
893
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
892
+    $html = '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $default ) . '" />';
893
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
894 894
 
895
-	echo $html;
895
+    echo $html;
896 896
 }
897 897
 
898 898
 function wpinv_country_states_callback($args) {
899
-	global $wpinv_options;
899
+    global $wpinv_options;
900 900
     
901 901
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
902 902
 
903
-	if ( isset( $args['placeholder'] ) ) {
904
-		$placeholder = $args['placeholder'];
905
-	} else {
906
-		$placeholder = '';
907
-	}
903
+    if ( isset( $args['placeholder'] ) ) {
904
+        $placeholder = $args['placeholder'];
905
+    } else {
906
+        $placeholder = '';
907
+    }
908 908
 
909
-	$states = wpinv_get_country_states();
909
+    $states = wpinv_get_country_states();
910 910
 
911
-	$class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"';
912
-	$html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>';
911
+    $class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"';
912
+    $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>';
913 913
 
914
-	foreach ( $states as $option => $name ) {
915
-		$selected = isset( $wpinv_options[ $args['id'] ] ) ? selected( $option, $wpinv_options[$args['id']], false ) : '';
916
-		$html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
917
-	}
914
+    foreach ( $states as $option => $name ) {
915
+        $selected = isset( $wpinv_options[ $args['id'] ] ) ? selected( $option, $wpinv_options[$args['id']], false ) : '';
916
+        $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
917
+    }
918 918
 
919
-	$html .= '</select>';
920
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
919
+    $html .= '</select>';
920
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
921 921
 
922
-	echo $html;
922
+    echo $html;
923 923
 }
924 924
 
925 925
 /**
@@ -927,7 +927,7 @@  discard block
 block discarded – undo
927 927
  */
928 928
 function wpinv_tax_rates_callback() {
929 929
 	
930
-	?>
930
+    ?>
931 931
 		</td>
932 932
 	</tr>
933 933
 	<tr class="bsui">
@@ -942,17 +942,17 @@  discard block
 block discarded – undo
942 942
  * Displays a tax rate' edit row.
943 943
  */
944 944
 function wpinv_tax_rate_callback( $tax_rate, $key, $echo = true ) {
945
-	ob_start();
945
+    ob_start();
946 946
 
947
-	$key                      = sanitize_key( $key );
948
-	$tax_rate['reduced_rate'] = empty( $tax_rate['reduced_rate'] ) ? 0 : $tax_rate['reduced_rate'];
949
-	include plugin_dir_path( __FILE__ ) . 'views/html-tax-rate-edit.php';
947
+    $key                      = sanitize_key( $key );
948
+    $tax_rate['reduced_rate'] = empty( $tax_rate['reduced_rate'] ) ? 0 : $tax_rate['reduced_rate'];
949
+    include plugin_dir_path( __FILE__ ) . 'views/html-tax-rate-edit.php';
950 950
 
951
-	if ( $echo ) {
952
-		echo ob_get_clean();
953
-	} else {
954
-		return ob_get_clean(); 
955
-	}
951
+    if ( $echo ) {
952
+        echo ob_get_clean();
953
+    } else {
954
+        return ob_get_clean(); 
955
+    }
956 956
 
957 957
 }
958 958
 
@@ -980,14 +980,14 @@  discard block
 block discarded – undo
980 980
                 </td>
981 981
                 <td>
982 982
 					<a href="<?php
983
-						echo esc_url(
984
-							wp_nonce_url(
985
-								add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
986
-								'getpaid-nonce',
987
-								'getpaid-nonce'
988
-							)
989
-						);
990
-					?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a>
983
+                        echo esc_url(
984
+                            wp_nonce_url(
985
+                                add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
986
+                                'getpaid-nonce',
987
+                                'getpaid-nonce'
988
+                            )
989
+                        );
990
+                    ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a>
991 991
                 </td>
992 992
             </tr>
993 993
 			<tr>
@@ -997,14 +997,14 @@  discard block
 block discarded – undo
997 997
                 </td>
998 998
                 <td>
999 999
 					<a href="<?php
1000
-						echo esc_url(
1001
-							wp_nonce_url(
1002
-								add_query_arg( 'getpaid-admin-action', 'create_missing_tables' ),
1003
-								'getpaid-nonce',
1004
-								'getpaid-nonce'
1005
-							)
1006
-						);
1007
-					?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a>
1000
+                        echo esc_url(
1001
+                            wp_nonce_url(
1002
+                                add_query_arg( 'getpaid-admin-action', 'create_missing_tables' ),
1003
+                                'getpaid-nonce',
1004
+                                'getpaid-nonce'
1005
+                            )
1006
+                        );
1007
+                    ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a>
1008 1008
                 </td>
1009 1009
             </tr>
1010 1010
 			<tr>
@@ -1014,14 +1014,14 @@  discard block
 block discarded – undo
1014 1014
                 </td>
1015 1015
                 <td>
1016 1016
 					<a href="<?php
1017
-						echo esc_url(
1018
-							wp_nonce_url(
1019
-								add_query_arg( 'getpaid-admin-action', 'migrate_old_invoices' ),
1020
-								'getpaid-nonce',
1021
-								'getpaid-nonce'
1022
-							)
1023
-						);
1024
-					?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a>
1017
+                        echo esc_url(
1018
+                            wp_nonce_url(
1019
+                                add_query_arg( 'getpaid-admin-action', 'migrate_old_invoices' ),
1020
+                                'getpaid-nonce',
1021
+                                'getpaid-nonce'
1022
+                            )
1023
+                        );
1024
+                    ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a>
1025 1025
                 </td>
1026 1026
             </tr>
1027 1027
 			<?php do_action( 'wpinv_tools_row' ); ?>
@@ -1034,19 +1034,19 @@  discard block
 block discarded – undo
1034 1034
 
1035 1035
 
1036 1036
 function wpinv_descriptive_text_callback( $args ) {
1037
-	echo wp_kses_post( $args['desc'] );
1037
+    echo wp_kses_post( $args['desc'] );
1038 1038
 }
1039 1039
 
1040 1040
 function wpinv_raw_html_callback( $args ) {
1041
-	echo $args['desc'];
1041
+    echo $args['desc'];
1042 1042
 }
1043 1043
 
1044 1044
 function wpinv_hook_callback( $args ) {
1045
-	do_action( 'wpinv_' . $args['id'], $args );
1045
+    do_action( 'wpinv_' . $args['id'], $args );
1046 1046
 }
1047 1047
 
1048 1048
 function wpinv_set_settings_cap() {
1049
-	return wpinv_get_capability();
1049
+    return wpinv_get_capability();
1050 1050
 }
1051 1051
 add_filter( 'option_page_capability_wpinv_settings', 'wpinv_set_settings_cap' );
1052 1052
 
Please login to merge, or discard this patch.
includes/admin/class-getpaid-post-types-admin.php 1 patch
Indentation   +639 added lines, -639 removed lines patch added patch discarded remove patch
@@ -13,646 +13,646 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Post_Types_Admin {
14 14
 
15 15
     /**
16
-	 * Hook in methods.
17
-	 */
18
-	public static function init() {
19
-
20
-		// Init metaboxes.
21
-		GetPaid_Metaboxes::init();
22
-
23
-		// Filter the post updated messages.
24
-		add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
25
-
26
-		// Filter post actions.
27
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
29
-
30
-		// Invoice table columns.
31
-		add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
-		add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
-
34
-		// Items table columns.
35
-		add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
36
-		add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
37
-		add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
38
-		add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
39
-		add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
40
-		add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
41
-
42
-		// Payment forms columns.
43
-		add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
44
-		add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
45
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
46
-
47
-		// Discount table columns.
48
-		add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
49
-		add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
50
-
51
-		// Deleting posts.
52
-		add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
53
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
54
-	}
55
-
56
-	/**
57
-	 * Post updated messages.
58
-	 */
59
-	public static function post_updated_messages( $messages ) {
60
-		global $post;
61
-
62
-		$messages['wpi_discount'] = array(
63
-			0   => '',
64
-			1   => __( 'Discount updated.', 'invoicing' ),
65
-			2   => __( 'Custom field updated.', 'invoicing' ),
66
-			3   => __( 'Custom field deleted.', 'invoicing' ),
67
-			4   => __( 'Discount updated.', 'invoicing' ),
68
-			5   => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
69
-			6   => __( 'Discount updated.', 'invoicing' ),
70
-			7   => __( 'Discount saved.', 'invoicing' ),
71
-			8   => __( 'Discount submitted.', 'invoicing' ),
72
-			9   => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
73
-			10  => __( 'Discount draft updated.', 'invoicing' ),
74
-		);
75
-
76
-		$messages['wpi_payment_form'] = array(
77
-			0   => '',
78
-			1   => __( 'Payment Form updated.', 'invoicing' ),
79
-			2   => __( 'Custom field updated.', 'invoicing' ),
80
-			3   => __( 'Custom field deleted.', 'invoicing' ),
81
-			4   => __( 'Payment Form updated.', 'invoicing' ),
82
-			5   => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
83
-			6   => __( 'Payment Form updated.', 'invoicing' ),
84
-			7   => __( 'Payment Form saved.', 'invoicing' ),
85
-			8   => __( 'Payment Form submitted.', 'invoicing' ),
86
-			9   => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
87
-			10  => __( 'Payment Form draft updated.', 'invoicing' ),
88
-		);
89
-
90
-		return $messages;
91
-
92
-	}
93
-
94
-	/**
95
-	 * Post row actions.
96
-	 */
97
-	public static function post_row_actions( $actions, $post ) {
98
-
99
-		$post = get_post( $post );
100
-
101
-		// We do not want to edit the default payment form.
102
-		if ( 'wpi_payment_form' == $post->post_type && $post->ID == wpinv_get_default_payment_form() ) {
103
-			unset( $actions['trash'] );
104
-			unset( $actions['inline hide-if-no-js'] );
105
-		}
106
-
107
-		return $actions;
108
-	}
109
-
110
-	/**
16
+     * Hook in methods.
17
+     */
18
+    public static function init() {
19
+
20
+        // Init metaboxes.
21
+        GetPaid_Metaboxes::init();
22
+
23
+        // Filter the post updated messages.
24
+        add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
25
+
26
+        // Filter post actions.
27
+        add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
+        add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
29
+
30
+        // Invoice table columns.
31
+        add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
+        add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
+
34
+        // Items table columns.
35
+        add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
36
+        add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
37
+        add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
38
+        add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
39
+        add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
40
+        add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
41
+
42
+        // Payment forms columns.
43
+        add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
44
+        add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
45
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
46
+
47
+        // Discount table columns.
48
+        add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
49
+        add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
50
+
51
+        // Deleting posts.
52
+        add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
53
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
54
+    }
55
+
56
+    /**
57
+     * Post updated messages.
58
+     */
59
+    public static function post_updated_messages( $messages ) {
60
+        global $post;
61
+
62
+        $messages['wpi_discount'] = array(
63
+            0   => '',
64
+            1   => __( 'Discount updated.', 'invoicing' ),
65
+            2   => __( 'Custom field updated.', 'invoicing' ),
66
+            3   => __( 'Custom field deleted.', 'invoicing' ),
67
+            4   => __( 'Discount updated.', 'invoicing' ),
68
+            5   => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
69
+            6   => __( 'Discount updated.', 'invoicing' ),
70
+            7   => __( 'Discount saved.', 'invoicing' ),
71
+            8   => __( 'Discount submitted.', 'invoicing' ),
72
+            9   => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
73
+            10  => __( 'Discount draft updated.', 'invoicing' ),
74
+        );
75
+
76
+        $messages['wpi_payment_form'] = array(
77
+            0   => '',
78
+            1   => __( 'Payment Form updated.', 'invoicing' ),
79
+            2   => __( 'Custom field updated.', 'invoicing' ),
80
+            3   => __( 'Custom field deleted.', 'invoicing' ),
81
+            4   => __( 'Payment Form updated.', 'invoicing' ),
82
+            5   => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
83
+            6   => __( 'Payment Form updated.', 'invoicing' ),
84
+            7   => __( 'Payment Form saved.', 'invoicing' ),
85
+            8   => __( 'Payment Form submitted.', 'invoicing' ),
86
+            9   => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
87
+            10  => __( 'Payment Form draft updated.', 'invoicing' ),
88
+        );
89
+
90
+        return $messages;
91
+
92
+    }
93
+
94
+    /**
95
+     * Post row actions.
96
+     */
97
+    public static function post_row_actions( $actions, $post ) {
98
+
99
+        $post = get_post( $post );
100
+
101
+        // We do not want to edit the default payment form.
102
+        if ( 'wpi_payment_form' == $post->post_type && $post->ID == wpinv_get_default_payment_form() ) {
103
+            unset( $actions['trash'] );
104
+            unset( $actions['inline hide-if-no-js'] );
105
+        }
106
+
107
+        return $actions;
108
+    }
109
+
110
+    /**
111 111
      * Remove bulk edit option from admin side quote listing
112 112
      *
113 113
      * @since    1.0.0
114 114
      * @param array $actions post actions
115
-	 * @param WP_Post $post
115
+     * @param WP_Post $post
116 116
      * @return array $actions actions without edit option
117 117
      */
118 118
     public static function filter_invoice_row_actions( $actions, $post ) {
119 119
 
120 120
         if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
121 121
 
122
-			$actions = array();
123
-			$invoice = new WPInv_Invoice( $post );
124
-
125
-			$actions['edit'] =  sprintf(
126
-				'<a href="%1$s">%2$s</a>',
127
-				esc_url( get_edit_post_link( $invoice->get_id() ) ),
128
-				esc_html( __( 'Edit', 'invoicing' ) )
129
-			);
130
-
131
-			if ( ! $invoice->is_draft() ) {
132
-
133
-				$actions['view'] =  sprintf(
134
-					'<a href="%1$s">%2$s</a>',
135
-					esc_url( $invoice->get_view_url() ),
136
-					sprintf(
137
-						esc_html( __( 'View %s', 'invoicing' ) ),
138
-						getpaid_get_post_type_label( $invoice->get_post_type(), false )
139
-					)
140
-				);
141
-
142
-				$actions['send'] =  sprintf(
143
-					'<a href="%1$s">%2$s</a>',
144
-					esc_url(
145
-						wp_nonce_url(
146
-							add_query_arg(
147
-								array(
148
-									'getpaid-admin-action' => 'send_invoice',
149
-									'invoice_id'           => $invoice->get_id()
150
-								)
151
-							),
152
-							'getpaid-nonce',
153
-							'getpaid-nonce'
154
-						)
155
-					),
156
-					esc_html( __( 'Send to Customer', 'invoicing' ) )
157
-				);
158
-
159
-			}
122
+            $actions = array();
123
+            $invoice = new WPInv_Invoice( $post );
124
+
125
+            $actions['edit'] =  sprintf(
126
+                '<a href="%1$s">%2$s</a>',
127
+                esc_url( get_edit_post_link( $invoice->get_id() ) ),
128
+                esc_html( __( 'Edit', 'invoicing' ) )
129
+            );
130
+
131
+            if ( ! $invoice->is_draft() ) {
132
+
133
+                $actions['view'] =  sprintf(
134
+                    '<a href="%1$s">%2$s</a>',
135
+                    esc_url( $invoice->get_view_url() ),
136
+                    sprintf(
137
+                        esc_html( __( 'View %s', 'invoicing' ) ),
138
+                        getpaid_get_post_type_label( $invoice->get_post_type(), false )
139
+                    )
140
+                );
141
+
142
+                $actions['send'] =  sprintf(
143
+                    '<a href="%1$s">%2$s</a>',
144
+                    esc_url(
145
+                        wp_nonce_url(
146
+                            add_query_arg(
147
+                                array(
148
+                                    'getpaid-admin-action' => 'send_invoice',
149
+                                    'invoice_id'           => $invoice->get_id()
150
+                                )
151
+                            ),
152
+                            'getpaid-nonce',
153
+                            'getpaid-nonce'
154
+                        )
155
+                    ),
156
+                    esc_html( __( 'Send to Customer', 'invoicing' ) )
157
+                );
158
+
159
+            }
160 160
 
161 161
         }
162 162
 
163 163
         return $actions;
164
-	}
165
-
166
-	/**
167
-	 * Returns an array of invoice table columns.
168
-	 */
169
-	public static function invoice_columns( $columns ) {
170
-
171
-		$columns = array(
172
-			'cb'                => $columns['cb'],
173
-			'number'            => __( 'Invoice', 'invoicing' ),
174
-			'customer'          => __( 'Customer', 'invoicing' ),
175
-			'invoice_date'      => __( 'Created', 'invoicing' ),
176
-			'payment_date'      => __( 'Completed', 'invoicing' ),
177
-			'amount'            => __( 'Amount', 'invoicing' ),
178
-			'recurring'         => __( 'Recurring', 'invoicing' ),
179
-			'status'            => __( 'Status', 'invoicing' ),
180
-		);
181
-
182
-		return apply_filters( 'wpi_invoice_table_columns', $columns );
183
-	}
184
-
185
-	/**
186
-	 * Displays invoice table columns.
187
-	 */
188
-	public static function display_invoice_columns( $column_name, $post_id ) {
189
-
190
-		$invoice = new WPInv_Invoice( $post_id );
191
-
192
-		switch ( $column_name ) {
193
-
194
-			case 'invoice_date' :
195
-				$date_time = esc_attr( $invoice->get_created_date() );
196
-				$date      = getpaid_format_date_value( $date_time, "&mdash;", true );
197
-				echo "<span title='$date_time'>$date</span>";
198
-				break;
199
-
200
-			case 'payment_date' :
201
-
202
-				if ( $invoice->is_paid() ) {
203
-					$date_time = esc_attr( $invoice->get_completed_date() );
204
-					$date      = getpaid_format_date_value( $date_time, "&mdash;", true );
205
-					echo "<span title='$date_time'>$date</span>";
206
-				} else {
207
-					echo "&mdash;";
208
-				}
164
+    }
165
+
166
+    /**
167
+     * Returns an array of invoice table columns.
168
+     */
169
+    public static function invoice_columns( $columns ) {
170
+
171
+        $columns = array(
172
+            'cb'                => $columns['cb'],
173
+            'number'            => __( 'Invoice', 'invoicing' ),
174
+            'customer'          => __( 'Customer', 'invoicing' ),
175
+            'invoice_date'      => __( 'Created', 'invoicing' ),
176
+            'payment_date'      => __( 'Completed', 'invoicing' ),
177
+            'amount'            => __( 'Amount', 'invoicing' ),
178
+            'recurring'         => __( 'Recurring', 'invoicing' ),
179
+            'status'            => __( 'Status', 'invoicing' ),
180
+        );
181
+
182
+        return apply_filters( 'wpi_invoice_table_columns', $columns );
183
+    }
184
+
185
+    /**
186
+     * Displays invoice table columns.
187
+     */
188
+    public static function display_invoice_columns( $column_name, $post_id ) {
189
+
190
+        $invoice = new WPInv_Invoice( $post_id );
191
+
192
+        switch ( $column_name ) {
193
+
194
+            case 'invoice_date' :
195
+                $date_time = esc_attr( $invoice->get_created_date() );
196
+                $date      = getpaid_format_date_value( $date_time, "&mdash;", true );
197
+                echo "<span title='$date_time'>$date</span>";
198
+                break;
199
+
200
+            case 'payment_date' :
201
+
202
+                if ( $invoice->is_paid() ) {
203
+                    $date_time = esc_attr( $invoice->get_completed_date() );
204
+                    $date      = getpaid_format_date_value( $date_time, "&mdash;", true );
205
+                    echo "<span title='$date_time'>$date</span>";
206
+                } else {
207
+                    echo "&mdash;";
208
+                }
209 209
 				
210
-				break;
210
+                break;
211 211
 
212
-			case 'amount' :
212
+            case 'amount' :
213 213
 
214
-				$amount = $invoice->get_total();
215
-				$formated_amount = wpinv_price( $amount, $invoice->get_currency() );
214
+                $amount = $invoice->get_total();
215
+                $formated_amount = wpinv_price( $amount, $invoice->get_currency() );
216 216
 
217
-				if ( $invoice->is_refunded() ) {
218
-					$refunded_amount = wpinv_price( 0, $invoice->get_currency() );
219
-					echo "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>";
220
-				} else {
217
+                if ( $invoice->is_refunded() ) {
218
+                    $refunded_amount = wpinv_price( 0, $invoice->get_currency() );
219
+                    echo "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>";
220
+                } else {
221 221
 
222
-					$discount = $invoice->get_total_discount();
222
+                    $discount = $invoice->get_total_discount();
223 223
 
224
-					if ( ! empty( $discount ) ) {
225
-						$new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
226
-						echo "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>";
227
-					} else {
228
-						echo $formated_amount;
229
-					}
224
+                    if ( ! empty( $discount ) ) {
225
+                        $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
226
+                        echo "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>";
227
+                    } else {
228
+                        echo $formated_amount;
229
+                    }
230 230
 
231
-				}
231
+                }
232 232
 
233
-				break;
233
+                break;
234 234
 
235
-			case 'status' :
236
-				$status       = sanitize_text_field( $invoice->get_status() );
237
-				$status_label = sanitize_text_field( $invoice->get_status_nicename() );
235
+            case 'status' :
236
+                $status       = sanitize_text_field( $invoice->get_status() );
237
+                $status_label = sanitize_text_field( $invoice->get_status_nicename() );
238 238
 
239
-				// If it is paid, show the gateway title.
240
-				if ( $invoice->is_paid() ) {
241
-					$gateway = sanitize_text_field( $invoice->get_gateway_title() );
242
-					$gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), $gateway );
239
+                // If it is paid, show the gateway title.
240
+                if ( $invoice->is_paid() ) {
241
+                    $gateway = sanitize_text_field( $invoice->get_gateway_title() );
242
+                    $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), $gateway );
243 243
 
244
-					echo "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>";
245
-				} else {
246
-					echo "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>";
247
-				}
244
+                    echo "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>";
245
+                } else {
246
+                    echo "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>";
247
+                }
248 248
 
249
-				// If it is not paid, display the overdue and view status.
250
-				if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
249
+                // If it is not paid, display the overdue and view status.
250
+                if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
251 251
 
252
-					// Invoice view status.
253
-					if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
254
-						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="'. esc_attr__( 'Viewed by Customer', 'invoicing' ).'"></i>';
255
-					} else {
256
-						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="'. esc_attr__( 'Not Viewed by Customer', 'invoicing' ).'"></i>';
257
-					}
252
+                    // Invoice view status.
253
+                    if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
254
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="'. esc_attr__( 'Viewed by Customer', 'invoicing' ).'"></i>';
255
+                    } else {
256
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="'. esc_attr__( 'Not Viewed by Customer', 'invoicing' ).'"></i>';
257
+                    }
258 258
 
259
-					// Display the overview status.
260
-					if ( wpinv_get_option( 'overdue_active' ) ) {
261
-						$due_date = $invoice->get_due_date();
262
-						$fomatted = getpaid_format_date( $due_date );
259
+                    // Display the overview status.
260
+                    if ( wpinv_get_option( 'overdue_active' ) ) {
261
+                        $due_date = $invoice->get_due_date();
262
+                        $fomatted = getpaid_format_date( $due_date );
263 263
 
264
-						if ( ! empty( $fomatted ) ) {
265
-							$date = wp_sprintf( __( 'Due %s', 'invoicing' ), $fomatted );
266
-							echo "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>";
267
-						}
268
-					}
264
+                        if ( ! empty( $fomatted ) ) {
265
+                            $date = wp_sprintf( __( 'Due %s', 'invoicing' ), $fomatted );
266
+                            echo "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>";
267
+                        }
268
+                    }
269 269
 
270
-				}
270
+                }
271 271
 
272
-				break;
272
+                break;
273 273
 
274
-			case 'recurring':
274
+            case 'recurring':
275 275
 
276
-				if ( $invoice->is_recurring() ) {
277
-					echo '<i class="fa fa-check" style="color:#43850a;"></i>';
278
-				} else {
279
-					echo '<i class="fa fa-times" style="color:#616161;"></i>';
280
-				}
281
-				break;
276
+                if ( $invoice->is_recurring() ) {
277
+                    echo '<i class="fa fa-check" style="color:#43850a;"></i>';
278
+                } else {
279
+                    echo '<i class="fa fa-times" style="color:#616161;"></i>';
280
+                }
281
+                break;
282 282
 
283
-			case 'number' :
283
+            case 'number' :
284 284
 
285
-				$edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
286
-				$invoice_number  = sanitize_text_field( $invoice->get_number() );
287
-				$invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
285
+                $edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
286
+                $invoice_number  = sanitize_text_field( $invoice->get_number() );
287
+                $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
288 288
 
289
-				echo "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>";
289
+                echo "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>";
290 290
 
291
-				break;
291
+                break;
292 292
 
293
-			case 'customer' :
293
+            case 'customer' :
294 294
 	
295
-				$customer_name = $invoice->get_user_full_name();
295
+                $customer_name = $invoice->get_user_full_name();
296 296
 	
297
-				if ( empty( $customer_name ) ) {
298
-					$customer_name = $invoice->get_email();
299
-				}
297
+                if ( empty( $customer_name ) ) {
298
+                    $customer_name = $invoice->get_email();
299
+                }
300 300
 	
301
-				if ( ! empty( $customer_name ) ) {
302
-					$customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
303
-					$view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
304
-					echo "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>";
305
-				} else {
306
-					echo '<div>&mdash;</div>';
307
-				}
301
+                if ( ! empty( $customer_name ) ) {
302
+                    $customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
303
+                    $view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
304
+                    echo "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>";
305
+                } else {
306
+                    echo '<div>&mdash;</div>';
307
+                }
308 308
 
309
-				break;
309
+                break;
310 310
 
311
-		}
311
+        }
312 312
 
313
-	}
313
+    }
314 314
 
315
-	/**
316
-	 * Returns an array of payment forms table columns.
317
-	 */
318
-	public static function payment_form_columns( $columns ) {
315
+    /**
316
+     * Returns an array of payment forms table columns.
317
+     */
318
+    public static function payment_form_columns( $columns ) {
319 319
 
320
-		$columns = array(
321
-			'cb'                => $columns['cb'],
322
-			'title'             => __( 'Name', 'invoicing' ),
323
-			'shortcode'         => __( 'Shortcode', 'invoicing' ),
324
-			'earnings'          => __( 'Revenue', 'invoicing' ),
325
-			'refunds'           => __( 'Refunded', 'invoicing' ),
326
-			'items'             => __( 'Items', 'invoicing' ),
327
-			'date'              => __( 'Date', 'invoicing' ),
328
-		);
320
+        $columns = array(
321
+            'cb'                => $columns['cb'],
322
+            'title'             => __( 'Name', 'invoicing' ),
323
+            'shortcode'         => __( 'Shortcode', 'invoicing' ),
324
+            'earnings'          => __( 'Revenue', 'invoicing' ),
325
+            'refunds'           => __( 'Refunded', 'invoicing' ),
326
+            'items'             => __( 'Items', 'invoicing' ),
327
+            'date'              => __( 'Date', 'invoicing' ),
328
+        );
329 329
 
330
-		return apply_filters( 'wpi_payment_form_table_columns', $columns );
330
+        return apply_filters( 'wpi_payment_form_table_columns', $columns );
331 331
 
332
-	}
332
+    }
333 333
 
334
-	/**
335
-	 * Displays payment form table columns.
336
-	 */
337
-	public static function display_payment_form_columns( $column_name, $post_id ) {
334
+    /**
335
+     * Displays payment form table columns.
336
+     */
337
+    public static function display_payment_form_columns( $column_name, $post_id ) {
338 338
 
339
-		// Retrieve the payment form.
340
-		$form = new GetPaid_Payment_Form( $post_id );
339
+        // Retrieve the payment form.
340
+        $form = new GetPaid_Payment_Form( $post_id );
341 341
 
342
-		switch ( $column_name ) {
342
+        switch ( $column_name ) {
343 343
 
344
-			case 'earnings' :
345
-				echo wpinv_price( $form->get_earned() );
346
-				break;
344
+            case 'earnings' :
345
+                echo wpinv_price( $form->get_earned() );
346
+                break;
347 347
 
348
-			case 'refunds' :
349
-				echo wpinv_price( $form->get_refunded() );
350
-				break;
348
+            case 'refunds' :
349
+                echo wpinv_price( $form->get_refunded() );
350
+                break;
351 351
 
352
-			case 'refunds' :
353
-				echo wpinv_price( $form->get_refunded() );
354
-				break;
352
+            case 'refunds' :
353
+                echo wpinv_price( $form->get_refunded() );
354
+                break;
355 355
 
356
-			case 'shortcode' :
356
+            case 'shortcode' :
357 357
 
358
-				if ( $form->is_default() ) {
359
-					echo '&mdash;';
360
-				} else {
361
-					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
362
-				}
358
+                if ( $form->is_default() ) {
359
+                    echo '&mdash;';
360
+                } else {
361
+                    echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
362
+                }
363 363
 
364
-				break;
364
+                break;
365 365
 
366
-			case 'items' :
366
+            case 'items' :
367 367
 
368
-				$items = $form->get_items();
368
+                $items = $form->get_items();
369 369
 
370
-				if ( $form->is_default() || empty( $items ) ) {
371
-					echo '&mdash;';
372
-					return;
373
-				}
370
+                if ( $form->is_default() || empty( $items ) ) {
371
+                    echo '&mdash;';
372
+                    return;
373
+                }
374 374
 
375
-				$_items = array();
375
+                $_items = array();
376 376
 
377
-				foreach ( $items as $item ) {
378
-					$url = $item->get_edit_url();
377
+                foreach ( $items as $item ) {
378
+                    $url = $item->get_edit_url();
379 379
 
380
-					if ( empty( $url ) ) {
381
-						$_items[] = sanitize_text_field( $item->get_name() );
382
-					} else {
383
-						$_items[] = sprintf(
384
-							'<a href="%s">%s</a>',
385
-							esc_url( $url ),
386
-							sanitize_text_field( $item->get_name() )
387
-						);
388
-					}
380
+                    if ( empty( $url ) ) {
381
+                        $_items[] = sanitize_text_field( $item->get_name() );
382
+                    } else {
383
+                        $_items[] = sprintf(
384
+                            '<a href="%s">%s</a>',
385
+                            esc_url( $url ),
386
+                            sanitize_text_field( $item->get_name() )
387
+                        );
388
+                    }
389 389
 
390
-				}
390
+                }
391 391
 
392
-				echo implode( '<br>', $_items );
392
+                echo implode( '<br>', $_items );
393 393
 
394
-				break;
394
+                break;
395 395
 
396
-		}
396
+        }
397 397
 
398
-	}
398
+    }
399 399
 
400
-	/**
401
-	 * Filters post states.
402
-	 */
403
-	public static function filter_payment_form_state( $post_states, $post ) {
400
+    /**
401
+     * Filters post states.
402
+     */
403
+    public static function filter_payment_form_state( $post_states, $post ) {
404 404
 
405
-		if ( 'wpi_payment_form' == $post->post_type && wpinv_get_default_payment_form() == $post->ID ) {
406
-			$post_states[ 'default_form' ] = __( 'Default Payment Form', 'invoicing' );
407
-		}
405
+        if ( 'wpi_payment_form' == $post->post_type && wpinv_get_default_payment_form() == $post->ID ) {
406
+            $post_states[ 'default_form' ] = __( 'Default Payment Form', 'invoicing' );
407
+        }
408 408
 	
409
-		return $post_states;
410
-
411
-	}
412
-
413
-	/**
414
-	 * Returns an array of coupon table columns.
415
-	 */
416
-	public static function discount_columns( $columns ) {
417
-
418
-		$columns = array(
419
-			'cb'                => $columns['cb'],
420
-			'title'             => __( 'Name', 'invoicing' ),
421
-			'code'              => __( 'Code', 'invoicing' ),
422
-			'amount'            => __( 'Amount', 'invoicing' ),
423
-			'usage'             => __( 'Usage / Limit', 'invoicing' ),
424
-			'start_date'        => __( 'Start Date', 'invoicing' ),
425
-			'expiry_date'       => __( 'Expiry Date', 'invoicing' ),
426
-		);
427
-
428
-		return apply_filters( 'wpi_discount_table_columns', $columns );
429
-	}
430
-
431
-	/**
432
-	 * Filters post states.
433
-	 */
434
-	public static function filter_discount_state( $post_states, $post ) {
435
-
436
-		if ( 'wpi_discount' == $post->post_type ) {
437
-
438
-			$discount = new WPInv_Discount( $post );
439
-
440
-			$status = $discount->is_expired() ? 'expired' : $discount->get_status();
441
-
442
-			if ( $status != 'publish' ) {
443
-				return array(
444
-					'discount_status' => wpinv_discount_status( $status ),
445
-				);
446
-			}
447
-
448
-			return array();
449
-
450
-		}
451
-
452
-		return $post_states;
453
-
454
-	}
455
-
456
-	/**
457
-	 * Returns an array of items table columns.
458
-	 */
459
-	public static function item_columns( $columns ) {
460
-
461
-		$columns = array(
462
-			'cb'                => $columns['cb'],
463
-			'title'             => __( 'Name', 'invoicing' ),
464
-			'price'             => __( 'Price', 'invoicing' ),
465
-			'vat_rule'          => __( 'VAT rule', 'invoicing' ),
466
-			'vat_class'         => __( 'VAT class', 'invoicing' ),
467
-			'type'              => __( 'Type', 'invoicing' ),
468
-			'shortcode'         => __( 'Shortcode', 'invoicing' ),
469
-		);
470
-
471
-		if ( ! wpinv_use_taxes() ) {
472
-			unset( $columns['vat_rule'] );
473
-			unset( $columns['vat_class'] );
474
-		}
475
-
476
-		return apply_filters( 'wpi_item_table_columns', $columns );
477
-	}
478
-
479
-	/**
480
-	 * Returns an array of sortable items table columns.
481
-	 */
482
-	public static function sortable_item_columns( $columns ) {
483
-
484
-		return array_merge(
485
-			$columns,
486
-			array(
487
-				'price'     => 'price',
488
-				'vat_rule'  => 'vat_rule',
489
-				'vat_class' => 'vat_class',
490
-				'type'      => 'type',
491
-			)
492
-		);
493
-
494
-	}
495
-
496
-	/**
497
-	 * Displays items table columns.
498
-	 */
499
-	public static function display_item_columns( $column_name, $post_id ) {
409
+        return $post_states;
410
+
411
+    }
412
+
413
+    /**
414
+     * Returns an array of coupon table columns.
415
+     */
416
+    public static function discount_columns( $columns ) {
417
+
418
+        $columns = array(
419
+            'cb'                => $columns['cb'],
420
+            'title'             => __( 'Name', 'invoicing' ),
421
+            'code'              => __( 'Code', 'invoicing' ),
422
+            'amount'            => __( 'Amount', 'invoicing' ),
423
+            'usage'             => __( 'Usage / Limit', 'invoicing' ),
424
+            'start_date'        => __( 'Start Date', 'invoicing' ),
425
+            'expiry_date'       => __( 'Expiry Date', 'invoicing' ),
426
+        );
427
+
428
+        return apply_filters( 'wpi_discount_table_columns', $columns );
429
+    }
430
+
431
+    /**
432
+     * Filters post states.
433
+     */
434
+    public static function filter_discount_state( $post_states, $post ) {
435
+
436
+        if ( 'wpi_discount' == $post->post_type ) {
437
+
438
+            $discount = new WPInv_Discount( $post );
439
+
440
+            $status = $discount->is_expired() ? 'expired' : $discount->get_status();
441
+
442
+            if ( $status != 'publish' ) {
443
+                return array(
444
+                    'discount_status' => wpinv_discount_status( $status ),
445
+                );
446
+            }
447
+
448
+            return array();
449
+
450
+        }
451
+
452
+        return $post_states;
453
+
454
+    }
455
+
456
+    /**
457
+     * Returns an array of items table columns.
458
+     */
459
+    public static function item_columns( $columns ) {
460
+
461
+        $columns = array(
462
+            'cb'                => $columns['cb'],
463
+            'title'             => __( 'Name', 'invoicing' ),
464
+            'price'             => __( 'Price', 'invoicing' ),
465
+            'vat_rule'          => __( 'VAT rule', 'invoicing' ),
466
+            'vat_class'         => __( 'VAT class', 'invoicing' ),
467
+            'type'              => __( 'Type', 'invoicing' ),
468
+            'shortcode'         => __( 'Shortcode', 'invoicing' ),
469
+        );
470
+
471
+        if ( ! wpinv_use_taxes() ) {
472
+            unset( $columns['vat_rule'] );
473
+            unset( $columns['vat_class'] );
474
+        }
475
+
476
+        return apply_filters( 'wpi_item_table_columns', $columns );
477
+    }
478
+
479
+    /**
480
+     * Returns an array of sortable items table columns.
481
+     */
482
+    public static function sortable_item_columns( $columns ) {
483
+
484
+        return array_merge(
485
+            $columns,
486
+            array(
487
+                'price'     => 'price',
488
+                'vat_rule'  => 'vat_rule',
489
+                'vat_class' => 'vat_class',
490
+                'type'      => 'type',
491
+            )
492
+        );
493
+
494
+    }
495
+
496
+    /**
497
+     * Displays items table columns.
498
+     */
499
+    public static function display_item_columns( $column_name, $post_id ) {
500 500
  
501
-		$item = new WPInv_Item( $post_id );
501
+        $item = new WPInv_Item( $post_id );
502 502
 
503
-		switch ( $column_name ) {
503
+        switch ( $column_name ) {
504 504
 
505
-			case 'price' :
505
+            case 'price' :
506 506
 
507
-				if ( ! $item->is_recurring() ) {
508
-					echo $item->get_the_price();
509
-					break;
510
-				}
507
+                if ( ! $item->is_recurring() ) {
508
+                    echo $item->get_the_price();
509
+                    break;
510
+                }
511 511
 
512
-				$price = wp_sprintf(
513
-					__( '%s / %s', 'invoicing' ),
514
-					$item->get_the_price(),
515
-					getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
516
-				);
512
+                $price = wp_sprintf(
513
+                    __( '%s / %s', 'invoicing' ),
514
+                    $item->get_the_price(),
515
+                    getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
516
+                );
517 517
 
518
-				if ( $item->get_the_price() == $item->get_the_initial_price() ) {
519
-					echo $price;
520
-					break;
521
-				}
518
+                if ( $item->get_the_price() == $item->get_the_initial_price() ) {
519
+                    echo $price;
520
+                    break;
521
+                }
522 522
 
523
-				echo $item->get_the_initial_price();
523
+                echo $item->get_the_initial_price();
524 524
 
525
-				echo '<span class="meta">' . wp_sprintf( __( 'then %s', 'invoicing' ), $price )  .'</span>';
526
-				break;
525
+                echo '<span class="meta">' . wp_sprintf( __( 'then %s', 'invoicing' ), $price )  .'</span>';
526
+                break;
527 527
 
528
-			case 'vat_rule' :
529
-				echo getpaid_get_tax_rule_label( $item->get_vat_rule() );
530
-				break;
528
+            case 'vat_rule' :
529
+                echo getpaid_get_tax_rule_label( $item->get_vat_rule() );
530
+                break;
531 531
 
532
-			case 'vat_class' :
533
-				echo getpaid_get_tax_class_label( $item->get_vat_class() );
534
-				break;
532
+            case 'vat_class' :
533
+                echo getpaid_get_tax_class_label( $item->get_vat_class() );
534
+                break;
535 535
 
536
-			case 'shortcode' :
537
-				echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
538
-				break;
536
+            case 'shortcode' :
537
+                echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
538
+                break;
539 539
 
540
-			case 'type' :
541
-				echo wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>';
542
-				break;
540
+            case 'type' :
541
+                echo wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>';
542
+                break;
543 543
 
544
-		}
544
+        }
545 545
 
546
-	}
546
+    }
547 547
 
548
-	/**
549
-	 * Lets users filter items using taxes.
550
-	 */
551
-	public static function add_item_filters( $post_type ) {
548
+    /**
549
+     * Lets users filter items using taxes.
550
+     */
551
+    public static function add_item_filters( $post_type ) {
552 552
 
553
-		// Abort if we're not dealing with items.
554
-		if ( $post_type != 'wpi_item' ) {
555
-			return;
556
-		}
553
+        // Abort if we're not dealing with items.
554
+        if ( $post_type != 'wpi_item' ) {
555
+            return;
556
+        }
557 557
 
558
-		// Filter by vat rules.
559
-		if ( wpinv_use_taxes() ) {
558
+        // Filter by vat rules.
559
+        if ( wpinv_use_taxes() ) {
560 560
 	
561
-			// Sanitize selected vat rule.
562
-			$vat_rule   = '';
563
-			$vat_rules  = getpaid_get_tax_rules();
564
-			if ( isset( $_GET['vat_rule'] ) ) {
565
-				$vat_rule   =  $_GET['vat_rule'];
566
-			}
567
-
568
-			// Filter by VAT rule.
569
-			echo wpinv_html_select(
570
-				array(
571
-					'options'          => array_merge(
572
-						array(
573
-							'' => __( 'All VAT rules', 'invoicing' )
574
-						),
575
-						$vat_rules
576
-					),
577
-					'name'             => 'vat_rule',
578
-					'id'               => 'vat_rule',
579
-					'selected'         => in_array( $vat_rule, array_keys( $vat_rules ) ) ? $vat_rule : '',
580
-					'show_option_all'  => false,
581
-					'show_option_none' => false,
582
-				)
583
-			);
584
-
585
-			// Filter by VAT class.
561
+            // Sanitize selected vat rule.
562
+            $vat_rule   = '';
563
+            $vat_rules  = getpaid_get_tax_rules();
564
+            if ( isset( $_GET['vat_rule'] ) ) {
565
+                $vat_rule   =  $_GET['vat_rule'];
566
+            }
567
+
568
+            // Filter by VAT rule.
569
+            echo wpinv_html_select(
570
+                array(
571
+                    'options'          => array_merge(
572
+                        array(
573
+                            '' => __( 'All VAT rules', 'invoicing' )
574
+                        ),
575
+                        $vat_rules
576
+                    ),
577
+                    'name'             => 'vat_rule',
578
+                    'id'               => 'vat_rule',
579
+                    'selected'         => in_array( $vat_rule, array_keys( $vat_rules ) ) ? $vat_rule : '',
580
+                    'show_option_all'  => false,
581
+                    'show_option_none' => false,
582
+                )
583
+            );
584
+
585
+            // Filter by VAT class.
586 586
 	
587
-			// Sanitize selected vat rule.
588
-			$vat_class   = '';
589
-			$vat_classes = getpaid_get_tax_classes();
590
-			if ( isset( $_GET['vat_class'] ) ) {
591
-				$vat_class   =  $_GET['vat_class'];
592
-			}
593
-
594
-			echo wpinv_html_select(
595
-				array(
596
-					'options'          => array_merge(
597
-						array(
598
-							'' => __( 'All VAT classes', 'invoicing' )
599
-						),
600
-						$vat_classes
601
-					),
602
-					'name'             => 'vat_class',
603
-					'id'               => 'vat_class',
604
-					'selected'         => in_array( $vat_class, array_keys( $vat_classes ) ) ? $vat_class : '',
605
-					'show_option_all'  => false,
606
-					'show_option_none' => false,
607
-				)
608
-			);
609
-
610
-		}
611
-
612
-		// Filter by item type.
613
-		$type   = '';
614
-		if ( isset( $_GET['type'] ) ) {
615
-			$type   =  $_GET['type'];
616
-		}
617
-
618
-		echo wpinv_html_select(
619
-			array(
620
-				'options'          => array_merge(
621
-					array(
622
-						'' => __( 'All item types', 'invoicing' )
623
-					),
624
-					wpinv_get_item_types()
625
-				),
626
-				'name'             => 'type',
627
-				'id'               => 'type',
628
-				'selected'         => in_array( $type, wpinv_item_types() ) ? $type : '',
629
-				'show_option_all'  => false,
630
-				'show_option_none' => false,
631
-			)
632
-		);
633
-
634
-	}
635
-
636
-	/**
637
-	 * Filters the item query.
638
-	 */
639
-	public static function filter_item_query( $query ) {
640
-
641
-		// modify the query only if it admin and main query.
642
-		if ( ! ( is_admin() && $query->is_main_query() ) ){ 
643
-			return $query;
644
-		}
645
-
646
-		// we want to modify the query for our items.
647
-		if ( empty( $query->query['post_type'] ) || 'wpi_item' != $query->query['post_type'] ){
648
-			return $query;
649
-		}
650
-
651
-		if ( empty( $query->query_vars['meta_query'] ) ) {
652
-			$query->query_vars['meta_query'] = array();
653
-		}
654
-
655
-		// Filter vat rule type
587
+            // Sanitize selected vat rule.
588
+            $vat_class   = '';
589
+            $vat_classes = getpaid_get_tax_classes();
590
+            if ( isset( $_GET['vat_class'] ) ) {
591
+                $vat_class   =  $_GET['vat_class'];
592
+            }
593
+
594
+            echo wpinv_html_select(
595
+                array(
596
+                    'options'          => array_merge(
597
+                        array(
598
+                            '' => __( 'All VAT classes', 'invoicing' )
599
+                        ),
600
+                        $vat_classes
601
+                    ),
602
+                    'name'             => 'vat_class',
603
+                    'id'               => 'vat_class',
604
+                    'selected'         => in_array( $vat_class, array_keys( $vat_classes ) ) ? $vat_class : '',
605
+                    'show_option_all'  => false,
606
+                    'show_option_none' => false,
607
+                )
608
+            );
609
+
610
+        }
611
+
612
+        // Filter by item type.
613
+        $type   = '';
614
+        if ( isset( $_GET['type'] ) ) {
615
+            $type   =  $_GET['type'];
616
+        }
617
+
618
+        echo wpinv_html_select(
619
+            array(
620
+                'options'          => array_merge(
621
+                    array(
622
+                        '' => __( 'All item types', 'invoicing' )
623
+                    ),
624
+                    wpinv_get_item_types()
625
+                ),
626
+                'name'             => 'type',
627
+                'id'               => 'type',
628
+                'selected'         => in_array( $type, wpinv_item_types() ) ? $type : '',
629
+                'show_option_all'  => false,
630
+                'show_option_none' => false,
631
+            )
632
+        );
633
+
634
+    }
635
+
636
+    /**
637
+     * Filters the item query.
638
+     */
639
+    public static function filter_item_query( $query ) {
640
+
641
+        // modify the query only if it admin and main query.
642
+        if ( ! ( is_admin() && $query->is_main_query() ) ){ 
643
+            return $query;
644
+        }
645
+
646
+        // we want to modify the query for our items.
647
+        if ( empty( $query->query['post_type'] ) || 'wpi_item' != $query->query['post_type'] ){
648
+            return $query;
649
+        }
650
+
651
+        if ( empty( $query->query_vars['meta_query'] ) ) {
652
+            $query->query_vars['meta_query'] = array();
653
+        }
654
+
655
+        // Filter vat rule type
656 656
         if ( ! empty( $_GET['vat_rule'] ) ) {
657 657
             $query->query_vars['meta_query'][] = array(
658 658
                 'key'     => '_wpinv_vat_rule',
@@ -677,94 +677,94 @@  discard block
 block discarded – undo
677 677
                 'value'   => sanitize_text_field( $_GET['type'] ),
678 678
                 'compare' => '='
679 679
             );
680
-		}
681
-
682
-	}
683
-
684
-	/**
685
-	 * Reorders items.
686
-	 */
687
-	public static function reorder_items( $vars ) {
688
-		global $typenow;
689
-
690
-		if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
691
-			return $vars;
692
-		}
693
-
694
-		// By item type.
695
-		if ( 'type' == $vars['orderby'] ) {
696
-			return array_merge(
697
-				$vars,
698
-				array(
699
-					'meta_key' => '_wpinv_type',
700
-					'orderby'  => 'meta_value'
701
-				)
702
-			);
703
-		}
704
-
705
-		// By vat class.
706
-		if ( 'vat_class' == $vars['orderby'] ) {
707
-			return array_merge(
708
-				$vars,
709
-				array(
710
-					'meta_key' => '_wpinv_vat_class',
711
-					'orderby'  => 'meta_value'
712
-				)
713
-			);
714
-		}
715
-
716
-		// By vat rule.
717
-		if ( 'vat_rule' == $vars['orderby'] ) {
718
-			return array_merge(
719
-				$vars,
720
-				array(
721
-					'meta_key' => '_wpinv_vat_rule',
722
-					'orderby'  => 'meta_value'
723
-				)
724
-			);
725
-		}
726
-
727
-		// By price.
728
-		if ( 'price' == $vars['orderby'] ) {
729
-			return array_merge(
730
-				$vars,
731
-				array(
732
-					'meta_key' => '_wpinv_price',
733
-					'orderby'  => 'meta_value_num'
734
-				)
735
-			);
736
-		}
737
-
738
-		return $vars;
739
-
740
-	}
741
-
742
-	/**
743
-	 * Fired when deleting a post.
744
-	 */
745
-	public static function delete_post( $post_id ) {
746
-
747
-		switch ( get_post_type( $post_id ) ) {
748
-
749
-			case 'wpi_item' :
750
-				do_action( "getpaid_before_delete_item", new WPInv_Item( $post_id ) );
751
-				break;
752
-
753
-			case 'wpi_payment_form' :
754
-				do_action( "getpaid_before_delete_payment_form", new GetPaid_Payment_Form( $post_id ) );
755
-				break;
756
-
757
-			case 'wpi_discount' :
758
-				do_action( "getpaid_before_delete_discount", new WPInv_Discount( $post_id ) );
759
-				break;
760
-
761
-			case 'wpi_invoice' :
762
-				$invoice = new WPInv_Invoice( $post_id );
763
-				do_action( "getpaid_before_delete_invoice", $invoice );
764
-				$invoice->get_data_store()->delete_items( $invoice );
765
-				$invoice->get_data_store()->delete_special_fields( $invoice );
766
-				break;
767
-		}
768
-	}
680
+        }
681
+
682
+    }
683
+
684
+    /**
685
+     * Reorders items.
686
+     */
687
+    public static function reorder_items( $vars ) {
688
+        global $typenow;
689
+
690
+        if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
691
+            return $vars;
692
+        }
693
+
694
+        // By item type.
695
+        if ( 'type' == $vars['orderby'] ) {
696
+            return array_merge(
697
+                $vars,
698
+                array(
699
+                    'meta_key' => '_wpinv_type',
700
+                    'orderby'  => 'meta_value'
701
+                )
702
+            );
703
+        }
704
+
705
+        // By vat class.
706
+        if ( 'vat_class' == $vars['orderby'] ) {
707
+            return array_merge(
708
+                $vars,
709
+                array(
710
+                    'meta_key' => '_wpinv_vat_class',
711
+                    'orderby'  => 'meta_value'
712
+                )
713
+            );
714
+        }
715
+
716
+        // By vat rule.
717
+        if ( 'vat_rule' == $vars['orderby'] ) {
718
+            return array_merge(
719
+                $vars,
720
+                array(
721
+                    'meta_key' => '_wpinv_vat_rule',
722
+                    'orderby'  => 'meta_value'
723
+                )
724
+            );
725
+        }
726
+
727
+        // By price.
728
+        if ( 'price' == $vars['orderby'] ) {
729
+            return array_merge(
730
+                $vars,
731
+                array(
732
+                    'meta_key' => '_wpinv_price',
733
+                    'orderby'  => 'meta_value_num'
734
+                )
735
+            );
736
+        }
737
+
738
+        return $vars;
739
+
740
+    }
741
+
742
+    /**
743
+     * Fired when deleting a post.
744
+     */
745
+    public static function delete_post( $post_id ) {
746
+
747
+        switch ( get_post_type( $post_id ) ) {
748
+
749
+            case 'wpi_item' :
750
+                do_action( "getpaid_before_delete_item", new WPInv_Item( $post_id ) );
751
+                break;
752
+
753
+            case 'wpi_payment_form' :
754
+                do_action( "getpaid_before_delete_payment_form", new GetPaid_Payment_Form( $post_id ) );
755
+                break;
756
+
757
+            case 'wpi_discount' :
758
+                do_action( "getpaid_before_delete_discount", new WPInv_Discount( $post_id ) );
759
+                break;
760
+
761
+            case 'wpi_invoice' :
762
+                $invoice = new WPInv_Invoice( $post_id );
763
+                do_action( "getpaid_before_delete_invoice", $invoice );
764
+                $invoice->get_data_store()->delete_items( $invoice );
765
+                $invoice->get_data_store()->delete_special_fields( $invoice );
766
+                break;
767
+        }
768
+    }
769 769
 
770 770
 }
Please login to merge, or discard this patch.
includes/data/eu-states.php 1 patch
Indentation   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -9,31 +9,31 @@
 block discarded – undo
9 9
 defined( 'ABSPATH' ) || exit;
10 10
 
11 11
 return array(
12
-	'AT',
13
-	'BE',
14
-	'BG',
15
-	'HR',
16
-	'CY',
17
-	'CZ',
18
-	'DK',
19
-	'EE',
20
-	'FI',
21
-	'FR',
22
-	'DE',
23
-	'GR',
24
-	'HU',
25
-	'IE',
26
-	'IT',
27
-	'LV',
28
-	'LT',
29
-	'LU',
30
-	'MT',
31
-	'NL',
32
-	'PL',
33
-	'PT',
34
-	'RO',
35
-	'SK',
36
-	'SI',
37
-	'ES',
38
-	'SE'
12
+    'AT',
13
+    'BE',
14
+    'BG',
15
+    'HR',
16
+    'CY',
17
+    'CZ',
18
+    'DK',
19
+    'EE',
20
+    'FI',
21
+    'FR',
22
+    'DE',
23
+    'GR',
24
+    'HU',
25
+    'IE',
26
+    'IT',
27
+    'LV',
28
+    'LT',
29
+    'LU',
30
+    'MT',
31
+    'NL',
32
+    'PL',
33
+    'PT',
34
+    'RO',
35
+    'SK',
36
+    'SI',
37
+    'ES',
38
+    'SE'
39 39
 );
Please login to merge, or discard this patch.
includes/user-functions.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -34,11 +34,11 @@  discard block
 block discarded – undo
34 34
  */
35 35
 function wpinv_get_capability( $capalibilty = 'manage_invoicing' ) {
36 36
 
37
-	if ( current_user_can( 'manage_options' ) ) {
38
-		return 'manage_options';
39
-	};
37
+    if ( current_user_can( 'manage_options' ) ) {
38
+        return 'manage_options';
39
+    };
40 40
 
41
-	return $capalibilty;
41
+    return $capalibilty;
42 42
 }
43 43
 
44 44
 /**
@@ -62,10 +62,10 @@  discard block
 block discarded – undo
62 62
     // Prepare user values.
63 63
     $prefix = preg_replace( '/\s+/', '', $prefix );
64 64
     $prefix = empty( $prefix ) ? $email : $prefix;
65
-	$args   = array(
66
-		'user_login' => wpinv_generate_user_name( $prefix ),
67
-		'user_pass'  => wp_generate_password(),
68
-		'user_email' => $email,
65
+    $args   = array(
66
+        'user_login' => wpinv_generate_user_name( $prefix ),
67
+        'user_pass'  => wp_generate_password(),
68
+        'user_email' => $email,
69 69
         'role'       => 'subscriber',
70 70
     );
71 71
 
@@ -82,16 +82,16 @@  discard block
 block discarded – undo
82 82
 function wpinv_generate_user_name( $prefix = '' ) {
83 83
 
84 84
     // If prefix is an email, retrieve the part before the email.
85
-	$prefix = strtok( $prefix, '@' );
85
+    $prefix = strtok( $prefix, '@' );
86 86
     $prefix = trim( $prefix, '.' );
87 87
 
88
-	// Sanitize the username.
89
-	$prefix = sanitize_user( $prefix, true );
88
+    // Sanitize the username.
89
+    $prefix = sanitize_user( $prefix, true );
90 90
 
91
-	$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
92
-	if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) {
93
-		$prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 );
94
-	}
91
+    $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
92
+    if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) {
93
+        $prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 );
94
+    }
95 95
 
96 96
     $username = $prefix;
97 97
     $postfix  = 2;
Please login to merge, or discard this patch.
includes/admin/class-wpinv-customers-table.php 1 patch
Indentation   +351 added lines, -351 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
 
10 10
 // Load WP_List_Table if not loaded
11 11
 if ( ! class_exists( 'WP_List_Table' ) ) {
12
-	require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
12
+    require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
13 13
 }
14 14
 
15 15
 /**
@@ -21,354 +21,354 @@  discard block
 block discarded – undo
21 21
  */
22 22
 class WPInv_Customers_Table extends WP_List_Table {
23 23
 
24
-	/**
25
-	 * @var int Number of items per page
26
-	 * @since 1.0.19
27
-	 */
28
-	public $per_page = 10;
29
-
30
-	/**
31
-	 * @var int Number of items
32
-	 * @since 1.0.19
33
-	 */
34
-	public $total = 0;
35
-
36
-	/**
37
-	 * Get things started
38
-	 *
39
-	 * @since 1.0.19
40
-	 * @see WP_List_Table::__construct()
41
-	 */
42
-	public function __construct() {
43
-
44
-		// Set parent defaults
45
-		parent::__construct( array(
46
-			'singular' => 'id',
47
-			'plural'   => 'ids',
48
-			'ajax'     => false,
49
-		) );
50
-
51
-	}
52
-
53
-	/**
54
-	 * Gets the name of the primary column.
55
-	 *
56
-	 * @since 1.0.19
57
-	 * @access protected
58
-	 *
59
-	 * @return string Name of the primary column.
60
-	 */
61
-	protected function get_primary_column_name() {
62
-		return 'name';
63
-	}
64
-
65
-	/**
66
-	 * This function renders most of the columns in the list table.
67
-	 *
68
-	 * @since 1.0.19
69
-	 *
70
-	 * @param WP_User $item
71
-	 * @param string $column_name The name of the column
72
-	 *
73
-	 * @return string Column Name
74
-	 */
75
-	public function column_default( $item, $column_name ) {
76
-		$value = sanitize_text_field( get_user_meta( $item->ID, '_wpinv_' . $column_name, true ) );
77
-		return apply_filters( 'wpinv_customers_table_column' . $column_name, $value, $item );
78
-	}
79
-
80
-	/**
81
-	 * Displays the country column.
82
-	 *
83
-	 * @since 1.0.19
84
-	 *
85
-	 * @param WP_User $user
86
-	 *
87
-	 * @return string Column Name
88
-	 */
89
-	public function column_country( $user ) {
90
-		$country = wpinv_sanitize_country( $user->_wpinv_country );
91
-		if ( $country ) {
92
-			$country = wpinv_country_name( $country );
93
-		}
94
-		return sanitize_text_field( $country );
95
-	}
96
-
97
-	/**
98
-	 * Displays the state column.
99
-	 *
100
-	 * @since 1.0.19
101
-	 *
102
-	 * @param WP_User $user
103
-	 *
104
-	 * @return string Column Name
105
-	 */
106
-	public function column_state( $user ) {
107
-		$country = wpinv_sanitize_country( $user->_wpinv_country );
108
-		$state   = $user->_wpinv_state;
109
-		if ( $state ) {
110
-			$state = wpinv_state_name( $state, $country );
111
-		}
112
-
113
-		return sanitize_text_field( $state );
114
-	}
115
-
116
-	/**
117
-	 * Displays the signup column.
118
-	 *
119
-	 * @since 1.0.19
120
-	 *
121
-	 * @param WP_User $user
122
-	 *
123
-	 * @return string Column Name
124
-	 */
125
-	public function column_signup( $user ) {
126
-		return getpaid_format_date_value( $user->user_registered );
127
-	}
128
-
129
-	/**
130
-	 * Displays the total spent column.
131
-	 *
132
-	 * @since 1.0.19
133
-	 *
134
-	 * @param WP_User $user
135
-	 *
136
-	 * @return string Column Name
137
-	 */
138
-	public function column_total( $user ) {
139
-
140
-		$args = array(
141
-			'data'             => array(
142
-
143
-				'total'        => array(
144
-					'type'     => 'invoice_data',
145
-					'function' => 'SUM',
146
-					'name'     => 'total_sales',
147
-				)
148
-
149
-			),
150
-			'where'            => array(
151
-
152
-				'author'       => array(
153
-					'type'     => 'post_data',
154
-					'value'    => absint( $user->ID ),
155
-					'key'      => 'posts.post_author',
156
-					'operator' => '=',
157
-				),
158
-
159
-			),
160
-			'query_type'     => 'get_var',
161
-			'invoice_status' => array( 'wpi-renewal', 'wpi-processing', 'publish' ),
162
-		);
163
-
164
-		return wpinv_price( (float) GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
165
-
166
-	}
167
-
168
-	/**
169
-	 * Displays the total spent column.
170
-	 *
171
-	 * @since 1.0.19
172
-	 *
173
-	 * @param WP_User $user
174
-	 *
175
-	 * @return string Column Name
176
-	 */
177
-	public function column_invoices( $user ) {
178
-
179
-		$args = array(
180
-			'data'             => array(
181
-
182
-				'ID'           => array(
183
-					'type'     => 'post_data',
184
-					'function' => 'COUNT',
185
-					'name'     => 'count',
186
-					'distinct' => true,
187
-				),
188
-
189
-			),
190
-			'where'            => array(
191
-
192
-				'author'       => array(
193
-					'type'     => 'post_data',
194
-					'value'    => absint( $user->ID ),
195
-					'key'      => 'posts.post_author',
196
-					'operator' => '=',
197
-				),
198
-
199
-			),
200
-			'query_type'     => 'get_var',
201
-			'invoice_status' => array_keys( wpinv_get_invoice_statuses() ),
202
-		);
203
-
204
-		return absint( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
205
-
206
-	}
207
-
208
-	/**
209
-	 * Generates content for a single row of the table
210
-	 * @since 1.0.19
211
-	 *
212
-	 * @param int $item The user id.
213
-	 */
214
-	public function single_row( $item ) {
215
-		$item = get_user_by( 'id', $item );
216
-
217
-		if ( empty( $item ) ) {
218
-			return;
219
-		}
220
-
221
-		echo '<tr>';
222
-		$this->single_row_columns( $item );
223
-		echo '</tr>';
224
-	}
225
-
226
-	/**
227
-	 * Displays the customers name
228
-	 *
229
-	 * @param  WP_User $customer customer.
230
-	 * @return string
231
-	 */
232
-	public function column_name( $customer ) {
233
-
234
-		// Customer view URL.
235
-		$view_url    = esc_url( add_query_arg( 'user_id', $customer->ID, admin_url( 'user-edit.php' ) ) );
236
-		$row_actions = $this->row_actions(
237
-			array(
238
-				'view' => '<a href="' . $view_url . '#getpaid-fieldset-billing">' . __( 'Edit Details', 'invoicing' ) . '</a>',
239
-			)
240
-		);
241
-
242
-		// Get user's address.
243
-		$address = wpinv_get_user_address( $customer->ID );
244
-
245
-		// Customer email address.
246
-		$email       = sanitize_email( $customer->user_email );
247
-
248
-		// Customer's avatar.
249
-		$avatar = esc_url( get_avatar_url( $email ) );
250
-		$avatar = "<img src='$avatar' height='32' width='32'/>";
251
-
252
-		// Customer's name.
253
-		$name   = sanitize_text_field( "{$address['first_name']} {$address['last_name']}" );
254
-
255
-		if ( ! empty( $name ) ) {
256
-			$name = "<div style='overflow: hidden;height: 18px;'>$name</div>";
257
-		}
258
-
259
-		$email = "<div class='row-title'><a href='$view_url'>$email</a></div>";
260
-
261
-		return "<div style='display: flex;'><div>$avatar</div><div style='margin-left: 10px;'>$name<strong>$email</strong>$row_actions</div></div>";
262
-
263
-	}
264
-
265
-	/**
266
-	 * Retrieve the table columns
267
-	 *
268
-	 * @since 1.0.19
269
-	 * @return array $columns Array of all the list table columns
270
-	 */
271
-	public function get_columns() {
272
-
273
-		$columns = array(
274
-			'name'     => __( 'Name', 'invoicing' ),
275
-			'country'  => __( 'Country', 'invoicing' ),
276
-			'state'    => __( 'State', 'invoicing' ),
277
-			'city'     => __( 'City', 'invoicing' ),
278
-			'zip'      => __( 'ZIP', 'invoicing' ),
279
-			'address'  => __( 'Address', 'invoicing' ),
280
-			'phone'    => __( 'Phone', 'invoicing' ),
281
-			'company'  => __( 'Company', 'invoicing' ),
282
-			'invoices' => __( 'Invoices', 'invoicing' ),
283
-			'total'    => __( 'Total Spend', 'invoicing' ),
284
-			'signup'   => __( 'Date created', 'invoicing' ),
285
-		);
286
-		return apply_filters( 'wpinv_customers_table_columns', $columns );
287
-
288
-	}
289
-
290
-	/**
291
-	 * Retrieve the current page number
292
-	 *
293
-	 * @since 1.0.19
294
-	 * @return int Current page number
295
-	 */
296
-	public function get_paged() {
297
-		return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
298
-	}
299
-
300
-	/**
301
-	 * Returns bulk actions.
302
-	 *
303
-	 * @since 1.0.19
304
-	 * @return void
305
-	 */
306
-	public function bulk_actions( $which = '' ) {
307
-		return array();
308
-	}
309
-
310
-	/**
311
-	 *  Prepares the display query
312
-	 */
313
-	public function prepare_query() {
314
-		global $wpdb;
315
-
316
-		$post_types = '';
317
-
318
-		foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) {
319
-			$post_types .= $wpdb->prepare( "post_type=%s OR ", $post_type );
320
-		}
321
-
322
-		$post_types = rtrim( $post_types, ' OR' );
323
-
324
-		// Maybe search.
325
-		if ( ! empty( $_POST['s'] ) ) {
326
-			$users = get_users(
327
-				array(
328
-					'search'         => sanitize_text_field( urldecode( $_POST['s'] ) ),
329
-					'search_columns' => array( 'user_login', 'user_email', 'display_name' ),
330
-					'fields'         => 'ID',
331
-				)
332
-			);
333
-
334
-			$users      = implode( ', ', $users );
335
-			$post_types = "($post_types) AND ( post_author IN ( $users ) )";
336
-		}
337
-
338
-		// Users with invoices.
339
-    	$customers = $wpdb->get_col(
340
-			$wpdb->prepare(
341
-				"SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types LIMIT %d,%d",
342
-				$this->get_paged() * 10 - 10,
343
-				$this->per_page
344
-			)
345
-		);
346
-
347
-		$this->items = $customers;
348
-		$this->total = (int) $wpdb->get_var( "SELECT COUNT( DISTINCT( post_author ) ) FROM $wpdb->posts WHERE $post_types" );
349
-
350
-	}
351
-
352
-	/**
353
-	 * Setup the final data for the table
354
-	 *
355
-	 * @since 1.0.19
356
-	 * @return void
357
-	 */
358
-	public function prepare_items() {
359
-		$columns               = $this->get_columns();
360
-		$hidden                = array(); // No hidden columns
361
-		$sortable              = $this->get_sortable_columns();
362
-		$this->_column_headers = array( $columns, $hidden, $sortable );
363
-		$this->prepare_query();
364
-
365
-		$this->set_pagination_args(
366
-			array(
367
-			'total_items' => $this->total,
368
-			'per_page'    => $this->per_page,
369
-			'total_pages' => ceil( $this->total / $this->per_page )
370
-			)
371
-		);
372
-
373
-	}
24
+    /**
25
+     * @var int Number of items per page
26
+     * @since 1.0.19
27
+     */
28
+    public $per_page = 10;
29
+
30
+    /**
31
+     * @var int Number of items
32
+     * @since 1.0.19
33
+     */
34
+    public $total = 0;
35
+
36
+    /**
37
+     * Get things started
38
+     *
39
+     * @since 1.0.19
40
+     * @see WP_List_Table::__construct()
41
+     */
42
+    public function __construct() {
43
+
44
+        // Set parent defaults
45
+        parent::__construct( array(
46
+            'singular' => 'id',
47
+            'plural'   => 'ids',
48
+            'ajax'     => false,
49
+        ) );
50
+
51
+    }
52
+
53
+    /**
54
+     * Gets the name of the primary column.
55
+     *
56
+     * @since 1.0.19
57
+     * @access protected
58
+     *
59
+     * @return string Name of the primary column.
60
+     */
61
+    protected function get_primary_column_name() {
62
+        return 'name';
63
+    }
64
+
65
+    /**
66
+     * This function renders most of the columns in the list table.
67
+     *
68
+     * @since 1.0.19
69
+     *
70
+     * @param WP_User $item
71
+     * @param string $column_name The name of the column
72
+     *
73
+     * @return string Column Name
74
+     */
75
+    public function column_default( $item, $column_name ) {
76
+        $value = sanitize_text_field( get_user_meta( $item->ID, '_wpinv_' . $column_name, true ) );
77
+        return apply_filters( 'wpinv_customers_table_column' . $column_name, $value, $item );
78
+    }
79
+
80
+    /**
81
+     * Displays the country column.
82
+     *
83
+     * @since 1.0.19
84
+     *
85
+     * @param WP_User $user
86
+     *
87
+     * @return string Column Name
88
+     */
89
+    public function column_country( $user ) {
90
+        $country = wpinv_sanitize_country( $user->_wpinv_country );
91
+        if ( $country ) {
92
+            $country = wpinv_country_name( $country );
93
+        }
94
+        return sanitize_text_field( $country );
95
+    }
96
+
97
+    /**
98
+     * Displays the state column.
99
+     *
100
+     * @since 1.0.19
101
+     *
102
+     * @param WP_User $user
103
+     *
104
+     * @return string Column Name
105
+     */
106
+    public function column_state( $user ) {
107
+        $country = wpinv_sanitize_country( $user->_wpinv_country );
108
+        $state   = $user->_wpinv_state;
109
+        if ( $state ) {
110
+            $state = wpinv_state_name( $state, $country );
111
+        }
112
+
113
+        return sanitize_text_field( $state );
114
+    }
115
+
116
+    /**
117
+     * Displays the signup column.
118
+     *
119
+     * @since 1.0.19
120
+     *
121
+     * @param WP_User $user
122
+     *
123
+     * @return string Column Name
124
+     */
125
+    public function column_signup( $user ) {
126
+        return getpaid_format_date_value( $user->user_registered );
127
+    }
128
+
129
+    /**
130
+     * Displays the total spent column.
131
+     *
132
+     * @since 1.0.19
133
+     *
134
+     * @param WP_User $user
135
+     *
136
+     * @return string Column Name
137
+     */
138
+    public function column_total( $user ) {
139
+
140
+        $args = array(
141
+            'data'             => array(
142
+
143
+                'total'        => array(
144
+                    'type'     => 'invoice_data',
145
+                    'function' => 'SUM',
146
+                    'name'     => 'total_sales',
147
+                )
148
+
149
+            ),
150
+            'where'            => array(
151
+
152
+                'author'       => array(
153
+                    'type'     => 'post_data',
154
+                    'value'    => absint( $user->ID ),
155
+                    'key'      => 'posts.post_author',
156
+                    'operator' => '=',
157
+                ),
158
+
159
+            ),
160
+            'query_type'     => 'get_var',
161
+            'invoice_status' => array( 'wpi-renewal', 'wpi-processing', 'publish' ),
162
+        );
163
+
164
+        return wpinv_price( (float) GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
165
+
166
+    }
167
+
168
+    /**
169
+     * Displays the total spent column.
170
+     *
171
+     * @since 1.0.19
172
+     *
173
+     * @param WP_User $user
174
+     *
175
+     * @return string Column Name
176
+     */
177
+    public function column_invoices( $user ) {
178
+
179
+        $args = array(
180
+            'data'             => array(
181
+
182
+                'ID'           => array(
183
+                    'type'     => 'post_data',
184
+                    'function' => 'COUNT',
185
+                    'name'     => 'count',
186
+                    'distinct' => true,
187
+                ),
188
+
189
+            ),
190
+            'where'            => array(
191
+
192
+                'author'       => array(
193
+                    'type'     => 'post_data',
194
+                    'value'    => absint( $user->ID ),
195
+                    'key'      => 'posts.post_author',
196
+                    'operator' => '=',
197
+                ),
198
+
199
+            ),
200
+            'query_type'     => 'get_var',
201
+            'invoice_status' => array_keys( wpinv_get_invoice_statuses() ),
202
+        );
203
+
204
+        return absint( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
205
+
206
+    }
207
+
208
+    /**
209
+     * Generates content for a single row of the table
210
+     * @since 1.0.19
211
+     *
212
+     * @param int $item The user id.
213
+     */
214
+    public function single_row( $item ) {
215
+        $item = get_user_by( 'id', $item );
216
+
217
+        if ( empty( $item ) ) {
218
+            return;
219
+        }
220
+
221
+        echo '<tr>';
222
+        $this->single_row_columns( $item );
223
+        echo '</tr>';
224
+    }
225
+
226
+    /**
227
+     * Displays the customers name
228
+     *
229
+     * @param  WP_User $customer customer.
230
+     * @return string
231
+     */
232
+    public function column_name( $customer ) {
233
+
234
+        // Customer view URL.
235
+        $view_url    = esc_url( add_query_arg( 'user_id', $customer->ID, admin_url( 'user-edit.php' ) ) );
236
+        $row_actions = $this->row_actions(
237
+            array(
238
+                'view' => '<a href="' . $view_url . '#getpaid-fieldset-billing">' . __( 'Edit Details', 'invoicing' ) . '</a>',
239
+            )
240
+        );
241
+
242
+        // Get user's address.
243
+        $address = wpinv_get_user_address( $customer->ID );
244
+
245
+        // Customer email address.
246
+        $email       = sanitize_email( $customer->user_email );
247
+
248
+        // Customer's avatar.
249
+        $avatar = esc_url( get_avatar_url( $email ) );
250
+        $avatar = "<img src='$avatar' height='32' width='32'/>";
251
+
252
+        // Customer's name.
253
+        $name   = sanitize_text_field( "{$address['first_name']} {$address['last_name']}" );
254
+
255
+        if ( ! empty( $name ) ) {
256
+            $name = "<div style='overflow: hidden;height: 18px;'>$name</div>";
257
+        }
258
+
259
+        $email = "<div class='row-title'><a href='$view_url'>$email</a></div>";
260
+
261
+        return "<div style='display: flex;'><div>$avatar</div><div style='margin-left: 10px;'>$name<strong>$email</strong>$row_actions</div></div>";
262
+
263
+    }
264
+
265
+    /**
266
+     * Retrieve the table columns
267
+     *
268
+     * @since 1.0.19
269
+     * @return array $columns Array of all the list table columns
270
+     */
271
+    public function get_columns() {
272
+
273
+        $columns = array(
274
+            'name'     => __( 'Name', 'invoicing' ),
275
+            'country'  => __( 'Country', 'invoicing' ),
276
+            'state'    => __( 'State', 'invoicing' ),
277
+            'city'     => __( 'City', 'invoicing' ),
278
+            'zip'      => __( 'ZIP', 'invoicing' ),
279
+            'address'  => __( 'Address', 'invoicing' ),
280
+            'phone'    => __( 'Phone', 'invoicing' ),
281
+            'company'  => __( 'Company', 'invoicing' ),
282
+            'invoices' => __( 'Invoices', 'invoicing' ),
283
+            'total'    => __( 'Total Spend', 'invoicing' ),
284
+            'signup'   => __( 'Date created', 'invoicing' ),
285
+        );
286
+        return apply_filters( 'wpinv_customers_table_columns', $columns );
287
+
288
+    }
289
+
290
+    /**
291
+     * Retrieve the current page number
292
+     *
293
+     * @since 1.0.19
294
+     * @return int Current page number
295
+     */
296
+    public function get_paged() {
297
+        return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
298
+    }
299
+
300
+    /**
301
+     * Returns bulk actions.
302
+     *
303
+     * @since 1.0.19
304
+     * @return void
305
+     */
306
+    public function bulk_actions( $which = '' ) {
307
+        return array();
308
+    }
309
+
310
+    /**
311
+     *  Prepares the display query
312
+     */
313
+    public function prepare_query() {
314
+        global $wpdb;
315
+
316
+        $post_types = '';
317
+
318
+        foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) {
319
+            $post_types .= $wpdb->prepare( "post_type=%s OR ", $post_type );
320
+        }
321
+
322
+        $post_types = rtrim( $post_types, ' OR' );
323
+
324
+        // Maybe search.
325
+        if ( ! empty( $_POST['s'] ) ) {
326
+            $users = get_users(
327
+                array(
328
+                    'search'         => sanitize_text_field( urldecode( $_POST['s'] ) ),
329
+                    'search_columns' => array( 'user_login', 'user_email', 'display_name' ),
330
+                    'fields'         => 'ID',
331
+                )
332
+            );
333
+
334
+            $users      = implode( ', ', $users );
335
+            $post_types = "($post_types) AND ( post_author IN ( $users ) )";
336
+        }
337
+
338
+        // Users with invoices.
339
+        $customers = $wpdb->get_col(
340
+            $wpdb->prepare(
341
+                "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types LIMIT %d,%d",
342
+                $this->get_paged() * 10 - 10,
343
+                $this->per_page
344
+            )
345
+        );
346
+
347
+        $this->items = $customers;
348
+        $this->total = (int) $wpdb->get_var( "SELECT COUNT( DISTINCT( post_author ) ) FROM $wpdb->posts WHERE $post_types" );
349
+
350
+    }
351
+
352
+    /**
353
+     * Setup the final data for the table
354
+     *
355
+     * @since 1.0.19
356
+     * @return void
357
+     */
358
+    public function prepare_items() {
359
+        $columns               = $this->get_columns();
360
+        $hidden                = array(); // No hidden columns
361
+        $sortable              = $this->get_sortable_columns();
362
+        $this->_column_headers = array( $columns, $hidden, $sortable );
363
+        $this->prepare_query();
364
+
365
+        $this->set_pagination_args(
366
+            array(
367
+            'total_items' => $this->total,
368
+            'per_page'    => $this->per_page,
369
+            'total_pages' => ceil( $this->total / $this->per_page )
370
+            )
371
+        );
372
+
373
+    }
374 374
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission.php 1 patch
Indentation   +777 added lines, -777 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 /**
@@ -10,187 +10,187 @@  discard block
 block discarded – undo
10 10
 class GetPaid_Payment_Form_Submission {
11 11
 
12 12
     /**
13
-	 * Submission ID
14
-	 *
15
-	 * @var string
16
-	 */
17
-	public $id = null;
18
-
19
-	/**
20
-	 * The raw submission data.
21
-	 *
22
-	 * @var array
23
-	 */
24
-	protected $data = null;
25
-
26
-	/**
27
-	 * Submission totals
28
-	 *
29
-	 * @var array
30
-	 */
31
-	protected $totals = array(
32
-
33
-		'subtotal'      => array(
34
-			'initial'   => 0,
35
-			'recurring' => 0,
36
-		),
37
-
38
-		'discount'      => array(
39
-			'initial'   => 0,
40
-			'recurring' => 0,
41
-		),
42
-
43
-		'fees'          => array(
44
-			'initial'   => 0,
45
-			'recurring' => 0,
46
-		),
47
-
48
-		'taxes'         => array(
49
-			'initial'   => 0,
50
-			'recurring' => 0,
51
-		),
52
-
53
-	);
54
-
55
-	/**
56
-	 * Sets the associated payment form.
57
-	 *
58
-	 * @var GetPaid_Payment_Form
59
-	 */
13
+     * Submission ID
14
+     *
15
+     * @var string
16
+     */
17
+    public $id = null;
18
+
19
+    /**
20
+     * The raw submission data.
21
+     *
22
+     * @var array
23
+     */
24
+    protected $data = null;
25
+
26
+    /**
27
+     * Submission totals
28
+     *
29
+     * @var array
30
+     */
31
+    protected $totals = array(
32
+
33
+        'subtotal'      => array(
34
+            'initial'   => 0,
35
+            'recurring' => 0,
36
+        ),
37
+
38
+        'discount'      => array(
39
+            'initial'   => 0,
40
+            'recurring' => 0,
41
+        ),
42
+
43
+        'fees'          => array(
44
+            'initial'   => 0,
45
+            'recurring' => 0,
46
+        ),
47
+
48
+        'taxes'         => array(
49
+            'initial'   => 0,
50
+            'recurring' => 0,
51
+        ),
52
+
53
+    );
54
+
55
+    /**
56
+     * Sets the associated payment form.
57
+     *
58
+     * @var GetPaid_Payment_Form
59
+     */
60 60
     protected $payment_form = null;
61 61
 
62 62
     /**
63
-	 * The country for the submission.
64
-	 *
65
-	 * @var string
66
-	 */
67
-	public $country = null;
68
-
69
-    /**
70
-	 * The state for the submission.
71
-	 *
72
-	 * @since 1.0.19
73
-	 * @var string
74
-	 */
75
-	public $state = null;
76
-
77
-	/**
78
-	 * The invoice associated with the submission.
79
-	 *
80
-	 * @var WPInv_Invoice
81
-	 */
82
-	protected $invoice = null;
83
-
84
-	/**
85
-	 * The recurring item for the submission.
86
-	 *
87
-	 * @var int
88
-	 */
89
-	public $has_recurring = 0;
90
-
91
-	/**
92
-	 * An array of fees for the submission.
93
-	 *
94
-	 * @var array
95
-	 */
96
-	protected $fees = array();
97
-
98
-	/**
99
-	 * An array of discounts for the submission.
100
-	 *
101
-	 * @var array
102
-	 */
103
-	protected $discounts = array();
104
-
105
-	/**
106
-	 * An array of taxes for the submission.
107
-	 *
108
-	 * @var array
109
-	 */
110
-	protected $taxes = array();
111
-
112
-	/**
113
-	 * An array of items for the submission.
114
-	 *
115
-	 * @var GetPaid_Form_Item[]
116
-	 */
117
-	protected $items = array();
118
-
119
-	/**
120
-	 * The last error.
121
-	 *
122
-	 * @var string
123
-	 */
124
-	public $last_error = null;
125
-
126
-    /**
127
-	 * Class constructor.
128
-	 *
129
-	 */
130
-	public function __construct() {
131
-
132
-		// Set the state and country to the default state and country.
133
-		$this->country = wpinv_default_billing_country();
134
-		$this->state   = wpinv_get_default_state();
135
-
136
-		// Do we have an actual submission?
137
-		if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
138
-			$this->load_data( $_POST );
139
-		}
140
-
141
-	}
142
-
143
-	/**
144
-	 * Loads submission data.
145
-	 *
146
-	 * @param array $data
147
-	 */
148
-	public function load_data( $data ) {
149
-
150
-		// Remove slashes from the submitted data...
151
-		$data       = wp_unslash( $data );
152
-
153
-		// Allow plugins to filter the data.
154
-		$data       = apply_filters( 'getpaid_submission_data', $data, $this );
155
-
156
-		// Cache it...
157
-		$this->data = $data;
158
-
159
-		// Then generate a unique id from the data.
160
-		$this->id   = md5( wp_json_encode( $data ) );
161
-
162
-		// Finally, process the submission.
163
-		try {
164
-
165
-			// Each process is passed an instance of the class (with reference)
166
-			// and should throw an Exception whenever it encounters one.
167
-			$processors = apply_filters(
168
-				'getpaid_payment_form_submission_processors',
169
-				array(
170
-					array( $this, 'process_payment_form' ),
171
-					array( $this, 'process_invoice' ),
172
-					array( $this, 'process_fees' ),
173
-					array( $this, 'process_items' ),
174
-					array( $this, 'process_discount' ),
175
-					array( $this, 'process_taxes' ),
176
-				),
177
-				$this		
178
-			);
179
-
180
-			foreach ( $processors as $processor ) {
181
-				call_user_func_array( $processor, array( &$this ) );
182
-			}
183
-
184
-		} catch ( Exception $e ) {
185
-			$this->last_error = $e->getMessage();
186
-		}
187
-
188
-		// Fired when we are done processing a submission.
189
-		do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
190
-
191
-	}
192
-
193
-	/*
63
+     * The country for the submission.
64
+     *
65
+     * @var string
66
+     */
67
+    public $country = null;
68
+
69
+    /**
70
+     * The state for the submission.
71
+     *
72
+     * @since 1.0.19
73
+     * @var string
74
+     */
75
+    public $state = null;
76
+
77
+    /**
78
+     * The invoice associated with the submission.
79
+     *
80
+     * @var WPInv_Invoice
81
+     */
82
+    protected $invoice = null;
83
+
84
+    /**
85
+     * The recurring item for the submission.
86
+     *
87
+     * @var int
88
+     */
89
+    public $has_recurring = 0;
90
+
91
+    /**
92
+     * An array of fees for the submission.
93
+     *
94
+     * @var array
95
+     */
96
+    protected $fees = array();
97
+
98
+    /**
99
+     * An array of discounts for the submission.
100
+     *
101
+     * @var array
102
+     */
103
+    protected $discounts = array();
104
+
105
+    /**
106
+     * An array of taxes for the submission.
107
+     *
108
+     * @var array
109
+     */
110
+    protected $taxes = array();
111
+
112
+    /**
113
+     * An array of items for the submission.
114
+     *
115
+     * @var GetPaid_Form_Item[]
116
+     */
117
+    protected $items = array();
118
+
119
+    /**
120
+     * The last error.
121
+     *
122
+     * @var string
123
+     */
124
+    public $last_error = null;
125
+
126
+    /**
127
+     * Class constructor.
128
+     *
129
+     */
130
+    public function __construct() {
131
+
132
+        // Set the state and country to the default state and country.
133
+        $this->country = wpinv_default_billing_country();
134
+        $this->state   = wpinv_get_default_state();
135
+
136
+        // Do we have an actual submission?
137
+        if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
138
+            $this->load_data( $_POST );
139
+        }
140
+
141
+    }
142
+
143
+    /**
144
+     * Loads submission data.
145
+     *
146
+     * @param array $data
147
+     */
148
+    public function load_data( $data ) {
149
+
150
+        // Remove slashes from the submitted data...
151
+        $data       = wp_unslash( $data );
152
+
153
+        // Allow plugins to filter the data.
154
+        $data       = apply_filters( 'getpaid_submission_data', $data, $this );
155
+
156
+        // Cache it...
157
+        $this->data = $data;
158
+
159
+        // Then generate a unique id from the data.
160
+        $this->id   = md5( wp_json_encode( $data ) );
161
+
162
+        // Finally, process the submission.
163
+        try {
164
+
165
+            // Each process is passed an instance of the class (with reference)
166
+            // and should throw an Exception whenever it encounters one.
167
+            $processors = apply_filters(
168
+                'getpaid_payment_form_submission_processors',
169
+                array(
170
+                    array( $this, 'process_payment_form' ),
171
+                    array( $this, 'process_invoice' ),
172
+                    array( $this, 'process_fees' ),
173
+                    array( $this, 'process_items' ),
174
+                    array( $this, 'process_discount' ),
175
+                    array( $this, 'process_taxes' ),
176
+                ),
177
+                $this		
178
+            );
179
+
180
+            foreach ( $processors as $processor ) {
181
+                call_user_func_array( $processor, array( &$this ) );
182
+            }
183
+
184
+        } catch ( Exception $e ) {
185
+            $this->last_error = $e->getMessage();
186
+        }
187
+
188
+        // Fired when we are done processing a submission.
189
+        do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
190
+
191
+    }
192
+
193
+    /*
194 194
 	|--------------------------------------------------------------------------
195 195
 	| Payment Forms.
196 196
 	|--------------------------------------------------------------------------
@@ -199,39 +199,39 @@  discard block
 block discarded – undo
199 199
 	| submission has an active payment form etc.
200 200
     */
201 201
 
202
-	/**
203
-	 * Prepares the submission's payment form.
204
-	 *
205
-	 * @since 1.0.19
206
-	 */
207
-	public function process_payment_form() {
202
+    /**
203
+     * Prepares the submission's payment form.
204
+     *
205
+     * @since 1.0.19
206
+     */
207
+    public function process_payment_form() {
208 208
 
209
-		// Every submission needs an active payment form.
210
-		if ( empty( $this->data['form_id'] ) ) {
211
-			throw new Exception( __( 'Missing payment form', 'invoicing' ) );
212
-		}
209
+        // Every submission needs an active payment form.
210
+        if ( empty( $this->data['form_id'] ) ) {
211
+            throw new Exception( __( 'Missing payment form', 'invoicing' ) );
212
+        }
213 213
 
214
-		// Fetch the payment form.
215
-		$this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
214
+        // Fetch the payment form.
215
+        $this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
216 216
 
217
-		if ( ! $this->payment_form->is_active() ) {
218
-			throw new Exception( __( 'Payment form not active', 'invoicing' ) );
219
-		}
217
+        if ( ! $this->payment_form->is_active() ) {
218
+            throw new Exception( __( 'Payment form not active', 'invoicing' ) );
219
+        }
220 220
 
221
-		do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
222
-	}
221
+        do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
222
+    }
223 223
 
224 224
     /**
225
-	 * Returns the payment form.
226
-	 *
227
-	 * @since 1.0.19
228
-	 * @return GetPaid_Payment_Form
229
-	 */
230
-	public function get_payment_form() {
231
-		return $this->payment_form;
232
-	}
225
+     * Returns the payment form.
226
+     *
227
+     * @since 1.0.19
228
+     * @return GetPaid_Payment_Form
229
+     */
230
+    public function get_payment_form() {
231
+        return $this->payment_form;
232
+    }
233 233
 
234
-	/*
234
+    /*
235 235
 	|--------------------------------------------------------------------------
236 236
 	| Invoices.
237 237
 	|--------------------------------------------------------------------------
@@ -240,61 +240,61 @@  discard block
 block discarded – undo
240 240
 	| might be for an existing invoice.
241 241
 	*/
242 242
 
243
-	/**
244
-	 * Prepares the submission's invoice.
245
-	 *
246
-	 * @since 1.0.19
247
-	 */
248
-	public function process_invoice() {
243
+    /**
244
+     * Prepares the submission's invoice.
245
+     *
246
+     * @since 1.0.19
247
+     */
248
+    public function process_invoice() {
249 249
 
250
-		// Abort if there is no invoice.
251
-		if ( empty( $this->data['invoice_id'] ) ) {
252
-			return;
253
-		}
250
+        // Abort if there is no invoice.
251
+        if ( empty( $this->data['invoice_id'] ) ) {
252
+            return;
253
+        }
254 254
 
255
-		// If the submission is for an existing invoice, ensure that it exists
256
-		// and that it is not paid for.
257
-		$invoice = wpinv_get_invoice( $this->data['invoice_id'] );
255
+        // If the submission is for an existing invoice, ensure that it exists
256
+        // and that it is not paid for.
257
+        $invoice = wpinv_get_invoice( $this->data['invoice_id'] );
258 258
 
259 259
         if ( empty( $invoice ) ) {
260
-			throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
261
-		}
262
-
263
-		if ( $invoice->is_paid() ) {
264
-			throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
265
-		}
266
-
267
-		$this->payment_form->set_items( $invoice->get_items() );
268
-		$this->payment_form->invoice = $invoice;
269
-
270
-		$this->country = $invoice->get_country();
271
-		$this->state   = $invoice->get_state();
272
-		$this->invoice = $invoice;
273
-
274
-		do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
275
-	}
276
-
277
-	/**
278
-	 * Returns the associated invoice.
279
-	 *
280
-	 * @since 1.0.19
281
-	 * @return WPInv_Invoice
282
-	 */
283
-	public function get_invoice() {
284
-		return $this->invoice;
285
-	}
286
-
287
-	/**
288
-	 * Checks whether there is an invoice associated with this submission.
289
-	 *
290
-	 * @since 1.0.19
291
-	 * @return bool
292
-	 */
293
-	public function has_invoice() {
294
-		return ! empty( $this->invoice );
295
-	}
296
-
297
-	/*
260
+            throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
261
+        }
262
+
263
+        if ( $invoice->is_paid() ) {
264
+            throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
265
+        }
266
+
267
+        $this->payment_form->set_items( $invoice->get_items() );
268
+        $this->payment_form->invoice = $invoice;
269
+
270
+        $this->country = $invoice->get_country();
271
+        $this->state   = $invoice->get_state();
272
+        $this->invoice = $invoice;
273
+
274
+        do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
275
+    }
276
+
277
+    /**
278
+     * Returns the associated invoice.
279
+     *
280
+     * @since 1.0.19
281
+     * @return WPInv_Invoice
282
+     */
283
+    public function get_invoice() {
284
+        return $this->invoice;
285
+    }
286
+
287
+    /**
288
+     * Checks whether there is an invoice associated with this submission.
289
+     *
290
+     * @since 1.0.19
291
+     * @return bool
292
+     */
293
+    public function has_invoice() {
294
+        return ! empty( $this->invoice );
295
+    }
296
+
297
+    /*
298 298
 	|--------------------------------------------------------------------------
299 299
 	| Items.
300 300
 	|--------------------------------------------------------------------------
@@ -303,115 +303,115 @@  discard block
 block discarded – undo
303 303
 	| recurring item. But can have an unlimited number of non-recurring items.
304 304
 	*/
305 305
 
306
-	/**
307
-	 * Prepares the submission's items.
308
-	 *
309
-	 * @since 1.0.19
310
-	 */
311
-	public function process_items() {
312
-
313
-		$processor = new GetPaid_Payment_Form_Submission_Items( $this );
314
-
315
-		foreach ( $processor->items as $item ) {
316
-			$this->add_item( $item );
317
-		}
318
-
319
-		do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
320
-	}
321
-
322
-	/**
323
-	 * Adds an item to the submission.
324
-	 *
325
-	 * @since 1.0.19
326
-	 * @param GetPaid_Form_Item $item
327
-	 */
328
-	public function add_item( $item ) {
329
-
330
-		// Make sure that it is available for purchase.
331
-		if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
332
-			return;
333
-		}
334
-
335
-		// Each submission can only contain one recurring item.
336
-		if ( $item->is_recurring() ) {
337
-
338
-			if ( $this->has_recurring != 0 ) {
339
-				throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
340
-			}
341
-
342
-			$this->has_recurring = $item->get_id();
343
-
344
-		}
345
-
346
-		// Update the items and totals.
347
-		$this->items[ $item->get_id() ]         = $item;
348
-		$this->totals['subtotal']['initial']   += $item->get_sub_total();
349
-		$this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
350
-
351
-	}
352
-
353
-	/**
354
-	 * Removes a specific item.
355
-	 * 
356
-	 * You should not call this method after the discounts and taxes
357
-	 * have been calculated.
358
-	 *
359
-	 * @since 1.0.19
360
-	 */
361
-	public function remove_item( $item_id ) {
362
-
363
-		if ( isset( $this->items[ $item_id ] ) ) {
364
-			$this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
365
-			$this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
366
-
367
-			if ( $this->items[ $item_id ]->is_recurring() ) {
368
-				$this->has_recurring = 0;
369
-			}
370
-
371
-			unset( $this->items[ $item_id ] );
372
-		}
373
-
374
-	}
375
-
376
-	/**
377
-	 * Returns the subtotal.
378
-	 *
379
-	 * @since 1.0.19
380
-	 */
381
-	public function get_subtotal() {
382
-
383
-		if ( wpinv_prices_include_tax() ) {
384
-			return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
385
-		}
386
-
387
-		return $this->totals['subtotal']['initial'];
388
-	}
389
-
390
-	/**
391
-	 * Returns the recurring subtotal.
392
-	 *
393
-	 * @since 1.0.19
394
-	 */
395
-	public function get_recurring_subtotal() {
396
-
397
-		if ( wpinv_prices_include_tax() ) {
398
-			return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
399
-		}
400
-
401
-		return $this->totals['subtotal']['recurring'];
402
-	}
403
-
404
-	/**
405
-	 * Returns all items.
406
-	 *
407
-	 * @since 1.0.19
408
-	 * @return GetPaid_Form_Item[]
409
-	 */
410
-	public function get_items() {
411
-		return $this->items;
412
-	}
413
-
414
-	/*
306
+    /**
307
+     * Prepares the submission's items.
308
+     *
309
+     * @since 1.0.19
310
+     */
311
+    public function process_items() {
312
+
313
+        $processor = new GetPaid_Payment_Form_Submission_Items( $this );
314
+
315
+        foreach ( $processor->items as $item ) {
316
+            $this->add_item( $item );
317
+        }
318
+
319
+        do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
320
+    }
321
+
322
+    /**
323
+     * Adds an item to the submission.
324
+     *
325
+     * @since 1.0.19
326
+     * @param GetPaid_Form_Item $item
327
+     */
328
+    public function add_item( $item ) {
329
+
330
+        // Make sure that it is available for purchase.
331
+        if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
332
+            return;
333
+        }
334
+
335
+        // Each submission can only contain one recurring item.
336
+        if ( $item->is_recurring() ) {
337
+
338
+            if ( $this->has_recurring != 0 ) {
339
+                throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
340
+            }
341
+
342
+            $this->has_recurring = $item->get_id();
343
+
344
+        }
345
+
346
+        // Update the items and totals.
347
+        $this->items[ $item->get_id() ]         = $item;
348
+        $this->totals['subtotal']['initial']   += $item->get_sub_total();
349
+        $this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
350
+
351
+    }
352
+
353
+    /**
354
+     * Removes a specific item.
355
+     * 
356
+     * You should not call this method after the discounts and taxes
357
+     * have been calculated.
358
+     *
359
+     * @since 1.0.19
360
+     */
361
+    public function remove_item( $item_id ) {
362
+
363
+        if ( isset( $this->items[ $item_id ] ) ) {
364
+            $this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
365
+            $this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
366
+
367
+            if ( $this->items[ $item_id ]->is_recurring() ) {
368
+                $this->has_recurring = 0;
369
+            }
370
+
371
+            unset( $this->items[ $item_id ] );
372
+        }
373
+
374
+    }
375
+
376
+    /**
377
+     * Returns the subtotal.
378
+     *
379
+     * @since 1.0.19
380
+     */
381
+    public function get_subtotal() {
382
+
383
+        if ( wpinv_prices_include_tax() ) {
384
+            return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
385
+        }
386
+
387
+        return $this->totals['subtotal']['initial'];
388
+    }
389
+
390
+    /**
391
+     * Returns the recurring subtotal.
392
+     *
393
+     * @since 1.0.19
394
+     */
395
+    public function get_recurring_subtotal() {
396
+
397
+        if ( wpinv_prices_include_tax() ) {
398
+            return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
399
+        }
400
+
401
+        return $this->totals['subtotal']['recurring'];
402
+    }
403
+
404
+    /**
405
+     * Returns all items.
406
+     *
407
+     * @since 1.0.19
408
+     * @return GetPaid_Form_Item[]
409
+     */
410
+    public function get_items() {
411
+        return $this->items;
412
+    }
413
+
414
+    /*
415 415
 	|--------------------------------------------------------------------------
416 416
 	| Taxes
417 417
 	|--------------------------------------------------------------------------
@@ -420,128 +420,128 @@  discard block
 block discarded – undo
420 420
 	| or only one-time.
421 421
     */
422 422
 
423
-	/**
424
-	 * Prepares the submission's taxes.
425
-	 *
426
-	 * @since 1.0.19
427
-	 */
428
-	public function process_taxes() {
429
-
430
-		// Abort if we're not using taxes.
431
-		if ( ! $this->use_taxes() ) {
432
-			return;
433
-		}
434
-
435
-		// If a custom country && state has been passed in, use it to calculate taxes.
436
-		$country = $this->get_field( 'wpinv_country', 'billing' );
437
-		if ( ! empty( $country ) ) {
438
-			$this->country = $country;
439
-		}
440
-
441
-		$state = $this->get_field( 'wpinv_state', 'billing' );
442
-		if ( ! empty( $state ) ) {
443
-			$this->state = $state;
444
-		}
445
-
446
-		// Confirm if the provided country and the ip country are similar.
447
-		$address_confirmed = $this->get_field( 'confirm-address' );
448
-		if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
449
-			throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
450
-		}
451
-
452
-		// Abort if the country is not taxable.
453
-		if ( ! wpinv_is_country_taxable( $this->country ) ) {
454
-			return;
455
-		}
456
-
457
-		$processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
458
-
459
-		foreach ( $processor->taxes as $tax ) {
460
-			$this->add_tax( $tax );
461
-		}
462
-
463
-		do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
464
-	}
465
-
466
-	/**
467
-	 * Adds a tax to the submission.
468
-	 *
469
-	 * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
470
-	 * @since 1.0.19
471
-	 */
472
-	public function add_tax( $tax ) {
473
-
474
-		if ( wpinv_round_tax_per_tax_rate() ) {
475
-			$tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
476
-			$tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
477
-		}
478
-
479
-		$this->taxes[ $tax['name'] ]         = $tax;
480
-		$this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
481
-		$this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
482
-
483
-	}
484
-
485
-	/**
486
-	 * Removes a specific tax.
487
-	 *
488
-	 * @since 1.0.19
489
-	 */
490
-	public function remove_tax( $tax_name ) {
491
-
492
-		if ( isset( $this->taxes[ $tax_name ] ) ) {
493
-			$this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
494
-			$this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
495
-			unset( $this->taxes[ $tax_name ] );
496
-		}
497
-
498
-	}
499
-
500
-	/**
501
-	 * Whether or not we'll use taxes for the submission.
502
-	 *
503
-	 * @since 1.0.19
504
-	 */
505
-	public function use_taxes() {
506
-
507
-		$use_taxes = wpinv_use_taxes();
508
-
509
-		if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
510
-			$use_taxes = false;
511
-		}
512
-
513
-		return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
514
-
515
-	}
516
-
517
-	/**
518
-	 * Returns the tax.
519
-	 *
520
-	 * @since 1.0.19
521
-	 */
522
-	public function get_tax() {
523
-		return $this->totals['taxes']['initial'];
524
-	}
525
-
526
-	/**
527
-	 * Returns the recurring tax.
528
-	 *
529
-	 * @since 1.0.19
530
-	 */
531
-	public function get_recurring_tax() {
532
-		return $this->totals['taxes']['recurring'];
533
-	}
534
-
535
-	/**
536
-	 * Returns all taxes.
537
-	 *
538
-	 * @since 1.0.19
539
-	 */
540
-	public function get_taxes() {
541
-		return $this->taxes;
542
-	}
543
-
544
-	/*
423
+    /**
424
+     * Prepares the submission's taxes.
425
+     *
426
+     * @since 1.0.19
427
+     */
428
+    public function process_taxes() {
429
+
430
+        // Abort if we're not using taxes.
431
+        if ( ! $this->use_taxes() ) {
432
+            return;
433
+        }
434
+
435
+        // If a custom country && state has been passed in, use it to calculate taxes.
436
+        $country = $this->get_field( 'wpinv_country', 'billing' );
437
+        if ( ! empty( $country ) ) {
438
+            $this->country = $country;
439
+        }
440
+
441
+        $state = $this->get_field( 'wpinv_state', 'billing' );
442
+        if ( ! empty( $state ) ) {
443
+            $this->state = $state;
444
+        }
445
+
446
+        // Confirm if the provided country and the ip country are similar.
447
+        $address_confirmed = $this->get_field( 'confirm-address' );
448
+        if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
449
+            throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
450
+        }
451
+
452
+        // Abort if the country is not taxable.
453
+        if ( ! wpinv_is_country_taxable( $this->country ) ) {
454
+            return;
455
+        }
456
+
457
+        $processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
458
+
459
+        foreach ( $processor->taxes as $tax ) {
460
+            $this->add_tax( $tax );
461
+        }
462
+
463
+        do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
464
+    }
465
+
466
+    /**
467
+     * Adds a tax to the submission.
468
+     *
469
+     * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
470
+     * @since 1.0.19
471
+     */
472
+    public function add_tax( $tax ) {
473
+
474
+        if ( wpinv_round_tax_per_tax_rate() ) {
475
+            $tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
476
+            $tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
477
+        }
478
+
479
+        $this->taxes[ $tax['name'] ]         = $tax;
480
+        $this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
481
+        $this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
482
+
483
+    }
484
+
485
+    /**
486
+     * Removes a specific tax.
487
+     *
488
+     * @since 1.0.19
489
+     */
490
+    public function remove_tax( $tax_name ) {
491
+
492
+        if ( isset( $this->taxes[ $tax_name ] ) ) {
493
+            $this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
494
+            $this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
495
+            unset( $this->taxes[ $tax_name ] );
496
+        }
497
+
498
+    }
499
+
500
+    /**
501
+     * Whether or not we'll use taxes for the submission.
502
+     *
503
+     * @since 1.0.19
504
+     */
505
+    public function use_taxes() {
506
+
507
+        $use_taxes = wpinv_use_taxes();
508
+
509
+        if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
510
+            $use_taxes = false;
511
+        }
512
+
513
+        return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
514
+
515
+    }
516
+
517
+    /**
518
+     * Returns the tax.
519
+     *
520
+     * @since 1.0.19
521
+     */
522
+    public function get_tax() {
523
+        return $this->totals['taxes']['initial'];
524
+    }
525
+
526
+    /**
527
+     * Returns the recurring tax.
528
+     *
529
+     * @since 1.0.19
530
+     */
531
+    public function get_recurring_tax() {
532
+        return $this->totals['taxes']['recurring'];
533
+    }
534
+
535
+    /**
536
+     * Returns all taxes.
537
+     *
538
+     * @since 1.0.19
539
+     */
540
+    public function get_taxes() {
541
+        return $this->taxes;
542
+    }
543
+
544
+    /*
545 545
 	|--------------------------------------------------------------------------
546 546
 	| Discounts
547 547
 	|--------------------------------------------------------------------------
@@ -550,99 +550,99 @@  discard block
 block discarded – undo
550 550
 	| or only one-time. They also do not have to come from a discount code.
551 551
     */
552 552
 
553
-	/**
554
-	 * Prepares the submission's discount.
555
-	 *
556
-	 * @since 1.0.19
557
-	 */
558
-	public function process_discount() {
559
-
560
-		$initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
561
-		$recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
562
-		$processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
563
-
564
-		foreach ( $processor->discounts as $discount ) {
565
-			$this->add_discount( $discount );
566
-		}
567
-
568
-		do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
569
-	}
570
-
571
-	/**
572
-	 * Adds a discount to the submission.
573
-	 *
574
-	 * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
575
-	 * @since 1.0.19
576
-	 */
577
-	public function add_discount( $discount ) {
578
-		$this->discounts[ $discount['name'] ]   = $discount;
579
-		$this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
580
-		$this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
581
-	}
582
-
583
-	/**
584
-	 * Removes a discount from the submission.
585
-	 *
586
-	 * @since 1.0.19
587
-	 */
588
-	public function remove_discount( $name ) {
589
-
590
-		if ( isset( $this->discounts[ $name ] ) ) {
591
-			$this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
592
-			$this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
593
-			unset( $this->discounts[ $name ] );
594
-		}
595
-
596
-	}
597
-
598
-	/**
599
-	 * Checks whether there is a discount code associated with this submission.
600
-	 *
601
-	 * @since 1.0.19
602
-	 * @return bool
603
-	 */
604
-	public function has_discount_code() {
605
-		return ! empty( $this->discounts['discount_code'] );
606
-	}
607
-
608
-	/**
609
-	 * Returns the discount code.
610
-	 *
611
-	 * @since 1.0.19
612
-	 * @return string
613
-	 */
614
-	public function get_discount_code() {
615
-		return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
616
-	}
617
-
618
-	/**
619
-	 * Returns the discount.
620
-	 *
621
-	 * @since 1.0.19
622
-	 */
623
-	public function get_discount() {
624
-		return $this->totals['discount']['initial'];
625
-	}
626
-
627
-	/**
628
-	 * Returns the recurring discount.
629
-	 *
630
-	 * @since 1.0.19
631
-	 */
632
-	public function get_recurring_discount() {
633
-		return $this->totals['discount']['recurring'];
634
-	}
635
-
636
-	/**
637
-	 * Returns all discounts.
638
-	 *
639
-	 * @since 1.0.19
640
-	 */
641
-	public function get_discounts() {
642
-		return $this->discounts;
643
-	}
644
-
645
-	/*
553
+    /**
554
+     * Prepares the submission's discount.
555
+     *
556
+     * @since 1.0.19
557
+     */
558
+    public function process_discount() {
559
+
560
+        $initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
561
+        $recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
562
+        $processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
563
+
564
+        foreach ( $processor->discounts as $discount ) {
565
+            $this->add_discount( $discount );
566
+        }
567
+
568
+        do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
569
+    }
570
+
571
+    /**
572
+     * Adds a discount to the submission.
573
+     *
574
+     * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
575
+     * @since 1.0.19
576
+     */
577
+    public function add_discount( $discount ) {
578
+        $this->discounts[ $discount['name'] ]   = $discount;
579
+        $this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
580
+        $this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
581
+    }
582
+
583
+    /**
584
+     * Removes a discount from the submission.
585
+     *
586
+     * @since 1.0.19
587
+     */
588
+    public function remove_discount( $name ) {
589
+
590
+        if ( isset( $this->discounts[ $name ] ) ) {
591
+            $this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
592
+            $this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
593
+            unset( $this->discounts[ $name ] );
594
+        }
595
+
596
+    }
597
+
598
+    /**
599
+     * Checks whether there is a discount code associated with this submission.
600
+     *
601
+     * @since 1.0.19
602
+     * @return bool
603
+     */
604
+    public function has_discount_code() {
605
+        return ! empty( $this->discounts['discount_code'] );
606
+    }
607
+
608
+    /**
609
+     * Returns the discount code.
610
+     *
611
+     * @since 1.0.19
612
+     * @return string
613
+     */
614
+    public function get_discount_code() {
615
+        return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
616
+    }
617
+
618
+    /**
619
+     * Returns the discount.
620
+     *
621
+     * @since 1.0.19
622
+     */
623
+    public function get_discount() {
624
+        return $this->totals['discount']['initial'];
625
+    }
626
+
627
+    /**
628
+     * Returns the recurring discount.
629
+     *
630
+     * @since 1.0.19
631
+     */
632
+    public function get_recurring_discount() {
633
+        return $this->totals['discount']['recurring'];
634
+    }
635
+
636
+    /**
637
+     * Returns all discounts.
638
+     *
639
+     * @since 1.0.19
640
+     */
641
+    public function get_discounts() {
642
+        return $this->discounts;
643
+    }
644
+
645
+    /*
646 646
 	|--------------------------------------------------------------------------
647 647
 	| Fees
648 648
 	|--------------------------------------------------------------------------
@@ -652,89 +652,89 @@  discard block
 block discarded – undo
652 652
 	| fees.
653 653
     */
654 654
 
655
-	/**
656
-	 * Prepares the submission's fees.
657
-	 *
658
-	 * @since 1.0.19
659
-	 */
660
-	public function process_fees() {
661
-
662
-		$fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
663
-
664
-		foreach ( $fees_processor->fees as $fee ) {
665
-			$this->add_fee( $fee );
666
-		}
667
-
668
-		do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
669
-	}
670
-
671
-	/**
672
-	 * Adds a fee to the submission.
673
-	 *
674
-	 * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
675
-	 * @since 1.0.19
676
-	 */
677
-	public function add_fee( $fee ) {
678
-
679
-		$this->fees[ $fee['name'] ]         = $fee;
680
-		$this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
681
-		$this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
682
-
683
-	}
684
-
685
-	/**
686
-	 * Removes a fee from the submission.
687
-	 *
688
-	 * @since 1.0.19
689
-	 */
690
-	public function remove_fee( $name ) {
691
-
692
-		if ( isset( $this->fees[ $name ] ) ) {
693
-			$this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
694
-			$this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
695
-			unset( $this->fees[ $name ] );
696
-		}
697
-
698
-	}
699
-
700
-	/**
701
-	 * Returns the fees.
702
-	 *
703
-	 * @since 1.0.19
704
-	 */
705
-	public function get_fee() {
706
-		return $this->totals['fees']['initial'];
707
-	}
708
-
709
-	/**
710
-	 * Returns the recurring fees.
711
-	 *
712
-	 * @since 1.0.19
713
-	 */
714
-	public function get_recurring_fee() {
715
-		return $this->totals['fees']['recurring'];
716
-	}
717
-
718
-	/**
719
-	 * Returns all fees.
720
-	 *
721
-	 * @since 1.0.19
722
-	 */
723
-	public function get_fees() {
724
-		return $this->fees;
725
-	}
726
-
727
-	/**
728
-	 * Checks if there are any fees for the form.
729
-	 *
730
-	 * @return bool
731
-	 * @since 1.0.19
732
-	 */
733
-	public function has_fees() {
734
-		return count( $this->fees ) !== 0;
735
-	}
736
-
737
-	/*
655
+    /**
656
+     * Prepares the submission's fees.
657
+     *
658
+     * @since 1.0.19
659
+     */
660
+    public function process_fees() {
661
+
662
+        $fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
663
+
664
+        foreach ( $fees_processor->fees as $fee ) {
665
+            $this->add_fee( $fee );
666
+        }
667
+
668
+        do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
669
+    }
670
+
671
+    /**
672
+     * Adds a fee to the submission.
673
+     *
674
+     * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
675
+     * @since 1.0.19
676
+     */
677
+    public function add_fee( $fee ) {
678
+
679
+        $this->fees[ $fee['name'] ]         = $fee;
680
+        $this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
681
+        $this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
682
+
683
+    }
684
+
685
+    /**
686
+     * Removes a fee from the submission.
687
+     *
688
+     * @since 1.0.19
689
+     */
690
+    public function remove_fee( $name ) {
691
+
692
+        if ( isset( $this->fees[ $name ] ) ) {
693
+            $this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
694
+            $this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
695
+            unset( $this->fees[ $name ] );
696
+        }
697
+
698
+    }
699
+
700
+    /**
701
+     * Returns the fees.
702
+     *
703
+     * @since 1.0.19
704
+     */
705
+    public function get_fee() {
706
+        return $this->totals['fees']['initial'];
707
+    }
708
+
709
+    /**
710
+     * Returns the recurring fees.
711
+     *
712
+     * @since 1.0.19
713
+     */
714
+    public function get_recurring_fee() {
715
+        return $this->totals['fees']['recurring'];
716
+    }
717
+
718
+    /**
719
+     * Returns all fees.
720
+     *
721
+     * @since 1.0.19
722
+     */
723
+    public function get_fees() {
724
+        return $this->fees;
725
+    }
726
+
727
+    /**
728
+     * Checks if there are any fees for the form.
729
+     *
730
+     * @return bool
731
+     * @since 1.0.19
732
+     */
733
+    public function has_fees() {
734
+        return count( $this->fees ) !== 0;
735
+    }
736
+
737
+    /*
738 738
 	|--------------------------------------------------------------------------
739 739
 	| MISC
740 740
 	|--------------------------------------------------------------------------
@@ -742,119 +742,119 @@  discard block
 block discarded – undo
742 742
 	| Extra submission functions.
743 743
     */
744 744
 
745
-	/**
746
-	 * Checks if this is the initial fetch.
747
-	 *
748
-	 * @return bool
749
-	 * @since 1.0.19
750
-	 */
751
-	public function is_initial_fetch() {
752
-		return empty( $this->data['initial_state'] );
753
-	}
754
-
755
-	/**
756
-	 * Returns the total amount to collect for this submission.
757
-	 *
758
-	 * @since 1.0.19
759
-	 */
760
-	public function get_total() {
761
-		$total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
762
-		return max( $total, 0 );
763
-	}
764
-
765
-	/**
766
-	 * Returns the recurring total amount to collect for this submission.
767
-	 *
768
-	 * @since 1.0.19
769
-	 */
770
-	public function get_recurring_total() {
771
-		$total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
772
-		return max( $total, 0 );
773
-	}
774
-
775
-	/**
776
-	 * Whether payment details should be collected for this submission.
777
-	 *
778
-	 * @since 1.0.19
779
-	 */
780
-	public function should_collect_payment_details() {
781
-		$initial   = $this->get_total();
782
-		$recurring = $this->get_recurring_total();
783
-
784
-		if ( $this->has_recurring == 0 ) {
785
-			$recurring = 0;
786
-		}
787
-
788
-		$collect = $initial > 0 || $recurring > 0;
789
-		return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
790
-	}
791
-
792
-	/**
793
-	 * Returns the billing email of the user.
794
-	 *
795
-	 * @since 1.0.19
796
-	 */
797
-	public function get_billing_email() {
798
-		return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
799
-	}
800
-
801
-	/**
802
-	 * Checks if the submitter has a billing email.
803
-	 *
804
-	 * @since 1.0.19
805
-	 */
806
-	public function has_billing_email() {
807
-		$billing_email = $this->get_billing_email();
808
-		return ! empty( $billing_email ) && is_email( $billing_email );
809
-	}
810
-
811
-	/**
812
-	 * Returns the appropriate currency for the submission.
813
-	 *
814
-	 * @since 1.0.19
815
-	 * @return string
816
-	 */
817
-	public function get_currency() {
818
-		return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
819
-    }
820
-
821
-    /**
822
-	 * Returns the raw submission data.
823
-	 *
824
-	 * @since 1.0.19
825
-	 * @return array
826
-	 */
827
-	public function get_data() {
828
-		return $this->data;
829
-	}
830
-
831
-	/**
832
-	 * Returns a field from the submission data
833
-	 *
834
-	 * @param string $field
835
-	 * @since 1.0.19
836
-	 * @return mixed|null
837
-	 */
838
-	public function get_field( $field, $sub_array_key = null ) {
839
-		return getpaid_get_array_field( $this->data, $field, $sub_array_key );
840
-	}
841
-
842
-	/**
843
-	 * Checks if a required field is set.
844
-	 *
845
-	 * @since 1.0.19
846
-	 */
847
-	public function is_required_field_set( $field ) {
848
-		return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
849
-	}
850
-
851
-	/**
852
-	 * Formats an amount
853
-	 *
854
-	 * @since 1.0.19
855
-	 */
856
-	public function format_amount( $amount ) {
857
-		return wpinv_price( $amount, $this->get_currency() );
858
-	}
745
+    /**
746
+     * Checks if this is the initial fetch.
747
+     *
748
+     * @return bool
749
+     * @since 1.0.19
750
+     */
751
+    public function is_initial_fetch() {
752
+        return empty( $this->data['initial_state'] );
753
+    }
754
+
755
+    /**
756
+     * Returns the total amount to collect for this submission.
757
+     *
758
+     * @since 1.0.19
759
+     */
760
+    public function get_total() {
761
+        $total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
762
+        return max( $total, 0 );
763
+    }
764
+
765
+    /**
766
+     * Returns the recurring total amount to collect for this submission.
767
+     *
768
+     * @since 1.0.19
769
+     */
770
+    public function get_recurring_total() {
771
+        $total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
772
+        return max( $total, 0 );
773
+    }
774
+
775
+    /**
776
+     * Whether payment details should be collected for this submission.
777
+     *
778
+     * @since 1.0.19
779
+     */
780
+    public function should_collect_payment_details() {
781
+        $initial   = $this->get_total();
782
+        $recurring = $this->get_recurring_total();
783
+
784
+        if ( $this->has_recurring == 0 ) {
785
+            $recurring = 0;
786
+        }
787
+
788
+        $collect = $initial > 0 || $recurring > 0;
789
+        return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
790
+    }
791
+
792
+    /**
793
+     * Returns the billing email of the user.
794
+     *
795
+     * @since 1.0.19
796
+     */
797
+    public function get_billing_email() {
798
+        return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
799
+    }
800
+
801
+    /**
802
+     * Checks if the submitter has a billing email.
803
+     *
804
+     * @since 1.0.19
805
+     */
806
+    public function has_billing_email() {
807
+        $billing_email = $this->get_billing_email();
808
+        return ! empty( $billing_email ) && is_email( $billing_email );
809
+    }
810
+
811
+    /**
812
+     * Returns the appropriate currency for the submission.
813
+     *
814
+     * @since 1.0.19
815
+     * @return string
816
+     */
817
+    public function get_currency() {
818
+        return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
819
+    }
820
+
821
+    /**
822
+     * Returns the raw submission data.
823
+     *
824
+     * @since 1.0.19
825
+     * @return array
826
+     */
827
+    public function get_data() {
828
+        return $this->data;
829
+    }
830
+
831
+    /**
832
+     * Returns a field from the submission data
833
+     *
834
+     * @param string $field
835
+     * @since 1.0.19
836
+     * @return mixed|null
837
+     */
838
+    public function get_field( $field, $sub_array_key = null ) {
839
+        return getpaid_get_array_field( $this->data, $field, $sub_array_key );
840
+    }
841
+
842
+    /**
843
+     * Checks if a required field is set.
844
+     *
845
+     * @since 1.0.19
846
+     */
847
+    public function is_required_field_set( $field ) {
848
+        return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
849
+    }
850
+
851
+    /**
852
+     * Formats an amount
853
+     *
854
+     * @since 1.0.19
855
+     */
856
+    public function format_amount( $amount ) {
857
+        return wpinv_price( $amount, $this->get_currency() );
858
+    }
859 859
 
860 860
 }
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-bank-transfer-gateway.php 1 patch
Indentation   +175 added lines, -175 removed lines patch added patch discarded remove patch
@@ -13,30 +13,30 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'bank_transfer';
21 21
 
22
-	/**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
27
-	protected $supports = array( 'addons' );
22
+    /**
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27
+    protected $supports = array( 'addons' );
28 28
 
29 29
     /**
30
-	 * Payment method order.
31
-	 *
32
-	 * @var int
33
-	 */
34
-	public $order = 8;
30
+     * Payment method order.
31
+     *
32
+     * @var int
33
+     */
34
+    public $order = 8;
35 35
 
36 36
     /**
37
-	 * Class constructor.
38
-	 */
39
-	public function __construct() {
37
+     * Class constructor.
38
+     */
39
+    public function __construct() {
40 40
         parent::__construct();
41 41
 
42 42
         $this->title                = __( 'Direct bank transfer', 'invoicing' );
@@ -44,23 +44,23 @@  discard block
 block discarded – undo
44 44
         $this->checkout_button_text = __( 'Proceed', 'invoicing' );
45 45
         $this->instructions         = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) );
46 46
 
47
-		add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
48
-		add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
49
-		add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
50
-		add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
47
+        add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
48
+        add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
49
+        add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
50
+        add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
51 51
 
52 52
     }
53 53
 
54 54
     /**
55
-	 * Process Payment.
56
-	 *
57
-	 *
58
-	 * @param WPInv_Invoice $invoice Invoice.
59
-	 * @param array $submission_data Posted checkout fields.
60
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
61
-	 * @return array
62
-	 */
63
-	public function process_payment( $invoice, $submission_data, $submission ) {
55
+     * Process Payment.
56
+     *
57
+     *
58
+     * @param WPInv_Invoice $invoice Invoice.
59
+     * @param array $submission_data Posted checkout fields.
60
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
61
+     * @return array
62
+     */
63
+    public function process_payment( $invoice, $submission_data, $submission ) {
64 64
 
65 65
         // Add a transaction id.
66 66
         $invoice->set_transaction_id( $invoice->generate_key('trans_') );
@@ -81,66 +81,66 @@  discard block
 block discarded – undo
81 81
     }
82 82
 
83 83
     /**
84
-	 * Output for the order received page.
85
-	 *
86
-	 * @param WPInv_Invoice $invoice Invoice.
87
-	 */
88
-	public function thankyou_page( $invoice ) {
84
+     * Output for the order received page.
85
+     *
86
+     * @param WPInv_Invoice $invoice Invoice.
87
+     */
88
+    public function thankyou_page( $invoice ) {
89 89
 
90 90
         if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
91 91
 
92
-			echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
92
+            echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
93 93
 
94 94
             if ( ! empty( $this->instructions ) ) {
95 95
                 echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) );
96
-			}
96
+            }
97 97
 
98
-			$this->bank_details( $invoice );
98
+            $this->bank_details( $invoice );
99 99
 
100
-			echo '</div>';
100
+            echo '</div>';
101 101
 
102 102
         }
103 103
 
104
-	}
104
+    }
105 105
 
106 106
     /**
107
-	 * Add content to the WPI emails.
108
-	 *
109
-	 * @param WPInv_Invoice $invoice Invoice.
110
-	 * @param string     $email_type Email format: plain text or HTML.
111
-	 * @param bool     $sent_to_admin Sent to admin.
112
-	 */
113
-	public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
107
+     * Add content to the WPI emails.
108
+     *
109
+     * @param WPInv_Invoice $invoice Invoice.
110
+     * @param string     $email_type Email format: plain text or HTML.
111
+     * @param bool     $sent_to_admin Sent to admin.
112
+     */
113
+    public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
114 114
 
115
-		if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
115
+        if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
116 116
 
117
-			echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
117
+            echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
118 118
 
119
-			if ( $this->instructions ) {
120
-				echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
119
+            if ( $this->instructions ) {
120
+                echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
121 121
             }
122 122
 
123
-			$this->bank_details( $invoice );
123
+            $this->bank_details( $invoice );
124 124
 			
125
-			echo '</div>';
125
+            echo '</div>';
126 126
 
127
-		}
127
+        }
128 128
 
129 129
     }
130 130
     
131 131
     /**
132
-	 * Get bank details and place into a list format.
133
-	 *
134
-	 * @param WPInv_Invoice $invoice Invoice.
135
-	 */
136
-	protected function bank_details( $invoice ) {
132
+     * Get bank details and place into a list format.
133
+     *
134
+     * @param WPInv_Invoice $invoice Invoice.
135
+     */
136
+    protected function bank_details( $invoice ) {
137 137
 
138
-		// Get the invoice country and country $locale.
139
-		$country = $invoice->get_country();
140
-		$locale  = $this->get_country_locale();
138
+        // Get the invoice country and country $locale.
139
+        $country = $invoice->get_country();
140
+        $locale  = $this->get_country_locale();
141 141
 
142
-		// Get sortcode label in the $locale array and use appropriate one.
143
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
142
+        // Get sortcode label in the $locale array and use appropriate one.
143
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
144 144
 
145 145
         $bank_fields = array(
146 146
             'ac_name'     => __( 'Account Name', 'invoicing' ),
@@ -169,144 +169,144 @@  discard block
 block discarded – undo
169 169
             return;
170 170
         }
171 171
 
172
-		echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL;
172
+        echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL;
173 173
 
174
-		echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
174
+        echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
175 175
 
176
-		foreach ( $bank_info as $key => $data ) {
176
+        foreach ( $bank_info as $key => $data ) {
177 177
 
178
-			$key   = sanitize_html_class( $key );
179
-			$label = wp_kses_post( $data['label'] );
180
-			$value = wp_kses_post( wptexturize( $data['value'] ) );
178
+            $key   = sanitize_html_class( $key );
179
+            $label = wp_kses_post( $data['label'] );
180
+            $value = wp_kses_post( wptexturize( $data['value'] ) );
181 181
 
182
-			echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL;
183
-		}
182
+            echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL;
183
+        }
184 184
 
185
-		echo '</table>';
185
+        echo '</table>';
186 186
 
187 187
     }
188 188
     
189 189
     /**
190
-	 * Get country locale if localized.
191
-	 *
192
-	 * @return array
193
-	 */
194
-	public function get_country_locale() {
195
-
196
-		if ( empty( $this->locale ) ) {
197
-
198
-			// Locale information to be used - only those that are not 'Sort Code'.
199
-			$this->locale = apply_filters(
200
-				'getpaid_get_bank_transfer_locale',
201
-				array(
202
-					'AU' => array(
203
-						'sortcode' => array(
204
-							'label' => __( 'BSB', 'invoicing' ),
205
-						),
206
-					),
207
-					'CA' => array(
208
-						'sortcode' => array(
209
-							'label' => __( 'Bank transit number', 'invoicing' ),
210
-						),
211
-					),
212
-					'IN' => array(
213
-						'sortcode' => array(
214
-							'label' => __( 'IFSC', 'invoicing' ),
215
-						),
216
-					),
217
-					'IT' => array(
218
-						'sortcode' => array(
219
-							'label' => __( 'Branch sort', 'invoicing' ),
220
-						),
221
-					),
222
-					'NZ' => array(
223
-						'sortcode' => array(
224
-							'label' => __( 'Bank code', 'invoicing' ),
225
-						),
226
-					),
227
-					'SE' => array(
228
-						'sortcode' => array(
229
-							'label' => __( 'Bank code', 'invoicing' ),
230
-						),
231
-					),
232
-					'US' => array(
233
-						'sortcode' => array(
234
-							'label' => __( 'Routing number', 'invoicing' ),
235
-						),
236
-					),
237
-					'ZA' => array(
238
-						'sortcode' => array(
239
-							'label' => __( 'Branch code', 'invoicing' ),
240
-						),
241
-					),
242
-				)
243
-			);
244
-
245
-		}
246
-
247
-		return $this->locale;
248
-
249
-	}
250
-
251
-	/**
252
-	 * Filters the gateway settings.
253
-	 * 
254
-	 * @param array $admin_settings
255
-	 */
256
-	public function admin_settings( $admin_settings ) {
190
+     * Get country locale if localized.
191
+     *
192
+     * @return array
193
+     */
194
+    public function get_country_locale() {
195
+
196
+        if ( empty( $this->locale ) ) {
197
+
198
+            // Locale information to be used - only those that are not 'Sort Code'.
199
+            $this->locale = apply_filters(
200
+                'getpaid_get_bank_transfer_locale',
201
+                array(
202
+                    'AU' => array(
203
+                        'sortcode' => array(
204
+                            'label' => __( 'BSB', 'invoicing' ),
205
+                        ),
206
+                    ),
207
+                    'CA' => array(
208
+                        'sortcode' => array(
209
+                            'label' => __( 'Bank transit number', 'invoicing' ),
210
+                        ),
211
+                    ),
212
+                    'IN' => array(
213
+                        'sortcode' => array(
214
+                            'label' => __( 'IFSC', 'invoicing' ),
215
+                        ),
216
+                    ),
217
+                    'IT' => array(
218
+                        'sortcode' => array(
219
+                            'label' => __( 'Branch sort', 'invoicing' ),
220
+                        ),
221
+                    ),
222
+                    'NZ' => array(
223
+                        'sortcode' => array(
224
+                            'label' => __( 'Bank code', 'invoicing' ),
225
+                        ),
226
+                    ),
227
+                    'SE' => array(
228
+                        'sortcode' => array(
229
+                            'label' => __( 'Bank code', 'invoicing' ),
230
+                        ),
231
+                    ),
232
+                    'US' => array(
233
+                        'sortcode' => array(
234
+                            'label' => __( 'Routing number', 'invoicing' ),
235
+                        ),
236
+                    ),
237
+                    'ZA' => array(
238
+                        'sortcode' => array(
239
+                            'label' => __( 'Branch code', 'invoicing' ),
240
+                        ),
241
+                    ),
242
+                )
243
+            );
244
+
245
+        }
246
+
247
+        return $this->locale;
248
+
249
+    }
250
+
251
+    /**
252
+     * Filters the gateway settings.
253
+     * 
254
+     * @param array $admin_settings
255
+     */
256
+    public function admin_settings( $admin_settings ) {
257 257
 
258 258
         $admin_settings['bank_transfer_desc']['std']    = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' );
259
-		$admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
259
+        $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
260 260
 
261
-		$locale  = $this->get_country_locale();
261
+        $locale  = $this->get_country_locale();
262 262
 
263
-		// Get sortcode label in the $locale array and use appropriate one.
264
-		$country  = wpinv_default_billing_country();
265
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
263
+        // Get sortcode label in the $locale array and use appropriate one.
264
+        $country  = wpinv_default_billing_country();
265
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
266 266
 
267
-		$admin_settings['bank_transfer_ac_name'] = array(
267
+        $admin_settings['bank_transfer_ac_name'] = array(
268 268
             'type' => 'text',
269 269
             'id'   => 'bank_transfer_ac_name',
270 270
             'name' => __( 'Account Name', 'invoicing' ),
271
-		);
271
+        );
272 272
 		
273
-		$admin_settings['bank_transfer_ac_no'] = array(
273
+        $admin_settings['bank_transfer_ac_no'] = array(
274 274
             'type' => 'text',
275 275
             'id'   => 'bank_transfer_ac_no',
276 276
             'name' => __( 'Account Number', 'invoicing' ),
277
-		);
277
+        );
278 278
 		
279
-		$admin_settings['bank_transfer_bank_name'] = array(
279
+        $admin_settings['bank_transfer_bank_name'] = array(
280 280
             'type' => 'text',
281 281
             'id'   => 'bank_transfer_bank_name',
282 282
             'name' => __( 'Bank Name', 'invoicing' ),
283
-		);
283
+        );
284 284
 
285
-		$admin_settings['bank_transfer_ifsc'] = array(
285
+        $admin_settings['bank_transfer_ifsc'] = array(
286 286
             'type' => 'text',
287 287
             'id'   => 'bank_transfer_ifsc',
288 288
             'name' => __( 'IFSC Code', 'invoicing' ),
289
-		);
289
+        );
290 290
 
291
-		$admin_settings['bank_transfer_iban'] = array(
291
+        $admin_settings['bank_transfer_iban'] = array(
292 292
             'type' => 'text',
293 293
             'id'   => 'bank_transfer_iban',
294 294
             'name' => __( 'IBAN', 'invoicing' ),
295
-		);
295
+        );
296 296
 
297
-		$admin_settings['bank_transfer_bic'] = array(
297
+        $admin_settings['bank_transfer_bic'] = array(
298 298
             'type' => 'text',
299 299
             'id'   => 'bank_transfer_bic',
300 300
             'name' => __( 'BIC/Swift Code', 'invoicing' ),
301
-		);
301
+        );
302 302
 		
303
-		$admin_settings['bank_transfer_sort_code'] = array(
304
-			'type' => 'text',
305
-			'id'   => 'bank_transfer_sort_code',
306
-			'name' => $sortcode,
307
-		);
303
+        $admin_settings['bank_transfer_sort_code'] = array(
304
+            'type' => 'text',
305
+            'id'   => 'bank_transfer_sort_code',
306
+            'name' => $sortcode,
307
+        );
308 308
 
309
-		$admin_settings['bank_transfer_info'] = array(
309
+        $admin_settings['bank_transfer_info'] = array(
310 310
             'id'   => 'bank_transfer_info',
311 311
             'name' => __( 'Instructions', 'invoicing' ),
312 312
             'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
@@ -316,17 +316,17 @@  discard block
 block discarded – undo
316 316
             'rows' => 5
317 317
         );
318 318
 
319
-		return $admin_settings;
320
-	}
319
+        return $admin_settings;
320
+    }
321 321
 
322
-	/**
323
-	 * Processes invoice addons.
324
-	 *
325
-	 * @param WPInv_Invoice $invoice
326
-	 * @param GetPaid_Form_Item[] $items
327
-	 * @return WPInv_Invoice
328
-	 */
329
-	public function process_addons( $invoice, $items ) {
322
+    /**
323
+     * Processes invoice addons.
324
+     *
325
+     * @param WPInv_Invoice $invoice
326
+     * @param GetPaid_Form_Item[] $items
327
+     * @return WPInv_Invoice
328
+     */
329
+    public function process_addons( $invoice, $items ) {
330 330
 
331 331
         foreach ( $items as $item ) {
332 332
             $invoice->add_item( $item );
@@ -334,6 +334,6 @@  discard block
 block discarded – undo
334 334
 
335 335
         $invoice->recalculate_total();
336 336
         $invoice->save();
337
-	}
337
+    }
338 338
 
339 339
 }
Please login to merge, or discard this patch.