Passed
Push — master ( 9f060d...75dadc )
by Brian
04:41
created
includes/data/item-schema.php 2 patches
Indentation   +235 added lines, -235 removed lines patch added patch discarded remove patch
@@ -13,240 +13,240 @@
 block discarded – undo
13 13
 
14 14
 return array(
15 15
 
16
-	'id'              => array(
17
-		'description' => __( 'Unique identifier for the item.', 'invoicing' ),
18
-		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
20
-		'readonly'    => true,
21
-	),
22
-
23
-	'parent_id'       => array(
24
-		'description' => __( 'Parent item ID.', 'invoicing' ),
25
-		'type'        => 'integer',
26
-		'context'     => array( 'view', 'edit', 'embed' ),
27
-		'default'     => 0,
28
-	),
29
-
30
-	'status'          => array(
31
-		'description' => __( 'A named status for the item.', 'invoicing' ),
32
-		'type'        => 'string',
33
-		'enum'        => array( 'draft', 'pending', 'publish' ),
34
-		'context'     => array( 'view', 'edit', 'embed' ),
35
-		'default'     => 'draft',
36
-	),
37
-
38
-	'version'         => array(
39
-		'description' => __( 'Plugin version when the item was created.', 'invoicing' ),
40
-		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit' ),
42
-		'readonly'    => true,
43
-	),
44
-
45
-	'date_created'    => array(
46
-		'description' => __( "The date the item was created, in the site's timezone.", 'invoicing' ),
47
-		'type'        => 'string',
48
-		'context'     => array( 'view', 'edit', 'embed' ),
49
-	),
50
-
51
-	'date_created_gmt'    => array(
52
-		'description' => __( 'The GMT date the item was created.', 'invoicing' ),
53
-		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
55
-		'readonly'    => true,
56
-	),
57
-
58
-	'date_modified'   => array(
59
-		'description' => __( "The date the item was last modified, in the site's timezone.", 'invoicing' ),
60
-		'type'        => 'string',
61
-		'context'     => array( 'view', 'edit', 'embed' ),
62
-		'readonly'    => true,
63
-	),
64
-
65
-	'date_modified_gmt'    => array(
66
-		'description' => __( 'The GMT date the item was last modified.', 'invoicing' ),
67
-		'type'        => 'string',
68
-		'context'     => array( 'view', 'edit', 'embed' ),
69
-		'readonly'    => true,
70
-	),
71
-
72
-	'name'			  => array(
73
-		'description' => __( "The item's name.", 'invoicing' ),
74
-		'type'        => 'string',
75
-		'context'     => array( 'view', 'edit', 'embed' ),
76
-		'required'    => true,
77
-	),
78
-
79
-	'description'     => array(
80
-		'description' => __( "The item's description.", 'invoicing' ),
81
-		'type'        => 'string',
82
-		'context'     => array( 'view', 'edit', 'embed' ),
83
-	),
84
-
85
-	'owner'           => array(
86
-		'description' => __( 'The owner of the item (user id).', 'invoicing' ),
87
-		'type'        => 'integer',
88
-		'context'     => array( 'view', 'edit', 'embed' ),
89
-	),
90
-
91
-	'price'           => array(
92
-		'description' => __( 'The price of the item.', 'invoicing' ),
93
-		'type'        => 'number',
94
-		'context'     => array( 'view', 'edit', 'embed' ),
95
-		'required'    => true,
96
-	),
97
-
98
-	'the_price'       => array(
99
-		'description' => __( 'The formatted price of the item.', 'invoicing' ),
100
-		'type'        => 'string',
101
-		'context'     => array( 'view', 'edit', 'embed' ),
102
-		'readonly'    => true,
103
-	),
104
-
105
-	'type'       => array(
106
-		'description' => __( 'The item type.', 'invoicing' ),
107
-		'type'        => 'string',
108
-		'enum'        => wpinv_item_types(),
109
-		'default'     => 'custom',
110
-		'context'     => array( 'view', 'edit', 'embed' ),
111
-	),
112
-
113
-	'vat_rule'       => array(
114
-		'description' => __( 'VAT rule applied to the item.', 'invoicing' ),
115
-		'type'        => 'string',
116
-		'enum'        => array_keys( getpaid_tax()->get_rules() ),
117
-		'context'     => array( 'view', 'edit', 'embed' ),
118
-	),
119
-
120
-	'vat_class'       => array(
121
-		'description' => __( 'VAT class for the item.', 'invoicing' ),
122
-		'type'        => 'string',
123
-		'context'     => array( 'view', 'edit', 'embed' ),
124
-		'enum'        => array_keys( getpaid_tax()->get_vat_groups() ),
125
-	),
126
-
127
-	'custom_id'       => array(
128
-		'description' => __( 'Custom id for the item.', 'invoicing' ),
129
-		'type'        => 'string',
130
-		'context'     => array( 'view', 'edit', 'embed' ),
131
-	),
16
+    'id'              => array(
17
+        'description' => __( 'Unique identifier for the item.', 'invoicing' ),
18
+        'type'        => 'integer',
19
+        'context'     => array( 'view', 'edit', 'embed' ),
20
+        'readonly'    => true,
21
+    ),
22
+
23
+    'parent_id'       => array(
24
+        'description' => __( 'Parent item ID.', 'invoicing' ),
25
+        'type'        => 'integer',
26
+        'context'     => array( 'view', 'edit', 'embed' ),
27
+        'default'     => 0,
28
+    ),
29
+
30
+    'status'          => array(
31
+        'description' => __( 'A named status for the item.', 'invoicing' ),
32
+        'type'        => 'string',
33
+        'enum'        => array( 'draft', 'pending', 'publish' ),
34
+        'context'     => array( 'view', 'edit', 'embed' ),
35
+        'default'     => 'draft',
36
+    ),
37
+
38
+    'version'         => array(
39
+        'description' => __( 'Plugin version when the item was created.', 'invoicing' ),
40
+        'type'        => 'string',
41
+        'context'     => array( 'view', 'edit' ),
42
+        'readonly'    => true,
43
+    ),
44
+
45
+    'date_created'    => array(
46
+        'description' => __( "The date the item was created, in the site's timezone.", 'invoicing' ),
47
+        'type'        => 'string',
48
+        'context'     => array( 'view', 'edit', 'embed' ),
49
+    ),
50
+
51
+    'date_created_gmt'    => array(
52
+        'description' => __( 'The GMT date the item was created.', 'invoicing' ),
53
+        'type'        => 'string',
54
+        'context'     => array( 'view', 'edit', 'embed' ),
55
+        'readonly'    => true,
56
+    ),
57
+
58
+    'date_modified'   => array(
59
+        'description' => __( "The date the item was last modified, in the site's timezone.", 'invoicing' ),
60
+        'type'        => 'string',
61
+        'context'     => array( 'view', 'edit', 'embed' ),
62
+        'readonly'    => true,
63
+    ),
64
+
65
+    'date_modified_gmt'    => array(
66
+        'description' => __( 'The GMT date the item was last modified.', 'invoicing' ),
67
+        'type'        => 'string',
68
+        'context'     => array( 'view', 'edit', 'embed' ),
69
+        'readonly'    => true,
70
+    ),
71
+
72
+    'name'			  => array(
73
+        'description' => __( "The item's name.", 'invoicing' ),
74
+        'type'        => 'string',
75
+        'context'     => array( 'view', 'edit', 'embed' ),
76
+        'required'    => true,
77
+    ),
78
+
79
+    'description'     => array(
80
+        'description' => __( "The item's description.", 'invoicing' ),
81
+        'type'        => 'string',
82
+        'context'     => array( 'view', 'edit', 'embed' ),
83
+    ),
84
+
85
+    'owner'           => array(
86
+        'description' => __( 'The owner of the item (user id).', 'invoicing' ),
87
+        'type'        => 'integer',
88
+        'context'     => array( 'view', 'edit', 'embed' ),
89
+    ),
90
+
91
+    'price'           => array(
92
+        'description' => __( 'The price of the item.', 'invoicing' ),
93
+        'type'        => 'number',
94
+        'context'     => array( 'view', 'edit', 'embed' ),
95
+        'required'    => true,
96
+    ),
97
+
98
+    'the_price'       => array(
99
+        'description' => __( 'The formatted price of the item.', 'invoicing' ),
100
+        'type'        => 'string',
101
+        'context'     => array( 'view', 'edit', 'embed' ),
102
+        'readonly'    => true,
103
+    ),
104
+
105
+    'type'       => array(
106
+        'description' => __( 'The item type.', 'invoicing' ),
107
+        'type'        => 'string',
108
+        'enum'        => wpinv_item_types(),
109
+        'default'     => 'custom',
110
+        'context'     => array( 'view', 'edit', 'embed' ),
111
+    ),
112
+
113
+    'vat_rule'       => array(
114
+        'description' => __( 'VAT rule applied to the item.', 'invoicing' ),
115
+        'type'        => 'string',
116
+        'enum'        => array_keys( getpaid_tax()->get_rules() ),
117
+        'context'     => array( 'view', 'edit', 'embed' ),
118
+    ),
119
+
120
+    'vat_class'       => array(
121
+        'description' => __( 'VAT class for the item.', 'invoicing' ),
122
+        'type'        => 'string',
123
+        'context'     => array( 'view', 'edit', 'embed' ),
124
+        'enum'        => array_keys( getpaid_tax()->get_vat_groups() ),
125
+    ),
126
+
127
+    'custom_id'       => array(
128
+        'description' => __( 'Custom id for the item.', 'invoicing' ),
129
+        'type'        => 'string',
130
+        'context'     => array( 'view', 'edit', 'embed' ),
131
+    ),
132 132
 	
133
-	'custom_name'       => array(
134
-		'description' => __( 'Custom name for the item.', 'invoicing' ),
135
-		'type'        => 'string',
136
-		'context'     => array( 'view', 'edit', 'embed' ),
137
-	),
138
-
139
-	'custom_singular_name'       => array(
140
-		'description' => __( 'Custom singular name for the item.', 'invoicing' ),
141
-		'type'        => 'string',
142
-		'context'     => array( 'view', 'edit', 'embed' ),
143
-	),
144
-
145
-	'is_editable'     => array(
146
-		'description' => __( 'Whether or not the item is editable.', 'invoicing' ),
147
-		'type'        => 'integer',
148
-		'enum'        => array( 0, 1 ),
149
-		'context'     => array( 'view', 'edit', 'embed' ),
150
-	),
151
-
152
-	'is_dynamic_pricing'     => array(
153
-		'description' => __( 'Whether or not customers can enter their own prices when checking out.', 'invoicing' ),
154
-		'type'        => 'integer',
155
-		'enum'        => array( 0, 1 ),
156
-		'context'     => array( 'view', 'edit', 'embed' ),
157
-	),
158
-
159
-	'minimum_price'   => array(
160
-		'description' => __( 'For dynamic prices, this is the minimum price that a user can set.', 'invoicing' ),
161
-		'type'        => 'number',
162
-		'context'     => array( 'view', 'edit', 'embed' ),
163
-	),
164
-
165
-	'is_recurring'        => array(
166
-		'description' => __( 'Whether or not this is a subscription item.', 'invoicing' ),
167
-		'type'        => 'integer',
168
-		'enum'        => array( 0, 1 ),
169
-		'context'     => array( 'view', 'edit', 'embed' ),
170
-	),
171
-
172
-	'initial_price'   => array(
173
-		'description' => __( 'The initial price of the item.', 'invoicing' ),
174
-		'type'        => 'number',
175
-		'context'     => array( 'view', 'edit', 'embed' ),
176
-		'readonly'    => true,
177
-	),
178
-
179
-	'the_initial_price'       => array(
180
-		'description' => __( 'The formatted initial price of the item.', 'invoicing' ),
181
-		'type'        => 'string',
182
-		'context'     => array( 'view', 'edit', 'embed' ),
183
-		'readonly'    => true,
184
-	),
185
-
186
-	'recurring_price' => array(
187
-		'description' => __( 'The recurring price of the item.', 'invoicing' ),
188
-		'type'        => 'number',
189
-		'context'     => array( 'view', 'edit', 'embed' ),
190
-		'readonly'    => true,
191
-	),
192
-
193
-	'the_recurring_price'       => array(
194
-		'description' => __( 'The formatted recurring price of the item.', 'invoicing' ),
195
-		'type'        => 'string',
196
-		'context'     => array( 'view', 'edit', 'embed' ),
197
-		'readonly'    => true,
198
-	),
199
-
200
-	'recurring_period'        => array(
201
-		'description' => __( 'The recurring period for a recurring item.', 'invoicing' ),
202
-		'type'        => 'string',
203
-		'context'     => array( 'view', 'edit', 'embed' ),
204
-		'enum'        => array( 'D', 'W', 'M', 'Y' ),
205
-	),
206
-
207
-	'recurring_interval'        => array(
208
-		'description' => __( 'The recurring interval for a subscription item.', 'invoicing' ),
209
-		'type'        => 'integer',
210
-		'context'     => array( 'view', 'edit', 'embed' ),
211
-	),
212
-
213
-	'recurring_limit' => array(
214
-		'description' => __( 'The maximum number of renewals for a subscription item.', 'invoicing' ),
215
-		'type'        => 'integer',
216
-		'context'     => array( 'view', 'edit', 'embed' ),
217
-	),
218
-
219
-	'is_free_trial'   => array(
220
-		'description' => __( 'Whether the item has a free trial period.', 'invoicing' ),
221
-		'type'        => 'integer',
222
-		'enum'        => array( 0, 1 ),
223
-		'context'     => array( 'view', 'edit', 'embed' ),
224
-	),
225
-
226
-	'trial_period'    => array(
227
-		'description' => __( 'The trial period.', 'invoicing' ),
228
-		'type'        => 'string',
229
-		'context'     => array( 'view', 'edit', 'embed' ),
230
-		'enum'        => array( 'D', 'W', 'M', 'Y' ),
231
-	),
232
-
233
-	'trial_interval'  => array(
234
-		'description' => __( 'The trial interval.', 'invoicing' ),
235
-		'type'        => 'integer',
236
-		'context'     => array( 'view', 'edit', 'embed' ),
237
-	),
238
-
239
-	'first_renewal_date'       => array(
240
-		'description' => __( 'The first renewal date in case the item was to be bought today.', 'invoicing' ),
241
-		'type'        => 'string',
242
-		'context'     => array( 'view', 'edit', 'embed' ),
243
-		'readonly'    => true,
244
-	),
245
-
246
-	'edit_url'        => array(
247
-		'description' => __( 'The URL to edit an item.', 'invoicing' ),
248
-		'type'        => 'string',
249
-		'context'     => array( 'view', 'edit', 'embed' ),
250
-		'readonly'    => true,
251
-	),
133
+    'custom_name'       => array(
134
+        'description' => __( 'Custom name for the item.', 'invoicing' ),
135
+        'type'        => 'string',
136
+        'context'     => array( 'view', 'edit', 'embed' ),
137
+    ),
138
+
139
+    'custom_singular_name'       => array(
140
+        'description' => __( 'Custom singular name for the item.', 'invoicing' ),
141
+        'type'        => 'string',
142
+        'context'     => array( 'view', 'edit', 'embed' ),
143
+    ),
144
+
145
+    'is_editable'     => array(
146
+        'description' => __( 'Whether or not the item is editable.', 'invoicing' ),
147
+        'type'        => 'integer',
148
+        'enum'        => array( 0, 1 ),
149
+        'context'     => array( 'view', 'edit', 'embed' ),
150
+    ),
151
+
152
+    'is_dynamic_pricing'     => array(
153
+        'description' => __( 'Whether or not customers can enter their own prices when checking out.', 'invoicing' ),
154
+        'type'        => 'integer',
155
+        'enum'        => array( 0, 1 ),
156
+        'context'     => array( 'view', 'edit', 'embed' ),
157
+    ),
158
+
159
+    'minimum_price'   => array(
160
+        'description' => __( 'For dynamic prices, this is the minimum price that a user can set.', 'invoicing' ),
161
+        'type'        => 'number',
162
+        'context'     => array( 'view', 'edit', 'embed' ),
163
+    ),
164
+
165
+    'is_recurring'        => array(
166
+        'description' => __( 'Whether or not this is a subscription item.', 'invoicing' ),
167
+        'type'        => 'integer',
168
+        'enum'        => array( 0, 1 ),
169
+        'context'     => array( 'view', 'edit', 'embed' ),
170
+    ),
171
+
172
+    'initial_price'   => array(
173
+        'description' => __( 'The initial price of the item.', 'invoicing' ),
174
+        'type'        => 'number',
175
+        'context'     => array( 'view', 'edit', 'embed' ),
176
+        'readonly'    => true,
177
+    ),
178
+
179
+    'the_initial_price'       => array(
180
+        'description' => __( 'The formatted initial price of the item.', 'invoicing' ),
181
+        'type'        => 'string',
182
+        'context'     => array( 'view', 'edit', 'embed' ),
183
+        'readonly'    => true,
184
+    ),
185
+
186
+    'recurring_price' => array(
187
+        'description' => __( 'The recurring price of the item.', 'invoicing' ),
188
+        'type'        => 'number',
189
+        'context'     => array( 'view', 'edit', 'embed' ),
190
+        'readonly'    => true,
191
+    ),
192
+
193
+    'the_recurring_price'       => array(
194
+        'description' => __( 'The formatted recurring price of the item.', 'invoicing' ),
195
+        'type'        => 'string',
196
+        'context'     => array( 'view', 'edit', 'embed' ),
197
+        'readonly'    => true,
198
+    ),
199
+
200
+    'recurring_period'        => array(
201
+        'description' => __( 'The recurring period for a recurring item.', 'invoicing' ),
202
+        'type'        => 'string',
203
+        'context'     => array( 'view', 'edit', 'embed' ),
204
+        'enum'        => array( 'D', 'W', 'M', 'Y' ),
205
+    ),
206
+
207
+    'recurring_interval'        => array(
208
+        'description' => __( 'The recurring interval for a subscription item.', 'invoicing' ),
209
+        'type'        => 'integer',
210
+        'context'     => array( 'view', 'edit', 'embed' ),
211
+    ),
212
+
213
+    'recurring_limit' => array(
214
+        'description' => __( 'The maximum number of renewals for a subscription item.', 'invoicing' ),
215
+        'type'        => 'integer',
216
+        'context'     => array( 'view', 'edit', 'embed' ),
217
+    ),
218
+
219
+    'is_free_trial'   => array(
220
+        'description' => __( 'Whether the item has a free trial period.', 'invoicing' ),
221
+        'type'        => 'integer',
222
+        'enum'        => array( 0, 1 ),
223
+        'context'     => array( 'view', 'edit', 'embed' ),
224
+    ),
225
+
226
+    'trial_period'    => array(
227
+        'description' => __( 'The trial period.', 'invoicing' ),
228
+        'type'        => 'string',
229
+        'context'     => array( 'view', 'edit', 'embed' ),
230
+        'enum'        => array( 'D', 'W', 'M', 'Y' ),
231
+    ),
232
+
233
+    'trial_interval'  => array(
234
+        'description' => __( 'The trial interval.', 'invoicing' ),
235
+        'type'        => 'integer',
236
+        'context'     => array( 'view', 'edit', 'embed' ),
237
+    ),
238
+
239
+    'first_renewal_date'       => array(
240
+        'description' => __( 'The first renewal date in case the item was to be bought today.', 'invoicing' ),
241
+        'type'        => 'string',
242
+        'context'     => array( 'view', 'edit', 'embed' ),
243
+        'readonly'    => true,
244
+    ),
245
+
246
+    'edit_url'        => array(
247
+        'description' => __( 'The URL to edit an item.', 'invoicing' ),
248
+        'type'        => 'string',
249
+        'context'     => array( 'view', 'edit', 'embed' ),
250
+        'readonly'    => true,
251
+    ),
252 252
 );
Please login to merge, or discard this patch.
Spacing   +80 added lines, -80 removed lines patch added patch discarded remove patch
@@ -9,244 +9,244 @@
 block discarded – undo
9 9
  * @version 1.0.19
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 return array(
15 15
 
16 16
 	'id'              => array(
17
-		'description' => __( 'Unique identifier for the item.', 'invoicing' ),
17
+		'description' => __('Unique identifier for the item.', 'invoicing'),
18 18
 		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
19
+		'context'     => array('view', 'edit', 'embed'),
20 20
 		'readonly'    => true,
21 21
 	),
22 22
 
23 23
 	'parent_id'       => array(
24
-		'description' => __( 'Parent item ID.', 'invoicing' ),
24
+		'description' => __('Parent item ID.', 'invoicing'),
25 25
 		'type'        => 'integer',
26
-		'context'     => array( 'view', 'edit', 'embed' ),
26
+		'context'     => array('view', 'edit', 'embed'),
27 27
 		'default'     => 0,
28 28
 	),
29 29
 
30 30
 	'status'          => array(
31
-		'description' => __( 'A named status for the item.', 'invoicing' ),
31
+		'description' => __('A named status for the item.', 'invoicing'),
32 32
 		'type'        => 'string',
33
-		'enum'        => array( 'draft', 'pending', 'publish' ),
34
-		'context'     => array( 'view', 'edit', 'embed' ),
33
+		'enum'        => array('draft', 'pending', 'publish'),
34
+		'context'     => array('view', 'edit', 'embed'),
35 35
 		'default'     => 'draft',
36 36
 	),
37 37
 
38 38
 	'version'         => array(
39
-		'description' => __( 'Plugin version when the item was created.', 'invoicing' ),
39
+		'description' => __('Plugin version when the item was created.', 'invoicing'),
40 40
 		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit' ),
41
+		'context'     => array('view', 'edit'),
42 42
 		'readonly'    => true,
43 43
 	),
44 44
 
45 45
 	'date_created'    => array(
46
-		'description' => __( "The date the item was created, in the site's timezone.", 'invoicing' ),
46
+		'description' => __("The date the item was created, in the site's timezone.", 'invoicing'),
47 47
 		'type'        => 'string',
48
-		'context'     => array( 'view', 'edit', 'embed' ),
48
+		'context'     => array('view', 'edit', 'embed'),
49 49
 	),
50 50
 
51 51
 	'date_created_gmt'    => array(
52
-		'description' => __( 'The GMT date the item was created.', 'invoicing' ),
52
+		'description' => __('The GMT date the item was created.', 'invoicing'),
53 53
 		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
54
+		'context'     => array('view', 'edit', 'embed'),
55 55
 		'readonly'    => true,
56 56
 	),
57 57
 
58 58
 	'date_modified'   => array(
59
-		'description' => __( "The date the item was last modified, in the site's timezone.", 'invoicing' ),
59
+		'description' => __("The date the item was last modified, in the site's timezone.", 'invoicing'),
60 60
 		'type'        => 'string',
61
-		'context'     => array( 'view', 'edit', 'embed' ),
61
+		'context'     => array('view', 'edit', 'embed'),
62 62
 		'readonly'    => true,
63 63
 	),
64 64
 
65 65
 	'date_modified_gmt'    => array(
66
-		'description' => __( 'The GMT date the item was last modified.', 'invoicing' ),
66
+		'description' => __('The GMT date the item was last modified.', 'invoicing'),
67 67
 		'type'        => 'string',
68
-		'context'     => array( 'view', 'edit', 'embed' ),
68
+		'context'     => array('view', 'edit', 'embed'),
69 69
 		'readonly'    => true,
70 70
 	),
71 71
 
72 72
 	'name'			  => array(
73
-		'description' => __( "The item's name.", 'invoicing' ),
73
+		'description' => __("The item's name.", 'invoicing'),
74 74
 		'type'        => 'string',
75
-		'context'     => array( 'view', 'edit', 'embed' ),
75
+		'context'     => array('view', 'edit', 'embed'),
76 76
 		'required'    => true,
77 77
 	),
78 78
 
79 79
 	'description'     => array(
80
-		'description' => __( "The item's description.", 'invoicing' ),
80
+		'description' => __("The item's description.", 'invoicing'),
81 81
 		'type'        => 'string',
82
-		'context'     => array( 'view', 'edit', 'embed' ),
82
+		'context'     => array('view', 'edit', 'embed'),
83 83
 	),
84 84
 
85 85
 	'owner'           => array(
86
-		'description' => __( 'The owner of the item (user id).', 'invoicing' ),
86
+		'description' => __('The owner of the item (user id).', 'invoicing'),
87 87
 		'type'        => 'integer',
88
-		'context'     => array( 'view', 'edit', 'embed' ),
88
+		'context'     => array('view', 'edit', 'embed'),
89 89
 	),
90 90
 
91 91
 	'price'           => array(
92
-		'description' => __( 'The price of the item.', 'invoicing' ),
92
+		'description' => __('The price of the item.', 'invoicing'),
93 93
 		'type'        => 'number',
94
-		'context'     => array( 'view', 'edit', 'embed' ),
94
+		'context'     => array('view', 'edit', 'embed'),
95 95
 		'required'    => true,
96 96
 	),
97 97
 
98 98
 	'the_price'       => array(
99
-		'description' => __( 'The formatted price of the item.', 'invoicing' ),
99
+		'description' => __('The formatted price of the item.', 'invoicing'),
100 100
 		'type'        => 'string',
101
-		'context'     => array( 'view', 'edit', 'embed' ),
101
+		'context'     => array('view', 'edit', 'embed'),
102 102
 		'readonly'    => true,
103 103
 	),
104 104
 
105 105
 	'type'       => array(
106
-		'description' => __( 'The item type.', 'invoicing' ),
106
+		'description' => __('The item type.', 'invoicing'),
107 107
 		'type'        => 'string',
108 108
 		'enum'        => wpinv_item_types(),
109 109
 		'default'     => 'custom',
110
-		'context'     => array( 'view', 'edit', 'embed' ),
110
+		'context'     => array('view', 'edit', 'embed'),
111 111
 	),
112 112
 
113 113
 	'vat_rule'       => array(
114
-		'description' => __( 'VAT rule applied to the item.', 'invoicing' ),
114
+		'description' => __('VAT rule applied to the item.', 'invoicing'),
115 115
 		'type'        => 'string',
116
-		'enum'        => array_keys( getpaid_tax()->get_rules() ),
117
-		'context'     => array( 'view', 'edit', 'embed' ),
116
+		'enum'        => array_keys(getpaid_tax()->get_rules()),
117
+		'context'     => array('view', 'edit', 'embed'),
118 118
 	),
119 119
 
120 120
 	'vat_class'       => array(
121
-		'description' => __( 'VAT class for the item.', 'invoicing' ),
121
+		'description' => __('VAT class for the item.', 'invoicing'),
122 122
 		'type'        => 'string',
123
-		'context'     => array( 'view', 'edit', 'embed' ),
124
-		'enum'        => array_keys( getpaid_tax()->get_vat_groups() ),
123
+		'context'     => array('view', 'edit', 'embed'),
124
+		'enum'        => array_keys(getpaid_tax()->get_vat_groups()),
125 125
 	),
126 126
 
127 127
 	'custom_id'       => array(
128
-		'description' => __( 'Custom id for the item.', 'invoicing' ),
128
+		'description' => __('Custom id for the item.', 'invoicing'),
129 129
 		'type'        => 'string',
130
-		'context'     => array( 'view', 'edit', 'embed' ),
130
+		'context'     => array('view', 'edit', 'embed'),
131 131
 	),
132 132
 	
133 133
 	'custom_name'       => array(
134
-		'description' => __( 'Custom name for the item.', 'invoicing' ),
134
+		'description' => __('Custom name for the item.', 'invoicing'),
135 135
 		'type'        => 'string',
136
-		'context'     => array( 'view', 'edit', 'embed' ),
136
+		'context'     => array('view', 'edit', 'embed'),
137 137
 	),
138 138
 
139 139
 	'custom_singular_name'       => array(
140
-		'description' => __( 'Custom singular name for the item.', 'invoicing' ),
140
+		'description' => __('Custom singular name for the item.', 'invoicing'),
141 141
 		'type'        => 'string',
142
-		'context'     => array( 'view', 'edit', 'embed' ),
142
+		'context'     => array('view', 'edit', 'embed'),
143 143
 	),
144 144
 
145 145
 	'is_editable'     => array(
146
-		'description' => __( 'Whether or not the item is editable.', 'invoicing' ),
146
+		'description' => __('Whether or not the item is editable.', 'invoicing'),
147 147
 		'type'        => 'integer',
148
-		'enum'        => array( 0, 1 ),
149
-		'context'     => array( 'view', 'edit', 'embed' ),
148
+		'enum'        => array(0, 1),
149
+		'context'     => array('view', 'edit', 'embed'),
150 150
 	),
151 151
 
152 152
 	'is_dynamic_pricing'     => array(
153
-		'description' => __( 'Whether or not customers can enter their own prices when checking out.', 'invoicing' ),
153
+		'description' => __('Whether or not customers can enter their own prices when checking out.', 'invoicing'),
154 154
 		'type'        => 'integer',
155
-		'enum'        => array( 0, 1 ),
156
-		'context'     => array( 'view', 'edit', 'embed' ),
155
+		'enum'        => array(0, 1),
156
+		'context'     => array('view', 'edit', 'embed'),
157 157
 	),
158 158
 
159 159
 	'minimum_price'   => array(
160
-		'description' => __( 'For dynamic prices, this is the minimum price that a user can set.', 'invoicing' ),
160
+		'description' => __('For dynamic prices, this is the minimum price that a user can set.', 'invoicing'),
161 161
 		'type'        => 'number',
162
-		'context'     => array( 'view', 'edit', 'embed' ),
162
+		'context'     => array('view', 'edit', 'embed'),
163 163
 	),
164 164
 
165 165
 	'is_recurring'        => array(
166
-		'description' => __( 'Whether or not this is a subscription item.', 'invoicing' ),
166
+		'description' => __('Whether or not this is a subscription item.', 'invoicing'),
167 167
 		'type'        => 'integer',
168
-		'enum'        => array( 0, 1 ),
169
-		'context'     => array( 'view', 'edit', 'embed' ),
168
+		'enum'        => array(0, 1),
169
+		'context'     => array('view', 'edit', 'embed'),
170 170
 	),
171 171
 
172 172
 	'initial_price'   => array(
173
-		'description' => __( 'The initial price of the item.', 'invoicing' ),
173
+		'description' => __('The initial price of the item.', 'invoicing'),
174 174
 		'type'        => 'number',
175
-		'context'     => array( 'view', 'edit', 'embed' ),
175
+		'context'     => array('view', 'edit', 'embed'),
176 176
 		'readonly'    => true,
177 177
 	),
178 178
 
179 179
 	'the_initial_price'       => array(
180
-		'description' => __( 'The formatted initial price of the item.', 'invoicing' ),
180
+		'description' => __('The formatted initial price of the item.', 'invoicing'),
181 181
 		'type'        => 'string',
182
-		'context'     => array( 'view', 'edit', 'embed' ),
182
+		'context'     => array('view', 'edit', 'embed'),
183 183
 		'readonly'    => true,
184 184
 	),
185 185
 
186 186
 	'recurring_price' => array(
187
-		'description' => __( 'The recurring price of the item.', 'invoicing' ),
187
+		'description' => __('The recurring price of the item.', 'invoicing'),
188 188
 		'type'        => 'number',
189
-		'context'     => array( 'view', 'edit', 'embed' ),
189
+		'context'     => array('view', 'edit', 'embed'),
190 190
 		'readonly'    => true,
191 191
 	),
192 192
 
193 193
 	'the_recurring_price'       => array(
194
-		'description' => __( 'The formatted recurring price of the item.', 'invoicing' ),
194
+		'description' => __('The formatted recurring price of the item.', 'invoicing'),
195 195
 		'type'        => 'string',
196
-		'context'     => array( 'view', 'edit', 'embed' ),
196
+		'context'     => array('view', 'edit', 'embed'),
197 197
 		'readonly'    => true,
198 198
 	),
199 199
 
200 200
 	'recurring_period'        => array(
201
-		'description' => __( 'The recurring period for a recurring item.', 'invoicing' ),
201
+		'description' => __('The recurring period for a recurring item.', 'invoicing'),
202 202
 		'type'        => 'string',
203
-		'context'     => array( 'view', 'edit', 'embed' ),
204
-		'enum'        => array( 'D', 'W', 'M', 'Y' ),
203
+		'context'     => array('view', 'edit', 'embed'),
204
+		'enum'        => array('D', 'W', 'M', 'Y'),
205 205
 	),
206 206
 
207 207
 	'recurring_interval'        => array(
208
-		'description' => __( 'The recurring interval for a subscription item.', 'invoicing' ),
208
+		'description' => __('The recurring interval for a subscription item.', 'invoicing'),
209 209
 		'type'        => 'integer',
210
-		'context'     => array( 'view', 'edit', 'embed' ),
210
+		'context'     => array('view', 'edit', 'embed'),
211 211
 	),
212 212
 
213 213
 	'recurring_limit' => array(
214
-		'description' => __( 'The maximum number of renewals for a subscription item.', 'invoicing' ),
214
+		'description' => __('The maximum number of renewals for a subscription item.', 'invoicing'),
215 215
 		'type'        => 'integer',
216
-		'context'     => array( 'view', 'edit', 'embed' ),
216
+		'context'     => array('view', 'edit', 'embed'),
217 217
 	),
218 218
 
219 219
 	'is_free_trial'   => array(
220
-		'description' => __( 'Whether the item has a free trial period.', 'invoicing' ),
220
+		'description' => __('Whether the item has a free trial period.', 'invoicing'),
221 221
 		'type'        => 'integer',
222
-		'enum'        => array( 0, 1 ),
223
-		'context'     => array( 'view', 'edit', 'embed' ),
222
+		'enum'        => array(0, 1),
223
+		'context'     => array('view', 'edit', 'embed'),
224 224
 	),
225 225
 
226 226
 	'trial_period'    => array(
227
-		'description' => __( 'The trial period.', 'invoicing' ),
227
+		'description' => __('The trial period.', 'invoicing'),
228 228
 		'type'        => 'string',
229
-		'context'     => array( 'view', 'edit', 'embed' ),
230
-		'enum'        => array( 'D', 'W', 'M', 'Y' ),
229
+		'context'     => array('view', 'edit', 'embed'),
230
+		'enum'        => array('D', 'W', 'M', 'Y'),
231 231
 	),
232 232
 
233 233
 	'trial_interval'  => array(
234
-		'description' => __( 'The trial interval.', 'invoicing' ),
234
+		'description' => __('The trial interval.', 'invoicing'),
235 235
 		'type'        => 'integer',
236
-		'context'     => array( 'view', 'edit', 'embed' ),
236
+		'context'     => array('view', 'edit', 'embed'),
237 237
 	),
238 238
 
239 239
 	'first_renewal_date'       => array(
240
-		'description' => __( 'The first renewal date in case the item was to be bought today.', 'invoicing' ),
240
+		'description' => __('The first renewal date in case the item was to be bought today.', 'invoicing'),
241 241
 		'type'        => 'string',
242
-		'context'     => array( 'view', 'edit', 'embed' ),
242
+		'context'     => array('view', 'edit', 'embed'),
243 243
 		'readonly'    => true,
244 244
 	),
245 245
 
246 246
 	'edit_url'        => array(
247
-		'description' => __( 'The URL to edit an item.', 'invoicing' ),
247
+		'description' => __('The URL to edit an item.', 'invoicing'),
248 248
 		'type'        => 'string',
249
-		'context'     => array( 'view', 'edit', 'embed' ),
249
+		'context'     => array('view', 'edit', 'embed'),
250 250
 		'readonly'    => true,
251 251
 	),
252 252
 );
Please login to merge, or discard this patch.
includes/api/class-wpinv-rest-items-controller.php 2 patches
Indentation   +163 added lines, -163 removed lines patch added patch discarded remove patch
@@ -15,172 +15,172 @@
 block discarded – undo
15 15
 class WPInv_REST_Items_Controller extends GetPaid_REST_Posts_Controller {
16 16
 
17 17
     /**
18
-	 * Post type.
19
-	 *
20
-	 * @var string
21
-	 */
22
-	protected $post_type = 'wpi_item';
18
+     * Post type.
19
+     *
20
+     * @var string
21
+     */
22
+    protected $post_type = 'wpi_item';
23 23
 	
24
-	/**
25
-	 * The base of this controller's route.
26
-	 *
27
-	 * @since 1.0.13
28
-	 * @var string
29
-	 */
30
-	protected $rest_base = 'items';
31
-
32
-	/** Contains this controller's class name.
33
-	 *
34
-	 * @var string
35
-	 */
36
-	public $crud_class = 'WPInv_Item';
37
-
38
-	/**
39
-	 * Registers the routes for the objects of the controller.
40
-	 *
41
-	 * @since 1.0.19
42
-	 *
43
-	 * @see register_rest_route()
44
-	 */
45
-	public function register_namespace_routes( $namespace ) {
46
-
47
-		parent::register_namespace_routes( $namespace );
48
-
49
-		register_rest_route(
50
-			$this->namespace,
51
-			'/' . $this->rest_base . '/item-types',
52
-			array(
53
-				array(
54
-					'methods'             => WP_REST_Server::READABLE,
55
-					'callback'            => array( $this, 'get_item_types' ),
56
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
57
-				),
58
-			)
59
-		);
60
-
61
-	}
62
-
63
-	/**
64
-	 * Handles rest requests for item types.
65
-	 *
66
-	 * @since 1.0.13
67
-	 * 
68
-	 * 
69
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
70
-	 */
71
-	public function get_item_types() {
72
-		return rest_ensure_response( wpinv_get_item_types() );
73
-	}
24
+    /**
25
+     * The base of this controller's route.
26
+     *
27
+     * @since 1.0.13
28
+     * @var string
29
+     */
30
+    protected $rest_base = 'items';
31
+
32
+    /** Contains this controller's class name.
33
+     *
34
+     * @var string
35
+     */
36
+    public $crud_class = 'WPInv_Item';
37
+
38
+    /**
39
+     * Registers the routes for the objects of the controller.
40
+     *
41
+     * @since 1.0.19
42
+     *
43
+     * @see register_rest_route()
44
+     */
45
+    public function register_namespace_routes( $namespace ) {
46
+
47
+        parent::register_namespace_routes( $namespace );
48
+
49
+        register_rest_route(
50
+            $this->namespace,
51
+            '/' . $this->rest_base . '/item-types',
52
+            array(
53
+                array(
54
+                    'methods'             => WP_REST_Server::READABLE,
55
+                    'callback'            => array( $this, 'get_item_types' ),
56
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
57
+                ),
58
+            )
59
+        );
60
+
61
+    }
62
+
63
+    /**
64
+     * Handles rest requests for item types.
65
+     *
66
+     * @since 1.0.13
67
+     * 
68
+     * 
69
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
70
+     */
71
+    public function get_item_types() {
72
+        return rest_ensure_response( wpinv_get_item_types() );
73
+    }
74
+
75
+    /**
76
+     * Retrieves the query params for the items collection.
77
+     *
78
+     * @since 1.0.13
79
+     *
80
+     * @return array Collection parameters.
81
+     */
82
+    public function get_collection_params() {
83
+
84
+        $params = array_merge(
85
+
86
+            parent::get_collection_params(),
87
+
88
+            array(
89
+
90
+                // Item types
91
+                'type'                  => array(
92
+                    'description'       => __( 'Type of items to fetch.', 'invoicing' ),
93
+                    'type'              => array( 'array', 'string' ),
94
+                    'default'           => 'any',
95
+                    'validate_callback' => 'rest_validate_request_arg',
96
+                    'sanitize_callback' => 'wpinv_parse_list',
97
+                    'items'             => array(
98
+                        'enum'          => array_merge( array( 'any' ), wpinv_item_types() ),
99
+                        'type'          => 'string',
100
+                    ),
101
+                ),
102
+
103
+            )
104
+        );
105
+
106
+        // Filter collection parameters for the items controller.
107
+        return apply_filters( 'getpaid_rest_items_collection_params', $params, $this );
108
+
109
+    }
110
+
111
+    /**
112
+     * Determine the allowed query_vars for a get_items() response and
113
+     * prepare for WP_Query.
114
+     *
115
+     * @param array           $prepared_args Prepared arguments.
116
+     * @param WP_REST_Request $request Request object.
117
+     * @return array          $query_args
118
+     */
119
+    protected function prepare_items_query( $prepared_args = array(), $request = null ) {
120
+
121
+        $query_args = parent::prepare_items_query( $prepared_args );
122
+
123
+        // Retrieve items by type.
124
+        if ( ! in_array( 'any', $request['type'] ) ) {
125
+
126
+            if ( empty( $query_args['meta_query'] ) ) {
127
+                $query_args['meta_query'] = array();
128
+            }
129
+
130
+            $query_args['meta_query'][] = array(
131
+                'key'     => '_wpinv_type',
132
+                'value'   => implode( ',', $request['type'] ),
133
+                'compare' => 'IN',
134
+            );
135
+
136
+        }
137
+
138
+        return apply_filters( 'getpaid_rest_items_prepare_items_query', $query_args, $request, $this );
139
+
140
+    }
141
+
142
+    /**
143
+     * Retrieves a valid list of post statuses.
144
+     *
145
+     * @since 1.0.15
146
+     *
147
+     * @return array A list of registered item statuses.
148
+     */
149
+    public function get_post_statuses() {
150
+        return array( 'draft', 'pending', 'publish' );
151
+    }
74 152
 
75 153
     /**
76
-	 * Retrieves the query params for the items collection.
77
-	 *
78
-	 * @since 1.0.13
79
-	 *
80
-	 * @return array Collection parameters.
81
-	 */
82
-	public function get_collection_params() {
83
-
84
-		$params = array_merge(
85
-
86
-			parent::get_collection_params(),
87
-
88
-        	array(
89
-
90
-				// Item types
91
-				'type'                  => array(
92
-					'description'       => __( 'Type of items to fetch.', 'invoicing' ),
93
-					'type'              => array( 'array', 'string' ),
94
-					'default'           => 'any',
95
-					'validate_callback' => 'rest_validate_request_arg',
96
-					'sanitize_callback' => 'wpinv_parse_list',
97
-					'items'             => array(
98
-						'enum'          => array_merge( array( 'any' ), wpinv_item_types() ),
99
-						'type'          => 'string',
100
-					),
101
-				),
102
-
103
-			)
104
-		);
105
-
106
-		// Filter collection parameters for the items controller.
107
-		return apply_filters( 'getpaid_rest_items_collection_params', $params, $this );
108
-
109
-	}
110
-
111
-	/**
112
-	 * Determine the allowed query_vars for a get_items() response and
113
-	 * prepare for WP_Query.
114
-	 *
115
-	 * @param array           $prepared_args Prepared arguments.
116
-	 * @param WP_REST_Request $request Request object.
117
-	 * @return array          $query_args
118
-	 */
119
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
120
-
121
-		$query_args = parent::prepare_items_query( $prepared_args );
122
-
123
-		// Retrieve items by type.
124
-		if ( ! in_array( 'any', $request['type'] ) ) {
125
-
126
-			if ( empty( $query_args['meta_query'] ) ) {
127
-				$query_args['meta_query'] = array();
128
-			}
129
-
130
-			$query_args['meta_query'][] = array(
131
-				'key'     => '_wpinv_type',
132
-				'value'   => implode( ',', $request['type'] ),
133
-				'compare' => 'IN',
134
-			);
135
-
136
-		}
137
-
138
-		return apply_filters( 'getpaid_rest_items_prepare_items_query', $query_args, $request, $this );
139
-
140
-	}
141
-
142
-	/**
143
-	 * Retrieves a valid list of post statuses.
144
-	 *
145
-	 * @since 1.0.15
146
-	 *
147
-	 * @return array A list of registered item statuses.
148
-	 */
149
-	public function get_post_statuses() {
150
-		return array( 'draft', 'pending', 'publish' );
151
-	}
152
-
153
-	/**
154
-	 * Checks if a key should be included in a response.
155
-	 *
156
-	 * @since  1.0.19
157
-	 * @param  WPInv_Item   $item  Item object.
158
-	 * @param  string       $field_key The key to check for.
159
-	 * @return bool
160
-	 */
161
-	public function object_supports_field( $item, $field_key ) {
162
-
163
-		if ( 'minimum_price' == $field_key && ! $item->user_can_set_their_price() ) {
164
-			return false;
165
-		}
166
-
167
-		foreach( wpinv_parse_list( 'initial_price the_initial_price recurring_price the_recurring_price recurring_period recurring_interval recurring_limit is_free_trial trial_period trial_interval first_renewal_date' ) as $key ) {
168
-
169
-			if ( $key == $field_key && ! $item->is_recurring() ) {
170
-				return false;
171
-			}
172
-
173
-		}
174
-
175
-		foreach( wpinv_parse_list( 'trial_period trial_interval' ) as $key ) {
176
-
177
-			if ( $key == $field_key && ! $item->has_free_trial() ) {
178
-				return false;
179
-			}
180
-
181
-		}
154
+     * Checks if a key should be included in a response.
155
+     *
156
+     * @since  1.0.19
157
+     * @param  WPInv_Item   $item  Item object.
158
+     * @param  string       $field_key The key to check for.
159
+     * @return bool
160
+     */
161
+    public function object_supports_field( $item, $field_key ) {
162
+
163
+        if ( 'minimum_price' == $field_key && ! $item->user_can_set_their_price() ) {
164
+            return false;
165
+        }
166
+
167
+        foreach( wpinv_parse_list( 'initial_price the_initial_price recurring_price the_recurring_price recurring_period recurring_interval recurring_limit is_free_trial trial_period trial_interval first_renewal_date' ) as $key ) {
168
+
169
+            if ( $key == $field_key && ! $item->is_recurring() ) {
170
+                return false;
171
+            }
172
+
173
+        }
174
+
175
+        foreach( wpinv_parse_list( 'trial_period trial_interval' ) as $key ) {
176
+
177
+            if ( $key == $field_key && ! $item->has_free_trial() ) {
178
+                return false;
179
+            }
180
+
181
+        }
182 182
 
183
-		return parent::object_supports_field( $item, $field_key );
184
-	}
183
+        return parent::object_supports_field( $item, $field_key );
184
+    }
185 185
 
186 186
 }
Please login to merge, or discard this patch.
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  * @version 1.0.19
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * REST API items controller class.
@@ -42,9 +42,9 @@  discard block
 block discarded – undo
42 42
 	 *
43 43
 	 * @see register_rest_route()
44 44
 	 */
45
-	public function register_namespace_routes( $namespace ) {
45
+	public function register_namespace_routes($namespace) {
46 46
 
47
-		parent::register_namespace_routes( $namespace );
47
+		parent::register_namespace_routes($namespace);
48 48
 
49 49
 		register_rest_route(
50 50
 			$this->namespace,
@@ -52,8 +52,8 @@  discard block
 block discarded – undo
52 52
 			array(
53 53
 				array(
54 54
 					'methods'             => WP_REST_Server::READABLE,
55
-					'callback'            => array( $this, 'get_item_types' ),
56
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
55
+					'callback'            => array($this, 'get_item_types'),
56
+					'permission_callback' => array($this, 'get_items_permissions_check'),
57 57
 				),
58 58
 			)
59 59
 		);
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
70 70
 	 */
71 71
 	public function get_item_types() {
72
-		return rest_ensure_response( wpinv_get_item_types() );
72
+		return rest_ensure_response(wpinv_get_item_types());
73 73
 	}
74 74
 
75 75
     /**
@@ -89,13 +89,13 @@  discard block
 block discarded – undo
89 89
 
90 90
 				// Item types
91 91
 				'type'                  => array(
92
-					'description'       => __( 'Type of items to fetch.', 'invoicing' ),
93
-					'type'              => array( 'array', 'string' ),
92
+					'description'       => __('Type of items to fetch.', 'invoicing'),
93
+					'type'              => array('array', 'string'),
94 94
 					'default'           => 'any',
95 95
 					'validate_callback' => 'rest_validate_request_arg',
96 96
 					'sanitize_callback' => 'wpinv_parse_list',
97 97
 					'items'             => array(
98
-						'enum'          => array_merge( array( 'any' ), wpinv_item_types() ),
98
+						'enum'          => array_merge(array('any'), wpinv_item_types()),
99 99
 						'type'          => 'string',
100 100
 					),
101 101
 				),
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
 		);
105 105
 
106 106
 		// Filter collection parameters for the items controller.
107
-		return apply_filters( 'getpaid_rest_items_collection_params', $params, $this );
107
+		return apply_filters('getpaid_rest_items_collection_params', $params, $this);
108 108
 
109 109
 	}
110 110
 
@@ -116,26 +116,26 @@  discard block
 block discarded – undo
116 116
 	 * @param WP_REST_Request $request Request object.
117 117
 	 * @return array          $query_args
118 118
 	 */
119
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
119
+	protected function prepare_items_query($prepared_args = array(), $request = null) {
120 120
 
121
-		$query_args = parent::prepare_items_query( $prepared_args );
121
+		$query_args = parent::prepare_items_query($prepared_args);
122 122
 
123 123
 		// Retrieve items by type.
124
-		if ( ! in_array( 'any', $request['type'] ) ) {
124
+		if (!in_array('any', $request['type'])) {
125 125
 
126
-			if ( empty( $query_args['meta_query'] ) ) {
126
+			if (empty($query_args['meta_query'])) {
127 127
 				$query_args['meta_query'] = array();
128 128
 			}
129 129
 
130 130
 			$query_args['meta_query'][] = array(
131 131
 				'key'     => '_wpinv_type',
132
-				'value'   => implode( ',', $request['type'] ),
132
+				'value'   => implode(',', $request['type']),
133 133
 				'compare' => 'IN',
134 134
 			);
135 135
 
136 136
 		}
137 137
 
138
-		return apply_filters( 'getpaid_rest_items_prepare_items_query', $query_args, $request, $this );
138
+		return apply_filters('getpaid_rest_items_prepare_items_query', $query_args, $request, $this);
139 139
 
140 140
 	}
141 141
 
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
 	 * @return array A list of registered item statuses.
148 148
 	 */
149 149
 	public function get_post_statuses() {
150
-		return array( 'draft', 'pending', 'publish' );
150
+		return array('draft', 'pending', 'publish');
151 151
 	}
152 152
 
153 153
 	/**
@@ -158,29 +158,29 @@  discard block
 block discarded – undo
158 158
 	 * @param  string       $field_key The key to check for.
159 159
 	 * @return bool
160 160
 	 */
161
-	public function object_supports_field( $item, $field_key ) {
161
+	public function object_supports_field($item, $field_key) {
162 162
 
163
-		if ( 'minimum_price' == $field_key && ! $item->user_can_set_their_price() ) {
163
+		if ('minimum_price' == $field_key && !$item->user_can_set_their_price()) {
164 164
 			return false;
165 165
 		}
166 166
 
167
-		foreach( wpinv_parse_list( 'initial_price the_initial_price recurring_price the_recurring_price recurring_period recurring_interval recurring_limit is_free_trial trial_period trial_interval first_renewal_date' ) as $key ) {
167
+		foreach (wpinv_parse_list('initial_price the_initial_price recurring_price the_recurring_price recurring_period recurring_interval recurring_limit is_free_trial trial_period trial_interval first_renewal_date') as $key) {
168 168
 
169
-			if ( $key == $field_key && ! $item->is_recurring() ) {
169
+			if ($key == $field_key && !$item->is_recurring()) {
170 170
 				return false;
171 171
 			}
172 172
 
173 173
 		}
174 174
 
175
-		foreach( wpinv_parse_list( 'trial_period trial_interval' ) as $key ) {
175
+		foreach (wpinv_parse_list('trial_period trial_interval') as $key) {
176 176
 
177
-			if ( $key == $field_key && ! $item->has_free_trial() ) {
177
+			if ($key == $field_key && !$item->has_free_trial()) {
178 178
 				return false;
179 179
 			}
180 180
 
181 181
 		}
182 182
 
183
-		return parent::object_supports_field( $item, $field_key );
183
+		return parent::object_supports_field($item, $field_key);
184 184
 	}
185 185
 
186 186
 }
Please login to merge, or discard this patch.
includes/api/class-wpinv-rest-discounts-controller.php 2 patches
Indentation   +131 added lines, -131 removed lines patch added patch discarded remove patch
@@ -15,138 +15,138 @@
 block discarded – undo
15 15
 class WPInv_REST_Discounts_Controller extends GetPaid_REST_Posts_Controller {
16 16
 
17 17
     /**
18
-	 * Post type.
19
-	 *
20
-	 * @var string
21
-	 */
22
-	protected $post_type = 'wpi_discount';
23
-
24
-	/**
25
-	 * The base of this controller's route.
26
-	 *
27
-	 * @since 1.0.13
28
-	 * @var string
29
-	 */
30
-	protected $rest_base = 'discounts';
31
-
32
-	/** Contains this controller's class name.
33
-	 *
34
-	 * @var string
35
-	 */
36
-	public $crud_class = 'WPInv_Discount';
37
-
38
-	/**
39
-	 * Registers the routes for the objects of the controller.
40
-	 *
41
-	 * @since 1.0.19
42
-	 *
43
-	 * @see register_rest_route()
44
-	 */
45
-	public function register_namespace_routes( $namespace ) {
46
-
47
-		parent::register_namespace_routes( $namespace );
48
-
49
-		register_rest_route(
50
-			$this->namespace,
51
-			'/' . $this->rest_base . '/discount-types',
52
-			array(
53
-				array(
54
-					'methods'             => WP_REST_Server::READABLE,
55
-					'callback'            => array( $this, 'get_discount_types' ),
56
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
57
-				),
58
-			)
59
-		);
60
-
61
-	}
62
-
63
-	/**
64
-	 * Handles rest requests for discount types.
65
-	 *
66
-	 * @since 1.0.13
67
-	 *
68
-	 *
69
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
70
-	 */
71
-	public function get_discount_types() {
72
-		return rest_ensure_response( wpinv_get_discount_types() );
73
-	}
18
+     * Post type.
19
+     *
20
+     * @var string
21
+     */
22
+    protected $post_type = 'wpi_discount';
74 23
 
75 24
     /**
76
-	 * Retrieves the query params for the discount collection.
77
-	 *
78
-	 * @since 1.0.13
79
-	 *
80
-	 * @return array Collection parameters.
81
-	 */
82
-	public function get_collection_params() {
83
-
84
-		$params = array_merge(
85
-
86
-			parent::get_collection_params(),
87
-
88
-        	array(
89
-
90
-				// Discount types
91
-				'type'                  => array(
92
-					'description'       => __( 'Type of discounts to fetch.', 'invoicing' ),
93
-					'type'              => array( 'array', 'string' ),
94
-					'default'           => 'any',
95
-					'validate_callback' => 'rest_validate_request_arg',
96
-					'sanitize_callback' => 'wpinv_parse_list',
97
-					'items'             => array(
98
-						'enum'          => array_merge( array( 'any' ), array_keys( wpinv_get_discount_types() ) ),
99
-						'type'          => 'string',
100
-					),
101
-				),
102
-
103
-			)
104
-		);
105
-
106
-		// Filter collection parameters for the discounts controller.
107
-		return apply_filters( 'getpaid_rest_discounts_collection_params', $params, $this );
108
-	}
109
-
110
-	/**
111
-	 * Determine the allowed query_vars for a get_items() response and
112
-	 * prepare for WP_Query.
113
-	 *
114
-	 * @param array           $prepared_args Prepared arguments.
115
-	 * @param WP_REST_Request $request Request object.
116
-	 * @return array          $query_args
117
-	 */
118
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
119
-
120
-		$query_args = parent::prepare_items_query( $prepared_args );
121
-
122
-		// Retrieve items by type.
123
-		if ( ! in_array( 'any', $request['type'] ) ) {
124
-
125
-			if ( empty( $query_args['meta_query'] ) ) {
126
-				$query_args['meta_query'] = array();
127
-			}
128
-
129
-			$query_args['meta_query'][] = array(
130
-				'key'     => '_wpi_discount_type',
131
-				'value'   => implode( ',', $request['type'] ),
132
-				'compare' => 'IN',
133
-			);
134
-
135
-		}
136
-
137
-		return apply_filters( 'getpaid_rest_discounts_prepare_items_query', $query_args, $request, $this );
138
-
139
-	}
140
-
141
-	/**
142
-	 * Retrieves a valid list of post statuses.
143
-	 *
144
-	 * @since 1.0.15
145
-	 *
146
-	 * @return array A list of registered item statuses.
147
-	 */
148
-	public function get_post_statuses() {
149
-		return array( 'publish', 'pending', 'draft', 'expired' );
150
-	}
25
+     * The base of this controller's route.
26
+     *
27
+     * @since 1.0.13
28
+     * @var string
29
+     */
30
+    protected $rest_base = 'discounts';
31
+
32
+    /** Contains this controller's class name.
33
+     *
34
+     * @var string
35
+     */
36
+    public $crud_class = 'WPInv_Discount';
37
+
38
+    /**
39
+     * Registers the routes for the objects of the controller.
40
+     *
41
+     * @since 1.0.19
42
+     *
43
+     * @see register_rest_route()
44
+     */
45
+    public function register_namespace_routes( $namespace ) {
46
+
47
+        parent::register_namespace_routes( $namespace );
48
+
49
+        register_rest_route(
50
+            $this->namespace,
51
+            '/' . $this->rest_base . '/discount-types',
52
+            array(
53
+                array(
54
+                    'methods'             => WP_REST_Server::READABLE,
55
+                    'callback'            => array( $this, 'get_discount_types' ),
56
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
57
+                ),
58
+            )
59
+        );
60
+
61
+    }
62
+
63
+    /**
64
+     * Handles rest requests for discount types.
65
+     *
66
+     * @since 1.0.13
67
+     *
68
+     *
69
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
70
+     */
71
+    public function get_discount_types() {
72
+        return rest_ensure_response( wpinv_get_discount_types() );
73
+    }
74
+
75
+    /**
76
+     * Retrieves the query params for the discount collection.
77
+     *
78
+     * @since 1.0.13
79
+     *
80
+     * @return array Collection parameters.
81
+     */
82
+    public function get_collection_params() {
83
+
84
+        $params = array_merge(
85
+
86
+            parent::get_collection_params(),
87
+
88
+            array(
89
+
90
+                // Discount types
91
+                'type'                  => array(
92
+                    'description'       => __( 'Type of discounts to fetch.', 'invoicing' ),
93
+                    'type'              => array( 'array', 'string' ),
94
+                    'default'           => 'any',
95
+                    'validate_callback' => 'rest_validate_request_arg',
96
+                    'sanitize_callback' => 'wpinv_parse_list',
97
+                    'items'             => array(
98
+                        'enum'          => array_merge( array( 'any' ), array_keys( wpinv_get_discount_types() ) ),
99
+                        'type'          => 'string',
100
+                    ),
101
+                ),
102
+
103
+            )
104
+        );
105
+
106
+        // Filter collection parameters for the discounts controller.
107
+        return apply_filters( 'getpaid_rest_discounts_collection_params', $params, $this );
108
+    }
109
+
110
+    /**
111
+     * Determine the allowed query_vars for a get_items() response and
112
+     * prepare for WP_Query.
113
+     *
114
+     * @param array           $prepared_args Prepared arguments.
115
+     * @param WP_REST_Request $request Request object.
116
+     * @return array          $query_args
117
+     */
118
+    protected function prepare_items_query( $prepared_args = array(), $request = null ) {
119
+
120
+        $query_args = parent::prepare_items_query( $prepared_args );
121
+
122
+        // Retrieve items by type.
123
+        if ( ! in_array( 'any', $request['type'] ) ) {
124
+
125
+            if ( empty( $query_args['meta_query'] ) ) {
126
+                $query_args['meta_query'] = array();
127
+            }
128
+
129
+            $query_args['meta_query'][] = array(
130
+                'key'     => '_wpi_discount_type',
131
+                'value'   => implode( ',', $request['type'] ),
132
+                'compare' => 'IN',
133
+            );
134
+
135
+        }
136
+
137
+        return apply_filters( 'getpaid_rest_discounts_prepare_items_query', $query_args, $request, $this );
138
+
139
+    }
140
+
141
+    /**
142
+     * Retrieves a valid list of post statuses.
143
+     *
144
+     * @since 1.0.15
145
+     *
146
+     * @return array A list of registered item statuses.
147
+     */
148
+    public function get_post_statuses() {
149
+        return array( 'publish', 'pending', 'draft', 'expired' );
150
+    }
151 151
 
152 152
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  * @version 1.0.19
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * REST API discounts controller class.
@@ -42,9 +42,9 @@  discard block
 block discarded – undo
42 42
 	 *
43 43
 	 * @see register_rest_route()
44 44
 	 */
45
-	public function register_namespace_routes( $namespace ) {
45
+	public function register_namespace_routes($namespace) {
46 46
 
47
-		parent::register_namespace_routes( $namespace );
47
+		parent::register_namespace_routes($namespace);
48 48
 
49 49
 		register_rest_route(
50 50
 			$this->namespace,
@@ -52,8 +52,8 @@  discard block
 block discarded – undo
52 52
 			array(
53 53
 				array(
54 54
 					'methods'             => WP_REST_Server::READABLE,
55
-					'callback'            => array( $this, 'get_discount_types' ),
56
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
55
+					'callback'            => array($this, 'get_discount_types'),
56
+					'permission_callback' => array($this, 'get_items_permissions_check'),
57 57
 				),
58 58
 			)
59 59
 		);
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
70 70
 	 */
71 71
 	public function get_discount_types() {
72
-		return rest_ensure_response( wpinv_get_discount_types() );
72
+		return rest_ensure_response(wpinv_get_discount_types());
73 73
 	}
74 74
 
75 75
     /**
@@ -89,13 +89,13 @@  discard block
 block discarded – undo
89 89
 
90 90
 				// Discount types
91 91
 				'type'                  => array(
92
-					'description'       => __( 'Type of discounts to fetch.', 'invoicing' ),
93
-					'type'              => array( 'array', 'string' ),
92
+					'description'       => __('Type of discounts to fetch.', 'invoicing'),
93
+					'type'              => array('array', 'string'),
94 94
 					'default'           => 'any',
95 95
 					'validate_callback' => 'rest_validate_request_arg',
96 96
 					'sanitize_callback' => 'wpinv_parse_list',
97 97
 					'items'             => array(
98
-						'enum'          => array_merge( array( 'any' ), array_keys( wpinv_get_discount_types() ) ),
98
+						'enum'          => array_merge(array('any'), array_keys(wpinv_get_discount_types())),
99 99
 						'type'          => 'string',
100 100
 					),
101 101
 				),
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
 		);
105 105
 
106 106
 		// Filter collection parameters for the discounts controller.
107
-		return apply_filters( 'getpaid_rest_discounts_collection_params', $params, $this );
107
+		return apply_filters('getpaid_rest_discounts_collection_params', $params, $this);
108 108
 	}
109 109
 
110 110
 	/**
@@ -115,26 +115,26 @@  discard block
 block discarded – undo
115 115
 	 * @param WP_REST_Request $request Request object.
116 116
 	 * @return array          $query_args
117 117
 	 */
118
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
118
+	protected function prepare_items_query($prepared_args = array(), $request = null) {
119 119
 
120
-		$query_args = parent::prepare_items_query( $prepared_args );
120
+		$query_args = parent::prepare_items_query($prepared_args);
121 121
 
122 122
 		// Retrieve items by type.
123
-		if ( ! in_array( 'any', $request['type'] ) ) {
123
+		if (!in_array('any', $request['type'])) {
124 124
 
125
-			if ( empty( $query_args['meta_query'] ) ) {
125
+			if (empty($query_args['meta_query'])) {
126 126
 				$query_args['meta_query'] = array();
127 127
 			}
128 128
 
129 129
 			$query_args['meta_query'][] = array(
130 130
 				'key'     => '_wpi_discount_type',
131
-				'value'   => implode( ',', $request['type'] ),
131
+				'value'   => implode(',', $request['type']),
132 132
 				'compare' => 'IN',
133 133
 			);
134 134
 
135 135
 		}
136 136
 
137
-		return apply_filters( 'getpaid_rest_discounts_prepare_items_query', $query_args, $request, $this );
137
+		return apply_filters('getpaid_rest_discounts_prepare_items_query', $query_args, $request, $this);
138 138
 
139 139
 	}
140 140
 
@@ -146,7 +146,7 @@  discard block
 block discarded – undo
146 146
 	 * @return array A list of registered item statuses.
147 147
 	 */
148 148
 	public function get_post_statuses() {
149
-		return array( 'publish', 'pending', 'draft', 'expired' );
149
+		return array('publish', 'pending', 'draft', 'expired');
150 150
 	}
151 151
 
152 152
 }
Please login to merge, or discard this patch.
includes/data/discount-schema.php 2 patches
Indentation   +162 added lines, -162 removed lines patch added patch discarded remove patch
@@ -13,168 +13,168 @@
 block discarded – undo
13 13
 
14 14
 return array(
15 15
 
16
-	'id'              => array(
17
-		'description' => __( 'Unique identifier for the discount.', 'invoicing' ),
18
-		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
20
-		'readonly'    => true,
21
-	),
22
-
23
-	'status'          => array(
24
-		'description' => __( 'A named status for the discount.', 'invoicing' ),
25
-		'type'        => 'string',
26
-		'enum'        => array( 'publish', 'pending', 'draft', 'expired' ),
27
-		'default'     => 'draft',
28
-		'context'     => array( 'view', 'edit', 'embed' ),
29
-	),
30
-
31
-	'version'         => array(
32
-		'description' => __( 'Plugin version when the discount was created.', 'invoicing' ),
33
-		'type'        => 'string',
34
-		'context'     => array( 'view', 'edit', 'embed' ),
35
-		'readonly'    => true,
36
-	),
37
-
38
-	'date_created'    => array(
39
-		'description' => __( "The date the discount was created, in the site's timezone.", 'invoicing' ),
40
-		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit', 'embed' ),
42
-	),
43
-
44
-	'date_created_gmt'    => array(
45
-		'description' => __( 'The GMT date the discount was created.', 'invoicing' ),
46
-		'type'        => 'string',
47
-		'context'     => array( 'view', 'edit', 'embed' ),
48
-		'readonly'    => true,
49
-	),
50
-
51
-	'date_modified'   => array(
52
-		'description' => __( "The date the discount was last modified, in the site's timezone.", 'invoicing' ),
53
-		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
55
-		'readonly'    => true,
56
-	),
57
-
58
-	'date_modified_gmt'    => array(
59
-		'description' => __( 'The GMT date the discount was last modified.', 'invoicing' ),
60
-		'type'        => 'string',
61
-		'context'     => array( 'view', 'edit', 'embed' ),
62
-		'readonly'    => true,
63
-	),
64
-
65
-	'name'			  => array(
66
-		'description' => __( 'The discount name.', 'invoicing' ),
67
-		'type'        => 'string',
68
-		'context'     => array( 'view', 'edit', 'embed' ),
69
-	),
70
-
71
-	'description'     => array(
72
-		'description' => __( 'A description of what the discount is all about.', 'invoicing' ),
73
-		'type'        => 'string',
74
-		'context'     => array( 'view', 'edit', 'embed' ),
75
-	),
76
-
77
-	'code'            => array(
78
-		'description' => __( 'The discount code.', 'invoicing' ),
79
-		'type'        => 'string',
80
-		'context'     => array( 'view', 'edit', 'embed' ),
81
-		'required'	  => true,
82
-	),
83
-
84
-	'type'            => array(
85
-		'description' => __( 'The type of discount.', 'invoicing' ),
86
-		'type'        => 'string',
87
-		'enum'        => array_keys( wpinv_get_discount_types() ),
88
-		'context'     => array( 'view', 'edit', 'embed' ),
89
-		'default'	  => 'percent',
90
-	),
91
-
92
-	'amount'        => array(
93
-		'description' => __( 'The discount value.', 'invoicing' ),
94
-		'type'        => 'number',
95
-		'context'     => array( 'view', 'edit', 'embed' ),
96
-		'required'	  => true,
97
-	),
98
-
99
-	'formatted_amount'        => array(
100
-		'description' => __( 'The formatted discount value.', 'invoicing' ),
101
-		'type'        => 'string',
102
-		'context'     => array( 'view', 'edit', 'embed' ),
103
-		'readonly'    => true,
104
-	),
105
-
106
-	'uses'            => array(
107
-		'description' => __( 'The number of times the discount has been used.', 'invoicing' ),
108
-		'type'        => 'integer',
109
-		'context'     => array( 'view', 'embed' ),
110
-		'readonly'    => true,
111
-	),
112
-
113
-	'max_uses'        => array(
114
-		'description' => __( 'The maximum number of times the discount can be used.', 'invoicing' ),
115
-		'type'        => 'integer',
116
-		'context'     => array( 'view', 'edit' ),
117
-	),
118
-
119
-	'usage'           => array(
120
-		'description' => __( "The discount's usage, i.e uses / max uses.", 'invoicing' ),
121
-		'type'        => 'string',
122
-		'context'     => array( 'view', 'embed' ),
123
-		'readonly'    => true,
124
-	),
125
-
126
-	'is_single_use'   => array(
127
-		'description' => __( 'Whether or not the discount can only be used once per user.', 'invoicing' ),
128
-		'type'        => 'boolean',
129
-		'context'     => array( 'view', 'edit' ),
130
-	),
131
-
132
-	'is_recurring'   => array(
133
-		'description' => __( 'Whether or not the discount applies to the initial payment only or all recurring payments.', 'invoicing' ),
134
-		'type'        => 'boolean',
135
-		'context'     => array( 'view', 'edit' ),
136
-	),
137
-
138
-	'start_date'      => array(
139
-		'description' => __( 'The start date for the discount in the format of yyyy-mm-dd hh:mm:ss. If provided, the discount can only be used after or on this date.', 'invoicing' ),
140
-		'type'        => 'string',
141
-		'context'     => array( 'view', 'edit' ),
142
-	),
143
-
144
-	'end_date'        => array(
145
-		'description' => __( 'The expiration date for the discount.', 'invoicing' ),
146
-		'type'        => 'string',
147
-		'context'     => array( 'view', 'edit' ),
148
-	),
149
-
150
-	'allowed_items'   => array(
151
-		'description' => __( 'Items which are allowed to use this discount. Leave blank to enable for all items.', 'invoicing' ),
152
-		'type'        => 'array',
153
-		'context'     => array( 'view', 'edit' ),
154
-		'items'       => array(
155
-			'type'    => 'integer'
156
-		)
157
-	),
158
-
159
-	'excluded_items'  => array(
160
-		'description' => __( 'Items which are NOT allowed to use this discount.', 'invoicing' ),
161
-		'type'        => 'array',
162
-		'context'     => array( 'view', 'edit' ),
163
-		'items'       => array(
164
-			'type'    => 'integer'
165
-		)
166
-	),
16
+    'id'              => array(
17
+        'description' => __( 'Unique identifier for the discount.', 'invoicing' ),
18
+        'type'        => 'integer',
19
+        'context'     => array( 'view', 'edit', 'embed' ),
20
+        'readonly'    => true,
21
+    ),
22
+
23
+    'status'          => array(
24
+        'description' => __( 'A named status for the discount.', 'invoicing' ),
25
+        'type'        => 'string',
26
+        'enum'        => array( 'publish', 'pending', 'draft', 'expired' ),
27
+        'default'     => 'draft',
28
+        'context'     => array( 'view', 'edit', 'embed' ),
29
+    ),
30
+
31
+    'version'         => array(
32
+        'description' => __( 'Plugin version when the discount was created.', 'invoicing' ),
33
+        'type'        => 'string',
34
+        'context'     => array( 'view', 'edit', 'embed' ),
35
+        'readonly'    => true,
36
+    ),
37
+
38
+    'date_created'    => array(
39
+        'description' => __( "The date the discount was created, in the site's timezone.", 'invoicing' ),
40
+        'type'        => 'string',
41
+        'context'     => array( 'view', 'edit', 'embed' ),
42
+    ),
43
+
44
+    'date_created_gmt'    => array(
45
+        'description' => __( 'The GMT date the discount was created.', 'invoicing' ),
46
+        'type'        => 'string',
47
+        'context'     => array( 'view', 'edit', 'embed' ),
48
+        'readonly'    => true,
49
+    ),
50
+
51
+    'date_modified'   => array(
52
+        'description' => __( "The date the discount was last modified, in the site's timezone.", 'invoicing' ),
53
+        'type'        => 'string',
54
+        'context'     => array( 'view', 'edit', 'embed' ),
55
+        'readonly'    => true,
56
+    ),
57
+
58
+    'date_modified_gmt'    => array(
59
+        'description' => __( 'The GMT date the discount was last modified.', 'invoicing' ),
60
+        'type'        => 'string',
61
+        'context'     => array( 'view', 'edit', 'embed' ),
62
+        'readonly'    => true,
63
+    ),
64
+
65
+    'name'			  => array(
66
+        'description' => __( 'The discount name.', 'invoicing' ),
67
+        'type'        => 'string',
68
+        'context'     => array( 'view', 'edit', 'embed' ),
69
+    ),
70
+
71
+    'description'     => array(
72
+        'description' => __( 'A description of what the discount is all about.', 'invoicing' ),
73
+        'type'        => 'string',
74
+        'context'     => array( 'view', 'edit', 'embed' ),
75
+    ),
76
+
77
+    'code'            => array(
78
+        'description' => __( 'The discount code.', 'invoicing' ),
79
+        'type'        => 'string',
80
+        'context'     => array( 'view', 'edit', 'embed' ),
81
+        'required'	  => true,
82
+    ),
83
+
84
+    'type'            => array(
85
+        'description' => __( 'The type of discount.', 'invoicing' ),
86
+        'type'        => 'string',
87
+        'enum'        => array_keys( wpinv_get_discount_types() ),
88
+        'context'     => array( 'view', 'edit', 'embed' ),
89
+        'default'	  => 'percent',
90
+    ),
91
+
92
+    'amount'        => array(
93
+        'description' => __( 'The discount value.', 'invoicing' ),
94
+        'type'        => 'number',
95
+        'context'     => array( 'view', 'edit', 'embed' ),
96
+        'required'	  => true,
97
+    ),
98
+
99
+    'formatted_amount'        => array(
100
+        'description' => __( 'The formatted discount value.', 'invoicing' ),
101
+        'type'        => 'string',
102
+        'context'     => array( 'view', 'edit', 'embed' ),
103
+        'readonly'    => true,
104
+    ),
105
+
106
+    'uses'            => array(
107
+        'description' => __( 'The number of times the discount has been used.', 'invoicing' ),
108
+        'type'        => 'integer',
109
+        'context'     => array( 'view', 'embed' ),
110
+        'readonly'    => true,
111
+    ),
112
+
113
+    'max_uses'        => array(
114
+        'description' => __( 'The maximum number of times the discount can be used.', 'invoicing' ),
115
+        'type'        => 'integer',
116
+        'context'     => array( 'view', 'edit' ),
117
+    ),
118
+
119
+    'usage'           => array(
120
+        'description' => __( "The discount's usage, i.e uses / max uses.", 'invoicing' ),
121
+        'type'        => 'string',
122
+        'context'     => array( 'view', 'embed' ),
123
+        'readonly'    => true,
124
+    ),
125
+
126
+    'is_single_use'   => array(
127
+        'description' => __( 'Whether or not the discount can only be used once per user.', 'invoicing' ),
128
+        'type'        => 'boolean',
129
+        'context'     => array( 'view', 'edit' ),
130
+    ),
131
+
132
+    'is_recurring'   => array(
133
+        'description' => __( 'Whether or not the discount applies to the initial payment only or all recurring payments.', 'invoicing' ),
134
+        'type'        => 'boolean',
135
+        'context'     => array( 'view', 'edit' ),
136
+    ),
137
+
138
+    'start_date'      => array(
139
+        'description' => __( 'The start date for the discount in the format of yyyy-mm-dd hh:mm:ss. If provided, the discount can only be used after or on this date.', 'invoicing' ),
140
+        'type'        => 'string',
141
+        'context'     => array( 'view', 'edit' ),
142
+    ),
143
+
144
+    'end_date'        => array(
145
+        'description' => __( 'The expiration date for the discount.', 'invoicing' ),
146
+        'type'        => 'string',
147
+        'context'     => array( 'view', 'edit' ),
148
+    ),
149
+
150
+    'allowed_items'   => array(
151
+        'description' => __( 'Items which are allowed to use this discount. Leave blank to enable for all items.', 'invoicing' ),
152
+        'type'        => 'array',
153
+        'context'     => array( 'view', 'edit' ),
154
+        'items'       => array(
155
+            'type'    => 'integer'
156
+        )
157
+    ),
158
+
159
+    'excluded_items'  => array(
160
+        'description' => __( 'Items which are NOT allowed to use this discount.', 'invoicing' ),
161
+        'type'        => 'array',
162
+        'context'     => array( 'view', 'edit' ),
163
+        'items'       => array(
164
+            'type'    => 'integer'
165
+        )
166
+    ),
167 167
 	
168
-	'minimum_total'   => array(
169
-		'description' => __( 'The minimum total needed to use this invoice.', 'invoicing' ),
170
-		'type'        => 'number',
171
-		'context'     => array( 'view', 'edit' ),
172
-	),
173
-
174
-	'maximum_total'   => array(
175
-		'description' => __( 'The maximum total needed to use this invoice.', 'invoicing' ),
176
-		'type'        => 'number',
177
-		'context'     => array( 'view', 'edit' ),
178
-	),
168
+    'minimum_total'   => array(
169
+        'description' => __( 'The minimum total needed to use this invoice.', 'invoicing' ),
170
+        'type'        => 'number',
171
+        'context'     => array( 'view', 'edit' ),
172
+    ),
173
+
174
+    'maximum_total'   => array(
175
+        'description' => __( 'The maximum total needed to use this invoice.', 'invoicing' ),
176
+        'type'        => 'number',
177
+        'context'     => array( 'view', 'edit' ),
178
+    ),
179 179
 
180 180
 );
Please login to merge, or discard this patch.
Spacing   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -9,172 +9,172 @@
 block discarded – undo
9 9
  * @version 1.0.19
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 return array(
15 15
 
16 16
 	'id'              => array(
17
-		'description' => __( 'Unique identifier for the discount.', 'invoicing' ),
17
+		'description' => __('Unique identifier for the discount.', 'invoicing'),
18 18
 		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
19
+		'context'     => array('view', 'edit', 'embed'),
20 20
 		'readonly'    => true,
21 21
 	),
22 22
 
23 23
 	'status'          => array(
24
-		'description' => __( 'A named status for the discount.', 'invoicing' ),
24
+		'description' => __('A named status for the discount.', 'invoicing'),
25 25
 		'type'        => 'string',
26
-		'enum'        => array( 'publish', 'pending', 'draft', 'expired' ),
26
+		'enum'        => array('publish', 'pending', 'draft', 'expired'),
27 27
 		'default'     => 'draft',
28
-		'context'     => array( 'view', 'edit', 'embed' ),
28
+		'context'     => array('view', 'edit', 'embed'),
29 29
 	),
30 30
 
31 31
 	'version'         => array(
32
-		'description' => __( 'Plugin version when the discount was created.', 'invoicing' ),
32
+		'description' => __('Plugin version when the discount was created.', 'invoicing'),
33 33
 		'type'        => 'string',
34
-		'context'     => array( 'view', 'edit', 'embed' ),
34
+		'context'     => array('view', 'edit', 'embed'),
35 35
 		'readonly'    => true,
36 36
 	),
37 37
 
38 38
 	'date_created'    => array(
39
-		'description' => __( "The date the discount was created, in the site's timezone.", 'invoicing' ),
39
+		'description' => __("The date the discount was created, in the site's timezone.", 'invoicing'),
40 40
 		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit', 'embed' ),
41
+		'context'     => array('view', 'edit', 'embed'),
42 42
 	),
43 43
 
44 44
 	'date_created_gmt'    => array(
45
-		'description' => __( 'The GMT date the discount was created.', 'invoicing' ),
45
+		'description' => __('The GMT date the discount was created.', 'invoicing'),
46 46
 		'type'        => 'string',
47
-		'context'     => array( 'view', 'edit', 'embed' ),
47
+		'context'     => array('view', 'edit', 'embed'),
48 48
 		'readonly'    => true,
49 49
 	),
50 50
 
51 51
 	'date_modified'   => array(
52
-		'description' => __( "The date the discount was last modified, in the site's timezone.", 'invoicing' ),
52
+		'description' => __("The date the discount was last modified, in the site's timezone.", 'invoicing'),
53 53
 		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
54
+		'context'     => array('view', 'edit', 'embed'),
55 55
 		'readonly'    => true,
56 56
 	),
57 57
 
58 58
 	'date_modified_gmt'    => array(
59
-		'description' => __( 'The GMT date the discount was last modified.', 'invoicing' ),
59
+		'description' => __('The GMT date the discount was last modified.', 'invoicing'),
60 60
 		'type'        => 'string',
61
-		'context'     => array( 'view', 'edit', 'embed' ),
61
+		'context'     => array('view', 'edit', 'embed'),
62 62
 		'readonly'    => true,
63 63
 	),
64 64
 
65 65
 	'name'			  => array(
66
-		'description' => __( 'The discount name.', 'invoicing' ),
66
+		'description' => __('The discount name.', 'invoicing'),
67 67
 		'type'        => 'string',
68
-		'context'     => array( 'view', 'edit', 'embed' ),
68
+		'context'     => array('view', 'edit', 'embed'),
69 69
 	),
70 70
 
71 71
 	'description'     => array(
72
-		'description' => __( 'A description of what the discount is all about.', 'invoicing' ),
72
+		'description' => __('A description of what the discount is all about.', 'invoicing'),
73 73
 		'type'        => 'string',
74
-		'context'     => array( 'view', 'edit', 'embed' ),
74
+		'context'     => array('view', 'edit', 'embed'),
75 75
 	),
76 76
 
77 77
 	'code'            => array(
78
-		'description' => __( 'The discount code.', 'invoicing' ),
78
+		'description' => __('The discount code.', 'invoicing'),
79 79
 		'type'        => 'string',
80
-		'context'     => array( 'view', 'edit', 'embed' ),
80
+		'context'     => array('view', 'edit', 'embed'),
81 81
 		'required'	  => true,
82 82
 	),
83 83
 
84 84
 	'type'            => array(
85
-		'description' => __( 'The type of discount.', 'invoicing' ),
85
+		'description' => __('The type of discount.', 'invoicing'),
86 86
 		'type'        => 'string',
87
-		'enum'        => array_keys( wpinv_get_discount_types() ),
88
-		'context'     => array( 'view', 'edit', 'embed' ),
87
+		'enum'        => array_keys(wpinv_get_discount_types()),
88
+		'context'     => array('view', 'edit', 'embed'),
89 89
 		'default'	  => 'percent',
90 90
 	),
91 91
 
92 92
 	'amount'        => array(
93
-		'description' => __( 'The discount value.', 'invoicing' ),
93
+		'description' => __('The discount value.', 'invoicing'),
94 94
 		'type'        => 'number',
95
-		'context'     => array( 'view', 'edit', 'embed' ),
95
+		'context'     => array('view', 'edit', 'embed'),
96 96
 		'required'	  => true,
97 97
 	),
98 98
 
99 99
 	'formatted_amount'        => array(
100
-		'description' => __( 'The formatted discount value.', 'invoicing' ),
100
+		'description' => __('The formatted discount value.', 'invoicing'),
101 101
 		'type'        => 'string',
102
-		'context'     => array( 'view', 'edit', 'embed' ),
102
+		'context'     => array('view', 'edit', 'embed'),
103 103
 		'readonly'    => true,
104 104
 	),
105 105
 
106 106
 	'uses'            => array(
107
-		'description' => __( 'The number of times the discount has been used.', 'invoicing' ),
107
+		'description' => __('The number of times the discount has been used.', 'invoicing'),
108 108
 		'type'        => 'integer',
109
-		'context'     => array( 'view', 'embed' ),
109
+		'context'     => array('view', 'embed'),
110 110
 		'readonly'    => true,
111 111
 	),
112 112
 
113 113
 	'max_uses'        => array(
114
-		'description' => __( 'The maximum number of times the discount can be used.', 'invoicing' ),
114
+		'description' => __('The maximum number of times the discount can be used.', 'invoicing'),
115 115
 		'type'        => 'integer',
116
-		'context'     => array( 'view', 'edit' ),
116
+		'context'     => array('view', 'edit'),
117 117
 	),
118 118
 
119 119
 	'usage'           => array(
120
-		'description' => __( "The discount's usage, i.e uses / max uses.", 'invoicing' ),
120
+		'description' => __("The discount's usage, i.e uses / max uses.", 'invoicing'),
121 121
 		'type'        => 'string',
122
-		'context'     => array( 'view', 'embed' ),
122
+		'context'     => array('view', 'embed'),
123 123
 		'readonly'    => true,
124 124
 	),
125 125
 
126 126
 	'is_single_use'   => array(
127
-		'description' => __( 'Whether or not the discount can only be used once per user.', 'invoicing' ),
127
+		'description' => __('Whether or not the discount can only be used once per user.', 'invoicing'),
128 128
 		'type'        => 'boolean',
129
-		'context'     => array( 'view', 'edit' ),
129
+		'context'     => array('view', 'edit'),
130 130
 	),
131 131
 
132 132
 	'is_recurring'   => array(
133
-		'description' => __( 'Whether or not the discount applies to the initial payment only or all recurring payments.', 'invoicing' ),
133
+		'description' => __('Whether or not the discount applies to the initial payment only or all recurring payments.', 'invoicing'),
134 134
 		'type'        => 'boolean',
135
-		'context'     => array( 'view', 'edit' ),
135
+		'context'     => array('view', 'edit'),
136 136
 	),
137 137
 
138 138
 	'start_date'      => array(
139
-		'description' => __( 'The start date for the discount in the format of yyyy-mm-dd hh:mm:ss. If provided, the discount can only be used after or on this date.', 'invoicing' ),
139
+		'description' => __('The start date for the discount in the format of yyyy-mm-dd hh:mm:ss. If provided, the discount can only be used after or on this date.', 'invoicing'),
140 140
 		'type'        => 'string',
141
-		'context'     => array( 'view', 'edit' ),
141
+		'context'     => array('view', 'edit'),
142 142
 	),
143 143
 
144 144
 	'end_date'        => array(
145
-		'description' => __( 'The expiration date for the discount.', 'invoicing' ),
145
+		'description' => __('The expiration date for the discount.', 'invoicing'),
146 146
 		'type'        => 'string',
147
-		'context'     => array( 'view', 'edit' ),
147
+		'context'     => array('view', 'edit'),
148 148
 	),
149 149
 
150 150
 	'allowed_items'   => array(
151
-		'description' => __( 'Items which are allowed to use this discount. Leave blank to enable for all items.', 'invoicing' ),
151
+		'description' => __('Items which are allowed to use this discount. Leave blank to enable for all items.', 'invoicing'),
152 152
 		'type'        => 'array',
153
-		'context'     => array( 'view', 'edit' ),
153
+		'context'     => array('view', 'edit'),
154 154
 		'items'       => array(
155 155
 			'type'    => 'integer'
156 156
 		)
157 157
 	),
158 158
 
159 159
 	'excluded_items'  => array(
160
-		'description' => __( 'Items which are NOT allowed to use this discount.', 'invoicing' ),
160
+		'description' => __('Items which are NOT allowed to use this discount.', 'invoicing'),
161 161
 		'type'        => 'array',
162
-		'context'     => array( 'view', 'edit' ),
162
+		'context'     => array('view', 'edit'),
163 163
 		'items'       => array(
164 164
 			'type'    => 'integer'
165 165
 		)
166 166
 	),
167 167
 	
168 168
 	'minimum_total'   => array(
169
-		'description' => __( 'The minimum total needed to use this invoice.', 'invoicing' ),
169
+		'description' => __('The minimum total needed to use this invoice.', 'invoicing'),
170 170
 		'type'        => 'number',
171
-		'context'     => array( 'view', 'edit' ),
171
+		'context'     => array('view', 'edit'),
172 172
 	),
173 173
 
174 174
 	'maximum_total'   => array(
175
-		'description' => __( 'The maximum total needed to use this invoice.', 'invoicing' ),
175
+		'description' => __('The maximum total needed to use this invoice.', 'invoicing'),
176 176
 		'type'        => 'number',
177
-		'context'     => array( 'view', 'edit' ),
177
+		'context'     => array('view', 'edit'),
178 178
 	),
179 179
 
180 180
 );
Please login to merge, or discard this patch.
includes/class-wpinv-api.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  * @since    1.0.19
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /**
12 12
  * The main API class
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
         $this->discounts = new WPInv_REST_Discounts_Controller();
49 49
 
50 50
         // Fires after loading the rest api.
51
-        do_action( 'getpaid_rest_api_loaded', $this );
51
+        do_action('getpaid_rest_api_loaded', $this);
52 52
     }
53 53
 
54 54
 }
Please login to merge, or discard this patch.
uninstall.php 2 patches
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
4
-	exit;
4
+    exit;
5 5
 }
6 6
 
7 7
 global $wpdb;
Please login to merge, or discard this patch.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -1,26 +1,26 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
3
+if (!defined('WP_UNINSTALL_PLUGIN')) {
4 4
 	exit;
5 5
 }
6 6
 
7 7
 global $wpdb;
8 8
 
9
-if ( get_option( 'wpinv_remove_data_on_invoice_unistall' ) ) {
9
+if (get_option('wpinv_remove_data_on_invoice_unistall')) {
10 10
 
11 11
     // Fetch settings.
12
-    $settings = get_option( 'wpinv_settings' );
12
+    $settings = get_option('wpinv_settings');
13 13
 
14 14
     // Delete pages.
15
-    $pages = array( 'checkout_page', 'success_page', 'failure_page', 'invoice_history_page', 'quote_history_page', 'invoice_subscription_page' );
16
-    foreach ( $pages as $page ) {
17
-        if ( is_array( $settings ) && ! empty( $settings[ $page ] ) ) {
18
-            wp_delete_post( $settings[ $page ], true );
15
+    $pages = array('checkout_page', 'success_page', 'failure_page', 'invoice_history_page', 'quote_history_page', 'invoice_subscription_page');
16
+    foreach ($pages as $page) {
17
+        if (is_array($settings) && !empty($settings[$page])) {
18
+            wp_delete_post($settings[$page], true);
19 19
         }
20 20
     }
21 21
 
22 22
     // Delete options.
23
-    $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wpinv\_%';" );
23
+    $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wpinv\_%';");
24 24
 
25 25
     // Delete posts.
26 26
     $wpdb->query(
@@ -49,9 +49,9 @@  discard block
 block discarded – undo
49 49
     );
50 50
 
51 51
     // Cleanup Cron Schedule
52
-    wp_clear_scheduled_hook( 'wp_session_garbage_collection' );
53
-    wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' );
54
-    wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' );
52
+    wp_clear_scheduled_hook('wp_session_garbage_collection');
53
+    wp_clear_scheduled_hook('wpinv_register_schedule_event_twicedaily');
54
+    wp_clear_scheduled_hook('wpinv_register_schedule_event_daily');
55 55
 
56 56
     // Clear any cached data that has been removed
57 57
     wp_cache_flush();
@@ -63,8 +63,8 @@  discard block
 block discarded – undo
63 63
         "{$wpdb->prefix}getpaid_invoice_items",
64 64
     );
65 65
 
66
-    foreach ( $tables as $table ) {
67
-        $wpdb->query( "DROP TABLE IF EXISTS {$table}" );
66
+    foreach ($tables as $table) {
67
+        $wpdb->query("DROP TABLE IF EXISTS {$table}");
68 68
     }
69 69
 
70 70
 }
Please login to merge, or discard this patch.
includes/class-getpaid-post-types.php 2 patches
Indentation   +297 added lines, -297 removed lines patch added patch discarded remove patch
@@ -15,322 +15,322 @@
 block discarded – undo
15 15
 class GetPaid_Post_Types {
16 16
 
17 17
     /**
18
-	 * Hook in methods.
19
-	 */
20
-	public function __construct() {
21
-		add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 );
22
-		add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 );
23
-		add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) );
24
-		add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) );
25
-	}
18
+     * Hook in methods.
19
+     */
20
+    public function __construct() {
21
+        add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 );
22
+        add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 );
23
+        add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) );
24
+        add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) );
25
+    }
26 26
 
27
-	/**
28
-	 * Register core post types.
29
-	 */
30
-	public static function register_post_types() {
27
+    /**
28
+     * Register core post types.
29
+     */
30
+    public static function register_post_types() {
31 31
 
32
-		if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) {
33
-			return;
34
-		}
32
+        if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) {
33
+            return;
34
+        }
35 35
 
36
-		// Fires before registering post types.
37
-		do_action( 'getpaid_register_post_types' );
36
+        // Fires before registering post types.
37
+        do_action( 'getpaid_register_post_types' );
38 38
 
39
-		// Register item post type.
40
-		register_post_type(
41
-			'wpi_item',
42
-			apply_filters(
43
-				'wpinv_register_post_type_invoice_item',
44
-				array(
45
-					'labels'             => array(
46
-						'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
47
-						'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
48
-						'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
49
-						'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
50
-						'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
51
-						'add_new_item'       => __( 'Add New Item', 'invoicing' ),
52
-						'new_item'           => __( 'New Item', 'invoicing' ),
53
-						'edit_item'          => __( 'Edit Item', 'invoicing' ),
54
-						'view_item'          => __( 'View Item', 'invoicing' ),
55
-						'all_items'          => __( 'Items', 'invoicing' ),
56
-						'search_items'       => __( 'Search items', 'invoicing' ),
57
-						'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
58
-						'not_found'          => __( 'No items found.', 'invoicing' ),
59
-						'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' )
60
-					),
61
-					'description'           => __( 'This is where you can add new invoice items.', 'invoicing' ),
62
-					'public'                => false,
63
-					'has_archive'           => false,
64
-					'_builtin'              => false,
65
-					'show_ui'               => true,
66
-					'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
67
-					'show_in_nav_menus'     => false,
68
-					'supports'              => array( 'title', 'excerpt' ),
69
-					'rewrite'               => false,
70
-					'query_var'             => false,
71
-					'capability_type'       => 'wpi_item',
72
-					'map_meta_cap'          => true,
73
-					'show_in_admin_bar'     => true,
74
-					'can_export'            => true,
75
-				)
76
-			)
77
-		);
39
+        // Register item post type.
40
+        register_post_type(
41
+            'wpi_item',
42
+            apply_filters(
43
+                'wpinv_register_post_type_invoice_item',
44
+                array(
45
+                    'labels'             => array(
46
+                        'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
47
+                        'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
48
+                        'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
49
+                        'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
50
+                        'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
51
+                        'add_new_item'       => __( 'Add New Item', 'invoicing' ),
52
+                        'new_item'           => __( 'New Item', 'invoicing' ),
53
+                        'edit_item'          => __( 'Edit Item', 'invoicing' ),
54
+                        'view_item'          => __( 'View Item', 'invoicing' ),
55
+                        'all_items'          => __( 'Items', 'invoicing' ),
56
+                        'search_items'       => __( 'Search items', 'invoicing' ),
57
+                        'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
58
+                        'not_found'          => __( 'No items found.', 'invoicing' ),
59
+                        'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' )
60
+                    ),
61
+                    'description'           => __( 'This is where you can add new invoice items.', 'invoicing' ),
62
+                    'public'                => false,
63
+                    'has_archive'           => false,
64
+                    '_builtin'              => false,
65
+                    'show_ui'               => true,
66
+                    'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
67
+                    'show_in_nav_menus'     => false,
68
+                    'supports'              => array( 'title', 'excerpt' ),
69
+                    'rewrite'               => false,
70
+                    'query_var'             => false,
71
+                    'capability_type'       => 'wpi_item',
72
+                    'map_meta_cap'          => true,
73
+                    'show_in_admin_bar'     => true,
74
+                    'can_export'            => true,
75
+                )
76
+            )
77
+        );
78 78
 
79
-		// Register payment form post type.
80
-		register_post_type(
81
-			'wpi_payment_form',
82
-			apply_filters(
83
-				'wpinv_register_post_type_payment_form',
84
-				array(
85
-					'labels'             => array(
86
-						'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
87
-						'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
88
-						'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
89
-						'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
90
-						'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
91
-						'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
92
-						'new_item'           => __( 'New Payment Form', 'invoicing' ),
93
-						'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
94
-						'view_item'          => __( 'View Payment Form', 'invoicing' ),
95
-						'all_items'          => __( 'Payment Forms', 'invoicing' ),
96
-						'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
97
-						'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
98
-						'not_found'          => __( 'No payment forms found.', 'invoicing' ),
99
-						'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' )
100
-					),
101
-					'description'        => __( 'Add new payment forms.', 'invoicing' ),
102
-					'public'             => false,
103
-					'show_ui'            => true,
104
-					'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : true,
105
-					'show_in_nav_menus'  => false,
106
-					'query_var'          => false,
107
-					'rewrite'            => true,
108
-					'map_meta_cap'       => true,
109
-					'has_archive'        => false,
110
-					'hierarchical'       => false,
111
-					'menu_position'      => null,
112
-					'supports'           => array( 'title' ),
113
-					'menu_icon'          => 'dashicons-media-form',
114
-				)
115
-			)
116
-		);
79
+        // Register payment form post type.
80
+        register_post_type(
81
+            'wpi_payment_form',
82
+            apply_filters(
83
+                'wpinv_register_post_type_payment_form',
84
+                array(
85
+                    'labels'             => array(
86
+                        'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
87
+                        'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
88
+                        'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
89
+                        'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
90
+                        'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
91
+                        'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
92
+                        'new_item'           => __( 'New Payment Form', 'invoicing' ),
93
+                        'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
94
+                        'view_item'          => __( 'View Payment Form', 'invoicing' ),
95
+                        'all_items'          => __( 'Payment Forms', 'invoicing' ),
96
+                        'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
97
+                        'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
98
+                        'not_found'          => __( 'No payment forms found.', 'invoicing' ),
99
+                        'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' )
100
+                    ),
101
+                    'description'        => __( 'Add new payment forms.', 'invoicing' ),
102
+                    'public'             => false,
103
+                    'show_ui'            => true,
104
+                    'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : true,
105
+                    'show_in_nav_menus'  => false,
106
+                    'query_var'          => false,
107
+                    'rewrite'            => true,
108
+                    'map_meta_cap'       => true,
109
+                    'has_archive'        => false,
110
+                    'hierarchical'       => false,
111
+                    'menu_position'      => null,
112
+                    'supports'           => array( 'title' ),
113
+                    'menu_icon'          => 'dashicons-media-form',
114
+                )
115
+            )
116
+        );
117 117
 
118
-		// Register invoice post type.
119
-		register_post_type(
120
-			'wpi_invoice',
121
-			apply_filters(
122
-				'wpinv_register_post_type_invoice',
123
-				array(
124
-					'labels'                 => array(
125
-						'name'                  => __( 'Invoices', 'invoicing' ),
126
-						'singular_name'         => __( 'Invoice', 'invoicing' ),
127
-						'all_items'             => __( 'Invoices', 'invoicing' ),
128
-						'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
129
-						'add_new'               => __( 'Add New', 'invoicing' ),
130
-						'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
131
-						'edit'                  => __( 'Edit', 'invoicing' ),
132
-						'edit_item'             => __( 'Edit invoice', 'invoicing' ),
133
-						'new_item'              => __( 'New invoice', 'invoicing' ),
134
-						'view_item'             => __( 'View invoice', 'invoicing' ),
135
-						'view_items'            => __( 'View Invoices', 'invoicing' ),
136
-						'search_items'          => __( 'Search invoices', 'invoicing' ),
137
-						'not_found'             => __( 'No invoices found', 'invoicing' ),
138
-						'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
139
-						'parent'                => __( 'Parent invoice', 'invoicing' ),
140
-						'featured_image'        => __( 'Invoice image', 'invoicing' ),
141
-						'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
142
-						'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
143
-						'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
144
-						'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
145
-						'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
146
-						'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
147
-						'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
148
-						'items_list'            => __( 'Invoices list', 'invoicing' ),
149
-					),
150
-					'description'           => __( 'This is where invoices are stored.', 'invoicing' ),
151
-					'public'                => true,
152
-					'has_archive'           => false,
153
-					'publicly_queryable'    => true,
154
-        			'exclude_from_search'   => true,
155
-        			'show_ui'               => true,
156
-					'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
157
-					'show_in_nav_menus'     => false,
158
-					'supports'              => array( 'title', 'author', 'excerpt'  ),
159
-					'rewrite'               => array(
160
-						'slug'              => 'invoice',
161
-						'with_front'        => false,
162
-					),
163
-					'query_var'             => false,
164
-					'capability_type'       => 'wpi_invoice',
165
-					'map_meta_cap'          => true,
166
-					'show_in_admin_bar'     => true,
167
-					'can_export'            => true,
168
-					'hierarchical'          => false,
169
-					'menu_position'         => null,
170
-					'menu_icon'             => 'dashicons-media-spreadsheet',
171
-				)
172
-			)
173
-		);
118
+        // Register invoice post type.
119
+        register_post_type(
120
+            'wpi_invoice',
121
+            apply_filters(
122
+                'wpinv_register_post_type_invoice',
123
+                array(
124
+                    'labels'                 => array(
125
+                        'name'                  => __( 'Invoices', 'invoicing' ),
126
+                        'singular_name'         => __( 'Invoice', 'invoicing' ),
127
+                        'all_items'             => __( 'Invoices', 'invoicing' ),
128
+                        'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
129
+                        'add_new'               => __( 'Add New', 'invoicing' ),
130
+                        'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
131
+                        'edit'                  => __( 'Edit', 'invoicing' ),
132
+                        'edit_item'             => __( 'Edit invoice', 'invoicing' ),
133
+                        'new_item'              => __( 'New invoice', 'invoicing' ),
134
+                        'view_item'             => __( 'View invoice', 'invoicing' ),
135
+                        'view_items'            => __( 'View Invoices', 'invoicing' ),
136
+                        'search_items'          => __( 'Search invoices', 'invoicing' ),
137
+                        'not_found'             => __( 'No invoices found', 'invoicing' ),
138
+                        'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
139
+                        'parent'                => __( 'Parent invoice', 'invoicing' ),
140
+                        'featured_image'        => __( 'Invoice image', 'invoicing' ),
141
+                        'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
142
+                        'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
143
+                        'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
144
+                        'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
145
+                        'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
146
+                        'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
147
+                        'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
148
+                        'items_list'            => __( 'Invoices list', 'invoicing' ),
149
+                    ),
150
+                    'description'           => __( 'This is where invoices are stored.', 'invoicing' ),
151
+                    'public'                => true,
152
+                    'has_archive'           => false,
153
+                    'publicly_queryable'    => true,
154
+                    'exclude_from_search'   => true,
155
+                    'show_ui'               => true,
156
+                    'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
157
+                    'show_in_nav_menus'     => false,
158
+                    'supports'              => array( 'title', 'author', 'excerpt'  ),
159
+                    'rewrite'               => array(
160
+                        'slug'              => 'invoice',
161
+                        'with_front'        => false,
162
+                    ),
163
+                    'query_var'             => false,
164
+                    'capability_type'       => 'wpi_invoice',
165
+                    'map_meta_cap'          => true,
166
+                    'show_in_admin_bar'     => true,
167
+                    'can_export'            => true,
168
+                    'hierarchical'          => false,
169
+                    'menu_position'         => null,
170
+                    'menu_icon'             => 'dashicons-media-spreadsheet',
171
+                )
172
+            )
173
+        );
174 174
 
175
-		// Register discount post type.
176
-		register_post_type(
177
-			'wpi_discount',
178
-			apply_filters(
179
-				'wpinv_register_post_type_discount',
180
-				array(
181
-					'labels'                 => array(
182
-						'name'                  => __( 'Discounts', 'invoicing' ),
183
-						'singular_name'         => __( 'Discount', 'invoicing' ),
184
-						'all_items'             => __( 'Discounts', 'invoicing' ),
185
-						'menu_name'             => _x( 'Discounts', 'Admin menu name', 'invoicing' ),
186
-						'add_new'               => __( 'Add New', 'invoicing' ),
187
-						'add_new_item'          => __( 'Add new discount', 'invoicing' ),
188
-						'edit'                  => __( 'Edit', 'invoicing' ),
189
-						'edit_item'             => __( 'Edit discount', 'invoicing' ),
190
-						'new_item'              => __( 'New discount', 'invoicing' ),
191
-						'view_item'             => __( 'View discount', 'invoicing' ),
192
-						'view_items'            => __( 'View Discounts', 'invoicing' ),
193
-						'search_items'          => __( 'Search discounts', 'invoicing' ),
194
-						'not_found'             => __( 'No discounts found', 'invoicing' ),
195
-						'not_found_in_trash'    => __( 'No discounts found in trash', 'invoicing' ),
196
-						'parent'                => __( 'Parent discount', 'invoicing' ),
197
-						'featured_image'        => __( 'Discount image', 'invoicing' ),
198
-						'set_featured_image'    => __( 'Set discount image', 'invoicing' ),
199
-						'remove_featured_image' => __( 'Remove discount image', 'invoicing' ),
200
-						'use_featured_image'    => __( 'Use as discount image', 'invoicing' ),
201
-						'insert_into_item'      => __( 'Insert into discount', 'invoicing' ),
202
-						'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ),
203
-						'filter_items_list'     => __( 'Filter discounts', 'invoicing' ),
204
-						'items_list_navigation' => __( 'Discount navigation', 'invoicing' ),
205
-						'items_list'            => __( 'Discounts list', 'invoicing' ),
206
-					),
207
-					'description'        => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ),
208
-					'public'             => false,
209
-					'can_export'         => true,
210
-					'_builtin'           => false,
211
-					'publicly_queryable' => false,
212
-					'exclude_from_search'=> true,
213
-					'show_ui'            => true,
214
-					'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
215
-					'query_var'          => false,
216
-					'rewrite'            => false,
217
-					'capability_type'    => 'wpi_discount',
218
-					'map_meta_cap'       => true,
219
-					'has_archive'        => false,
220
-					'hierarchical'       => false,
221
-					'supports'           => array( 'title', 'excerpt' ),
222
-					'show_in_nav_menus'  => false,
223
-					'show_in_admin_bar'  => true,
224
-					'menu_position'      => null,
225
-				)
226
-			)
227
-		);
175
+        // Register discount post type.
176
+        register_post_type(
177
+            'wpi_discount',
178
+            apply_filters(
179
+                'wpinv_register_post_type_discount',
180
+                array(
181
+                    'labels'                 => array(
182
+                        'name'                  => __( 'Discounts', 'invoicing' ),
183
+                        'singular_name'         => __( 'Discount', 'invoicing' ),
184
+                        'all_items'             => __( 'Discounts', 'invoicing' ),
185
+                        'menu_name'             => _x( 'Discounts', 'Admin menu name', 'invoicing' ),
186
+                        'add_new'               => __( 'Add New', 'invoicing' ),
187
+                        'add_new_item'          => __( 'Add new discount', 'invoicing' ),
188
+                        'edit'                  => __( 'Edit', 'invoicing' ),
189
+                        'edit_item'             => __( 'Edit discount', 'invoicing' ),
190
+                        'new_item'              => __( 'New discount', 'invoicing' ),
191
+                        'view_item'             => __( 'View discount', 'invoicing' ),
192
+                        'view_items'            => __( 'View Discounts', 'invoicing' ),
193
+                        'search_items'          => __( 'Search discounts', 'invoicing' ),
194
+                        'not_found'             => __( 'No discounts found', 'invoicing' ),
195
+                        'not_found_in_trash'    => __( 'No discounts found in trash', 'invoicing' ),
196
+                        'parent'                => __( 'Parent discount', 'invoicing' ),
197
+                        'featured_image'        => __( 'Discount image', 'invoicing' ),
198
+                        'set_featured_image'    => __( 'Set discount image', 'invoicing' ),
199
+                        'remove_featured_image' => __( 'Remove discount image', 'invoicing' ),
200
+                        'use_featured_image'    => __( 'Use as discount image', 'invoicing' ),
201
+                        'insert_into_item'      => __( 'Insert into discount', 'invoicing' ),
202
+                        'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ),
203
+                        'filter_items_list'     => __( 'Filter discounts', 'invoicing' ),
204
+                        'items_list_navigation' => __( 'Discount navigation', 'invoicing' ),
205
+                        'items_list'            => __( 'Discounts list', 'invoicing' ),
206
+                    ),
207
+                    'description'        => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ),
208
+                    'public'             => false,
209
+                    'can_export'         => true,
210
+                    '_builtin'           => false,
211
+                    'publicly_queryable' => false,
212
+                    'exclude_from_search'=> true,
213
+                    'show_ui'            => true,
214
+                    'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
215
+                    'query_var'          => false,
216
+                    'rewrite'            => false,
217
+                    'capability_type'    => 'wpi_discount',
218
+                    'map_meta_cap'       => true,
219
+                    'has_archive'        => false,
220
+                    'hierarchical'       => false,
221
+                    'supports'           => array( 'title', 'excerpt' ),
222
+                    'show_in_nav_menus'  => false,
223
+                    'show_in_admin_bar'  => true,
224
+                    'menu_position'      => null,
225
+                )
226
+            )
227
+        );
228 228
 
229
-		do_action( 'getpaid_after_register_post_types' );
230
-	}
229
+        do_action( 'getpaid_after_register_post_types' );
230
+    }
231 231
 
232
-	/**
233
-	 * Register our custom post statuses.
234
-	 */
235
-	public static function register_post_status() {
232
+    /**
233
+     * Register our custom post statuses.
234
+     */
235
+    public static function register_post_status() {
236 236
 
237
-		$invoice_statuses = apply_filters(
238
-			'getpaid_register_invoice_post_statuses',
239
-			array(
237
+        $invoice_statuses = apply_filters(
238
+            'getpaid_register_invoice_post_statuses',
239
+            array(
240 240
 
241
-				'wpi-pending' => array(
242
-					'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
243
-        			'public'                    => true,
244
-        			'exclude_from_search'       => true,
245
-        			'show_in_admin_all_list'    => true,
246
-					'show_in_admin_status_list' => true,
247
-					/* translators: %s: number of invoices */
248
-        			'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' )
249
-				),
241
+                'wpi-pending' => array(
242
+                    'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
243
+                    'public'                    => true,
244
+                    'exclude_from_search'       => true,
245
+                    'show_in_admin_all_list'    => true,
246
+                    'show_in_admin_status_list' => true,
247
+                    /* translators: %s: number of invoices */
248
+                    'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' )
249
+                ),
250 250
 
251
-				'wpi-processing' => array(
252
-					'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
253
-        			'public'                    => true,
254
-        			'exclude_from_search'       => true,
255
-        			'show_in_admin_all_list'    => true,
256
-					'show_in_admin_status_list' => true,
257
-					/* translators: %s: number of invoices */
258
-        			'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' )
259
-				),
251
+                'wpi-processing' => array(
252
+                    'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
253
+                    'public'                    => true,
254
+                    'exclude_from_search'       => true,
255
+                    'show_in_admin_all_list'    => true,
256
+                    'show_in_admin_status_list' => true,
257
+                    /* translators: %s: number of invoices */
258
+                    'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' )
259
+                ),
260 260
 
261
-				'wpi-onhold' => array(
262
-					'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
263
-        			'public'                    => true,
264
-        			'exclude_from_search'       => true,
265
-        			'show_in_admin_all_list'    => true,
266
-					'show_in_admin_status_list' => true,
267
-					/* translators: %s: number of invoices */
268
-        			'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' )
269
-				),
261
+                'wpi-onhold' => array(
262
+                    'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
263
+                    'public'                    => true,
264
+                    'exclude_from_search'       => true,
265
+                    'show_in_admin_all_list'    => true,
266
+                    'show_in_admin_status_list' => true,
267
+                    /* translators: %s: number of invoices */
268
+                    'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' )
269
+                ),
270 270
 
271
-				'wpi-cancelled' => array(
272
-					'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
273
-        			'public'                    => true,
274
-        			'exclude_from_search'       => true,
275
-        			'show_in_admin_all_list'    => true,
276
-					'show_in_admin_status_list' => true,
277
-					/* translators: %s: number of invoices */
278
-        			'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' )
279
-				),
271
+                'wpi-cancelled' => array(
272
+                    'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
273
+                    'public'                    => true,
274
+                    'exclude_from_search'       => true,
275
+                    'show_in_admin_all_list'    => true,
276
+                    'show_in_admin_status_list' => true,
277
+                    /* translators: %s: number of invoices */
278
+                    'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' )
279
+                ),
280 280
 
281
-				'wpi-refunded' => array(
282
-					'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
283
-        			'public'                    => true,
284
-        			'exclude_from_search'       => true,
285
-        			'show_in_admin_all_list'    => true,
286
-					'show_in_admin_status_list' => true,
287
-					/* translators: %s: number of invoices */
288
-        			'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' )
289
-				),
281
+                'wpi-refunded' => array(
282
+                    'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
283
+                    'public'                    => true,
284
+                    'exclude_from_search'       => true,
285
+                    'show_in_admin_all_list'    => true,
286
+                    'show_in_admin_status_list' => true,
287
+                    /* translators: %s: number of invoices */
288
+                    'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' )
289
+                ),
290 290
 
291
-				'wpi-failed' => array(
292
-					'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
293
-        			'public'                    => true,
294
-        			'exclude_from_search'       => true,
295
-        			'show_in_admin_all_list'    => true,
296
-					'show_in_admin_status_list' => true,
297
-					/* translators: %s: number of invoices */
298
-        			'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' )
299
-				),
291
+                'wpi-failed' => array(
292
+                    'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
293
+                    'public'                    => true,
294
+                    'exclude_from_search'       => true,
295
+                    'show_in_admin_all_list'    => true,
296
+                    'show_in_admin_status_list' => true,
297
+                    /* translators: %s: number of invoices */
298
+                    'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' )
299
+                ),
300 300
 
301
-				'wpi-renewal' => array(
302
-					'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
303
-        			'public'                    => true,
304
-        			'exclude_from_search'       => true,
305
-        			'show_in_admin_all_list'    => true,
306
-					'show_in_admin_status_list' => true,
307
-					/* translators: %s: number of invoices */
308
-        			'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' )
309
-				)
310
-			)
311
-		);
301
+                'wpi-renewal' => array(
302
+                    'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
303
+                    'public'                    => true,
304
+                    'exclude_from_search'       => true,
305
+                    'show_in_admin_all_list'    => true,
306
+                    'show_in_admin_status_list' => true,
307
+                    /* translators: %s: number of invoices */
308
+                    'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' )
309
+                )
310
+            )
311
+        );
312 312
 
313
-		foreach ( $invoice_statuses as $invoice_statuse => $args ) {
314
-			register_post_status( $invoice_statuse, $args );
315
-		}
316
-	}
313
+        foreach ( $invoice_statuses as $invoice_statuse => $args ) {
314
+            register_post_status( $invoice_statuse, $args );
315
+        }
316
+    }
317 317
 
318
-	/**
319
-	 * Flush rewrite rules.
320
-	 */
321
-	public static function flush_rewrite_rules() {
322
-		flush_rewrite_rules();
323
-	}
318
+    /**
319
+     * Flush rewrite rules.
320
+     */
321
+    public static function flush_rewrite_rules() {
322
+        flush_rewrite_rules();
323
+    }
324 324
 
325
-	/**
326
-	 * Flush rules to prevent 404.
327
-	 *
328
-	 */
329
-	public static function maybe_flush_rewrite_rules() {
330
-		if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
331
-			update_option( 'getpaid_flushed_rewrite_rules', '1' );
332
-			self::flush_rewrite_rules();
333
-		}
334
-	}
325
+    /**
326
+     * Flush rules to prevent 404.
327
+     *
328
+     */
329
+    public static function maybe_flush_rewrite_rules() {
330
+        if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
331
+            update_option( 'getpaid_flushed_rewrite_rules', '1' );
332
+            self::flush_rewrite_rules();
333
+        }
334
+    }
335 335
 
336 336
 }
Please login to merge, or discard this patch.
Spacing   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  *
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /**
12 12
  * Post types Class
@@ -18,10 +18,10 @@  discard block
 block discarded – undo
18 18
 	 * Hook in methods.
19 19
 	 */
20 20
 	public function __construct() {
21
-		add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 );
22
-		add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 );
23
-		add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) );
24
-		add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) );
21
+		add_action('init', array(__CLASS__, 'register_post_types'), 1);
22
+		add_action('init', array(__CLASS__, 'register_post_status'), 4);
23
+		add_action('getpaid_flush_rewrite_rules', array(__CLASS__, 'flush_rewrite_rules'));
24
+		add_action('getpaid_after_register_post_types', array(__CLASS__, 'maybe_flush_rewrite_rules'));
25 25
 	}
26 26
 
27 27
 	/**
@@ -29,12 +29,12 @@  discard block
 block discarded – undo
29 29
 	 */
30 30
 	public static function register_post_types() {
31 31
 
32
-		if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) {
32
+		if (!is_blog_installed() || post_type_exists('wpi_item')) {
33 33
 			return;
34 34
 		}
35 35
 
36 36
 		// Fires before registering post types.
37
-		do_action( 'getpaid_register_post_types' );
37
+		do_action('getpaid_register_post_types');
38 38
 
39 39
 		// Register item post type.
40 40
 		register_post_type(
@@ -43,29 +43,29 @@  discard block
 block discarded – undo
43 43
 				'wpinv_register_post_type_invoice_item',
44 44
 				array(
45 45
 					'labels'             => array(
46
-						'name'               => _x( 'Items', 'post type general name', 'invoicing' ),
47
-						'singular_name'      => _x( 'Item', 'post type singular name', 'invoicing' ),
48
-						'menu_name'          => _x( 'Items', 'admin menu', 'invoicing' ),
49
-						'name_admin_bar'     => _x( 'Item', 'add new on admin bar', 'invoicing' ),
50
-						'add_new'            => _x( 'Add New', 'Item', 'invoicing' ),
51
-						'add_new_item'       => __( 'Add New Item', 'invoicing' ),
52
-						'new_item'           => __( 'New Item', 'invoicing' ),
53
-						'edit_item'          => __( 'Edit Item', 'invoicing' ),
54
-						'view_item'          => __( 'View Item', 'invoicing' ),
55
-						'all_items'          => __( 'Items', 'invoicing' ),
56
-						'search_items'       => __( 'Search items', 'invoicing' ),
57
-						'parent_item_colon'  => __( 'Parent item:', 'invoicing' ),
58
-						'not_found'          => __( 'No items found.', 'invoicing' ),
59
-						'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' )
46
+						'name'               => _x('Items', 'post type general name', 'invoicing'),
47
+						'singular_name'      => _x('Item', 'post type singular name', 'invoicing'),
48
+						'menu_name'          => _x('Items', 'admin menu', 'invoicing'),
49
+						'name_admin_bar'     => _x('Item', 'add new on admin bar', 'invoicing'),
50
+						'add_new'            => _x('Add New', 'Item', 'invoicing'),
51
+						'add_new_item'       => __('Add New Item', 'invoicing'),
52
+						'new_item'           => __('New Item', 'invoicing'),
53
+						'edit_item'          => __('Edit Item', 'invoicing'),
54
+						'view_item'          => __('View Item', 'invoicing'),
55
+						'all_items'          => __('Items', 'invoicing'),
56
+						'search_items'       => __('Search items', 'invoicing'),
57
+						'parent_item_colon'  => __('Parent item:', 'invoicing'),
58
+						'not_found'          => __('No items found.', 'invoicing'),
59
+						'not_found_in_trash' => __('No items found in trash.', 'invoicing')
60 60
 					),
61
-					'description'           => __( 'This is where you can add new invoice items.', 'invoicing' ),
61
+					'description'           => __('This is where you can add new invoice items.', 'invoicing'),
62 62
 					'public'                => false,
63 63
 					'has_archive'           => false,
64 64
 					'_builtin'              => false,
65 65
 					'show_ui'               => true,
66 66
 					'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
67 67
 					'show_in_nav_menus'     => false,
68
-					'supports'              => array( 'title', 'excerpt' ),
68
+					'supports'              => array('title', 'excerpt'),
69 69
 					'rewrite'               => false,
70 70
 					'query_var'             => false,
71 71
 					'capability_type'       => 'wpi_item',
@@ -83,22 +83,22 @@  discard block
 block discarded – undo
83 83
 				'wpinv_register_post_type_payment_form',
84 84
 				array(
85 85
 					'labels'             => array(
86
-						'name'               => _x( 'Payment Forms', 'post type general name', 'invoicing' ),
87
-						'singular_name'      => _x( 'Payment Form', 'post type singular name', 'invoicing' ),
88
-						'menu_name'          => _x( 'Payment Forms', 'admin menu', 'invoicing' ),
89
-						'name_admin_bar'     => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ),
90
-						'add_new'            => _x( 'Add New', 'Payment Form', 'invoicing' ),
91
-						'add_new_item'       => __( 'Add New Payment Form', 'invoicing' ),
92
-						'new_item'           => __( 'New Payment Form', 'invoicing' ),
93
-						'edit_item'          => __( 'Edit Payment Form', 'invoicing' ),
94
-						'view_item'          => __( 'View Payment Form', 'invoicing' ),
95
-						'all_items'          => __( 'Payment Forms', 'invoicing' ),
96
-						'search_items'       => __( 'Search Payment Forms', 'invoicing' ),
97
-						'parent_item_colon'  => __( 'Parent Payment Forms:', 'invoicing' ),
98
-						'not_found'          => __( 'No payment forms found.', 'invoicing' ),
99
-						'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' )
86
+						'name'               => _x('Payment Forms', 'post type general name', 'invoicing'),
87
+						'singular_name'      => _x('Payment Form', 'post type singular name', 'invoicing'),
88
+						'menu_name'          => _x('Payment Forms', 'admin menu', 'invoicing'),
89
+						'name_admin_bar'     => _x('Payment Form', 'add new on admin bar', 'invoicing'),
90
+						'add_new'            => _x('Add New', 'Payment Form', 'invoicing'),
91
+						'add_new_item'       => __('Add New Payment Form', 'invoicing'),
92
+						'new_item'           => __('New Payment Form', 'invoicing'),
93
+						'edit_item'          => __('Edit Payment Form', 'invoicing'),
94
+						'view_item'          => __('View Payment Form', 'invoicing'),
95
+						'all_items'          => __('Payment Forms', 'invoicing'),
96
+						'search_items'       => __('Search Payment Forms', 'invoicing'),
97
+						'parent_item_colon'  => __('Parent Payment Forms:', 'invoicing'),
98
+						'not_found'          => __('No payment forms found.', 'invoicing'),
99
+						'not_found_in_trash' => __('No payment forms found in trash.', 'invoicing')
100 100
 					),
101
-					'description'        => __( 'Add new payment forms.', 'invoicing' ),
101
+					'description'        => __('Add new payment forms.', 'invoicing'),
102 102
 					'public'             => false,
103 103
 					'show_ui'            => true,
104 104
 					'show_in_menu'       => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : true,
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
 					'has_archive'        => false,
110 110
 					'hierarchical'       => false,
111 111
 					'menu_position'      => null,
112
-					'supports'           => array( 'title' ),
112
+					'supports'           => array('title'),
113 113
 					'menu_icon'          => 'dashicons-media-form',
114 114
 				)
115 115
 			)
@@ -122,32 +122,32 @@  discard block
 block discarded – undo
122 122
 				'wpinv_register_post_type_invoice',
123 123
 				array(
124 124
 					'labels'                 => array(
125
-						'name'                  => __( 'Invoices', 'invoicing' ),
126
-						'singular_name'         => __( 'Invoice', 'invoicing' ),
127
-						'all_items'             => __( 'Invoices', 'invoicing' ),
128
-						'menu_name'             => _x( 'Invoices', 'Admin menu name', 'invoicing' ),
129
-						'add_new'               => __( 'Add New', 'invoicing' ),
130
-						'add_new_item'          => __( 'Add new invoice', 'invoicing' ),
131
-						'edit'                  => __( 'Edit', 'invoicing' ),
132
-						'edit_item'             => __( 'Edit invoice', 'invoicing' ),
133
-						'new_item'              => __( 'New invoice', 'invoicing' ),
134
-						'view_item'             => __( 'View invoice', 'invoicing' ),
135
-						'view_items'            => __( 'View Invoices', 'invoicing' ),
136
-						'search_items'          => __( 'Search invoices', 'invoicing' ),
137
-						'not_found'             => __( 'No invoices found', 'invoicing' ),
138
-						'not_found_in_trash'    => __( 'No invoices found in trash', 'invoicing' ),
139
-						'parent'                => __( 'Parent invoice', 'invoicing' ),
140
-						'featured_image'        => __( 'Invoice image', 'invoicing' ),
141
-						'set_featured_image'    => __( 'Set invoice image', 'invoicing' ),
142
-						'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ),
143
-						'use_featured_image'    => __( 'Use as invoice image', 'invoicing' ),
144
-						'insert_into_item'      => __( 'Insert into invoice', 'invoicing' ),
145
-						'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ),
146
-						'filter_items_list'     => __( 'Filter invoices', 'invoicing' ),
147
-						'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ),
148
-						'items_list'            => __( 'Invoices list', 'invoicing' ),
125
+						'name'                  => __('Invoices', 'invoicing'),
126
+						'singular_name'         => __('Invoice', 'invoicing'),
127
+						'all_items'             => __('Invoices', 'invoicing'),
128
+						'menu_name'             => _x('Invoices', 'Admin menu name', 'invoicing'),
129
+						'add_new'               => __('Add New', 'invoicing'),
130
+						'add_new_item'          => __('Add new invoice', 'invoicing'),
131
+						'edit'                  => __('Edit', 'invoicing'),
132
+						'edit_item'             => __('Edit invoice', 'invoicing'),
133
+						'new_item'              => __('New invoice', 'invoicing'),
134
+						'view_item'             => __('View invoice', 'invoicing'),
135
+						'view_items'            => __('View Invoices', 'invoicing'),
136
+						'search_items'          => __('Search invoices', 'invoicing'),
137
+						'not_found'             => __('No invoices found', 'invoicing'),
138
+						'not_found_in_trash'    => __('No invoices found in trash', 'invoicing'),
139
+						'parent'                => __('Parent invoice', 'invoicing'),
140
+						'featured_image'        => __('Invoice image', 'invoicing'),
141
+						'set_featured_image'    => __('Set invoice image', 'invoicing'),
142
+						'remove_featured_image' => __('Remove invoice image', 'invoicing'),
143
+						'use_featured_image'    => __('Use as invoice image', 'invoicing'),
144
+						'insert_into_item'      => __('Insert into invoice', 'invoicing'),
145
+						'uploaded_to_this_item' => __('Uploaded to this invoice', 'invoicing'),
146
+						'filter_items_list'     => __('Filter invoices', 'invoicing'),
147
+						'items_list_navigation' => __('Invoices navigation', 'invoicing'),
148
+						'items_list'            => __('Invoices list', 'invoicing'),
149 149
 					),
150
-					'description'           => __( 'This is where invoices are stored.', 'invoicing' ),
150
+					'description'           => __('This is where invoices are stored.', 'invoicing'),
151 151
 					'public'                => true,
152 152
 					'has_archive'           => false,
153 153
 					'publicly_queryable'    => true,
@@ -155,7 +155,7 @@  discard block
 block discarded – undo
155 155
         			'show_ui'               => true,
156 156
 					'show_in_menu'          => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false,
157 157
 					'show_in_nav_menus'     => false,
158
-					'supports'              => array( 'title', 'author', 'excerpt'  ),
158
+					'supports'              => array('title', 'author', 'excerpt'),
159 159
 					'rewrite'               => array(
160 160
 						'slug'              => 'invoice',
161 161
 						'with_front'        => false,
@@ -179,32 +179,32 @@  discard block
 block discarded – undo
179 179
 				'wpinv_register_post_type_discount',
180 180
 				array(
181 181
 					'labels'                 => array(
182
-						'name'                  => __( 'Discounts', 'invoicing' ),
183
-						'singular_name'         => __( 'Discount', 'invoicing' ),
184
-						'all_items'             => __( 'Discounts', 'invoicing' ),
185
-						'menu_name'             => _x( 'Discounts', 'Admin menu name', 'invoicing' ),
186
-						'add_new'               => __( 'Add New', 'invoicing' ),
187
-						'add_new_item'          => __( 'Add new discount', 'invoicing' ),
188
-						'edit'                  => __( 'Edit', 'invoicing' ),
189
-						'edit_item'             => __( 'Edit discount', 'invoicing' ),
190
-						'new_item'              => __( 'New discount', 'invoicing' ),
191
-						'view_item'             => __( 'View discount', 'invoicing' ),
192
-						'view_items'            => __( 'View Discounts', 'invoicing' ),
193
-						'search_items'          => __( 'Search discounts', 'invoicing' ),
194
-						'not_found'             => __( 'No discounts found', 'invoicing' ),
195
-						'not_found_in_trash'    => __( 'No discounts found in trash', 'invoicing' ),
196
-						'parent'                => __( 'Parent discount', 'invoicing' ),
197
-						'featured_image'        => __( 'Discount image', 'invoicing' ),
198
-						'set_featured_image'    => __( 'Set discount image', 'invoicing' ),
199
-						'remove_featured_image' => __( 'Remove discount image', 'invoicing' ),
200
-						'use_featured_image'    => __( 'Use as discount image', 'invoicing' ),
201
-						'insert_into_item'      => __( 'Insert into discount', 'invoicing' ),
202
-						'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ),
203
-						'filter_items_list'     => __( 'Filter discounts', 'invoicing' ),
204
-						'items_list_navigation' => __( 'Discount navigation', 'invoicing' ),
205
-						'items_list'            => __( 'Discounts list', 'invoicing' ),
182
+						'name'                  => __('Discounts', 'invoicing'),
183
+						'singular_name'         => __('Discount', 'invoicing'),
184
+						'all_items'             => __('Discounts', 'invoicing'),
185
+						'menu_name'             => _x('Discounts', 'Admin menu name', 'invoicing'),
186
+						'add_new'               => __('Add New', 'invoicing'),
187
+						'add_new_item'          => __('Add new discount', 'invoicing'),
188
+						'edit'                  => __('Edit', 'invoicing'),
189
+						'edit_item'             => __('Edit discount', 'invoicing'),
190
+						'new_item'              => __('New discount', 'invoicing'),
191
+						'view_item'             => __('View discount', 'invoicing'),
192
+						'view_items'            => __('View Discounts', 'invoicing'),
193
+						'search_items'          => __('Search discounts', 'invoicing'),
194
+						'not_found'             => __('No discounts found', 'invoicing'),
195
+						'not_found_in_trash'    => __('No discounts found in trash', 'invoicing'),
196
+						'parent'                => __('Parent discount', 'invoicing'),
197
+						'featured_image'        => __('Discount image', 'invoicing'),
198
+						'set_featured_image'    => __('Set discount image', 'invoicing'),
199
+						'remove_featured_image' => __('Remove discount image', 'invoicing'),
200
+						'use_featured_image'    => __('Use as discount image', 'invoicing'),
201
+						'insert_into_item'      => __('Insert into discount', 'invoicing'),
202
+						'uploaded_to_this_item' => __('Uploaded to this discount', 'invoicing'),
203
+						'filter_items_list'     => __('Filter discounts', 'invoicing'),
204
+						'items_list_navigation' => __('Discount navigation', 'invoicing'),
205
+						'items_list'            => __('Discounts list', 'invoicing'),
206 206
 					),
207
-					'description'        => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ),
207
+					'description'        => __('This is where you can add new discounts that users can use in invoices.', 'invoicing'),
208 208
 					'public'             => false,
209 209
 					'can_export'         => true,
210 210
 					'_builtin'           => false,
@@ -218,7 +218,7 @@  discard block
 block discarded – undo
218 218
 					'map_meta_cap'       => true,
219 219
 					'has_archive'        => false,
220 220
 					'hierarchical'       => false,
221
-					'supports'           => array( 'title', 'excerpt' ),
221
+					'supports'           => array('title', 'excerpt'),
222 222
 					'show_in_nav_menus'  => false,
223 223
 					'show_in_admin_bar'  => true,
224 224
 					'menu_position'      => null,
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
 			)
227 227
 		);
228 228
 
229
-		do_action( 'getpaid_after_register_post_types' );
229
+		do_action('getpaid_after_register_post_types');
230 230
 	}
231 231
 
232 232
 	/**
@@ -239,79 +239,79 @@  discard block
 block discarded – undo
239 239
 			array(
240 240
 
241 241
 				'wpi-pending' => array(
242
-					'label'                     => _x( 'Pending Payment', 'Invoice status', 'invoicing' ),
242
+					'label'                     => _x('Pending Payment', 'Invoice status', 'invoicing'),
243 243
         			'public'                    => true,
244 244
         			'exclude_from_search'       => true,
245 245
         			'show_in_admin_all_list'    => true,
246 246
 					'show_in_admin_status_list' => true,
247 247
 					/* translators: %s: number of invoices */
248
-        			'label_count'               => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' )
248
+        			'label_count'               => _n_noop('Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing')
249 249
 				),
250 250
 
251 251
 				'wpi-processing' => array(
252
-					'label'                     => _x( 'Processing', 'Invoice status', 'invoicing' ),
252
+					'label'                     => _x('Processing', 'Invoice status', 'invoicing'),
253 253
         			'public'                    => true,
254 254
         			'exclude_from_search'       => true,
255 255
         			'show_in_admin_all_list'    => true,
256 256
 					'show_in_admin_status_list' => true,
257 257
 					/* translators: %s: number of invoices */
258
-        			'label_count'               => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' )
258
+        			'label_count'               => _n_noop('Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing')
259 259
 				),
260 260
 
261 261
 				'wpi-onhold' => array(
262
-					'label'                     => _x( 'On Hold', 'Invoice status', 'invoicing' ),
262
+					'label'                     => _x('On Hold', 'Invoice status', 'invoicing'),
263 263
         			'public'                    => true,
264 264
         			'exclude_from_search'       => true,
265 265
         			'show_in_admin_all_list'    => true,
266 266
 					'show_in_admin_status_list' => true,
267 267
 					/* translators: %s: number of invoices */
268
-        			'label_count'               => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' )
268
+        			'label_count'               => _n_noop('On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing')
269 269
 				),
270 270
 
271 271
 				'wpi-cancelled' => array(
272
-					'label'                     => _x( 'Cancelled', 'Invoice status', 'invoicing' ),
272
+					'label'                     => _x('Cancelled', 'Invoice status', 'invoicing'),
273 273
         			'public'                    => true,
274 274
         			'exclude_from_search'       => true,
275 275
         			'show_in_admin_all_list'    => true,
276 276
 					'show_in_admin_status_list' => true,
277 277
 					/* translators: %s: number of invoices */
278
-        			'label_count'               => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' )
278
+        			'label_count'               => _n_noop('Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing')
279 279
 				),
280 280
 
281 281
 				'wpi-refunded' => array(
282
-					'label'                     => _x( 'Refunded', 'Invoice status', 'invoicing' ),
282
+					'label'                     => _x('Refunded', 'Invoice status', 'invoicing'),
283 283
         			'public'                    => true,
284 284
         			'exclude_from_search'       => true,
285 285
         			'show_in_admin_all_list'    => true,
286 286
 					'show_in_admin_status_list' => true,
287 287
 					/* translators: %s: number of invoices */
288
-        			'label_count'               => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' )
288
+        			'label_count'               => _n_noop('Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing')
289 289
 				),
290 290
 
291 291
 				'wpi-failed' => array(
292
-					'label'                     => _x( 'Failed', 'Invoice status', 'invoicing' ),
292
+					'label'                     => _x('Failed', 'Invoice status', 'invoicing'),
293 293
         			'public'                    => true,
294 294
         			'exclude_from_search'       => true,
295 295
         			'show_in_admin_all_list'    => true,
296 296
 					'show_in_admin_status_list' => true,
297 297
 					/* translators: %s: number of invoices */
298
-        			'label_count'               => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' )
298
+        			'label_count'               => _n_noop('Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing')
299 299
 				),
300 300
 
301 301
 				'wpi-renewal' => array(
302
-					'label'                     => _x( 'Renewal', 'Invoice status', 'invoicing' ),
302
+					'label'                     => _x('Renewal', 'Invoice status', 'invoicing'),
303 303
         			'public'                    => true,
304 304
         			'exclude_from_search'       => true,
305 305
         			'show_in_admin_all_list'    => true,
306 306
 					'show_in_admin_status_list' => true,
307 307
 					/* translators: %s: number of invoices */
308
-        			'label_count'               => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' )
308
+        			'label_count'               => _n_noop('Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing')
309 309
 				)
310 310
 			)
311 311
 		);
312 312
 
313
-		foreach ( $invoice_statuses as $invoice_statuse => $args ) {
314
-			register_post_status( $invoice_statuse, $args );
313
+		foreach ($invoice_statuses as $invoice_statuse => $args) {
314
+			register_post_status($invoice_statuse, $args);
315 315
 		}
316 316
 	}
317 317
 
@@ -327,8 +327,8 @@  discard block
 block discarded – undo
327 327
 	 *
328 328
 	 */
329 329
 	public static function maybe_flush_rewrite_rules() {
330
-		if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) {
331
-			update_option( 'getpaid_flushed_rewrite_rules', '1' );
330
+		if (!get_option('getpaid_flushed_rewrite_rules')) {
331
+			update_option('getpaid_flushed_rewrite_rules', '1');
332 332
 			self::flush_rewrite_rules();
333 333
 		}
334 334
 	}
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-controller.php 2 patches
Indentation   +542 added lines, -542 removed lines patch added patch discarded remove patch
@@ -21,570 +21,570 @@
 block discarded – undo
21 21
  */
22 22
 class GetPaid_REST_Controller extends WP_REST_Controller {
23 23
 
24
-	/**
24
+    /**
25 25
      * The namespaces of this controller's route.
26 26
      *
27 27
      * @since 1.0.19
28 28
      * @var array
29 29
      */
30
-	protected $namespaces;
30
+    protected $namespaces;
31 31
 
32
-	/**
32
+    /**
33 33
      * The official namespace of this controller's route.
34 34
      *
35 35
      * @since 1.0.19
36 36
      * @var string
37 37
      */
38
-	protected $namespace = 'getpaid/v1';
38
+    protected $namespace = 'getpaid/v1';
39 39
 
40
-	/**
40
+    /**
41 41
      * Cached results of get_item_schema.
42 42
      *
43 43
      * @since 1.0.19
44 44
      * @var array
45 45
      */
46
-	protected $schema;
46
+    protected $schema;
47 47
 
48 48
     /**
49
-	 * Constructor.
50
-	 *
51
-	 * @since 1.0.19
52
-	 *
53
-	 */
54
-	public function __construct() {
55
-
56
-		// Offer several namespaces for backwards compatibility.
57
-		$this->namespaces = apply_filters(
58
-			'getpaid_rest_api_namespaces',
59
-			array(
60
-				'getpaid/v1',
61
-				'invoicing/v1',
62
-				'wpi/v1'
63
-			)
64
-		);
65
-
66
-		// Register REST routes.
49
+     * Constructor.
50
+     *
51
+     * @since 1.0.19
52
+     *
53
+     */
54
+    public function __construct() {
55
+
56
+        // Offer several namespaces for backwards compatibility.
57
+        $this->namespaces = apply_filters(
58
+            'getpaid_rest_api_namespaces',
59
+            array(
60
+                'getpaid/v1',
61
+                'invoicing/v1',
62
+                'wpi/v1'
63
+            )
64
+        );
65
+
66
+        // Register REST routes.
67 67
         add_action( 'rest_api_init', array( $this, 'register_routes' ) );
68 68
 
69
-	}
70
-
71
-	/**
72
-	 * Registers routes for each namespace.
73
-	 *
74
-	 * @since 1.0.19
75
-	 *
76
-	 */
77
-	public function register_routes() {
78
-
79
-		foreach ( $this->namespaces as $namespace ) {
80
-			$this->register_namespace_routes( $namespace );
81
-		}
82
-
83
-	}
84
-
85
-	/**
86
-	 * Registers routes for a namespace.
87
-	 *
88
-	 * @since 1.0.19
89
-	 *
90
-	 * @param string $namespace
91
-	 */
92
-	public function register_namespace_routes( /** @scrutinizer ignore-unused */ $namespace ) {
93
-
94
-		getpaid_doing_it_wrong(
95
-			__CLASS__ . '::' .__METHOD__,
96
-			/* translators: %s: register_namespace_routes() */
97
-			sprintf( __( "Method '%s' must be overridden." ), __METHOD__ ),
98
-			'1.0.19'
99
-		);
100
-
101
-	}
102
-
103
-	/**
104
-	 * Get normalized rest base.
105
-	 *
106
-	 * @return string
107
-	 */
108
-	protected function get_normalized_rest_base() {
109
-		return preg_replace( '/\(.*\)\//i', '', $this->rest_base );
110
-	}
111
-
112
-	/**
113
-	 * Fill batches.
114
-	 *
115
-	 * @param array array of request items.
116
-	 * @return array
117
-	 */
118
-	protected function fill_batch_keys( $items ) {
119
-
120
-		$items['create'] = empty( $items['create'] ) ? array() : $items['create'];
121
-		$items['update'] = empty( $items['update'] ) ? array() : $items['update'];
122
-		$items['delete'] = empty( $items['delete'] ) ? array() : wp_parse_id_list( $items['delete'] );
123
-		return $items;
124
-
125
-	}
126
-
127
-	/**
128
-	 * Check batch limit.
129
-	 *
130
-	 * @param array $items Request items.
131
-	 * @return bool|WP_Error
132
-	 */
133
-	protected function check_batch_limit( $items ) {
134
-		$limit = apply_filters( 'getpaid_rest_batch_items_limit', 100, $this->get_normalized_rest_base() );
135
-		$total = count( $items['create'] ) + count( $items['update'] ) + count( $items['delete'] );
136
-
137
-		if ( $total > $limit ) {
138
-			/* translators: %s: items limit */
139
-			return new WP_Error( 'getpaid_rest_request_entity_too_large', sprintf( __( 'Unable to accept more than %s items for this request.', 'invoicing' ), $limit ), array( 'status' => 413 ) );
140
-		}
141
-
142
-		return true;
143
-	}
144
-
145
-	/**
146
-	 * Bulk create items.
147
-	 *
148
-	 * @param array $items Array of items to create.
149
-	 * @param WP_REST_Request $request Full details about the request.
150
-	 * @param WP_REST_Server $wp_rest_server
151
-	 * @return array()
152
-	 */
153
-	protected function batch_create_items( $items, $request, $wp_rest_server ) {
154
-
155
-		$query  = $request->get_query_params();
156
-		$create = array();
157
-
158
-		foreach ( $items as $item ) {
159
-			$_item = new WP_REST_Request( 'POST' );
160
-
161
-			// Default parameters.
162
-			$defaults = array();
163
-			$schema   = $this->get_public_item_schema();
164
-			foreach ( $schema['properties'] as $arg => $options ) {
165
-				if ( isset( $options['default'] ) ) {
166
-					$defaults[ $arg ] = $options['default'];
167
-				}
168
-			}
169
-			$_item->set_default_params( $defaults );
170
-
171
-			// Set request parameters.
172
-			$_item->set_body_params( $item );
173
-
174
-			// Set query (GET) parameters.
175
-			$_item->set_query_params( $query );
176
-
177
-			// Create the item.
178
-			$_response = $this->create_item( $_item );
179
-
180
-			// If an error occured...
181
-			if ( is_wp_error( $_response ) ) {
182
-
183
-				$create[]   = array(
184
-					'id'    => 0,
185
-					'error' => array(
186
-						'code'    => $_response->get_error_code(),
187
-						'message' => $_response->get_error_message(),
188
-						'data'    => $_response->get_error_data(),
189
-					),
190
-				);
191
-
192
-				continue;
193
-			}
194
-
195
-			$create[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
196
-
197
-		}
198
-
199
-		return $create;
69
+    }
70
+
71
+    /**
72
+     * Registers routes for each namespace.
73
+     *
74
+     * @since 1.0.19
75
+     *
76
+     */
77
+    public function register_routes() {
78
+
79
+        foreach ( $this->namespaces as $namespace ) {
80
+            $this->register_namespace_routes( $namespace );
81
+        }
82
+
83
+    }
84
+
85
+    /**
86
+     * Registers routes for a namespace.
87
+     *
88
+     * @since 1.0.19
89
+     *
90
+     * @param string $namespace
91
+     */
92
+    public function register_namespace_routes( /** @scrutinizer ignore-unused */ $namespace ) {
93
+
94
+        getpaid_doing_it_wrong(
95
+            __CLASS__ . '::' .__METHOD__,
96
+            /* translators: %s: register_namespace_routes() */
97
+            sprintf( __( "Method '%s' must be overridden." ), __METHOD__ ),
98
+            '1.0.19'
99
+        );
100
+
101
+    }
102
+
103
+    /**
104
+     * Get normalized rest base.
105
+     *
106
+     * @return string
107
+     */
108
+    protected function get_normalized_rest_base() {
109
+        return preg_replace( '/\(.*\)\//i', '', $this->rest_base );
110
+    }
111
+
112
+    /**
113
+     * Fill batches.
114
+     *
115
+     * @param array array of request items.
116
+     * @return array
117
+     */
118
+    protected function fill_batch_keys( $items ) {
119
+
120
+        $items['create'] = empty( $items['create'] ) ? array() : $items['create'];
121
+        $items['update'] = empty( $items['update'] ) ? array() : $items['update'];
122
+        $items['delete'] = empty( $items['delete'] ) ? array() : wp_parse_id_list( $items['delete'] );
123
+        return $items;
124
+
125
+    }
126
+
127
+    /**
128
+     * Check batch limit.
129
+     *
130
+     * @param array $items Request items.
131
+     * @return bool|WP_Error
132
+     */
133
+    protected function check_batch_limit( $items ) {
134
+        $limit = apply_filters( 'getpaid_rest_batch_items_limit', 100, $this->get_normalized_rest_base() );
135
+        $total = count( $items['create'] ) + count( $items['update'] ) + count( $items['delete'] );
136
+
137
+        if ( $total > $limit ) {
138
+            /* translators: %s: items limit */
139
+            return new WP_Error( 'getpaid_rest_request_entity_too_large', sprintf( __( 'Unable to accept more than %s items for this request.', 'invoicing' ), $limit ), array( 'status' => 413 ) );
140
+        }
141
+
142
+        return true;
143
+    }
144
+
145
+    /**
146
+     * Bulk create items.
147
+     *
148
+     * @param array $items Array of items to create.
149
+     * @param WP_REST_Request $request Full details about the request.
150
+     * @param WP_REST_Server $wp_rest_server
151
+     * @return array()
152
+     */
153
+    protected function batch_create_items( $items, $request, $wp_rest_server ) {
154
+
155
+        $query  = $request->get_query_params();
156
+        $create = array();
157
+
158
+        foreach ( $items as $item ) {
159
+            $_item = new WP_REST_Request( 'POST' );
160
+
161
+            // Default parameters.
162
+            $defaults = array();
163
+            $schema   = $this->get_public_item_schema();
164
+            foreach ( $schema['properties'] as $arg => $options ) {
165
+                if ( isset( $options['default'] ) ) {
166
+                    $defaults[ $arg ] = $options['default'];
167
+                }
168
+            }
169
+            $_item->set_default_params( $defaults );
170
+
171
+            // Set request parameters.
172
+            $_item->set_body_params( $item );
173
+
174
+            // Set query (GET) parameters.
175
+            $_item->set_query_params( $query );
176
+
177
+            // Create the item.
178
+            $_response = $this->create_item( $_item );
179
+
180
+            // If an error occured...
181
+            if ( is_wp_error( $_response ) ) {
182
+
183
+                $create[]   = array(
184
+                    'id'    => 0,
185
+                    'error' => array(
186
+                        'code'    => $_response->get_error_code(),
187
+                        'message' => $_response->get_error_message(),
188
+                        'data'    => $_response->get_error_data(),
189
+                    ),
190
+                );
191
+
192
+                continue;
193
+            }
194
+
195
+            $create[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
196
+
197
+        }
198
+
199
+        return $create;
200
+
201
+    }
202
+
203
+    /**
204
+     * Bulk update items.
205
+     *
206
+     * @param array $items Array of items to update.
207
+     * @param WP_REST_Request $request Full details about the request.
208
+     * @param WP_REST_Server $wp_rest_server
209
+     * @return array()
210
+     */
211
+    protected function batch_update_items( $items, $request, $wp_rest_server ) {
212
+
213
+        $query  = $request->get_query_params();
214
+        $update = array();
215
+
216
+        foreach ( $items as $item ) {
217
+
218
+            // Create a dummy request.
219
+            $_item = new WP_REST_Request( 'PUT' );
220
+
221
+            // Add body params.
222
+            $_item->set_body_params( $item );
223
+
224
+            // Set query (GET) parameters.
225
+            $_item->set_query_params( $query );
226
+
227
+            // Update the item.
228
+            $_response = $this->update_item( $_item );
229
+
230
+            // If an error occured...
231
+            if ( is_wp_error( $_response ) ) {
232
+
233
+                $update[] = array(
234
+                    'id'    => $item['id'],
235
+                    'error' => array(
236
+                        'code'    => $_response->get_error_code(),
237
+                        'message' => $_response->get_error_message(),
238
+                        'data'    => $_response->get_error_data(),
239
+                    ),
240
+                );
241
+
242
+                continue;
243
+
244
+            }
245
+
246
+            $update[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
247
+
248
+        }
249
+
250
+        return $update;
251
+
252
+    }
253
+
254
+    /**
255
+     * Bulk delete items.
256
+     *
257
+     * @param array $items Array of items to delete.
258
+     * @param WP_REST_Server $wp_rest_server
259
+     * @return array()
260
+     */
261
+    protected function batch_delete_items( $items, $wp_rest_server ) {
262
+
263
+        $delete = array();
264
+
265
+        foreach ( array_filter( $items ) as $id ) {
266
+
267
+            // Prepare the request.
268
+            $_item = new WP_REST_Request( 'DELETE' );
269
+            $_item->set_query_params(
270
+                array(
271
+                    'id'    => $id,
272
+                    'force' => true,
273
+                )
274
+            );
275
+
276
+            // Delete the item.
277
+            $_response = $this->delete_item( $_item );
278
+
279
+            if ( is_wp_error( $_response ) ) {
280
+
281
+                $delete[] = array(
282
+                    'id'    => $id,
283
+                    'error' => array(
284
+                        'code'    => $_response->get_error_code(),
285
+                        'message' => $_response->get_error_message(),
286
+                        'data'    => $_response->get_error_data(),
287
+                    ),
288
+                );
289
+
290
+                continue;
291
+            }
200 292
 
201
-	}
202
-
203
-	/**
204
-	 * Bulk update items.
205
-	 *
206
-	 * @param array $items Array of items to update.
207
-	 * @param WP_REST_Request $request Full details about the request.
208
-	 * @param WP_REST_Server $wp_rest_server
209
-	 * @return array()
210
-	 */
211
-	protected function batch_update_items( $items, $request, $wp_rest_server ) {
212
-
213
-		$query  = $request->get_query_params();
214
-		$update = array();
215
-
216
-		foreach ( $items as $item ) {
217
-
218
-			// Create a dummy request.
219
-			$_item = new WP_REST_Request( 'PUT' );
220
-
221
-			// Add body params.
222
-			$_item->set_body_params( $item );
223
-
224
-			// Set query (GET) parameters.
225
-			$_item->set_query_params( $query );
226
-
227
-			// Update the item.
228
-			$_response = $this->update_item( $_item );
229
-
230
-			// If an error occured...
231
-			if ( is_wp_error( $_response ) ) {
232
-
233
-				$update[] = array(
234
-					'id'    => $item['id'],
235
-					'error' => array(
236
-						'code'    => $_response->get_error_code(),
237
-						'message' => $_response->get_error_message(),
238
-						'data'    => $_response->get_error_data(),
239
-					),
240
-				);
241
-
242
-				continue;
243
-
244
-			}
245
-
246
-			$update[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
247
-
248
-		}
249
-
250
-		return $update;
251
-
252
-	}
293
+            $delete[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
253 294
 
254
-	/**
255
-	 * Bulk delete items.
256
-	 *
257
-	 * @param array $items Array of items to delete.
258
-	 * @param WP_REST_Server $wp_rest_server
259
-	 * @return array()
260
-	 */
261
-	protected function batch_delete_items( $items, $wp_rest_server ) {
262
-
263
-		$delete = array();
264
-
265
-		foreach ( array_filter( $items ) as $id ) {
266
-
267
-			// Prepare the request.
268
-			$_item = new WP_REST_Request( 'DELETE' );
269
-			$_item->set_query_params(
270
-				array(
271
-					'id'    => $id,
272
-					'force' => true,
273
-				)
274
-			);
275
-
276
-			// Delete the item.
277
-			$_response = $this->delete_item( $_item );
278
-
279
-			if ( is_wp_error( $_response ) ) {
280
-
281
-				$delete[] = array(
282
-					'id'    => $id,
283
-					'error' => array(
284
-						'code'    => $_response->get_error_code(),
285
-						'message' => $_response->get_error_message(),
286
-						'data'    => $_response->get_error_data(),
287
-					),
288
-				);
289
-
290
-				continue;
291
-			}
292
-
293
-			$delete[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
294
-
295
-		}
296
-
297
-		return $delete;
298
-
299
-	}
300
-
301
-	/**
302
-	 * Bulk create, update and delete items.
303
-	 *
304
-	 * @param WP_REST_Request $request Full details about the request.
305
-	 * @return WP_Error|array.
306
-	 */
307
-	public function batch_items( $request ) {
308
-		global $wp_rest_server;
309
-
310
-		// Prepare the batch items.
311
-		$items = $this->fill_batch_keys( array_filter( $request->get_params() ) );
312
-
313
-		// Ensure that the batch has not exceeded the limit to prevent abuse.
314
-		$limit = $this->check_batch_limit( $items );
315
-		if ( is_wp_error( $limit ) ) {
316
-			return $limit;
317
-		}
318
-
319
-		// Process the items.
320
-		return array(
321
-			'create' => $this->batch_create_items( $items['create'], $request, $wp_rest_server ),
322
-			'update' => $this->batch_update_items( $items['update'], $request, $wp_rest_server ),
323
-			'delete' => $this->batch_delete_items( $items['delete'], $wp_rest_server ),
324
-		);
325
-
326
-	}
327
-
328
-	/**
329
-	 * Add meta query.
330
-	 *
331
-	 * @since 1.0.19
332
-	 * @param array $args       Query args.
333
-	 * @param array $meta_query Meta query.
334
-	 * @return array
335
-	 */
336
-	protected function add_meta_query( $args, $meta_query ) {
337
-		if ( empty( $args['meta_query'] ) ) {
338
-			$args['meta_query'] = array();
339
-		}
340
-
341
-		$args['meta_query'][] = $meta_query;
342
-
343
-		return $args['meta_query'];
344
-	}
345
-
346
-	/**
347
-	 * Get the batch schema, conforming to JSON Schema.
348
-	 *
349
-	 * @return array
350
-	 */
351
-	public function get_public_batch_schema() {
352
-
353
-		return array(
354
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
355
-			'title'      => 'batch',
356
-			'type'       => 'object',
357
-			'properties' => array(
358
-				'create' => array(
359
-					'description' => __( 'List of created resources.', 'invoicing' ),
360
-					'type'        => 'array',
361
-					'context'     => array( 'view', 'edit' ),
362
-					'items'       => array(
363
-						'type'    => 'object',
364
-					),
365
-				),
366
-				'update' => array(
367
-					'description' => __( 'List of updated resources.', 'invoicing' ),
368
-					'type'        => 'array',
369
-					'context'     => array( 'view', 'edit' ),
370
-					'items'       => array(
371
-						'type'    => 'object',
372
-					),
373
-				),
374
-				'delete' => array(
375
-					'description' => __( 'List of deleted resources.', 'invoicing' ),
376
-					'type'        => 'array',
377
-					'context'     => array( 'view', 'edit' ),
378
-					'items'       => array(
379
-						'type'    => 'integer',
380
-					),
381
-				),
382
-			),
383
-		);
384
-
385
-	}
386
-
387
-	/**
388
-	 * Returns the value of schema['properties']
389
-	 * 
390
-	 * i.e Schema fields.
391
-	 *
392
-	 * @since 1.0.19
393
-	 * @return array
394
-	 */
395
-	protected function get_schema_properties() {
396
-
397
-		$schema     = $this->get_item_schema();
398
-		$properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
399
-
400
-		// For back-compat, include any field with an empty schema
401
-		// because it won't be present in $this->get_item_schema().
402
-		foreach ( $this->get_additional_fields() as $field_name => $field_options ) {
403
-			if ( is_null( $field_options['schema'] ) ) {
404
-				$properties[ $field_name ] = $field_options;
405
-			}
406
-		}
407
-
408
-		return $properties;
409
-	}
410
-
411
-	/**
412
-	 * Filters fields by context.
413
-	 *
414
-	 * @param array $fields Array of fields
415
-	 * @param string|null context view, edit or embed
416
-	 * @since 1.0.19
417
-	 * @return array
418
-	 */
419
-	protected function filter_response_fields_by_context( $fields, $context ) {
420
-
421
-		if ( empty( $context ) ) {
422
-			return $fields;
423
-		}
424
-
425
-		foreach ( $fields as $name => $options ) {
426
-			if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
427
-				unset( $fields[ $name ] );
428
-			}
429
-		}
430
-
431
-		return $fields;
432
-
433
-	}
434
-
435
-	/**
436
-	 * Filters fields by an array of requested fields.
437
-	 *
438
-	 * @param array $fields Array of available fields
439
-	 * @param array $requested array of requested fields.
440
-	 * @since 1.0.19
441
-	 * @return array
442
-	 */
443
-	protected function filter_response_fields_by_array( $fields, $requested ) {
444
-
445
-		// Trim off any whitespace from the list array.
446
-		$requested = array_map( 'trim', $requested );
447
-
448
-		// Always persist 'id', because it can be needed for add_additional_fields_to_object().
449
-		if ( in_array( 'id', $fields, true ) ) {
450
-			$requested[] = 'id';
451
-		}
452
-
453
-		// Get rid of duplicate fields.
454
-		$requested = array_unique( $requested );
455
-
456
-		// Return the list of all included fields which are available.
457
-		return array_reduce(
458
-			$requested,
459
-			function( $response_fields, $field ) use ( $fields ) {
460
-
461
-				if ( in_array( $field, $fields, true ) ) {
462
-					$response_fields[] = $field;
463
-					return $response_fields;
464
-				}
465
-
466
-				// Check for nested fields if $field is not a direct match.
467
-				$nested_fields = explode( '.', $field );
468
-
469
-				// A nested field is included so long as its top-level property is
470
-				// present in the schema.
471
-				if ( in_array( $nested_fields[0], $fields, true ) ) {
472
-					$response_fields[] = $field;
473
-				}
474
-
475
-				return $response_fields;
476
-			},
477
-			array()
478
-		);
479
-
480
-	}
481
-
482
-	/**
483
-	 * Gets an array of fields to be included on the response.
484
-	 *
485
-	 * Included fields are based on item schema and `_fields=` request argument.
486
-	 * Copied from WordPress 5.3 to support old versions.
487
-	 *
488
-	 * @since 1.0.19
489
-	 * @param WP_REST_Request $request Full details about the request.
490
-	 * @return array Fields to be included in the response.
491
-	 */
492
-	public function get_fields_for_response( $request ) {
493
-
494
-		// Retrieve fields in the schema.
495
-		$properties = $this->get_schema_properties();
496
-
497
-		// Exclude fields that specify a different context than the request context.
498
-		$properties = $this->filter_response_fields_by_context( $properties, $request['context'] );
499
-
500
-		// We only need the field keys.
501
-		$fields = array_keys( $properties );
502
-
503
-		// Is the user filtering the response fields??
504
-		if ( empty( $request['_fields'] ) ) {
505
-			return $fields;
506
-		}
507
-
508
-		return $this->filter_response_fields_by_array( $fields, wpinv_parse_list( $request['_fields'] ) );
509
-
510
-	}
511
-
512
-	/**
513
-	 * Limits an object to the requested fields.
514
-	 *
515
-	 * Included fields are based on the `_fields` request argument.
516
-	 *
517
-	 * @since 1.0.19
518
-	 * @param array $data Fields to include in the response.
519
-	 * @param array $fields Requested fields.
520
-	 * @return array Fields to be included in the response.
521
-	 */
522
-	public function limit_object_to_requested_fields( $data, $fields, $prefix = '' ) {
523
-
524
-		// Is the user filtering the response fields??
525
-		if ( empty( $fields ) ) {
526
-			return $data;
527
-		}
528
-
529
-		foreach ( $data as $key => $value ) {
530
-
531
-			// Numeric arrays.
532
-			if ( is_numeric( $key ) && is_array( $value ) ) {
533
-				$data[ $key ] = $this->limit_object_to_requested_fields( $value, $fields, $prefix );
534
-				continue;
535
-			}
536
-
537
-			// Generate a new prefix.
538
-			$new_prefix = empty( $prefix ) ? $key : "$prefix.$key";
539
-
540
-			// Check if it was requested.
541
-			if ( ! empty( $key ) && ! $this->is_field_included( $new_prefix, $fields ) ) {
542
-				unset( $data[ $key ] );
543
-				continue;
544
-			}
545
-
546
-			if ( $key != 'meta_data' && is_array( $value ) ) {
547
-				$data[ $key ] = $this->limit_object_to_requested_fields( $value, $fields, $new_prefix );
548
-			}
549
-
550
-		}
551
-
552
-		return $data;
553
-	}
554
-
555
-	/**
556
-	 * Given an array of fields to include in a response, some of which may be
557
-	 * `nested.fields`, determine whether the provided field should be included
558
-	 * in the response body.
559
-	 *
560
-	 * Copied from WordPress 5.3 to support old versions.
561
-	 *
562
-	 * @since 1.0.19
563
-	 *
564
-	 * @param string $field  A field to test for inclusion in the response body.
565
-	 * @param array  $fields An array of string fields supported by the endpoint.
566
-	 * @return bool Whether to include the field or not.
567
-	 * @see rest_is_field_included()
568
-	 */
569
-	public function is_field_included( $field, $fields ) {
570
-		if ( in_array( $field, $fields, true ) ) {
571
-			return true;
572
-		}
573
-
574
-		foreach ( $fields as $accepted_field ) {
575
-			// Check to see if $field is the parent of any item in $fields.
576
-			// A field "parent" should be accepted if "parent.child" is accepted.
577
-			if ( strpos( $accepted_field, "$field." ) === 0 ) {
578
-				return true;
579
-			}
580
-			// Conversely, if "parent" is accepted, all "parent.child" fields
581
-			// should also be accepted.
582
-			if ( strpos( $field, "$accepted_field." ) === 0 ) {
583
-				return true;
584
-			}
585
-		}
586
-
587
-		return false;
588
-	}
295
+        }
296
+
297
+        return $delete;
298
+
299
+    }
300
+
301
+    /**
302
+     * Bulk create, update and delete items.
303
+     *
304
+     * @param WP_REST_Request $request Full details about the request.
305
+     * @return WP_Error|array.
306
+     */
307
+    public function batch_items( $request ) {
308
+        global $wp_rest_server;
309
+
310
+        // Prepare the batch items.
311
+        $items = $this->fill_batch_keys( array_filter( $request->get_params() ) );
312
+
313
+        // Ensure that the batch has not exceeded the limit to prevent abuse.
314
+        $limit = $this->check_batch_limit( $items );
315
+        if ( is_wp_error( $limit ) ) {
316
+            return $limit;
317
+        }
318
+
319
+        // Process the items.
320
+        return array(
321
+            'create' => $this->batch_create_items( $items['create'], $request, $wp_rest_server ),
322
+            'update' => $this->batch_update_items( $items['update'], $request, $wp_rest_server ),
323
+            'delete' => $this->batch_delete_items( $items['delete'], $wp_rest_server ),
324
+        );
325
+
326
+    }
327
+
328
+    /**
329
+     * Add meta query.
330
+     *
331
+     * @since 1.0.19
332
+     * @param array $args       Query args.
333
+     * @param array $meta_query Meta query.
334
+     * @return array
335
+     */
336
+    protected function add_meta_query( $args, $meta_query ) {
337
+        if ( empty( $args['meta_query'] ) ) {
338
+            $args['meta_query'] = array();
339
+        }
340
+
341
+        $args['meta_query'][] = $meta_query;
342
+
343
+        return $args['meta_query'];
344
+    }
345
+
346
+    /**
347
+     * Get the batch schema, conforming to JSON Schema.
348
+     *
349
+     * @return array
350
+     */
351
+    public function get_public_batch_schema() {
352
+
353
+        return array(
354
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
355
+            'title'      => 'batch',
356
+            'type'       => 'object',
357
+            'properties' => array(
358
+                'create' => array(
359
+                    'description' => __( 'List of created resources.', 'invoicing' ),
360
+                    'type'        => 'array',
361
+                    'context'     => array( 'view', 'edit' ),
362
+                    'items'       => array(
363
+                        'type'    => 'object',
364
+                    ),
365
+                ),
366
+                'update' => array(
367
+                    'description' => __( 'List of updated resources.', 'invoicing' ),
368
+                    'type'        => 'array',
369
+                    'context'     => array( 'view', 'edit' ),
370
+                    'items'       => array(
371
+                        'type'    => 'object',
372
+                    ),
373
+                ),
374
+                'delete' => array(
375
+                    'description' => __( 'List of deleted resources.', 'invoicing' ),
376
+                    'type'        => 'array',
377
+                    'context'     => array( 'view', 'edit' ),
378
+                    'items'       => array(
379
+                        'type'    => 'integer',
380
+                    ),
381
+                ),
382
+            ),
383
+        );
384
+
385
+    }
386
+
387
+    /**
388
+     * Returns the value of schema['properties']
389
+     * 
390
+     * i.e Schema fields.
391
+     *
392
+     * @since 1.0.19
393
+     * @return array
394
+     */
395
+    protected function get_schema_properties() {
396
+
397
+        $schema     = $this->get_item_schema();
398
+        $properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
399
+
400
+        // For back-compat, include any field with an empty schema
401
+        // because it won't be present in $this->get_item_schema().
402
+        foreach ( $this->get_additional_fields() as $field_name => $field_options ) {
403
+            if ( is_null( $field_options['schema'] ) ) {
404
+                $properties[ $field_name ] = $field_options;
405
+            }
406
+        }
407
+
408
+        return $properties;
409
+    }
410
+
411
+    /**
412
+     * Filters fields by context.
413
+     *
414
+     * @param array $fields Array of fields
415
+     * @param string|null context view, edit or embed
416
+     * @since 1.0.19
417
+     * @return array
418
+     */
419
+    protected function filter_response_fields_by_context( $fields, $context ) {
420
+
421
+        if ( empty( $context ) ) {
422
+            return $fields;
423
+        }
424
+
425
+        foreach ( $fields as $name => $options ) {
426
+            if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
427
+                unset( $fields[ $name ] );
428
+            }
429
+        }
430
+
431
+        return $fields;
432
+
433
+    }
434
+
435
+    /**
436
+     * Filters fields by an array of requested fields.
437
+     *
438
+     * @param array $fields Array of available fields
439
+     * @param array $requested array of requested fields.
440
+     * @since 1.0.19
441
+     * @return array
442
+     */
443
+    protected function filter_response_fields_by_array( $fields, $requested ) {
444
+
445
+        // Trim off any whitespace from the list array.
446
+        $requested = array_map( 'trim', $requested );
447
+
448
+        // Always persist 'id', because it can be needed for add_additional_fields_to_object().
449
+        if ( in_array( 'id', $fields, true ) ) {
450
+            $requested[] = 'id';
451
+        }
452
+
453
+        // Get rid of duplicate fields.
454
+        $requested = array_unique( $requested );
455
+
456
+        // Return the list of all included fields which are available.
457
+        return array_reduce(
458
+            $requested,
459
+            function( $response_fields, $field ) use ( $fields ) {
460
+
461
+                if ( in_array( $field, $fields, true ) ) {
462
+                    $response_fields[] = $field;
463
+                    return $response_fields;
464
+                }
465
+
466
+                // Check for nested fields if $field is not a direct match.
467
+                $nested_fields = explode( '.', $field );
468
+
469
+                // A nested field is included so long as its top-level property is
470
+                // present in the schema.
471
+                if ( in_array( $nested_fields[0], $fields, true ) ) {
472
+                    $response_fields[] = $field;
473
+                }
474
+
475
+                return $response_fields;
476
+            },
477
+            array()
478
+        );
479
+
480
+    }
481
+
482
+    /**
483
+     * Gets an array of fields to be included on the response.
484
+     *
485
+     * Included fields are based on item schema and `_fields=` request argument.
486
+     * Copied from WordPress 5.3 to support old versions.
487
+     *
488
+     * @since 1.0.19
489
+     * @param WP_REST_Request $request Full details about the request.
490
+     * @return array Fields to be included in the response.
491
+     */
492
+    public function get_fields_for_response( $request ) {
493
+
494
+        // Retrieve fields in the schema.
495
+        $properties = $this->get_schema_properties();
496
+
497
+        // Exclude fields that specify a different context than the request context.
498
+        $properties = $this->filter_response_fields_by_context( $properties, $request['context'] );
499
+
500
+        // We only need the field keys.
501
+        $fields = array_keys( $properties );
502
+
503
+        // Is the user filtering the response fields??
504
+        if ( empty( $request['_fields'] ) ) {
505
+            return $fields;
506
+        }
507
+
508
+        return $this->filter_response_fields_by_array( $fields, wpinv_parse_list( $request['_fields'] ) );
509
+
510
+    }
511
+
512
+    /**
513
+     * Limits an object to the requested fields.
514
+     *
515
+     * Included fields are based on the `_fields` request argument.
516
+     *
517
+     * @since 1.0.19
518
+     * @param array $data Fields to include in the response.
519
+     * @param array $fields Requested fields.
520
+     * @return array Fields to be included in the response.
521
+     */
522
+    public function limit_object_to_requested_fields( $data, $fields, $prefix = '' ) {
523
+
524
+        // Is the user filtering the response fields??
525
+        if ( empty( $fields ) ) {
526
+            return $data;
527
+        }
528
+
529
+        foreach ( $data as $key => $value ) {
530
+
531
+            // Numeric arrays.
532
+            if ( is_numeric( $key ) && is_array( $value ) ) {
533
+                $data[ $key ] = $this->limit_object_to_requested_fields( $value, $fields, $prefix );
534
+                continue;
535
+            }
536
+
537
+            // Generate a new prefix.
538
+            $new_prefix = empty( $prefix ) ? $key : "$prefix.$key";
539
+
540
+            // Check if it was requested.
541
+            if ( ! empty( $key ) && ! $this->is_field_included( $new_prefix, $fields ) ) {
542
+                unset( $data[ $key ] );
543
+                continue;
544
+            }
545
+
546
+            if ( $key != 'meta_data' && is_array( $value ) ) {
547
+                $data[ $key ] = $this->limit_object_to_requested_fields( $value, $fields, $new_prefix );
548
+            }
549
+
550
+        }
551
+
552
+        return $data;
553
+    }
554
+
555
+    /**
556
+     * Given an array of fields to include in a response, some of which may be
557
+     * `nested.fields`, determine whether the provided field should be included
558
+     * in the response body.
559
+     *
560
+     * Copied from WordPress 5.3 to support old versions.
561
+     *
562
+     * @since 1.0.19
563
+     *
564
+     * @param string $field  A field to test for inclusion in the response body.
565
+     * @param array  $fields An array of string fields supported by the endpoint.
566
+     * @return bool Whether to include the field or not.
567
+     * @see rest_is_field_included()
568
+     */
569
+    public function is_field_included( $field, $fields ) {
570
+        if ( in_array( $field, $fields, true ) ) {
571
+            return true;
572
+        }
573
+
574
+        foreach ( $fields as $accepted_field ) {
575
+            // Check to see if $field is the parent of any item in $fields.
576
+            // A field "parent" should be accepted if "parent.child" is accepted.
577
+            if ( strpos( $accepted_field, "$field." ) === 0 ) {
578
+                return true;
579
+            }
580
+            // Conversely, if "parent" is accepted, all "parent.child" fields
581
+            // should also be accepted.
582
+            if ( strpos( $field, "$accepted_field." ) === 0 ) {
583
+                return true;
584
+            }
585
+        }
586
+
587
+        return false;
588
+    }
589 589
 
590 590
 }
Please login to merge, or discard this patch.
Spacing   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  * @version 1.0.19
9 9
  */
10 10
 
11
-defined( 'ABSPATH' ) || exit;
11
+defined('ABSPATH') || exit;
12 12
 
13 13
 /**
14 14
  * Core class to access posts via the REST API.
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 		);
65 65
 
66 66
 		// Register REST routes.
67
-        add_action( 'rest_api_init', array( $this, 'register_routes' ) );
67
+        add_action('rest_api_init', array($this, 'register_routes'));
68 68
 
69 69
 	}
70 70
 
@@ -76,8 +76,8 @@  discard block
 block discarded – undo
76 76
 	 */
77 77
 	public function register_routes() {
78 78
 
79
-		foreach ( $this->namespaces as $namespace ) {
80
-			$this->register_namespace_routes( $namespace );
79
+		foreach ($this->namespaces as $namespace) {
80
+			$this->register_namespace_routes($namespace);
81 81
 		}
82 82
 
83 83
 	}
@@ -89,12 +89,12 @@  discard block
 block discarded – undo
89 89
 	 *
90 90
 	 * @param string $namespace
91 91
 	 */
92
-	public function register_namespace_routes( /** @scrutinizer ignore-unused */ $namespace ) {
92
+	public function register_namespace_routes(/** @scrutinizer ignore-unused */ $namespace) {
93 93
 
94 94
 		getpaid_doing_it_wrong(
95
-			__CLASS__ . '::' .__METHOD__,
95
+			__CLASS__ . '::' . __METHOD__,
96 96
 			/* translators: %s: register_namespace_routes() */
97
-			sprintf( __( "Method '%s' must be overridden." ), __METHOD__ ),
97
+			sprintf(__("Method '%s' must be overridden."), __METHOD__),
98 98
 			'1.0.19'
99 99
 		);
100 100
 
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
 	 * @return string
107 107
 	 */
108 108
 	protected function get_normalized_rest_base() {
109
-		return preg_replace( '/\(.*\)\//i', '', $this->rest_base );
109
+		return preg_replace('/\(.*\)\//i', '', $this->rest_base);
110 110
 	}
111 111
 
112 112
 	/**
@@ -115,11 +115,11 @@  discard block
 block discarded – undo
115 115
 	 * @param array array of request items.
116 116
 	 * @return array
117 117
 	 */
118
-	protected function fill_batch_keys( $items ) {
118
+	protected function fill_batch_keys($items) {
119 119
 
120
-		$items['create'] = empty( $items['create'] ) ? array() : $items['create'];
121
-		$items['update'] = empty( $items['update'] ) ? array() : $items['update'];
122
-		$items['delete'] = empty( $items['delete'] ) ? array() : wp_parse_id_list( $items['delete'] );
120
+		$items['create'] = empty($items['create']) ? array() : $items['create'];
121
+		$items['update'] = empty($items['update']) ? array() : $items['update'];
122
+		$items['delete'] = empty($items['delete']) ? array() : wp_parse_id_list($items['delete']);
123 123
 		return $items;
124 124
 
125 125
 	}
@@ -130,13 +130,13 @@  discard block
 block discarded – undo
130 130
 	 * @param array $items Request items.
131 131
 	 * @return bool|WP_Error
132 132
 	 */
133
-	protected function check_batch_limit( $items ) {
134
-		$limit = apply_filters( 'getpaid_rest_batch_items_limit', 100, $this->get_normalized_rest_base() );
135
-		$total = count( $items['create'] ) + count( $items['update'] ) + count( $items['delete'] );
133
+	protected function check_batch_limit($items) {
134
+		$limit = apply_filters('getpaid_rest_batch_items_limit', 100, $this->get_normalized_rest_base());
135
+		$total = count($items['create']) + count($items['update']) + count($items['delete']);
136 136
 
137
-		if ( $total > $limit ) {
137
+		if ($total > $limit) {
138 138
 			/* translators: %s: items limit */
139
-			return new WP_Error( 'getpaid_rest_request_entity_too_large', sprintf( __( 'Unable to accept more than %s items for this request.', 'invoicing' ), $limit ), array( 'status' => 413 ) );
139
+			return new WP_Error('getpaid_rest_request_entity_too_large', sprintf(__('Unable to accept more than %s items for this request.', 'invoicing'), $limit), array('status' => 413));
140 140
 		}
141 141
 
142 142
 		return true;
@@ -150,37 +150,37 @@  discard block
 block discarded – undo
150 150
 	 * @param WP_REST_Server $wp_rest_server
151 151
 	 * @return array()
152 152
 	 */
153
-	protected function batch_create_items( $items, $request, $wp_rest_server ) {
153
+	protected function batch_create_items($items, $request, $wp_rest_server) {
154 154
 
155 155
 		$query  = $request->get_query_params();
156 156
 		$create = array();
157 157
 
158
-		foreach ( $items as $item ) {
159
-			$_item = new WP_REST_Request( 'POST' );
158
+		foreach ($items as $item) {
159
+			$_item = new WP_REST_Request('POST');
160 160
 
161 161
 			// Default parameters.
162 162
 			$defaults = array();
163 163
 			$schema   = $this->get_public_item_schema();
164
-			foreach ( $schema['properties'] as $arg => $options ) {
165
-				if ( isset( $options['default'] ) ) {
166
-					$defaults[ $arg ] = $options['default'];
164
+			foreach ($schema['properties'] as $arg => $options) {
165
+				if (isset($options['default'])) {
166
+					$defaults[$arg] = $options['default'];
167 167
 				}
168 168
 			}
169
-			$_item->set_default_params( $defaults );
169
+			$_item->set_default_params($defaults);
170 170
 
171 171
 			// Set request parameters.
172
-			$_item->set_body_params( $item );
172
+			$_item->set_body_params($item);
173 173
 
174 174
 			// Set query (GET) parameters.
175
-			$_item->set_query_params( $query );
175
+			$_item->set_query_params($query);
176 176
 
177 177
 			// Create the item.
178
-			$_response = $this->create_item( $_item );
178
+			$_response = $this->create_item($_item);
179 179
 
180 180
 			// If an error occured...
181
-			if ( is_wp_error( $_response ) ) {
181
+			if (is_wp_error($_response)) {
182 182
 
183
-				$create[]   = array(
183
+				$create[] = array(
184 184
 					'id'    => 0,
185 185
 					'error' => array(
186 186
 						'code'    => $_response->get_error_code(),
@@ -192,7 +192,7 @@  discard block
 block discarded – undo
192 192
 				continue;
193 193
 			}
194 194
 
195
-			$create[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
195
+			$create[] = $wp_rest_server->response_to_data(/** @scrutinizer ignore-type */ $_response, false);
196 196
 
197 197
 		}
198 198
 
@@ -208,27 +208,27 @@  discard block
 block discarded – undo
208 208
 	 * @param WP_REST_Server $wp_rest_server
209 209
 	 * @return array()
210 210
 	 */
211
-	protected function batch_update_items( $items, $request, $wp_rest_server ) {
211
+	protected function batch_update_items($items, $request, $wp_rest_server) {
212 212
 
213 213
 		$query  = $request->get_query_params();
214 214
 		$update = array();
215 215
 
216
-		foreach ( $items as $item ) {
216
+		foreach ($items as $item) {
217 217
 
218 218
 			// Create a dummy request.
219
-			$_item = new WP_REST_Request( 'PUT' );
219
+			$_item = new WP_REST_Request('PUT');
220 220
 
221 221
 			// Add body params.
222
-			$_item->set_body_params( $item );
222
+			$_item->set_body_params($item);
223 223
 
224 224
 			// Set query (GET) parameters.
225
-			$_item->set_query_params( $query );
225
+			$_item->set_query_params($query);
226 226
 
227 227
 			// Update the item.
228
-			$_response = $this->update_item( $_item );
228
+			$_response = $this->update_item($_item);
229 229
 
230 230
 			// If an error occured...
231
-			if ( is_wp_error( $_response ) ) {
231
+			if (is_wp_error($_response)) {
232 232
 
233 233
 				$update[] = array(
234 234
 					'id'    => $item['id'],
@@ -243,7 +243,7 @@  discard block
 block discarded – undo
243 243
 
244 244
 			}
245 245
 
246
-			$update[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
246
+			$update[] = $wp_rest_server->response_to_data(/** @scrutinizer ignore-type */ $_response, false);
247 247
 
248 248
 		}
249 249
 
@@ -258,14 +258,14 @@  discard block
 block discarded – undo
258 258
 	 * @param WP_REST_Server $wp_rest_server
259 259
 	 * @return array()
260 260
 	 */
261
-	protected function batch_delete_items( $items, $wp_rest_server ) {
261
+	protected function batch_delete_items($items, $wp_rest_server) {
262 262
 
263 263
 		$delete = array();
264 264
 
265
-		foreach ( array_filter( $items ) as $id ) {
265
+		foreach (array_filter($items) as $id) {
266 266
 
267 267
 			// Prepare the request.
268
-			$_item = new WP_REST_Request( 'DELETE' );
268
+			$_item = new WP_REST_Request('DELETE');
269 269
 			$_item->set_query_params(
270 270
 				array(
271 271
 					'id'    => $id,
@@ -274,9 +274,9 @@  discard block
 block discarded – undo
274 274
 			);
275 275
 
276 276
 			// Delete the item.
277
-			$_response = $this->delete_item( $_item );
277
+			$_response = $this->delete_item($_item);
278 278
 
279
-			if ( is_wp_error( $_response ) ) {
279
+			if (is_wp_error($_response)) {
280 280
 
281 281
 				$delete[] = array(
282 282
 					'id'    => $id,
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
 				continue;
291 291
 			}
292 292
 
293
-			$delete[] = $wp_rest_server->response_to_data( /** @scrutinizer ignore-type */ $_response, false );
293
+			$delete[] = $wp_rest_server->response_to_data(/** @scrutinizer ignore-type */ $_response, false);
294 294
 
295 295
 		}
296 296
 
@@ -304,23 +304,23 @@  discard block
 block discarded – undo
304 304
 	 * @param WP_REST_Request $request Full details about the request.
305 305
 	 * @return WP_Error|array.
306 306
 	 */
307
-	public function batch_items( $request ) {
307
+	public function batch_items($request) {
308 308
 		global $wp_rest_server;
309 309
 
310 310
 		// Prepare the batch items.
311
-		$items = $this->fill_batch_keys( array_filter( $request->get_params() ) );
311
+		$items = $this->fill_batch_keys(array_filter($request->get_params()));
312 312
 
313 313
 		// Ensure that the batch has not exceeded the limit to prevent abuse.
314
-		$limit = $this->check_batch_limit( $items );
315
-		if ( is_wp_error( $limit ) ) {
314
+		$limit = $this->check_batch_limit($items);
315
+		if (is_wp_error($limit)) {
316 316
 			return $limit;
317 317
 		}
318 318
 
319 319
 		// Process the items.
320 320
 		return array(
321
-			'create' => $this->batch_create_items( $items['create'], $request, $wp_rest_server ),
322
-			'update' => $this->batch_update_items( $items['update'], $request, $wp_rest_server ),
323
-			'delete' => $this->batch_delete_items( $items['delete'], $wp_rest_server ),
321
+			'create' => $this->batch_create_items($items['create'], $request, $wp_rest_server),
322
+			'update' => $this->batch_update_items($items['update'], $request, $wp_rest_server),
323
+			'delete' => $this->batch_delete_items($items['delete'], $wp_rest_server),
324 324
 		);
325 325
 
326 326
 	}
@@ -333,8 +333,8 @@  discard block
 block discarded – undo
333 333
 	 * @param array $meta_query Meta query.
334 334
 	 * @return array
335 335
 	 */
336
-	protected function add_meta_query( $args, $meta_query ) {
337
-		if ( empty( $args['meta_query'] ) ) {
336
+	protected function add_meta_query($args, $meta_query) {
337
+		if (empty($args['meta_query'])) {
338 338
 			$args['meta_query'] = array();
339 339
 		}
340 340
 
@@ -356,25 +356,25 @@  discard block
 block discarded – undo
356 356
 			'type'       => 'object',
357 357
 			'properties' => array(
358 358
 				'create' => array(
359
-					'description' => __( 'List of created resources.', 'invoicing' ),
359
+					'description' => __('List of created resources.', 'invoicing'),
360 360
 					'type'        => 'array',
361
-					'context'     => array( 'view', 'edit' ),
361
+					'context'     => array('view', 'edit'),
362 362
 					'items'       => array(
363 363
 						'type'    => 'object',
364 364
 					),
365 365
 				),
366 366
 				'update' => array(
367
-					'description' => __( 'List of updated resources.', 'invoicing' ),
367
+					'description' => __('List of updated resources.', 'invoicing'),
368 368
 					'type'        => 'array',
369
-					'context'     => array( 'view', 'edit' ),
369
+					'context'     => array('view', 'edit'),
370 370
 					'items'       => array(
371 371
 						'type'    => 'object',
372 372
 					),
373 373
 				),
374 374
 				'delete' => array(
375
-					'description' => __( 'List of deleted resources.', 'invoicing' ),
375
+					'description' => __('List of deleted resources.', 'invoicing'),
376 376
 					'type'        => 'array',
377
-					'context'     => array( 'view', 'edit' ),
377
+					'context'     => array('view', 'edit'),
378 378
 					'items'       => array(
379 379
 						'type'    => 'integer',
380 380
 					),
@@ -395,13 +395,13 @@  discard block
 block discarded – undo
395 395
 	protected function get_schema_properties() {
396 396
 
397 397
 		$schema     = $this->get_item_schema();
398
-		$properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
398
+		$properties = isset($schema['properties']) ? $schema['properties'] : array();
399 399
 
400 400
 		// For back-compat, include any field with an empty schema
401 401
 		// because it won't be present in $this->get_item_schema().
402
-		foreach ( $this->get_additional_fields() as $field_name => $field_options ) {
403
-			if ( is_null( $field_options['schema'] ) ) {
404
-				$properties[ $field_name ] = $field_options;
402
+		foreach ($this->get_additional_fields() as $field_name => $field_options) {
403
+			if (is_null($field_options['schema'])) {
404
+				$properties[$field_name] = $field_options;
405 405
 			}
406 406
 		}
407 407
 
@@ -416,15 +416,15 @@  discard block
 block discarded – undo
416 416
 	 * @since 1.0.19
417 417
 	 * @return array
418 418
 	 */
419
-	protected function filter_response_fields_by_context( $fields, $context ) {
419
+	protected function filter_response_fields_by_context($fields, $context) {
420 420
 
421
-		if ( empty( $context ) ) {
421
+		if (empty($context)) {
422 422
 			return $fields;
423 423
 		}
424 424
 
425
-		foreach ( $fields as $name => $options ) {
426
-			if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
427
-				unset( $fields[ $name ] );
425
+		foreach ($fields as $name => $options) {
426
+			if (!empty($options['context']) && !in_array($context, $options['context'], true)) {
427
+				unset($fields[$name]);
428 428
 			}
429 429
 		}
430 430
 
@@ -440,35 +440,35 @@  discard block
 block discarded – undo
440 440
 	 * @since 1.0.19
441 441
 	 * @return array
442 442
 	 */
443
-	protected function filter_response_fields_by_array( $fields, $requested ) {
443
+	protected function filter_response_fields_by_array($fields, $requested) {
444 444
 
445 445
 		// Trim off any whitespace from the list array.
446
-		$requested = array_map( 'trim', $requested );
446
+		$requested = array_map('trim', $requested);
447 447
 
448 448
 		// Always persist 'id', because it can be needed for add_additional_fields_to_object().
449
-		if ( in_array( 'id', $fields, true ) ) {
449
+		if (in_array('id', $fields, true)) {
450 450
 			$requested[] = 'id';
451 451
 		}
452 452
 
453 453
 		// Get rid of duplicate fields.
454
-		$requested = array_unique( $requested );
454
+		$requested = array_unique($requested);
455 455
 
456 456
 		// Return the list of all included fields which are available.
457 457
 		return array_reduce(
458 458
 			$requested,
459
-			function( $response_fields, $field ) use ( $fields ) {
459
+			function($response_fields, $field) use ($fields) {
460 460
 
461
-				if ( in_array( $field, $fields, true ) ) {
461
+				if (in_array($field, $fields, true)) {
462 462
 					$response_fields[] = $field;
463 463
 					return $response_fields;
464 464
 				}
465 465
 
466 466
 				// Check for nested fields if $field is not a direct match.
467
-				$nested_fields = explode( '.', $field );
467
+				$nested_fields = explode('.', $field);
468 468
 
469 469
 				// A nested field is included so long as its top-level property is
470 470
 				// present in the schema.
471
-				if ( in_array( $nested_fields[0], $fields, true ) ) {
471
+				if (in_array($nested_fields[0], $fields, true)) {
472 472
 					$response_fields[] = $field;
473 473
 				}
474 474
 
@@ -489,23 +489,23 @@  discard block
 block discarded – undo
489 489
 	 * @param WP_REST_Request $request Full details about the request.
490 490
 	 * @return array Fields to be included in the response.
491 491
 	 */
492
-	public function get_fields_for_response( $request ) {
492
+	public function get_fields_for_response($request) {
493 493
 
494 494
 		// Retrieve fields in the schema.
495 495
 		$properties = $this->get_schema_properties();
496 496
 
497 497
 		// Exclude fields that specify a different context than the request context.
498
-		$properties = $this->filter_response_fields_by_context( $properties, $request['context'] );
498
+		$properties = $this->filter_response_fields_by_context($properties, $request['context']);
499 499
 
500 500
 		// We only need the field keys.
501
-		$fields = array_keys( $properties );
501
+		$fields = array_keys($properties);
502 502
 
503 503
 		// Is the user filtering the response fields??
504
-		if ( empty( $request['_fields'] ) ) {
504
+		if (empty($request['_fields'])) {
505 505
 			return $fields;
506 506
 		}
507 507
 
508
-		return $this->filter_response_fields_by_array( $fields, wpinv_parse_list( $request['_fields'] ) );
508
+		return $this->filter_response_fields_by_array($fields, wpinv_parse_list($request['_fields']));
509 509
 
510 510
 	}
511 511
 
@@ -519,32 +519,32 @@  discard block
 block discarded – undo
519 519
 	 * @param array $fields Requested fields.
520 520
 	 * @return array Fields to be included in the response.
521 521
 	 */
522
-	public function limit_object_to_requested_fields( $data, $fields, $prefix = '' ) {
522
+	public function limit_object_to_requested_fields($data, $fields, $prefix = '') {
523 523
 
524 524
 		// Is the user filtering the response fields??
525
-		if ( empty( $fields ) ) {
525
+		if (empty($fields)) {
526 526
 			return $data;
527 527
 		}
528 528
 
529
-		foreach ( $data as $key => $value ) {
529
+		foreach ($data as $key => $value) {
530 530
 
531 531
 			// Numeric arrays.
532
-			if ( is_numeric( $key ) && is_array( $value ) ) {
533
-				$data[ $key ] = $this->limit_object_to_requested_fields( $value, $fields, $prefix );
532
+			if (is_numeric($key) && is_array($value)) {
533
+				$data[$key] = $this->limit_object_to_requested_fields($value, $fields, $prefix);
534 534
 				continue;
535 535
 			}
536 536
 
537 537
 			// Generate a new prefix.
538
-			$new_prefix = empty( $prefix ) ? $key : "$prefix.$key";
538
+			$new_prefix = empty($prefix) ? $key : "$prefix.$key";
539 539
 
540 540
 			// Check if it was requested.
541
-			if ( ! empty( $key ) && ! $this->is_field_included( $new_prefix, $fields ) ) {
542
-				unset( $data[ $key ] );
541
+			if (!empty($key) && !$this->is_field_included($new_prefix, $fields)) {
542
+				unset($data[$key]);
543 543
 				continue;
544 544
 			}
545 545
 
546
-			if ( $key != 'meta_data' && is_array( $value ) ) {
547
-				$data[ $key ] = $this->limit_object_to_requested_fields( $value, $fields, $new_prefix );
546
+			if ($key != 'meta_data' && is_array($value)) {
547
+				$data[$key] = $this->limit_object_to_requested_fields($value, $fields, $new_prefix);
548 548
 			}
549 549
 
550 550
 		}
@@ -566,20 +566,20 @@  discard block
 block discarded – undo
566 566
 	 * @return bool Whether to include the field or not.
567 567
 	 * @see rest_is_field_included()
568 568
 	 */
569
-	public function is_field_included( $field, $fields ) {
570
-		if ( in_array( $field, $fields, true ) ) {
569
+	public function is_field_included($field, $fields) {
570
+		if (in_array($field, $fields, true)) {
571 571
 			return true;
572 572
 		}
573 573
 
574
-		foreach ( $fields as $accepted_field ) {
574
+		foreach ($fields as $accepted_field) {
575 575
 			// Check to see if $field is the parent of any item in $fields.
576 576
 			// A field "parent" should be accepted if "parent.child" is accepted.
577
-			if ( strpos( $accepted_field, "$field." ) === 0 ) {
577
+			if (strpos($accepted_field, "$field.") === 0) {
578 578
 				return true;
579 579
 			}
580 580
 			// Conversely, if "parent" is accepted, all "parent.child" fields
581 581
 			// should also be accepted.
582
-			if ( strpos( $field, "$accepted_field." ) === 0 ) {
582
+			if (strpos($field, "$accepted_field.") === 0) {
583 583
 				return true;
584 584
 			}
585 585
 		}
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-posts-controller.php 2 patches
Indentation   +619 added lines, -619 removed lines patch added patch discarded remove patch
@@ -18,628 +18,628 @@
 block discarded – undo
18 18
 class GetPaid_REST_Posts_Controller extends GetPaid_REST_CRUD_Controller {
19 19
 
20 20
     /**
21
-	 * Post type.
22
-	 *
23
-	 * @var string
24
-	 */
25
-	protected $post_type;
26
-
27
-	/**
28
-	 * Controls visibility on frontend.
29
-	 *
30
-	 * @var string
31
-	 */
32
-	public $public = false;
33
-
34
-	/**
35
-	 * Registers the routes for the objects of the controller.
36
-	 *
37
-	 * @since 1.0.19
38
-	 *
39
-	 * @see register_rest_route()
40
-	 */
41
-	public function register_namespace_routes( $namespace ) {
42
-
43
-		parent::register_namespace_routes( $namespace );
44
-
45
-		register_rest_route(
46
-			$namespace,
47
-			'/' . $this->rest_base . '/batch',
48
-			array(
49
-				array(
50
-					'methods'             => WP_REST_Server::EDITABLE,
51
-					'callback'            => array( $this, 'batch_items' ),
52
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
53
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
54
-				),
55
-				'schema' => array( $this, 'get_public_batch_schema' ),
56
-			)
57
-		);
58
-
59
-	}
60
-
61
-	/**
62
-	 * Check permissions of items on REST API.
63
-	 *
64
-	 * @since 1.0.19
65
-	 * @param string $context   Request context.
66
-	 * @param int    $object_id Post ID.
67
-	 * @return bool
68
-	 */
69
-	public function check_post_permissions( $context = 'read', $object_id = 0 ) {
70
-
71
-		$contexts = array(
72
-			'read'   => 'read_private_posts',
73
-			'create' => 'publish_posts',
74
-			'edit'   => 'edit_post',
75
-			'delete' => 'delete_post',
76
-			'batch'  => 'edit_others_posts',
77
-		);
78
-
79
-		$cap              = $contexts[ $context ];
80
-		$post_type_object = get_post_type_object( $this->post_type );
81
-		$permission       = current_user_can( $post_type_object->cap->$cap, $object_id );
82
-
83
-		return apply_filters( 'getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type );
84
-	}
85
-
86
-	/**
87
-	 * Check if a given request has access to read items.
88
-	 *
89
-	 * @param  WP_REST_Request $request Full details about the request.
90
-	 * @return WP_Error|boolean
91
-	 */
92
-	public function get_items_permissions_check( $request ) {
93
-		return $this->check_post_permissions() ? true : new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
94
-	}
95
-
96
-	/**
97
-	 * Check if a given request has access to create an item.
98
-	 *
99
-	 * @param  WP_REST_Request $request Full details about the request.
100
-	 * @return WP_Error|boolean
101
-	 */
102
-	public function create_item_permissions_check( $request ) {
103
-		return $this->check_post_permissions( 'create' ) ? true : new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
104
-	}
105
-
106
-	/**
107
-	 * Check if a given request has access to read an item.
108
-	 *
109
-	 * @param  WP_REST_Request $request Full details about the request.
110
-	 * @return WP_Error|boolean
111
-	 */
112
-	public function get_item_permissions_check( $request ) {
113
-		$post = get_post( (int) $request['id'] );
114
-
115
-		if ( $post && ! $this->check_post_permissions( 'read', $post->ID ) ) {
116
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot view this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
117
-		}
118
-
119
-		return true;
120
-	}
121
-
122
-	/**
123
-	 * Check if a given request has access to update an item.
124
-	 *
125
-	 * @param  WP_REST_Request $request Full details about the request.
126
-	 * @return WP_Error|boolean
127
-	 */
128
-	public function update_item_permissions_check( $request ) {
129
-		$post = get_post( (int) $request['id'] );
130
-
131
-		if ( $post && ! $this->check_post_permissions( 'edit', $post->ID ) ) {
132
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
133
-		}
134
-
135
-		return true;
136
-	}
137
-
138
-	/**
139
-	 * Check if a given request has access to delete an item.
140
-	 *
141
-	 * @param  WP_REST_Request $request Full details about the request.
142
-	 * @return bool|WP_Error
143
-	 */
144
-	public function delete_item_permissions_check( $request ) {
145
-		$post = get_post( (int) $request['id'] );
146
-
147
-		if ( $post && ! $this->check_post_permissions( 'delete', $post->ID ) ) {
148
-			return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
149
-		}
150
-
151
-		return true;
152
-	}
153
-
154
-	/**
155
-	 * Check if a given request has access batch create, update and delete items.
156
-	 *
157
-	 * @param  WP_REST_Request $request Full details about the request.
158
-	 *
159
-	 * @return boolean|WP_Error
160
-	 */
161
-	public function batch_items_permissions_check( $request ) {
162
-		return $this->check_post_permissions( 'batch' ) ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
163
-	}
164
-
165
-	/**
166
-	 * @deprecated
167
-	 */
168
-	public function get_post( $object_id ) {
169
-		return $this->get_object( $object_id );
21
+     * Post type.
22
+     *
23
+     * @var string
24
+     */
25
+    protected $post_type;
26
+
27
+    /**
28
+     * Controls visibility on frontend.
29
+     *
30
+     * @var string
31
+     */
32
+    public $public = false;
33
+
34
+    /**
35
+     * Registers the routes for the objects of the controller.
36
+     *
37
+     * @since 1.0.19
38
+     *
39
+     * @see register_rest_route()
40
+     */
41
+    public function register_namespace_routes( $namespace ) {
42
+
43
+        parent::register_namespace_routes( $namespace );
44
+
45
+        register_rest_route(
46
+            $namespace,
47
+            '/' . $this->rest_base . '/batch',
48
+            array(
49
+                array(
50
+                    'methods'             => WP_REST_Server::EDITABLE,
51
+                    'callback'            => array( $this, 'batch_items' ),
52
+                    'permission_callback' => array( $this, 'batch_items_permissions_check' ),
53
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
54
+                ),
55
+                'schema' => array( $this, 'get_public_batch_schema' ),
56
+            )
57
+        );
58
+
59
+    }
60
+
61
+    /**
62
+     * Check permissions of items on REST API.
63
+     *
64
+     * @since 1.0.19
65
+     * @param string $context   Request context.
66
+     * @param int    $object_id Post ID.
67
+     * @return bool
68
+     */
69
+    public function check_post_permissions( $context = 'read', $object_id = 0 ) {
70
+
71
+        $contexts = array(
72
+            'read'   => 'read_private_posts',
73
+            'create' => 'publish_posts',
74
+            'edit'   => 'edit_post',
75
+            'delete' => 'delete_post',
76
+            'batch'  => 'edit_others_posts',
77
+        );
78
+
79
+        $cap              = $contexts[ $context ];
80
+        $post_type_object = get_post_type_object( $this->post_type );
81
+        $permission       = current_user_can( $post_type_object->cap->$cap, $object_id );
82
+
83
+        return apply_filters( 'getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type );
84
+    }
85
+
86
+    /**
87
+     * Check if a given request has access to read items.
88
+     *
89
+     * @param  WP_REST_Request $request Full details about the request.
90
+     * @return WP_Error|boolean
91
+     */
92
+    public function get_items_permissions_check( $request ) {
93
+        return $this->check_post_permissions() ? true : new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
94
+    }
95
+
96
+    /**
97
+     * Check if a given request has access to create an item.
98
+     *
99
+     * @param  WP_REST_Request $request Full details about the request.
100
+     * @return WP_Error|boolean
101
+     */
102
+    public function create_item_permissions_check( $request ) {
103
+        return $this->check_post_permissions( 'create' ) ? true : new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
104
+    }
105
+
106
+    /**
107
+     * Check if a given request has access to read an item.
108
+     *
109
+     * @param  WP_REST_Request $request Full details about the request.
110
+     * @return WP_Error|boolean
111
+     */
112
+    public function get_item_permissions_check( $request ) {
113
+        $post = get_post( (int) $request['id'] );
114
+
115
+        if ( $post && ! $this->check_post_permissions( 'read', $post->ID ) ) {
116
+            return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot view this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
117
+        }
118
+
119
+        return true;
120
+    }
121
+
122
+    /**
123
+     * Check if a given request has access to update an item.
124
+     *
125
+     * @param  WP_REST_Request $request Full details about the request.
126
+     * @return WP_Error|boolean
127
+     */
128
+    public function update_item_permissions_check( $request ) {
129
+        $post = get_post( (int) $request['id'] );
130
+
131
+        if ( $post && ! $this->check_post_permissions( 'edit', $post->ID ) ) {
132
+            return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
133
+        }
134
+
135
+        return true;
136
+    }
137
+
138
+    /**
139
+     * Check if a given request has access to delete an item.
140
+     *
141
+     * @param  WP_REST_Request $request Full details about the request.
142
+     * @return bool|WP_Error
143
+     */
144
+    public function delete_item_permissions_check( $request ) {
145
+        $post = get_post( (int) $request['id'] );
146
+
147
+        if ( $post && ! $this->check_post_permissions( 'delete', $post->ID ) ) {
148
+            return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
149
+        }
150
+
151
+        return true;
152
+    }
153
+
154
+    /**
155
+     * Check if a given request has access batch create, update and delete items.
156
+     *
157
+     * @param  WP_REST_Request $request Full details about the request.
158
+     *
159
+     * @return boolean|WP_Error
160
+     */
161
+    public function batch_items_permissions_check( $request ) {
162
+        return $this->check_post_permissions( 'batch' ) ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
163
+    }
164
+
165
+    /**
166
+     * @deprecated
167
+     */
168
+    public function get_post( $object_id ) {
169
+        return $this->get_object( $object_id );
170
+    }
171
+
172
+    /**
173
+     * Get a single object.
174
+     *
175
+     * @param WP_REST_Request $request Full details about the request.
176
+     * @return WP_Error|WP_REST_Response
177
+     */
178
+    public function get_item( $request ) {
179
+
180
+        // Fetch item.
181
+        $response = parent::get_item( $request );
182
+
183
+        // (Maybe) add a link to the html pagee.
184
+        if ( $this->public && ! is_wp_error( $response ) ) {
185
+            $response->link_header( 'alternate', get_permalink( $this->data_object->get_id() ), array( 'type' => 'text/html' ) );
186
+        }
187
+
188
+        return $response;
189
+    }
190
+
191
+    /**
192
+     * Create a single object.
193
+     *
194
+     * @param WP_REST_Request $request Full details about the request.
195
+     * @return WP_Error|WP_REST_Response
196
+     */
197
+    public function create_item( $request ) {
198
+
199
+        // Create item.
200
+        $response = parent::create_item( $request );
201
+
202
+        // Fire a hook after an item is created.
203
+        if ( ! is_wp_error( $response ) ) {
204
+
205
+            /**
206
+             * Fires after a single item is created or updated via the REST API.
207
+             *
208
+             * @param WP_Post         $post      Post object.
209
+             * @param WP_REST_Request $request   Request object.
210
+             * @param boolean         $creating  True when creating item, false when updating.
211
+             */
212
+            do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true );
213
+
214
+        }
215
+
216
+        return $response;
217
+
170 218
     }
171 219
 
172
-	/**
173
-	 * Get a single object.
174
-	 *
175
-	 * @param WP_REST_Request $request Full details about the request.
176
-	 * @return WP_Error|WP_REST_Response
177
-	 */
178
-	public function get_item( $request ) {
179
-
180
-		// Fetch item.
181
-		$response = parent::get_item( $request );
182
-
183
-		// (Maybe) add a link to the html pagee.
184
-		if ( $this->public && ! is_wp_error( $response ) ) {
185
-			$response->link_header( 'alternate', get_permalink( $this->data_object->get_id() ), array( 'type' => 'text/html' ) );
186
-		}
187
-
188
-		return $response;
189
-	}
190
-
191
-	/**
192
-	 * Create a single object.
193
-	 *
194
-	 * @param WP_REST_Request $request Full details about the request.
195
-	 * @return WP_Error|WP_REST_Response
196
-	 */
197
-	public function create_item( $request ) {
198
-
199
-		// Create item.
200
-		$response = parent::create_item( $request );
201
-
202
-		// Fire a hook after an item is created.
203
-		if ( ! is_wp_error( $response ) ) {
204
-
205
-			/**
206
-			 * Fires after a single item is created or updated via the REST API.
207
-			 *
208
-			 * @param WP_Post         $post      Post object.
209
-			 * @param WP_REST_Request $request   Request object.
210
-			 * @param boolean         $creating  True when creating item, false when updating.
211
-			 */
212
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true );
213
-
214
-		}
215
-
216
-		return $response;
217
-
218
-	}
219
-
220
-	/**
221
-	 * Update a single object.
222
-	 *
223
-	 * @param WP_REST_Request $request Full details about the request.
224
-	 * @return WP_Error|WP_REST_Response
225
-	 */
226
-	public function update_item( $request ) {
227
-
228
-		// Create item.
229
-		$response = parent::update_item( $request );
230
-
231
-		// Fire a hook after an item is created.
232
-		if ( ! is_wp_error( $response ) ) {
233
-
234
-			/**
235
-			 * Fires after a single item is created or updated via the REST API.
236
-			 *
237
-			 * @param WP_Post         $post      Post object.
238
-			 * @param WP_REST_Request $request   Request object.
239
-			 * @param boolean         $creating  True when creating item, false when updating.
240
-			 */
241
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false );
242
-
243
-		}
244
-
245
-		return $response;
246
-
247
-	}
248
-
249
-	/**
250
-	 * Get a collection of objects.
251
-	 *
252
-	 * @param WP_REST_Request $request Full details about the request.
253
-	 * @return WP_Error|WP_REST_Response
254
-	 */
255
-	public function get_items( $request ) {
256
-
257
-		$args                         = array();
258
-		$args['offset']               = $request['offset'];
259
-		$args['order']                = $request['order'];
260
-		$args['orderby']              = $request['orderby'];
261
-		$args['paged']                = $request['page'];
262
-		$args['post__in']             = $request['include'];
263
-		$args['post__not_in']         = $request['exclude'];
264
-		$args['posts_per_page']       = $request['per_page'];
265
-		$args['name']                 = $request['slug'];
266
-		$args['post_parent__in']      = $request['parent'];
267
-		$args['post_parent__not_in']  = $request['parent_exclude'];
268
-		$args['s']                    = $request['search'];
269
-		$args['post_status']          = wpinv_parse_list( $request['status'] );
270
-
271
-		$args['date_query'] = array();
272
-
273
-		// Set before into date query. Date query must be specified as an array of an array.
274
-		if ( isset( $request['before'] ) ) {
275
-			$args['date_query'][0]['before'] = $request['before'];
276
-		}
277
-
278
-		// Set after into date query. Date query must be specified as an array of an array.
279
-		if ( isset( $request['after'] ) ) {
280
-			$args['date_query'][0]['after'] = $request['after'];
281
-		}
282
-
283
-		// Force the post_type & fields arguments, since they're not a user input variable.
284
-		$args['post_type'] = $this->post_type;
285
-		$args['fields']    = 'ids';
286
-
287
-		// Filter the query arguments for a request.
288
-		$args       = apply_filters( "getpaid_rest_{$this->post_type}_query", $args, $request );
289
-		$query_args = $this->prepare_items_query( $args, $request );
290
-
291
-		$posts_query = new WP_Query();
292
-		$query_result = $posts_query->query( $query_args );
293
-
294
-		$posts = array();
295
-		foreach ( $query_result as $post_id ) {
296
-			if ( ! $this->check_post_permissions( 'read', $post_id ) ) {
297
-				continue;
298
-			}
299
-
300
-			$data    = $this->prepare_item_for_response( $this->get_object( $post_id ), $request );
301
-			$posts[] = $this->prepare_response_for_collection( $data );
302
-		}
303
-
304
-		$page        = (int) $query_args['paged'];
305
-		$total_posts = $posts_query->found_posts;
306
-
307
-		if ( $total_posts < 1 ) {
308
-			// Out-of-bounds, run the query again without LIMIT for total count.
309
-			unset( $query_args['paged'] );
310
-			$count_query = new WP_Query();
311
-			$count_query->query( $query_args );
312
-			$total_posts = $count_query->found_posts;
313
-		}
314
-
315
-		$max_pages = ceil( $total_posts / (int) $query_args['posts_per_page'] );
316
-
317
-		$response = rest_ensure_response( $posts );
318
-		$response->header( 'X-WP-Total', (int) $total_posts );
319
-		$response->header( 'X-WP-TotalPages', (int) $max_pages );
320
-
321
-		$request_params = $request->get_query_params();
322
-		$base = add_query_arg( $request_params, rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );
323
-
324
-		if ( $page > 1 ) {
325
-			$prev_page = $page - 1;
326
-			if ( $prev_page > $max_pages ) {
327
-				$prev_page = $max_pages;
328
-			}
329
-			$prev_link = add_query_arg( 'page', $prev_page, $base );
330
-			$response->link_header( 'prev', $prev_link );
331
-		}
332
-		if ( $max_pages > $page ) {
333
-			$next_page = $page + 1;
334
-			$next_link = add_query_arg( 'page', $next_page, $base );
335
-			$response->link_header( 'next', $next_link );
336
-		}
337
-
338
-		return $response;
339
-	}
340
-
341
-	/**
342
-	 * Delete a single item.
343
-	 *
344
-	 * @param WP_REST_Request $request Full details about the request.
345
-	 * @return WP_REST_Response|WP_Error
346
-	 */
347
-	public function delete_item( $request ) {
348
-
349
-		// Fetch the item.
350
-		$item = $this->get_object( $request['id'] );
351
-		if ( is_wp_error( $item ) ) {
352
-			return $item;
353
-		}
354
-
355
-		$supports_trash = EMPTY_TRASH_DAYS > 0;
356
-		$force          = $supports_trash && (bool) $request['force'];
357
-
358
-		if ( ! $this->check_post_permissions( 'delete', $item->ID ) ) {
359
-			return new WP_Error( "cannot_delete", __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
360
-		}
361
-
362
-		$request->set_param( 'context', 'edit' );
363
-		$response = $this->prepare_item_for_response( $item, $request );
364
-
365
-		if ( ! wp_delete_post( $item->ID, $force ) ) {
366
-			return new WP_Error( 'rest_cannot_delete', sprintf( __( 'The resource cannot be deleted.', 'invoicing' ), $this->post_type ), array( 'status' => 500 ) );
367
-		}
368
-
369
-		return $response;
370
-	}
371
-
372
-	/**
373
-	 * Prepare links for the request.
374
-	 *
375
-	 * @param GetPaid_Data    $object GetPaid_Data object.
376
-	 * @return array Links for the given object.
377
-	 */
378
-	protected function prepare_links( $object ) {
379
-
380
-		$links = parent::prepare_links( $object );
381
-
382
-		if ( is_callable( array( $object, 'get_user_id' ) ) ) {
383
-			$links['user'] = array(
384
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func(  array( $object, 'get_user_id' )  ) ),
385
-				'embeddable' => true,
386
-			);
387
-		}
388
-
389
-		if ( is_callable( array( $object, 'get_owner' ) ) ) {
390
-			$links['owner']  = array(
391
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func(  array( $object, 'get_owner' )  ) ),
392
-				'embeddable' => true,
393
-			);
394
-		}
395
-
396
-		if ( is_callable( array( $object, 'get_parent_id' ) ) && call_user_func(  array( $object, 'get_parent_id' )  ) ) {
397
-			$links['parent']  = array(
398
-				'href'       => rest_url( "$this->namespace/$this->rest_base/" . call_user_func(  array( $object, 'get_parent_id' )  ) ),
399
-				'embeddable' => true,
400
-			);
401
-		}
402
-
403
-		return $links;
404
-	}
405
-
406
-	/**
407
-	 * Determine the allowed query_vars for a get_items() response and
408
-	 * prepare for WP_Query.
409
-	 *
410
-	 * @param array           $prepared_args Prepared arguments.
411
-	 * @param WP_REST_Request $request Request object.
412
-	 * @return array          $query_args
413
-	 */
414
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
415
-
416
-		$valid_vars = array_flip( $this->get_allowed_query_vars() );
417
-		$query_args = array();
418
-		foreach ( $valid_vars as $var => $index ) {
419
-			if ( isset( $prepared_args[ $var ] ) ) {
420
-				$query_args[ $var ] = apply_filters( "getpaid_rest_query_var-{$var}", $prepared_args[ $var ], $index );
421
-			}
422
-		}
423
-
424
-		$query_args['ignore_sticky_posts'] = true;
425
-
426
-		if ( 'include' === $query_args['orderby'] ) {
427
-			$query_args['orderby'] = 'post__in';
428
-		} elseif ( 'id' === $query_args['orderby'] ) {
429
-			$query_args['orderby'] = 'ID'; // ID must be capitalized.
430
-		} elseif ( 'slug' === $query_args['orderby'] ) {
431
-			$query_args['orderby'] = 'name';
432
-		}
433
-
434
-		return apply_filters( 'getpaid_rest_prepare_items_query', $query_args, $request, $this );
435
-
436
-	}
437
-
438
-	/**
439
-	 * Get all the WP Query vars that are allowed for the API request.
440
-	 *
441
-	 * @return array
442
-	 */
443
-	protected function get_allowed_query_vars() {
444
-		global $wp;
445
-
446
-		/**
447
-		 * Filter the publicly allowed query vars.
448
-		 *
449
-		 * Allows adjusting of the default query vars that are made public.
450
-		 *
451
-		 * @param array  Array of allowed WP_Query query vars.
452
-		 */
453
-		$valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
454
-
455
-		$post_type_obj = get_post_type_object( $this->post_type );
456
-		if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
457
-			$private = apply_filters( 'getpaid_rest_private_query_vars', $wp->private_query_vars );
458
-			$valid_vars = array_merge( $valid_vars, $private );
459
-		}
460
-
461
-		// Define our own in addition to WP's normal vars.
462
-		$rest_valid = array(
463
-			'post_status',
464
-			'date_query',
465
-			'ignore_sticky_posts',
466
-			'offset',
467
-			'post__in',
468
-			'post__not_in',
469
-			'post_parent',
470
-			'post_parent__in',
471
-			'post_parent__not_in',
472
-			'posts_per_page',
473
-			'meta_query',
474
-			'tax_query',
475
-			'meta_key',
476
-			'meta_value',
477
-			'meta_compare',
478
-			'meta_value_num',
479
-		);
480
-		$valid_vars = array_merge( $valid_vars, $rest_valid );
481
-
482
-		// Filter allowed query vars for the REST API.
483
-		$valid_vars = apply_filters( 'getpaid_rest_query_vars', $valid_vars, $this );
484
-
485
-		return $valid_vars;
486
-	}
487
-
488
-	/**
489
-	 * Get the query params for collections of attachments.
490
-	 *
491
-	 * @return array
492
-	 */
493
-	public function get_collection_params() {
494
-
495
-		return array_merge(
496
-
497
-			parent::get_collection_params(),
498
-
499
-			array(
500
-				'status' => array(
501
-					'default'           => $this->get_post_statuses(),
502
-					'description'       => __( 'Limit result set to resources assigned one or more statuses.', 'invoicing' ),
503
-					'type'              => array( 'array', 'string' ),
504
-					'items'             => array(
505
-						'enum'          => $this->get_post_statuses(),
506
-						'type'          => 'string',
507
-					),
508
-					'validate_callback' => 'rest_validate_request_arg',
509
-					'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
510
-				),
511
-				'after' => array(
512
-					'description'        => __( 'Limit response to resources created after a given ISO8601 compliant date.', 'invoicing' ),
513
-					'type'               => 'string',
514
-					'format'             => 'string',
515
-					'validate_callback'  => 'rest_validate_request_arg',
516
-					'sanitize_callback'  => 'sanitize_text_field',
517
-				),
518
-				'before' => array(
519
-					'description'        => __( 'Limit response to resources created before a given ISO8601 compliant date.', 'invoicing' ),
520
-					'type'               => 'string',
521
-					'format'             => 'string',
522
-					'validate_callback'  => 'rest_validate_request_arg',
523
-					'sanitize_callback'  => 'sanitize_text_field',
524
-				),
525
-				'exclude' => array(
526
-					'description'       => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
527
-					'type'              => 'array',
528
-					'items'             => array(
529
-						'type'          => 'integer',
530
-					),
531
-					'default'           => array(),
532
-					'sanitize_callback' => 'wp_parse_id_list',
533
-					'validate_callback' => 'rest_validate_request_arg',
534
-				),
535
-				'include' => array(
536
-					'description'       => __( 'Limit result set to specific ids.', 'invoicing' ),
537
-					'type'              => 'array',
538
-					'items'             => array(
539
-						'type'          => 'integer',
540
-					),
541
-					'default'           => array(),
542
-					'sanitize_callback' => 'wp_parse_id_list',
543
-					'validate_callback' => 'rest_validate_request_arg',
544
-				),
545
-				'offset' => array(
546
-					'description'        => __( 'Offset the result set by a specific number of items.', 'invoicing' ),
547
-					'type'               => 'integer',
548
-					'sanitize_callback'  => 'absint',
549
-					'validate_callback'  => 'rest_validate_request_arg',
550
-				),
551
-				'order' => array(
552
-					'description'        => __( 'Order sort attribute ascending or descending.', 'invoicing' ),
553
-					'type'               => 'string',
554
-					'default'            => 'desc',
555
-					'enum'               => array( 'asc', 'desc' ),
556
-					'validate_callback'  => 'rest_validate_request_arg',
557
-				),
558
-				'orderby' => array(
559
-					'description'        => __( 'Sort collection by object attribute.', 'invoicing' ),
560
-					'type'               => 'string',
561
-					'default'            => 'date',
562
-					'enum'               => array(
563
-						'date',
564
-						'id',
565
-						'include',
566
-						'title',
567
-						'slug',
568
-						'modified',
569
-					),
570
-					'validate_callback'  => 'rest_validate_request_arg',
571
-				),
572
-			)
573
-		);
574
-	}
575
-
576
-	/**
577
-	 * Retrieves the items's schema, conforming to JSON Schema.
578
-	 *
579
-	 * @since 1.0.19
580
-	 *
581
-	 * @return array Item schema data.
582
-	 */
583
-	public function get_item_schema() {
584
-
585
-		// Maybe retrieve the schema from cache.
586
-		if ( ! empty( $this->schema ) ) {
587
-			return $this->add_additional_fields_schema( $this->schema );
588
-		}
589
-
590
-		$type   = str_replace( 'wpi_', '', $this->post_type );
591
-		$schema = array(
592
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
593
-			'title'      => $this->post_type,
594
-			'type'       => 'object',
595
-			'properties' => wpinv_get_data( "$type-schema" ),
596
-		);
597
-
598
-		// Filters the invoice schema for the REST API.
220
+    /**
221
+     * Update a single object.
222
+     *
223
+     * @param WP_REST_Request $request Full details about the request.
224
+     * @return WP_Error|WP_REST_Response
225
+     */
226
+    public function update_item( $request ) {
227
+
228
+        // Create item.
229
+        $response = parent::update_item( $request );
230
+
231
+        // Fire a hook after an item is created.
232
+        if ( ! is_wp_error( $response ) ) {
233
+
234
+            /**
235
+             * Fires after a single item is created or updated via the REST API.
236
+             *
237
+             * @param WP_Post         $post      Post object.
238
+             * @param WP_REST_Request $request   Request object.
239
+             * @param boolean         $creating  True when creating item, false when updating.
240
+             */
241
+            do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false );
242
+
243
+        }
244
+
245
+        return $response;
246
+
247
+    }
248
+
249
+    /**
250
+     * Get a collection of objects.
251
+     *
252
+     * @param WP_REST_Request $request Full details about the request.
253
+     * @return WP_Error|WP_REST_Response
254
+     */
255
+    public function get_items( $request ) {
256
+
257
+        $args                         = array();
258
+        $args['offset']               = $request['offset'];
259
+        $args['order']                = $request['order'];
260
+        $args['orderby']              = $request['orderby'];
261
+        $args['paged']                = $request['page'];
262
+        $args['post__in']             = $request['include'];
263
+        $args['post__not_in']         = $request['exclude'];
264
+        $args['posts_per_page']       = $request['per_page'];
265
+        $args['name']                 = $request['slug'];
266
+        $args['post_parent__in']      = $request['parent'];
267
+        $args['post_parent__not_in']  = $request['parent_exclude'];
268
+        $args['s']                    = $request['search'];
269
+        $args['post_status']          = wpinv_parse_list( $request['status'] );
270
+
271
+        $args['date_query'] = array();
272
+
273
+        // Set before into date query. Date query must be specified as an array of an array.
274
+        if ( isset( $request['before'] ) ) {
275
+            $args['date_query'][0]['before'] = $request['before'];
276
+        }
277
+
278
+        // Set after into date query. Date query must be specified as an array of an array.
279
+        if ( isset( $request['after'] ) ) {
280
+            $args['date_query'][0]['after'] = $request['after'];
281
+        }
282
+
283
+        // Force the post_type & fields arguments, since they're not a user input variable.
284
+        $args['post_type'] = $this->post_type;
285
+        $args['fields']    = 'ids';
286
+
287
+        // Filter the query arguments for a request.
288
+        $args       = apply_filters( "getpaid_rest_{$this->post_type}_query", $args, $request );
289
+        $query_args = $this->prepare_items_query( $args, $request );
290
+
291
+        $posts_query = new WP_Query();
292
+        $query_result = $posts_query->query( $query_args );
293
+
294
+        $posts = array();
295
+        foreach ( $query_result as $post_id ) {
296
+            if ( ! $this->check_post_permissions( 'read', $post_id ) ) {
297
+                continue;
298
+            }
299
+
300
+            $data    = $this->prepare_item_for_response( $this->get_object( $post_id ), $request );
301
+            $posts[] = $this->prepare_response_for_collection( $data );
302
+        }
303
+
304
+        $page        = (int) $query_args['paged'];
305
+        $total_posts = $posts_query->found_posts;
306
+
307
+        if ( $total_posts < 1 ) {
308
+            // Out-of-bounds, run the query again without LIMIT for total count.
309
+            unset( $query_args['paged'] );
310
+            $count_query = new WP_Query();
311
+            $count_query->query( $query_args );
312
+            $total_posts = $count_query->found_posts;
313
+        }
314
+
315
+        $max_pages = ceil( $total_posts / (int) $query_args['posts_per_page'] );
316
+
317
+        $response = rest_ensure_response( $posts );
318
+        $response->header( 'X-WP-Total', (int) $total_posts );
319
+        $response->header( 'X-WP-TotalPages', (int) $max_pages );
320
+
321
+        $request_params = $request->get_query_params();
322
+        $base = add_query_arg( $request_params, rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );
323
+
324
+        if ( $page > 1 ) {
325
+            $prev_page = $page - 1;
326
+            if ( $prev_page > $max_pages ) {
327
+                $prev_page = $max_pages;
328
+            }
329
+            $prev_link = add_query_arg( 'page', $prev_page, $base );
330
+            $response->link_header( 'prev', $prev_link );
331
+        }
332
+        if ( $max_pages > $page ) {
333
+            $next_page = $page + 1;
334
+            $next_link = add_query_arg( 'page', $next_page, $base );
335
+            $response->link_header( 'next', $next_link );
336
+        }
337
+
338
+        return $response;
339
+    }
340
+
341
+    /**
342
+     * Delete a single item.
343
+     *
344
+     * @param WP_REST_Request $request Full details about the request.
345
+     * @return WP_REST_Response|WP_Error
346
+     */
347
+    public function delete_item( $request ) {
348
+
349
+        // Fetch the item.
350
+        $item = $this->get_object( $request['id'] );
351
+        if ( is_wp_error( $item ) ) {
352
+            return $item;
353
+        }
354
+
355
+        $supports_trash = EMPTY_TRASH_DAYS > 0;
356
+        $force          = $supports_trash && (bool) $request['force'];
357
+
358
+        if ( ! $this->check_post_permissions( 'delete', $item->ID ) ) {
359
+            return new WP_Error( "cannot_delete", __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
360
+        }
361
+
362
+        $request->set_param( 'context', 'edit' );
363
+        $response = $this->prepare_item_for_response( $item, $request );
364
+
365
+        if ( ! wp_delete_post( $item->ID, $force ) ) {
366
+            return new WP_Error( 'rest_cannot_delete', sprintf( __( 'The resource cannot be deleted.', 'invoicing' ), $this->post_type ), array( 'status' => 500 ) );
367
+        }
368
+
369
+        return $response;
370
+    }
371
+
372
+    /**
373
+     * Prepare links for the request.
374
+     *
375
+     * @param GetPaid_Data    $object GetPaid_Data object.
376
+     * @return array Links for the given object.
377
+     */
378
+    protected function prepare_links( $object ) {
379
+
380
+        $links = parent::prepare_links( $object );
381
+
382
+        if ( is_callable( array( $object, 'get_user_id' ) ) ) {
383
+            $links['user'] = array(
384
+                'href'       => rest_url( 'wp/v2/users/' . call_user_func(  array( $object, 'get_user_id' )  ) ),
385
+                'embeddable' => true,
386
+            );
387
+        }
388
+
389
+        if ( is_callable( array( $object, 'get_owner' ) ) ) {
390
+            $links['owner']  = array(
391
+                'href'       => rest_url( 'wp/v2/users/' . call_user_func(  array( $object, 'get_owner' )  ) ),
392
+                'embeddable' => true,
393
+            );
394
+        }
395
+
396
+        if ( is_callable( array( $object, 'get_parent_id' ) ) && call_user_func(  array( $object, 'get_parent_id' )  ) ) {
397
+            $links['parent']  = array(
398
+                'href'       => rest_url( "$this->namespace/$this->rest_base/" . call_user_func(  array( $object, 'get_parent_id' )  ) ),
399
+                'embeddable' => true,
400
+            );
401
+        }
402
+
403
+        return $links;
404
+    }
405
+
406
+    /**
407
+     * Determine the allowed query_vars for a get_items() response and
408
+     * prepare for WP_Query.
409
+     *
410
+     * @param array           $prepared_args Prepared arguments.
411
+     * @param WP_REST_Request $request Request object.
412
+     * @return array          $query_args
413
+     */
414
+    protected function prepare_items_query( $prepared_args = array(), $request = null ) {
415
+
416
+        $valid_vars = array_flip( $this->get_allowed_query_vars() );
417
+        $query_args = array();
418
+        foreach ( $valid_vars as $var => $index ) {
419
+            if ( isset( $prepared_args[ $var ] ) ) {
420
+                $query_args[ $var ] = apply_filters( "getpaid_rest_query_var-{$var}", $prepared_args[ $var ], $index );
421
+            }
422
+        }
423
+
424
+        $query_args['ignore_sticky_posts'] = true;
425
+
426
+        if ( 'include' === $query_args['orderby'] ) {
427
+            $query_args['orderby'] = 'post__in';
428
+        } elseif ( 'id' === $query_args['orderby'] ) {
429
+            $query_args['orderby'] = 'ID'; // ID must be capitalized.
430
+        } elseif ( 'slug' === $query_args['orderby'] ) {
431
+            $query_args['orderby'] = 'name';
432
+        }
433
+
434
+        return apply_filters( 'getpaid_rest_prepare_items_query', $query_args, $request, $this );
435
+
436
+    }
437
+
438
+    /**
439
+     * Get all the WP Query vars that are allowed for the API request.
440
+     *
441
+     * @return array
442
+     */
443
+    protected function get_allowed_query_vars() {
444
+        global $wp;
445
+
446
+        /**
447
+         * Filter the publicly allowed query vars.
448
+         *
449
+         * Allows adjusting of the default query vars that are made public.
450
+         *
451
+         * @param array  Array of allowed WP_Query query vars.
452
+         */
453
+        $valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
454
+
455
+        $post_type_obj = get_post_type_object( $this->post_type );
456
+        if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
457
+            $private = apply_filters( 'getpaid_rest_private_query_vars', $wp->private_query_vars );
458
+            $valid_vars = array_merge( $valid_vars, $private );
459
+        }
460
+
461
+        // Define our own in addition to WP's normal vars.
462
+        $rest_valid = array(
463
+            'post_status',
464
+            'date_query',
465
+            'ignore_sticky_posts',
466
+            'offset',
467
+            'post__in',
468
+            'post__not_in',
469
+            'post_parent',
470
+            'post_parent__in',
471
+            'post_parent__not_in',
472
+            'posts_per_page',
473
+            'meta_query',
474
+            'tax_query',
475
+            'meta_key',
476
+            'meta_value',
477
+            'meta_compare',
478
+            'meta_value_num',
479
+        );
480
+        $valid_vars = array_merge( $valid_vars, $rest_valid );
481
+
482
+        // Filter allowed query vars for the REST API.
483
+        $valid_vars = apply_filters( 'getpaid_rest_query_vars', $valid_vars, $this );
484
+
485
+        return $valid_vars;
486
+    }
487
+
488
+    /**
489
+     * Get the query params for collections of attachments.
490
+     *
491
+     * @return array
492
+     */
493
+    public function get_collection_params() {
494
+
495
+        return array_merge(
496
+
497
+            parent::get_collection_params(),
498
+
499
+            array(
500
+                'status' => array(
501
+                    'default'           => $this->get_post_statuses(),
502
+                    'description'       => __( 'Limit result set to resources assigned one or more statuses.', 'invoicing' ),
503
+                    'type'              => array( 'array', 'string' ),
504
+                    'items'             => array(
505
+                        'enum'          => $this->get_post_statuses(),
506
+                        'type'          => 'string',
507
+                    ),
508
+                    'validate_callback' => 'rest_validate_request_arg',
509
+                    'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
510
+                ),
511
+                'after' => array(
512
+                    'description'        => __( 'Limit response to resources created after a given ISO8601 compliant date.', 'invoicing' ),
513
+                    'type'               => 'string',
514
+                    'format'             => 'string',
515
+                    'validate_callback'  => 'rest_validate_request_arg',
516
+                    'sanitize_callback'  => 'sanitize_text_field',
517
+                ),
518
+                'before' => array(
519
+                    'description'        => __( 'Limit response to resources created before a given ISO8601 compliant date.', 'invoicing' ),
520
+                    'type'               => 'string',
521
+                    'format'             => 'string',
522
+                    'validate_callback'  => 'rest_validate_request_arg',
523
+                    'sanitize_callback'  => 'sanitize_text_field',
524
+                ),
525
+                'exclude' => array(
526
+                    'description'       => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
527
+                    'type'              => 'array',
528
+                    'items'             => array(
529
+                        'type'          => 'integer',
530
+                    ),
531
+                    'default'           => array(),
532
+                    'sanitize_callback' => 'wp_parse_id_list',
533
+                    'validate_callback' => 'rest_validate_request_arg',
534
+                ),
535
+                'include' => array(
536
+                    'description'       => __( 'Limit result set to specific ids.', 'invoicing' ),
537
+                    'type'              => 'array',
538
+                    'items'             => array(
539
+                        'type'          => 'integer',
540
+                    ),
541
+                    'default'           => array(),
542
+                    'sanitize_callback' => 'wp_parse_id_list',
543
+                    'validate_callback' => 'rest_validate_request_arg',
544
+                ),
545
+                'offset' => array(
546
+                    'description'        => __( 'Offset the result set by a specific number of items.', 'invoicing' ),
547
+                    'type'               => 'integer',
548
+                    'sanitize_callback'  => 'absint',
549
+                    'validate_callback'  => 'rest_validate_request_arg',
550
+                ),
551
+                'order' => array(
552
+                    'description'        => __( 'Order sort attribute ascending or descending.', 'invoicing' ),
553
+                    'type'               => 'string',
554
+                    'default'            => 'desc',
555
+                    'enum'               => array( 'asc', 'desc' ),
556
+                    'validate_callback'  => 'rest_validate_request_arg',
557
+                ),
558
+                'orderby' => array(
559
+                    'description'        => __( 'Sort collection by object attribute.', 'invoicing' ),
560
+                    'type'               => 'string',
561
+                    'default'            => 'date',
562
+                    'enum'               => array(
563
+                        'date',
564
+                        'id',
565
+                        'include',
566
+                        'title',
567
+                        'slug',
568
+                        'modified',
569
+                    ),
570
+                    'validate_callback'  => 'rest_validate_request_arg',
571
+                ),
572
+            )
573
+        );
574
+    }
575
+
576
+    /**
577
+     * Retrieves the items's schema, conforming to JSON Schema.
578
+     *
579
+     * @since 1.0.19
580
+     *
581
+     * @return array Item schema data.
582
+     */
583
+    public function get_item_schema() {
584
+
585
+        // Maybe retrieve the schema from cache.
586
+        if ( ! empty( $this->schema ) ) {
587
+            return $this->add_additional_fields_schema( $this->schema );
588
+        }
589
+
590
+        $type   = str_replace( 'wpi_', '', $this->post_type );
591
+        $schema = array(
592
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
593
+            'title'      => $this->post_type,
594
+            'type'       => 'object',
595
+            'properties' => wpinv_get_data( "$type-schema" ),
596
+        );
597
+
598
+        // Filters the invoice schema for the REST API.
599 599
         $schema = apply_filters( "wpinv_rest_{$type}_schema", $schema );
600 600
 
601
-		// Cache the invoice schema.
602
-		$this->schema = $schema;
603
-
604
-		return $this->add_additional_fields_schema( $this->schema );
605
-	}
606
-
607
-	/**
608
-	 * Sanitizes and validates the list of post statuses.
609
-	 *
610
-	 * @since 1.0.13
611
-	 *
612
-	 * @param string|array    $statuses  One or more post statuses.
613
-	 * @param WP_REST_Request $request   Full details about the request.
614
-	 * @param string          $parameter Additional parameter to pass to validation.
615
-	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
616
-	 */
617
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
618
-		return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
619
-	}
620
-
621
-	/**
622
-	 * Retrieves a valid list of post statuses.
623
-	 *
624
-	 * @since 1.0.19
625
-	 *
626
-	 * @return array A list of registered item statuses.
627
-	 */
628
-	public function get_post_statuses() {
629
-		return get_post_stati();
630
-	}
631
-
632
-	/**
633
-	 * Checks if a key should be included in a response.
634
-	 *
635
-	 * @since  1.0.19
636
-	 * @param  GetPaid_Data $object  Data object.
637
-	 * @param  string       $field_key The key to check for.
638
-	 * @return bool
639
-	 */
640
-	public function object_supports_field( $object, $field_key ) {
641
-		$supports = parent::object_supports_field( $object, $field_key );
642
-		return apply_filters( "getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key );
643
-	}
601
+        // Cache the invoice schema.
602
+        $this->schema = $schema;
603
+
604
+        return $this->add_additional_fields_schema( $this->schema );
605
+    }
606
+
607
+    /**
608
+     * Sanitizes and validates the list of post statuses.
609
+     *
610
+     * @since 1.0.13
611
+     *
612
+     * @param string|array    $statuses  One or more post statuses.
613
+     * @param WP_REST_Request $request   Full details about the request.
614
+     * @param string          $parameter Additional parameter to pass to validation.
615
+     * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
616
+     */
617
+    public function sanitize_post_statuses( $statuses, $request, $parameter ) {
618
+        return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
619
+    }
620
+
621
+    /**
622
+     * Retrieves a valid list of post statuses.
623
+     *
624
+     * @since 1.0.19
625
+     *
626
+     * @return array A list of registered item statuses.
627
+     */
628
+    public function get_post_statuses() {
629
+        return get_post_stati();
630
+    }
631
+
632
+    /**
633
+     * Checks if a key should be included in a response.
634
+     *
635
+     * @since  1.0.19
636
+     * @param  GetPaid_Data $object  Data object.
637
+     * @param  string       $field_key The key to check for.
638
+     * @return bool
639
+     */
640
+    public function object_supports_field( $object, $field_key ) {
641
+        $supports = parent::object_supports_field( $object, $field_key );
642
+        return apply_filters( "getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key );
643
+    }
644 644
 
645 645
 }
Please login to merge, or discard this patch.
Spacing   +127 added lines, -127 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  * @version 1.0.19
9 9
  */
10 10
 
11
-defined( 'ABSPATH' ) || exit;
11
+defined('ABSPATH') || exit;
12 12
 
13 13
 /**
14 14
  * GetPaid REST Posts controller class.
@@ -38,9 +38,9 @@  discard block
 block discarded – undo
38 38
 	 *
39 39
 	 * @see register_rest_route()
40 40
 	 */
41
-	public function register_namespace_routes( $namespace ) {
41
+	public function register_namespace_routes($namespace) {
42 42
 
43
-		parent::register_namespace_routes( $namespace );
43
+		parent::register_namespace_routes($namespace);
44 44
 
45 45
 		register_rest_route(
46 46
 			$namespace,
@@ -48,11 +48,11 @@  discard block
 block discarded – undo
48 48
 			array(
49 49
 				array(
50 50
 					'methods'             => WP_REST_Server::EDITABLE,
51
-					'callback'            => array( $this, 'batch_items' ),
52
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
53
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
51
+					'callback'            => array($this, 'batch_items'),
52
+					'permission_callback' => array($this, 'batch_items_permissions_check'),
53
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
54 54
 				),
55
-				'schema' => array( $this, 'get_public_batch_schema' ),
55
+				'schema' => array($this, 'get_public_batch_schema'),
56 56
 			)
57 57
 		);
58 58
 
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
 	 * @param int    $object_id Post ID.
67 67
 	 * @return bool
68 68
 	 */
69
-	public function check_post_permissions( $context = 'read', $object_id = 0 ) {
69
+	public function check_post_permissions($context = 'read', $object_id = 0) {
70 70
 
71 71
 		$contexts = array(
72 72
 			'read'   => 'read_private_posts',
@@ -76,11 +76,11 @@  discard block
 block discarded – undo
76 76
 			'batch'  => 'edit_others_posts',
77 77
 		);
78 78
 
79
-		$cap              = $contexts[ $context ];
80
-		$post_type_object = get_post_type_object( $this->post_type );
81
-		$permission       = current_user_can( $post_type_object->cap->$cap, $object_id );
79
+		$cap              = $contexts[$context];
80
+		$post_type_object = get_post_type_object($this->post_type);
81
+		$permission       = current_user_can($post_type_object->cap->$cap, $object_id);
82 82
 
83
-		return apply_filters( 'getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type );
83
+		return apply_filters('getpaid_rest_check_permissions', $permission, $context, $object_id, $this->post_type);
84 84
 	}
85 85
 
86 86
 	/**
@@ -89,8 +89,8 @@  discard block
 block discarded – undo
89 89
 	 * @param  WP_REST_Request $request Full details about the request.
90 90
 	 * @return WP_Error|boolean
91 91
 	 */
92
-	public function get_items_permissions_check( $request ) {
93
-		return $this->check_post_permissions() ? true : new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
92
+	public function get_items_permissions_check($request) {
93
+		return $this->check_post_permissions() ? true : new WP_Error('rest_cannot_view', __('Sorry, you cannot list resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
94 94
 	}
95 95
 
96 96
 	/**
@@ -99,8 +99,8 @@  discard block
 block discarded – undo
99 99
 	 * @param  WP_REST_Request $request Full details about the request.
100 100
 	 * @return WP_Error|boolean
101 101
 	 */
102
-	public function create_item_permissions_check( $request ) {
103
-		return $this->check_post_permissions( 'create' ) ? true : new WP_Error( 'rest_cannot_create', __( 'Sorry, you are not allowed to create resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
102
+	public function create_item_permissions_check($request) {
103
+		return $this->check_post_permissions('create') ? true : new WP_Error('rest_cannot_create', __('Sorry, you are not allowed to create resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
104 104
 	}
105 105
 
106 106
 	/**
@@ -109,11 +109,11 @@  discard block
 block discarded – undo
109 109
 	 * @param  WP_REST_Request $request Full details about the request.
110 110
 	 * @return WP_Error|boolean
111 111
 	 */
112
-	public function get_item_permissions_check( $request ) {
113
-		$post = get_post( (int) $request['id'] );
112
+	public function get_item_permissions_check($request) {
113
+		$post = get_post((int) $request['id']);
114 114
 
115
-		if ( $post && ! $this->check_post_permissions( 'read', $post->ID ) ) {
116
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot view this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
115
+		if ($post && !$this->check_post_permissions('read', $post->ID)) {
116
+			return new WP_Error('rest_cannot_view', __('Sorry, you cannot view this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
117 117
 		}
118 118
 
119 119
 		return true;
@@ -125,11 +125,11 @@  discard block
 block discarded – undo
125 125
 	 * @param  WP_REST_Request $request Full details about the request.
126 126
 	 * @return WP_Error|boolean
127 127
 	 */
128
-	public function update_item_permissions_check( $request ) {
129
-		$post = get_post( (int) $request['id'] );
128
+	public function update_item_permissions_check($request) {
129
+		$post = get_post((int) $request['id']);
130 130
 
131
-		if ( $post && ! $this->check_post_permissions( 'edit', $post->ID ) ) {
132
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
131
+		if ($post && !$this->check_post_permissions('edit', $post->ID)) {
132
+			return new WP_Error('rest_cannot_edit', __('Sorry, you are not allowed to edit this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
133 133
 		}
134 134
 
135 135
 		return true;
@@ -141,11 +141,11 @@  discard block
 block discarded – undo
141 141
 	 * @param  WP_REST_Request $request Full details about the request.
142 142
 	 * @return bool|WP_Error
143 143
 	 */
144
-	public function delete_item_permissions_check( $request ) {
145
-		$post = get_post( (int) $request['id'] );
144
+	public function delete_item_permissions_check($request) {
145
+		$post = get_post((int) $request['id']);
146 146
 
147
-		if ( $post && ! $this->check_post_permissions( 'delete', $post->ID ) ) {
148
-			return new WP_Error( 'rest_cannot_delete', __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
147
+		if ($post && !$this->check_post_permissions('delete', $post->ID)) {
148
+			return new WP_Error('rest_cannot_delete', __('Sorry, you are not allowed to delete this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
149 149
 		}
150 150
 
151 151
 		return true;
@@ -158,15 +158,15 @@  discard block
 block discarded – undo
158 158
 	 *
159 159
 	 * @return boolean|WP_Error
160 160
 	 */
161
-	public function batch_items_permissions_check( $request ) {
162
-		return $this->check_post_permissions( 'batch' ) ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
161
+	public function batch_items_permissions_check($request) {
162
+		return $this->check_post_permissions('batch') ? true : new WP_Error('rest_cannot_batch', __('Sorry, you are not allowed to batch manipulate this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
163 163
 	}
164 164
 
165 165
 	/**
166 166
 	 * @deprecated
167 167
 	 */
168
-	public function get_post( $object_id ) {
169
-		return $this->get_object( $object_id );
168
+	public function get_post($object_id) {
169
+		return $this->get_object($object_id);
170 170
     }
171 171
 
172 172
 	/**
@@ -175,14 +175,14 @@  discard block
 block discarded – undo
175 175
 	 * @param WP_REST_Request $request Full details about the request.
176 176
 	 * @return WP_Error|WP_REST_Response
177 177
 	 */
178
-	public function get_item( $request ) {
178
+	public function get_item($request) {
179 179
 
180 180
 		// Fetch item.
181
-		$response = parent::get_item( $request );
181
+		$response = parent::get_item($request);
182 182
 
183 183
 		// (Maybe) add a link to the html pagee.
184
-		if ( $this->public && ! is_wp_error( $response ) ) {
185
-			$response->link_header( 'alternate', get_permalink( $this->data_object->get_id() ), array( 'type' => 'text/html' ) );
184
+		if ($this->public && !is_wp_error($response)) {
185
+			$response->link_header('alternate', get_permalink($this->data_object->get_id()), array('type' => 'text/html'));
186 186
 		}
187 187
 
188 188
 		return $response;
@@ -194,13 +194,13 @@  discard block
 block discarded – undo
194 194
 	 * @param WP_REST_Request $request Full details about the request.
195 195
 	 * @return WP_Error|WP_REST_Response
196 196
 	 */
197
-	public function create_item( $request ) {
197
+	public function create_item($request) {
198 198
 
199 199
 		// Create item.
200
-		$response = parent::create_item( $request );
200
+		$response = parent::create_item($request);
201 201
 
202 202
 		// Fire a hook after an item is created.
203
-		if ( ! is_wp_error( $response ) ) {
203
+		if (!is_wp_error($response)) {
204 204
 
205 205
 			/**
206 206
 			 * Fires after a single item is created or updated via the REST API.
@@ -209,7 +209,7 @@  discard block
 block discarded – undo
209 209
 			 * @param WP_REST_Request $request   Request object.
210 210
 			 * @param boolean         $creating  True when creating item, false when updating.
211 211
 			 */
212
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true );
212
+			do_action("getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, true);
213 213
 
214 214
 		}
215 215
 
@@ -223,13 +223,13 @@  discard block
 block discarded – undo
223 223
 	 * @param WP_REST_Request $request Full details about the request.
224 224
 	 * @return WP_Error|WP_REST_Response
225 225
 	 */
226
-	public function update_item( $request ) {
226
+	public function update_item($request) {
227 227
 
228 228
 		// Create item.
229
-		$response = parent::update_item( $request );
229
+		$response = parent::update_item($request);
230 230
 
231 231
 		// Fire a hook after an item is created.
232
-		if ( ! is_wp_error( $response ) ) {
232
+		if (!is_wp_error($response)) {
233 233
 
234 234
 			/**
235 235
 			 * Fires after a single item is created or updated via the REST API.
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
 			 * @param WP_REST_Request $request   Request object.
239 239
 			 * @param boolean         $creating  True when creating item, false when updating.
240 240
 			 */
241
-			do_action( "getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false );
241
+			do_action("getpaid_rest_insert_{$this->post_type}", $this->data_object, $request, false);
242 242
 
243 243
 		}
244 244
 
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
 	 * @param WP_REST_Request $request Full details about the request.
253 253
 	 * @return WP_Error|WP_REST_Response
254 254
 	 */
255
-	public function get_items( $request ) {
255
+	public function get_items($request) {
256 256
 
257 257
 		$args                         = array();
258 258
 		$args['offset']               = $request['offset'];
@@ -266,17 +266,17 @@  discard block
 block discarded – undo
266 266
 		$args['post_parent__in']      = $request['parent'];
267 267
 		$args['post_parent__not_in']  = $request['parent_exclude'];
268 268
 		$args['s']                    = $request['search'];
269
-		$args['post_status']          = wpinv_parse_list( $request['status'] );
269
+		$args['post_status']          = wpinv_parse_list($request['status']);
270 270
 
271 271
 		$args['date_query'] = array();
272 272
 
273 273
 		// Set before into date query. Date query must be specified as an array of an array.
274
-		if ( isset( $request['before'] ) ) {
274
+		if (isset($request['before'])) {
275 275
 			$args['date_query'][0]['before'] = $request['before'];
276 276
 		}
277 277
 
278 278
 		// Set after into date query. Date query must be specified as an array of an array.
279
-		if ( isset( $request['after'] ) ) {
279
+		if (isset($request['after'])) {
280 280
 			$args['date_query'][0]['after'] = $request['after'];
281 281
 		}
282 282
 
@@ -285,54 +285,54 @@  discard block
 block discarded – undo
285 285
 		$args['fields']    = 'ids';
286 286
 
287 287
 		// Filter the query arguments for a request.
288
-		$args       = apply_filters( "getpaid_rest_{$this->post_type}_query", $args, $request );
289
-		$query_args = $this->prepare_items_query( $args, $request );
288
+		$args       = apply_filters("getpaid_rest_{$this->post_type}_query", $args, $request);
289
+		$query_args = $this->prepare_items_query($args, $request);
290 290
 
291 291
 		$posts_query = new WP_Query();
292
-		$query_result = $posts_query->query( $query_args );
292
+		$query_result = $posts_query->query($query_args);
293 293
 
294 294
 		$posts = array();
295
-		foreach ( $query_result as $post_id ) {
296
-			if ( ! $this->check_post_permissions( 'read', $post_id ) ) {
295
+		foreach ($query_result as $post_id) {
296
+			if (!$this->check_post_permissions('read', $post_id)) {
297 297
 				continue;
298 298
 			}
299 299
 
300
-			$data    = $this->prepare_item_for_response( $this->get_object( $post_id ), $request );
301
-			$posts[] = $this->prepare_response_for_collection( $data );
300
+			$data    = $this->prepare_item_for_response($this->get_object($post_id), $request);
301
+			$posts[] = $this->prepare_response_for_collection($data);
302 302
 		}
303 303
 
304 304
 		$page        = (int) $query_args['paged'];
305 305
 		$total_posts = $posts_query->found_posts;
306 306
 
307
-		if ( $total_posts < 1 ) {
307
+		if ($total_posts < 1) {
308 308
 			// Out-of-bounds, run the query again without LIMIT for total count.
309
-			unset( $query_args['paged'] );
309
+			unset($query_args['paged']);
310 310
 			$count_query = new WP_Query();
311
-			$count_query->query( $query_args );
311
+			$count_query->query($query_args);
312 312
 			$total_posts = $count_query->found_posts;
313 313
 		}
314 314
 
315
-		$max_pages = ceil( $total_posts / (int) $query_args['posts_per_page'] );
315
+		$max_pages = ceil($total_posts / (int) $query_args['posts_per_page']);
316 316
 
317
-		$response = rest_ensure_response( $posts );
318
-		$response->header( 'X-WP-Total', (int) $total_posts );
319
-		$response->header( 'X-WP-TotalPages', (int) $max_pages );
317
+		$response = rest_ensure_response($posts);
318
+		$response->header('X-WP-Total', (int) $total_posts);
319
+		$response->header('X-WP-TotalPages', (int) $max_pages);
320 320
 
321 321
 		$request_params = $request->get_query_params();
322
-		$base = add_query_arg( $request_params, rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ) );
322
+		$base = add_query_arg($request_params, rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)));
323 323
 
324
-		if ( $page > 1 ) {
324
+		if ($page > 1) {
325 325
 			$prev_page = $page - 1;
326
-			if ( $prev_page > $max_pages ) {
326
+			if ($prev_page > $max_pages) {
327 327
 				$prev_page = $max_pages;
328 328
 			}
329
-			$prev_link = add_query_arg( 'page', $prev_page, $base );
330
-			$response->link_header( 'prev', $prev_link );
329
+			$prev_link = add_query_arg('page', $prev_page, $base);
330
+			$response->link_header('prev', $prev_link);
331 331
 		}
332
-		if ( $max_pages > $page ) {
332
+		if ($max_pages > $page) {
333 333
 			$next_page = $page + 1;
334
-			$next_link = add_query_arg( 'page', $next_page, $base );
335
-			$response->link_header( 'next', $next_link );
334
+			$next_link = add_query_arg('page', $next_page, $base);
335
+			$response->link_header('next', $next_link);
336 336
 		}
337 337
 
338 338
 		return $response;
@@ -344,26 +344,26 @@  discard block
 block discarded – undo
344 344
 	 * @param WP_REST_Request $request Full details about the request.
345 345
 	 * @return WP_REST_Response|WP_Error
346 346
 	 */
347
-	public function delete_item( $request ) {
347
+	public function delete_item($request) {
348 348
 
349 349
 		// Fetch the item.
350
-		$item = $this->get_object( $request['id'] );
351
-		if ( is_wp_error( $item ) ) {
350
+		$item = $this->get_object($request['id']);
351
+		if (is_wp_error($item)) {
352 352
 			return $item;
353 353
 		}
354 354
 
355 355
 		$supports_trash = EMPTY_TRASH_DAYS > 0;
356 356
 		$force          = $supports_trash && (bool) $request['force'];
357 357
 
358
-		if ( ! $this->check_post_permissions( 'delete', $item->ID ) ) {
359
-			return new WP_Error( "cannot_delete", __( 'Sorry, you are not allowed to delete this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
358
+		if (!$this->check_post_permissions('delete', $item->ID)) {
359
+			return new WP_Error("cannot_delete", __('Sorry, you are not allowed to delete this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
360 360
 		}
361 361
 
362
-		$request->set_param( 'context', 'edit' );
363
-		$response = $this->prepare_item_for_response( $item, $request );
362
+		$request->set_param('context', 'edit');
363
+		$response = $this->prepare_item_for_response($item, $request);
364 364
 
365
-		if ( ! wp_delete_post( $item->ID, $force ) ) {
366
-			return new WP_Error( 'rest_cannot_delete', sprintf( __( 'The resource cannot be deleted.', 'invoicing' ), $this->post_type ), array( 'status' => 500 ) );
365
+		if (!wp_delete_post($item->ID, $force)) {
366
+			return new WP_Error('rest_cannot_delete', sprintf(__('The resource cannot be deleted.', 'invoicing'), $this->post_type), array('status' => 500));
367 367
 		}
368 368
 
369 369
 		return $response;
@@ -375,27 +375,27 @@  discard block
 block discarded – undo
375 375
 	 * @param GetPaid_Data    $object GetPaid_Data object.
376 376
 	 * @return array Links for the given object.
377 377
 	 */
378
-	protected function prepare_links( $object ) {
378
+	protected function prepare_links($object) {
379 379
 
380
-		$links = parent::prepare_links( $object );
380
+		$links = parent::prepare_links($object);
381 381
 
382
-		if ( is_callable( array( $object, 'get_user_id' ) ) ) {
382
+		if (is_callable(array($object, 'get_user_id'))) {
383 383
 			$links['user'] = array(
384
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func(  array( $object, 'get_user_id' )  ) ),
384
+				'href'       => rest_url('wp/v2/users/' . call_user_func(array($object, 'get_user_id'))),
385 385
 				'embeddable' => true,
386 386
 			);
387 387
 		}
388 388
 
389
-		if ( is_callable( array( $object, 'get_owner' ) ) ) {
390
-			$links['owner']  = array(
391
-				'href'       => rest_url( 'wp/v2/users/' . call_user_func(  array( $object, 'get_owner' )  ) ),
389
+		if (is_callable(array($object, 'get_owner'))) {
390
+			$links['owner'] = array(
391
+				'href'       => rest_url('wp/v2/users/' . call_user_func(array($object, 'get_owner'))),
392 392
 				'embeddable' => true,
393 393
 			);
394 394
 		}
395 395
 
396
-		if ( is_callable( array( $object, 'get_parent_id' ) ) && call_user_func(  array( $object, 'get_parent_id' )  ) ) {
397
-			$links['parent']  = array(
398
-				'href'       => rest_url( "$this->namespace/$this->rest_base/" . call_user_func(  array( $object, 'get_parent_id' )  ) ),
396
+		if (is_callable(array($object, 'get_parent_id')) && call_user_func(array($object, 'get_parent_id'))) {
397
+			$links['parent'] = array(
398
+				'href'       => rest_url("$this->namespace/$this->rest_base/" . call_user_func(array($object, 'get_parent_id'))),
399 399
 				'embeddable' => true,
400 400
 			);
401 401
 		}
@@ -411,27 +411,27 @@  discard block
 block discarded – undo
411 411
 	 * @param WP_REST_Request $request Request object.
412 412
 	 * @return array          $query_args
413 413
 	 */
414
-	protected function prepare_items_query( $prepared_args = array(), $request = null ) {
414
+	protected function prepare_items_query($prepared_args = array(), $request = null) {
415 415
 
416
-		$valid_vars = array_flip( $this->get_allowed_query_vars() );
416
+		$valid_vars = array_flip($this->get_allowed_query_vars());
417 417
 		$query_args = array();
418
-		foreach ( $valid_vars as $var => $index ) {
419
-			if ( isset( $prepared_args[ $var ] ) ) {
420
-				$query_args[ $var ] = apply_filters( "getpaid_rest_query_var-{$var}", $prepared_args[ $var ], $index );
418
+		foreach ($valid_vars as $var => $index) {
419
+			if (isset($prepared_args[$var])) {
420
+				$query_args[$var] = apply_filters("getpaid_rest_query_var-{$var}", $prepared_args[$var], $index);
421 421
 			}
422 422
 		}
423 423
 
424 424
 		$query_args['ignore_sticky_posts'] = true;
425 425
 
426
-		if ( 'include' === $query_args['orderby'] ) {
426
+		if ('include' === $query_args['orderby']) {
427 427
 			$query_args['orderby'] = 'post__in';
428
-		} elseif ( 'id' === $query_args['orderby'] ) {
428
+		} elseif ('id' === $query_args['orderby']) {
429 429
 			$query_args['orderby'] = 'ID'; // ID must be capitalized.
430
-		} elseif ( 'slug' === $query_args['orderby'] ) {
430
+		} elseif ('slug' === $query_args['orderby']) {
431 431
 			$query_args['orderby'] = 'name';
432 432
 		}
433 433
 
434
-		return apply_filters( 'getpaid_rest_prepare_items_query', $query_args, $request, $this );
434
+		return apply_filters('getpaid_rest_prepare_items_query', $query_args, $request, $this);
435 435
 
436 436
 	}
437 437
 
@@ -450,12 +450,12 @@  discard block
 block discarded – undo
450 450
 		 *
451 451
 		 * @param array  Array of allowed WP_Query query vars.
452 452
 		 */
453
-		$valid_vars = apply_filters( 'query_vars', $wp->public_query_vars );
453
+		$valid_vars = apply_filters('query_vars', $wp->public_query_vars);
454 454
 
455
-		$post_type_obj = get_post_type_object( $this->post_type );
456
-		if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
457
-			$private = apply_filters( 'getpaid_rest_private_query_vars', $wp->private_query_vars );
458
-			$valid_vars = array_merge( $valid_vars, $private );
455
+		$post_type_obj = get_post_type_object($this->post_type);
456
+		if (current_user_can($post_type_obj->cap->edit_posts)) {
457
+			$private = apply_filters('getpaid_rest_private_query_vars', $wp->private_query_vars);
458
+			$valid_vars = array_merge($valid_vars, $private);
459 459
 		}
460 460
 
461 461
 		// Define our own in addition to WP's normal vars.
@@ -477,10 +477,10 @@  discard block
 block discarded – undo
477 477
 			'meta_compare',
478 478
 			'meta_value_num',
479 479
 		);
480
-		$valid_vars = array_merge( $valid_vars, $rest_valid );
480
+		$valid_vars = array_merge($valid_vars, $rest_valid);
481 481
 
482 482
 		// Filter allowed query vars for the REST API.
483
-		$valid_vars = apply_filters( 'getpaid_rest_query_vars', $valid_vars, $this );
483
+		$valid_vars = apply_filters('getpaid_rest_query_vars', $valid_vars, $this);
484 484
 
485 485
 		return $valid_vars;
486 486
 	}
@@ -499,31 +499,31 @@  discard block
 block discarded – undo
499 499
 			array(
500 500
 				'status' => array(
501 501
 					'default'           => $this->get_post_statuses(),
502
-					'description'       => __( 'Limit result set to resources assigned one or more statuses.', 'invoicing' ),
503
-					'type'              => array( 'array', 'string' ),
502
+					'description'       => __('Limit result set to resources assigned one or more statuses.', 'invoicing'),
503
+					'type'              => array('array', 'string'),
504 504
 					'items'             => array(
505 505
 						'enum'          => $this->get_post_statuses(),
506 506
 						'type'          => 'string',
507 507
 					),
508 508
 					'validate_callback' => 'rest_validate_request_arg',
509
-					'sanitize_callback' => array( $this, 'sanitize_post_statuses' ),
509
+					'sanitize_callback' => array($this, 'sanitize_post_statuses'),
510 510
 				),
511 511
 				'after' => array(
512
-					'description'        => __( 'Limit response to resources created after a given ISO8601 compliant date.', 'invoicing' ),
512
+					'description'        => __('Limit response to resources created after a given ISO8601 compliant date.', 'invoicing'),
513 513
 					'type'               => 'string',
514 514
 					'format'             => 'string',
515 515
 					'validate_callback'  => 'rest_validate_request_arg',
516 516
 					'sanitize_callback'  => 'sanitize_text_field',
517 517
 				),
518 518
 				'before' => array(
519
-					'description'        => __( 'Limit response to resources created before a given ISO8601 compliant date.', 'invoicing' ),
519
+					'description'        => __('Limit response to resources created before a given ISO8601 compliant date.', 'invoicing'),
520 520
 					'type'               => 'string',
521 521
 					'format'             => 'string',
522 522
 					'validate_callback'  => 'rest_validate_request_arg',
523 523
 					'sanitize_callback'  => 'sanitize_text_field',
524 524
 				),
525 525
 				'exclude' => array(
526
-					'description'       => __( 'Ensure result set excludes specific IDs.', 'invoicing' ),
526
+					'description'       => __('Ensure result set excludes specific IDs.', 'invoicing'),
527 527
 					'type'              => 'array',
528 528
 					'items'             => array(
529 529
 						'type'          => 'integer',
@@ -533,7 +533,7 @@  discard block
 block discarded – undo
533 533
 					'validate_callback' => 'rest_validate_request_arg',
534 534
 				),
535 535
 				'include' => array(
536
-					'description'       => __( 'Limit result set to specific ids.', 'invoicing' ),
536
+					'description'       => __('Limit result set to specific ids.', 'invoicing'),
537 537
 					'type'              => 'array',
538 538
 					'items'             => array(
539 539
 						'type'          => 'integer',
@@ -543,20 +543,20 @@  discard block
 block discarded – undo
543 543
 					'validate_callback' => 'rest_validate_request_arg',
544 544
 				),
545 545
 				'offset' => array(
546
-					'description'        => __( 'Offset the result set by a specific number of items.', 'invoicing' ),
546
+					'description'        => __('Offset the result set by a specific number of items.', 'invoicing'),
547 547
 					'type'               => 'integer',
548 548
 					'sanitize_callback'  => 'absint',
549 549
 					'validate_callback'  => 'rest_validate_request_arg',
550 550
 				),
551 551
 				'order' => array(
552
-					'description'        => __( 'Order sort attribute ascending or descending.', 'invoicing' ),
552
+					'description'        => __('Order sort attribute ascending or descending.', 'invoicing'),
553 553
 					'type'               => 'string',
554 554
 					'default'            => 'desc',
555
-					'enum'               => array( 'asc', 'desc' ),
555
+					'enum'               => array('asc', 'desc'),
556 556
 					'validate_callback'  => 'rest_validate_request_arg',
557 557
 				),
558 558
 				'orderby' => array(
559
-					'description'        => __( 'Sort collection by object attribute.', 'invoicing' ),
559
+					'description'        => __('Sort collection by object attribute.', 'invoicing'),
560 560
 					'type'               => 'string',
561 561
 					'default'            => 'date',
562 562
 					'enum'               => array(
@@ -583,25 +583,25 @@  discard block
 block discarded – undo
583 583
 	public function get_item_schema() {
584 584
 
585 585
 		// Maybe retrieve the schema from cache.
586
-		if ( ! empty( $this->schema ) ) {
587
-			return $this->add_additional_fields_schema( $this->schema );
586
+		if (!empty($this->schema)) {
587
+			return $this->add_additional_fields_schema($this->schema);
588 588
 		}
589 589
 
590
-		$type   = str_replace( 'wpi_', '', $this->post_type );
590
+		$type   = str_replace('wpi_', '', $this->post_type);
591 591
 		$schema = array(
592 592
 			'$schema'    => 'http://json-schema.org/draft-04/schema#',
593 593
 			'title'      => $this->post_type,
594 594
 			'type'       => 'object',
595
-			'properties' => wpinv_get_data( "$type-schema" ),
595
+			'properties' => wpinv_get_data("$type-schema"),
596 596
 		);
597 597
 
598 598
 		// Filters the invoice schema for the REST API.
599
-        $schema = apply_filters( "wpinv_rest_{$type}_schema", $schema );
599
+        $schema = apply_filters("wpinv_rest_{$type}_schema", $schema);
600 600
 
601 601
 		// Cache the invoice schema.
602 602
 		$this->schema = $schema;
603 603
 
604
-		return $this->add_additional_fields_schema( $this->schema );
604
+		return $this->add_additional_fields_schema($this->schema);
605 605
 	}
606 606
 
607 607
 	/**
@@ -614,8 +614,8 @@  discard block
 block discarded – undo
614 614
 	 * @param string          $parameter Additional parameter to pass to validation.
615 615
 	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
616 616
 	 */
617
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
618
-		return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() );
617
+	public function sanitize_post_statuses($statuses, $request, $parameter) {
618
+		return array_intersect(wp_parse_slug_list($statuses), $this->get_post_statuses());
619 619
 	}
620 620
 
621 621
 	/**
@@ -637,9 +637,9 @@  discard block
 block discarded – undo
637 637
 	 * @param  string       $field_key The key to check for.
638 638
 	 * @return bool
639 639
 	 */
640
-	public function object_supports_field( $object, $field_key ) {
641
-		$supports = parent::object_supports_field( $object, $field_key );
642
-		return apply_filters( "getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key );
640
+	public function object_supports_field($object, $field_key) {
641
+		$supports = parent::object_supports_field($object, $field_key);
642
+		return apply_filters("getpaid_rest_{$this->post_type}_object_supports_key", $supports, $object, $field_key);
643 643
 	}
644 644
 
645 645
 }
Please login to merge, or discard this patch.