Passed
Push — master ( 8614dd...22bbb7 )
by Brian
18:27
created
templates/payment-forms/form.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
 
58 58
         // And the optional invoice id.
59 59
         if ( ! empty( $form->invoice ) ) {
60
-		    getpaid_hidden_field( 'invoice_id', $form->invoice->get_id() );
60
+            getpaid_hidden_field( 'invoice_id', $form->invoice->get_id() );
61 61
         }
62 62
 
63 63
         // We also want to include the form id.
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
 
78 78
                     foreach ( $form->get_elements() as $element ) {
79 79
 
80
-					    if ( isset( $element['type'] ) ) {
80
+                        if ( isset( $element['type'] ) ) {
81 81
                             $grid_class = getpaid_get_form_element_grid_class( $element );
82 82
                             echo "<div class='" . esc_attr( $grid_class ) . "'>";
83 83
                             do_action( 'getpaid_payment_form_element', $element, $form );
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-getpaid-meta-box-description.php 1 patch
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -13,25 +13,25 @@
 block discarded – undo
13 13
  */
14 14
 class GetPaid_Meta_Box_Description {
15 15
 
16
-	/**
17
-	 * Output the metabox.
18
-	 *
19
-	 * @param WP_Post $post Post object.
20
-	 */
21
-	public static function output( $post ) {
16
+    /**
17
+     * Output the metabox.
18
+     *
19
+     * @param WP_Post $post Post object.
20
+     */
21
+    public static function output( $post ) {
22 22
 
23
-		$settings = array(
24
-			'textarea_name' => 'excerpt',
25
-			'quicktags'     => array( 'buttons' => 'em,strong,link' ),
26
-			'teeny'         => true,
27
-			'media_buttons' => false,
28
-			'tinymce'       => array(
29
-				'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
30
-				'theme_advanced_buttons2' => '',
31
-			),
32
-			'editor_css'    => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
33
-		);
23
+        $settings = array(
24
+            'textarea_name' => 'excerpt',
25
+            'quicktags'     => array( 'buttons' => 'em,strong,link' ),
26
+            'teeny'         => true,
27
+            'media_buttons' => false,
28
+            'tinymce'       => array(
29
+                'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
30
+                'theme_advanced_buttons2' => '',
31
+            ),
32
+            'editor_css'    => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
33
+        );
34 34
 
35
-		wp_editor( htmlspecialchars_decode( $post->post_excerpt, ENT_QUOTES ), 'excerpt', apply_filters( 'getpaid_description_editor_settings', $settings ) );
36
-	}
35
+        wp_editor( htmlspecialchars_decode( $post->post_excerpt, ENT_QUOTES ), 'excerpt', apply_filters( 'getpaid_description_editor_settings', $settings ) );
36
+    }
37 37
 }
Please login to merge, or discard this patch.
includes/admin/class-getpaid-metaboxes.php 1 patch
Indentation   +243 added lines, -243 removed lines patch added patch discarded remove patch
@@ -12,280 +12,280 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Metaboxes {
14 14
 
15
-	/**
16
-	 * Only save metaboxes once.
17
-	 *
18
-	 * @var boolean
19
-	 */
20
-	private static $saved_meta_boxes = false;
15
+    /**
16
+     * Only save metaboxes once.
17
+     *
18
+     * @var boolean
19
+     */
20
+    private static $saved_meta_boxes = false;
21 21
 
22 22
     /**
23
-	 * Hook in methods.
24
-	 */
25
-	public static function init() {
23
+     * Hook in methods.
24
+     */
25
+    public static function init() {
26 26
 
27
-		// Register metaboxes.
28
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::add_meta_boxes', 50, 2 );
27
+        // Register metaboxes.
28
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::add_meta_boxes', 50, 2 );
29 29
 
30
-		// Remove metaboxes.
31
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::remove_meta_boxes', 30 );
30
+        // Remove metaboxes.
31
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::remove_meta_boxes', 30 );
32 32
 
33
-		// Rename metaboxes.
34
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::rename_meta_boxes', 45 );
33
+        // Rename metaboxes.
34
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::rename_meta_boxes', 45 );
35 35
 
36
-		// Save metaboxes.
37
-		add_action( 'save_post', 'GetPaid_Metaboxes::save_meta_boxes', 1, 2 );
38
-	}
36
+        // Save metaboxes.
37
+        add_action( 'save_post', 'GetPaid_Metaboxes::save_meta_boxes', 1, 2 );
38
+    }
39 39
 
40
-	/**
41
-	 * Register core metaboxes.
42
-	 */
43
-	public static function add_meta_boxes( $post_type, $post ) {
40
+    /**
41
+     * Register core metaboxes.
42
+     */
43
+    public static function add_meta_boxes( $post_type, $post ) {
44 44
 
45
-		// For invoices.
46
-		self::add_invoice_meta_boxes( $post_type, $post );
45
+        // For invoices.
46
+        self::add_invoice_meta_boxes( $post_type, $post );
47 47
 
48
-		// For payment forms.
49
-		self::add_payment_form_meta_boxes( $post_type, $post );
48
+        // For payment forms.
49
+        self::add_payment_form_meta_boxes( $post_type, $post );
50 50
 
51
-		// For invoice items.
52
-		self::add_item_meta_boxes( $post_type );
51
+        // For invoice items.
52
+        self::add_item_meta_boxes( $post_type );
53 53
 
54
-		// For invoice discounts.
55
-		if ( 'wpi_discount' === $post_type ) {
56
-			add_meta_box( 'wpinv_discount_details', __( 'Discount Details', 'invoicing' ), 'GetPaid_Meta_Box_Discount_Details::output', 'wpi_discount', 'normal', 'high' );
57
-		}
54
+        // For invoice discounts.
55
+        if ( 'wpi_discount' === $post_type ) {
56
+            add_meta_box( 'wpinv_discount_details', __( 'Discount Details', 'invoicing' ), 'GetPaid_Meta_Box_Discount_Details::output', 'wpi_discount', 'normal', 'high' );
57
+        }
58 58
 
59
-	}
59
+    }
60 60
 
61
-	/**
62
-	 * Register core metaboxes.
63
-	 */
64
-	protected static function add_payment_form_meta_boxes( $post_type, $post ) {
61
+    /**
62
+     * Register core metaboxes.
63
+     */
64
+    protected static function add_payment_form_meta_boxes( $post_type, $post ) {
65 65
 
66
-		// For payment forms.
67
-		if ( 'wpi_payment_form' === $post_type ) {
66
+        // For payment forms.
67
+        if ( 'wpi_payment_form' === $post_type ) {
68 68
 
69
-			// Design payment form.
70
-			add_meta_box( 'wpinv-payment-form-design', __( 'Payment Form', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form::output', 'wpi_payment_form', 'normal' );
69
+            // Design payment form.
70
+            add_meta_box( 'wpinv-payment-form-design', __( 'Payment Form', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form::output', 'wpi_payment_form', 'normal' );
71 71
 
72
-			// Payment form information.
73
-			if ( wpinv_get_default_payment_form() !== $post->ID ) {
74
-				add_meta_box( 'wpinv-payment-form-info', __( 'Details', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form_Info::output', 'wpi_payment_form', 'side' );
75
-			}
72
+            // Payment form information.
73
+            if ( wpinv_get_default_payment_form() !== $post->ID ) {
74
+                add_meta_box( 'wpinv-payment-form-info', __( 'Details', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form_Info::output', 'wpi_payment_form', 'side' );
75
+            }
76 76
 }
77 77
 
78
-	}
79
-
80
-	/**
81
-	 * Register core metaboxes.
82
-	 */
83
-	protected static function add_item_meta_boxes( $post_type ) {
78
+    }
84 79
 
85
-		if ( 'wpi_item' === $post_type ) {
86
-
87
-			// Item details.
88
-			add_meta_box( 'wpinv_item_details', __( 'Item Details', 'invoicing' ), 'GetPaid_Meta_Box_Item_Details::output', 'wpi_item', 'normal', 'high' );
89
-
90
-			// If taxes are enabled, register the tax metabox.
91
-			if ( wpinv_use_taxes() ) {
92
-				add_meta_box( 'wpinv_item_vat', __( 'Tax', 'invoicing' ), 'GetPaid_Meta_Box_Item_VAT::output', 'wpi_item', 'normal', 'high' );
93
-			}
80
+    /**
81
+     * Register core metaboxes.
82
+     */
83
+    protected static function add_item_meta_boxes( $post_type ) {
94 84
 
95
-			// Item info.
96
-			add_meta_box( 'wpinv_field_item_info', __( 'Item info', 'invoicing' ), 'GetPaid_Meta_Box_Item_Info::output', 'wpi_item', 'side', 'core' );
85
+        if ( 'wpi_item' === $post_type ) {
97 86
 
98
-			// Item description.
99
-			add_meta_box( 'postexcerpt', __( 'Item Description', 'invoicing' ), 'GetPaid_Meta_Box_Description::output', 'wpi_item', 'normal' );
100
-		}
87
+            // Item details.
88
+            add_meta_box( 'wpinv_item_details', __( 'Item Details', 'invoicing' ), 'GetPaid_Meta_Box_Item_Details::output', 'wpi_item', 'normal', 'high' );
101 89
 
102
-	}
90
+            // If taxes are enabled, register the tax metabox.
91
+            if ( wpinv_use_taxes() ) {
92
+                add_meta_box( 'wpinv_item_vat', __( 'Tax', 'invoicing' ), 'GetPaid_Meta_Box_Item_VAT::output', 'wpi_item', 'normal', 'high' );
93
+            }
103 94
 
104
-	/**
105
-	 * Register invoice metaboxes.
106
-	 */
107
-	protected static function add_invoice_meta_boxes( $post_type, $post ) {
95
+            // Item info.
96
+            add_meta_box( 'wpinv_field_item_info', __( 'Item info', 'invoicing' ), 'GetPaid_Meta_Box_Item_Info::output', 'wpi_item', 'side', 'core' );
108 97
 
109
-		// For invoices...
110
-		if ( getpaid_is_invoice_post_type( $post_type ) ) {
111
-			$invoice = new WPInv_Invoice( $post );
98
+            // Item description.
99
+            add_meta_box( 'postexcerpt', __( 'Item Description', 'invoicing' ), 'GetPaid_Meta_Box_Description::output', 'wpi_item', 'normal' );
100
+        }
112 101
 
113
-			// Resend invoice.
114
-			if ( ! $invoice->is_draft() ) {
102
+    }
115 103
 
116
-				add_meta_box(
117
-					'wpinv-mb-resend-invoice',
118
-					sprintf(
119
-						// translators: %s is the invoice type.
120
-						__( 'Resend %s', 'invoicing' ),
121
-						ucfirst( $invoice->get_invoice_quote_type() )
122
-					),
123
-					'GetPaid_Meta_Box_Resend_Invoice::output',
124
-					$post_type,
125
-					'side',
126
-					'low'
127
-				);
104
+    /**
105
+     * Register invoice metaboxes.
106
+     */
107
+    protected static function add_invoice_meta_boxes( $post_type, $post ) {
108
+
109
+        // For invoices...
110
+        if ( getpaid_is_invoice_post_type( $post_type ) ) {
111
+            $invoice = new WPInv_Invoice( $post );
112
+
113
+            // Resend invoice.
114
+            if ( ! $invoice->is_draft() ) {
115
+
116
+                add_meta_box(
117
+                    'wpinv-mb-resend-invoice',
118
+                    sprintf(
119
+                        // translators: %s is the invoice type.
120
+                        __( 'Resend %s', 'invoicing' ),
121
+                        ucfirst( $invoice->get_invoice_quote_type() )
122
+                    ),
123
+                    'GetPaid_Meta_Box_Resend_Invoice::output',
124
+                    $post_type,
125
+                    'side',
126
+                    'low'
127
+                );
128
+
129
+            }
130
+
131
+            // Subscriptions.
132
+            $subscriptions = getpaid_get_invoice_subscriptions( $invoice );
133
+            if ( ! empty( $subscriptions ) ) {
134
+
135
+                if ( is_array( $subscriptions ) ) {
136
+                    add_meta_box( 'wpinv-mb-subscriptions', __( 'Related Subscriptions', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_related', $post_type, 'advanced' );
137
+                } else {
138
+                    add_meta_box( 'wpinv-mb-subscriptions', __( 'Subscription Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output', $post_type, 'advanced' );
139
+                }
140
+
141
+                if ( getpaid_count_subscription_invoices( $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id() ) > 1 ) {
142
+                    add_meta_box( 'wpinv-mb-subscription-invoices', __( 'Related Payments', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_invoices', $post_type, 'advanced' );
143
+                }
144
+}
128 145
 
129
-			}
146
+            // Invoice details.
147
+            add_meta_box(
148
+                'wpinv-details',
149
+                sprintf(
150
+                    // translators: %s is the invoice type.
151
+                    __( '%s Details', 'invoicing' ),
152
+                    ucfirst( $invoice->get_invoice_quote_type() )
153
+                ),
154
+                'GetPaid_Meta_Box_Invoice_Details::output',
155
+                $post_type,
156
+                'side'
157
+            );
158
+
159
+            // Payment details.
160
+            add_meta_box( 'wpinv-payment-meta', __( 'Payment Meta', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Payment_Meta::output', $post_type, 'side', 'default' );
161
+
162
+            // Billing details.
163
+            add_meta_box( 'wpinv-address', __( 'Billing Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Address::output', $post_type, 'normal', 'high' );
164
+
165
+            // Invoice items.
166
+            add_meta_box(
167
+                'wpinv-items',
168
+                sprintf(
169
+                    // translators: %s is the invoice type.
170
+                    __( '%s Items', 'invoicing' ),
171
+                    ucfirst( $invoice->get_invoice_quote_type() )
172
+                ),
173
+                'GetPaid_Meta_Box_Invoice_Items::output',
174
+                $post_type,
175
+                'normal',
176
+                'high'
177
+            );
178
+
179
+            // Invoice notes.
180
+            add_meta_box(
181
+                'wpinv-notes',
182
+                sprintf(
183
+                    // translators: %s is the invoice type.
184
+                    __( '%s Notes', 'invoicing' ),
185
+                    ucfirst( $invoice->get_invoice_quote_type() )
186
+                ),
187
+                'WPInv_Meta_Box_Notes::output',
188
+                $post_type,
189
+                'side',
190
+                'low'
191
+            );
192
+
193
+            // Shipping Address.
194
+            if ( get_post_meta( $invoice->get_id(), 'shipping_address', true ) ) {
195
+                add_meta_box( 'wpinv-invoice-shipping-details', __( 'Shipping Address', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Shipping_Address::output', $post_type, 'side', 'high' );
196
+            }
197
+
198
+            // Payment form information.
199
+            if ( get_post_meta( $invoice->get_id(), 'payment_form_data', true ) ) {
200
+                add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', $post_type, 'side', 'high' );
201
+            }
202
+}
130 203
 
131
-			// Subscriptions.
132
-			$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
133
-			if ( ! empty( $subscriptions ) ) {
204
+    }
134 205
 
135
-				if ( is_array( $subscriptions ) ) {
136
-					add_meta_box( 'wpinv-mb-subscriptions', __( 'Related Subscriptions', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_related', $post_type, 'advanced' );
137
-				} else {
138
-					add_meta_box( 'wpinv-mb-subscriptions', __( 'Subscription Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output', $post_type, 'advanced' );
139
-				}
206
+    /**
207
+     * Remove some metaboxes.
208
+     */
209
+    public static function remove_meta_boxes() {
210
+        remove_meta_box( 'wpseo_meta', 'wpi_invoice', 'normal' );
211
+        remove_meta_box( 'postexcerpt', 'wpi_item', 'normal' );
212
+    }
140 213
 
141
-				if ( getpaid_count_subscription_invoices( $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id() ) > 1 ) {
142
-					add_meta_box( 'wpinv-mb-subscription-invoices', __( 'Related Payments', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_invoices', $post_type, 'advanced' );
143
-				}
144
-}
214
+    /**
215
+     * Rename other metaboxes.
216
+     */
217
+    public static function rename_meta_boxes() {
145 218
 
146
-			// Invoice details.
147
-			add_meta_box(
148
-				'wpinv-details',
149
-				sprintf(
150
-					// translators: %s is the invoice type.
151
-					__( '%s Details', 'invoicing' ),
152
-					ucfirst( $invoice->get_invoice_quote_type() )
153
-				),
154
-				'GetPaid_Meta_Box_Invoice_Details::output',
155
-				$post_type,
156
-				'side'
157
-			);
158
-
159
-			// Payment details.
160
-			add_meta_box( 'wpinv-payment-meta', __( 'Payment Meta', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Payment_Meta::output', $post_type, 'side', 'default' );
161
-
162
-			// Billing details.
163
-			add_meta_box( 'wpinv-address', __( 'Billing Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Address::output', $post_type, 'normal', 'high' );
164
-
165
-			// Invoice items.
166
-			add_meta_box(
167
-				'wpinv-items',
168
-				sprintf(
169
-					// translators: %s is the invoice type.
170
-					__( '%s Items', 'invoicing' ),
171
-					ucfirst( $invoice->get_invoice_quote_type() )
172
-				),
173
-				'GetPaid_Meta_Box_Invoice_Items::output',
174
-				$post_type,
175
-				'normal',
176
-				'high'
177
-			);
178
-
179
-			// Invoice notes.
180
-			add_meta_box(
181
-				'wpinv-notes',
182
-				sprintf(
183
-					// translators: %s is the invoice type.
184
-					__( '%s Notes', 'invoicing' ),
185
-					ucfirst( $invoice->get_invoice_quote_type() )
186
-				),
187
-				'WPInv_Meta_Box_Notes::output',
188
-				$post_type,
189
-				'side',
190
-				'low'
191
-			);
192
-
193
-			// Shipping Address.
194
-			if ( get_post_meta( $invoice->get_id(), 'shipping_address', true ) ) {
195
-				add_meta_box( 'wpinv-invoice-shipping-details', __( 'Shipping Address', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Shipping_Address::output', $post_type, 'side', 'high' );
196
-			}
197
-
198
-			// Payment form information.
199
-			if ( get_post_meta( $invoice->get_id(), 'payment_form_data', true ) ) {
200
-				add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', $post_type, 'side', 'high' );
201
-			}
202
-}
219
+    }
203 220
 
204
-	}
205
-
206
-	/**
207
-	 * Remove some metaboxes.
208
-	 */
209
-	public static function remove_meta_boxes() {
210
-		remove_meta_box( 'wpseo_meta', 'wpi_invoice', 'normal' );
211
-		remove_meta_box( 'postexcerpt', 'wpi_item', 'normal' );
212
-	}
213
-
214
-	/**
215
-	 * Rename other metaboxes.
216
-	 */
217
-	public static function rename_meta_boxes() {
218
-
219
-	}
220
-
221
-	/**
222
-	 * Check if we're saving, then trigger an action based on the post type.
223
-	 *
224
-	 * @param  int    $post_id Post ID.
225
-	 * @param  object $post Post object.
226
-	 */
227
-	public static function save_meta_boxes( $post_id, $post ) {
228
-		$post_id = absint( $post_id );
229
-		$data    = wp_kses_post_deep( wp_unslash( $_POST ) );
230
-
231
-		// Do not save for ajax requests.
232
-		if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || isset( $_REQUEST['bulk_edit'] ) ) {
233
-			return;
234
-		}
235
-
236
-		// $post_id and $post are required
237
-		if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) {
238
-			return;
239
-		}
240
-
241
-		// Dont' save meta boxes for revisions or autosaves.
242
-		if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
243
-			return;
244
-		}
245
-
246
-		// Check the nonce.
247
-		if ( empty( $data['getpaid_meta_nonce'] ) || ! wp_verify_nonce( $data['getpaid_meta_nonce'], 'getpaid_meta_nonce' ) ) {
248
-			return;
249
-		}
250
-
251
-		// Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
252
-		if ( empty( $data['post_ID'] ) || absint( $data['post_ID'] ) !== $post_id ) {
253
-			return;
254
-		}
255
-
256
-		// Check user has permission to edit.
257
-		if ( ! current_user_can( 'edit_post', $post_id ) ) {
258
-			return;
259
-		}
260
-
261
-		if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
262
-
263
-			// We need this save event to run once to avoid potential endless loops.
264
-			self::$saved_meta_boxes = true;
265
-
266
-			return GetPaid_Meta_Box_Invoice_Address::save( $post_id );
267
-
268
-		}
269
-
270
-		// Ensure this is our post type.
271
-		$post_types_map = array(
272
-			'wpi_item'         => 'GetPaid_Meta_Box_Item_Details',
273
-			'wpi_payment_form' => 'GetPaid_Meta_Box_Payment_Form',
274
-			'wpi_discount'     => 'GetPaid_Meta_Box_Discount_Details',
275
-		);
276
-
277
-		// Is this our post type?
278
-		if ( ! isset( $post_types_map[ $post->post_type ] ) ) {
279
-			return;
280
-		}
281
-
282
-		// We need this save event to run once to avoid potential endless loops.
283
-		self::$saved_meta_boxes = true;
284
-
285
-		// Save the post.
286
-		$class = $post_types_map[ $post->post_type ];
287
-		$class::save( $post_id, wp_kses_post_deep( $_POST ), $post );
288
-
289
-	}
221
+    /**
222
+     * Check if we're saving, then trigger an action based on the post type.
223
+     *
224
+     * @param  int    $post_id Post ID.
225
+     * @param  object $post Post object.
226
+     */
227
+    public static function save_meta_boxes( $post_id, $post ) {
228
+        $post_id = absint( $post_id );
229
+        $data    = wp_kses_post_deep( wp_unslash( $_POST ) );
230
+
231
+        // Do not save for ajax requests.
232
+        if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || isset( $_REQUEST['bulk_edit'] ) ) {
233
+            return;
234
+        }
235
+
236
+        // $post_id and $post are required
237
+        if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) {
238
+            return;
239
+        }
240
+
241
+        // Dont' save meta boxes for revisions or autosaves.
242
+        if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
243
+            return;
244
+        }
245
+
246
+        // Check the nonce.
247
+        if ( empty( $data['getpaid_meta_nonce'] ) || ! wp_verify_nonce( $data['getpaid_meta_nonce'], 'getpaid_meta_nonce' ) ) {
248
+            return;
249
+        }
250
+
251
+        // Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
252
+        if ( empty( $data['post_ID'] ) || absint( $data['post_ID'] ) !== $post_id ) {
253
+            return;
254
+        }
255
+
256
+        // Check user has permission to edit.
257
+        if ( ! current_user_can( 'edit_post', $post_id ) ) {
258
+            return;
259
+        }
260
+
261
+        if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
262
+
263
+            // We need this save event to run once to avoid potential endless loops.
264
+            self::$saved_meta_boxes = true;
265
+
266
+            return GetPaid_Meta_Box_Invoice_Address::save( $post_id );
267
+
268
+        }
269
+
270
+        // Ensure this is our post type.
271
+        $post_types_map = array(
272
+            'wpi_item'         => 'GetPaid_Meta_Box_Item_Details',
273
+            'wpi_payment_form' => 'GetPaid_Meta_Box_Payment_Form',
274
+            'wpi_discount'     => 'GetPaid_Meta_Box_Discount_Details',
275
+        );
276
+
277
+        // Is this our post type?
278
+        if ( ! isset( $post_types_map[ $post->post_type ] ) ) {
279
+            return;
280
+        }
281
+
282
+        // We need this save event to run once to avoid potential endless loops.
283
+        self::$saved_meta_boxes = true;
284
+
285
+        // Save the post.
286
+        $class = $post_types_map[ $post->post_type ];
287
+        $class::save( $post_id, wp_kses_post_deep( $_POST ), $post );
288
+
289
+    }
290 290
 
291 291
 }
Please login to merge, or discard this patch.
includes/admin/class-getpaid-post-types-admin.php 1 patch
Indentation   +775 added lines, -775 removed lines patch added patch discarded remove patch
@@ -13,725 +13,725 @@  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
-		add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
-		add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
35
-
36
-		// Items table columns.
37
-		add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
-		add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
-		add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
-		add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
-		add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
-		add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
43
-
44
-		// Payment forms columns.
45
-		add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
-		add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
48
-
49
-		// Discount table columns.
50
-		add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
-		add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
52
-
53
-		// Deleting posts.
54
-		add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
56
-
57
-		add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
58
-	}
59
-
60
-	/**
61
-	 * Post updated messages.
62
-	 */
63
-	public static function post_updated_messages( $messages ) {
64
-		global $post;
65
-
66
-		$messages['wpi_discount'] = array(
67
-			0  => '',
68
-			1  => __( 'Discount updated.', 'invoicing' ),
69
-			2  => __( 'Custom field updated.', 'invoicing' ),
70
-			3  => __( 'Custom field deleted.', 'invoicing' ),
71
-			4  => __( 'Discount updated.', 'invoicing' ),
72
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
-			6  => __( 'Discount updated.', 'invoicing' ),
74
-			7  => __( 'Discount saved.', 'invoicing' ),
75
-			8  => __( 'Discount submitted.', 'invoicing' ),
76
-			9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
-			10 => __( 'Discount draft updated.', 'invoicing' ),
78
-		);
79
-
80
-		$messages['wpi_payment_form'] = array(
81
-			0  => '',
82
-			1  => __( 'Payment Form updated.', 'invoicing' ),
83
-			2  => __( 'Custom field updated.', 'invoicing' ),
84
-			3  => __( 'Custom field deleted.', 'invoicing' ),
85
-			4  => __( 'Payment Form updated.', 'invoicing' ),
86
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
-			6  => __( 'Payment Form updated.', 'invoicing' ),
88
-			7  => __( 'Payment Form saved.', 'invoicing' ),
89
-			8  => __( 'Payment Form submitted.', 'invoicing' ),
90
-			9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
-			10 => __( 'Payment Form draft updated.', 'invoicing' ),
92
-		);
93
-
94
-		return $messages;
95
-
96
-	}
97
-
98
-	/**
99
-	 * Post row actions.
100
-	 */
101
-	public static function post_row_actions( $actions, $post ) {
102
-
103
-		$post = get_post( $post );
104
-
105
-		// We do not want to edit the default payment form.
106
-		if ( 'wpi_payment_form' == $post->post_type ) {
107
-
108
-			if ( wpinv_get_default_payment_form() === $post->ID ) {
109
-				unset( $actions['trash'] );
110
-				unset( $actions['inline hide-if-no-js'] );
111
-			}
112
-
113
-			$actions['duplicate'] = sprintf(
114
-				'<a href="%1$s">%2$s</a>',
115
-				esc_url(
116
-					wp_nonce_url(
117
-						add_query_arg(
118
-							array(
119
-								'getpaid-admin-action' => 'duplicate_form',
120
-								'form_id'              => $post->ID,
121
-							)
122
-						),
123
-						'getpaid-nonce',
124
-						'getpaid-nonce'
125
-					)
126
-				),
127
-				esc_html( __( 'Duplicate', 'invoicing' ) )
128
-			);
129
-
130
-		}
131
-
132
-		// Link to item payment form.
133
-		if ( 'wpi_item' == $post->post_type ) {
134
-
135
-			if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
136
-
137
-				$actions['buy'] = sprintf(
138
-					'<a href="%1$s">%2$s</a>',
139
-					esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
140
-					esc_html( __( 'Buy', 'invoicing' ) )
141
-				);
142
-
143
-			}
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
+        add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
+        add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
35
+
36
+        // Items table columns.
37
+        add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
+        add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
+        add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
+        add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
+        add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
+        add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
43
+
44
+        // Payment forms columns.
45
+        add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
+        add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
48
+
49
+        // Discount table columns.
50
+        add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
+        add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
52
+
53
+        // Deleting posts.
54
+        add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
56
+
57
+        add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
58
+    }
59
+
60
+    /**
61
+     * Post updated messages.
62
+     */
63
+    public static function post_updated_messages( $messages ) {
64
+        global $post;
65
+
66
+        $messages['wpi_discount'] = array(
67
+            0  => '',
68
+            1  => __( 'Discount updated.', 'invoicing' ),
69
+            2  => __( 'Custom field updated.', 'invoicing' ),
70
+            3  => __( 'Custom field deleted.', 'invoicing' ),
71
+            4  => __( 'Discount updated.', 'invoicing' ),
72
+            5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
+            6  => __( 'Discount updated.', 'invoicing' ),
74
+            7  => __( 'Discount saved.', 'invoicing' ),
75
+            8  => __( 'Discount submitted.', 'invoicing' ),
76
+            9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
+            10 => __( 'Discount draft updated.', 'invoicing' ),
78
+        );
79
+
80
+        $messages['wpi_payment_form'] = array(
81
+            0  => '',
82
+            1  => __( 'Payment Form updated.', 'invoicing' ),
83
+            2  => __( 'Custom field updated.', 'invoicing' ),
84
+            3  => __( 'Custom field deleted.', 'invoicing' ),
85
+            4  => __( 'Payment Form updated.', 'invoicing' ),
86
+            5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
+            6  => __( 'Payment Form updated.', 'invoicing' ),
88
+            7  => __( 'Payment Form saved.', 'invoicing' ),
89
+            8  => __( 'Payment Form submitted.', 'invoicing' ),
90
+            9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
+            10 => __( 'Payment Form draft updated.', 'invoicing' ),
92
+        );
93
+
94
+        return $messages;
95
+
96
+    }
97
+
98
+    /**
99
+     * Post row actions.
100
+     */
101
+    public static function post_row_actions( $actions, $post ) {
102
+
103
+        $post = get_post( $post );
104
+
105
+        // We do not want to edit the default payment form.
106
+        if ( 'wpi_payment_form' == $post->post_type ) {
107
+
108
+            if ( wpinv_get_default_payment_form() === $post->ID ) {
109
+                unset( $actions['trash'] );
110
+                unset( $actions['inline hide-if-no-js'] );
111
+            }
112
+
113
+            $actions['duplicate'] = sprintf(
114
+                '<a href="%1$s">%2$s</a>',
115
+                esc_url(
116
+                    wp_nonce_url(
117
+                        add_query_arg(
118
+                            array(
119
+                                'getpaid-admin-action' => 'duplicate_form',
120
+                                'form_id'              => $post->ID,
121
+                            )
122
+                        ),
123
+                        'getpaid-nonce',
124
+                        'getpaid-nonce'
125
+                    )
126
+                ),
127
+                esc_html( __( 'Duplicate', 'invoicing' ) )
128
+            );
129
+
130
+        }
131
+
132
+        // Link to item payment form.
133
+        if ( 'wpi_item' == $post->post_type ) {
134
+
135
+            if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
136
+
137
+                $actions['buy'] = sprintf(
138
+                    '<a href="%1$s">%2$s</a>',
139
+                    esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
140
+                    esc_html( __( 'Buy', 'invoicing' ) )
141
+                );
142
+
143
+            }
144 144
 }
145 145
 
146
-		return $actions;
147
-	}
146
+        return $actions;
147
+    }
148 148
 
149
-	/**
149
+    /**
150 150
      * Remove bulk edit option from admin side quote listing
151 151
      *
152 152
      * @since    1.0.0
153 153
      * @param array $actions post actions
154
-	 * @param WP_Post $post
154
+     * @param WP_Post $post
155 155
      * @return array $actions actions without edit option
156 156
      */
157 157
     public static function filter_invoice_row_actions( $actions, $post ) {
158 158
 
159 159
         if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
160 160
 
161
-			$actions = array();
162
-			$invoice = new WPInv_Invoice( $post );
163
-
164
-			$actions['edit'] = sprintf(
165
-				'<a href="%1$s">%2$s</a>',
166
-				esc_url( get_edit_post_link( $invoice->get_id() ) ),
167
-				esc_html( __( 'Edit', 'invoicing' ) )
168
-			);
169
-
170
-			if ( ! $invoice->is_draft() ) {
171
-
172
-				$actions['view'] = sprintf(
173
-					'<a href="%1$s">%2$s</a>',
174
-					esc_url( $invoice->get_view_url() ),
175
-					sprintf(
176
-						// translators: %s is the invoice type
177
-						esc_html__( 'View %s', 'invoicing' ),
178
-						getpaid_get_post_type_label( $invoice->get_post_type(), false )
179
-					)
180
-				);
181
-
182
-				$actions['send'] = sprintf(
183
-					'<a href="%1$s">%2$s</a>',
184
-					esc_url(
185
-						wp_nonce_url(
186
-							add_query_arg(
187
-								array(
188
-									'getpaid-admin-action' => 'send_invoice',
189
-									'invoice_id'           => $invoice->get_id(),
190
-								)
191
-							),
192
-							'getpaid-nonce',
193
-							'getpaid-nonce'
194
-						)
195
-					),
196
-					esc_html( __( 'Send to Customer', 'invoicing' ) )
197
-				);
198
-
199
-			}
200
-
201
-			$actions['duplicate'] = sprintf(
202
-				'<a href="%1$s">%2$s</a>',
203
-				esc_url(
204
-					wp_nonce_url(
205
-						add_query_arg(
206
-							array(
207
-								'getpaid-admin-action' => 'duplicate_invoice',
208
-								'invoice_id'           => $post->ID,
209
-							)
210
-						),
211
-						'getpaid-nonce',
212
-						'getpaid-nonce'
213
-					)
214
-				),
215
-				esc_html( __( 'Duplicate', 'invoicing' ) )
216
-			);
161
+            $actions = array();
162
+            $invoice = new WPInv_Invoice( $post );
163
+
164
+            $actions['edit'] = sprintf(
165
+                '<a href="%1$s">%2$s</a>',
166
+                esc_url( get_edit_post_link( $invoice->get_id() ) ),
167
+                esc_html( __( 'Edit', 'invoicing' ) )
168
+            );
169
+
170
+            if ( ! $invoice->is_draft() ) {
171
+
172
+                $actions['view'] = sprintf(
173
+                    '<a href="%1$s">%2$s</a>',
174
+                    esc_url( $invoice->get_view_url() ),
175
+                    sprintf(
176
+                        // translators: %s is the invoice type
177
+                        esc_html__( 'View %s', 'invoicing' ),
178
+                        getpaid_get_post_type_label( $invoice->get_post_type(), false )
179
+                    )
180
+                );
181
+
182
+                $actions['send'] = sprintf(
183
+                    '<a href="%1$s">%2$s</a>',
184
+                    esc_url(
185
+                        wp_nonce_url(
186
+                            add_query_arg(
187
+                                array(
188
+                                    'getpaid-admin-action' => 'send_invoice',
189
+                                    'invoice_id'           => $invoice->get_id(),
190
+                                )
191
+                            ),
192
+                            'getpaid-nonce',
193
+                            'getpaid-nonce'
194
+                        )
195
+                    ),
196
+                    esc_html( __( 'Send to Customer', 'invoicing' ) )
197
+                );
198
+
199
+            }
200
+
201
+            $actions['duplicate'] = sprintf(
202
+                '<a href="%1$s">%2$s</a>',
203
+                esc_url(
204
+                    wp_nonce_url(
205
+                        add_query_arg(
206
+                            array(
207
+                                'getpaid-admin-action' => 'duplicate_invoice',
208
+                                'invoice_id'           => $post->ID,
209
+                            )
210
+                        ),
211
+                        'getpaid-nonce',
212
+                        'getpaid-nonce'
213
+                    )
214
+                ),
215
+                esc_html( __( 'Duplicate', 'invoicing' ) )
216
+            );
217 217
 
218 218
         }
219 219
 
220 220
         return $actions;
221
-	}
222
-
223
-	/**
224
-	 * Returns an array of invoice table columns.
225
-	 */
226
-	public static function invoice_columns( $columns ) {
227
-
228
-		$columns = array(
229
-			'cb'           => $columns['cb'],
230
-			'number'       => __( 'Invoice', 'invoicing' ),
231
-			'customer'     => __( 'Customer', 'invoicing' ),
232
-			'invoice_date' => __( 'Created', 'invoicing' ),
233
-			'payment_date' => __( 'Completed', 'invoicing' ),
234
-			'amount'       => __( 'Amount', 'invoicing' ),
235
-			'recurring'    => __( 'Recurring', 'invoicing' ),
236
-			'status'       => __( 'Status', 'invoicing' ),
237
-		);
238
-
239
-		return apply_filters( 'wpi_invoice_table_columns', $columns );
240
-	}
241
-
242
-	/**
243
-	 * Displays invoice table columns.
244
-	 */
245
-	public static function display_invoice_columns( $column_name, $post_id ) {
246
-
247
-		$invoice = new WPInv_Invoice( $post_id );
248
-
249
-		switch ( $column_name ) {
250
-
251
-			case 'invoice_date':
252
-				$date_time = esc_attr( $invoice->get_created_date() );
253
-				$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
254
-				echo wp_kses_post( "<span title='$date_time'>$date</span>" );
255
-				break;
256
-
257
-			case 'payment_date':
258
-				if ( $invoice->is_paid() ) {
259
-					$date_time = esc_attr( $invoice->get_completed_date() );
260
-					$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
261
-					echo wp_kses_post( "<span title='$date_time'>$date</span>" );
262
-				} else {
263
-					echo '&mdash;';
264
-				}
265
-
266
-				break;
267
-
268
-			case 'amount':
269
-				$amount = $invoice->get_total();
270
-				$formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
271
-
272
-				if ( $invoice->is_refunded() ) {
273
-					$refunded_amount = wpinv_price( 0, $invoice->get_currency() );
274
-					echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
275
-				} else {
276
-
277
-					$discount = $invoice->get_total_discount();
278
-
279
-					if ( ! empty( $discount ) ) {
280
-						$new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
281
-						echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
282
-					} else {
283
-						echo wp_kses_post( $formated_amount );
284
-					}
285
-				}
286
-
287
-				break;
288
-
289
-			case 'status':
290
-				$status       = esc_html( $invoice->get_status() );
291
-				$status_label = esc_html( $invoice->get_status_nicename() );
292
-
293
-				// If it is paid, show the gateway title.
294
-				if ( $invoice->is_paid() ) {
295
-					$gateway = esc_html( $invoice->get_gateway_title() );
296
-					$gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
297
-
298
-					echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
299
-				} else {
300
-					echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
301
-				}
302
-
303
-				// If it is not paid, display the overdue and view status.
304
-				if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
305
-
306
-					// Invoice view status.
307
-					if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
308
-						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
309
-					} else {
310
-						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
311
-					}
312
-
313
-					// Display the overview status.
314
-					if ( wpinv_get_option( 'overdue_active' ) ) {
315
-						$due_date = $invoice->get_due_date();
316
-						$fomatted = getpaid_format_date( $due_date );
317
-
318
-						if ( ! empty( $fomatted ) ) {
319
-							$date = wp_sprintf(
320
-								// translators: %s is the due date.
321
-								__( 'Due %s', 'invoicing' ),
322
-								$fomatted
323
-							);
324
-							echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
325
-						}
326
-					}
327
-				}
328
-
329
-				break;
330
-
331
-			case 'recurring':
332
-				if ( $invoice->is_recurring() ) {
333
-					echo '<i class="fa fa-check" style="color:#43850a;"></i>';
334
-				} else {
335
-					echo '<i class="fa fa-times" style="color:#616161;"></i>';
336
-				}
337
-				break;
338
-
339
-			case 'number':
340
-				$edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
341
-				$invoice_number  = esc_html( $invoice->get_number() );
342
-				$invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
343
-
344
-				echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
345
-
346
-				do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
347
-				break;
348
-
349
-			case 'customer':
350
-				$customer_name = $invoice->get_user_full_name();
351
-
352
-				if ( empty( $customer_name ) ) {
353
-					$customer_name = $invoice->get_email();
354
-				}
355
-
356
-				if ( ! empty( $customer_name ) ) {
357
-					$customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
358
-					$view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
359
-					echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
360
-				} else {
361
-					echo '<div>&mdash;</div>';
362
-				}
363
-
364
-				break;
365
-
366
-		}
367
-
368
-	}
369
-
370
-	/**
371
-	 * Displays invoice bulk actions.
372
-	 */
373
-	public static function invoice_bulk_actions( $actions ) {
374
-		$actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
375
-		return $actions;
376
-	}
377
-
378
-	/**
379
-	 * Processes invoice bulk actions.
380
-	 */
381
-	public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
382
-
383
-		if ( 'resend-invoice' === $action ) {
384
-			foreach ( $post_ids as $post_id ) {
385
-				getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
386
-			}
387
-		}
388
-
389
-		return $redirect_url;
390
-
391
-	}
392
-
393
-	/**
394
-	 * Returns an array of payment forms table columns.
395
-	 */
396
-	public static function payment_form_columns( $columns ) {
397
-
398
-		$columns = array(
399
-			'cb'        => $columns['cb'],
400
-			'title'     => __( 'Name', 'invoicing' ),
401
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
402
-			'earnings'  => __( 'Revenue', 'invoicing' ),
403
-			'refunds'   => __( 'Refunded', 'invoicing' ),
404
-			'items'     => __( 'Items', 'invoicing' ),
405
-			'date'      => __( 'Date', 'invoicing' ),
406
-		);
407
-
408
-		return apply_filters( 'wpi_payment_form_table_columns', $columns );
409
-
410
-	}
411
-
412
-	/**
413
-	 * Displays payment form table columns.
414
-	 */
415
-	public static function display_payment_form_columns( $column_name, $post_id ) {
416
-
417
-		// Retrieve the payment form.
418
-		$form = new GetPaid_Payment_Form( $post_id );
419
-
420
-		switch ( $column_name ) {
421
-
422
-			case 'earnings':
423
-				echo wp_kses_post( wpinv_price( $form->get_earned() ) );
424
-				break;
425
-
426
-			case 'refunds':
427
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
428
-				break;
429
-
430
-			case 'refunds':
431
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
432
-				break;
433
-
434
-			case 'shortcode':
435
-				if ( $form->is_default() ) {
436
-					echo '&mdash;';
437
-				} else {
438
-					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
439
-				}
440
-
441
-				break;
221
+    }
442 222
 
443
-			case 'items':
444
-				$items = $form->get_items();
445
-
446
-				if ( $form->is_default() || empty( $items ) ) {
447
-					echo '&mdash;';
448
-					return;
449
-				}
450
-
451
-				$_items = array();
452
-
453
-				foreach ( $items as $item ) {
454
-					$url = $item->get_edit_url();
455
-
456
-					if ( empty( $url ) ) {
457
-						$_items[] = esc_html( $item->get_name() );
458
-					} else {
459
-						$_items[] = sprintf(
460
-							'<a href="%s">%s</a>',
461
-							esc_url( $url ),
462
-							esc_html( $item->get_name() )
463
-						);
464
-					}
223
+    /**
224
+     * Returns an array of invoice table columns.
225
+     */
226
+    public static function invoice_columns( $columns ) {
227
+
228
+        $columns = array(
229
+            'cb'           => $columns['cb'],
230
+            'number'       => __( 'Invoice', 'invoicing' ),
231
+            'customer'     => __( 'Customer', 'invoicing' ),
232
+            'invoice_date' => __( 'Created', 'invoicing' ),
233
+            'payment_date' => __( 'Completed', 'invoicing' ),
234
+            'amount'       => __( 'Amount', 'invoicing' ),
235
+            'recurring'    => __( 'Recurring', 'invoicing' ),
236
+            'status'       => __( 'Status', 'invoicing' ),
237
+        );
238
+
239
+        return apply_filters( 'wpi_invoice_table_columns', $columns );
240
+    }
241
+
242
+    /**
243
+     * Displays invoice table columns.
244
+     */
245
+    public static function display_invoice_columns( $column_name, $post_id ) {
246
+
247
+        $invoice = new WPInv_Invoice( $post_id );
248
+
249
+        switch ( $column_name ) {
250
+
251
+            case 'invoice_date':
252
+                $date_time = esc_attr( $invoice->get_created_date() );
253
+                $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
254
+                echo wp_kses_post( "<span title='$date_time'>$date</span>" );
255
+                break;
256
+
257
+            case 'payment_date':
258
+                if ( $invoice->is_paid() ) {
259
+                    $date_time = esc_attr( $invoice->get_completed_date() );
260
+                    $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
261
+                    echo wp_kses_post( "<span title='$date_time'>$date</span>" );
262
+                } else {
263
+                    echo '&mdash;';
264
+                }
265
+
266
+                break;
267
+
268
+            case 'amount':
269
+                $amount = $invoice->get_total();
270
+                $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
271
+
272
+                if ( $invoice->is_refunded() ) {
273
+                    $refunded_amount = wpinv_price( 0, $invoice->get_currency() );
274
+                    echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
275
+                } else {
276
+
277
+                    $discount = $invoice->get_total_discount();
278
+
279
+                    if ( ! empty( $discount ) ) {
280
+                        $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
281
+                        echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
282
+                    } else {
283
+                        echo wp_kses_post( $formated_amount );
284
+                    }
285
+                }
286
+
287
+                break;
288
+
289
+            case 'status':
290
+                $status       = esc_html( $invoice->get_status() );
291
+                $status_label = esc_html( $invoice->get_status_nicename() );
292
+
293
+                // If it is paid, show the gateway title.
294
+                if ( $invoice->is_paid() ) {
295
+                    $gateway = esc_html( $invoice->get_gateway_title() );
296
+                    $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
297
+
298
+                    echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
299
+                } else {
300
+                    echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
301
+                }
302
+
303
+                // If it is not paid, display the overdue and view status.
304
+                if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
305
+
306
+                    // Invoice view status.
307
+                    if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
308
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
309
+                    } else {
310
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
311
+                    }
312
+
313
+                    // Display the overview status.
314
+                    if ( wpinv_get_option( 'overdue_active' ) ) {
315
+                        $due_date = $invoice->get_due_date();
316
+                        $fomatted = getpaid_format_date( $due_date );
317
+
318
+                        if ( ! empty( $fomatted ) ) {
319
+                            $date = wp_sprintf(
320
+                                // translators: %s is the due date.
321
+                                __( 'Due %s', 'invoicing' ),
322
+                                $fomatted
323
+                            );
324
+                            echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
325
+                        }
326
+                    }
327
+                }
328
+
329
+                break;
330
+
331
+            case 'recurring':
332
+                if ( $invoice->is_recurring() ) {
333
+                    echo '<i class="fa fa-check" style="color:#43850a;"></i>';
334
+                } else {
335
+                    echo '<i class="fa fa-times" style="color:#616161;"></i>';
336
+                }
337
+                break;
338
+
339
+            case 'number':
340
+                $edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
341
+                $invoice_number  = esc_html( $invoice->get_number() );
342
+                $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
343
+
344
+                echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
345
+
346
+                do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
347
+                break;
348
+
349
+            case 'customer':
350
+                $customer_name = $invoice->get_user_full_name();
351
+
352
+                if ( empty( $customer_name ) ) {
353
+                    $customer_name = $invoice->get_email();
354
+                }
355
+
356
+                if ( ! empty( $customer_name ) ) {
357
+                    $customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
358
+                    $view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
359
+                    echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
360
+                } else {
361
+                    echo '<div>&mdash;</div>';
362
+                }
363
+
364
+                break;
365
+
366
+        }
367
+
368
+    }
369
+
370
+    /**
371
+     * Displays invoice bulk actions.
372
+     */
373
+    public static function invoice_bulk_actions( $actions ) {
374
+        $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
375
+        return $actions;
376
+    }
377
+
378
+    /**
379
+     * Processes invoice bulk actions.
380
+     */
381
+    public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
382
+
383
+        if ( 'resend-invoice' === $action ) {
384
+            foreach ( $post_ids as $post_id ) {
385
+                getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
386
+            }
387
+        }
388
+
389
+        return $redirect_url;
390
+
391
+    }
392
+
393
+    /**
394
+     * Returns an array of payment forms table columns.
395
+     */
396
+    public static function payment_form_columns( $columns ) {
397
+
398
+        $columns = array(
399
+            'cb'        => $columns['cb'],
400
+            'title'     => __( 'Name', 'invoicing' ),
401
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
402
+            'earnings'  => __( 'Revenue', 'invoicing' ),
403
+            'refunds'   => __( 'Refunded', 'invoicing' ),
404
+            'items'     => __( 'Items', 'invoicing' ),
405
+            'date'      => __( 'Date', 'invoicing' ),
406
+        );
407
+
408
+        return apply_filters( 'wpi_payment_form_table_columns', $columns );
409
+
410
+    }
411
+
412
+    /**
413
+     * Displays payment form table columns.
414
+     */
415
+    public static function display_payment_form_columns( $column_name, $post_id ) {
416
+
417
+        // Retrieve the payment form.
418
+        $form = new GetPaid_Payment_Form( $post_id );
419
+
420
+        switch ( $column_name ) {
421
+
422
+            case 'earnings':
423
+                echo wp_kses_post( wpinv_price( $form->get_earned() ) );
424
+                break;
425
+
426
+            case 'refunds':
427
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
428
+                break;
429
+
430
+            case 'refunds':
431
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
432
+                break;
433
+
434
+            case 'shortcode':
435
+                if ( $form->is_default() ) {
436
+                    echo '&mdash;';
437
+                } else {
438
+                    echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
439
+                }
440
+
441
+                break;
442
+
443
+            case 'items':
444
+                $items = $form->get_items();
445
+
446
+                if ( $form->is_default() || empty( $items ) ) {
447
+                    echo '&mdash;';
448
+                    return;
449
+                }
450
+
451
+                $_items = array();
452
+
453
+                foreach ( $items as $item ) {
454
+                    $url = $item->get_edit_url();
455
+
456
+                    if ( empty( $url ) ) {
457
+                        $_items[] = esc_html( $item->get_name() );
458
+                    } else {
459
+                        $_items[] = sprintf(
460
+                            '<a href="%s">%s</a>',
461
+                            esc_url( $url ),
462
+                            esc_html( $item->get_name() )
463
+                        );
464
+                    }
465 465
 }
466 466
 
467
-				echo wp_kses_post( implode( '<br>', $_items ) );
467
+                echo wp_kses_post( implode( '<br>', $_items ) );
468 468
 
469
-				break;
469
+                break;
470 470
 
471
-		}
471
+        }
472 472
 
473
-	}
473
+    }
474 474
 
475
-	/**
476
-	 * Filters post states.
477
-	 */
478
-	public static function filter_payment_form_state( $post_states, $post ) {
475
+    /**
476
+     * Filters post states.
477
+     */
478
+    public static function filter_payment_form_state( $post_states, $post ) {
479 479
 
480
-		if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
481
-			$post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
482
-		}
480
+        if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
481
+            $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
482
+        }
483 483
 
484
-		return $post_states;
484
+        return $post_states;
485 485
 
486
-	}
486
+    }
487 487
 
488
-	/**
489
-	 * Returns an array of coupon table columns.
490
-	 */
491
-	public static function discount_columns( $columns ) {
488
+    /**
489
+     * Returns an array of coupon table columns.
490
+     */
491
+    public static function discount_columns( $columns ) {
492
+
493
+        $columns = array(
494
+            'cb'          => $columns['cb'],
495
+            'title'       => __( 'Name', 'invoicing' ),
496
+            'code'        => __( 'Code', 'invoicing' ),
497
+            'amount'      => __( 'Amount', 'invoicing' ),
498
+            'usage'       => __( 'Usage / Limit', 'invoicing' ),
499
+            'start_date'  => __( 'Start Date', 'invoicing' ),
500
+            'expiry_date' => __( 'Expiry Date', 'invoicing' ),
501
+        );
502
+
503
+        return apply_filters( 'wpi_discount_table_columns', $columns );
504
+    }
492 505
 
493
-		$columns = array(
494
-			'cb'          => $columns['cb'],
495
-			'title'       => __( 'Name', 'invoicing' ),
496
-			'code'        => __( 'Code', 'invoicing' ),
497
-			'amount'      => __( 'Amount', 'invoicing' ),
498
-			'usage'       => __( 'Usage / Limit', 'invoicing' ),
499
-			'start_date'  => __( 'Start Date', 'invoicing' ),
500
-			'expiry_date' => __( 'Expiry Date', 'invoicing' ),
501
-		);
506
+    /**
507
+     * Filters post states.
508
+     */
509
+    public static function filter_discount_state( $post_states, $post ) {
502 510
 
503
-		return apply_filters( 'wpi_discount_table_columns', $columns );
504
-	}
511
+        if ( 'wpi_discount' === $post->post_type ) {
505 512
 
506
-	/**
507
-	 * Filters post states.
508
-	 */
509
-	public static function filter_discount_state( $post_states, $post ) {
513
+            $discount = new WPInv_Discount( $post );
510 514
 
511
-		if ( 'wpi_discount' === $post->post_type ) {
515
+            $status = $discount->is_expired() ? 'expired' : $discount->get_status();
512 516
 
513
-			$discount = new WPInv_Discount( $post );
517
+            if ( 'publish' !== $status ) {
518
+                return array(
519
+                    'discount_status' => wpinv_discount_status( $status ),
520
+                );
521
+            }
514 522
 
515
-			$status = $discount->is_expired() ? 'expired' : $discount->get_status();
523
+            return array();
516 524
 
517
-			if ( 'publish' !== $status ) {
518
-				return array(
519
-					'discount_status' => wpinv_discount_status( $status ),
520
-				);
521
-			}
525
+        }
522 526
 
523
-			return array();
527
+        return $post_states;
524 528
 
525
-		}
529
+    }
526 530
 
527
-		return $post_states;
531
+    /**
532
+     * Returns an array of items table columns.
533
+     */
534
+    public static function item_columns( $columns ) {
535
+
536
+        $columns = array(
537
+            'cb'        => $columns['cb'],
538
+            'title'     => __( 'Name', 'invoicing' ),
539
+            'price'     => __( 'Price', 'invoicing' ),
540
+            'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
541
+            'vat_class' => __( 'Tax Class', 'invoicing' ),
542
+            'type'      => __( 'Type', 'invoicing' ),
543
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
544
+        );
545
+
546
+        if ( ! wpinv_use_taxes() ) {
547
+            unset( $columns['vat_rule'] );
548
+            unset( $columns['vat_class'] );
549
+        }
550
+
551
+        return apply_filters( 'wpi_item_table_columns', $columns );
552
+    }
553
+
554
+    /**
555
+     * Returns an array of sortable items table columns.
556
+     */
557
+    public static function sortable_item_columns( $columns ) {
558
+
559
+        return array_merge(
560
+            $columns,
561
+            array(
562
+                'price'     => 'price',
563
+                'vat_rule'  => 'vat_rule',
564
+                'vat_class' => 'vat_class',
565
+                'type'      => 'type',
566
+            )
567
+        );
568
+
569
+    }
570
+
571
+    /**
572
+     * Displays items table columns.
573
+     */
574
+    public static function display_item_columns( $column_name, $post_id ) {
575
+
576
+        $item = new WPInv_Item( $post_id );
577
+
578
+        switch ( $column_name ) {
579
+
580
+            case 'price':
581
+                if ( ! $item->is_recurring() ) {
582
+                    echo wp_kses_post( $item->get_the_price() );
583
+                    break;
584
+                }
585
+
586
+                $price = wp_sprintf(
587
+                    __( '%1$s / %2$s', 'invoicing' ),
588
+                    $item->get_the_price(),
589
+                    getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
590
+                );
591
+
592
+                if ( $item->get_the_price() == $item->get_the_initial_price() ) {
593
+                    echo wp_kses_post( $price );
594
+                    break;
595
+                }
596
+
597
+                echo wp_kses_post( $item->get_the_initial_price() );
598
+
599
+                echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
600
+                break;
601
+
602
+            case 'vat_rule':
603
+                echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
604
+                break;
605
+
606
+            case 'vat_class':
607
+                echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
608
+                break;
609
+
610
+            case 'shortcode':
611
+                if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
612
+                    echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
613
+                } else {
614
+                    echo '&mdash;';
615
+                }
616
+
617
+                break;
618
+
619
+            case 'type':
620
+                echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
621
+                break;
622
+
623
+        }
624
+
625
+    }
626
+
627
+    /**
628
+     * Lets users filter items using taxes.
629
+     */
630
+    public static function add_item_filters( $post_type ) {
631
+
632
+        // Abort if we're not dealing with items.
633
+        if ( 'wpi_item' !== $post_type ) {
634
+            return;
635
+        }
636
+
637
+        // Filter by vat rules.
638
+        if ( wpinv_use_taxes() ) {
639
+
640
+            // Sanitize selected vat rule.
641
+            $vat_rule   = '';
642
+            $vat_rules  = getpaid_get_tax_rules();
643
+            if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
644
+                $vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
645
+            }
646
+
647
+            // Filter by VAT rule.
648
+            wpinv_html_select(
649
+                array(
650
+                    'options'          => array_merge(
651
+                        array(
652
+                            '' => __( 'All Tax Rules', 'invoicing' ),
653
+                        ),
654
+                        $vat_rules
655
+                    ),
656
+                    'name'             => 'vat_rule',
657
+                    'id'               => 'vat_rule',
658
+                    'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
659
+                    'show_option_all'  => false,
660
+                    'show_option_none' => false,
661
+                )
662
+            );
663
+
664
+            // Filter by VAT class.
665
+
666
+            // Sanitize selected vat rule.
667
+            $vat_class   = '';
668
+            $vat_classes = getpaid_get_tax_classes();
669
+            if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
670
+                $vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
671
+            }
672
+
673
+            wpinv_html_select(
674
+                array(
675
+                    'options'          => array_merge(
676
+                        array(
677
+                            '' => __( 'All Tax Classes', 'invoicing' ),
678
+                        ),
679
+                        $vat_classes
680
+                    ),
681
+                    'name'             => 'vat_class',
682
+                    'id'               => 'vat_class',
683
+                    'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
684
+                    'show_option_all'  => false,
685
+                    'show_option_none' => false,
686
+                )
687
+            );
688
+
689
+        }
690
+
691
+        // Filter by item type.
692
+        $type   = '';
693
+        if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
694
+            $type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
695
+        }
528 696
 
529
-	}
697
+        wpinv_html_select(
698
+            array(
699
+                'options'          => array_merge(
700
+                    array(
701
+                        '' => __( 'All item types', 'invoicing' ),
702
+                    ),
703
+                    wpinv_get_item_types()
704
+                ),
705
+                'name'             => 'type',
706
+                'id'               => 'type',
707
+                'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
708
+                'show_option_all'  => false,
709
+                'show_option_none' => false,
710
+            )
711
+        );
530 712
 
531
-	/**
532
-	 * Returns an array of items table columns.
533
-	 */
534
-	public static function item_columns( $columns ) {
713
+    }
535 714
 
536
-		$columns = array(
537
-			'cb'        => $columns['cb'],
538
-			'title'     => __( 'Name', 'invoicing' ),
539
-			'price'     => __( 'Price', 'invoicing' ),
540
-			'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
541
-			'vat_class' => __( 'Tax Class', 'invoicing' ),
542
-			'type'      => __( 'Type', 'invoicing' ),
543
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
544
-		);
715
+    /**
716
+     * Filters the item query.
717
+     */
718
+    public static function filter_item_query( $query ) {
545 719
 
546
-		if ( ! wpinv_use_taxes() ) {
547
-			unset( $columns['vat_rule'] );
548
-			unset( $columns['vat_class'] );
549
-		}
720
+        // modify the query only if it admin and main query.
721
+        if ( ! ( is_admin() && $query->is_main_query() ) ) {
722
+            return $query;
723
+        }
550 724
 
551
-		return apply_filters( 'wpi_item_table_columns', $columns );
552
-	}
725
+        // we want to modify the query for our items.
726
+        if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
727
+            return $query;
728
+        }
553 729
 
554
-	/**
555
-	 * Returns an array of sortable items table columns.
556
-	 */
557
-	public static function sortable_item_columns( $columns ) {
558
-
559
-		return array_merge(
560
-			$columns,
561
-			array(
562
-				'price'     => 'price',
563
-				'vat_rule'  => 'vat_rule',
564
-				'vat_class' => 'vat_class',
565
-				'type'      => 'type',
566
-			)
567
-		);
568
-
569
-	}
570
-
571
-	/**
572
-	 * Displays items table columns.
573
-	 */
574
-	public static function display_item_columns( $column_name, $post_id ) {
575
-
576
-		$item = new WPInv_Item( $post_id );
577
-
578
-		switch ( $column_name ) {
579
-
580
-			case 'price':
581
-				if ( ! $item->is_recurring() ) {
582
-					echo wp_kses_post( $item->get_the_price() );
583
-					break;
584
-				}
585
-
586
-				$price = wp_sprintf(
587
-					__( '%1$s / %2$s', 'invoicing' ),
588
-					$item->get_the_price(),
589
-					getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
590
-				);
591
-
592
-				if ( $item->get_the_price() == $item->get_the_initial_price() ) {
593
-					echo wp_kses_post( $price );
594
-					break;
595
-				}
596
-
597
-				echo wp_kses_post( $item->get_the_initial_price() );
598
-
599
-				echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
600
-				break;
601
-
602
-			case 'vat_rule':
603
-				echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
604
-				break;
605
-
606
-			case 'vat_class':
607
-				echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
608
-				break;
609
-
610
-			case 'shortcode':
611
-				if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
612
-					echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
613
-				} else {
614
-					echo '&mdash;';
615
-				}
616
-
617
-				break;
618
-
619
-			case 'type':
620
-				echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
621
-				break;
622
-
623
-		}
624
-
625
-	}
626
-
627
-	/**
628
-	 * Lets users filter items using taxes.
629
-	 */
630
-	public static function add_item_filters( $post_type ) {
631
-
632
-		// Abort if we're not dealing with items.
633
-		if ( 'wpi_item' !== $post_type ) {
634
-			return;
635
-		}
636
-
637
-		// Filter by vat rules.
638
-		if ( wpinv_use_taxes() ) {
639
-
640
-			// Sanitize selected vat rule.
641
-			$vat_rule   = '';
642
-			$vat_rules  = getpaid_get_tax_rules();
643
-			if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
644
-				$vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
645
-			}
646
-
647
-			// Filter by VAT rule.
648
-			wpinv_html_select(
649
-				array(
650
-					'options'          => array_merge(
651
-						array(
652
-							'' => __( 'All Tax Rules', 'invoicing' ),
653
-						),
654
-						$vat_rules
655
-					),
656
-					'name'             => 'vat_rule',
657
-					'id'               => 'vat_rule',
658
-					'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
659
-					'show_option_all'  => false,
660
-					'show_option_none' => false,
661
-				)
662
-			);
663
-
664
-			// Filter by VAT class.
665
-
666
-			// Sanitize selected vat rule.
667
-			$vat_class   = '';
668
-			$vat_classes = getpaid_get_tax_classes();
669
-			if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
670
-				$vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
671
-			}
672
-
673
-			wpinv_html_select(
674
-				array(
675
-					'options'          => array_merge(
676
-						array(
677
-							'' => __( 'All Tax Classes', 'invoicing' ),
678
-						),
679
-						$vat_classes
680
-					),
681
-					'name'             => 'vat_class',
682
-					'id'               => 'vat_class',
683
-					'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
684
-					'show_option_all'  => false,
685
-					'show_option_none' => false,
686
-				)
687
-			);
688
-
689
-		}
690
-
691
-		// Filter by item type.
692
-		$type   = '';
693
-		if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
694
-			$type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
695
-		}
696
-
697
-		wpinv_html_select(
698
-			array(
699
-				'options'          => array_merge(
700
-					array(
701
-						'' => __( 'All item types', 'invoicing' ),
702
-					),
703
-					wpinv_get_item_types()
704
-				),
705
-				'name'             => 'type',
706
-				'id'               => 'type',
707
-				'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
708
-				'show_option_all'  => false,
709
-				'show_option_none' => false,
710
-			)
711
-		);
712
-
713
-	}
714
-
715
-	/**
716
-	 * Filters the item query.
717
-	 */
718
-	public static function filter_item_query( $query ) {
719
-
720
-		// modify the query only if it admin and main query.
721
-		if ( ! ( is_admin() && $query->is_main_query() ) ) {
722
-			return $query;
723
-		}
724
-
725
-		// we want to modify the query for our items.
726
-		if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
727
-			return $query;
728
-		}
729
-
730
-		if ( empty( $query->query_vars['meta_query'] ) ) {
731
-			$query->query_vars['meta_query'] = array();
732
-		}
733
-
734
-		// Filter vat rule type
730
+        if ( empty( $query->query_vars['meta_query'] ) ) {
731
+            $query->query_vars['meta_query'] = array();
732
+        }
733
+
734
+        // Filter vat rule type
735 735
         if ( ! empty( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
736 736
             $query->query_vars['meta_query'][] = array(
737 737
                 'key'     => '_wpinv_vat_rule',
@@ -756,97 +756,97 @@  discard block
 block discarded – undo
756 756
                 'value'   => sanitize_text_field( $_GET['type'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
757 757
                 'compare' => '=',
758 758
             );
759
-		}
760
-
761
-	}
762
-
763
-	/**
764
-	 * Reorders items.
765
-	 */
766
-	public static function reorder_items( $vars ) {
767
-		global $typenow;
768
-
769
-		if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
770
-			return $vars;
771
-		}
772
-
773
-		// By item type.
774
-		if ( 'type' === $vars['orderby'] ) {
775
-			return array_merge(
776
-				$vars,
777
-				array(
778
-					'meta_key' => '_wpinv_type',
779
-					'orderby'  => 'meta_value',
780
-				)
781
-			);
782
-		}
783
-
784
-		// By vat class.
785
-		if ( 'vat_class' === $vars['orderby'] ) {
786
-			return array_merge(
787
-				$vars,
788
-				array(
789
-					'meta_key' => '_wpinv_vat_class',
790
-					'orderby'  => 'meta_value',
791
-				)
792
-			);
793
-		}
794
-
795
-		// By vat rule.
796
-		if ( 'vat_rule' === $vars['orderby'] ) {
797
-			return array_merge(
798
-				$vars,
799
-				array(
800
-					'meta_key' => '_wpinv_vat_rule',
801
-					'orderby'  => 'meta_value',
802
-				)
803
-			);
804
-		}
805
-
806
-		// By price.
807
-		if ( 'price' === $vars['orderby'] ) {
808
-			return array_merge(
809
-				$vars,
810
-				array(
811
-					'meta_key' => '_wpinv_price',
812
-					'orderby'  => 'meta_value_num',
813
-				)
814
-			);
815
-		}
816
-
817
-		return $vars;
818
-
819
-	}
820
-
821
-	/**
822
-	 * Fired when deleting a post.
823
-	 */
824
-	public static function delete_post( $post_id ) {
825
-
826
-		switch ( get_post_type( $post_id ) ) {
827
-
828
-			case 'wpi_item':
829
-				do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
830
-				break;
831
-
832
-			case 'wpi_payment_form':
833
-				do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
834
-				break;
835
-
836
-			case 'wpi_discount':
837
-				do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
838
-				break;
839
-
840
-			case 'wpi_invoice':
841
-				$invoice = new WPInv_Invoice( $post_id );
842
-				do_action( 'getpaid_before_delete_invoice', $invoice );
843
-				$invoice->get_data_store()->delete_items( $invoice );
844
-				$invoice->get_data_store()->delete_special_fields( $invoice );
845
-				break;
846
-		}
847
-	}
848
-
849
-	/**
759
+        }
760
+
761
+    }
762
+
763
+    /**
764
+     * Reorders items.
765
+     */
766
+    public static function reorder_items( $vars ) {
767
+        global $typenow;
768
+
769
+        if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
770
+            return $vars;
771
+        }
772
+
773
+        // By item type.
774
+        if ( 'type' === $vars['orderby'] ) {
775
+            return array_merge(
776
+                $vars,
777
+                array(
778
+                    'meta_key' => '_wpinv_type',
779
+                    'orderby'  => 'meta_value',
780
+                )
781
+            );
782
+        }
783
+
784
+        // By vat class.
785
+        if ( 'vat_class' === $vars['orderby'] ) {
786
+            return array_merge(
787
+                $vars,
788
+                array(
789
+                    'meta_key' => '_wpinv_vat_class',
790
+                    'orderby'  => 'meta_value',
791
+                )
792
+            );
793
+        }
794
+
795
+        // By vat rule.
796
+        if ( 'vat_rule' === $vars['orderby'] ) {
797
+            return array_merge(
798
+                $vars,
799
+                array(
800
+                    'meta_key' => '_wpinv_vat_rule',
801
+                    'orderby'  => 'meta_value',
802
+                )
803
+            );
804
+        }
805
+
806
+        // By price.
807
+        if ( 'price' === $vars['orderby'] ) {
808
+            return array_merge(
809
+                $vars,
810
+                array(
811
+                    'meta_key' => '_wpinv_price',
812
+                    'orderby'  => 'meta_value_num',
813
+                )
814
+            );
815
+        }
816
+
817
+        return $vars;
818
+
819
+    }
820
+
821
+    /**
822
+     * Fired when deleting a post.
823
+     */
824
+    public static function delete_post( $post_id ) {
825
+
826
+        switch ( get_post_type( $post_id ) ) {
827
+
828
+            case 'wpi_item':
829
+                do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
830
+                break;
831
+
832
+            case 'wpi_payment_form':
833
+                do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
834
+                break;
835
+
836
+            case 'wpi_discount':
837
+                do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
838
+                break;
839
+
840
+            case 'wpi_invoice':
841
+                $invoice = new WPInv_Invoice( $post_id );
842
+                do_action( 'getpaid_before_delete_invoice', $invoice );
843
+                $invoice->get_data_store()->delete_items( $invoice );
844
+                $invoice->get_data_store()->delete_special_fields( $invoice );
845
+                break;
846
+        }
847
+    }
848
+
849
+    /**
850 850
      * Add a post display state for special GetPaid pages in the page list table.
851 851
      *
852 852
      * @param array   $post_states An array of post display states.
@@ -860,21 +860,21 @@  discard block
 block discarded – undo
860 860
             $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' );
861 861
         }
862 862
 
863
-		foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
863
+        foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
864 864
 
865
-			if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
866
-				$post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
867
-					__( 'GetPaid %s History Page', 'invoicing' ),
868
-					$label
869
-				);
870
-			}
865
+            if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
866
+                $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
867
+                    __( 'GetPaid %s History Page', 'invoicing' ),
868
+                    $label
869
+                );
870
+            }
871 871
 }
872 872
 
873
-		if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
873
+        if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
874 874
             $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' );
875 875
         }
876 876
 
877
-		if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
877
+        if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
878 878
             $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' );
879 879
         }
880 880
 
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-getpaid-meta-box-invoice-payment-meta.php 1 patch
Indentation   +163 added lines, -163 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  */
9 9
 
10 10
 if ( ! defined( 'ABSPATH' ) ) {
11
-	exit; // Exit if accessed directly
11
+    exit; // Exit if accessed directly
12 12
 }
13 13
 
14 14
 /**
@@ -17,10 +17,10 @@  discard block
 block discarded – undo
17 17
 class GetPaid_Meta_Box_Invoice_Payment_Meta {
18 18
 
19 19
     /**
20
-	 * Output the metabox.
21
-	 *
22
-	 * @param WP_Post $post
23
-	 */
20
+     * Output the metabox.
21
+     *
22
+     * @param WP_Post $post
23
+     */
24 24
     public static function output( $post ) {
25 25
 
26 26
         // Prepare the invoice.
@@ -42,167 +42,167 @@  discard block
 block discarded – undo
42 42
 
43 43
                         if ( $invoice->is_draft() ) {
44 44
 
45
-							// Set gateway.
46
-							aui()->select(
47
-								array(
48
-									'id'               => 'wpinv_gateway',
49
-									'name'             => 'wpinv_gateway',
50
-									'label'            => __( 'Gateway:', 'invoicing' ),
51
-									'label_type'       => 'vertical',
52
-									'placeholder'      => __( 'Select Gateway', 'invoicing' ),
53
-									'value'            => wpinv_get_default_gateway(),
54
-									'select2'          => true,
55
-									'data-allow-clear' => 'false',
56
-									'options'          => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ),
57
-								),
58
-								true
59
-							);
45
+                            // Set gateway.
46
+                            aui()->select(
47
+                                array(
48
+                                    'id'               => 'wpinv_gateway',
49
+                                    'name'             => 'wpinv_gateway',
50
+                                    'label'            => __( 'Gateway:', 'invoicing' ),
51
+                                    'label_type'       => 'vertical',
52
+                                    'placeholder'      => __( 'Select Gateway', 'invoicing' ),
53
+                                    'value'            => wpinv_get_default_gateway(),
54
+                                    'select2'          => true,
55
+                                    'data-allow-clear' => 'false',
56
+                                    'options'          => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ),
57
+                                ),
58
+                                true
59
+                            );
60 60
 
61 61
                         } else {
62 62
 
63
-							// Invoice key.
64
-							aui()->input(
65
-								array(
66
-									'type'             => 'text',
67
-									'id'               => 'wpinv_key',
68
-									'name'             => 'wpinv_key',
69
-									'label'            => sprintf(
70
-										// translators: %s: Invoice type.
71
-										__( '%s Key:', 'invoicing' ),
72
-										ucfirst( $invoice->get_invoice_quote_type() )
73
-									),
74
-									'label_type'       => 'vertical',
75
-									'class'            => 'form-control-sm',
76
-									'value'            => $invoice->get_key( 'edit' ),
77
-									'extra_attributes' => array(
78
-										'onclick'  => 'this.select();',
79
-										'readonly' => 'true',
80
-									),
81
-								),
82
-								true
83
-							);
84
-
85
-							// View URL.
86
-							aui()->input(
87
-								array(
88
-									'type'             => 'text',
89
-									'id'               => 'wpinv_view_url',
90
-									'name'             => 'wpinv_view_url',
91
-									'label'            => sprintf(
92
-										// translators: %s: Invoice type.
93
-										__( '%s URL:', 'invoicing' ),
94
-										ucfirst( $invoice->get_invoice_quote_type() )
95
-									) . '&nbsp;<a href="' . esc_url_raw( $invoice->get_view_url() ) . '" title="' . __( 'View invoice', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>',
96
-									'label_type'       => 'vertical',
97
-									'class'            => 'form-control-sm',
98
-									'value'            => $invoice->get_view_url(),
99
-									'extra_attributes' => array(
100
-										'onclick'  => 'this.select();',
101
-										'readonly' => 'true',
102
-									),
103
-								),
104
-								true
105
-							);
106
-
107
-							// If the invoice is paid...
108
-							if ( $invoice->is_paid() || $invoice->is_refunded() ) {
109
-
110
-								// Gateway.
111
-								aui()->input(
112
-									array(
113
-										'type'             => 'text',
114
-										'id'               => 'wpinv_gateway',
115
-										'name'             => '',
116
-										'label'            => __( 'Gateway:', 'invoicing' ),
117
-										'label_type'       => 'vertical',
118
-										'class'            => 'form-control-sm',
119
-										'value'            => wpinv_get_gateway_admin_label( $invoice->get_gateway( 'edit' ) ),
120
-										'extra_attributes' => array(
121
-											'onclick'  => 'this.select();',
122
-											'readonly' => 'true',
123
-										),
124
-									),
125
-									true
126
-								);
127
-
128
-								// Transaction ID.
129
-								$transaction_url = $invoice->get_transaction_url();
130
-								aui()->input(
131
-									array(
132
-										'type'             => 'text',
133
-										'id'               => 'wpinv_transaction_id',
134
-										'name'             => 'wpinv_transaction_id',
135
-										'label'            => __( 'Transaction ID:', 'invoicing' ) . ( $transaction_url ? '&nbsp;<a href="' . esc_url( $transaction_url ) . '" title="' . __( 'View details', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>' : '' ),
136
-										'label_type'       => 'vertical',
137
-										'class'            => 'form-control-sm',
138
-										'value'            => $invoice->get_transaction_id( 'edit' ),
139
-										'help_text'        => apply_filters( 'wpinv_invoice_transaction_link_' . $invoice->get_gateway( 'edit' ), '', $invoice->get_transaction_id(), $invoice ),
140
-										'extra_attributes' => array(
141
-											'onclick'  => 'this.select();',
142
-											'readonly' => 'true',
143
-										),
144
-									),
145
-									true
146
-								);
147
-
148
-								// Currency.
149
-								aui()->input(
150
-									array(
151
-										'type'             => 'text',
152
-										'id'               => 'wpinv_currency',
153
-										'name'             => 'wpinv_currency',
154
-										'label'            => __( 'Currency:', 'invoicing' ),
155
-										'label_type'       => 'vertical',
156
-										'class'            => 'form-control-sm',
157
-										'value'            => $invoice->get_currency( 'edit' ),
158
-										'extra_attributes' => array(
159
-											'onclick'  => 'this.select();',
160
-											'readonly' => 'true',
161
-										),
162
-									),
163
-									true
164
-								);
165
-
166
-							} else {
167
-
168
-								if ( 'wpi_invoice' === $invoice->get_post_type() ) {
169
-
170
-									// Payment URL.
171
-									aui()->input(
172
-										array(
173
-											'type'             => 'text',
174
-											'id'               => 'wpinv_payment_url',
175
-											'name'             => 'wpinv_payment_url',
176
-											'label'            => __( 'Payment URL:', 'invoicing' ),
177
-											'label_type'       => 'vertical',
178
-											'class'            => 'form-control-sm',
179
-											'value'            => $invoice->get_checkout_payment_url(),
180
-											'extra_attributes' => array(
181
-												'onclick'  => 'this.select();',
182
-												'readonly' => 'true',
183
-											),
184
-										),
185
-										true
186
-									);
187
-
188
-									// Set gateway.
189
-									aui()->select(
190
-										array(
191
-											'id'               => 'wpinv_gateway',
192
-											'name'             => 'wpinv_gateway',
193
-											'label'            => __( 'Gateway:', 'invoicing' ),
194
-											'label_type'       => 'vertical',
195
-											'placeholder'      => __( 'Select Gateway', 'invoicing' ),
196
-											'value'            => $invoice->get_gateway( 'edit' ),
197
-											'select2'          => true,
198
-											'data-allow-clear' => 'false',
199
-											'options'          => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ),
200
-										),
201
-										true
202
-									);
203
-
204
-								}
205
-							}
63
+                            // Invoice key.
64
+                            aui()->input(
65
+                                array(
66
+                                    'type'             => 'text',
67
+                                    'id'               => 'wpinv_key',
68
+                                    'name'             => 'wpinv_key',
69
+                                    'label'            => sprintf(
70
+                                        // translators: %s: Invoice type.
71
+                                        __( '%s Key:', 'invoicing' ),
72
+                                        ucfirst( $invoice->get_invoice_quote_type() )
73
+                                    ),
74
+                                    'label_type'       => 'vertical',
75
+                                    'class'            => 'form-control-sm',
76
+                                    'value'            => $invoice->get_key( 'edit' ),
77
+                                    'extra_attributes' => array(
78
+                                        'onclick'  => 'this.select();',
79
+                                        'readonly' => 'true',
80
+                                    ),
81
+                                ),
82
+                                true
83
+                            );
84
+
85
+                            // View URL.
86
+                            aui()->input(
87
+                                array(
88
+                                    'type'             => 'text',
89
+                                    'id'               => 'wpinv_view_url',
90
+                                    'name'             => 'wpinv_view_url',
91
+                                    'label'            => sprintf(
92
+                                        // translators: %s: Invoice type.
93
+                                        __( '%s URL:', 'invoicing' ),
94
+                                        ucfirst( $invoice->get_invoice_quote_type() )
95
+                                    ) . '&nbsp;<a href="' . esc_url_raw( $invoice->get_view_url() ) . '" title="' . __( 'View invoice', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>',
96
+                                    'label_type'       => 'vertical',
97
+                                    'class'            => 'form-control-sm',
98
+                                    'value'            => $invoice->get_view_url(),
99
+                                    'extra_attributes' => array(
100
+                                        'onclick'  => 'this.select();',
101
+                                        'readonly' => 'true',
102
+                                    ),
103
+                                ),
104
+                                true
105
+                            );
106
+
107
+                            // If the invoice is paid...
108
+                            if ( $invoice->is_paid() || $invoice->is_refunded() ) {
109
+
110
+                                // Gateway.
111
+                                aui()->input(
112
+                                    array(
113
+                                        'type'             => 'text',
114
+                                        'id'               => 'wpinv_gateway',
115
+                                        'name'             => '',
116
+                                        'label'            => __( 'Gateway:', 'invoicing' ),
117
+                                        'label_type'       => 'vertical',
118
+                                        'class'            => 'form-control-sm',
119
+                                        'value'            => wpinv_get_gateway_admin_label( $invoice->get_gateway( 'edit' ) ),
120
+                                        'extra_attributes' => array(
121
+                                            'onclick'  => 'this.select();',
122
+                                            'readonly' => 'true',
123
+                                        ),
124
+                                    ),
125
+                                    true
126
+                                );
127
+
128
+                                // Transaction ID.
129
+                                $transaction_url = $invoice->get_transaction_url();
130
+                                aui()->input(
131
+                                    array(
132
+                                        'type'             => 'text',
133
+                                        'id'               => 'wpinv_transaction_id',
134
+                                        'name'             => 'wpinv_transaction_id',
135
+                                        'label'            => __( 'Transaction ID:', 'invoicing' ) . ( $transaction_url ? '&nbsp;<a href="' . esc_url( $transaction_url ) . '" title="' . __( 'View details', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>' : '' ),
136
+                                        'label_type'       => 'vertical',
137
+                                        'class'            => 'form-control-sm',
138
+                                        'value'            => $invoice->get_transaction_id( 'edit' ),
139
+                                        'help_text'        => apply_filters( 'wpinv_invoice_transaction_link_' . $invoice->get_gateway( 'edit' ), '', $invoice->get_transaction_id(), $invoice ),
140
+                                        'extra_attributes' => array(
141
+                                            'onclick'  => 'this.select();',
142
+                                            'readonly' => 'true',
143
+                                        ),
144
+                                    ),
145
+                                    true
146
+                                );
147
+
148
+                                // Currency.
149
+                                aui()->input(
150
+                                    array(
151
+                                        'type'             => 'text',
152
+                                        'id'               => 'wpinv_currency',
153
+                                        'name'             => 'wpinv_currency',
154
+                                        'label'            => __( 'Currency:', 'invoicing' ),
155
+                                        'label_type'       => 'vertical',
156
+                                        'class'            => 'form-control-sm',
157
+                                        'value'            => $invoice->get_currency( 'edit' ),
158
+                                        'extra_attributes' => array(
159
+                                            'onclick'  => 'this.select();',
160
+                                            'readonly' => 'true',
161
+                                        ),
162
+                                    ),
163
+                                    true
164
+                                );
165
+
166
+                            } else {
167
+
168
+                                if ( 'wpi_invoice' === $invoice->get_post_type() ) {
169
+
170
+                                    // Payment URL.
171
+                                    aui()->input(
172
+                                        array(
173
+                                            'type'             => 'text',
174
+                                            'id'               => 'wpinv_payment_url',
175
+                                            'name'             => 'wpinv_payment_url',
176
+                                            'label'            => __( 'Payment URL:', 'invoicing' ),
177
+                                            'label_type'       => 'vertical',
178
+                                            'class'            => 'form-control-sm',
179
+                                            'value'            => $invoice->get_checkout_payment_url(),
180
+                                            'extra_attributes' => array(
181
+                                                'onclick'  => 'this.select();',
182
+                                                'readonly' => 'true',
183
+                                            ),
184
+                                        ),
185
+                                        true
186
+                                    );
187
+
188
+                                    // Set gateway.
189
+                                    aui()->select(
190
+                                        array(
191
+                                            'id'               => 'wpinv_gateway',
192
+                                            'name'             => 'wpinv_gateway',
193
+                                            'label'            => __( 'Gateway:', 'invoicing' ),
194
+                                            'label_type'       => 'vertical',
195
+                                            'placeholder'      => __( 'Select Gateway', 'invoicing' ),
196
+                                            'value'            => $invoice->get_gateway( 'edit' ),
197
+                                            'select2'          => true,
198
+                                            'data-allow-clear' => 'false',
199
+                                            'options'          => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ),
200
+                                        ),
201
+                                        true
202
+                                    );
203
+
204
+                                }
205
+                            }
206 206
                         }
207 207
                     ?>
208 208
                     </div>
Please login to merge, or discard this patch.
widgets/subscriptions.php 1 patch
Indentation   +347 added lines, -347 removed lines patch added patch discarded remove patch
@@ -14,143 +14,143 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class WPInv_Subscriptions_Widget extends WP_Super_Duper {
16 16
 
17
-	/**
18
-	 * Register the widget with WordPress.
19
-	 *
20
-	 */
21
-	public function __construct() {
22
-
23
-		$options = array(
24
-			'textdomain'     => 'invoicing',
25
-			'block-icon'     => 'controls-repeat',
26
-			'block-category' => 'widgets',
27
-			'block-keywords' => "['invoicing','subscriptions', 'getpaid']",
28
-			'class_name'     => __CLASS__,
29
-			'base_id'        => 'wpinv_subscriptions',
30
-			'name'           => __( 'GetPaid > Subscriptions', 'invoicing' ),
31
-			'widget_ops'     => array(
32
-				'classname'   => 'getpaid-subscriptions bsui',
33
-				'description' => esc_html__( "Displays the current user's subscriptions.", 'invoicing' ),
34
-			),
35
-			'arguments'      => array(
36
-				'title' => array(
37
-					'title'    => __( 'Widget title', 'invoicing' ),
38
-					'desc'     => __( 'Enter widget title.', 'invoicing' ),
39
-					'type'     => 'text',
40
-					'desc_tip' => true,
41
-					'default'  => '',
42
-					'advanced' => false,
43
-				),
44
-			),
45
-
46
-		);
47
-
48
-		parent::__construct( $options );
49
-	}
50
-
51
-	/**
52
-	 * Retrieves current user's subscriptions.
53
-	 *
54
-	 * @return GetPaid_Subscriptions_Query
55
-	 */
56
-	public function get_subscriptions() {
57
-
58
-		// Prepare license args.
59
-		$args  = array(
60
-			'customer_in' => get_current_user_id(),
61
-			'paged'       => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1,
62
-		);
63
-
64
-		return new GetPaid_Subscriptions_Query( $args );
65
-
66
-	}
67
-
68
-	/**
69
-	 * The Super block output function.
70
-	 *
71
-	 * @param array $args
72
-	 * @param array $widget_args
73
-	 * @param string $content
74
-	 *
75
-	 * @return mixed|string|bool
76
-	 */
77
-	public function output( $args = array(), $widget_args = array(), $content = '' ) {
78
-
79
-		// Ensure that the user is logged in.
80
-		if ( ! is_user_logged_in() ) {
81
-
82
-			return aui()->alert(
83
-				array(
84
-					'content' => wp_kses_post( __( 'You need to log-in or create an account to view this section.', 'invoicing' ) ),
85
-					'type'    => 'error',
86
-				)
87
-			);
88
-
89
-		}
90
-
91
-		// Are we displaying a single subscription?
92
-		if ( isset( $_GET['subscription'] ) ) {
93
-			return $this->display_single_subscription( intval( $_GET['subscription'] ) );
94
-		}
95
-
96
-		// Retrieve the user's subscriptions.
97
-		$subscriptions = $this->get_subscriptions();
98
-
99
-		// Start the output buffer.
100
-		ob_start();
101
-
102
-		// Backwards compatibility.
103
-		do_action( 'wpinv_before_user_subscriptions' );
104
-
105
-		// Display errors and notices.
106
-		wpinv_print_errors();
107
-
108
-		do_action( 'getpaid_license_manager_before_subscriptions', $subscriptions );
109
-
110
-		// Print the table header.
111
-		$this->print_table_header();
112
-
113
-		// Print table body.
114
-		$this->print_table_body( $subscriptions->get_results() );
115
-
116
-		// Print table footer.
117
-		$this->print_table_footer();
118
-
119
-		// Print the navigation.
120
-		$this->print_navigation( $subscriptions->get_total() );
121
-
122
-		// Backwards compatibility.
123
-		do_action( 'wpinv_after_user_subscriptions' );
124
-
125
-		// Return the output.
126
-		return ob_get_clean();
127
-
128
-	}
129
-
130
-	/**
131
-	 * Retrieves the subscription columns.
132
-	 *
133
-	 * @return array
134
-	 */
135
-	public function get_subscriptions_table_columns() {
17
+    /**
18
+     * Register the widget with WordPress.
19
+     *
20
+     */
21
+    public function __construct() {
22
+
23
+        $options = array(
24
+            'textdomain'     => 'invoicing',
25
+            'block-icon'     => 'controls-repeat',
26
+            'block-category' => 'widgets',
27
+            'block-keywords' => "['invoicing','subscriptions', 'getpaid']",
28
+            'class_name'     => __CLASS__,
29
+            'base_id'        => 'wpinv_subscriptions',
30
+            'name'           => __( 'GetPaid > Subscriptions', 'invoicing' ),
31
+            'widget_ops'     => array(
32
+                'classname'   => 'getpaid-subscriptions bsui',
33
+                'description' => esc_html__( "Displays the current user's subscriptions.", 'invoicing' ),
34
+            ),
35
+            'arguments'      => array(
36
+                'title' => array(
37
+                    'title'    => __( 'Widget title', 'invoicing' ),
38
+                    'desc'     => __( 'Enter widget title.', 'invoicing' ),
39
+                    'type'     => 'text',
40
+                    'desc_tip' => true,
41
+                    'default'  => '',
42
+                    'advanced' => false,
43
+                ),
44
+            ),
45
+
46
+        );
47
+
48
+        parent::__construct( $options );
49
+    }
50
+
51
+    /**
52
+     * Retrieves current user's subscriptions.
53
+     *
54
+     * @return GetPaid_Subscriptions_Query
55
+     */
56
+    public function get_subscriptions() {
57
+
58
+        // Prepare license args.
59
+        $args  = array(
60
+            'customer_in' => get_current_user_id(),
61
+            'paged'       => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1,
62
+        );
63
+
64
+        return new GetPaid_Subscriptions_Query( $args );
65
+
66
+    }
67
+
68
+    /**
69
+     * The Super block output function.
70
+     *
71
+     * @param array $args
72
+     * @param array $widget_args
73
+     * @param string $content
74
+     *
75
+     * @return mixed|string|bool
76
+     */
77
+    public function output( $args = array(), $widget_args = array(), $content = '' ) {
78
+
79
+        // Ensure that the user is logged in.
80
+        if ( ! is_user_logged_in() ) {
81
+
82
+            return aui()->alert(
83
+                array(
84
+                    'content' => wp_kses_post( __( 'You need to log-in or create an account to view this section.', 'invoicing' ) ),
85
+                    'type'    => 'error',
86
+                )
87
+            );
88
+
89
+        }
90
+
91
+        // Are we displaying a single subscription?
92
+        if ( isset( $_GET['subscription'] ) ) {
93
+            return $this->display_single_subscription( intval( $_GET['subscription'] ) );
94
+        }
95
+
96
+        // Retrieve the user's subscriptions.
97
+        $subscriptions = $this->get_subscriptions();
98
+
99
+        // Start the output buffer.
100
+        ob_start();
101
+
102
+        // Backwards compatibility.
103
+        do_action( 'wpinv_before_user_subscriptions' );
104
+
105
+        // Display errors and notices.
106
+        wpinv_print_errors();
107
+
108
+        do_action( 'getpaid_license_manager_before_subscriptions', $subscriptions );
109
+
110
+        // Print the table header.
111
+        $this->print_table_header();
112
+
113
+        // Print table body.
114
+        $this->print_table_body( $subscriptions->get_results() );
115
+
116
+        // Print table footer.
117
+        $this->print_table_footer();
118
+
119
+        // Print the navigation.
120
+        $this->print_navigation( $subscriptions->get_total() );
121
+
122
+        // Backwards compatibility.
123
+        do_action( 'wpinv_after_user_subscriptions' );
124
+
125
+        // Return the output.
126
+        return ob_get_clean();
127
+
128
+    }
129
+
130
+    /**
131
+     * Retrieves the subscription columns.
132
+     *
133
+     * @return array
134
+     */
135
+    public function get_subscriptions_table_columns() {
136 136
 
137
-		$columns = array(
138
-			'subscription' => __( 'Subscription', 'invoicing' ),
139
-			'amount'       => __( 'Amount', 'invoicing' ),
140
-			'renewal-date' => __( 'Next payment', 'invoicing' ),
141
-			'status'       => __( 'Status', 'invoicing' ),
142
-		);
137
+        $columns = array(
138
+            'subscription' => __( 'Subscription', 'invoicing' ),
139
+            'amount'       => __( 'Amount', 'invoicing' ),
140
+            'renewal-date' => __( 'Next payment', 'invoicing' ),
141
+            'status'       => __( 'Status', 'invoicing' ),
142
+        );
143 143
 
144
-		return apply_filters( 'getpaid_frontend_subscriptions_table_columns', $columns );
145
-	}
144
+        return apply_filters( 'getpaid_frontend_subscriptions_table_columns', $columns );
145
+    }
146 146
 
147
-	/**
148
-	 * Displays the table header.
149
-	 *
150
-	 */
151
-	public function print_table_header() {
147
+    /**
148
+     * Displays the table header.
149
+     *
150
+     */
151
+    public function print_table_header() {
152 152
 
153
-		?>
153
+        ?>
154 154
 
155 155
 			<table class="table table-bordered table-striped">
156 156
 
@@ -166,122 +166,122 @@  discard block
 block discarded – undo
166 166
 
167 167
 		<?php
168 168
 
169
-	}
169
+    }
170 170
 
171
-	/**
172
-	 * Displays the table body.
173
-	 *
174
-	 * @param WPInv_Subscription[] $subscriptions
175
-	 */
176
-	public function print_table_body( $subscriptions ) {
171
+    /**
172
+     * Displays the table body.
173
+     *
174
+     * @param WPInv_Subscription[] $subscriptions
175
+     */
176
+    public function print_table_body( $subscriptions ) {
177 177
 
178
-		if ( empty( $subscriptions ) ) {
179
-			$this->print_table_body_no_subscriptions();
180
-		} else {
181
-			$this->print_table_body_subscriptions( $subscriptions );
182
-		}
178
+        if ( empty( $subscriptions ) ) {
179
+            $this->print_table_body_no_subscriptions();
180
+        } else {
181
+            $this->print_table_body_subscriptions( $subscriptions );
182
+        }
183 183
 
184
-	}
184
+    }
185 185
 
186
-	/**
187
-	 * Displays the table body if no subscriptions were found.
188
-	 *
189
-	 */
190
-	public function print_table_body_no_subscriptions() {
186
+    /**
187
+     * Displays the table body if no subscriptions were found.
188
+     *
189
+     */
190
+    public function print_table_body_no_subscriptions() {
191 191
 
192
-		?>
192
+        ?>
193 193
 		<tbody>
194 194
 
195 195
 			<tr>
196 196
 				<td colspan="<?php echo count( $this->get_subscriptions_table_columns() ); ?>">
197 197
 
198 198
 					<?php
199
-						aui()->alert(
200
-							array(
201
-								'content' => wp_kses_post( __( 'No subscriptions found.', 'invoicing' ) ),
202
-								'type'    => 'warning',
203
-							),
199
+                        aui()->alert(
200
+                            array(
201
+                                'content' => wp_kses_post( __( 'No subscriptions found.', 'invoicing' ) ),
202
+                                'type'    => 'warning',
203
+                            ),
204 204
                             true
205
-						);
206
-					?>
205
+                        );
206
+                    ?>
207 207
 
208 208
 				</td>
209 209
 			</tr>
210 210
 
211 211
 		</tbody>
212 212
 		<?php
213
-	}
213
+    }
214 214
 
215
-	/**
216
-	 * Displays the table body if subscriptions were found.
217
-	 *
218
-	 * @param WPInv_Subscription[] $subscriptions
219
-	 */
220
-	public function print_table_body_subscriptions( $subscriptions ) {
215
+    /**
216
+     * Displays the table body if subscriptions were found.
217
+     *
218
+     * @param WPInv_Subscription[] $subscriptions
219
+     */
220
+    public function print_table_body_subscriptions( $subscriptions ) {
221 221
 
222
-		?>
222
+        ?>
223 223
 		<tbody>
224 224
 
225 225
 			<?php foreach ( $subscriptions as $subscription ) : ?>
226 226
 				<tr class="getpaid-subscriptions-table-row subscription-<?php echo (int) $subscription->get_id(); ?>">
227 227
 					<?php
228
-						wpinv_get_template(
229
-							'subscriptions/subscriptions-table-row.php',
230
-							array(
231
-								'subscription' => $subscription,
232
-								'widget'       => $this,
233
-							)
234
-						);
235
-					?>
228
+                        wpinv_get_template(
229
+                            'subscriptions/subscriptions-table-row.php',
230
+                            array(
231
+                                'subscription' => $subscription,
232
+                                'widget'       => $this,
233
+                            )
234
+                        );
235
+                    ?>
236 236
 				</tr>
237 237
 			<?php endforeach; ?>
238 238
 
239 239
 		</tbody>
240 240
 		<?php
241
-	}
242
-
243
-	/**
244
-	 * Adds row actions to a column
245
-	 *
246
-	 * @param string $content column content
247
-	 * @param WPInv_Subscription $subscription
248
-	 * @since       1.0.0
249
-	 * @return      string
250
-	 */
251
-	public function add_row_actions( $content, $subscription ) {
252
-
253
-		// Prepare row actions.
254
-		$actions = array();
255
-
256
-		// View subscription action.
257
-		$view_url        = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) );
258
-		$view_url        = esc_url( add_query_arg( 'subscription', (int) $subscription->get_id(), $view_url ) );
259
-		$actions['view'] = "<a href='$view_url' class='text-decoration-none'>" . __( 'Manage Subscription', 'invoicing' ) . '</a>';
260
-
261
-		// Filter the actions.
262
-		$actions = apply_filters( 'getpaid_subscriptions_table_subscription_actions', $actions, $subscription );
263
-
264
-		$sanitized  = array();
265
-		foreach ( $actions as $key => $action ) {
266
-			$key         = sanitize_html_class( $key );
267
-			$action      = wp_kses_post( $action );
268
-			$sanitized[] = "<span class='$key'>$action</span>";
269
-		}
270
-
271
-		$row_actions  = "<small class='form-text getpaid-subscription-item-actions'>";
272
-		$row_actions .= implode( ' | ', $sanitized );
273
-		$row_actions .= '</small>';
274
-
275
-		return $content . $row_actions;
276
-	}
277
-
278
-	/**
279
-	 * Displays the table footer.
280
-	 *
281
-	 */
282
-	public function print_table_footer() {
283
-
284
-		?>
241
+    }
242
+
243
+    /**
244
+     * Adds row actions to a column
245
+     *
246
+     * @param string $content column content
247
+     * @param WPInv_Subscription $subscription
248
+     * @since       1.0.0
249
+     * @return      string
250
+     */
251
+    public function add_row_actions( $content, $subscription ) {
252
+
253
+        // Prepare row actions.
254
+        $actions = array();
255
+
256
+        // View subscription action.
257
+        $view_url        = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) );
258
+        $view_url        = esc_url( add_query_arg( 'subscription', (int) $subscription->get_id(), $view_url ) );
259
+        $actions['view'] = "<a href='$view_url' class='text-decoration-none'>" . __( 'Manage Subscription', 'invoicing' ) . '</a>';
260
+
261
+        // Filter the actions.
262
+        $actions = apply_filters( 'getpaid_subscriptions_table_subscription_actions', $actions, $subscription );
263
+
264
+        $sanitized  = array();
265
+        foreach ( $actions as $key => $action ) {
266
+            $key         = sanitize_html_class( $key );
267
+            $action      = wp_kses_post( $action );
268
+            $sanitized[] = "<span class='$key'>$action</span>";
269
+        }
270
+
271
+        $row_actions  = "<small class='form-text getpaid-subscription-item-actions'>";
272
+        $row_actions .= implode( ' | ', $sanitized );
273
+        $row_actions .= '</small>';
274
+
275
+        return $content . $row_actions;
276
+    }
277
+
278
+    /**
279
+     * Displays the table footer.
280
+     *
281
+     */
282
+    public function print_table_footer() {
283
+
284
+        ?>
285 285
 
286 286
 				<tfoot>
287 287
 					<tr>
@@ -296,145 +296,145 @@  discard block
 block discarded – undo
296 296
 			</table>
297 297
 		<?php
298 298
 
299
-	}
299
+    }
300 300
 
301
-	/**
302
-	 * Displays the navigation.
303
-	 *
304
-	 * @param int $total
305
-	 */
306
-	public function print_navigation( $total ) {
301
+    /**
302
+     * Displays the navigation.
303
+     *
304
+     * @param int $total
305
+     */
306
+    public function print_navigation( $total ) {
307 307
 
308
-		if ( $total < 1 ) {
308
+        if ( $total < 1 ) {
309 309
 
310
-			// Out-of-bounds, run the query again without LIMIT for total count.
311
-			$args  = array(
312
-				'customer_in' => get_current_user_id(),
313
-				'fields'      => 'id',
314
-			);
310
+            // Out-of-bounds, run the query again without LIMIT for total count.
311
+            $args  = array(
312
+                'customer_in' => get_current_user_id(),
313
+                'fields'      => 'id',
314
+            );
315 315
 
316
-			$count_query = new GetPaid_Subscriptions_Query( $args );
317
-			$total       = $count_query->get_total();
318
-		}
316
+            $count_query = new GetPaid_Subscriptions_Query( $args );
317
+            $total       = $count_query->get_total();
318
+        }
319 319
 
320
-		// Abort if we do not have pages.
321
-		if ( 2 > $total ) {
322
-			return;
323
-		}
320
+        // Abort if we do not have pages.
321
+        if ( 2 > $total ) {
322
+            return;
323
+        }
324 324
 
325
-		?>
325
+        ?>
326 326
 
327 327
 		<div class="getpaid-subscriptions-pagination">
328 328
 			<?php
329
-				$big = 999999;
330
-
331
-				echo wp_kses_post(
332
-					getpaid_paginate_links(
333
-						array(
334
-							'base'   => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
335
-							'format' => '?paged=%#%',
336
-							'total'  => (int) ceil( $total / 10 ),
337
-						)
338
-					)
339
-				);
340
-			?>
329
+                $big = 999999;
330
+
331
+                echo wp_kses_post(
332
+                    getpaid_paginate_links(
333
+                        array(
334
+                            'base'   => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
335
+                            'format' => '?paged=%#%',
336
+                            'total'  => (int) ceil( $total / 10 ),
337
+                        )
338
+                    )
339
+                );
340
+            ?>
341 341
 		</div>
342 342
 
343 343
 		<?php
344
-	}
345
-
346
-	/**
347
-	 * Returns a single subscription's columns.
348
-	 *
349
-	 * @param WPInv_Subscription $subscription
350
-	 *
351
-	 * @return array
352
-	 */
353
-	public function get_single_subscription_columns( $subscription ) {
354
-
355
-		// Prepare subscription detail columns.
356
-		$subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_invoice_id(), $subscription->get_id() );
357
-		$items_count        = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] );
358
-		$fields             = apply_filters(
359
-			'getpaid_single_subscription_details_fields',
360
-			array(
361
-				'status'           => __( 'Status', 'invoicing' ),
362
-				'initial_amount'   => __( 'Initial amount', 'invoicing' ),
363
-				'recurring_amount' => __( 'Recurring amount', 'invoicing' ),
364
-				'start_date'       => __( 'Start date', 'invoicing' ),
365
-				'expiry_date'      => __( 'Next payment', 'invoicing' ),
366
-				'payments'         => __( 'Payments', 'invoicing' ),
367
-				'item'             => _n( 'Item', 'Items', $items_count, 'invoicing' ),
368
-			),
369
-			$subscription,
370
-			$items_count
371
-		);
372
-
373
-		if ( isset( $fields['expiry_date'] ) ) {
374
-
375
-			if ( ! $subscription->is_active() || $subscription->is_last_renewal() ) {
376
-				$fields['expiry_date'] = __( 'End date', 'invoicing' );
377
-			}
378
-
379
-			if ( 'pending' === $subscription->get_status() ) {
380
-				unset( $fields['expiry_date'] );
381
-			}
382
-		}
383
-
384
-		if ( isset( $fields['start_date'] ) && 'pending' === $subscription->get_status() ) {
385
-			unset( $fields['start_date'] );
386
-		}
387
-
388
-		if ( $subscription->get_initial_amount() === $subscription->get_recurring_amount() ) {
389
-			unset( $fields['initial_amount'] );
390
-		}
391
-
392
-		return $fields;
393
-	}
394
-
395
-	/**
396
-	 * Displays a single subscription.
397
-	 *
398
-	 * @param string $subscription
399
-	 *
400
-	 * @return string
401
-	 */
402
-	public function display_single_subscription( $subscription ) {
403
-
404
-		// Fetch the subscription.
405
-		$subscription = new WPInv_Subscription( (int) $subscription );
406
-
407
-		if ( ! $subscription->exists() ) {
408
-
409
-			return aui()->alert(
410
-				array(
411
-					'content' => wp_kses_post( __( 'Subscription not found.', 'invoicing' ) ),
412
-					'type'    => 'error',
413
-				)
414
-			);
415
-
416
-		}
417
-
418
-		// Ensure that the user owns this subscription key.
419
-		if ( get_current_user_id() != $subscription->get_customer_id() && ! wpinv_current_user_can_manage_invoicing() ) {
420
-
421
-			return aui()->alert(
422
-				array(
423
-					'content' => wp_kses_post( __( 'You do not have permission to view this subscription. Ensure that you are logged in to the account that owns the subscription.', 'invoicing' ) ),
424
-					'type'    => 'error',
425
-				)
426
-			);
427
-
428
-		}
429
-
430
-		return wpinv_get_template_html(
431
-			'subscriptions/subscription-details.php',
432
-			array(
433
-				'subscription' => $subscription,
434
-				'widget'       => $this,
435
-			)
436
-		);
437
-
438
-	}
344
+    }
345
+
346
+    /**
347
+     * Returns a single subscription's columns.
348
+     *
349
+     * @param WPInv_Subscription $subscription
350
+     *
351
+     * @return array
352
+     */
353
+    public function get_single_subscription_columns( $subscription ) {
354
+
355
+        // Prepare subscription detail columns.
356
+        $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_invoice_id(), $subscription->get_id() );
357
+        $items_count        = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] );
358
+        $fields             = apply_filters(
359
+            'getpaid_single_subscription_details_fields',
360
+            array(
361
+                'status'           => __( 'Status', 'invoicing' ),
362
+                'initial_amount'   => __( 'Initial amount', 'invoicing' ),
363
+                'recurring_amount' => __( 'Recurring amount', 'invoicing' ),
364
+                'start_date'       => __( 'Start date', 'invoicing' ),
365
+                'expiry_date'      => __( 'Next payment', 'invoicing' ),
366
+                'payments'         => __( 'Payments', 'invoicing' ),
367
+                'item'             => _n( 'Item', 'Items', $items_count, 'invoicing' ),
368
+            ),
369
+            $subscription,
370
+            $items_count
371
+        );
372
+
373
+        if ( isset( $fields['expiry_date'] ) ) {
374
+
375
+            if ( ! $subscription->is_active() || $subscription->is_last_renewal() ) {
376
+                $fields['expiry_date'] = __( 'End date', 'invoicing' );
377
+            }
378
+
379
+            if ( 'pending' === $subscription->get_status() ) {
380
+                unset( $fields['expiry_date'] );
381
+            }
382
+        }
383
+
384
+        if ( isset( $fields['start_date'] ) && 'pending' === $subscription->get_status() ) {
385
+            unset( $fields['start_date'] );
386
+        }
387
+
388
+        if ( $subscription->get_initial_amount() === $subscription->get_recurring_amount() ) {
389
+            unset( $fields['initial_amount'] );
390
+        }
391
+
392
+        return $fields;
393
+    }
394
+
395
+    /**
396
+     * Displays a single subscription.
397
+     *
398
+     * @param string $subscription
399
+     *
400
+     * @return string
401
+     */
402
+    public function display_single_subscription( $subscription ) {
403
+
404
+        // Fetch the subscription.
405
+        $subscription = new WPInv_Subscription( (int) $subscription );
406
+
407
+        if ( ! $subscription->exists() ) {
408
+
409
+            return aui()->alert(
410
+                array(
411
+                    'content' => wp_kses_post( __( 'Subscription not found.', 'invoicing' ) ),
412
+                    'type'    => 'error',
413
+                )
414
+            );
415
+
416
+        }
417
+
418
+        // Ensure that the user owns this subscription key.
419
+        if ( get_current_user_id() != $subscription->get_customer_id() && ! wpinv_current_user_can_manage_invoicing() ) {
420
+
421
+            return aui()->alert(
422
+                array(
423
+                    'content' => wp_kses_post( __( 'You do not have permission to view this subscription. Ensure that you are logged in to the account that owns the subscription.', 'invoicing' ) ),
424
+                    'type'    => 'error',
425
+                )
426
+            );
427
+
428
+        }
429
+
430
+        return wpinv_get_template_html(
431
+            'subscriptions/subscription-details.php',
432
+            array(
433
+                'subscription' => $subscription,
434
+                'widget'       => $this,
435
+            )
436
+        );
437
+
438
+    }
439 439
 
440 440
 }
Please login to merge, or discard this patch.
includes/class-getpaid-notification-email-sender.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -13,17 +13,17 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Notification_Email_Sender {
14 14
 
15 15
     /**
16
-	 * Whether or not we should inline CSS into the email.
17
-	 */
18
-	public $inline_css = true;
16
+     * Whether or not we should inline CSS into the email.
17
+     */
18
+    public $inline_css = true;
19 19
 
20 20
     /**
21
-	 * The wp_mail() data.
22
-	 */
21
+     * The wp_mail() data.
22
+     */
23 23
     public $wp_mail_data = null;
24 24
 
25 25
     /**
26
-	 * Sends a new email.
26
+     * Sends a new email.
27 27
      *
28 28
      * @param string|array $to The recipients email or an array of recipient emails.
29 29
      * @param string $subject The email's subject.
@@ -31,49 +31,49 @@  discard block
 block discarded – undo
31 31
      * @param array $attachments The email attachments.
32 32
      *
33 33
      * @return bool
34
-	 */
35
-	public function send( $to, $subject, $email, $attachments = array() ) {
34
+     */
35
+    public function send( $to, $subject, $email, $attachments = array() ) {
36 36
 
37
-		/*
37
+        /*
38 38
 		 * Allow to filter data on per-email basis.
39 39
 		 */
40
-		$data = apply_filters(
41
-			'getpaid_email_data',
42
-			array(
43
-				'to'          => array_filter( array_unique( wpinv_parse_list( $to ) ) ),
44
-				'subject'     => htmlspecialchars_decode( wp_strip_all_tags( $subject ), ENT_QUOTES ),
45
-				'email'       => apply_filters( 'wpinv_mail_content', $email ),
46
-				'headers'     => $this->get_headers(),
47
-				'attachments' => $attachments,
48
-			),
49
-			$this
50
-		);
40
+        $data = apply_filters(
41
+            'getpaid_email_data',
42
+            array(
43
+                'to'          => array_filter( array_unique( wpinv_parse_list( $to ) ) ),
44
+                'subject'     => htmlspecialchars_decode( wp_strip_all_tags( $subject ), ENT_QUOTES ),
45
+                'email'       => apply_filters( 'wpinv_mail_content', $email ),
46
+                'headers'     => $this->get_headers(),
47
+                'attachments' => $attachments,
48
+            ),
49
+            $this
50
+        );
51 51
 
52 52
         // Remove slashes.
53 53
         $data               = (array) wp_unslash( $data );
54 54
 
55 55
         // Cache it.
56
-		$this->wp_mail_data = $data;
56
+        $this->wp_mail_data = $data;
57 57
 
58
-		// Attach our own hooks.
59
-		$this->before_sending();
58
+        // Attach our own hooks.
59
+        $this->before_sending();
60 60
 
61 61
         $result = false;
62 62
 
63 63
         foreach ( $this->wp_mail_data['to'] as $to ) {
64
-			$result = $this->_send( $to, $data );
64
+            $result = $this->_send( $to, $data );
65 65
         }
66 66
 
67
-		// Remove our hooks.
68
-		$this->after_sending();
67
+        // Remove our hooks.
68
+        $this->after_sending();
69 69
 
70
-		$this->wp_mail_data = null;
70
+        $this->wp_mail_data = null;
71 71
 
72
-		return $result;
73
-	}
72
+        return $result;
73
+    }
74 74
 
75
-	/**
76
-	 * Does the actual sending.
75
+    /**
76
+     * Does the actual sending.
77 77
      *
78 78
      * @param string $to The recipient's email.
79 79
      * @param array $data The email's data.
@@ -81,81 +81,81 @@  discard block
 block discarded – undo
81 81
      * @param array $attachments The email attachments.
82 82
      *
83 83
      * @return bool
84
-	 */
85
-	protected function _send( $to, $data ) {
86
-
87
-		// Prepare the sending function.
88
-		$sending_function = apply_filters( 'getpaid_email_email_sending_function', 'wp_mail' );
89
-
90
-		// Send the actual email.
91
-		$result = call_user_func(
92
-			$sending_function,
93
-			$to,
94
-			html_entity_decode( $data['subject'], ENT_QUOTES, get_bloginfo( 'charset' ) ),
95
-			$data['email'],
96
-			$data['headers'],
97
-			$data['attachments']
98
-		);
99
-
100
-		if ( ! $result ) {
101
-			$log_message = wp_sprintf( __( "\nTime: %1\$s\nTo: %2\$s\nSubject: %3\$s\n", 'invoicing' ), date_i18n( 'F j Y H:i:s', current_time( 'timestamp' ) ), $to, $data['subject'] );
102
-			wpinv_error_log( $log_message, __( 'Email from Invoicing plugin failed to send', 'invoicing' ), __FILE__, __LINE__ );
103
-		}
104
-
105
-		return $result;
106
-	}
84
+     */
85
+    protected function _send( $to, $data ) {
86
+
87
+        // Prepare the sending function.
88
+        $sending_function = apply_filters( 'getpaid_email_email_sending_function', 'wp_mail' );
89
+
90
+        // Send the actual email.
91
+        $result = call_user_func(
92
+            $sending_function,
93
+            $to,
94
+            html_entity_decode( $data['subject'], ENT_QUOTES, get_bloginfo( 'charset' ) ),
95
+            $data['email'],
96
+            $data['headers'],
97
+            $data['attachments']
98
+        );
99
+
100
+        if ( ! $result ) {
101
+            $log_message = wp_sprintf( __( "\nTime: %1\$s\nTo: %2\$s\nSubject: %3\$s\n", 'invoicing' ), date_i18n( 'F j Y H:i:s', current_time( 'timestamp' ) ), $to, $data['subject'] );
102
+            wpinv_error_log( $log_message, __( 'Email from Invoicing plugin failed to send', 'invoicing' ), __FILE__, __LINE__ );
103
+        }
104
+
105
+        return $result;
106
+    }
107 107
 
108 108
     /**
109
-	 * Retrieves email headers.
110
-	 */
111
-	public function get_headers() {
109
+     * Retrieves email headers.
110
+     */
111
+    public function get_headers() {
112 112
 
113
-		$name       = $this->get_from_name();
114
-		$reply_to   = $this->get_reply_to();
115
-		$headers    = array( "Reply-To:$name <$reply_to>" );
113
+        $name       = $this->get_from_name();
114
+        $reply_to   = $this->get_reply_to();
115
+        $headers    = array( "Reply-To:$name <$reply_to>" );
116 116
 
117
-		return apply_filters( 'getpaid_email_headers', $headers, $this );
117
+        return apply_filters( 'getpaid_email_headers', $headers, $this );
118 118
 
119
-	}
119
+    }
120 120
 
121 121
     /**
122
-	 * Fires before an email is sent
123
-	 *
124
-	 * @since 1.0.0
125
-	 */
126
-	public function before_sending() {
122
+     * Fires before an email is sent
123
+     *
124
+     * @since 1.0.0
125
+     */
126
+    public function before_sending() {
127 127
 
128 128
         do_action( 'getpaid_before_send_email', $this );
129
-		add_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
130
-		add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
131
-		add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
132
-		add_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000 );
129
+        add_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
130
+        add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
131
+        add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
132
+        add_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000 );
133 133
 
134
-	}
134
+    }
135 135
 
136 136
     /**
137
-	 * Returns the from name.
138
-	 */
139
-	public function get_from_name() {
137
+     * Returns the from name.
138
+     */
139
+    public function get_from_name() {
140 140
 
141 141
         $from_name = wpinv_get_option( 'email_from_name', get_bloginfo( 'name' ) );
142 142
 
143
-		if ( empty( $from_name ) ) {
144
-			$from_name = get_bloginfo( 'name' );
143
+        if ( empty( $from_name ) ) {
144
+            $from_name = get_bloginfo( 'name' );
145 145
         }
146 146
 
147
-		return wp_specialchars_decode( $from_name, ENT_QUOTES );
147
+        return wp_specialchars_decode( $from_name, ENT_QUOTES );
148 148
     }
149 149
 
150 150
     /**
151
-	 * Returns the from email.
152
-	 */
153
-	public function get_from_address() {
151
+     * Returns the from email.
152
+     */
153
+    public function get_from_address() {
154 154
 
155 155
         $from_address = wpinv_get_option( 'email_from', $this->default_from_address() );
156 156
 
157
-		if ( ! is_email( $from_address ) ) {
158
-			$from_address = $this->default_from_address();
157
+        if ( ! is_email( $from_address ) ) {
158
+            $from_address = $this->default_from_address();
159 159
         }
160 160
 
161 161
         return $from_address;
@@ -163,75 +163,75 @@  discard block
 block discarded – undo
163 163
     }
164 164
 
165 165
     /**
166
-	 * The default emails from address.
167
-	 *
168
-	 * Defaults to wordpress@$sitename
169
-	 * Some hosts will block outgoing mail from this address if it doesn't exist,
170
-	 * but there's no easy alternative. Defaulting to admin_email might appear to be
171
-	 * another option, but some hosts may refuse to relay mail from an unknown domain.
172
-	 *
173
-	 */
174
-	public function default_from_address() {
175
-
176
-		// Get the site domain and get rid of www.
177
-		$sitename = strtolower( $_SERVER['SERVER_NAME'] );
178
-		if ( substr( $sitename, 0, 4 ) == 'www.' ) {
179
-			$sitename = substr( $sitename, 4 );
180
-		}
181
-
182
-		$from_email = 'wordpress@' . $sitename;
183
-
184
-		return apply_filters( 'getpaid_default_from_address', $from_email );
166
+     * The default emails from address.
167
+     *
168
+     * Defaults to wordpress@$sitename
169
+     * Some hosts will block outgoing mail from this address if it doesn't exist,
170
+     * but there's no easy alternative. Defaulting to admin_email might appear to be
171
+     * another option, but some hosts may refuse to relay mail from an unknown domain.
172
+     *
173
+     */
174
+    public function default_from_address() {
175
+
176
+        // Get the site domain and get rid of www.
177
+        $sitename = strtolower( $_SERVER['SERVER_NAME'] );
178
+        if ( substr( $sitename, 0, 4 ) == 'www.' ) {
179
+            $sitename = substr( $sitename, 4 );
180
+        }
181
+
182
+        $from_email = 'wordpress@' . $sitename;
183
+
184
+        return apply_filters( 'getpaid_default_from_address', $from_email );
185 185
 
186 186
     }
187 187
 
188 188
     /**
189
-	 * Get the email reply-to.
190
-	 *
191
-	 *
192
-	 * @return string The email reply-to address.
193
-	 */
194
-	public function get_reply_to() {
189
+     * Get the email reply-to.
190
+     *
191
+     *
192
+     * @return string The email reply-to address.
193
+     */
194
+    public function get_reply_to() {
195 195
 
196
-		$reply_to = current( wpinv_parse_list( wpinv_get_admin_email() ) );
196
+        $reply_to = current( wpinv_parse_list( wpinv_get_admin_email() ) );
197 197
 
198
-		if ( ! is_email( $reply_to ) ) {
199
-			$reply_to = get_option( 'admin_email' );
200
-		}
198
+        if ( ! is_email( $reply_to ) ) {
199
+            $reply_to = get_option( 'admin_email' );
200
+        }
201 201
 
202
-		return $reply_to;
202
+        return $reply_to;
203 203
     }
204 204
 
205 205
     /**
206
-	 * Get the email content type.
207
-	 *
208
-	 */
209
-	public function get_content_type() {
210
-		return apply_filters( 'getpaid_email_content_type', 'text/html', $this );
206
+     * Get the email content type.
207
+     *
208
+     */
209
+    public function get_content_type() {
210
+        return apply_filters( 'getpaid_email_content_type', 'text/html', $this );
211 211
     }
212 212
 
213 213
     /**
214
-	 * Ensures that our email messages are not messed up by template plugins.
215
-	 *
216
-	 * @return array wp_mail_data.
217
-	 */
218
-	public function ensure_email_content( $args ) {
219
-		$args['message'] = $this->wp_mail_data['email'];
220
-		return $args;
214
+     * Ensures that our email messages are not messed up by template plugins.
215
+     *
216
+     * @return array wp_mail_data.
217
+     */
218
+    public function ensure_email_content( $args ) {
219
+        $args['message'] = $this->wp_mail_data['email'];
220
+        return $args;
221 221
     }
222 222
 
223 223
     /**
224
-	 * A little house keeping after an email is sent.
225
-	 *
226
- 	 */
227
-	public function after_sending() {
224
+     * A little house keeping after an email is sent.
225
+     *
226
+     */
227
+    public function after_sending() {
228 228
 
229 229
         do_action( 'getpaid_after_send_email', $this->wp_mail_data );
230
-		remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
231
-		remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
232
-		remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
233
-		remove_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000 );
230
+        remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 );
231
+        remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 );
232
+        remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 );
233
+        remove_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000 );
234 234
 
235
-	}
235
+    }
236 236
 
237 237
 }
Please login to merge, or discard this patch.
includes/class-bp-getpaid-component.php 1 patch
Indentation   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -17,45 +17,45 @@  discard block
 block discarded – undo
17 17
  */
18 18
 class BP_GetPaid_Component extends BP_Component {
19 19
 
20
-	/**
21
-	 * Start the component setup process.
22
-	 *
23
-	 * @since 2.1.5
24
-	 */
25
-	public function __construct() {
26
-		parent::start(
27
-			'getpaid',
28
-			'GetPaid',
29
-			buddypress()->plugin_dir,
30
-			array(
31
-				'adminbar_myaccount_order' => 30,
32
-			)
33
-		);
34
-	}
20
+    /**
21
+     * Start the component setup process.
22
+     *
23
+     * @since 2.1.5
24
+     */
25
+    public function __construct() {
26
+        parent::start(
27
+            'getpaid',
28
+            'GetPaid',
29
+            buddypress()->plugin_dir,
30
+            array(
31
+                'adminbar_myaccount_order' => 30,
32
+            )
33
+        );
34
+    }
35 35
 
36 36
     /**
37
-	 * Set up component global variables.
38
-	 *
39
-	 * @since 2.1.5
40
-	 *
41
-	 *
42
-	 * @param array $args {
43
-	 *     All values are optional.
44
-	 *     @type string   $slug                  The component slug. Used to construct certain URLs, such as 'friends' in
45
-	 *                                           http://example.com/members/joe/friends/. Default: the value of $this->id.
46
-	 *     @type string   $root_slug             The component root slug. Note that this value is generally unused if the
47
-	 *                                           component has a root directory (the slug will be overridden by the
48
-	 *                                           post_name of the directory page). Default: the slug of the directory page
49
-	 *                                           if one is found, otherwise an empty string.
50
-	 *     @type bool     $has_directory         Set to true if the component requires an associated WordPress page.
51
-	 *     @type callable $notification_callback Optional. The callable function that formats the component's notifications.
52
-	 *     @type string   $search_term           Optional. The placeholder text in the component directory search box. Eg,
53
-	 *                                           'Search Groups...'.
54
-	 *     @type array    $global_tables         Optional. An array of database table names.
55
-	 *     @type array    $meta_tables           Optional. An array of metadata table names.
56
-	 * }
57
-	 */
58
-	public function setup_globals( $args = array() ) {
37
+     * Set up component global variables.
38
+     *
39
+     * @since 2.1.5
40
+     *
41
+     *
42
+     * @param array $args {
43
+     *     All values are optional.
44
+     *     @type string   $slug                  The component slug. Used to construct certain URLs, such as 'friends' in
45
+     *                                           http://example.com/members/joe/friends/. Default: the value of $this->id.
46
+     *     @type string   $root_slug             The component root slug. Note that this value is generally unused if the
47
+     *                                           component has a root directory (the slug will be overridden by the
48
+     *                                           post_name of the directory page). Default: the slug of the directory page
49
+     *                                           if one is found, otherwise an empty string.
50
+     *     @type bool     $has_directory         Set to true if the component requires an associated WordPress page.
51
+     *     @type callable $notification_callback Optional. The callable function that formats the component's notifications.
52
+     *     @type string   $search_term           Optional. The placeholder text in the component directory search box. Eg,
53
+     *                                           'Search Groups...'.
54
+     *     @type array    $global_tables         Optional. An array of database table names.
55
+     *     @type array    $meta_tables           Optional. An array of metadata table names.
56
+     * }
57
+     */
58
+    public function setup_globals( $args = array() ) {
59 59
         parent::setup_globals(
60 60
             array(
61 61
                 'id'            => 'getpaid',
@@ -64,21 +64,21 @@  discard block
 block discarded – undo
64 64
                 'has_directory' => false,
65 65
             )
66 66
         );
67
-	}
68
-
69
-	/**
70
-	 * Set up component navigation.
71
-	 *
72
-	 * @since 2.1.5
73
-	 *
74
-	 * @see BP_Component::setup_nav() for a description of arguments.
75
-	 *
76
-	 * @param array $main_nav Optional. See BP_Component::setup_nav() for description.
77
-	 * @param array $sub_nav  Optional. See BP_Component::setup_nav() for description.
78
-	 */
79
-	public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
80
-
81
-		// Abort if the integration is inactive.
67
+    }
68
+
69
+    /**
70
+     * Set up component navigation.
71
+     *
72
+     * @since 2.1.5
73
+     *
74
+     * @see BP_Component::setup_nav() for a description of arguments.
75
+     *
76
+     * @param array $main_nav Optional. See BP_Component::setup_nav() for description.
77
+     * @param array $sub_nav  Optional. See BP_Component::setup_nav() for description.
78
+     */
79
+    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
80
+
81
+        // Abort if the integration is inactive.
82 82
         if ( ! getpaid_is_buddypress_integration_active() || ! is_user_logged_in() ) {
83 83
             return;
84 84
         }
@@ -88,25 +88,25 @@  discard block
 block discarded – undo
88 88
             return;
89 89
         }
90 90
 
91
-		// Determine user to use.
92
-		$user_domain   = bp_loggedin_user_domain();
93
-		$slug          = 'getpaid';
94
-		$payments_link = trailingslashit( $user_domain . $slug );
95
-
96
-		// Add 'Payments' to the main navigation.
97
-		$main_nav = array(
98
-			'name'                    => _x( 'Billing', 'BuddyPress profile payments screen nav', 'invoicing' ),
99
-			'slug'                    => $slug,
100
-			'position'                => apply_filters( 'wpinv_bp_nav_position', wpinv_get_option( 'wpinv_menu_position', 91 ), $slug ),
101
-			'screen_function'         => array( $this, 'display_current_tab' ),
102
-			'default_subnav_slug'     => apply_filters( 'getpaid_default_tab', 'gp-edit-address' ),
91
+        // Determine user to use.
92
+        $user_domain   = bp_loggedin_user_domain();
93
+        $slug          = 'getpaid';
94
+        $payments_link = trailingslashit( $user_domain . $slug );
95
+
96
+        // Add 'Payments' to the main navigation.
97
+        $main_nav = array(
98
+            'name'                    => _x( 'Billing', 'BuddyPress profile payments screen nav', 'invoicing' ),
99
+            'slug'                    => $slug,
100
+            'position'                => apply_filters( 'wpinv_bp_nav_position', wpinv_get_option( 'wpinv_menu_position', 91 ), $slug ),
101
+            'screen_function'         => array( $this, 'display_current_tab' ),
102
+            'default_subnav_slug'     => apply_filters( 'getpaid_default_tab', 'gp-edit-address' ),
103 103
             'show_for_displayed_user' => false,
104
-			'item_css_id'             => $this->id,
105
-			'parent_url'              => $user_domain,
106
-			'parent_slug'             => buddypress()->slug,
107
-		);
104
+            'item_css_id'             => $this->id,
105
+            'parent_url'              => $user_domain,
106
+            'parent_slug'             => buddypress()->slug,
107
+        );
108 108
 
109
-		// Add the subnav items to the payments nav item if we are using a theme that supports this.
109
+        // Add the subnav items to the payments nav item if we are using a theme that supports this.
110 110
         foreach ( getpaid_get_user_content_tabs() as $_slug => $tab ) {
111 111
 
112 112
             $sub_nav[] = array(
@@ -116,8 +116,8 @@  discard block
 block discarded – undo
116 116
                 'parent_slug'             => $slug,
117 117
                 'position'                => 10,
118 118
                 'screen_function'         => function() use ( $tab ) {
119
-					$GLOBALS['getpaid_bp_current_tab'] = $tab;
120
-					$this->display_current_tab();
119
+                    $GLOBALS['getpaid_bp_current_tab'] = $tab;
120
+                    $this->display_current_tab();
121 121
                 },
122 122
                 'show_for_displayed_user' => false,
123 123
                 'item_css_id'             => "getpaid-bp-$_slug",
@@ -125,27 +125,27 @@  discard block
 block discarded – undo
125 125
 
126 126
         }
127 127
 
128
-		parent::setup_nav( $main_nav, $sub_nav );
129
-	}
130
-
131
-	/**
132
-	 * Set up the component entries in the WordPress Admin Bar.
133
-	 *
134
-	 * @since 2.1.5
135
-	 *
136
-	 * @see BP_Component::setup_nav() for a description of the $wp_admin_nav
137
-	 *      parameter array.
138
-	 *
139
-	 * @param array $wp_admin_nav See BP_Component::setup_admin_bar() for a
140
-	 *                            description.
141
-	 */
142
-	public function setup_admin_bar( $wp_admin_nav = array() ) {
128
+        parent::setup_nav( $main_nav, $sub_nav );
129
+    }
143 130
 
144
-		// Menus for logged in user.
145
-		if ( is_user_logged_in() ) {
146
-
147
-			// Setup the logged in user variables.
148
-			$payments_link = trailingslashit( bp_loggedin_user_domain() . 'getpaid/' );
131
+    /**
132
+     * Set up the component entries in the WordPress Admin Bar.
133
+     *
134
+     * @since 2.1.5
135
+     *
136
+     * @see BP_Component::setup_nav() for a description of the $wp_admin_nav
137
+     *      parameter array.
138
+     *
139
+     * @param array $wp_admin_nav See BP_Component::setup_admin_bar() for a
140
+     *                            description.
141
+     */
142
+    public function setup_admin_bar( $wp_admin_nav = array() ) {
143
+
144
+        // Menus for logged in user.
145
+        if ( is_user_logged_in() ) {
146
+
147
+            // Setup the logged in user variables.
148
+            $payments_link = trailingslashit( bp_loggedin_user_domain() . 'getpaid/' );
149 149
 
150 150
             // Add the "Payments" sub menu.
151 151
             $wp_admin_nav[] = array(
@@ -168,48 +168,48 @@  discard block
 block discarded – undo
168 168
             }
169 169
 }
170 170
 
171
-		parent::setup_admin_bar( $wp_admin_nav );
172
-	}
173
-
174
-	/**
175
-	 * Retrieves the current tab.
176
-	 *
177
-	 * @since 2.1.5
178
-	 */
179
-	public function get_current_tab() {
180
-		global $getpaid_bp_current_tab;
181
-
182
-		if ( empty( $getpaid_bp_current_tab ) ) {
183
-			return array(
184
-				'label'   => __( 'Invoices', 'invoicing' ),
185
-				'content' => '[wpinv_history]',
186
-				'icon'    => 'fas fa-file-invoice',
187
-			);
188
-		}
189
-
190
-		return $getpaid_bp_current_tab;
191
-	}
192
-
193
-	/**
194
-	 * Displays the current tab.
195
-	 *
196
-	 * @since 2.1.5
197
-	 */
198
-	public function display_current_tab() {
199
-
200
-		add_action( 'bp_template_content', array( $this, 'handle_display_current_tab' ) );
201
-		$template = apply_filters( 'bp_core_template_plugin', 'members/single/plugins' );
171
+        parent::setup_admin_bar( $wp_admin_nav );
172
+    }
173
+
174
+    /**
175
+     * Retrieves the current tab.
176
+     *
177
+     * @since 2.1.5
178
+     */
179
+    public function get_current_tab() {
180
+        global $getpaid_bp_current_tab;
181
+
182
+        if ( empty( $getpaid_bp_current_tab ) ) {
183
+            return array(
184
+                'label'   => __( 'Invoices', 'invoicing' ),
185
+                'content' => '[wpinv_history]',
186
+                'icon'    => 'fas fa-file-invoice',
187
+            );
188
+        }
189
+
190
+        return $getpaid_bp_current_tab;
191
+    }
192
+
193
+    /**
194
+     * Displays the current tab.
195
+     *
196
+     * @since 2.1.5
197
+     */
198
+    public function display_current_tab() {
199
+
200
+        add_action( 'bp_template_content', array( $this, 'handle_display_current_tab' ) );
201
+        $template = apply_filters( 'bp_core_template_plugin', 'members/single/plugins' );
202 202
 
203 203
         bp_core_load_template( apply_filters( 'wpinv_bp_core_template_plugin', $template ) );
204
-	}
205
-
206
-	/**
207
-	 * Handles the actual display of the current tab.
208
-	 *
209
-	 * @since 2.1.5
210
-	 */
211
-	public function handle_display_current_tab() {
212
-		echo getpaid_prepare_user_content_tab( $this->get_current_tab() );
213
-	}
204
+    }
205
+
206
+    /**
207
+     * Handles the actual display of the current tab.
208
+     *
209
+     * @since 2.1.5
210
+     */
211
+    public function handle_display_current_tab() {
212
+        echo getpaid_prepare_user_content_tab( $this->get_current_tab() );
213
+    }
214 214
 
215 215
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/class-aui.php 1 patch
Indentation   +295 added lines, -295 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
4
+    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -11,299 +11,299 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class AUI {
13 13
 
14
-	/**
15
-	 * Holds the class instance.
16
-	 *
17
-	 * @since 1.0.0
18
-	 * @var null
19
-	 */
20
-	private static $instance = null;
21
-
22
-	/**
23
-	 * Holds the current AUI version number.
24
-	 *
25
-	 * @var string $ver The current version number.
26
-	 */
27
-	public static $ver = '0.1.72';
28
-
29
-	public static $options = null;
30
-
31
-	/**
32
-	 * There can be only one.
33
-	 *
34
-	 * @since 1.0.0
35
-	 * @return AUI|null
36
-	 */
37
-	public static function instance() {
38
-		if ( self::$instance == null ) {
39
-			self::$instance = new AUI();
40
-		}
41
-
42
-		return self::$instance;
43
-	}
44
-
45
-	/**
46
-	 * AUI constructor.
47
-	 *
48
-	 * @since 1.0.0
49
-	 */
50
-	private function __construct() {
51
-		if ( function_exists( "__autoload" ) ) {
52
-			spl_autoload_register( "__autoload" );
53
-		}
54
-		spl_autoload_register( array( $this, 'autoload' ) );
55
-
56
-		// load options
57
-		self::$options = get_option('aui_options');
58
-	}
59
-
60
-	/**
61
-	 * Autoload any components on the fly.
62
-	 *
63
-	 * @since 1.0.0
64
-	 *
65
-	 * @param $classname
66
-	 */
67
-	private function autoload( $classname ) {
68
-		$class     = str_replace( '_', '-', strtolower( $classname ) );
69
-		$file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php';
70
-		if ( $file_path && is_readable( $file_path ) ) {
71
-			include_once( $file_path );
72
-		}
73
-	}
74
-
75
-	/**
76
-	 * Get the AUI options.
77
-	 *
78
-	 * @param $option
79
-	 *
80
-	 * @return string|void
81
-	 */
82
-	public function get_option( $option ){
83
-		$result = isset(self::$options[$option]) ? esc_attr(self::$options[$option]) : '';
84
-
85
-		if ( ! $result && $option) {
86
-			if( $option == 'color_primary' ){
87
-				$result = AUI_PRIMARY_COLOR;
88
-			}elseif( $option == 'color_secondary' ){
89
-				$result = AUI_SECONDARY_COLOR;
90
-			}
91
-		}
92
-		return $result;
93
-	}
94
-
95
-	public function render( $items = array(), $echo = false ) {
96
-		$output = '';
97
-
98
-		if ( ! empty( $items ) ) {
99
-			foreach ( $items as $args ) {
100
-				$render = isset( $args['render'] ) ? $args['render'] : '';
101
-				if ( $render && method_exists( __CLASS__, $render ) ) {
102
-					$output .= $this->$render( $args );
103
-				}
104
-			}
105
-		}
106
-
107
-		if ( $echo ) {
108
-			echo $output;
109
-		}else{
110
-			return $output;
111
-		}
112
-
113
-	}
114
-
115
-	/**
116
-	 * Render and return a bootstrap alert component.
117
-	 *
118
-	 * @since 1.0.0
119
-	 *
120
-	 * @param array $args The function arguments.
121
-	 * @param bool  $echo If we should return or echo.
122
-	 *
123
-	 * @return string The rendered component.
124
-	 */
125
-	public function alert( $args = array(), $echo = false ) {
126
-		$output = AUI_Component_Alert::get( $args );
127
-
128
-		if ( $echo ) {
129
-			echo $output;
130
-		}else{
131
-			return $output;
132
-		}
133
-	}
134
-
135
-	/**
136
-	 * Render and return a bootstrap input component.
137
-	 *
138
-	 * @since 1.0.0
139
-	 *
140
-	 * @param array $args The function arguments.
141
-	 * @param bool  $echo If we should return or echo.
142
-	 *
143
-	 * @return string The rendered component.
144
-	 */
145
-	public function input( $args = array(), $echo = false ) {
146
-		$output = AUI_Component_Input::input( $args );
147
-
148
-		if ( $echo ) {
149
-			echo $output;
150
-		}else{
151
-			return $output;
152
-		}
153
-	}
154
-
155
-	/**
156
-	 * Render and return a bootstrap textarea component.
157
-	 *
158
-	 * @since 1.0.0
159
-	 *
160
-	 * @param array $args The function arguments.
161
-	 * @param bool  $echo If we should return or echo.
162
-	 *
163
-	 * @return string The rendered component.
164
-	 */
165
-	public function textarea( $args = array(), $echo = false ) {
166
-		$output = AUI_Component_Input::textarea( $args );
167
-
168
-		if ( $echo ) {
169
-			echo $output;
170
-		}else{
171
-			return $output;
172
-		}
173
-	}
174
-
175
-	/**
176
-	 * Render and return a bootstrap button component.
177
-	 *
178
-	 * @since 1.0.0
179
-	 *
180
-	 * @param array $args The function arguments.
181
-	 * @param bool  $echo If we should return or echo.
182
-	 *
183
-	 * @return string The rendered component.
184
-	 */
185
-	public function button( $args = array(), $echo = false ) {
186
-		$output = AUI_Component_Button::get( $args );
187
-
188
-		if ( $echo ) {
189
-			echo $output;
190
-		}else{
191
-			return $output;
192
-		}
193
-	}
194
-
195
-	/**
196
-	 * Render and return a bootstrap button component.
197
-	 *
198
-	 * @since 1.0.0
199
-	 *
200
-	 * @param array $args The function arguments.
201
-	 * @param bool  $echo If we should return or echo.
202
-	 *
203
-	 * @return string The rendered component.
204
-	 */
205
-	public function badge( $args = array(), $echo = false ) {
206
-		$defaults = array(
207
-			'class' => 'badge badge-primary align-middle',
208
-		);
209
-
210
-		// maybe set type.
211
-		if ( empty( $args['href'] ) ) {
212
-			$defaults['type'] = 'badge';
213
-		}
214
-
215
-		/**
216
-		 * Parse incoming $args into an array and merge it with $defaults
217
-		 */
218
-		$args = wp_parse_args( $args, $defaults );
219
-
220
-		$output = AUI_Component_Button::get( $args );
221
-
222
-		if ( $echo ) {
223
-			echo $output;
224
-		}else{
225
-			return $output;
226
-		}
227
-	}
228
-
229
-	/**
230
-	 * Render and return a bootstrap dropdown component.
231
-	 *
232
-	 * @since 1.0.0
233
-	 *
234
-	 * @param array $args The function arguments.
235
-	 * @param bool  $echo If we should return or echo.
236
-	 *
237
-	 * @return string The rendered component.
238
-	 */
239
-	public function dropdown( $args = array(), $echo = false ) {
240
-		$output = AUI_Component_Dropdown::get( $args );
241
-
242
-		if ( $echo ) {
243
-			echo $output;
244
-		}else{
245
-			return $output;
246
-		}
247
-	}
248
-
249
-	/**
250
-	 * Render and return a bootstrap select component.
251
-	 *
252
-	 * @since 1.0.0
253
-	 *
254
-	 * @param array $args The function arguments.
255
-	 * @param bool  $echo If we should return or echo.
256
-	 *
257
-	 * @return string The rendered component.
258
-	 */
259
-	public function select( $args = array(), $echo = false ) {
260
-		$output = AUI_Component_Input::select( $args );
261
-
262
-		if ( $echo ) {
263
-			echo $output;
264
-		}else{
265
-			return $output;
266
-		}
267
-	}
268
-
269
-	/**
270
-	 * Render and return a bootstrap radio component.
271
-	 *
272
-	 * @since 1.0.0
273
-	 *
274
-	 * @param array $args The function arguments.
275
-	 * @param bool  $echo If we should return or echo.
276
-	 *
277
-	 * @return string The rendered component.
278
-	 */
279
-	public function radio( $args = array(), $echo = false ) {
280
-		$output = AUI_Component_Input::radio( $args );
281
-
282
-		if ( $echo ) {
283
-			echo $output;
284
-		}else{
285
-			return $output;
286
-		}
287
-	}
288
-
289
-	/**
290
-	 * Render and return a bootstrap pagination component.
291
-	 *
292
-	 * @since 1.0.0
293
-	 *
294
-	 * @param array $args The function arguments.
295
-	 * @param bool  $echo If we should return or echo.
296
-	 *
297
-	 * @return string The rendered component.
298
-	 */
299
-	public function pagination( $args = array(), $echo = false ) {
300
-		$output = AUI_Component_Pagination::get( $args );
301
-
302
-		if ( $echo ) {
303
-			echo $output;
304
-		}else{
305
-			return $output;
306
-		}
307
-	}
14
+    /**
15
+     * Holds the class instance.
16
+     *
17
+     * @since 1.0.0
18
+     * @var null
19
+     */
20
+    private static $instance = null;
21
+
22
+    /**
23
+     * Holds the current AUI version number.
24
+     *
25
+     * @var string $ver The current version number.
26
+     */
27
+    public static $ver = '0.1.72';
28
+
29
+    public static $options = null;
30
+
31
+    /**
32
+     * There can be only one.
33
+     *
34
+     * @since 1.0.0
35
+     * @return AUI|null
36
+     */
37
+    public static function instance() {
38
+        if ( self::$instance == null ) {
39
+            self::$instance = new AUI();
40
+        }
41
+
42
+        return self::$instance;
43
+    }
44
+
45
+    /**
46
+     * AUI constructor.
47
+     *
48
+     * @since 1.0.0
49
+     */
50
+    private function __construct() {
51
+        if ( function_exists( "__autoload" ) ) {
52
+            spl_autoload_register( "__autoload" );
53
+        }
54
+        spl_autoload_register( array( $this, 'autoload' ) );
55
+
56
+        // load options
57
+        self::$options = get_option('aui_options');
58
+    }
59
+
60
+    /**
61
+     * Autoload any components on the fly.
62
+     *
63
+     * @since 1.0.0
64
+     *
65
+     * @param $classname
66
+     */
67
+    private function autoload( $classname ) {
68
+        $class     = str_replace( '_', '-', strtolower( $classname ) );
69
+        $file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php';
70
+        if ( $file_path && is_readable( $file_path ) ) {
71
+            include_once( $file_path );
72
+        }
73
+    }
74
+
75
+    /**
76
+     * Get the AUI options.
77
+     *
78
+     * @param $option
79
+     *
80
+     * @return string|void
81
+     */
82
+    public function get_option( $option ){
83
+        $result = isset(self::$options[$option]) ? esc_attr(self::$options[$option]) : '';
84
+
85
+        if ( ! $result && $option) {
86
+            if( $option == 'color_primary' ){
87
+                $result = AUI_PRIMARY_COLOR;
88
+            }elseif( $option == 'color_secondary' ){
89
+                $result = AUI_SECONDARY_COLOR;
90
+            }
91
+        }
92
+        return $result;
93
+    }
94
+
95
+    public function render( $items = array(), $echo = false ) {
96
+        $output = '';
97
+
98
+        if ( ! empty( $items ) ) {
99
+            foreach ( $items as $args ) {
100
+                $render = isset( $args['render'] ) ? $args['render'] : '';
101
+                if ( $render && method_exists( __CLASS__, $render ) ) {
102
+                    $output .= $this->$render( $args );
103
+                }
104
+            }
105
+        }
106
+
107
+        if ( $echo ) {
108
+            echo $output;
109
+        }else{
110
+            return $output;
111
+        }
112
+
113
+    }
114
+
115
+    /**
116
+     * Render and return a bootstrap alert component.
117
+     *
118
+     * @since 1.0.0
119
+     *
120
+     * @param array $args The function arguments.
121
+     * @param bool  $echo If we should return or echo.
122
+     *
123
+     * @return string The rendered component.
124
+     */
125
+    public function alert( $args = array(), $echo = false ) {
126
+        $output = AUI_Component_Alert::get( $args );
127
+
128
+        if ( $echo ) {
129
+            echo $output;
130
+        }else{
131
+            return $output;
132
+        }
133
+    }
134
+
135
+    /**
136
+     * Render and return a bootstrap input component.
137
+     *
138
+     * @since 1.0.0
139
+     *
140
+     * @param array $args The function arguments.
141
+     * @param bool  $echo If we should return or echo.
142
+     *
143
+     * @return string The rendered component.
144
+     */
145
+    public function input( $args = array(), $echo = false ) {
146
+        $output = AUI_Component_Input::input( $args );
147
+
148
+        if ( $echo ) {
149
+            echo $output;
150
+        }else{
151
+            return $output;
152
+        }
153
+    }
154
+
155
+    /**
156
+     * Render and return a bootstrap textarea component.
157
+     *
158
+     * @since 1.0.0
159
+     *
160
+     * @param array $args The function arguments.
161
+     * @param bool  $echo If we should return or echo.
162
+     *
163
+     * @return string The rendered component.
164
+     */
165
+    public function textarea( $args = array(), $echo = false ) {
166
+        $output = AUI_Component_Input::textarea( $args );
167
+
168
+        if ( $echo ) {
169
+            echo $output;
170
+        }else{
171
+            return $output;
172
+        }
173
+    }
174
+
175
+    /**
176
+     * Render and return a bootstrap button component.
177
+     *
178
+     * @since 1.0.0
179
+     *
180
+     * @param array $args The function arguments.
181
+     * @param bool  $echo If we should return or echo.
182
+     *
183
+     * @return string The rendered component.
184
+     */
185
+    public function button( $args = array(), $echo = false ) {
186
+        $output = AUI_Component_Button::get( $args );
187
+
188
+        if ( $echo ) {
189
+            echo $output;
190
+        }else{
191
+            return $output;
192
+        }
193
+    }
194
+
195
+    /**
196
+     * Render and return a bootstrap button component.
197
+     *
198
+     * @since 1.0.0
199
+     *
200
+     * @param array $args The function arguments.
201
+     * @param bool  $echo If we should return or echo.
202
+     *
203
+     * @return string The rendered component.
204
+     */
205
+    public function badge( $args = array(), $echo = false ) {
206
+        $defaults = array(
207
+            'class' => 'badge badge-primary align-middle',
208
+        );
209
+
210
+        // maybe set type.
211
+        if ( empty( $args['href'] ) ) {
212
+            $defaults['type'] = 'badge';
213
+        }
214
+
215
+        /**
216
+         * Parse incoming $args into an array and merge it with $defaults
217
+         */
218
+        $args = wp_parse_args( $args, $defaults );
219
+
220
+        $output = AUI_Component_Button::get( $args );
221
+
222
+        if ( $echo ) {
223
+            echo $output;
224
+        }else{
225
+            return $output;
226
+        }
227
+    }
228
+
229
+    /**
230
+     * Render and return a bootstrap dropdown component.
231
+     *
232
+     * @since 1.0.0
233
+     *
234
+     * @param array $args The function arguments.
235
+     * @param bool  $echo If we should return or echo.
236
+     *
237
+     * @return string The rendered component.
238
+     */
239
+    public function dropdown( $args = array(), $echo = false ) {
240
+        $output = AUI_Component_Dropdown::get( $args );
241
+
242
+        if ( $echo ) {
243
+            echo $output;
244
+        }else{
245
+            return $output;
246
+        }
247
+    }
248
+
249
+    /**
250
+     * Render and return a bootstrap select component.
251
+     *
252
+     * @since 1.0.0
253
+     *
254
+     * @param array $args The function arguments.
255
+     * @param bool  $echo If we should return or echo.
256
+     *
257
+     * @return string The rendered component.
258
+     */
259
+    public function select( $args = array(), $echo = false ) {
260
+        $output = AUI_Component_Input::select( $args );
261
+
262
+        if ( $echo ) {
263
+            echo $output;
264
+        }else{
265
+            return $output;
266
+        }
267
+    }
268
+
269
+    /**
270
+     * Render and return a bootstrap radio component.
271
+     *
272
+     * @since 1.0.0
273
+     *
274
+     * @param array $args The function arguments.
275
+     * @param bool  $echo If we should return or echo.
276
+     *
277
+     * @return string The rendered component.
278
+     */
279
+    public function radio( $args = array(), $echo = false ) {
280
+        $output = AUI_Component_Input::radio( $args );
281
+
282
+        if ( $echo ) {
283
+            echo $output;
284
+        }else{
285
+            return $output;
286
+        }
287
+    }
288
+
289
+    /**
290
+     * Render and return a bootstrap pagination component.
291
+     *
292
+     * @since 1.0.0
293
+     *
294
+     * @param array $args The function arguments.
295
+     * @param bool  $echo If we should return or echo.
296
+     *
297
+     * @return string The rendered component.
298
+     */
299
+    public function pagination( $args = array(), $echo = false ) {
300
+        $output = AUI_Component_Pagination::get( $args );
301
+
302
+        if ( $echo ) {
303
+            echo $output;
304
+        }else{
305
+            return $output;
306
+        }
307
+    }
308 308
 
309 309
 }
310 310
\ No newline at end of file
Please login to merge, or discard this patch.