@@ -10,261 +10,261 @@ |
||
10 | 10 | defined( 'ABSPATH' ) || exit; |
11 | 11 | |
12 | 12 | return array( |
13 | - 'BD' => '+880', |
|
14 | - 'BE' => '+32', |
|
15 | - 'BF' => '+226', |
|
16 | - 'BG' => '+359', |
|
17 | - 'BA' => '+387', |
|
18 | - 'BB' => '+1246', |
|
19 | - 'WF' => '+681', |
|
20 | - 'BL' => '+590', |
|
21 | - 'BM' => '+1441', |
|
22 | - 'BN' => '+673', |
|
23 | - 'BO' => '+591', |
|
24 | - 'BH' => '+973', |
|
25 | - 'BI' => '+257', |
|
26 | - 'BJ' => '+229', |
|
27 | - 'BT' => '+975', |
|
28 | - 'JM' => '+1876', |
|
29 | - 'BV' => '', |
|
30 | - 'BW' => '+267', |
|
31 | - 'WS' => '+685', |
|
32 | - 'BQ' => '+599', |
|
33 | - 'BR' => '+55', |
|
34 | - 'BS' => '+1242', |
|
35 | - 'JE' => '+441534', |
|
36 | - 'BY' => '+375', |
|
37 | - 'BZ' => '+501', |
|
38 | - 'RU' => '+7', |
|
39 | - 'RW' => '+250', |
|
40 | - 'RS' => '+381', |
|
41 | - 'TL' => '+670', |
|
42 | - 'RE' => '+262', |
|
43 | - 'TM' => '+993', |
|
44 | - 'TJ' => '+992', |
|
45 | - 'RO' => '+40', |
|
46 | - 'TK' => '+690', |
|
47 | - 'GW' => '+245', |
|
48 | - 'GU' => '+1671', |
|
49 | - 'GT' => '+502', |
|
50 | - 'GS' => '', |
|
51 | - 'GR' => '+30', |
|
52 | - 'GQ' => '+240', |
|
53 | - 'GP' => '+590', |
|
54 | - 'JP' => '+81', |
|
55 | - 'GY' => '+592', |
|
56 | - 'GG' => '+441481', |
|
57 | - 'GF' => '+594', |
|
58 | - 'GE' => '+995', |
|
59 | - 'GD' => '+1473', |
|
60 | - 'GB' => '+44', |
|
61 | - 'GA' => '+241', |
|
62 | - 'SV' => '+503', |
|
63 | - 'GN' => '+224', |
|
64 | - 'GM' => '+220', |
|
65 | - 'GL' => '+299', |
|
66 | - 'GI' => '+350', |
|
67 | - 'GH' => '+233', |
|
68 | - 'OM' => '+968', |
|
69 | - 'TN' => '+216', |
|
70 | - 'JO' => '+962', |
|
71 | - 'HR' => '+385', |
|
72 | - 'HT' => '+509', |
|
73 | - 'HU' => '+36', |
|
74 | - 'HK' => '+852', |
|
75 | - 'HN' => '+504', |
|
76 | - 'HM' => '', |
|
77 | - 'VE' => '+58', |
|
78 | - 'PR' => array( |
|
79 | - '+1787', |
|
80 | - '+1939', |
|
81 | - ), |
|
82 | - 'PS' => '+970', |
|
83 | - 'PW' => '+680', |
|
84 | - 'PT' => '+351', |
|
85 | - 'SJ' => '+47', |
|
86 | - 'PY' => '+595', |
|
87 | - 'IQ' => '+964', |
|
88 | - 'PA' => '+507', |
|
89 | - 'PF' => '+689', |
|
90 | - 'PG' => '+675', |
|
91 | - 'PE' => '+51', |
|
92 | - 'PK' => '+92', |
|
93 | - 'PH' => '+63', |
|
94 | - 'PN' => '+870', |
|
95 | - 'PL' => '+48', |
|
96 | - 'PM' => '+508', |
|
97 | - 'ZM' => '+260', |
|
98 | - 'EH' => '+212', |
|
99 | - 'EE' => '+372', |
|
100 | - 'EG' => '+20', |
|
101 | - 'ZA' => '+27', |
|
102 | - 'EC' => '+593', |
|
103 | - 'IT' => '+39', |
|
104 | - 'VN' => '+84', |
|
105 | - 'SB' => '+677', |
|
106 | - 'ET' => '+251', |
|
107 | - 'SO' => '+252', |
|
108 | - 'ZW' => '+263', |
|
109 | - 'SA' => '+966', |
|
110 | - 'ES' => '+34', |
|
111 | - 'ER' => '+291', |
|
112 | - 'ME' => '+382', |
|
113 | - 'MD' => '+373', |
|
114 | - 'MG' => '+261', |
|
115 | - 'MF' => '+590', |
|
116 | - 'MA' => '+212', |
|
117 | - 'MC' => '+377', |
|
118 | - 'UZ' => '+998', |
|
119 | - 'MM' => '+95', |
|
120 | - 'ML' => '+223', |
|
121 | - 'MO' => '+853', |
|
122 | - 'MN' => '+976', |
|
123 | - 'MH' => '+692', |
|
124 | - 'MK' => '+389', |
|
125 | - 'MU' => '+230', |
|
126 | - 'MT' => '+356', |
|
127 | - 'MW' => '+265', |
|
128 | - 'MV' => '+960', |
|
129 | - 'MQ' => '+596', |
|
130 | - 'MP' => '+1670', |
|
131 | - 'MS' => '+1664', |
|
132 | - 'MR' => '+222', |
|
133 | - 'IM' => '+441624', |
|
134 | - 'UG' => '+256', |
|
135 | - 'TZ' => '+255', |
|
136 | - 'MY' => '+60', |
|
137 | - 'MX' => '+52', |
|
138 | - 'IL' => '+972', |
|
139 | - 'FR' => '+33', |
|
140 | - 'IO' => '+246', |
|
141 | - 'SH' => '+290', |
|
142 | - 'FI' => '+358', |
|
143 | - 'FJ' => '+679', |
|
144 | - 'FK' => '+500', |
|
145 | - 'FM' => '+691', |
|
146 | - 'FO' => '+298', |
|
147 | - 'NI' => '+505', |
|
148 | - 'NL' => '+31', |
|
149 | - 'NO' => '+47', |
|
150 | - 'NA' => '+264', |
|
151 | - 'VU' => '+678', |
|
152 | - 'NC' => '+687', |
|
153 | - 'NE' => '+227', |
|
154 | - 'NF' => '+672', |
|
155 | - 'NG' => '+234', |
|
156 | - 'NZ' => '+64', |
|
157 | - 'NP' => '+977', |
|
158 | - 'NR' => '+674', |
|
159 | - 'NU' => '+683', |
|
160 | - 'CK' => '+682', |
|
161 | - 'XK' => '', |
|
162 | - 'CI' => '+225', |
|
163 | - 'CH' => '+41', |
|
164 | - 'CO' => '+57', |
|
165 | - 'CN' => '+86', |
|
166 | - 'CM' => '+237', |
|
167 | - 'CL' => '+56', |
|
168 | - 'CC' => '+61', |
|
169 | - 'CA' => '+1', |
|
170 | - 'CG' => '+242', |
|
171 | - 'CF' => '+236', |
|
172 | - 'CD' => '+243', |
|
173 | - 'CZ' => '+420', |
|
174 | - 'CY' => '+357', |
|
175 | - 'CX' => '+61', |
|
176 | - 'CR' => '+506', |
|
177 | - 'CW' => '+599', |
|
178 | - 'CV' => '+238', |
|
179 | - 'CU' => '+53', |
|
180 | - 'SZ' => '+268', |
|
181 | - 'SY' => '+963', |
|
182 | - 'SX' => '+599', |
|
183 | - 'KG' => '+996', |
|
184 | - 'KE' => '+254', |
|
185 | - 'SS' => '+211', |
|
186 | - 'SR' => '+597', |
|
187 | - 'KI' => '+686', |
|
188 | - 'KH' => '+855', |
|
189 | - 'KN' => '+1869', |
|
190 | - 'KM' => '+269', |
|
191 | - 'ST' => '+239', |
|
192 | - 'SK' => '+421', |
|
193 | - 'KR' => '+82', |
|
194 | - 'SI' => '+386', |
|
195 | - 'KP' => '+850', |
|
196 | - 'KW' => '+965', |
|
197 | - 'SN' => '+221', |
|
198 | - 'SM' => '+378', |
|
199 | - 'SL' => '+232', |
|
200 | - 'SC' => '+248', |
|
201 | - 'KZ' => '+7', |
|
202 | - 'KY' => '+1345', |
|
203 | - 'SG' => '+65', |
|
204 | - 'SE' => '+46', |
|
205 | - 'SD' => '+249', |
|
206 | - 'DO' => array( |
|
207 | - '+1809', |
|
208 | - '+1829', |
|
209 | - '+1849', |
|
210 | - ), |
|
211 | - 'DM' => '+1767', |
|
212 | - 'DJ' => '+253', |
|
213 | - 'DK' => '+45', |
|
214 | - 'VG' => '+1284', |
|
215 | - 'DE' => '+49', |
|
216 | - 'YE' => '+967', |
|
217 | - 'DZ' => '+213', |
|
218 | - 'US' => '+1', |
|
219 | - 'UY' => '+598', |
|
220 | - 'YT' => '+262', |
|
221 | - 'UM' => '+1', |
|
222 | - 'LB' => '+961', |
|
223 | - 'LC' => '+1758', |
|
224 | - 'LA' => '+856', |
|
225 | - 'TV' => '+688', |
|
226 | - 'TW' => '+886', |
|
227 | - 'TT' => '+1868', |
|
228 | - 'TR' => '+90', |
|
229 | - 'LK' => '+94', |
|
230 | - 'LI' => '+423', |
|
231 | - 'LV' => '+371', |
|
232 | - 'TO' => '+676', |
|
233 | - 'LT' => '+370', |
|
234 | - 'LU' => '+352', |
|
235 | - 'LR' => '+231', |
|
236 | - 'LS' => '+266', |
|
237 | - 'TH' => '+66', |
|
238 | - 'TF' => '', |
|
239 | - 'TG' => '+228', |
|
240 | - 'TD' => '+235', |
|
241 | - 'TC' => '+1649', |
|
242 | - 'LY' => '+218', |
|
243 | - 'VA' => '+379', |
|
244 | - 'VC' => '+1784', |
|
245 | - 'AE' => '+971', |
|
246 | - 'AD' => '+376', |
|
247 | - 'AG' => '+1268', |
|
248 | - 'AF' => '+93', |
|
249 | - 'AI' => '+1264', |
|
250 | - 'VI' => '+1340', |
|
251 | - 'IS' => '+354', |
|
252 | - 'IR' => '+98', |
|
253 | - 'AM' => '+374', |
|
254 | - 'AL' => '+355', |
|
255 | - 'AO' => '+244', |
|
256 | - 'AQ' => '', |
|
257 | - 'AS' => '+1684', |
|
258 | - 'AR' => '+54', |
|
259 | - 'AU' => '+61', |
|
260 | - 'AT' => '+43', |
|
261 | - 'AW' => '+297', |
|
262 | - 'IN' => '+91', |
|
263 | - 'AX' => '+35818', |
|
264 | - 'AZ' => '+994', |
|
265 | - 'IE' => '+353', |
|
266 | - 'ID' => '+62', |
|
267 | - 'UA' => '+380', |
|
268 | - 'QA' => '+974', |
|
269 | - 'MZ' => '+258', |
|
13 | + 'BD' => '+880', |
|
14 | + 'BE' => '+32', |
|
15 | + 'BF' => '+226', |
|
16 | + 'BG' => '+359', |
|
17 | + 'BA' => '+387', |
|
18 | + 'BB' => '+1246', |
|
19 | + 'WF' => '+681', |
|
20 | + 'BL' => '+590', |
|
21 | + 'BM' => '+1441', |
|
22 | + 'BN' => '+673', |
|
23 | + 'BO' => '+591', |
|
24 | + 'BH' => '+973', |
|
25 | + 'BI' => '+257', |
|
26 | + 'BJ' => '+229', |
|
27 | + 'BT' => '+975', |
|
28 | + 'JM' => '+1876', |
|
29 | + 'BV' => '', |
|
30 | + 'BW' => '+267', |
|
31 | + 'WS' => '+685', |
|
32 | + 'BQ' => '+599', |
|
33 | + 'BR' => '+55', |
|
34 | + 'BS' => '+1242', |
|
35 | + 'JE' => '+441534', |
|
36 | + 'BY' => '+375', |
|
37 | + 'BZ' => '+501', |
|
38 | + 'RU' => '+7', |
|
39 | + 'RW' => '+250', |
|
40 | + 'RS' => '+381', |
|
41 | + 'TL' => '+670', |
|
42 | + 'RE' => '+262', |
|
43 | + 'TM' => '+993', |
|
44 | + 'TJ' => '+992', |
|
45 | + 'RO' => '+40', |
|
46 | + 'TK' => '+690', |
|
47 | + 'GW' => '+245', |
|
48 | + 'GU' => '+1671', |
|
49 | + 'GT' => '+502', |
|
50 | + 'GS' => '', |
|
51 | + 'GR' => '+30', |
|
52 | + 'GQ' => '+240', |
|
53 | + 'GP' => '+590', |
|
54 | + 'JP' => '+81', |
|
55 | + 'GY' => '+592', |
|
56 | + 'GG' => '+441481', |
|
57 | + 'GF' => '+594', |
|
58 | + 'GE' => '+995', |
|
59 | + 'GD' => '+1473', |
|
60 | + 'GB' => '+44', |
|
61 | + 'GA' => '+241', |
|
62 | + 'SV' => '+503', |
|
63 | + 'GN' => '+224', |
|
64 | + 'GM' => '+220', |
|
65 | + 'GL' => '+299', |
|
66 | + 'GI' => '+350', |
|
67 | + 'GH' => '+233', |
|
68 | + 'OM' => '+968', |
|
69 | + 'TN' => '+216', |
|
70 | + 'JO' => '+962', |
|
71 | + 'HR' => '+385', |
|
72 | + 'HT' => '+509', |
|
73 | + 'HU' => '+36', |
|
74 | + 'HK' => '+852', |
|
75 | + 'HN' => '+504', |
|
76 | + 'HM' => '', |
|
77 | + 'VE' => '+58', |
|
78 | + 'PR' => array( |
|
79 | + '+1787', |
|
80 | + '+1939', |
|
81 | + ), |
|
82 | + 'PS' => '+970', |
|
83 | + 'PW' => '+680', |
|
84 | + 'PT' => '+351', |
|
85 | + 'SJ' => '+47', |
|
86 | + 'PY' => '+595', |
|
87 | + 'IQ' => '+964', |
|
88 | + 'PA' => '+507', |
|
89 | + 'PF' => '+689', |
|
90 | + 'PG' => '+675', |
|
91 | + 'PE' => '+51', |
|
92 | + 'PK' => '+92', |
|
93 | + 'PH' => '+63', |
|
94 | + 'PN' => '+870', |
|
95 | + 'PL' => '+48', |
|
96 | + 'PM' => '+508', |
|
97 | + 'ZM' => '+260', |
|
98 | + 'EH' => '+212', |
|
99 | + 'EE' => '+372', |
|
100 | + 'EG' => '+20', |
|
101 | + 'ZA' => '+27', |
|
102 | + 'EC' => '+593', |
|
103 | + 'IT' => '+39', |
|
104 | + 'VN' => '+84', |
|
105 | + 'SB' => '+677', |
|
106 | + 'ET' => '+251', |
|
107 | + 'SO' => '+252', |
|
108 | + 'ZW' => '+263', |
|
109 | + 'SA' => '+966', |
|
110 | + 'ES' => '+34', |
|
111 | + 'ER' => '+291', |
|
112 | + 'ME' => '+382', |
|
113 | + 'MD' => '+373', |
|
114 | + 'MG' => '+261', |
|
115 | + 'MF' => '+590', |
|
116 | + 'MA' => '+212', |
|
117 | + 'MC' => '+377', |
|
118 | + 'UZ' => '+998', |
|
119 | + 'MM' => '+95', |
|
120 | + 'ML' => '+223', |
|
121 | + 'MO' => '+853', |
|
122 | + 'MN' => '+976', |
|
123 | + 'MH' => '+692', |
|
124 | + 'MK' => '+389', |
|
125 | + 'MU' => '+230', |
|
126 | + 'MT' => '+356', |
|
127 | + 'MW' => '+265', |
|
128 | + 'MV' => '+960', |
|
129 | + 'MQ' => '+596', |
|
130 | + 'MP' => '+1670', |
|
131 | + 'MS' => '+1664', |
|
132 | + 'MR' => '+222', |
|
133 | + 'IM' => '+441624', |
|
134 | + 'UG' => '+256', |
|
135 | + 'TZ' => '+255', |
|
136 | + 'MY' => '+60', |
|
137 | + 'MX' => '+52', |
|
138 | + 'IL' => '+972', |
|
139 | + 'FR' => '+33', |
|
140 | + 'IO' => '+246', |
|
141 | + 'SH' => '+290', |
|
142 | + 'FI' => '+358', |
|
143 | + 'FJ' => '+679', |
|
144 | + 'FK' => '+500', |
|
145 | + 'FM' => '+691', |
|
146 | + 'FO' => '+298', |
|
147 | + 'NI' => '+505', |
|
148 | + 'NL' => '+31', |
|
149 | + 'NO' => '+47', |
|
150 | + 'NA' => '+264', |
|
151 | + 'VU' => '+678', |
|
152 | + 'NC' => '+687', |
|
153 | + 'NE' => '+227', |
|
154 | + 'NF' => '+672', |
|
155 | + 'NG' => '+234', |
|
156 | + 'NZ' => '+64', |
|
157 | + 'NP' => '+977', |
|
158 | + 'NR' => '+674', |
|
159 | + 'NU' => '+683', |
|
160 | + 'CK' => '+682', |
|
161 | + 'XK' => '', |
|
162 | + 'CI' => '+225', |
|
163 | + 'CH' => '+41', |
|
164 | + 'CO' => '+57', |
|
165 | + 'CN' => '+86', |
|
166 | + 'CM' => '+237', |
|
167 | + 'CL' => '+56', |
|
168 | + 'CC' => '+61', |
|
169 | + 'CA' => '+1', |
|
170 | + 'CG' => '+242', |
|
171 | + 'CF' => '+236', |
|
172 | + 'CD' => '+243', |
|
173 | + 'CZ' => '+420', |
|
174 | + 'CY' => '+357', |
|
175 | + 'CX' => '+61', |
|
176 | + 'CR' => '+506', |
|
177 | + 'CW' => '+599', |
|
178 | + 'CV' => '+238', |
|
179 | + 'CU' => '+53', |
|
180 | + 'SZ' => '+268', |
|
181 | + 'SY' => '+963', |
|
182 | + 'SX' => '+599', |
|
183 | + 'KG' => '+996', |
|
184 | + 'KE' => '+254', |
|
185 | + 'SS' => '+211', |
|
186 | + 'SR' => '+597', |
|
187 | + 'KI' => '+686', |
|
188 | + 'KH' => '+855', |
|
189 | + 'KN' => '+1869', |
|
190 | + 'KM' => '+269', |
|
191 | + 'ST' => '+239', |
|
192 | + 'SK' => '+421', |
|
193 | + 'KR' => '+82', |
|
194 | + 'SI' => '+386', |
|
195 | + 'KP' => '+850', |
|
196 | + 'KW' => '+965', |
|
197 | + 'SN' => '+221', |
|
198 | + 'SM' => '+378', |
|
199 | + 'SL' => '+232', |
|
200 | + 'SC' => '+248', |
|
201 | + 'KZ' => '+7', |
|
202 | + 'KY' => '+1345', |
|
203 | + 'SG' => '+65', |
|
204 | + 'SE' => '+46', |
|
205 | + 'SD' => '+249', |
|
206 | + 'DO' => array( |
|
207 | + '+1809', |
|
208 | + '+1829', |
|
209 | + '+1849', |
|
210 | + ), |
|
211 | + 'DM' => '+1767', |
|
212 | + 'DJ' => '+253', |
|
213 | + 'DK' => '+45', |
|
214 | + 'VG' => '+1284', |
|
215 | + 'DE' => '+49', |
|
216 | + 'YE' => '+967', |
|
217 | + 'DZ' => '+213', |
|
218 | + 'US' => '+1', |
|
219 | + 'UY' => '+598', |
|
220 | + 'YT' => '+262', |
|
221 | + 'UM' => '+1', |
|
222 | + 'LB' => '+961', |
|
223 | + 'LC' => '+1758', |
|
224 | + 'LA' => '+856', |
|
225 | + 'TV' => '+688', |
|
226 | + 'TW' => '+886', |
|
227 | + 'TT' => '+1868', |
|
228 | + 'TR' => '+90', |
|
229 | + 'LK' => '+94', |
|
230 | + 'LI' => '+423', |
|
231 | + 'LV' => '+371', |
|
232 | + 'TO' => '+676', |
|
233 | + 'LT' => '+370', |
|
234 | + 'LU' => '+352', |
|
235 | + 'LR' => '+231', |
|
236 | + 'LS' => '+266', |
|
237 | + 'TH' => '+66', |
|
238 | + 'TF' => '', |
|
239 | + 'TG' => '+228', |
|
240 | + 'TD' => '+235', |
|
241 | + 'TC' => '+1649', |
|
242 | + 'LY' => '+218', |
|
243 | + 'VA' => '+379', |
|
244 | + 'VC' => '+1784', |
|
245 | + 'AE' => '+971', |
|
246 | + 'AD' => '+376', |
|
247 | + 'AG' => '+1268', |
|
248 | + 'AF' => '+93', |
|
249 | + 'AI' => '+1264', |
|
250 | + 'VI' => '+1340', |
|
251 | + 'IS' => '+354', |
|
252 | + 'IR' => '+98', |
|
253 | + 'AM' => '+374', |
|
254 | + 'AL' => '+355', |
|
255 | + 'AO' => '+244', |
|
256 | + 'AQ' => '', |
|
257 | + 'AS' => '+1684', |
|
258 | + 'AR' => '+54', |
|
259 | + 'AU' => '+61', |
|
260 | + 'AT' => '+43', |
|
261 | + 'AW' => '+297', |
|
262 | + 'IN' => '+91', |
|
263 | + 'AX' => '+35818', |
|
264 | + 'AZ' => '+994', |
|
265 | + 'IE' => '+353', |
|
266 | + 'ID' => '+62', |
|
267 | + 'UA' => '+380', |
|
268 | + 'QA' => '+974', |
|
269 | + 'MZ' => '+258', |
|
270 | 270 | ); |
@@ -7,7 +7,7 @@ |
||
7 | 7 | * @package Invoicing/data |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | 12 | return array( |
13 | 13 | 'BD' => '+880', |
@@ -12,256 +12,256 @@ |
||
12 | 12 | defined( 'ABSPATH' ) || exit; |
13 | 13 | |
14 | 14 | return array( |
15 | - 'US' => __('United States', 'invoicing'), |
|
16 | - 'CA' => __('Canada', 'invoicing'), |
|
17 | - 'GB' => __('United Kingdom', 'invoicing'), |
|
18 | - 'AF' => __('Afghanistan', 'invoicing'), |
|
19 | - 'AX' => __('Aland Islands', 'invoicing'), |
|
20 | - 'AL' => __('Albania', 'invoicing'), |
|
21 | - 'DZ' => __('Algeria', 'invoicing'), |
|
22 | - 'AS' => __('American Samoa', 'invoicing'), |
|
23 | - 'AD' => __('Andorra', 'invoicing'), |
|
24 | - 'AO' => __('Angola', 'invoicing'), |
|
25 | - 'AI' => __('Anguilla', 'invoicing'), |
|
26 | - 'AQ' => __('Antarctica', 'invoicing'), |
|
27 | - 'AG' => __('Antigua and Barbuda', 'invoicing'), |
|
28 | - 'AR' => __('Argentina', 'invoicing'), |
|
29 | - 'AM' => __('Armenia', 'invoicing'), |
|
30 | - 'AW' => __('Aruba', 'invoicing'), |
|
31 | - 'AU' => __('Australia', 'invoicing'), |
|
32 | - 'AT' => __('Austria', 'invoicing'), |
|
33 | - 'AZ' => __('Azerbaijan', 'invoicing'), |
|
34 | - 'BS' => __('Bahamas', 'invoicing'), |
|
35 | - 'BH' => __('Bahrain', 'invoicing'), |
|
36 | - 'BD' => __('Bangladesh', 'invoicing'), |
|
37 | - 'BB' => __('Barbados', 'invoicing'), |
|
38 | - 'BY' => __('Belarus', 'invoicing'), |
|
39 | - 'BE' => __('Belgium', 'invoicing'), |
|
40 | - 'BZ' => __('Belize', 'invoicing'), |
|
41 | - 'BJ' => __('Benin', 'invoicing'), |
|
42 | - 'BM' => __('Bermuda', 'invoicing'), |
|
43 | - 'BT' => __('Bhutan', 'invoicing'), |
|
44 | - 'BO' => __('Bolivia', 'invoicing'), |
|
45 | - 'BQ' => __('Bonaire, Saint Eustatius and Saba', 'invoicing'), |
|
46 | - 'BA' => __('Bosnia and Herzegovina', 'invoicing'), |
|
47 | - 'BW' => __('Botswana', 'invoicing'), |
|
48 | - 'BV' => __('Bouvet Island', 'invoicing'), |
|
49 | - 'BR' => __('Brazil', 'invoicing'), |
|
50 | - 'IO' => __('British Indian Ocean Territory', 'invoicing'), |
|
51 | - 'BN' => __('Brunei Darrussalam', 'invoicing'), |
|
52 | - 'BG' => __('Bulgaria', 'invoicing'), |
|
53 | - 'BF' => __('Burkina Faso', 'invoicing'), |
|
54 | - 'BI' => __('Burundi', 'invoicing'), |
|
55 | - 'KH' => __('Cambodia', 'invoicing'), |
|
56 | - 'CM' => __('Cameroon', 'invoicing'), |
|
57 | - 'CV' => __('Cape Verde', 'invoicing'), |
|
58 | - 'KY' => __('Cayman Islands', 'invoicing'), |
|
59 | - 'CF' => __('Central African Republic', 'invoicing'), |
|
60 | - 'TD' => __('Chad', 'invoicing'), |
|
61 | - 'CL' => __('Chile', 'invoicing'), |
|
62 | - 'CN' => __('China', 'invoicing'), |
|
63 | - 'CX' => __('Christmas Island', 'invoicing'), |
|
64 | - 'CC' => __('Cocos Islands', 'invoicing'), |
|
65 | - 'CO' => __('Colombia', 'invoicing'), |
|
66 | - 'KM' => __('Comoros', 'invoicing'), |
|
67 | - 'CD' => __('Congo, Democratic People\'s Republic', 'invoicing'), |
|
68 | - 'CG' => __('Congo, Republic of', 'invoicing'), |
|
69 | - 'CK' => __('Cook Islands', 'invoicing'), |
|
70 | - 'CR' => __('Costa Rica', 'invoicing'), |
|
71 | - 'CI' => __('Cote d\'Ivoire', 'invoicing'), |
|
72 | - 'HR' => __('Croatia/Hrvatska', 'invoicing'), |
|
73 | - 'CU' => __('Cuba', 'invoicing'), |
|
74 | - 'CW' => __('CuraÇao', 'invoicing'), |
|
75 | - 'CY' => __('Cyprus', 'invoicing'), |
|
76 | - 'CZ' => __('Czech Republic', 'invoicing'), |
|
77 | - 'DK' => __('Denmark', 'invoicing'), |
|
78 | - 'DJ' => __('Djibouti', 'invoicing'), |
|
79 | - 'DM' => __('Dominica', 'invoicing'), |
|
80 | - 'DO' => __('Dominican Republic', 'invoicing'), |
|
81 | - 'TP' => __('East Timor', 'invoicing'), |
|
82 | - 'EC' => __('Ecuador', 'invoicing'), |
|
83 | - 'EG' => __('Egypt', 'invoicing'), |
|
84 | - 'GQ' => __('Equatorial Guinea', 'invoicing'), |
|
85 | - 'SV' => __('El Salvador', 'invoicing'), |
|
86 | - 'ER' => __('Eritrea', 'invoicing'), |
|
87 | - 'EE' => __('Estonia', 'invoicing'), |
|
88 | - 'ET' => __('Ethiopia', 'invoicing'), |
|
89 | - 'FK' => __('Falkland Islands', 'invoicing'), |
|
90 | - 'FO' => __('Faroe Islands', 'invoicing'), |
|
91 | - 'FJ' => __('Fiji', 'invoicing'), |
|
92 | - 'FI' => __('Finland', 'invoicing'), |
|
93 | - 'FR' => __('France', 'invoicing'), |
|
94 | - 'GF' => __('French Guiana', 'invoicing'), |
|
95 | - 'PF' => __('French Polynesia', 'invoicing'), |
|
96 | - 'TF' => __('French Southern Territories', 'invoicing'), |
|
97 | - 'GA' => __('Gabon', 'invoicing'), |
|
98 | - 'GM' => __('Gambia', 'invoicing'), |
|
99 | - 'GE' => __('Georgia', 'invoicing'), |
|
100 | - 'DE' => __('Germany', 'invoicing'), |
|
101 | - 'GR' => __('Greece', 'invoicing'), |
|
102 | - 'GH' => __('Ghana', 'invoicing'), |
|
103 | - 'GI' => __('Gibraltar', 'invoicing'), |
|
104 | - 'GL' => __('Greenland', 'invoicing'), |
|
105 | - 'GD' => __('Grenada', 'invoicing'), |
|
106 | - 'GP' => __('Guadeloupe', 'invoicing'), |
|
107 | - 'GU' => __('Guam', 'invoicing'), |
|
108 | - 'GT' => __('Guatemala', 'invoicing'), |
|
109 | - 'GG' => __('Guernsey', 'invoicing'), |
|
110 | - 'GN' => __('Guinea', 'invoicing'), |
|
111 | - 'GW' => __('Guinea-Bissau', 'invoicing'), |
|
112 | - 'GY' => __('Guyana', 'invoicing'), |
|
113 | - 'HT' => __('Haiti', 'invoicing'), |
|
114 | - 'HM' => __('Heard and McDonald Islands', 'invoicing'), |
|
115 | - 'VA' => __('Holy See (City Vatican State)', 'invoicing'), |
|
116 | - 'HN' => __('Honduras', 'invoicing'), |
|
117 | - 'HK' => __('Hong Kong', 'invoicing'), |
|
118 | - 'HU' => __('Hungary', 'invoicing'), |
|
119 | - 'IS' => __('Iceland', 'invoicing'), |
|
120 | - 'IN' => __('India', 'invoicing'), |
|
121 | - 'ID' => __('Indonesia', 'invoicing'), |
|
122 | - 'IR' => __('Iran', 'invoicing'), |
|
123 | - 'IQ' => __('Iraq', 'invoicing'), |
|
124 | - 'IE' => __('Ireland', 'invoicing'), |
|
125 | - 'IM' => __('Isle of Man', 'invoicing'), |
|
126 | - 'IL' => __('Israel', 'invoicing'), |
|
127 | - 'IT' => __('Italy', 'invoicing'), |
|
128 | - 'JM' => __('Jamaica', 'invoicing'), |
|
129 | - 'JP' => __('Japan', 'invoicing'), |
|
130 | - 'JE' => __('Jersey', 'invoicing'), |
|
131 | - 'JO' => __('Jordan', 'invoicing'), |
|
132 | - 'KZ' => __('Kazakhstan', 'invoicing'), |
|
133 | - 'KE' => __('Kenya', 'invoicing'), |
|
134 | - 'KI' => __('Kiribati', 'invoicing'), |
|
135 | - 'KW' => __('Kuwait', 'invoicing'), |
|
136 | - 'KG' => __('Kyrgyzstan', 'invoicing'), |
|
137 | - 'LA' => __('Lao People\'s Democratic Republic', 'invoicing'), |
|
138 | - 'LV' => __('Latvia', 'invoicing'), |
|
139 | - 'LB' => __('Lebanon', 'invoicing'), |
|
140 | - 'LS' => __('Lesotho', 'invoicing'), |
|
141 | - 'LR' => __('Liberia', 'invoicing'), |
|
142 | - 'LY' => __('Libyan Arab Jamahiriya', 'invoicing'), |
|
143 | - 'LI' => __('Liechtenstein', 'invoicing'), |
|
144 | - 'LT' => __('Lithuania', 'invoicing'), |
|
145 | - 'LU' => __('Luxembourg', 'invoicing'), |
|
146 | - 'MO' => __('Macau', 'invoicing'), |
|
147 | - 'MK' => __('Macedonia', 'invoicing'), |
|
148 | - 'MG' => __('Madagascar', 'invoicing'), |
|
149 | - 'MW' => __('Malawi', 'invoicing'), |
|
150 | - 'MY' => __('Malaysia', 'invoicing'), |
|
151 | - 'MV' => __('Maldives', 'invoicing'), |
|
152 | - 'ML' => __('Mali', 'invoicing'), |
|
153 | - 'MT' => __('Malta', 'invoicing'), |
|
154 | - 'MH' => __('Marshall Islands', 'invoicing'), |
|
155 | - 'MQ' => __('Martinique', 'invoicing'), |
|
156 | - 'MR' => __('Mauritania', 'invoicing'), |
|
157 | - 'MU' => __('Mauritius', 'invoicing'), |
|
158 | - 'YT' => __('Mayotte', 'invoicing'), |
|
159 | - 'MX' => __('Mexico', 'invoicing'), |
|
160 | - 'FM' => __('Micronesia', 'invoicing'), |
|
161 | - 'MD' => __('Moldova, Republic of', 'invoicing'), |
|
162 | - 'MC' => __('Monaco', 'invoicing'), |
|
163 | - 'MN' => __('Mongolia', 'invoicing'), |
|
164 | - 'ME' => __('Montenegro', 'invoicing'), |
|
165 | - 'MS' => __('Montserrat', 'invoicing'), |
|
166 | - 'MA' => __('Morocco', 'invoicing'), |
|
167 | - 'MZ' => __('Mozambique', 'invoicing'), |
|
168 | - 'MM' => __('Myanmar', 'invoicing'), |
|
169 | - 'NA' => __('Namibia', 'invoicing'), |
|
170 | - 'NR' => __('Nauru', 'invoicing'), |
|
171 | - 'NP' => __('Nepal', 'invoicing'), |
|
172 | - 'NL' => __('Netherlands', 'invoicing'), |
|
173 | - 'AN' => __('Netherlands Antilles', 'invoicing'), |
|
174 | - 'NC' => __('New Caledonia', 'invoicing'), |
|
175 | - 'NZ' => __('New Zealand', 'invoicing'), |
|
176 | - 'NI' => __('Nicaragua', 'invoicing'), |
|
177 | - 'NE' => __('Niger', 'invoicing'), |
|
178 | - 'NG' => __('Nigeria', 'invoicing'), |
|
179 | - 'NU' => __('Niue', 'invoicing'), |
|
180 | - 'NF' => __('Norfolk Island', 'invoicing'), |
|
181 | - 'KP' => __('North Korea', 'invoicing'), |
|
182 | - 'MP' => __('Northern Mariana Islands', 'invoicing'), |
|
183 | - 'NO' => __('Norway', 'invoicing'), |
|
184 | - 'OM' => __('Oman', 'invoicing'), |
|
185 | - 'PK' => __('Pakistan', 'invoicing'), |
|
186 | - 'PW' => __('Palau', 'invoicing'), |
|
187 | - 'PS' => __('Palestinian Territories', 'invoicing'), |
|
188 | - 'PA' => __('Panama', 'invoicing'), |
|
189 | - 'PG' => __('Papua New Guinea', 'invoicing'), |
|
190 | - 'PY' => __('Paraguay', 'invoicing'), |
|
191 | - 'PE' => __('Peru', 'invoicing'), |
|
192 | - 'PH' => __('Phillipines', 'invoicing'), |
|
193 | - 'PN' => __('Pitcairn Island', 'invoicing'), |
|
194 | - 'PL' => __('Poland', 'invoicing'), |
|
195 | - 'PT' => __('Portugal', 'invoicing'), |
|
196 | - 'PR' => __('Puerto Rico', 'invoicing'), |
|
197 | - 'QA' => __('Qatar', 'invoicing'), |
|
198 | - 'XK' => __('Republic of Kosovo', 'invoicing'), |
|
199 | - 'RE' => __('Reunion Island', 'invoicing'), |
|
200 | - 'RO' => __('Romania', 'invoicing'), |
|
201 | - 'RU' => __('Russian Federation', 'invoicing'), |
|
202 | - 'RW' => __('Rwanda', 'invoicing'), |
|
203 | - 'BL' => __('Saint Barthélemy', 'invoicing'), |
|
204 | - 'SH' => __('Saint Helena', 'invoicing'), |
|
205 | - 'KN' => __('Saint Kitts and Nevis', 'invoicing'), |
|
206 | - 'LC' => __('Saint Lucia', 'invoicing'), |
|
207 | - 'MF' => __('Saint Martin (French)', 'invoicing'), |
|
208 | - 'SX' => __('Saint Martin (Dutch)', 'invoicing'), |
|
209 | - 'PM' => __('Saint Pierre and Miquelon', 'invoicing'), |
|
210 | - 'VC' => __('Saint Vincent and the Grenadines', 'invoicing'), |
|
211 | - 'SM' => __('San Marino', 'invoicing'), |
|
212 | - 'ST' => __('São Tomé and Príncipe', 'invoicing'), |
|
213 | - 'SA' => __('Saudi Arabia', 'invoicing'), |
|
214 | - 'SN' => __('Senegal', 'invoicing'), |
|
215 | - 'RS' => __('Serbia', 'invoicing'), |
|
216 | - 'SC' => __('Seychelles', 'invoicing'), |
|
217 | - 'SL' => __('Sierra Leone', 'invoicing'), |
|
218 | - 'SG' => __('Singapore', 'invoicing'), |
|
219 | - 'SK' => __('Slovak Republic', 'invoicing'), |
|
220 | - 'SI' => __('Slovenia', 'invoicing'), |
|
221 | - 'SB' => __('Solomon Islands', 'invoicing'), |
|
222 | - 'SO' => __('Somalia', 'invoicing'), |
|
223 | - 'ZA' => __('South Africa', 'invoicing'), |
|
224 | - 'GS' => __('South Georgia', 'invoicing'), |
|
225 | - 'KR' => __('South Korea', 'invoicing'), |
|
226 | - 'SS' => __('South Sudan', 'invoicing'), |
|
227 | - 'ES' => __('Spain', 'invoicing'), |
|
228 | - 'LK' => __('Sri Lanka', 'invoicing'), |
|
229 | - 'SD' => __('Sudan', 'invoicing'), |
|
230 | - 'SR' => __('Suriname', 'invoicing'), |
|
231 | - 'SJ' => __('Svalbard and Jan Mayen Islands', 'invoicing'), |
|
232 | - 'SZ' => __('Swaziland', 'invoicing'), |
|
233 | - 'SE' => __('Sweden', 'invoicing'), |
|
234 | - 'CH' => __('Switzerland', 'invoicing'), |
|
235 | - 'SY' => __('Syrian Arab Republic', 'invoicing'), |
|
236 | - 'TW' => __('Taiwan', 'invoicing'), |
|
237 | - 'TJ' => __('Tajikistan', 'invoicing'), |
|
238 | - 'TZ' => __('Tanzania', 'invoicing'), |
|
239 | - 'TH' => __('Thailand', 'invoicing'), |
|
240 | - 'TL' => __('Timor-Leste', 'invoicing'), |
|
241 | - 'TG' => __('Togo', 'invoicing'), |
|
242 | - 'TK' => __('Tokelau', 'invoicing'), |
|
243 | - 'TO' => __('Tonga', 'invoicing'), |
|
244 | - 'TT' => __('Trinidad and Tobago', 'invoicing'), |
|
245 | - 'TN' => __('Tunisia', 'invoicing'), |
|
246 | - 'TR' => __('Turkey', 'invoicing'), |
|
247 | - 'TM' => __('Turkmenistan', 'invoicing'), |
|
248 | - 'TC' => __('Turks and Caicos Islands', 'invoicing'), |
|
249 | - 'TV' => __('Tuvalu', 'invoicing'), |
|
250 | - 'UG' => __('Uganda', 'invoicing'), |
|
251 | - 'UA' => __('Ukraine', 'invoicing'), |
|
252 | - 'AE' => __('United Arab Emirates', 'invoicing'), |
|
253 | - 'UY' => __('Uruguay', 'invoicing'), |
|
254 | - 'UM' => __('US Minor Outlying Islands', 'invoicing'), |
|
255 | - 'UZ' => __('Uzbekistan', 'invoicing'), |
|
256 | - 'VU' => __('Vanuatu', 'invoicing'), |
|
257 | - 'VE' => __('Venezuela', 'invoicing'), |
|
258 | - 'VN' => __('Vietnam', 'invoicing'), |
|
259 | - 'VG' => __('Virgin Islands (British)', 'invoicing'), |
|
260 | - 'VI' => __('Virgin Islands (USA)', 'invoicing'), |
|
261 | - 'WF' => __('Wallis and Futuna Islands', 'invoicing'), |
|
262 | - 'EH' => __('Western Sahara', 'invoicing'), |
|
263 | - 'WS' => __('Western Samoa', 'invoicing'), |
|
264 | - 'YE' => __('Yemen', 'invoicing'), |
|
265 | - 'ZM' => __('Zambia', 'invoicing'), |
|
266 | - 'ZW' => __('Zimbabwe', 'invoicing'), |
|
15 | + 'US' => __('United States', 'invoicing'), |
|
16 | + 'CA' => __('Canada', 'invoicing'), |
|
17 | + 'GB' => __('United Kingdom', 'invoicing'), |
|
18 | + 'AF' => __('Afghanistan', 'invoicing'), |
|
19 | + 'AX' => __('Aland Islands', 'invoicing'), |
|
20 | + 'AL' => __('Albania', 'invoicing'), |
|
21 | + 'DZ' => __('Algeria', 'invoicing'), |
|
22 | + 'AS' => __('American Samoa', 'invoicing'), |
|
23 | + 'AD' => __('Andorra', 'invoicing'), |
|
24 | + 'AO' => __('Angola', 'invoicing'), |
|
25 | + 'AI' => __('Anguilla', 'invoicing'), |
|
26 | + 'AQ' => __('Antarctica', 'invoicing'), |
|
27 | + 'AG' => __('Antigua and Barbuda', 'invoicing'), |
|
28 | + 'AR' => __('Argentina', 'invoicing'), |
|
29 | + 'AM' => __('Armenia', 'invoicing'), |
|
30 | + 'AW' => __('Aruba', 'invoicing'), |
|
31 | + 'AU' => __('Australia', 'invoicing'), |
|
32 | + 'AT' => __('Austria', 'invoicing'), |
|
33 | + 'AZ' => __('Azerbaijan', 'invoicing'), |
|
34 | + 'BS' => __('Bahamas', 'invoicing'), |
|
35 | + 'BH' => __('Bahrain', 'invoicing'), |
|
36 | + 'BD' => __('Bangladesh', 'invoicing'), |
|
37 | + 'BB' => __('Barbados', 'invoicing'), |
|
38 | + 'BY' => __('Belarus', 'invoicing'), |
|
39 | + 'BE' => __('Belgium', 'invoicing'), |
|
40 | + 'BZ' => __('Belize', 'invoicing'), |
|
41 | + 'BJ' => __('Benin', 'invoicing'), |
|
42 | + 'BM' => __('Bermuda', 'invoicing'), |
|
43 | + 'BT' => __('Bhutan', 'invoicing'), |
|
44 | + 'BO' => __('Bolivia', 'invoicing'), |
|
45 | + 'BQ' => __('Bonaire, Saint Eustatius and Saba', 'invoicing'), |
|
46 | + 'BA' => __('Bosnia and Herzegovina', 'invoicing'), |
|
47 | + 'BW' => __('Botswana', 'invoicing'), |
|
48 | + 'BV' => __('Bouvet Island', 'invoicing'), |
|
49 | + 'BR' => __('Brazil', 'invoicing'), |
|
50 | + 'IO' => __('British Indian Ocean Territory', 'invoicing'), |
|
51 | + 'BN' => __('Brunei Darrussalam', 'invoicing'), |
|
52 | + 'BG' => __('Bulgaria', 'invoicing'), |
|
53 | + 'BF' => __('Burkina Faso', 'invoicing'), |
|
54 | + 'BI' => __('Burundi', 'invoicing'), |
|
55 | + 'KH' => __('Cambodia', 'invoicing'), |
|
56 | + 'CM' => __('Cameroon', 'invoicing'), |
|
57 | + 'CV' => __('Cape Verde', 'invoicing'), |
|
58 | + 'KY' => __('Cayman Islands', 'invoicing'), |
|
59 | + 'CF' => __('Central African Republic', 'invoicing'), |
|
60 | + 'TD' => __('Chad', 'invoicing'), |
|
61 | + 'CL' => __('Chile', 'invoicing'), |
|
62 | + 'CN' => __('China', 'invoicing'), |
|
63 | + 'CX' => __('Christmas Island', 'invoicing'), |
|
64 | + 'CC' => __('Cocos Islands', 'invoicing'), |
|
65 | + 'CO' => __('Colombia', 'invoicing'), |
|
66 | + 'KM' => __('Comoros', 'invoicing'), |
|
67 | + 'CD' => __('Congo, Democratic People\'s Republic', 'invoicing'), |
|
68 | + 'CG' => __('Congo, Republic of', 'invoicing'), |
|
69 | + 'CK' => __('Cook Islands', 'invoicing'), |
|
70 | + 'CR' => __('Costa Rica', 'invoicing'), |
|
71 | + 'CI' => __('Cote d\'Ivoire', 'invoicing'), |
|
72 | + 'HR' => __('Croatia/Hrvatska', 'invoicing'), |
|
73 | + 'CU' => __('Cuba', 'invoicing'), |
|
74 | + 'CW' => __('CuraÇao', 'invoicing'), |
|
75 | + 'CY' => __('Cyprus', 'invoicing'), |
|
76 | + 'CZ' => __('Czech Republic', 'invoicing'), |
|
77 | + 'DK' => __('Denmark', 'invoicing'), |
|
78 | + 'DJ' => __('Djibouti', 'invoicing'), |
|
79 | + 'DM' => __('Dominica', 'invoicing'), |
|
80 | + 'DO' => __('Dominican Republic', 'invoicing'), |
|
81 | + 'TP' => __('East Timor', 'invoicing'), |
|
82 | + 'EC' => __('Ecuador', 'invoicing'), |
|
83 | + 'EG' => __('Egypt', 'invoicing'), |
|
84 | + 'GQ' => __('Equatorial Guinea', 'invoicing'), |
|
85 | + 'SV' => __('El Salvador', 'invoicing'), |
|
86 | + 'ER' => __('Eritrea', 'invoicing'), |
|
87 | + 'EE' => __('Estonia', 'invoicing'), |
|
88 | + 'ET' => __('Ethiopia', 'invoicing'), |
|
89 | + 'FK' => __('Falkland Islands', 'invoicing'), |
|
90 | + 'FO' => __('Faroe Islands', 'invoicing'), |
|
91 | + 'FJ' => __('Fiji', 'invoicing'), |
|
92 | + 'FI' => __('Finland', 'invoicing'), |
|
93 | + 'FR' => __('France', 'invoicing'), |
|
94 | + 'GF' => __('French Guiana', 'invoicing'), |
|
95 | + 'PF' => __('French Polynesia', 'invoicing'), |
|
96 | + 'TF' => __('French Southern Territories', 'invoicing'), |
|
97 | + 'GA' => __('Gabon', 'invoicing'), |
|
98 | + 'GM' => __('Gambia', 'invoicing'), |
|
99 | + 'GE' => __('Georgia', 'invoicing'), |
|
100 | + 'DE' => __('Germany', 'invoicing'), |
|
101 | + 'GR' => __('Greece', 'invoicing'), |
|
102 | + 'GH' => __('Ghana', 'invoicing'), |
|
103 | + 'GI' => __('Gibraltar', 'invoicing'), |
|
104 | + 'GL' => __('Greenland', 'invoicing'), |
|
105 | + 'GD' => __('Grenada', 'invoicing'), |
|
106 | + 'GP' => __('Guadeloupe', 'invoicing'), |
|
107 | + 'GU' => __('Guam', 'invoicing'), |
|
108 | + 'GT' => __('Guatemala', 'invoicing'), |
|
109 | + 'GG' => __('Guernsey', 'invoicing'), |
|
110 | + 'GN' => __('Guinea', 'invoicing'), |
|
111 | + 'GW' => __('Guinea-Bissau', 'invoicing'), |
|
112 | + 'GY' => __('Guyana', 'invoicing'), |
|
113 | + 'HT' => __('Haiti', 'invoicing'), |
|
114 | + 'HM' => __('Heard and McDonald Islands', 'invoicing'), |
|
115 | + 'VA' => __('Holy See (City Vatican State)', 'invoicing'), |
|
116 | + 'HN' => __('Honduras', 'invoicing'), |
|
117 | + 'HK' => __('Hong Kong', 'invoicing'), |
|
118 | + 'HU' => __('Hungary', 'invoicing'), |
|
119 | + 'IS' => __('Iceland', 'invoicing'), |
|
120 | + 'IN' => __('India', 'invoicing'), |
|
121 | + 'ID' => __('Indonesia', 'invoicing'), |
|
122 | + 'IR' => __('Iran', 'invoicing'), |
|
123 | + 'IQ' => __('Iraq', 'invoicing'), |
|
124 | + 'IE' => __('Ireland', 'invoicing'), |
|
125 | + 'IM' => __('Isle of Man', 'invoicing'), |
|
126 | + 'IL' => __('Israel', 'invoicing'), |
|
127 | + 'IT' => __('Italy', 'invoicing'), |
|
128 | + 'JM' => __('Jamaica', 'invoicing'), |
|
129 | + 'JP' => __('Japan', 'invoicing'), |
|
130 | + 'JE' => __('Jersey', 'invoicing'), |
|
131 | + 'JO' => __('Jordan', 'invoicing'), |
|
132 | + 'KZ' => __('Kazakhstan', 'invoicing'), |
|
133 | + 'KE' => __('Kenya', 'invoicing'), |
|
134 | + 'KI' => __('Kiribati', 'invoicing'), |
|
135 | + 'KW' => __('Kuwait', 'invoicing'), |
|
136 | + 'KG' => __('Kyrgyzstan', 'invoicing'), |
|
137 | + 'LA' => __('Lao People\'s Democratic Republic', 'invoicing'), |
|
138 | + 'LV' => __('Latvia', 'invoicing'), |
|
139 | + 'LB' => __('Lebanon', 'invoicing'), |
|
140 | + 'LS' => __('Lesotho', 'invoicing'), |
|
141 | + 'LR' => __('Liberia', 'invoicing'), |
|
142 | + 'LY' => __('Libyan Arab Jamahiriya', 'invoicing'), |
|
143 | + 'LI' => __('Liechtenstein', 'invoicing'), |
|
144 | + 'LT' => __('Lithuania', 'invoicing'), |
|
145 | + 'LU' => __('Luxembourg', 'invoicing'), |
|
146 | + 'MO' => __('Macau', 'invoicing'), |
|
147 | + 'MK' => __('Macedonia', 'invoicing'), |
|
148 | + 'MG' => __('Madagascar', 'invoicing'), |
|
149 | + 'MW' => __('Malawi', 'invoicing'), |
|
150 | + 'MY' => __('Malaysia', 'invoicing'), |
|
151 | + 'MV' => __('Maldives', 'invoicing'), |
|
152 | + 'ML' => __('Mali', 'invoicing'), |
|
153 | + 'MT' => __('Malta', 'invoicing'), |
|
154 | + 'MH' => __('Marshall Islands', 'invoicing'), |
|
155 | + 'MQ' => __('Martinique', 'invoicing'), |
|
156 | + 'MR' => __('Mauritania', 'invoicing'), |
|
157 | + 'MU' => __('Mauritius', 'invoicing'), |
|
158 | + 'YT' => __('Mayotte', 'invoicing'), |
|
159 | + 'MX' => __('Mexico', 'invoicing'), |
|
160 | + 'FM' => __('Micronesia', 'invoicing'), |
|
161 | + 'MD' => __('Moldova, Republic of', 'invoicing'), |
|
162 | + 'MC' => __('Monaco', 'invoicing'), |
|
163 | + 'MN' => __('Mongolia', 'invoicing'), |
|
164 | + 'ME' => __('Montenegro', 'invoicing'), |
|
165 | + 'MS' => __('Montserrat', 'invoicing'), |
|
166 | + 'MA' => __('Morocco', 'invoicing'), |
|
167 | + 'MZ' => __('Mozambique', 'invoicing'), |
|
168 | + 'MM' => __('Myanmar', 'invoicing'), |
|
169 | + 'NA' => __('Namibia', 'invoicing'), |
|
170 | + 'NR' => __('Nauru', 'invoicing'), |
|
171 | + 'NP' => __('Nepal', 'invoicing'), |
|
172 | + 'NL' => __('Netherlands', 'invoicing'), |
|
173 | + 'AN' => __('Netherlands Antilles', 'invoicing'), |
|
174 | + 'NC' => __('New Caledonia', 'invoicing'), |
|
175 | + 'NZ' => __('New Zealand', 'invoicing'), |
|
176 | + 'NI' => __('Nicaragua', 'invoicing'), |
|
177 | + 'NE' => __('Niger', 'invoicing'), |
|
178 | + 'NG' => __('Nigeria', 'invoicing'), |
|
179 | + 'NU' => __('Niue', 'invoicing'), |
|
180 | + 'NF' => __('Norfolk Island', 'invoicing'), |
|
181 | + 'KP' => __('North Korea', 'invoicing'), |
|
182 | + 'MP' => __('Northern Mariana Islands', 'invoicing'), |
|
183 | + 'NO' => __('Norway', 'invoicing'), |
|
184 | + 'OM' => __('Oman', 'invoicing'), |
|
185 | + 'PK' => __('Pakistan', 'invoicing'), |
|
186 | + 'PW' => __('Palau', 'invoicing'), |
|
187 | + 'PS' => __('Palestinian Territories', 'invoicing'), |
|
188 | + 'PA' => __('Panama', 'invoicing'), |
|
189 | + 'PG' => __('Papua New Guinea', 'invoicing'), |
|
190 | + 'PY' => __('Paraguay', 'invoicing'), |
|
191 | + 'PE' => __('Peru', 'invoicing'), |
|
192 | + 'PH' => __('Phillipines', 'invoicing'), |
|
193 | + 'PN' => __('Pitcairn Island', 'invoicing'), |
|
194 | + 'PL' => __('Poland', 'invoicing'), |
|
195 | + 'PT' => __('Portugal', 'invoicing'), |
|
196 | + 'PR' => __('Puerto Rico', 'invoicing'), |
|
197 | + 'QA' => __('Qatar', 'invoicing'), |
|
198 | + 'XK' => __('Republic of Kosovo', 'invoicing'), |
|
199 | + 'RE' => __('Reunion Island', 'invoicing'), |
|
200 | + 'RO' => __('Romania', 'invoicing'), |
|
201 | + 'RU' => __('Russian Federation', 'invoicing'), |
|
202 | + 'RW' => __('Rwanda', 'invoicing'), |
|
203 | + 'BL' => __('Saint Barthélemy', 'invoicing'), |
|
204 | + 'SH' => __('Saint Helena', 'invoicing'), |
|
205 | + 'KN' => __('Saint Kitts and Nevis', 'invoicing'), |
|
206 | + 'LC' => __('Saint Lucia', 'invoicing'), |
|
207 | + 'MF' => __('Saint Martin (French)', 'invoicing'), |
|
208 | + 'SX' => __('Saint Martin (Dutch)', 'invoicing'), |
|
209 | + 'PM' => __('Saint Pierre and Miquelon', 'invoicing'), |
|
210 | + 'VC' => __('Saint Vincent and the Grenadines', 'invoicing'), |
|
211 | + 'SM' => __('San Marino', 'invoicing'), |
|
212 | + 'ST' => __('São Tomé and Príncipe', 'invoicing'), |
|
213 | + 'SA' => __('Saudi Arabia', 'invoicing'), |
|
214 | + 'SN' => __('Senegal', 'invoicing'), |
|
215 | + 'RS' => __('Serbia', 'invoicing'), |
|
216 | + 'SC' => __('Seychelles', 'invoicing'), |
|
217 | + 'SL' => __('Sierra Leone', 'invoicing'), |
|
218 | + 'SG' => __('Singapore', 'invoicing'), |
|
219 | + 'SK' => __('Slovak Republic', 'invoicing'), |
|
220 | + 'SI' => __('Slovenia', 'invoicing'), |
|
221 | + 'SB' => __('Solomon Islands', 'invoicing'), |
|
222 | + 'SO' => __('Somalia', 'invoicing'), |
|
223 | + 'ZA' => __('South Africa', 'invoicing'), |
|
224 | + 'GS' => __('South Georgia', 'invoicing'), |
|
225 | + 'KR' => __('South Korea', 'invoicing'), |
|
226 | + 'SS' => __('South Sudan', 'invoicing'), |
|
227 | + 'ES' => __('Spain', 'invoicing'), |
|
228 | + 'LK' => __('Sri Lanka', 'invoicing'), |
|
229 | + 'SD' => __('Sudan', 'invoicing'), |
|
230 | + 'SR' => __('Suriname', 'invoicing'), |
|
231 | + 'SJ' => __('Svalbard and Jan Mayen Islands', 'invoicing'), |
|
232 | + 'SZ' => __('Swaziland', 'invoicing'), |
|
233 | + 'SE' => __('Sweden', 'invoicing'), |
|
234 | + 'CH' => __('Switzerland', 'invoicing'), |
|
235 | + 'SY' => __('Syrian Arab Republic', 'invoicing'), |
|
236 | + 'TW' => __('Taiwan', 'invoicing'), |
|
237 | + 'TJ' => __('Tajikistan', 'invoicing'), |
|
238 | + 'TZ' => __('Tanzania', 'invoicing'), |
|
239 | + 'TH' => __('Thailand', 'invoicing'), |
|
240 | + 'TL' => __('Timor-Leste', 'invoicing'), |
|
241 | + 'TG' => __('Togo', 'invoicing'), |
|
242 | + 'TK' => __('Tokelau', 'invoicing'), |
|
243 | + 'TO' => __('Tonga', 'invoicing'), |
|
244 | + 'TT' => __('Trinidad and Tobago', 'invoicing'), |
|
245 | + 'TN' => __('Tunisia', 'invoicing'), |
|
246 | + 'TR' => __('Turkey', 'invoicing'), |
|
247 | + 'TM' => __('Turkmenistan', 'invoicing'), |
|
248 | + 'TC' => __('Turks and Caicos Islands', 'invoicing'), |
|
249 | + 'TV' => __('Tuvalu', 'invoicing'), |
|
250 | + 'UG' => __('Uganda', 'invoicing'), |
|
251 | + 'UA' => __('Ukraine', 'invoicing'), |
|
252 | + 'AE' => __('United Arab Emirates', 'invoicing'), |
|
253 | + 'UY' => __('Uruguay', 'invoicing'), |
|
254 | + 'UM' => __('US Minor Outlying Islands', 'invoicing'), |
|
255 | + 'UZ' => __('Uzbekistan', 'invoicing'), |
|
256 | + 'VU' => __('Vanuatu', 'invoicing'), |
|
257 | + 'VE' => __('Venezuela', 'invoicing'), |
|
258 | + 'VN' => __('Vietnam', 'invoicing'), |
|
259 | + 'VG' => __('Virgin Islands (British)', 'invoicing'), |
|
260 | + 'VI' => __('Virgin Islands (USA)', 'invoicing'), |
|
261 | + 'WF' => __('Wallis and Futuna Islands', 'invoicing'), |
|
262 | + 'EH' => __('Western Sahara', 'invoicing'), |
|
263 | + 'WS' => __('Western Samoa', 'invoicing'), |
|
264 | + 'YE' => __('Yemen', 'invoicing'), |
|
265 | + 'ZM' => __('Zambia', 'invoicing'), |
|
266 | + 'ZW' => __('Zimbabwe', 'invoicing'), |
|
267 | 267 | ); |
@@ -9,7 +9,7 @@ |
||
9 | 9 | * @version 1.0.14 |
10 | 10 | */ |
11 | 11 | |
12 | -defined( 'ABSPATH' ) || exit; |
|
12 | +defined('ABSPATH') || exit; |
|
13 | 13 | |
14 | 14 | return array( |
15 | 15 | 'US' => __('United States', 'invoicing'), |
@@ -31,25 +31,25 @@ |
||
31 | 31 | public function get_privacy_message() { |
32 | 32 | |
33 | 33 | $content = '<div class="wp-suggested-text">' . |
34 | - '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
35 | - '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
36 | - '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
37 | - '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
38 | - '<ul>' . |
|
39 | - '<li>' . __( '- Send you important account/order/service information.', 'invoicing' ) . '</li>' . |
|
40 | - '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
41 | - '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
42 | - '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
43 | - '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
44 | - '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
45 | - '</ul>' . |
|
46 | - '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
47 | - '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
48 | - '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
49 | - '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
50 | - '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
51 | - '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
52 | - '</div>'; |
|
34 | + '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
35 | + '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
36 | + '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
37 | + '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
38 | + '<ul>' . |
|
39 | + '<li>' . __( '- Send you important account/order/service information.', 'invoicing' ) . '</li>' . |
|
40 | + '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
41 | + '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
42 | + '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
43 | + '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
44 | + '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
45 | + '</ul>' . |
|
46 | + '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
47 | + '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
48 | + '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
49 | + '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
50 | + '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
51 | + '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
52 | + '</div>'; |
|
53 | 53 | |
54 | 54 | return apply_filters( 'wpinv_privacy_policy_content', $content ); |
55 | 55 | } |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * Privacy/GDPR related functionality which ties into WordPress functionality. |
4 | 4 | */ |
5 | 5 | |
6 | -defined( 'ABSPATH' ) || exit; |
|
6 | +defined('ABSPATH') || exit; |
|
7 | 7 | |
8 | 8 | /** |
9 | 9 | * WPInv_Privacy Class. |
@@ -14,13 +14,13 @@ discard block |
||
14 | 14 | * Init - hook into events. |
15 | 15 | */ |
16 | 16 | public function __construct() { |
17 | - parent::__construct( __( 'Invoicing', 'invoicing' ) ); |
|
17 | + parent::__construct(__('Invoicing', 'invoicing')); |
|
18 | 18 | |
19 | 19 | // Include supporting classes. |
20 | 20 | include_once 'class-wpinv-privacy-exporters.php'; |
21 | 21 | |
22 | 22 | // This hook registers Invoicing data exporters. |
23 | - $this->add_exporter( 'wpinv-customer-invoices', __( 'Customer Invoices', 'invoicing' ), array( 'WPInv_Privacy_Exporters', 'customer_invoice_data_exporter' ) ); |
|
23 | + $this->add_exporter('wpinv-customer-invoices', __('Customer Invoices', 'invoicing'), array('WPInv_Privacy_Exporters', 'customer_invoice_data_exporter')); |
|
24 | 24 | } |
25 | 25 | |
26 | 26 | /** |
@@ -31,27 +31,27 @@ discard block |
||
31 | 31 | public function get_privacy_message() { |
32 | 32 | |
33 | 33 | $content = '<div class="wp-suggested-text">' . |
34 | - '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
35 | - '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
36 | - '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
37 | - '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
34 | + '<h2>' . __('Invoices and checkout', 'invoicing') . '</h2>' . |
|
35 | + '<p class="privacy-policy-tutorial">' . __('Example privacy texts.', 'invoicing') . '</p>' . |
|
36 | + '<p>' . __('We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing') . '</p>' . |
|
37 | + '<p>' . __('Handling this data also allows us to:', 'invoicing') . '</p>' . |
|
38 | 38 | '<ul>' . |
39 | - '<li>' . __( '- Send you important account/order/service information.', 'invoicing' ) . '</li>' . |
|
40 | - '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
41 | - '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
42 | - '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
43 | - '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
44 | - '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
39 | + '<li>' . __('- Send you important account/order/service information.', 'invoicing') . '</li>' . |
|
40 | + '<li>' . __('- Estimate taxes based on your location.', 'invoicing') . '</li>' . |
|
41 | + '<li>' . __('- Respond to your queries or complaints.', 'invoicing') . '</li>' . |
|
42 | + '<li>' . __('- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing') . '</li>' . |
|
43 | + '<li>' . __('- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing') . '</li>' . |
|
44 | + '<li>' . __('- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing') . '</li>' . |
|
45 | 45 | '</ul>' . |
46 | - '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
47 | - '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
48 | - '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
49 | - '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
50 | - '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
51 | - '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
46 | + '<p>' . __('In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing') . '</p>' . |
|
47 | + '<h2>' . __('What we share with others', 'invoicing') . '</h2>' . |
|
48 | + '<p>' . __('We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing') . '</p>' . |
|
49 | + '<p class="privacy-policy-tutorial">' . __('In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing') . '</p>' . |
|
50 | + '<p>' . __('We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing') . '</p>' . |
|
51 | + '<p>' . __('Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing') . '</p>' . |
|
52 | 52 | '</div>'; |
53 | 53 | |
54 | - return apply_filters( 'wpinv_privacy_policy_content', $content ); |
|
54 | + return apply_filters('wpinv_privacy_policy_content', $content); |
|
55 | 55 | } |
56 | 56 | |
57 | 57 | } |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * Personal data exporters. |
4 | 4 | */ |
5 | 5 | |
6 | -defined( 'ABSPATH' ) || exit; |
|
6 | +defined('ABSPATH') || exit; |
|
7 | 7 | |
8 | 8 | /** |
9 | 9 | * WPInv_Privacy_Exporters Class. |
@@ -17,38 +17,38 @@ discard block |
||
17 | 17 | * @param int $page Page. |
18 | 18 | * @return array An array of invoice data in name value pairs |
19 | 19 | */ |
20 | - public static function customer_invoice_data_exporter( $email_address, $page ) { |
|
20 | + public static function customer_invoice_data_exporter($email_address, $page) { |
|
21 | 21 | $done = false; |
22 | 22 | $page = (int) $page; |
23 | 23 | $data_to_export = array(); |
24 | 24 | |
25 | - $user = get_user_by( 'email', $email_address ); |
|
26 | - if ( ! $user instanceof WP_User ) { |
|
25 | + $user = get_user_by('email', $email_address); |
|
26 | + if (!$user instanceof WP_User) { |
|
27 | 27 | return array( |
28 | 28 | 'data' => $data_to_export, |
29 | 29 | 'done' => true, |
30 | 30 | ); |
31 | 31 | } |
32 | 32 | |
33 | - $args = array( |
|
33 | + $args = array( |
|
34 | 34 | 'limit' => 30, |
35 | 35 | 'page' => $page, |
36 | 36 | 'user' => $user->ID, |
37 | 37 | ); |
38 | 38 | |
39 | - $invoices = wpinv_get_invoices( $args ); |
|
39 | + $invoices = wpinv_get_invoices($args); |
|
40 | 40 | |
41 | - if ( 0 < count( $invoices ) ) { |
|
42 | - foreach ( $invoices as $invoice ) { |
|
41 | + if (0 < count($invoices)) { |
|
42 | + foreach ($invoices as $invoice) { |
|
43 | 43 | $data_to_export[] = array( |
44 | 44 | 'group_id' => 'customer_invoices', |
45 | - 'group_label' => __( 'Invoicing Data', 'invoicing' ), |
|
46 | - 'group_description' => __( 'Customer invoicing data.', 'invoicing' ), |
|
45 | + 'group_label' => __('Invoicing Data', 'invoicing'), |
|
46 | + 'group_description' => __('Customer invoicing data.', 'invoicing'), |
|
47 | 47 | 'item_id' => "wpinv-{$invoice->ID}", |
48 | - 'data' => self::get_customer_invoice_data( $invoice ), |
|
48 | + 'data' => self::get_customer_invoice_data($invoice), |
|
49 | 49 | ); |
50 | 50 | } |
51 | - $done = 30 > count( $invoices ); |
|
51 | + $done = 30 > count($invoices); |
|
52 | 52 | } else { |
53 | 53 | $done = true; |
54 | 54 | } |
@@ -66,59 +66,59 @@ discard block |
||
66 | 66 | * @param WPInv_Invoice $invoice invoice object. |
67 | 67 | * @return array |
68 | 68 | */ |
69 | - public static function get_customer_invoice_data( $invoice ) { |
|
69 | + public static function get_customer_invoice_data($invoice) { |
|
70 | 70 | $personal_data = array(); |
71 | 71 | |
72 | 72 | $props_to_export = array( |
73 | - 'number' => __( 'Invoice Number', 'invoicing' ), |
|
74 | - 'created_date' => __( 'Invoice Date', 'invoicing' ), |
|
75 | - 'status' => __( 'Invoice Status', 'invoicing' ), |
|
76 | - 'total' => __( 'Invoice Total', 'invoicing' ), |
|
77 | - 'items' => __( 'Invoice Items', 'invoicing' ), |
|
78 | - 'first_name' => __( 'First Name', 'invoicing' ), |
|
79 | - 'last_name' => __( 'Last Name', 'invoicing' ), |
|
80 | - 'email' => __( 'Email Address', 'invoicing' ), |
|
81 | - '_wpinv_company' => __( 'Company', 'invoicing' ), |
|
82 | - 'phone' => __( 'Phone Number', 'invoicing' ), |
|
83 | - 'address' => __( 'Address', 'invoicing' ), |
|
84 | - '_wpinv_city' => __( 'City', 'invoicing' ), |
|
85 | - '_wpinv_country' => __( 'Country', 'invoicing' ), |
|
86 | - '_wpinv_state' => __( 'State', 'invoicing' ), |
|
87 | - '_wpinv_zip' => __( 'Zip Code', 'invoicing' ), |
|
73 | + 'number' => __('Invoice Number', 'invoicing'), |
|
74 | + 'created_date' => __('Invoice Date', 'invoicing'), |
|
75 | + 'status' => __('Invoice Status', 'invoicing'), |
|
76 | + 'total' => __('Invoice Total', 'invoicing'), |
|
77 | + 'items' => __('Invoice Items', 'invoicing'), |
|
78 | + 'first_name' => __('First Name', 'invoicing'), |
|
79 | + 'last_name' => __('Last Name', 'invoicing'), |
|
80 | + 'email' => __('Email Address', 'invoicing'), |
|
81 | + '_wpinv_company' => __('Company', 'invoicing'), |
|
82 | + 'phone' => __('Phone Number', 'invoicing'), |
|
83 | + 'address' => __('Address', 'invoicing'), |
|
84 | + '_wpinv_city' => __('City', 'invoicing'), |
|
85 | + '_wpinv_country' => __('Country', 'invoicing'), |
|
86 | + '_wpinv_state' => __('State', 'invoicing'), |
|
87 | + '_wpinv_zip' => __('Zip Code', 'invoicing'), |
|
88 | 88 | ); |
89 | 89 | |
90 | - $subscription = wpinv_get_subscription( $invoice ); |
|
90 | + $subscription = wpinv_get_subscription($invoice); |
|
91 | 91 | $period = $initial_amt = $bill_times = $billed = $renewal_date = ''; |
92 | 92 | |
93 | - if ( $invoice->is_recurring() && !empty( $subscription ) ) { |
|
94 | - $frequency = WPInv_Subscriptions::wpinv_get_pretty_subscription_frequency( $subscription->period,$subscription->frequency ); |
|
95 | - $period = wpinv_price( wpinv_format_amount( $subscription->recurring_amount ), wpinv_get_invoice_currency_code( $subscription->parent_payment_id ) ) . ' / ' . $frequency; |
|
96 | - $initial_amt = wpinv_price( wpinv_format_amount( $subscription->initial_amount ), wpinv_get_invoice_currency_code( $subscription->parent_payment_id ) ); |
|
97 | - $bill_times = $subscription->get_times_billed() . ' / ' . ( ( $subscription->bill_times == 0 ) ? 'Until Cancelled' : $subscription->bill_times ); |
|
98 | - $renewal_date = ! empty( $subscription->expiration ) ? date_i18n( get_option( 'date_format' ), strtotime( $subscription->expiration ) ) : __( 'N/A', 'invoicing' ); |
|
99 | - |
|
100 | - $props_to_export['period'] = __( 'Billing Cycle', 'invoicing' ); |
|
101 | - $props_to_export['initial_amount'] = __( 'Initial Amount', 'invoicing' ); |
|
102 | - $props_to_export['bill_times'] = __( 'Times Billed', 'invoicing' ); |
|
103 | - $props_to_export['renewal_date'] = __( 'Renewal Date', 'invoicing' ); |
|
93 | + if ($invoice->is_recurring() && !empty($subscription)) { |
|
94 | + $frequency = WPInv_Subscriptions::wpinv_get_pretty_subscription_frequency($subscription->period, $subscription->frequency); |
|
95 | + $period = wpinv_price(wpinv_format_amount($subscription->recurring_amount), wpinv_get_invoice_currency_code($subscription->parent_payment_id)) . ' / ' . $frequency; |
|
96 | + $initial_amt = wpinv_price(wpinv_format_amount($subscription->initial_amount), wpinv_get_invoice_currency_code($subscription->parent_payment_id)); |
|
97 | + $bill_times = $subscription->get_times_billed() . ' / ' . (($subscription->bill_times == 0) ? 'Until Cancelled' : $subscription->bill_times); |
|
98 | + $renewal_date = !empty($subscription->expiration) ? date_i18n(get_option('date_format'), strtotime($subscription->expiration)) : __('N/A', 'invoicing'); |
|
99 | + |
|
100 | + $props_to_export['period'] = __('Billing Cycle', 'invoicing'); |
|
101 | + $props_to_export['initial_amount'] = __('Initial Amount', 'invoicing'); |
|
102 | + $props_to_export['bill_times'] = __('Times Billed', 'invoicing'); |
|
103 | + $props_to_export['renewal_date'] = __('Renewal Date', 'invoicing'); |
|
104 | 104 | } |
105 | 105 | |
106 | - $props_to_export['ip'] = __( 'IP Address', 'invoicing' ); |
|
107 | - $props_to_export['view_url'] = __( 'Invoice Link', 'invoicing' ); |
|
106 | + $props_to_export['ip'] = __('IP Address', 'invoicing'); |
|
107 | + $props_to_export['view_url'] = __('Invoice Link', 'invoicing'); |
|
108 | 108 | |
109 | - $props_to_export = apply_filters( 'wpinv_privacy_export_invoice_personal_data_props', $props_to_export, $invoice, $subscription); |
|
109 | + $props_to_export = apply_filters('wpinv_privacy_export_invoice_personal_data_props', $props_to_export, $invoice, $subscription); |
|
110 | 110 | |
111 | - foreach ( $props_to_export as $prop => $name ) { |
|
111 | + foreach ($props_to_export as $prop => $name) { |
|
112 | 112 | $value = ''; |
113 | 113 | |
114 | - switch ( $prop ) { |
|
114 | + switch ($prop) { |
|
115 | 115 | case 'items': |
116 | 116 | $item_names = array(); |
117 | - foreach ( $invoice->get_cart_details() as $key => $cart_item ) { |
|
118 | - $item_quantity = $cart_item['quantity'] > 0 ? absint( $cart_item['quantity'] ) : 1; |
|
117 | + foreach ($invoice->get_cart_details() as $key => $cart_item) { |
|
118 | + $item_quantity = $cart_item['quantity'] > 0 ? absint($cart_item['quantity']) : 1; |
|
119 | 119 | $item_names[] = $cart_item['name'] . ' x ' . $item_quantity; |
120 | 120 | } |
121 | - $value = implode( ', ', $item_names ); |
|
121 | + $value = implode(', ', $item_names); |
|
122 | 122 | break; |
123 | 123 | case 'status': |
124 | 124 | $value = $invoice->get_status(true); |
@@ -139,7 +139,7 @@ discard block |
||
139 | 139 | $value = $renewal_date; |
140 | 140 | break; |
141 | 141 | default: |
142 | - if ( is_callable( array( $invoice, 'get_' . $prop ) ) ) { |
|
142 | + if (is_callable(array($invoice, 'get_' . $prop))) { |
|
143 | 143 | $value = $invoice->{"get_$prop"}(); |
144 | 144 | } else { |
145 | 145 | $value = $invoice->get_meta($prop); |
@@ -147,9 +147,9 @@ discard block |
||
147 | 147 | break; |
148 | 148 | } |
149 | 149 | |
150 | - $value = apply_filters( 'wpi_privacy_export_invoice_personal_data_prop', $value, $prop, $invoice ); |
|
150 | + $value = apply_filters('wpi_privacy_export_invoice_personal_data_prop', $value, $prop, $invoice); |
|
151 | 151 | |
152 | - if ( $value ) { |
|
152 | + if ($value) { |
|
153 | 153 | $personal_data[] = array( |
154 | 154 | 'name' => $name, |
155 | 155 | 'value' => $value, |
@@ -158,7 +158,7 @@ discard block |
||
158 | 158 | |
159 | 159 | } |
160 | 160 | |
161 | - $personal_data = apply_filters( 'wpinv_privacy_export_invoice_personal_data', $personal_data, $invoice ); |
|
161 | + $personal_data = apply_filters('wpinv_privacy_export_invoice_personal_data', $personal_data, $invoice); |
|
162 | 162 | |
163 | 163 | return $personal_data; |
164 | 164 |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * Setup menus in WP admin. |
4 | 4 | */ |
5 | 5 | |
6 | -defined( 'ABSPATH' ) || exit; |
|
6 | +defined('ABSPATH') || exit; |
|
7 | 7 | |
8 | 8 | /** |
9 | 9 | * WC_Admin_Menus Class. |
@@ -13,40 +13,40 @@ discard block |
||
13 | 13 | * Hook in tabs. |
14 | 14 | */ |
15 | 15 | public function __construct() { |
16 | - add_action( 'admin_menu', array( $this, 'admin_menu' ), 10 ); |
|
17 | - add_action( 'admin_menu', array( $this, 'add_addons_menu' ), 99 ); |
|
18 | - add_action( 'admin_menu', array( $this, 'remove_admin_submenus' ), 10 ); |
|
19 | - add_action( 'admin_head-nav-menus.php', array( $this, 'add_nav_menu_meta_boxes' ) ); |
|
16 | + add_action('admin_menu', array($this, 'admin_menu'), 10); |
|
17 | + add_action('admin_menu', array($this, 'add_addons_menu'), 99); |
|
18 | + add_action('admin_menu', array($this, 'remove_admin_submenus'), 10); |
|
19 | + add_action('admin_head-nav-menus.php', array($this, 'add_nav_menu_meta_boxes')); |
|
20 | 20 | } |
21 | 21 | |
22 | 22 | public function admin_menu() { |
23 | 23 | global $menu, $submenu; |
24 | 24 | |
25 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
25 | + if (!wpinv_current_user_can_manage_invoicing()) { |
|
26 | 26 | return; |
27 | 27 | } |
28 | 28 | |
29 | - $capability = apply_filters( 'invoicing_capability', wpinv_get_capability() ); |
|
29 | + $capability = apply_filters('invoicing_capability', wpinv_get_capability()); |
|
30 | 30 | |
31 | - if ( wpinv_current_user_can_manage_invoicing() ) { |
|
32 | - $menu[] = array( '', 'read', 'separator-wpinv', '', 'wp-menu-separator wpinv' ); |
|
31 | + if (wpinv_current_user_can_manage_invoicing()) { |
|
32 | + $menu[] = array('', 'read', 'separator-wpinv', '', 'wp-menu-separator wpinv'); |
|
33 | 33 | |
34 | 34 | // Allow users with 'manage_invocing' capability to create new invoices |
35 | - $submenu['post-new.php?post_type=wpi_invoice'][] = array( '', '', 'post-new.php?post_type=wpi_invoice', '' ); |
|
36 | - $submenu['post-new.php?post_type=wpi_item'][] = array( '', '', 'post-new.php?post_type=wpi_item', '' ); |
|
37 | - $submenu['post-new.php?post_type=wpi_discount'][] = array( '', '', 'post-new.php?post_type=wpi_discount', '' ); |
|
35 | + $submenu['post-new.php?post_type=wpi_invoice'][] = array('', '', 'post-new.php?post_type=wpi_invoice', ''); |
|
36 | + $submenu['post-new.php?post_type=wpi_item'][] = array('', '', 'post-new.php?post_type=wpi_item', ''); |
|
37 | + $submenu['post-new.php?post_type=wpi_discount'][] = array('', '', 'post-new.php?post_type=wpi_discount', ''); |
|
38 | 38 | |
39 | 39 | } |
40 | 40 | |
41 | - $wpi_invoice = get_post_type_object( 'wpi_invoice' ); |
|
41 | + $wpi_invoice = get_post_type_object('wpi_invoice'); |
|
42 | 42 | |
43 | - add_menu_page( __( 'Invoicing', 'invoicing' ), __( 'Invoicing', 'invoicing' ), $capability, 'wpinv', null, $wpi_invoice->menu_icon, '54.123460' ); |
|
43 | + add_menu_page(__('Invoicing', 'invoicing'), __('Invoicing', 'invoicing'), $capability, 'wpinv', null, $wpi_invoice->menu_icon, '54.123460'); |
|
44 | 44 | |
45 | - add_submenu_page( 'wpinv', __( 'Invoice Settings', 'invoicing' ), __( 'Settings', 'invoicing' ), $capability, 'wpinv-settings', array( $this, 'options_page' )); |
|
45 | + add_submenu_page('wpinv', __('Invoice Settings', 'invoicing'), __('Settings', 'invoicing'), $capability, 'wpinv-settings', array($this, 'options_page')); |
|
46 | 46 | } |
47 | 47 | |
48 | - public function add_addons_menu(){ |
|
49 | - if ( !apply_filters( 'wpi_show_addons_page', true ) ) { |
|
48 | + public function add_addons_menu() { |
|
49 | + if (!apply_filters('wpi_show_addons_page', true)) { |
|
50 | 50 | return; |
51 | 51 | } |
52 | 52 | |
@@ -56,78 +56,78 @@ discard block |
||
56 | 56 | __('Extensions', 'invoicing'), |
57 | 57 | 'manage_options', |
58 | 58 | 'wpi-addons', |
59 | - array( $this, 'addons_page' ) |
|
59 | + array($this, 'addons_page') |
|
60 | 60 | ); |
61 | 61 | } |
62 | 62 | |
63 | - public function addons_page(){ |
|
63 | + public function addons_page() { |
|
64 | 64 | $addon_obj = new WPInv_Admin_Addons(); |
65 | 65 | $addon_obj->output(); |
66 | 66 | } |
67 | 67 | |
68 | 68 | function options_page() { |
69 | - $page = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : false; |
|
69 | + $page = isset($_GET['page']) ? strtolower($_GET['page']) : false; |
|
70 | 70 | |
71 | - if ( $page !== 'wpinv-settings' ) { |
|
71 | + if ($page !== 'wpinv-settings') { |
|
72 | 72 | return; |
73 | 73 | } |
74 | 74 | |
75 | 75 | $settings_tabs = wpinv_get_settings_tabs(); |
76 | 76 | $settings_tabs = empty($settings_tabs) ? array() : $settings_tabs; |
77 | - $active_tab = isset( $_GET['tab'] ) && array_key_exists( $_GET['tab'], $settings_tabs ) ? sanitize_text_field( $_GET['tab'] ) : 'general'; |
|
78 | - $sections = wpinv_get_settings_tab_sections( $active_tab ); |
|
77 | + $active_tab = isset($_GET['tab']) && array_key_exists($_GET['tab'], $settings_tabs) ? sanitize_text_field($_GET['tab']) : 'general'; |
|
78 | + $sections = wpinv_get_settings_tab_sections($active_tab); |
|
79 | 79 | $key = 'main'; |
80 | 80 | |
81 | - if ( is_array( $sections ) ) { |
|
82 | - $key = key( $sections ); |
|
81 | + if (is_array($sections)) { |
|
82 | + $key = key($sections); |
|
83 | 83 | } |
84 | 84 | |
85 | - $registered_sections = wpinv_get_settings_tab_sections( $active_tab ); |
|
86 | - $section = isset( $_GET['section'] ) && ! empty( $registered_sections ) && array_key_exists( $_GET['section'], $registered_sections ) ? $_GET['section'] : $key; |
|
85 | + $registered_sections = wpinv_get_settings_tab_sections($active_tab); |
|
86 | + $section = isset($_GET['section']) && !empty($registered_sections) && array_key_exists($_GET['section'], $registered_sections) ? $_GET['section'] : $key; |
|
87 | 87 | ob_start(); |
88 | 88 | ?> |
89 | 89 | <div class="wrap"> |
90 | 90 | <h1 class="nav-tab-wrapper"> |
91 | 91 | <?php |
92 | - foreach( wpinv_get_settings_tabs() as $tab_id => $tab_name ) { |
|
93 | - $tab_url = add_query_arg( array( |
|
92 | + foreach (wpinv_get_settings_tabs() as $tab_id => $tab_name) { |
|
93 | + $tab_url = add_query_arg(array( |
|
94 | 94 | 'settings-updated' => false, |
95 | 95 | 'tab' => $tab_id, |
96 | - ) ); |
|
96 | + )); |
|
97 | 97 | |
98 | 98 | // Remove the section from the tabs so we always end up at the main section |
99 | - $tab_url = remove_query_arg( 'section', $tab_url ); |
|
100 | - $tab_url = remove_query_arg( 'wpi_sub', $tab_url ); |
|
99 | + $tab_url = remove_query_arg('section', $tab_url); |
|
100 | + $tab_url = remove_query_arg('wpi_sub', $tab_url); |
|
101 | 101 | |
102 | 102 | $active = $active_tab == $tab_id ? ' nav-tab-active' : ''; |
103 | 103 | |
104 | - echo '<a href="' . esc_url( $tab_url ) . '" title="' . esc_attr( $tab_name ) . '" class="nav-tab' . $active . '">'; |
|
105 | - echo esc_html( $tab_name ); |
|
104 | + echo '<a href="' . esc_url($tab_url) . '" title="' . esc_attr($tab_name) . '" class="nav-tab' . $active . '">'; |
|
105 | + echo esc_html($tab_name); |
|
106 | 106 | echo '</a>'; |
107 | 107 | } |
108 | 108 | ?> |
109 | 109 | </h1> |
110 | 110 | <?php |
111 | - $number_of_sections = count( $sections ); |
|
111 | + $number_of_sections = count($sections); |
|
112 | 112 | $number = 0; |
113 | - if ( $number_of_sections > 1 ) { |
|
113 | + if ($number_of_sections > 1) { |
|
114 | 114 | echo '<div><ul class="subsubsub">'; |
115 | - foreach( $sections as $section_id => $section_name ) { |
|
115 | + foreach ($sections as $section_id => $section_name) { |
|
116 | 116 | echo '<li>'; |
117 | 117 | $number++; |
118 | - $tab_url = add_query_arg( array( |
|
118 | + $tab_url = add_query_arg(array( |
|
119 | 119 | 'settings-updated' => false, |
120 | 120 | 'tab' => $active_tab, |
121 | 121 | 'section' => $section_id |
122 | - ) ); |
|
123 | - $tab_url = remove_query_arg( 'wpi_sub', $tab_url ); |
|
122 | + )); |
|
123 | + $tab_url = remove_query_arg('wpi_sub', $tab_url); |
|
124 | 124 | $class = ''; |
125 | - if ( $section == $section_id ) { |
|
125 | + if ($section == $section_id) { |
|
126 | 126 | $class = 'current'; |
127 | 127 | } |
128 | - echo '<a class="' . $class . '" href="' . esc_url( $tab_url ) . '">' . $section_name . '</a>'; |
|
128 | + echo '<a class="' . $class . '" href="' . esc_url($tab_url) . '">' . $section_name . '</a>'; |
|
129 | 129 | |
130 | - if ( $number != $number_of_sections ) { |
|
130 | + if ($number != $number_of_sections) { |
|
131 | 131 | echo ' | '; |
132 | 132 | } |
133 | 133 | echo '</li>'; |
@@ -139,19 +139,19 @@ discard block |
||
139 | 139 | <form method="post" action="options.php"> |
140 | 140 | <table class="form-table"> |
141 | 141 | <?php |
142 | - settings_fields( 'wpinv_settings' ); |
|
142 | + settings_fields('wpinv_settings'); |
|
143 | 143 | |
144 | - if ( 'main' === $section ) { |
|
145 | - do_action( 'wpinv_settings_tab_top', $active_tab ); |
|
144 | + if ('main' === $section) { |
|
145 | + do_action('wpinv_settings_tab_top', $active_tab); |
|
146 | 146 | } |
147 | 147 | |
148 | - do_action( 'wpinv_settings_tab_top_' . $active_tab . '_' . $section, $active_tab, $section ); |
|
149 | - do_settings_sections( 'wpinv_settings_' . $active_tab . '_' . $section, $active_tab, $section ); |
|
150 | - do_action( 'wpinv_settings_tab_bottom_' . $active_tab . '_' . $section, $active_tab, $section ); |
|
148 | + do_action('wpinv_settings_tab_top_' . $active_tab . '_' . $section, $active_tab, $section); |
|
149 | + do_settings_sections('wpinv_settings_' . $active_tab . '_' . $section, $active_tab, $section); |
|
150 | + do_action('wpinv_settings_tab_bottom_' . $active_tab . '_' . $section, $active_tab, $section); |
|
151 | 151 | |
152 | 152 | // For backwards compatibility |
153 | - if ( 'main' === $section ) { |
|
154 | - do_action( 'wpinv_settings_tab_bottom', $active_tab ); |
|
153 | + if ('main' === $section) { |
|
154 | + do_action('wpinv_settings_tab_bottom', $active_tab); |
|
155 | 155 | } |
156 | 156 | ?> |
157 | 157 | </table> |
@@ -165,18 +165,18 @@ discard block |
||
165 | 165 | } |
166 | 166 | |
167 | 167 | public function remove_admin_submenus() { |
168 | - remove_submenu_page( 'edit.php?post_type=wpi_invoice', 'post-new.php?post_type=wpi_invoice' ); |
|
168 | + remove_submenu_page('edit.php?post_type=wpi_invoice', 'post-new.php?post_type=wpi_invoice'); |
|
169 | 169 | } |
170 | 170 | |
171 | - public function add_nav_menu_meta_boxes(){ |
|
172 | - add_meta_box( 'wpinv_endpoints_nav_link', __( 'Invoicing Pages', 'invoicing' ), array( $this, 'nav_menu_links' ), 'nav-menus', 'side', 'low' ); |
|
171 | + public function add_nav_menu_meta_boxes() { |
|
172 | + add_meta_box('wpinv_endpoints_nav_link', __('Invoicing Pages', 'invoicing'), array($this, 'nav_menu_links'), 'nav-menus', 'side', 'low'); |
|
173 | 173 | } |
174 | 174 | |
175 | - public function nav_menu_links(){ |
|
175 | + public function nav_menu_links() { |
|
176 | 176 | $endpoints = $this->get_menu_items(); |
177 | 177 | ?> |
178 | 178 | <div id="invoicing-endpoints" class="posttypediv"> |
179 | - <?php if(!empty($endpoints['pages'])){ ?> |
|
179 | + <?php if (!empty($endpoints['pages'])) { ?> |
|
180 | 180 | <div id="tabs-panel-invoicing-endpoints" class="tabs-panel tabs-panel-active"> |
181 | 181 | <ul id="invoicing-endpoints-checklist" class="categorychecklist form-no-clear"> |
182 | 182 | <?php |
@@ -188,29 +188,29 @@ discard block |
||
188 | 188 | <?php } ?> |
189 | 189 | <p class="button-controls"> |
190 | 190 | <span class="list-controls"> |
191 | - <a href="<?php echo admin_url( 'nav-menus.php?page-tab=all&selectall=1#invoicing-endpoints' ); ?>" class="select-all"><?php _e( 'Select all', 'invoicing' ); ?></a> |
|
191 | + <a href="<?php echo admin_url('nav-menus.php?page-tab=all&selectall=1#invoicing-endpoints'); ?>" class="select-all"><?php _e('Select all', 'invoicing'); ?></a> |
|
192 | 192 | </span> |
193 | 193 | <span class="add-to-menu"> |
194 | - <input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to menu', 'invoicing' ); ?>" name="add-post-type-menu-item" id="submit-invoicing-endpoints"> |
|
194 | + <input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to menu', 'invoicing'); ?>" name="add-post-type-menu-item" id="submit-invoicing-endpoints"> |
|
195 | 195 | <span class="spinner"></span> |
196 | 196 | </span> |
197 | 197 | </p> |
198 | 198 | <?php |
199 | 199 | } |
200 | 200 | |
201 | - public function get_menu_items(){ |
|
201 | + public function get_menu_items() { |
|
202 | 202 | $items = array(); |
203 | 203 | |
204 | - $wpinv_history_page_id = (int)wpinv_get_option( 'invoice_history_page' ); |
|
205 | - if($wpinv_history_page_id > 0){ |
|
204 | + $wpinv_history_page_id = (int) wpinv_get_option('invoice_history_page'); |
|
205 | + if ($wpinv_history_page_id > 0) { |
|
206 | 206 | $item = new stdClass(); |
207 | 207 | $item->object_id = $wpinv_history_page_id; |
208 | 208 | $item->db_id = 0; |
209 | - $item->object = 'page'; |
|
209 | + $item->object = 'page'; |
|
210 | 210 | $item->menu_item_parent = 0; |
211 | 211 | $item->type = 'post_type'; |
212 | - $item->title = __('Invoice History Page','invoicing'); |
|
213 | - $item->url = get_permalink( $wpinv_history_page_id ); |
|
212 | + $item->title = __('Invoice History Page', 'invoicing'); |
|
213 | + $item->url = get_permalink($wpinv_history_page_id); |
|
214 | 214 | $item->target = ''; |
215 | 215 | $item->attr_title = ''; |
216 | 216 | $item->classes = array('wpinv-menu-item'); |
@@ -219,16 +219,16 @@ discard block |
||
219 | 219 | $items['pages'][] = $item; |
220 | 220 | } |
221 | 221 | |
222 | - $wpinv_sub_history_page_id = (int)wpinv_get_option( 'invoice_subscription_page' ); |
|
223 | - if($wpinv_sub_history_page_id > 0){ |
|
222 | + $wpinv_sub_history_page_id = (int) wpinv_get_option('invoice_subscription_page'); |
|
223 | + if ($wpinv_sub_history_page_id > 0) { |
|
224 | 224 | $item = new stdClass(); |
225 | 225 | $item->object_id = $wpinv_sub_history_page_id; |
226 | 226 | $item->db_id = 0; |
227 | - $item->object = 'page'; |
|
227 | + $item->object = 'page'; |
|
228 | 228 | $item->menu_item_parent = 0; |
229 | 229 | $item->type = 'post_type'; |
230 | - $item->title = __('Invoice Subscriptions Page','invoicing'); |
|
231 | - $item->url = get_permalink( $wpinv_sub_history_page_id ); |
|
230 | + $item->title = __('Invoice Subscriptions Page', 'invoicing'); |
|
231 | + $item->url = get_permalink($wpinv_sub_history_page_id); |
|
232 | 232 | $item->target = ''; |
233 | 233 | $item->attr_title = ''; |
234 | 234 | $item->classes = array('wpinv-menu-item'); |
@@ -237,16 +237,16 @@ discard block |
||
237 | 237 | $items['pages'][] = $item; |
238 | 238 | } |
239 | 239 | |
240 | - $wpinv_checkout_page_id = (int)wpinv_get_option( 'checkout_page' ); |
|
241 | - if($wpinv_checkout_page_id > 0){ |
|
240 | + $wpinv_checkout_page_id = (int) wpinv_get_option('checkout_page'); |
|
241 | + if ($wpinv_checkout_page_id > 0) { |
|
242 | 242 | $item = new stdClass(); |
243 | 243 | $item->object_id = $wpinv_checkout_page_id; |
244 | 244 | $item->db_id = 0; |
245 | - $item->object = 'page'; |
|
245 | + $item->object = 'page'; |
|
246 | 246 | $item->menu_item_parent = 0; |
247 | 247 | $item->type = 'post_type'; |
248 | - $item->title = __('Checkout Page','invoicing'); |
|
249 | - $item->url = get_permalink( $wpinv_checkout_page_id ); |
|
248 | + $item->title = __('Checkout Page', 'invoicing'); |
|
249 | + $item->url = get_permalink($wpinv_checkout_page_id); |
|
250 | 250 | $item->target = ''; |
251 | 251 | $item->attr_title = ''; |
252 | 252 | $item->classes = array('wpinv-menu-item'); |
@@ -255,16 +255,16 @@ discard block |
||
255 | 255 | $items['pages'][] = $item; |
256 | 256 | } |
257 | 257 | |
258 | - $wpinv_tandc_page_id = (int)wpinv_get_option( 'tandc_page' ); |
|
259 | - if($wpinv_tandc_page_id > 0){ |
|
258 | + $wpinv_tandc_page_id = (int) wpinv_get_option('tandc_page'); |
|
259 | + if ($wpinv_tandc_page_id > 0) { |
|
260 | 260 | $item = new stdClass(); |
261 | 261 | $item->object_id = $wpinv_tandc_page_id; |
262 | 262 | $item->db_id = 0; |
263 | - $item->object = 'page'; |
|
263 | + $item->object = 'page'; |
|
264 | 264 | $item->menu_item_parent = 0; |
265 | 265 | $item->type = 'post_type'; |
266 | - $item->title = __('Terms & Conditions','invoicing'); |
|
267 | - $item->url = get_permalink( $wpinv_tandc_page_id ); |
|
266 | + $item->title = __('Terms & Conditions', 'invoicing'); |
|
267 | + $item->url = get_permalink($wpinv_tandc_page_id); |
|
268 | 268 | $item->target = ''; |
269 | 269 | $item->attr_title = ''; |
270 | 270 | $item->classes = array('wpinv-menu-item'); |
@@ -273,16 +273,16 @@ discard block |
||
273 | 273 | $items['pages'][] = $item; |
274 | 274 | } |
275 | 275 | |
276 | - $wpinv_success_page_id = (int)wpinv_get_option( 'success_page' ); |
|
277 | - if($wpinv_success_page_id > 0){ |
|
276 | + $wpinv_success_page_id = (int) wpinv_get_option('success_page'); |
|
277 | + if ($wpinv_success_page_id > 0) { |
|
278 | 278 | $item = new stdClass(); |
279 | 279 | $item->object_id = $wpinv_success_page_id; |
280 | 280 | $item->db_id = 0; |
281 | - $item->object = 'page'; |
|
281 | + $item->object = 'page'; |
|
282 | 282 | $item->menu_item_parent = 0; |
283 | 283 | $item->type = 'post_type'; |
284 | - $item->title = __('Success Page','invoicing'); |
|
285 | - $item->url = get_permalink( $wpinv_success_page_id ); |
|
284 | + $item->title = __('Success Page', 'invoicing'); |
|
285 | + $item->url = get_permalink($wpinv_success_page_id); |
|
286 | 286 | $item->target = ''; |
287 | 287 | $item->attr_title = ''; |
288 | 288 | $item->classes = array('wpinv-menu-item'); |
@@ -291,16 +291,16 @@ discard block |
||
291 | 291 | $items['pages'][] = $item; |
292 | 292 | } |
293 | 293 | |
294 | - $wpinv_failure_page_id = (int)wpinv_get_option( 'failure_page' ); |
|
295 | - if($wpinv_failure_page_id > 0){ |
|
294 | + $wpinv_failure_page_id = (int) wpinv_get_option('failure_page'); |
|
295 | + if ($wpinv_failure_page_id > 0) { |
|
296 | 296 | $item = new stdClass(); |
297 | 297 | $item->object_id = $wpinv_failure_page_id; |
298 | 298 | $item->db_id = 0; |
299 | - $item->object = 'page'; |
|
299 | + $item->object = 'page'; |
|
300 | 300 | $item->menu_item_parent = 0; |
301 | 301 | $item->type = 'post_type'; |
302 | - $item->title = __('Failed Transaction Page','invoicing'); |
|
303 | - $item->url = get_permalink( $wpinv_failure_page_id ); |
|
302 | + $item->title = __('Failed Transaction Page', 'invoicing'); |
|
303 | + $item->url = get_permalink($wpinv_failure_page_id); |
|
304 | 304 | $item->target = ''; |
305 | 305 | $item->attr_title = ''; |
306 | 306 | $item->classes = array('wpinv-menu-item'); |
@@ -309,7 +309,7 @@ discard block |
||
309 | 309 | $items['pages'][] = $item; |
310 | 310 | } |
311 | 311 | |
312 | - return apply_filters( 'wpinv_menu_items', $items ); |
|
312 | + return apply_filters('wpinv_menu_items', $items); |
|
313 | 313 | } |
314 | 314 | |
315 | 315 | } |
@@ -38,29 +38,29 @@ discard block |
||
38 | 38 | 'advanced' => false |
39 | 39 | ), |
40 | 40 | 'items' => array( |
41 | - 'title' => __( 'Items to buy', 'invoicing' ), |
|
42 | - 'desc' => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ), |
|
43 | - 'type' => 'text', |
|
44 | - 'desc_tip' => true, |
|
45 | - 'default' => '', |
|
46 | - 'placeholder' => __('Items to buy','invoicing'), |
|
47 | - 'advanced' => false |
|
41 | + 'title' => __( 'Items to buy', 'invoicing' ), |
|
42 | + 'desc' => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ), |
|
43 | + 'type' => 'text', |
|
44 | + 'desc_tip' => true, |
|
45 | + 'default' => '', |
|
46 | + 'placeholder' => __('Items to buy','invoicing'), |
|
47 | + 'advanced' => false |
|
48 | 48 | ), |
49 | 49 | 'label' => array( |
50 | - 'title' => __( 'Button Label', 'invoicing' ), |
|
51 | - 'desc' => __( 'Enter button label. Default "Buy Now".', 'invoicing' ), |
|
52 | - 'type' => 'text', |
|
53 | - 'desc_tip' => true, |
|
54 | - 'default' => __( 'Buy Now', 'invoicing' ), |
|
55 | - 'advanced' => false |
|
50 | + 'title' => __( 'Button Label', 'invoicing' ), |
|
51 | + 'desc' => __( 'Enter button label. Default "Buy Now".', 'invoicing' ), |
|
52 | + 'type' => 'text', |
|
53 | + 'desc_tip' => true, |
|
54 | + 'default' => __( 'Buy Now', 'invoicing' ), |
|
55 | + 'advanced' => false |
|
56 | 56 | ), |
57 | 57 | 'post_id' => array( |
58 | - 'title' => __( 'Post ID', 'invoicing' ), |
|
59 | - 'desc' => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ), |
|
60 | - 'type' => 'number', |
|
61 | - 'desc_tip' => true, |
|
62 | - 'default' => '', |
|
63 | - 'advanced' => true |
|
58 | + 'title' => __( 'Post ID', 'invoicing' ), |
|
59 | + 'desc' => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ), |
|
60 | + 'type' => 'number', |
|
61 | + 'desc_tip' => true, |
|
62 | + 'default' => '', |
|
63 | + 'advanced' => true |
|
64 | 64 | ), |
65 | 65 | ) |
66 | 66 | |
@@ -70,43 +70,43 @@ discard block |
||
70 | 70 | parent::__construct( $options ); |
71 | 71 | } |
72 | 72 | |
73 | - /** |
|
74 | - * The Super block output function. |
|
75 | - * |
|
76 | - * @param array $args |
|
77 | - * @param array $widget_args |
|
78 | - * @param string $content |
|
79 | - * |
|
80 | - * @return string |
|
81 | - */ |
|
73 | + /** |
|
74 | + * The Super block output function. |
|
75 | + * |
|
76 | + * @param array $args |
|
77 | + * @param array $widget_args |
|
78 | + * @param string $content |
|
79 | + * |
|
80 | + * @return string |
|
81 | + */ |
|
82 | 82 | public function output( $args = array(), $widget_args = array(), $content = '' ) { |
83 | 83 | |
84 | - $defaults = array( |
|
85 | - 'items' => '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity |
|
86 | - 'label' => __( 'Buy Now', 'invoicing' ), // the button title |
|
87 | - 'post_id' => '', // any related post_id |
|
88 | - ); |
|
84 | + $defaults = array( |
|
85 | + 'items' => '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity |
|
86 | + 'label' => __( 'Buy Now', 'invoicing' ), // the button title |
|
87 | + 'post_id' => '', // any related post_id |
|
88 | + ); |
|
89 | 89 | |
90 | - /** |
|
91 | - * Parse incoming $args into an array and merge it with $defaults |
|
92 | - */ |
|
93 | - $args = wp_parse_args( $args, $defaults ); |
|
90 | + /** |
|
91 | + * Parse incoming $args into an array and merge it with $defaults |
|
92 | + */ |
|
93 | + $args = wp_parse_args( $args, $defaults ); |
|
94 | 94 | |
95 | - $html = '<div class="wpi-buy-button-wrapper wpi-g">'; |
|
95 | + $html = '<div class="wpi-buy-button-wrapper wpi-g">'; |
|
96 | 96 | |
97 | - if ( empty( $args['items'] ) ) { |
|
98 | - $html .= __( 'No items selected', 'invoicing' ); |
|
99 | - } else { |
|
100 | - $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0; |
|
101 | - $label = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' ); |
|
102 | - $items = esc_attr( $args['items'] ); |
|
103 | - $html .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>"; |
|
104 | - } |
|
97 | + if ( empty( $args['items'] ) ) { |
|
98 | + $html .= __( 'No items selected', 'invoicing' ); |
|
99 | + } else { |
|
100 | + $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0; |
|
101 | + $label = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' ); |
|
102 | + $items = esc_attr( $args['items'] ); |
|
103 | + $html .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>"; |
|
104 | + } |
|
105 | 105 | |
106 | - $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false ); |
|
107 | - $html .= '</div>'; |
|
106 | + $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false ); |
|
107 | + $html .= '</div>'; |
|
108 | 108 | |
109 | - return $html; |
|
109 | + return $html; |
|
110 | 110 | |
111 | 111 | } |
112 | 112 |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if (!defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -23,40 +23,40 @@ discard block |
||
23 | 23 | 'block-keywords'=> "['invoicing','buy', 'buy item']", |
24 | 24 | 'class_name' => __CLASS__, |
25 | 25 | 'base_id' => 'wpinv_buy', |
26 | - 'name' => __('Invoicing > Buy Item Button','invoicing'), |
|
26 | + 'name' => __('Invoicing > Buy Item Button', 'invoicing'), |
|
27 | 27 | 'widget_ops' => array( |
28 | 28 | 'classname' => 'wpinv-buy-item-class wpi-g', |
29 | - 'description' => esc_html__('Displays buy invoicing item button.','invoicing'), |
|
29 | + 'description' => esc_html__('Displays buy invoicing item button.', 'invoicing'), |
|
30 | 30 | ), |
31 | 31 | 'arguments' => array( |
32 | 32 | 'title' => array( |
33 | - 'title' => __( 'Widget title', 'invoicing' ), |
|
34 | - 'desc' => __( 'Enter widget title.', 'invoicing' ), |
|
33 | + 'title' => __('Widget title', 'invoicing'), |
|
34 | + 'desc' => __('Enter widget title.', 'invoicing'), |
|
35 | 35 | 'type' => 'text', |
36 | 36 | 'desc_tip' => true, |
37 | 37 | 'default' => '', |
38 | 38 | 'advanced' => false |
39 | 39 | ), |
40 | 40 | 'items' => array( |
41 | - 'title' => __( 'Items to buy', 'invoicing' ), |
|
42 | - 'desc' => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ), |
|
41 | + 'title' => __('Items to buy', 'invoicing'), |
|
42 | + 'desc' => __('Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing'), |
|
43 | 43 | 'type' => 'text', |
44 | 44 | 'desc_tip' => true, |
45 | 45 | 'default' => '', |
46 | - 'placeholder' => __('Items to buy','invoicing'), |
|
46 | + 'placeholder' => __('Items to buy', 'invoicing'), |
|
47 | 47 | 'advanced' => false |
48 | 48 | ), |
49 | 49 | 'label' => array( |
50 | - 'title' => __( 'Button Label', 'invoicing' ), |
|
51 | - 'desc' => __( 'Enter button label. Default "Buy Now".', 'invoicing' ), |
|
50 | + 'title' => __('Button Label', 'invoicing'), |
|
51 | + 'desc' => __('Enter button label. Default "Buy Now".', 'invoicing'), |
|
52 | 52 | 'type' => 'text', |
53 | 53 | 'desc_tip' => true, |
54 | - 'default' => __( 'Buy Now', 'invoicing' ), |
|
54 | + 'default' => __('Buy Now', 'invoicing'), |
|
55 | 55 | 'advanced' => false |
56 | 56 | ), |
57 | 57 | 'post_id' => array( |
58 | - 'title' => __( 'Post ID', 'invoicing' ), |
|
59 | - 'desc' => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ), |
|
58 | + 'title' => __('Post ID', 'invoicing'), |
|
59 | + 'desc' => __('Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing'), |
|
60 | 60 | 'type' => 'number', |
61 | 61 | 'desc_tip' => true, |
62 | 62 | 'default' => '', |
@@ -67,7 +67,7 @@ discard block |
||
67 | 67 | ); |
68 | 68 | |
69 | 69 | |
70 | - parent::__construct( $options ); |
|
70 | + parent::__construct($options); |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -79,31 +79,31 @@ discard block |
||
79 | 79 | * |
80 | 80 | * @return string |
81 | 81 | */ |
82 | - public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
82 | + public function output($args = array(), $widget_args = array(), $content = '') { |
|
83 | 83 | |
84 | 84 | $defaults = array( |
85 | 85 | 'items' => '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity |
86 | - 'label' => __( 'Buy Now', 'invoicing' ), // the button title |
|
86 | + 'label' => __('Buy Now', 'invoicing'), // the button title |
|
87 | 87 | 'post_id' => '', // any related post_id |
88 | 88 | ); |
89 | 89 | |
90 | 90 | /** |
91 | 91 | * Parse incoming $args into an array and merge it with $defaults |
92 | 92 | */ |
93 | - $args = wp_parse_args( $args, $defaults ); |
|
93 | + $args = wp_parse_args($args, $defaults); |
|
94 | 94 | |
95 | 95 | $html = '<div class="wpi-buy-button-wrapper wpi-g">'; |
96 | 96 | |
97 | - if ( empty( $args['items'] ) ) { |
|
98 | - $html .= __( 'No items selected', 'invoicing' ); |
|
97 | + if (empty($args['items'])) { |
|
98 | + $html .= __('No items selected', 'invoicing'); |
|
99 | 99 | } else { |
100 | - $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0; |
|
101 | - $label = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' ); |
|
102 | - $items = esc_attr( $args['items'] ); |
|
100 | + $post_id = isset($args['post_id']) && is_numeric($args['post_id']) ? sanitize_text_field($args['post_id']) : 0; |
|
101 | + $label = isset($args['label']) ? sanitize_text_field($args['label']) : __('Buy Now', 'invoicing'); |
|
102 | + $items = esc_attr($args['items']); |
|
103 | 103 | $html .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>"; |
104 | 104 | } |
105 | 105 | |
106 | - $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false ); |
|
106 | + $html .= wp_nonce_field('wpinv_buy_items', 'wpinv_buy_nonce', true, false); |
|
107 | 107 | $html .= '</div>'; |
108 | 108 | |
109 | 109 | return $html; |
@@ -20,31 +20,31 @@ discard block |
||
20 | 20 | class WPInv_REST_Invoice_Controller extends WP_REST_Posts_Controller { |
21 | 21 | |
22 | 22 | /** |
23 | - * Post type. |
|
24 | - * |
|
25 | - * @var string |
|
26 | - */ |
|
27 | - protected $post_type = 'wpi_invoice'; |
|
23 | + * Post type. |
|
24 | + * |
|
25 | + * @var string |
|
26 | + */ |
|
27 | + protected $post_type = 'wpi_invoice'; |
|
28 | 28 | |
29 | - /** |
|
30 | - * Cached results of get_item_schema. |
|
31 | - * |
|
32 | - * @since 1.0.13 |
|
33 | - * @var array |
|
34 | - */ |
|
35 | - protected $schema; |
|
29 | + /** |
|
30 | + * Cached results of get_item_schema. |
|
31 | + * |
|
32 | + * @since 1.0.13 |
|
33 | + * @var array |
|
34 | + */ |
|
35 | + protected $schema; |
|
36 | 36 | |
37 | 37 | /** |
38 | - * Constructor. |
|
39 | - * |
|
40 | - * @since 1.0.13 |
|
41 | - * |
|
42 | - * @param string $namespace Api Namespace |
|
43 | - */ |
|
44 | - public function __construct( $namespace ) { |
|
38 | + * Constructor. |
|
39 | + * |
|
40 | + * @since 1.0.13 |
|
41 | + * |
|
42 | + * @param string $namespace Api Namespace |
|
43 | + */ |
|
44 | + public function __construct( $namespace ) { |
|
45 | 45 | |
46 | 46 | // Set api namespace... |
47 | - $this->namespace = $namespace; |
|
47 | + $this->namespace = $namespace; |
|
48 | 48 | |
49 | 49 | // ... and the rest base |
50 | 50 | $this->rest_base = 'invoices'; |
@@ -52,79 +52,79 @@ discard block |
||
52 | 52 | } |
53 | 53 | |
54 | 54 | /** |
55 | - * Checks if a given request has access to read invoices. |
|
55 | + * Checks if a given request has access to read invoices. |
|
56 | 56 | * |
57 | - * |
|
58 | - * @since 1.0.13 |
|
59 | - * |
|
60 | - * @param WP_REST_Request $request Full details about the request. |
|
61 | - * @return true|WP_Error True if the request has read access, WP_Error object otherwise. |
|
62 | - */ |
|
63 | - public function get_items_permissions_check( $request ) { |
|
57 | + * |
|
58 | + * @since 1.0.13 |
|
59 | + * |
|
60 | + * @param WP_REST_Request $request Full details about the request. |
|
61 | + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. |
|
62 | + */ |
|
63 | + public function get_items_permissions_check( $request ) { |
|
64 | 64 | |
65 | 65 | $post_type = get_post_type_object( $this->post_type ); |
66 | 66 | |
67 | - if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { |
|
68 | - return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
69 | - } |
|
67 | + if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { |
|
68 | + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
69 | + } |
|
70 | 70 | |
71 | - if ( ! is_user_logged_in() ) { |
|
72 | - return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
73 | - } |
|
71 | + if ( ! is_user_logged_in() ) { |
|
72 | + return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
73 | + } |
|
74 | 74 | |
75 | - // Read checks will be evaluated on a per invoice basis |
|
75 | + // Read checks will be evaluated on a per invoice basis |
|
76 | 76 | |
77 | - return true; |
|
77 | + return true; |
|
78 | 78 | |
79 | 79 | } |
80 | 80 | |
81 | 81 | /** |
82 | - * Retrieves a collection of invoices. |
|
83 | - * |
|
84 | - * @since 1.0.13 |
|
85 | - * |
|
86 | - * @param WP_REST_Request $request Full details about the request. |
|
87 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
88 | - */ |
|
89 | - public function get_items( $request ) { |
|
82 | + * Retrieves a collection of invoices. |
|
83 | + * |
|
84 | + * @since 1.0.13 |
|
85 | + * |
|
86 | + * @param WP_REST_Request $request Full details about the request. |
|
87 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
88 | + */ |
|
89 | + public function get_items( $request ) { |
|
90 | 90 | |
91 | - // Retrieve request query parameters. |
|
92 | - $args = $this->get_request_collection_params( $request ); |
|
91 | + // Retrieve request query parameters. |
|
92 | + $args = $this->get_request_collection_params( $request ); |
|
93 | 93 | |
94 | - // WP_Query Args. |
|
95 | - $wp_query_args = $this->get_collection_wp_query_params( $args, $request ); |
|
94 | + // WP_Query Args. |
|
95 | + $wp_query_args = $this->get_collection_wp_query_params( $args, $request ); |
|
96 | 96 | |
97 | - // Get invoice ids... |
|
98 | - $query = new WP_Query( $wp_query_args ); |
|
99 | - |
|
100 | - // ... and map them into invoice objects. |
|
101 | - $_invoices = array_map( array( $this, 'get_post' ), $query->posts ); |
|
102 | - |
|
103 | - // Prepare the retrieved invoices |
|
104 | - $invoices = array(); |
|
105 | - |
|
106 | - foreach( $_invoices as $invoice ) { |
|
107 | - if ( $this->check_read_permission( $invoice ) ) { |
|
108 | - $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) ); |
|
109 | - } |
|
110 | - } |
|
111 | - |
|
112 | - // Prepare the response. |
|
113 | - $response = rest_ensure_response( $invoices ); |
|
114 | - $response->header( 'X-WP-Total', (int) $query->found_posts ); |
|
115 | - $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages ); |
|
116 | - |
|
117 | - /** |
|
118 | - * Filters the responses for invoices requests. |
|
119 | - * |
|
120 | - * |
|
121 | - * @since 1.0.13 |
|
122 | - * |
|
123 | - * |
|
124 | - * @param arrWP_REST_Response $response Response object. |
|
125 | - * @param WP_REST_Request $request The request used. |
|
97 | + // Get invoice ids... |
|
98 | + $query = new WP_Query( $wp_query_args ); |
|
99 | + |
|
100 | + // ... and map them into invoice objects. |
|
101 | + $_invoices = array_map( array( $this, 'get_post' ), $query->posts ); |
|
102 | + |
|
103 | + // Prepare the retrieved invoices |
|
104 | + $invoices = array(); |
|
105 | + |
|
106 | + foreach( $_invoices as $invoice ) { |
|
107 | + if ( $this->check_read_permission( $invoice ) ) { |
|
108 | + $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) ); |
|
109 | + } |
|
110 | + } |
|
111 | + |
|
112 | + // Prepare the response. |
|
113 | + $response = rest_ensure_response( $invoices ); |
|
114 | + $response->header( 'X-WP-Total', (int) $query->found_posts ); |
|
115 | + $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages ); |
|
116 | + |
|
117 | + /** |
|
118 | + * Filters the responses for invoices requests. |
|
119 | + * |
|
120 | + * |
|
121 | + * @since 1.0.13 |
|
122 | + * |
|
123 | + * |
|
124 | + * @param arrWP_REST_Response $response Response object. |
|
125 | + * @param WP_REST_Request $request The request used. |
|
126 | 126 | * @param array $args Array of args used to retrieve the invoices |
127 | - */ |
|
127 | + */ |
|
128 | 128 | $response = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args ); |
129 | 129 | |
130 | 130 | return rest_ensure_response( $response ); |
@@ -132,25 +132,25 @@ discard block |
||
132 | 132 | } |
133 | 133 | |
134 | 134 | /** |
135 | - * Get the post, if the ID is valid. |
|
136 | - * |
|
137 | - * @since 1.0.13 |
|
138 | - * |
|
139 | - * @param int $invoice_id Supplied ID. |
|
140 | - * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise. |
|
141 | - */ |
|
142 | - protected function get_post( $invoice_id ) { |
|
135 | + * Get the post, if the ID is valid. |
|
136 | + * |
|
137 | + * @since 1.0.13 |
|
138 | + * |
|
139 | + * @param int $invoice_id Supplied ID. |
|
140 | + * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise. |
|
141 | + */ |
|
142 | + protected function get_post( $invoice_id ) { |
|
143 | 143 | |
144 | - $error = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) ); |
|
144 | + $error = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) ); |
|
145 | 145 | |
146 | 146 | // Ids start from 1 |
147 | 147 | if ( (int) $invoice_id <= 0 ) { |
148 | - return $error; |
|
149 | - } |
|
148 | + return $error; |
|
149 | + } |
|
150 | 150 | |
151 | - $invoice = wpinv_get_invoice( (int) $invoice_id ); |
|
152 | - if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) { |
|
153 | - return $error; |
|
151 | + $invoice = wpinv_get_invoice( (int) $invoice_id ); |
|
152 | + if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) { |
|
153 | + return $error; |
|
154 | 154 | } |
155 | 155 | |
156 | 156 | return $invoice; |
@@ -158,77 +158,77 @@ discard block |
||
158 | 158 | } |
159 | 159 | |
160 | 160 | /** |
161 | - * Checks if a given request has access to read an invoice. |
|
162 | - * |
|
163 | - * @since 1.0.13 |
|
164 | - * |
|
165 | - * @param WP_REST_Request $request Full details about the request. |
|
166 | - * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise. |
|
167 | - */ |
|
168 | - public function get_item_permissions_check( $request ) { |
|
161 | + * Checks if a given request has access to read an invoice. |
|
162 | + * |
|
163 | + * @since 1.0.13 |
|
164 | + * |
|
165 | + * @param WP_REST_Request $request Full details about the request. |
|
166 | + * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise. |
|
167 | + */ |
|
168 | + public function get_item_permissions_check( $request ) { |
|
169 | 169 | |
170 | 170 | // Retrieve the invoice object. |
171 | 171 | $invoice = $this->get_post( $request['id'] ); |
172 | 172 | |
173 | 173 | // Ensure it is valid. |
174 | - if ( is_wp_error( $invoice ) ) { |
|
175 | - return $invoice; |
|
176 | - } |
|
174 | + if ( is_wp_error( $invoice ) ) { |
|
175 | + return $invoice; |
|
176 | + } |
|
177 | 177 | |
178 | - if ( $invoice ) { |
|
179 | - return $this->check_read_permission( $invoice ); |
|
180 | - } |
|
178 | + if ( $invoice ) { |
|
179 | + return $this->check_read_permission( $invoice ); |
|
180 | + } |
|
181 | 181 | |
182 | - return true; |
|
182 | + return true; |
|
183 | 183 | } |
184 | 184 | |
185 | 185 | /** |
186 | - * Checks if an invoice can be read. |
|
187 | - * |
|
188 | - * An invoice can be read by site admins and owners of the invoice |
|
189 | - * |
|
190 | - * |
|
191 | - * @since 1.0.13 |
|
192 | - * |
|
193 | - * @param WPInv_Invoice $invoice WPInv_Invoice object. |
|
194 | - * @return bool Whether the post can be read. |
|
195 | - */ |
|
196 | - public function check_read_permission( $invoice ) { |
|
197 | - return wpinv_user_can_view_invoice( $invoice->ID ); |
|
186 | + * Checks if an invoice can be read. |
|
187 | + * |
|
188 | + * An invoice can be read by site admins and owners of the invoice |
|
189 | + * |
|
190 | + * |
|
191 | + * @since 1.0.13 |
|
192 | + * |
|
193 | + * @param WPInv_Invoice $invoice WPInv_Invoice object. |
|
194 | + * @return bool Whether the post can be read. |
|
195 | + */ |
|
196 | + public function check_read_permission( $invoice ) { |
|
197 | + return wpinv_user_can_view_invoice( $invoice->ID ); |
|
198 | 198 | } |
199 | 199 | |
200 | 200 | /** |
201 | - * Retrieves a single invoice. |
|
202 | - * |
|
203 | - * @since 1.0.13 |
|
204 | - * |
|
205 | - * @param WP_REST_Request $request Full details about the request. |
|
206 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
207 | - */ |
|
208 | - public function get_item( $request ) { |
|
201 | + * Retrieves a single invoice. |
|
202 | + * |
|
203 | + * @since 1.0.13 |
|
204 | + * |
|
205 | + * @param WP_REST_Request $request Full details about the request. |
|
206 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
207 | + */ |
|
208 | + public function get_item( $request ) { |
|
209 | 209 | |
210 | 210 | // Fetch the invoice. |
211 | 211 | $invoice = $this->get_post( $request['id'] ); |
212 | 212 | |
213 | 213 | // Abort early if it does not exist |
214 | - if ( is_wp_error( $invoice ) ) { |
|
215 | - return $invoice; |
|
216 | - } |
|
217 | - |
|
218 | - // Prepare the response |
|
219 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
220 | - $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) ); |
|
221 | - |
|
222 | - /** |
|
223 | - * Filters the responses for single invoice requests. |
|
224 | - * |
|
225 | - * |
|
226 | - * @since 1.0.13 |
|
227 | - * @var WP_HTTP_Response |
|
228 | - * |
|
229 | - * @param WP_HTTP_Response $response Response. |
|
230 | - * @param WP_REST_Request $request The request used. |
|
231 | - */ |
|
214 | + if ( is_wp_error( $invoice ) ) { |
|
215 | + return $invoice; |
|
216 | + } |
|
217 | + |
|
218 | + // Prepare the response |
|
219 | + $response = $this->prepare_item_for_response( $invoice, $request ); |
|
220 | + $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) ); |
|
221 | + |
|
222 | + /** |
|
223 | + * Filters the responses for single invoice requests. |
|
224 | + * |
|
225 | + * |
|
226 | + * @since 1.0.13 |
|
227 | + * @var WP_HTTP_Response |
|
228 | + * |
|
229 | + * @param WP_HTTP_Response $response Response. |
|
230 | + * @param WP_REST_Request $request The request used. |
|
231 | + */ |
|
232 | 232 | $response = apply_filters( "wpinv_rest_get_invoice_response", $response, $request ); |
233 | 233 | |
234 | 234 | return rest_ensure_response( $response ); |
@@ -236,23 +236,23 @@ discard block |
||
236 | 236 | } |
237 | 237 | |
238 | 238 | /** |
239 | - * Checks if a given request has access to create an invoice. |
|
240 | - * |
|
241 | - * @since 1.0.13 |
|
242 | - * |
|
243 | - * @param WP_REST_Request $request Full details about the request. |
|
244 | - * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. |
|
245 | - */ |
|
246 | - public function create_item_permissions_check( $request ) { |
|
239 | + * Checks if a given request has access to create an invoice. |
|
240 | + * |
|
241 | + * @since 1.0.13 |
|
242 | + * |
|
243 | + * @param WP_REST_Request $request Full details about the request. |
|
244 | + * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. |
|
245 | + */ |
|
246 | + public function create_item_permissions_check( $request ) { |
|
247 | 247 | |
248 | - if ( ! empty( $request['id'] ) ) { |
|
249 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
250 | - } |
|
248 | + if ( ! empty( $request['id'] ) ) { |
|
249 | + return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
250 | + } |
|
251 | 251 | |
252 | - $post_type = get_post_type_object( $this->post_type ); |
|
252 | + $post_type = get_post_type_object( $this->post_type ); |
|
253 | 253 | |
254 | - if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) { |
|
255 | - return new WP_Error( |
|
254 | + if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) { |
|
255 | + return new WP_Error( |
|
256 | 256 | 'rest_cannot_create', |
257 | 257 | __( 'Sorry, you are not allowed to create items as this user.', 'invoicing' ), |
258 | 258 | array( |
@@ -261,90 +261,90 @@ discard block |
||
261 | 261 | ); |
262 | 262 | } |
263 | 263 | |
264 | - return true; |
|
264 | + return true; |
|
265 | 265 | } |
266 | 266 | |
267 | 267 | /** |
268 | - * Creates a single invoice. |
|
269 | - * |
|
270 | - * @since 1.0.13 |
|
271 | - * |
|
272 | - * @param WP_REST_Request $request Full details about the request. |
|
273 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
274 | - */ |
|
275 | - public function create_item( $request ) { |
|
276 | - |
|
277 | - if ( ! empty( $request['id'] ) ) { |
|
278 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
279 | - } |
|
280 | - |
|
281 | - $request->set_param( 'context', 'edit' ); |
|
282 | - |
|
283 | - // Prepare the updated data. |
|
284 | - $invoice_data = $this->prepare_item_for_database( $request ); |
|
285 | - |
|
286 | - if ( is_wp_error( $invoice_data ) ) { |
|
287 | - return $invoice_data; |
|
288 | - } |
|
289 | - |
|
290 | - // Try creating the invoice |
|
291 | - $invoice_data['post_type'] = $this->post_type; |
|
292 | - $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' ); |
|
268 | + * Creates a single invoice. |
|
269 | + * |
|
270 | + * @since 1.0.13 |
|
271 | + * |
|
272 | + * @param WP_REST_Request $request Full details about the request. |
|
273 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
274 | + */ |
|
275 | + public function create_item( $request ) { |
|
276 | + |
|
277 | + if ( ! empty( $request['id'] ) ) { |
|
278 | + return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
279 | + } |
|
280 | + |
|
281 | + $request->set_param( 'context', 'edit' ); |
|
282 | + |
|
283 | + // Prepare the updated data. |
|
284 | + $invoice_data = $this->prepare_item_for_database( $request ); |
|
285 | + |
|
286 | + if ( is_wp_error( $invoice_data ) ) { |
|
287 | + return $invoice_data; |
|
288 | + } |
|
289 | + |
|
290 | + // Try creating the invoice |
|
291 | + $invoice_data['post_type'] = $this->post_type; |
|
292 | + $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' ); |
|
293 | 293 | $invoice = wpinv_insert_invoice( $invoice_data, true ); |
294 | 294 | |
295 | - if ( is_wp_error( $invoice ) ) { |
|
295 | + if ( is_wp_error( $invoice ) ) { |
|
296 | 296 | return $invoice; |
297 | - } |
|
298 | - |
|
299 | - // Prepare the response |
|
300 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
301 | - |
|
302 | - /** |
|
303 | - * Fires after a single invoice is created or updated via the REST API. |
|
304 | - * |
|
305 | - * @since 1.0.13 |
|
306 | - * |
|
307 | - * @param WPinv_Invoice $invoice Inserted or updated invoice object. |
|
308 | - * @param WP_REST_Request $request Request object. |
|
309 | - * @param bool $creating True when creating a post, false when updating. |
|
310 | - */ |
|
311 | - do_action( "wpinv_rest_insert_invoice", $invoice, $request, true ); |
|
312 | - |
|
313 | - /** |
|
314 | - * Filters the responses for creating single invoice requests. |
|
315 | - * |
|
316 | - * |
|
317 | - * @since 1.0.13 |
|
318 | - * |
|
319 | - * |
|
320 | - * @param array $invoice_data Invoice properties. |
|
321 | - * @param WP_REST_Request $request The request used. |
|
322 | - */ |
|
297 | + } |
|
298 | + |
|
299 | + // Prepare the response |
|
300 | + $response = $this->prepare_item_for_response( $invoice, $request ); |
|
301 | + |
|
302 | + /** |
|
303 | + * Fires after a single invoice is created or updated via the REST API. |
|
304 | + * |
|
305 | + * @since 1.0.13 |
|
306 | + * |
|
307 | + * @param WPinv_Invoice $invoice Inserted or updated invoice object. |
|
308 | + * @param WP_REST_Request $request Request object. |
|
309 | + * @param bool $creating True when creating a post, false when updating. |
|
310 | + */ |
|
311 | + do_action( "wpinv_rest_insert_invoice", $invoice, $request, true ); |
|
312 | + |
|
313 | + /** |
|
314 | + * Filters the responses for creating single invoice requests. |
|
315 | + * |
|
316 | + * |
|
317 | + * @since 1.0.13 |
|
318 | + * |
|
319 | + * |
|
320 | + * @param array $invoice_data Invoice properties. |
|
321 | + * @param WP_REST_Request $request The request used. |
|
322 | + */ |
|
323 | 323 | $response = apply_filters( "wpinv_rest_create_invoice_response", $response, $request ); |
324 | 324 | |
325 | 325 | return rest_ensure_response( $response ); |
326 | - } |
|
327 | - |
|
328 | - /** |
|
329 | - * Checks if a given request has access to update an invoice. |
|
330 | - * |
|
331 | - * @since 1.0.13 |
|
332 | - * |
|
333 | - * @param WP_REST_Request $request Full details about the request. |
|
334 | - * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. |
|
335 | - */ |
|
336 | - public function update_item_permissions_check( $request ) { |
|
337 | - |
|
338 | - // Retrieve the invoice. |
|
339 | - $invoice = $this->get_post( $request['id'] ); |
|
340 | - if ( is_wp_error( $invoice ) ) { |
|
341 | - return $invoice; |
|
342 | - } |
|
343 | - |
|
344 | - $post_type = get_post_type_object( $this->post_type ); |
|
345 | - |
|
346 | - if ( ! current_user_can( $post_type->cap->edit_post, $invoice->ID ) ) { |
|
347 | - return new WP_Error( |
|
326 | + } |
|
327 | + |
|
328 | + /** |
|
329 | + * Checks if a given request has access to update an invoice. |
|
330 | + * |
|
331 | + * @since 1.0.13 |
|
332 | + * |
|
333 | + * @param WP_REST_Request $request Full details about the request. |
|
334 | + * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. |
|
335 | + */ |
|
336 | + public function update_item_permissions_check( $request ) { |
|
337 | + |
|
338 | + // Retrieve the invoice. |
|
339 | + $invoice = $this->get_post( $request['id'] ); |
|
340 | + if ( is_wp_error( $invoice ) ) { |
|
341 | + return $invoice; |
|
342 | + } |
|
343 | + |
|
344 | + $post_type = get_post_type_object( $this->post_type ); |
|
345 | + |
|
346 | + if ( ! current_user_can( $post_type->cap->edit_post, $invoice->ID ) ) { |
|
347 | + return new WP_Error( |
|
348 | 348 | 'rest_cannot_edit', |
349 | 349 | __( 'Sorry, you are not allowed to update this item.', 'invoicing' ), |
350 | 350 | array( |
@@ -353,162 +353,162 @@ discard block |
||
353 | 353 | ); |
354 | 354 | } |
355 | 355 | |
356 | - return true; |
|
357 | - } |
|
358 | - |
|
359 | - /** |
|
360 | - * Updates a single invoice. |
|
361 | - * |
|
362 | - * @since 1.0.13 |
|
363 | - * |
|
364 | - * @param WP_REST_Request $request Full details about the request. |
|
365 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
366 | - */ |
|
367 | - public function update_item( $request ) { |
|
356 | + return true; |
|
357 | + } |
|
358 | + |
|
359 | + /** |
|
360 | + * Updates a single invoice. |
|
361 | + * |
|
362 | + * @since 1.0.13 |
|
363 | + * |
|
364 | + * @param WP_REST_Request $request Full details about the request. |
|
365 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
366 | + */ |
|
367 | + public function update_item( $request ) { |
|
368 | 368 | |
369 | - // Ensure the invoice exists. |
|
369 | + // Ensure the invoice exists. |
|
370 | 370 | $valid_check = $this->get_post( $request['id'] ); |
371 | 371 | |
372 | 372 | // Abort early if it does not exist |
373 | - if ( is_wp_error( $valid_check ) ) { |
|
374 | - return $valid_check; |
|
375 | - } |
|
373 | + if ( is_wp_error( $valid_check ) ) { |
|
374 | + return $valid_check; |
|
375 | + } |
|
376 | 376 | |
377 | - $request->set_param( 'context', 'edit' ); |
|
377 | + $request->set_param( 'context', 'edit' ); |
|
378 | 378 | |
379 | - // Prepare the updated data. |
|
380 | - $data_to_update = $this->prepare_item_for_database( $request ); |
|
379 | + // Prepare the updated data. |
|
380 | + $data_to_update = $this->prepare_item_for_database( $request ); |
|
381 | 381 | |
382 | - if ( is_wp_error( $data_to_update ) ) { |
|
383 | - return $data_to_update; |
|
384 | - } |
|
382 | + if ( is_wp_error( $data_to_update ) ) { |
|
383 | + return $data_to_update; |
|
384 | + } |
|
385 | 385 | |
386 | - // Abort if no invoice data is provided |
|
386 | + // Abort if no invoice data is provided |
|
387 | 387 | if( empty( $data_to_update ) ) { |
388 | 388 | return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) ); |
389 | 389 | } |
390 | 390 | |
391 | - // Include the invoice ID |
|
392 | - $data_to_update['ID'] = $request['id']; |
|
393 | - |
|
394 | - // Update the invoice |
|
395 | - $updated_invoice = wpinv_update_invoice( $data_to_update, true ); |
|
396 | - |
|
397 | - // Incase the update operation failed... |
|
398 | - if ( is_wp_error( $updated_invoice ) ) { |
|
399 | - return $updated_invoice; |
|
400 | - } |
|
401 | - |
|
402 | - // Prepare the response |
|
403 | - $response = $this->prepare_item_for_response( $updated_invoice, $request ); |
|
404 | - |
|
405 | - /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */ |
|
406 | - do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false ); |
|
407 | - |
|
408 | - /** |
|
409 | - * Filters the responses for updating single invoice requests. |
|
410 | - * |
|
411 | - * |
|
412 | - * @since 1.0.13 |
|
413 | - * |
|
414 | - * |
|
415 | - * @param array $invoice_data Invoice properties. |
|
416 | - * @param WP_REST_Request $request The request used. |
|
417 | - */ |
|
391 | + // Include the invoice ID |
|
392 | + $data_to_update['ID'] = $request['id']; |
|
393 | + |
|
394 | + // Update the invoice |
|
395 | + $updated_invoice = wpinv_update_invoice( $data_to_update, true ); |
|
396 | + |
|
397 | + // Incase the update operation failed... |
|
398 | + if ( is_wp_error( $updated_invoice ) ) { |
|
399 | + return $updated_invoice; |
|
400 | + } |
|
401 | + |
|
402 | + // Prepare the response |
|
403 | + $response = $this->prepare_item_for_response( $updated_invoice, $request ); |
|
404 | + |
|
405 | + /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */ |
|
406 | + do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false ); |
|
407 | + |
|
408 | + /** |
|
409 | + * Filters the responses for updating single invoice requests. |
|
410 | + * |
|
411 | + * |
|
412 | + * @since 1.0.13 |
|
413 | + * |
|
414 | + * |
|
415 | + * @param array $invoice_data Invoice properties. |
|
416 | + * @param WP_REST_Request $request The request used. |
|
417 | + */ |
|
418 | 418 | $response = apply_filters( "wpinv_rest_update_invoice_response", $response, $request ); |
419 | 419 | |
420 | 420 | return rest_ensure_response( $response ); |
421 | - } |
|
422 | - |
|
423 | - /** |
|
424 | - * Checks if a given request has access to delete an invoice. |
|
425 | - * |
|
426 | - * @since 1.0.13 |
|
427 | - * |
|
428 | - * @param WP_REST_Request $request Full details about the request. |
|
429 | - * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise. |
|
430 | - */ |
|
431 | - public function delete_item_permissions_check( $request ) { |
|
432 | - |
|
433 | - // Retrieve the invoice. |
|
434 | - $invoice = $this->get_post( $request['id'] ); |
|
435 | - if ( is_wp_error( $invoice ) ) { |
|
436 | - return $invoice; |
|
437 | - } |
|
438 | - |
|
439 | - // Ensure the current user can delete invoices |
|
440 | - if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'delete_invoices', $request['id'] ) ) { |
|
441 | - return true; |
|
442 | - } |
|
443 | - |
|
444 | - return new WP_Error( |
|
445 | - 'rest_cannot_delete', |
|
446 | - __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), |
|
447 | - array( |
|
448 | - 'status' => rest_authorization_required_code(), |
|
449 | - ) |
|
450 | - ); |
|
451 | - } |
|
452 | - |
|
453 | - /** |
|
454 | - * Deletes a single invoice. |
|
455 | - * |
|
456 | - * @since 1.0.13 |
|
457 | - * |
|
458 | - * @param WP_REST_Request $request Full details about the request. |
|
459 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
460 | - */ |
|
461 | - public function delete_item( $request ) { |
|
421 | + } |
|
422 | + |
|
423 | + /** |
|
424 | + * Checks if a given request has access to delete an invoice. |
|
425 | + * |
|
426 | + * @since 1.0.13 |
|
427 | + * |
|
428 | + * @param WP_REST_Request $request Full details about the request. |
|
429 | + * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise. |
|
430 | + */ |
|
431 | + public function delete_item_permissions_check( $request ) { |
|
432 | + |
|
433 | + // Retrieve the invoice. |
|
434 | + $invoice = $this->get_post( $request['id'] ); |
|
435 | + if ( is_wp_error( $invoice ) ) { |
|
436 | + return $invoice; |
|
437 | + } |
|
438 | + |
|
439 | + // Ensure the current user can delete invoices |
|
440 | + if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'delete_invoices', $request['id'] ) ) { |
|
441 | + return true; |
|
442 | + } |
|
443 | + |
|
444 | + return new WP_Error( |
|
445 | + 'rest_cannot_delete', |
|
446 | + __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), |
|
447 | + array( |
|
448 | + 'status' => rest_authorization_required_code(), |
|
449 | + ) |
|
450 | + ); |
|
451 | + } |
|
452 | + |
|
453 | + /** |
|
454 | + * Deletes a single invoice. |
|
455 | + * |
|
456 | + * @since 1.0.13 |
|
457 | + * |
|
458 | + * @param WP_REST_Request $request Full details about the request. |
|
459 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
460 | + */ |
|
461 | + public function delete_item( $request ) { |
|
462 | 462 | |
463 | - // Retrieve the invoice. |
|
464 | - $invoice = $this->get_post( $request['id'] ); |
|
465 | - if ( is_wp_error( $invoice ) ) { |
|
466 | - return $invoice; |
|
467 | - } |
|
463 | + // Retrieve the invoice. |
|
464 | + $invoice = $this->get_post( $request['id'] ); |
|
465 | + if ( is_wp_error( $invoice ) ) { |
|
466 | + return $invoice; |
|
467 | + } |
|
468 | 468 | |
469 | - $request->set_param( 'context', 'edit' ); |
|
469 | + $request->set_param( 'context', 'edit' ); |
|
470 | 470 | |
471 | - // Prepare the invoice id |
|
472 | - $id = $invoice->ID; |
|
471 | + // Prepare the invoice id |
|
472 | + $id = $invoice->ID; |
|
473 | 473 | |
474 | - // Prepare the response |
|
475 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
474 | + // Prepare the response |
|
475 | + $response = $this->prepare_item_for_response( $invoice, $request ); |
|
476 | 476 | |
477 | - // Check if the user wants to bypass the trash... |
|
478 | - $force_delete = (bool) $request['force']; |
|
477 | + // Check if the user wants to bypass the trash... |
|
478 | + $force_delete = (bool) $request['force']; |
|
479 | 479 | |
480 | - // Try deleting the invoice. |
|
481 | - $deleted = wp_delete_post( $id, $force_delete ); |
|
480 | + // Try deleting the invoice. |
|
481 | + $deleted = wp_delete_post( $id, $force_delete ); |
|
482 | 482 | |
483 | - // Abort early if we can't delete the invoice. |
|
484 | - if ( ! $deleted ) { |
|
485 | - return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) ); |
|
486 | - } |
|
483 | + // Abort early if we can't delete the invoice. |
|
484 | + if ( ! $deleted ) { |
|
485 | + return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) ); |
|
486 | + } |
|
487 | 487 | |
488 | - /** |
|
489 | - * Fires immediately after a single invoice is deleted or trashed via the REST API. |
|
490 | - * |
|
491 | - * |
|
492 | - * @since 1.0.13 |
|
493 | - * |
|
494 | - * @param WPInv_Invoice $invoice The deleted or trashed invoice. |
|
495 | - * @param WP_REST_Request $request The request sent to the API. |
|
496 | - */ |
|
497 | - do_action( "wpinv_rest_delete_invoice", $invoice, $request ); |
|
488 | + /** |
|
489 | + * Fires immediately after a single invoice is deleted or trashed via the REST API. |
|
490 | + * |
|
491 | + * |
|
492 | + * @since 1.0.13 |
|
493 | + * |
|
494 | + * @param WPInv_Invoice $invoice The deleted or trashed invoice. |
|
495 | + * @param WP_REST_Request $request The request sent to the API. |
|
496 | + */ |
|
497 | + do_action( "wpinv_rest_delete_invoice", $invoice, $request ); |
|
498 | 498 | |
499 | - return $response; |
|
499 | + return $response; |
|
500 | 500 | |
501 | - } |
|
501 | + } |
|
502 | 502 | |
503 | 503 | |
504 | 504 | /** |
505 | - * Retrieves the query params for the invoices collection. |
|
506 | - * |
|
507 | - * @since 1.0.13 |
|
508 | - * |
|
509 | - * @return array Collection parameters. |
|
510 | - */ |
|
511 | - public function get_collection_params() { |
|
505 | + * Retrieves the query params for the invoices collection. |
|
506 | + * |
|
507 | + * @since 1.0.13 |
|
508 | + * |
|
509 | + * @return array Collection parameters. |
|
510 | + */ |
|
511 | + public function get_collection_params() { |
|
512 | 512 | |
513 | 513 | $query_params = array( |
514 | 514 | |
@@ -526,11 +526,11 @@ discard block |
||
526 | 526 | |
527 | 527 | // User. |
528 | 528 | 'user' => array( |
529 | - 'description' => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ), |
|
530 | - 'type' => 'string', |
|
531 | - ), |
|
529 | + 'description' => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ), |
|
530 | + 'type' => 'string', |
|
531 | + ), |
|
532 | 532 | |
533 | - // Exclude certain users |
|
533 | + // Exclude certain users |
|
534 | 534 | 'exclude_users' => array( |
535 | 535 | 'description' => __( 'Exclude items from specific users.', 'invoicing' ), |
536 | 536 | 'type' => 'array', |
@@ -540,59 +540,59 @@ discard block |
||
540 | 540 | 'default' => array(), |
541 | 541 | ), |
542 | 542 | |
543 | - // Items before. |
|
543 | + // Items before. |
|
544 | 544 | 'before_date' => array( |
545 | - 'description' => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
546 | - 'type' => 'string', |
|
547 | - ), |
|
545 | + 'description' => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
546 | + 'type' => 'string', |
|
547 | + ), |
|
548 | 548 | |
549 | 549 | 'meta_key' => array( |
550 | - 'description' => __( 'Filter items by custom field key.', 'invoicing' ), |
|
551 | - 'type' => 'string', |
|
552 | - ), |
|
550 | + 'description' => __( 'Filter items by custom field key.', 'invoicing' ), |
|
551 | + 'type' => 'string', |
|
552 | + ), |
|
553 | 553 | |
554 | 554 | 'meta_compare_key' => array( |
555 | - 'description' => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ), |
|
556 | - 'type' => 'string', |
|
557 | - 'default' => '=', |
|
558 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
559 | - ), |
|
555 | + 'description' => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ), |
|
556 | + 'type' => 'string', |
|
557 | + 'default' => '=', |
|
558 | + 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
559 | + ), |
|
560 | 560 | |
561 | 561 | 'meta_value' => array( |
562 | - 'description' => __( 'Filter items by custom field value.', 'invoicing' ), |
|
563 | - 'type' => 'string', |
|
564 | - ), |
|
562 | + 'description' => __( 'Filter items by custom field value.', 'invoicing' ), |
|
563 | + 'type' => 'string', |
|
564 | + ), |
|
565 | 565 | |
566 | 566 | 'meta_compare' => array( |
567 | - 'description' => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ), |
|
568 | - 'type' => 'string', |
|
569 | - 'default' => '=', |
|
570 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
571 | - ), |
|
572 | - |
|
573 | - 'meta_value_num' => array( |
|
574 | - 'description' => __( 'Filter items by a numeric custom field value.', 'invoicing' ), |
|
575 | - 'type' => 'integer', |
|
576 | - ), |
|
577 | - |
|
578 | - // items after. |
|
567 | + 'description' => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ), |
|
568 | + 'type' => 'string', |
|
569 | + 'default' => '=', |
|
570 | + 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
571 | + ), |
|
572 | + |
|
573 | + 'meta_value_num' => array( |
|
574 | + 'description' => __( 'Filter items by a numeric custom field value.', 'invoicing' ), |
|
575 | + 'type' => 'integer', |
|
576 | + ), |
|
577 | + |
|
578 | + // items after. |
|
579 | 579 | 'after_date' => array( |
580 | - 'description' => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
581 | - 'type' => 'string', |
|
580 | + 'description' => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
581 | + 'type' => 'string', |
|
582 | 582 | ), |
583 | 583 | |
584 | 584 | // Number of results per page |
585 | 585 | 'limit' => array( |
586 | - 'description' => __( 'Number of items to fetch.', 'invoicing' ), |
|
587 | - 'type' => 'integer', |
|
588 | - 'default' => (int) get_option( 'posts_per_page' ), |
|
586 | + 'description' => __( 'Number of items to fetch.', 'invoicing' ), |
|
587 | + 'type' => 'integer', |
|
588 | + 'default' => (int) get_option( 'posts_per_page' ), |
|
589 | 589 | ), |
590 | 590 | |
591 | 591 | // Pagination |
592 | 592 | 'page' => array( |
593 | - 'description' => __( 'Current page to fetch.', 'invoicing' ), |
|
594 | - 'type' => 'integer', |
|
595 | - 'default' => 1, |
|
593 | + 'description' => __( 'Current page to fetch.', 'invoicing' ), |
|
594 | + 'type' => 'integer', |
|
595 | + 'default' => 1, |
|
596 | 596 | ), |
597 | 597 | |
598 | 598 | // limit to certain items |
@@ -603,9 +603,9 @@ discard block |
||
603 | 603 | 'type' => 'integer', |
604 | 604 | ), |
605 | 605 | 'default' => array(), |
606 | - ), |
|
606 | + ), |
|
607 | 607 | |
608 | - // Exclude certain items |
|
608 | + // Exclude certain items |
|
609 | 609 | 'exclude' => array( |
610 | 610 | 'description' => __( 'Ensure result set excludes specific IDs.', 'invoicing' ), |
611 | 611 | 'type' => 'array', |
@@ -624,9 +624,9 @@ discard block |
||
624 | 624 | 'date', |
625 | 625 | 'id', |
626 | 626 | 'modified', |
627 | - 'title', |
|
628 | - 'meta_value', |
|
629 | - 'meta_value_num' |
|
627 | + 'title', |
|
628 | + 'meta_value', |
|
629 | + 'meta_value_num' |
|
630 | 630 | ), |
631 | 631 | ), |
632 | 632 | |
@@ -639,932 +639,932 @@ discard block |
||
639 | 639 | ), |
640 | 640 | ); |
641 | 641 | |
642 | - /** |
|
643 | - * Filter collection parameters for the invoices controller. |
|
644 | - * |
|
645 | - * |
|
646 | - * @since 1.0.13 |
|
647 | - * |
|
648 | - * @param array $query_params JSON Schema-formatted collection parameters. |
|
649 | - */ |
|
650 | - return apply_filters( "wpinv_rest_invoices_collection_params", $query_params ); |
|
651 | - } |
|
642 | + /** |
|
643 | + * Filter collection parameters for the invoices controller. |
|
644 | + * |
|
645 | + * |
|
646 | + * @since 1.0.13 |
|
647 | + * |
|
648 | + * @param array $query_params JSON Schema-formatted collection parameters. |
|
649 | + */ |
|
650 | + return apply_filters( "wpinv_rest_invoices_collection_params", $query_params ); |
|
651 | + } |
|
652 | 652 | |
653 | - /** |
|
654 | - * Retrieves the request query params for the invoices collection. |
|
655 | - * |
|
656 | - * @since 1.0.15 |
|
657 | - * @param WP_REST_Request $request Full details about the request. |
|
658 | - * @return array Request collection parameters. |
|
659 | - */ |
|
660 | - public function get_request_collection_params( $request ) { |
|
653 | + /** |
|
654 | + * Retrieves the request query params for the invoices collection. |
|
655 | + * |
|
656 | + * @since 1.0.15 |
|
657 | + * @param WP_REST_Request $request Full details about the request. |
|
658 | + * @return array Request collection parameters. |
|
659 | + */ |
|
660 | + public function get_request_collection_params( $request ) { |
|
661 | 661 | |
662 | - // Retrieve the list of registered invoice query parameters. |
|
663 | - $registered = $this->get_collection_params(); |
|
662 | + // Retrieve the list of registered invoice query parameters. |
|
663 | + $registered = $this->get_collection_params(); |
|
664 | 664 | |
665 | - // Default args |
|
666 | - $args = array( |
|
665 | + // Default args |
|
666 | + $args = array( |
|
667 | 667 | 'status' => $this->get_post_statuses(), |
668 | 668 | 'user' => null, |
669 | 669 | 'exclude_users' => array(), |
670 | - 'before_date' => null, |
|
670 | + 'before_date' => null, |
|
671 | 671 | 'meta_key' => null, |
672 | 672 | 'meta_compare_key' => '=', |
673 | 673 | 'meta_value' => null, |
674 | 674 | 'meta_compare' => '=', |
675 | - 'meta_value_num' => null, |
|
675 | + 'meta_value_num' => null, |
|
676 | 676 | 'after_date' => null, |
677 | 677 | 'limit' => (int) get_option( 'posts_per_page' ), |
678 | - 'page' => 1, |
|
679 | - 'include' => array(), |
|
678 | + 'page' => 1, |
|
679 | + 'include' => array(), |
|
680 | 680 | 'exclude' => array(), |
681 | 681 | 'orderby' => 'date', |
682 | 682 | 'order' => 'DESC', |
683 | - ); |
|
683 | + ); |
|
684 | 684 | |
685 | - // Add any params from the requests. |
|
686 | - foreach ( array_keys( $registered ) as $key ) { |
|
685 | + // Add any params from the requests. |
|
686 | + foreach ( array_keys( $registered ) as $key ) { |
|
687 | 687 | if ( isset( $request[ $key] ) ) { |
688 | 688 | $args[ $key ] = $request[ $key]; |
689 | 689 | } |
690 | 690 | } |
691 | 691 | |
692 | - /** |
|
693 | - * Filters the requests collection parameters for the invoices controller. |
|
694 | - * |
|
695 | - * |
|
696 | - * @since 1.0.15 |
|
697 | - * |
|
698 | - * @param array $args Request query args. |
|
699 | - * @param WP_REST_Request $request Full details about the request. |
|
700 | - */ |
|
701 | - return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request ); |
|
702 | - } |
|
692 | + /** |
|
693 | + * Filters the requests collection parameters for the invoices controller. |
|
694 | + * |
|
695 | + * |
|
696 | + * @since 1.0.15 |
|
697 | + * |
|
698 | + * @param array $args Request query args. |
|
699 | + * @param WP_REST_Request $request Full details about the request. |
|
700 | + */ |
|
701 | + return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request ); |
|
702 | + } |
|
703 | 703 | |
704 | - /** |
|
705 | - * Retrieves the WP_Query params for the invoices collection. |
|
706 | - * |
|
707 | - * @since 1.0.15 |
|
708 | - * @param array $args Request args. |
|
709 | - * @param WP_REST_Request $request Full details about the request. |
|
710 | - * @return array WP_Query parameters. |
|
711 | - */ |
|
712 | - public function get_collection_wp_query_params( $args, $request ) { |
|
704 | + /** |
|
705 | + * Retrieves the WP_Query params for the invoices collection. |
|
706 | + * |
|
707 | + * @since 1.0.15 |
|
708 | + * @param array $args Request args. |
|
709 | + * @param WP_REST_Request $request Full details about the request. |
|
710 | + * @return array WP_Query parameters. |
|
711 | + */ |
|
712 | + public function get_collection_wp_query_params( $args, $request ) { |
|
713 | 713 | |
714 | - // Prepare the parameters. |
|
715 | - $wp_query_args = array( |
|
716 | - 'post_type' => $this->post_type, |
|
717 | - 'post_status' => $args['status'], |
|
718 | - 'author' => $args['user'], |
|
719 | - 'author__not_in' => $args['exclude_users'], |
|
720 | - 'posts_per_page' => $args['limit'], |
|
721 | - 'paged' => $args['page'], |
|
722 | - 'meta_key' => $args['meta_key'], |
|
723 | - 'meta_compare_key' => $args['meta_compare_key'], |
|
724 | - 'meta_value' => $args['meta_value'], |
|
725 | - 'meta_compare' => $args['meta_compare'], |
|
726 | - 'meta_value_num' => $args['meta_value_num'], |
|
727 | - 'post__in' => $args['include'], |
|
728 | - 'post__in' => $args['exclude'], |
|
729 | - 'date_query' => array( array() ), |
|
730 | - 'fields' => 'ids', |
|
731 | - 'orderby' => $args['orderby'], |
|
732 | - 'order' => $args['order'], |
|
733 | - ); |
|
734 | - |
|
735 | - // Only admins can view other user's invoices. |
|
736 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
737 | - $wp_query_args['author'] = get_current_user_id(); |
|
738 | - } |
|
739 | - |
|
740 | - // No date specific params provided. |
|
741 | - if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) { |
|
742 | - unset( $wp_query_args['date_query'] ); |
|
743 | - } |
|
744 | - |
|
745 | - if ( ! empty( $args['before_date'] ) ) { |
|
746 | - $wp_query_args['date_query'][0]['before'] = $args['before_date']; |
|
747 | - } |
|
748 | - |
|
749 | - if ( ! empty( $args['after_date'] ) ) { |
|
750 | - $wp_query_args['date_query'][0]['after'] = $args['after_date']; |
|
751 | - } |
|
752 | - |
|
753 | - // Remove empty variables. |
|
754 | - $wp_query_args = array_filter( $wp_query_args ); |
|
755 | - |
|
756 | - // This can be zero. |
|
757 | - if ( ! is_null( $args['meta_value_num'] ) ) { |
|
758 | - $wp_query_args['meta_value_num'] = $args['meta_value_num']; |
|
759 | - } |
|
714 | + // Prepare the parameters. |
|
715 | + $wp_query_args = array( |
|
716 | + 'post_type' => $this->post_type, |
|
717 | + 'post_status' => $args['status'], |
|
718 | + 'author' => $args['user'], |
|
719 | + 'author__not_in' => $args['exclude_users'], |
|
720 | + 'posts_per_page' => $args['limit'], |
|
721 | + 'paged' => $args['page'], |
|
722 | + 'meta_key' => $args['meta_key'], |
|
723 | + 'meta_compare_key' => $args['meta_compare_key'], |
|
724 | + 'meta_value' => $args['meta_value'], |
|
725 | + 'meta_compare' => $args['meta_compare'], |
|
726 | + 'meta_value_num' => $args['meta_value_num'], |
|
727 | + 'post__in' => $args['include'], |
|
728 | + 'post__in' => $args['exclude'], |
|
729 | + 'date_query' => array( array() ), |
|
730 | + 'fields' => 'ids', |
|
731 | + 'orderby' => $args['orderby'], |
|
732 | + 'order' => $args['order'], |
|
733 | + ); |
|
734 | + |
|
735 | + // Only admins can view other user's invoices. |
|
736 | + if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
737 | + $wp_query_args['author'] = get_current_user_id(); |
|
738 | + } |
|
739 | + |
|
740 | + // No date specific params provided. |
|
741 | + if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) { |
|
742 | + unset( $wp_query_args['date_query'] ); |
|
743 | + } |
|
744 | + |
|
745 | + if ( ! empty( $args['before_date'] ) ) { |
|
746 | + $wp_query_args['date_query'][0]['before'] = $args['before_date']; |
|
747 | + } |
|
748 | + |
|
749 | + if ( ! empty( $args['after_date'] ) ) { |
|
750 | + $wp_query_args['date_query'][0]['after'] = $args['after_date']; |
|
751 | + } |
|
752 | + |
|
753 | + // Remove empty variables. |
|
754 | + $wp_query_args = array_filter( $wp_query_args ); |
|
755 | + |
|
756 | + // This can be zero. |
|
757 | + if ( ! is_null( $args['meta_value_num'] ) ) { |
|
758 | + $wp_query_args['meta_value_num'] = $args['meta_value_num']; |
|
759 | + } |
|
760 | 760 | |
761 | - /** |
|
762 | - * Filters the invoices collection WP_Query parameters for the invoices controller. |
|
763 | - * |
|
764 | - * |
|
765 | - * @since 1.0.15 |
|
766 | - * |
|
767 | - * @param array $args Request args. |
|
768 | - * @param array $wp_query_args Generated WP_Query args args. |
|
769 | - * @param WP_REST_Request $request Full details about the request. |
|
770 | - */ |
|
771 | - return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request ); |
|
761 | + /** |
|
762 | + * Filters the invoices collection WP_Query parameters for the invoices controller. |
|
763 | + * |
|
764 | + * |
|
765 | + * @since 1.0.15 |
|
766 | + * |
|
767 | + * @param array $args Request args. |
|
768 | + * @param array $wp_query_args Generated WP_Query args args. |
|
769 | + * @param WP_REST_Request $request Full details about the request. |
|
770 | + */ |
|
771 | + return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request ); |
|
772 | 772 | } |
773 | 773 | |
774 | 774 | /** |
775 | - * Checks if a given post type can be viewed or managed. |
|
776 | - * |
|
777 | - * @since 1.0.13 |
|
778 | - * |
|
779 | - * @param object|string $post_type Post type name or object. |
|
780 | - * @return bool Whether the post type is allowed in REST. |
|
781 | - */ |
|
782 | - protected function check_is_post_type_allowed( $post_type ) { |
|
783 | - return true; |
|
784 | - } |
|
785 | - |
|
786 | - /** |
|
787 | - * Prepares a single invoice for create or update. |
|
788 | - * |
|
789 | - * @since 1.0.13 |
|
790 | - * |
|
791 | - * @param WP_REST_Request $request Request object. |
|
792 | - * @return array|WP_Error Invoice Properties or WP_Error. |
|
793 | - */ |
|
794 | - protected function prepare_item_for_database( $request ) { |
|
795 | - $prepared_invoice = new stdClass(); |
|
796 | - |
|
797 | - // Post ID. |
|
798 | - if ( isset( $request['id'] ) ) { |
|
799 | - $existing_invoice = $this->get_post( $request['id'] ); |
|
800 | - if ( is_wp_error( $existing_invoice ) ) { |
|
801 | - return $existing_invoice; |
|
802 | - } |
|
803 | - |
|
804 | - $prepared_invoice->ID = $existing_invoice->ID; |
|
805 | - $prepared_invoice->invoice_id = $existing_invoice->ID; |
|
806 | - } |
|
807 | - |
|
808 | - $schema = $this->get_item_schema(); |
|
809 | - |
|
810 | - // Invoice owner. |
|
811 | - if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { |
|
812 | - $prepared_invoice->user_id = (int) $request['user_id']; |
|
813 | - } |
|
814 | - |
|
815 | - // Cart details. |
|
816 | - if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) { |
|
817 | - $prepared_invoice->cart_details = (array) $request['cart_details']; |
|
818 | - } |
|
819 | - |
|
820 | - // Invoice status. |
|
821 | - if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { |
|
822 | - |
|
823 | - if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) { |
|
824 | - $prepared_invoice->status = $request['status']; |
|
825 | - } |
|
826 | - |
|
827 | - } |
|
828 | - |
|
829 | - // User info |
|
830 | - if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) { |
|
831 | - $prepared_invoice->user_info = array(); |
|
832 | - $user_info = (array) $request['user_info']; |
|
833 | - |
|
834 | - foreach( $user_info as $prop => $value ) { |
|
835 | - |
|
836 | - if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) { |
|
837 | - |
|
838 | - $prepared_invoice->user_info[$prop] = $value; |
|
775 | + * Checks if a given post type can be viewed or managed. |
|
776 | + * |
|
777 | + * @since 1.0.13 |
|
778 | + * |
|
779 | + * @param object|string $post_type Post type name or object. |
|
780 | + * @return bool Whether the post type is allowed in REST. |
|
781 | + */ |
|
782 | + protected function check_is_post_type_allowed( $post_type ) { |
|
783 | + return true; |
|
784 | + } |
|
785 | + |
|
786 | + /** |
|
787 | + * Prepares a single invoice for create or update. |
|
788 | + * |
|
789 | + * @since 1.0.13 |
|
790 | + * |
|
791 | + * @param WP_REST_Request $request Request object. |
|
792 | + * @return array|WP_Error Invoice Properties or WP_Error. |
|
793 | + */ |
|
794 | + protected function prepare_item_for_database( $request ) { |
|
795 | + $prepared_invoice = new stdClass(); |
|
796 | + |
|
797 | + // Post ID. |
|
798 | + if ( isset( $request['id'] ) ) { |
|
799 | + $existing_invoice = $this->get_post( $request['id'] ); |
|
800 | + if ( is_wp_error( $existing_invoice ) ) { |
|
801 | + return $existing_invoice; |
|
802 | + } |
|
803 | + |
|
804 | + $prepared_invoice->ID = $existing_invoice->ID; |
|
805 | + $prepared_invoice->invoice_id = $existing_invoice->ID; |
|
806 | + } |
|
807 | + |
|
808 | + $schema = $this->get_item_schema(); |
|
809 | + |
|
810 | + // Invoice owner. |
|
811 | + if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { |
|
812 | + $prepared_invoice->user_id = (int) $request['user_id']; |
|
813 | + } |
|
814 | + |
|
815 | + // Cart details. |
|
816 | + if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) { |
|
817 | + $prepared_invoice->cart_details = (array) $request['cart_details']; |
|
818 | + } |
|
819 | + |
|
820 | + // Invoice status. |
|
821 | + if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { |
|
822 | + |
|
823 | + if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) { |
|
824 | + $prepared_invoice->status = $request['status']; |
|
825 | + } |
|
826 | + |
|
827 | + } |
|
828 | + |
|
829 | + // User info |
|
830 | + if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) { |
|
831 | + $prepared_invoice->user_info = array(); |
|
832 | + $user_info = (array) $request['user_info']; |
|
833 | + |
|
834 | + foreach( $user_info as $prop => $value ) { |
|
835 | + |
|
836 | + if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) { |
|
837 | + |
|
838 | + $prepared_invoice->user_info[$prop] = $value; |
|
839 | 839 | |
840 | - } |
|
840 | + } |
|
841 | 841 | |
842 | - } |
|
842 | + } |
|
843 | 843 | |
844 | - } |
|
844 | + } |
|
845 | 845 | |
846 | - // IP |
|
847 | - if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) { |
|
848 | - $prepared_invoice->ip = $request['ip']; |
|
849 | - } |
|
846 | + // IP |
|
847 | + if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) { |
|
848 | + $prepared_invoice->ip = $request['ip']; |
|
849 | + } |
|
850 | 850 | |
851 | - // Payment details |
|
852 | - $prepared_invoice->payment_details = array(); |
|
851 | + // Payment details |
|
852 | + $prepared_invoice->payment_details = array(); |
|
853 | 853 | |
854 | - if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) { |
|
855 | - $prepared_invoice->payment_details['gateway'] = $request['gateway']; |
|
856 | - } |
|
854 | + if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) { |
|
855 | + $prepared_invoice->payment_details['gateway'] = $request['gateway']; |
|
856 | + } |
|
857 | 857 | |
858 | - if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) { |
|
859 | - $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title']; |
|
860 | - } |
|
858 | + if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) { |
|
859 | + $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title']; |
|
860 | + } |
|
861 | 861 | |
862 | - if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) { |
|
863 | - $prepared_invoice->payment_details['currency'] = $request['currency']; |
|
864 | - } |
|
862 | + if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) { |
|
863 | + $prepared_invoice->payment_details['currency'] = $request['currency']; |
|
864 | + } |
|
865 | 865 | |
866 | - if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) { |
|
867 | - $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id']; |
|
868 | - } |
|
866 | + if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) { |
|
867 | + $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id']; |
|
868 | + } |
|
869 | 869 | |
870 | - // Dates |
|
871 | - if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) { |
|
872 | - $post_date = rest_get_date_with_gmt( $request['date'] ); |
|
870 | + // Dates |
|
871 | + if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) { |
|
872 | + $post_date = rest_get_date_with_gmt( $request['date'] ); |
|
873 | 873 | |
874 | - if ( ! empty( $post_date ) ) { |
|
875 | - $prepared_invoice->post_date = $post_date[0]; |
|
876 | - } |
|
874 | + if ( ! empty( $post_date ) ) { |
|
875 | + $prepared_invoice->post_date = $post_date[0]; |
|
876 | + } |
|
877 | 877 | |
878 | - } |
|
878 | + } |
|
879 | 879 | |
880 | - if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) { |
|
881 | - $due_date = rest_get_date_with_gmt( $request['due_date'] ); |
|
880 | + if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) { |
|
881 | + $due_date = rest_get_date_with_gmt( $request['due_date'] ); |
|
882 | 882 | |
883 | - if ( ! empty( $due_date ) ) { |
|
884 | - $prepared_invoice->due_date = $due_date[0]; |
|
885 | - } |
|
883 | + if ( ! empty( $due_date ) ) { |
|
884 | + $prepared_invoice->due_date = $due_date[0]; |
|
885 | + } |
|
886 | 886 | |
887 | - } |
|
887 | + } |
|
888 | 888 | |
889 | - if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) { |
|
889 | + if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) { |
|
890 | 890 | |
891 | - if ( ! empty( $request['valid_until'] ) ) { |
|
892 | - $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) ); |
|
893 | - } else { |
|
894 | - $prepared_invoice->valid_until = ''; |
|
895 | - } |
|
891 | + if ( ! empty( $request['valid_until'] ) ) { |
|
892 | + $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) ); |
|
893 | + } else { |
|
894 | + $prepared_invoice->valid_until = ''; |
|
895 | + } |
|
896 | 896 | |
897 | - } |
|
897 | + } |
|
898 | 898 | |
899 | - $invoice_data = (array) wp_unslash( $prepared_invoice ); |
|
899 | + $invoice_data = (array) wp_unslash( $prepared_invoice ); |
|
900 | 900 | |
901 | - /** |
|
902 | - * Filters an invoice before it is inserted via the REST API. |
|
903 | - * |
|
904 | - * @since 1.0.13 |
|
905 | - * |
|
906 | - * @param array $invoice_data An array of invoice data |
|
907 | - * @param WP_REST_Request $request Request object. |
|
908 | - */ |
|
909 | - return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request ); |
|
901 | + /** |
|
902 | + * Filters an invoice before it is inserted via the REST API. |
|
903 | + * |
|
904 | + * @since 1.0.13 |
|
905 | + * |
|
906 | + * @param array $invoice_data An array of invoice data |
|
907 | + * @param WP_REST_Request $request Request object. |
|
908 | + */ |
|
909 | + return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request ); |
|
910 | 910 | |
911 | - } |
|
911 | + } |
|
912 | 912 | |
913 | - /** |
|
914 | - * Prepares a single invoice output for response. |
|
915 | - * |
|
916 | - * @since 1.0.13 |
|
917 | - * |
|
918 | - * @param WPInv_Invoice $invoice Invoice object. |
|
919 | - * @param WP_REST_Request $request Request object. |
|
920 | - * @return WP_REST_Response Response object. |
|
921 | - */ |
|
922 | - public function prepare_item_for_response( $invoice, $request ) { |
|
913 | + /** |
|
914 | + * Prepares a single invoice output for response. |
|
915 | + * |
|
916 | + * @since 1.0.13 |
|
917 | + * |
|
918 | + * @param WPInv_Invoice $invoice Invoice object. |
|
919 | + * @param WP_REST_Request $request Request object. |
|
920 | + * @return WP_REST_Response Response object. |
|
921 | + */ |
|
922 | + public function prepare_item_for_response( $invoice, $request ) { |
|
923 | 923 | |
924 | - $GLOBALS['post'] = get_post( $invoice->ID ); |
|
924 | + $GLOBALS['post'] = get_post( $invoice->ID ); |
|
925 | 925 | |
926 | - setup_postdata( $invoice->ID ); |
|
926 | + setup_postdata( $invoice->ID ); |
|
927 | 927 | |
928 | - // Fetch the fields to include in this response. |
|
929 | - $fields = $this->get_fields_for_response( $request ); |
|
928 | + // Fetch the fields to include in this response. |
|
929 | + $fields = $this->get_fields_for_response( $request ); |
|
930 | 930 | |
931 | - // Base fields for every invoice. |
|
932 | - $data = array(); |
|
931 | + // Base fields for every invoice. |
|
932 | + $data = array(); |
|
933 | 933 | |
934 | - // Set up ID |
|
935 | - if ( rest_is_field_included( 'id', $fields ) ) { |
|
936 | - $data['id'] = $invoice->ID; |
|
937 | - } |
|
934 | + // Set up ID |
|
935 | + if ( rest_is_field_included( 'id', $fields ) ) { |
|
936 | + $data['id'] = $invoice->ID; |
|
937 | + } |
|
938 | 938 | |
939 | 939 | |
940 | - // Basic properties |
|
941 | - $invoice_properties = array( |
|
942 | - 'title', 'email', 'ip', |
|
943 | - 'key', 'number', 'transaction_id', 'mode', |
|
944 | - 'gateway', 'gateway_title', |
|
945 | - 'total', 'discount', 'discount_code', |
|
946 | - 'tax', 'fees_total', 'subtotal', 'currency', |
|
947 | - 'status', 'status_nicename', 'post_type' |
|
948 | - ); |
|
949 | - |
|
950 | - foreach( $invoice_properties as $property ) { |
|
940 | + // Basic properties |
|
941 | + $invoice_properties = array( |
|
942 | + 'title', 'email', 'ip', |
|
943 | + 'key', 'number', 'transaction_id', 'mode', |
|
944 | + 'gateway', 'gateway_title', |
|
945 | + 'total', 'discount', 'discount_code', |
|
946 | + 'tax', 'fees_total', 'subtotal', 'currency', |
|
947 | + 'status', 'status_nicename', 'post_type' |
|
948 | + ); |
|
951 | 949 | |
952 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
953 | - $data[$property] = $invoice->get( $property ); |
|
954 | - } |
|
955 | - |
|
956 | - } |
|
957 | - |
|
958 | - // Valid until |
|
959 | - if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) { |
|
960 | - $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true ); |
|
961 | - } |
|
962 | - |
|
963 | - // Cart details |
|
964 | - if ( rest_is_field_included( 'cart_details', $fields ) ) { |
|
965 | - $data['cart_details'] = $invoice->get( 'cart_details' ); |
|
966 | - } |
|
967 | - |
|
968 | - //Dates |
|
969 | - $invoice_properties = array( 'date', 'due_date', 'completed_date' ); |
|
970 | - |
|
971 | - foreach( $invoice_properties as $property ) { |
|
972 | - |
|
973 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
974 | - $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) ); |
|
975 | - } |
|
976 | - |
|
977 | - } |
|
978 | - |
|
979 | - // User id |
|
980 | - if ( rest_is_field_included( 'user_id', $fields ) ) { |
|
981 | - $data['user_id'] = (int) $invoice->get( 'user_id' ); |
|
982 | - } |
|
983 | - |
|
984 | - // User info |
|
985 | - $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' ); |
|
986 | - |
|
987 | - foreach( $user_info as $property ) { |
|
988 | - |
|
989 | - if ( rest_is_field_included( "user_info.$property", $fields ) ) { |
|
990 | - $data['user_info'][$property] = $invoice->get( $property ); |
|
991 | - } |
|
992 | - |
|
993 | - } |
|
994 | - |
|
995 | - // Slug |
|
996 | - if ( rest_is_field_included( 'slug', $fields ) ) { |
|
997 | - $data['slug'] = $invoice->get( 'post_name' ); |
|
998 | - } |
|
999 | - |
|
1000 | - // View invoice link |
|
1001 | - if ( rest_is_field_included( 'link', $fields ) ) { |
|
1002 | - $data['link'] = esc_url( $invoice->get_view_url() ); |
|
1003 | - } |
|
1004 | - |
|
1005 | - |
|
1006 | - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
1007 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
1008 | - $data = $this->filter_response_by_context( $data, $context ); |
|
1009 | - |
|
1010 | - // Wrap the data in a response object. |
|
1011 | - $response = rest_ensure_response( $data ); |
|
1012 | - |
|
1013 | - $links = $this->prepare_links( $invoice ); |
|
1014 | - $response->add_links( $links ); |
|
1015 | - |
|
1016 | - if ( ! empty( $links['self']['href'] ) ) { |
|
1017 | - $actions = $this->get_available_actions( $invoice, $request ); |
|
1018 | - |
|
1019 | - $self = $links['self']['href']; |
|
1020 | - |
|
1021 | - foreach ( $actions as $rel ) { |
|
1022 | - $response->add_link( $rel, $self ); |
|
1023 | - } |
|
1024 | - } |
|
1025 | - |
|
1026 | - /** |
|
1027 | - * Filters the invoice data for a response. |
|
1028 | - * |
|
1029 | - * @since 1.0.13 |
|
1030 | - * |
|
1031 | - * @param WP_REST_Response $response The response object. |
|
1032 | - * @param WPInv_Invoice $invoice The invoice object. |
|
1033 | - * @param WP_REST_Request $request Request object. |
|
1034 | - */ |
|
1035 | - return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request ); |
|
1036 | - } |
|
1037 | - |
|
1038 | - /** |
|
1039 | - * Gets an array of fields to be included on the response. |
|
1040 | - * |
|
1041 | - * Included fields are based on item schema and `_fields=` request argument. |
|
1042 | - * |
|
1043 | - * @since 1.0.13 |
|
1044 | - * |
|
1045 | - * @param WP_REST_Request $request Full details about the request. |
|
1046 | - * @return array Fields to be included in the response. |
|
1047 | - */ |
|
1048 | - public function get_fields_for_response( $request ) { |
|
1049 | - $schema = $this->get_item_schema(); |
|
1050 | - $properties = isset( $schema['properties'] ) ? $schema['properties'] : array(); |
|
1051 | - |
|
1052 | - $additional_fields = $this->get_additional_fields(); |
|
1053 | - foreach ( $additional_fields as $field_name => $field_options ) { |
|
1054 | - // For back-compat, include any field with an empty schema |
|
1055 | - // because it won't be present in $this->get_item_schema(). |
|
1056 | - if ( is_null( $field_options['schema'] ) ) { |
|
1057 | - $properties[ $field_name ] = $field_options; |
|
1058 | - } |
|
1059 | - } |
|
1060 | - |
|
1061 | - // Exclude fields that specify a different context than the request context. |
|
1062 | - $context = $request['context']; |
|
1063 | - if ( $context ) { |
|
1064 | - foreach ( $properties as $name => $options ) { |
|
1065 | - if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) { |
|
1066 | - unset( $properties[ $name ] ); |
|
1067 | - } |
|
1068 | - } |
|
1069 | - } |
|
1070 | - |
|
1071 | - $fields = array_keys( $properties ); |
|
1072 | - |
|
1073 | - if ( ! isset( $request['_fields'] ) ) { |
|
1074 | - return $fields; |
|
1075 | - } |
|
1076 | - $requested_fields = wpinv_parse_list( $request['_fields'] ); |
|
1077 | - if ( 0 === count( $requested_fields ) ) { |
|
1078 | - return $fields; |
|
1079 | - } |
|
1080 | - // Trim off outside whitespace from the comma delimited list. |
|
1081 | - $requested_fields = array_map( 'trim', $requested_fields ); |
|
1082 | - // Always persist 'id', because it can be needed for add_additional_fields_to_object(). |
|
1083 | - if ( in_array( 'id', $fields, true ) ) { |
|
1084 | - $requested_fields[] = 'id'; |
|
1085 | - } |
|
1086 | - // Return the list of all requested fields which appear in the schema. |
|
1087 | - return array_reduce( |
|
1088 | - $requested_fields, |
|
1089 | - function( $response_fields, $field ) use ( $fields ) { |
|
1090 | - if ( in_array( $field, $fields, true ) ) { |
|
1091 | - $response_fields[] = $field; |
|
1092 | - return $response_fields; |
|
1093 | - } |
|
1094 | - // Check for nested fields if $field is not a direct match. |
|
1095 | - $nested_fields = explode( '.', $field ); |
|
1096 | - // A nested field is included so long as its top-level property is |
|
1097 | - // present in the schema. |
|
1098 | - if ( in_array( $nested_fields[0], $fields, true ) ) { |
|
1099 | - $response_fields[] = $field; |
|
1100 | - } |
|
1101 | - return $response_fields; |
|
1102 | - }, |
|
1103 | - array() |
|
1104 | - ); |
|
1105 | - } |
|
1106 | - |
|
1107 | - /** |
|
1108 | - * Retrieves the invoice's schema, conforming to JSON Schema. |
|
1109 | - * |
|
1110 | - * @since 1.0.13 |
|
1111 | - * |
|
1112 | - * @return array Invoice schema data. |
|
1113 | - */ |
|
1114 | - public function get_item_schema() { |
|
1115 | - |
|
1116 | - // Maybe retrieve the schema from cache. |
|
1117 | - if ( $this->schema ) { |
|
1118 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1119 | - } |
|
1120 | - |
|
1121 | - $schema = array( |
|
1122 | - '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
1123 | - 'title' => $this->post_type, |
|
1124 | - 'type' => 'object', |
|
1125 | - |
|
1126 | - // Base properties for every Invoice. |
|
1127 | - 'properties' => array( |
|
1128 | - |
|
1129 | - 'title' => array( |
|
1130 | - 'description' => __( 'The title for the invoice.', 'invoicing' ), |
|
1131 | - 'type' => 'string', |
|
1132 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1133 | - 'readonly' => true, |
|
1134 | - ), |
|
1135 | - |
|
1136 | - 'user_id' => array( |
|
1137 | - 'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ), |
|
1138 | - 'type' => 'integer', |
|
1139 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1140 | - ), |
|
1141 | - |
|
1142 | - 'email' => array( |
|
1143 | - 'description' => __( 'The email of the owner of the invoice.', 'invoicing' ), |
|
1144 | - 'type' => 'string', |
|
1145 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1146 | - 'readonly' => true, |
|
1147 | - ), |
|
1148 | - |
|
1149 | - 'ip' => array( |
|
1150 | - 'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ), |
|
1151 | - 'type' => 'string', |
|
1152 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1153 | - ), |
|
1154 | - |
|
1155 | - 'user_info' => array( |
|
1156 | - 'description' => __( 'Information about the owner of the invoice.', 'invoicing' ), |
|
1157 | - 'type' => 'object', |
|
1158 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1159 | - 'properties' => array( |
|
1160 | - |
|
1161 | - 'first_name' => array( |
|
1162 | - 'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ), |
|
1163 | - 'type' => 'string', |
|
1164 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1165 | - ), |
|
1166 | - |
|
1167 | - 'last_name' => array( |
|
1168 | - 'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ), |
|
1169 | - 'type' => 'string', |
|
1170 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1171 | - ), |
|
1172 | - |
|
1173 | - 'company' => array( |
|
1174 | - 'description' => __( 'The company of the owner of the invoice.', 'invoicing' ), |
|
1175 | - 'type' => 'string', |
|
1176 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1177 | - ), |
|
1178 | - |
|
1179 | - 'vat_number' => array( |
|
1180 | - 'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ), |
|
1181 | - 'type' => 'string', |
|
1182 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1183 | - ), |
|
1184 | - |
|
1185 | - 'vat_rate' => array( |
|
1186 | - 'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ), |
|
1187 | - 'type' => 'string', |
|
1188 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1189 | - ), |
|
1190 | - |
|
1191 | - 'address' => array( |
|
1192 | - 'description' => __( 'The address of the invoice owner.', 'invoicing' ), |
|
1193 | - 'type' => 'string', |
|
1194 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1195 | - ), |
|
1196 | - |
|
1197 | - 'city' => array( |
|
1198 | - 'description' => __( 'The city of the invoice owner.', 'invoicing' ), |
|
1199 | - 'type' => 'string', |
|
1200 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1201 | - ), |
|
1202 | - |
|
1203 | - 'country' => array( |
|
1204 | - 'description' => __( 'The country of the invoice owner.', 'invoicing' ), |
|
1205 | - 'type' => 'string', |
|
1206 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1207 | - ), |
|
1208 | - |
|
1209 | - 'state' => array( |
|
1210 | - 'description' => __( 'The state of the invoice owner.', 'invoicing' ), |
|
1211 | - 'type' => 'string', |
|
1212 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1213 | - ), |
|
1214 | - |
|
1215 | - 'zip' => array( |
|
1216 | - 'description' => __( 'The zip code of the invoice owner.', 'invoicing' ), |
|
1217 | - 'type' => 'string', |
|
1218 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1219 | - ), |
|
1220 | - |
|
1221 | - 'phone' => array( |
|
1222 | - 'description' => __( 'The phone number of the invoice owner.', 'invoicing' ), |
|
1223 | - 'type' => 'string', |
|
1224 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1225 | - ), |
|
1226 | - ), |
|
1227 | - ), |
|
1228 | - |
|
1229 | - 'id' => array( |
|
1230 | - 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
1231 | - 'type' => 'integer', |
|
1232 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1233 | - 'readonly' => true, |
|
1234 | - ), |
|
1235 | - |
|
1236 | - 'key' => array( |
|
1237 | - 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
1238 | - 'type' => 'string', |
|
1239 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1240 | - 'readonly' => true, |
|
1241 | - ), |
|
1242 | - |
|
1243 | - 'number' => array( |
|
1244 | - 'description' => __( 'The invoice number.', 'invoicing' ), |
|
1245 | - 'type' => 'string', |
|
1246 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1247 | - 'readonly' => true, |
|
1248 | - ), |
|
1249 | - |
|
1250 | - 'transaction_id' => array( |
|
1251 | - 'description' => __( 'The transaction id of the invoice.', 'invoicing' ), |
|
1252 | - 'type' => 'string', |
|
1253 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1254 | - ), |
|
1255 | - |
|
1256 | - 'gateway' => array( |
|
1257 | - 'description' => __( 'The gateway used to process the invoice.', 'invoicing' ), |
|
1258 | - 'type' => 'string', |
|
1259 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1260 | - ), |
|
1261 | - |
|
1262 | - 'gateway_title' => array( |
|
1263 | - 'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ), |
|
1264 | - 'type' => 'string', |
|
1265 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1266 | - ), |
|
1267 | - |
|
1268 | - 'total' => array( |
|
1269 | - 'description' => __( 'The total amount of the invoice.', 'invoicing' ), |
|
1270 | - 'type' => 'number', |
|
1271 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1272 | - 'readonly' => true, |
|
1273 | - ), |
|
1274 | - |
|
1275 | - 'discount' => array( |
|
1276 | - 'description' => __( 'The discount applied to the invoice.', 'invoicing' ), |
|
1277 | - 'type' => 'number', |
|
1278 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1279 | - 'readonly' => true, |
|
1280 | - ), |
|
1281 | - |
|
1282 | - 'discount_code' => array( |
|
1283 | - 'description' => __( 'The discount code applied to the invoice.', 'invoicing' ), |
|
1284 | - 'type' => 'string', |
|
1285 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1286 | - 'readonly' => true, |
|
1287 | - ), |
|
1288 | - |
|
1289 | - 'tax' => array( |
|
1290 | - 'description' => __( 'The tax applied to the invoice.', 'invoicing' ), |
|
1291 | - 'type' => 'number', |
|
1292 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1293 | - 'readonly' => true, |
|
1294 | - ), |
|
1295 | - |
|
1296 | - 'fees_total' => array( |
|
1297 | - 'description' => __( 'The total fees applied to the invoice.', 'invoicing' ), |
|
1298 | - 'type' => 'number', |
|
1299 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1300 | - 'readonly' => true, |
|
1301 | - ), |
|
1302 | - |
|
1303 | - 'subtotal' => array( |
|
1304 | - 'description' => __( 'The sub-total for the invoice.', 'invoicing' ), |
|
1305 | - 'type' => 'number', |
|
1306 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1307 | - 'readonly' => true, |
|
1308 | - ), |
|
1309 | - |
|
1310 | - 'currency' => array( |
|
1311 | - 'description' => __( 'The currency used to process the invoice.', 'invoicing' ), |
|
1312 | - 'type' => 'string', |
|
1313 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1314 | - ), |
|
1315 | - |
|
1316 | - 'cart_details' => array( |
|
1317 | - 'description' => __( 'The cart details for invoice.', 'invoicing' ), |
|
1318 | - 'type' => 'array', |
|
1319 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1320 | - 'required' => true, |
|
1321 | - ), |
|
1322 | - |
|
1323 | - 'date' => array( |
|
1324 | - 'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ), |
|
1325 | - 'type' => array( 'string', 'null' ), |
|
1326 | - 'format' => 'date-time', |
|
1327 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1328 | - ), |
|
1329 | - |
|
1330 | - 'due_date' => array( |
|
1331 | - 'description' => __( 'The due date for the invoice.', 'invoicing' ), |
|
1332 | - 'type' => array( 'string', 'null' ), |
|
1333 | - 'format' => 'date-time', |
|
1334 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1335 | - ), |
|
1336 | - |
|
1337 | - 'completed_date' => array( |
|
1338 | - 'description' => __( 'The completed date for the invoice.', 'invoicing' ), |
|
1339 | - 'type' => array( 'string', 'null' ), |
|
1340 | - 'format' => 'date-time', |
|
1341 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1342 | - 'readonly' => true, |
|
1343 | - ), |
|
950 | + foreach( $invoice_properties as $property ) { |
|
951 | + |
|
952 | + if ( rest_is_field_included( $property, $fields ) ) { |
|
953 | + $data[$property] = $invoice->get( $property ); |
|
954 | + } |
|
955 | + |
|
956 | + } |
|
957 | + |
|
958 | + // Valid until |
|
959 | + if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) { |
|
960 | + $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true ); |
|
961 | + } |
|
962 | + |
|
963 | + // Cart details |
|
964 | + if ( rest_is_field_included( 'cart_details', $fields ) ) { |
|
965 | + $data['cart_details'] = $invoice->get( 'cart_details' ); |
|
966 | + } |
|
967 | + |
|
968 | + //Dates |
|
969 | + $invoice_properties = array( 'date', 'due_date', 'completed_date' ); |
|
970 | + |
|
971 | + foreach( $invoice_properties as $property ) { |
|
972 | + |
|
973 | + if ( rest_is_field_included( $property, $fields ) ) { |
|
974 | + $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) ); |
|
975 | + } |
|
976 | + |
|
977 | + } |
|
978 | + |
|
979 | + // User id |
|
980 | + if ( rest_is_field_included( 'user_id', $fields ) ) { |
|
981 | + $data['user_id'] = (int) $invoice->get( 'user_id' ); |
|
982 | + } |
|
983 | + |
|
984 | + // User info |
|
985 | + $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' ); |
|
986 | + |
|
987 | + foreach( $user_info as $property ) { |
|
988 | + |
|
989 | + if ( rest_is_field_included( "user_info.$property", $fields ) ) { |
|
990 | + $data['user_info'][$property] = $invoice->get( $property ); |
|
991 | + } |
|
992 | + |
|
993 | + } |
|
994 | + |
|
995 | + // Slug |
|
996 | + if ( rest_is_field_included( 'slug', $fields ) ) { |
|
997 | + $data['slug'] = $invoice->get( 'post_name' ); |
|
998 | + } |
|
999 | + |
|
1000 | + // View invoice link |
|
1001 | + if ( rest_is_field_included( 'link', $fields ) ) { |
|
1002 | + $data['link'] = esc_url( $invoice->get_view_url() ); |
|
1003 | + } |
|
1004 | + |
|
1005 | + |
|
1006 | + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
1007 | + $data = $this->add_additional_fields_to_object( $data, $request ); |
|
1008 | + $data = $this->filter_response_by_context( $data, $context ); |
|
1009 | + |
|
1010 | + // Wrap the data in a response object. |
|
1011 | + $response = rest_ensure_response( $data ); |
|
1012 | + |
|
1013 | + $links = $this->prepare_links( $invoice ); |
|
1014 | + $response->add_links( $links ); |
|
1015 | + |
|
1016 | + if ( ! empty( $links['self']['href'] ) ) { |
|
1017 | + $actions = $this->get_available_actions( $invoice, $request ); |
|
1018 | + |
|
1019 | + $self = $links['self']['href']; |
|
1020 | + |
|
1021 | + foreach ( $actions as $rel ) { |
|
1022 | + $response->add_link( $rel, $self ); |
|
1023 | + } |
|
1024 | + } |
|
1025 | + |
|
1026 | + /** |
|
1027 | + * Filters the invoice data for a response. |
|
1028 | + * |
|
1029 | + * @since 1.0.13 |
|
1030 | + * |
|
1031 | + * @param WP_REST_Response $response The response object. |
|
1032 | + * @param WPInv_Invoice $invoice The invoice object. |
|
1033 | + * @param WP_REST_Request $request Request object. |
|
1034 | + */ |
|
1035 | + return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request ); |
|
1036 | + } |
|
1037 | + |
|
1038 | + /** |
|
1039 | + * Gets an array of fields to be included on the response. |
|
1040 | + * |
|
1041 | + * Included fields are based on item schema and `_fields=` request argument. |
|
1042 | + * |
|
1043 | + * @since 1.0.13 |
|
1044 | + * |
|
1045 | + * @param WP_REST_Request $request Full details about the request. |
|
1046 | + * @return array Fields to be included in the response. |
|
1047 | + */ |
|
1048 | + public function get_fields_for_response( $request ) { |
|
1049 | + $schema = $this->get_item_schema(); |
|
1050 | + $properties = isset( $schema['properties'] ) ? $schema['properties'] : array(); |
|
1051 | + |
|
1052 | + $additional_fields = $this->get_additional_fields(); |
|
1053 | + foreach ( $additional_fields as $field_name => $field_options ) { |
|
1054 | + // For back-compat, include any field with an empty schema |
|
1055 | + // because it won't be present in $this->get_item_schema(). |
|
1056 | + if ( is_null( $field_options['schema'] ) ) { |
|
1057 | + $properties[ $field_name ] = $field_options; |
|
1058 | + } |
|
1059 | + } |
|
1060 | + |
|
1061 | + // Exclude fields that specify a different context than the request context. |
|
1062 | + $context = $request['context']; |
|
1063 | + if ( $context ) { |
|
1064 | + foreach ( $properties as $name => $options ) { |
|
1065 | + if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) { |
|
1066 | + unset( $properties[ $name ] ); |
|
1067 | + } |
|
1068 | + } |
|
1069 | + } |
|
1070 | + |
|
1071 | + $fields = array_keys( $properties ); |
|
1072 | + |
|
1073 | + if ( ! isset( $request['_fields'] ) ) { |
|
1074 | + return $fields; |
|
1075 | + } |
|
1076 | + $requested_fields = wpinv_parse_list( $request['_fields'] ); |
|
1077 | + if ( 0 === count( $requested_fields ) ) { |
|
1078 | + return $fields; |
|
1079 | + } |
|
1080 | + // Trim off outside whitespace from the comma delimited list. |
|
1081 | + $requested_fields = array_map( 'trim', $requested_fields ); |
|
1082 | + // Always persist 'id', because it can be needed for add_additional_fields_to_object(). |
|
1083 | + if ( in_array( 'id', $fields, true ) ) { |
|
1084 | + $requested_fields[] = 'id'; |
|
1085 | + } |
|
1086 | + // Return the list of all requested fields which appear in the schema. |
|
1087 | + return array_reduce( |
|
1088 | + $requested_fields, |
|
1089 | + function( $response_fields, $field ) use ( $fields ) { |
|
1090 | + if ( in_array( $field, $fields, true ) ) { |
|
1091 | + $response_fields[] = $field; |
|
1092 | + return $response_fields; |
|
1093 | + } |
|
1094 | + // Check for nested fields if $field is not a direct match. |
|
1095 | + $nested_fields = explode( '.', $field ); |
|
1096 | + // A nested field is included so long as its top-level property is |
|
1097 | + // present in the schema. |
|
1098 | + if ( in_array( $nested_fields[0], $fields, true ) ) { |
|
1099 | + $response_fields[] = $field; |
|
1100 | + } |
|
1101 | + return $response_fields; |
|
1102 | + }, |
|
1103 | + array() |
|
1104 | + ); |
|
1105 | + } |
|
1106 | + |
|
1107 | + /** |
|
1108 | + * Retrieves the invoice's schema, conforming to JSON Schema. |
|
1109 | + * |
|
1110 | + * @since 1.0.13 |
|
1111 | + * |
|
1112 | + * @return array Invoice schema data. |
|
1113 | + */ |
|
1114 | + public function get_item_schema() { |
|
1115 | + |
|
1116 | + // Maybe retrieve the schema from cache. |
|
1117 | + if ( $this->schema ) { |
|
1118 | + return $this->add_additional_fields_schema( $this->schema ); |
|
1119 | + } |
|
1120 | + |
|
1121 | + $schema = array( |
|
1122 | + '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
1123 | + 'title' => $this->post_type, |
|
1124 | + 'type' => 'object', |
|
1125 | + |
|
1126 | + // Base properties for every Invoice. |
|
1127 | + 'properties' => array( |
|
1128 | + |
|
1129 | + 'title' => array( |
|
1130 | + 'description' => __( 'The title for the invoice.', 'invoicing' ), |
|
1131 | + 'type' => 'string', |
|
1132 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1133 | + 'readonly' => true, |
|
1134 | + ), |
|
1135 | + |
|
1136 | + 'user_id' => array( |
|
1137 | + 'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ), |
|
1138 | + 'type' => 'integer', |
|
1139 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1140 | + ), |
|
1141 | + |
|
1142 | + 'email' => array( |
|
1143 | + 'description' => __( 'The email of the owner of the invoice.', 'invoicing' ), |
|
1144 | + 'type' => 'string', |
|
1145 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1146 | + 'readonly' => true, |
|
1147 | + ), |
|
1148 | + |
|
1149 | + 'ip' => array( |
|
1150 | + 'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ), |
|
1151 | + 'type' => 'string', |
|
1152 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1153 | + ), |
|
1154 | + |
|
1155 | + 'user_info' => array( |
|
1156 | + 'description' => __( 'Information about the owner of the invoice.', 'invoicing' ), |
|
1157 | + 'type' => 'object', |
|
1158 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1159 | + 'properties' => array( |
|
1160 | + |
|
1161 | + 'first_name' => array( |
|
1162 | + 'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ), |
|
1163 | + 'type' => 'string', |
|
1164 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1165 | + ), |
|
1166 | + |
|
1167 | + 'last_name' => array( |
|
1168 | + 'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ), |
|
1169 | + 'type' => 'string', |
|
1170 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1171 | + ), |
|
1172 | + |
|
1173 | + 'company' => array( |
|
1174 | + 'description' => __( 'The company of the owner of the invoice.', 'invoicing' ), |
|
1175 | + 'type' => 'string', |
|
1176 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1177 | + ), |
|
1178 | + |
|
1179 | + 'vat_number' => array( |
|
1180 | + 'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ), |
|
1181 | + 'type' => 'string', |
|
1182 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1183 | + ), |
|
1184 | + |
|
1185 | + 'vat_rate' => array( |
|
1186 | + 'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ), |
|
1187 | + 'type' => 'string', |
|
1188 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1189 | + ), |
|
1190 | + |
|
1191 | + 'address' => array( |
|
1192 | + 'description' => __( 'The address of the invoice owner.', 'invoicing' ), |
|
1193 | + 'type' => 'string', |
|
1194 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1195 | + ), |
|
1196 | + |
|
1197 | + 'city' => array( |
|
1198 | + 'description' => __( 'The city of the invoice owner.', 'invoicing' ), |
|
1199 | + 'type' => 'string', |
|
1200 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1201 | + ), |
|
1202 | + |
|
1203 | + 'country' => array( |
|
1204 | + 'description' => __( 'The country of the invoice owner.', 'invoicing' ), |
|
1205 | + 'type' => 'string', |
|
1206 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1207 | + ), |
|
1208 | + |
|
1209 | + 'state' => array( |
|
1210 | + 'description' => __( 'The state of the invoice owner.', 'invoicing' ), |
|
1211 | + 'type' => 'string', |
|
1212 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1213 | + ), |
|
1214 | + |
|
1215 | + 'zip' => array( |
|
1216 | + 'description' => __( 'The zip code of the invoice owner.', 'invoicing' ), |
|
1217 | + 'type' => 'string', |
|
1218 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1219 | + ), |
|
1220 | + |
|
1221 | + 'phone' => array( |
|
1222 | + 'description' => __( 'The phone number of the invoice owner.', 'invoicing' ), |
|
1223 | + 'type' => 'string', |
|
1224 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1225 | + ), |
|
1226 | + ), |
|
1227 | + ), |
|
1228 | + |
|
1229 | + 'id' => array( |
|
1230 | + 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
1231 | + 'type' => 'integer', |
|
1232 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1233 | + 'readonly' => true, |
|
1234 | + ), |
|
1235 | + |
|
1236 | + 'key' => array( |
|
1237 | + 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
1238 | + 'type' => 'string', |
|
1239 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1240 | + 'readonly' => true, |
|
1241 | + ), |
|
1242 | + |
|
1243 | + 'number' => array( |
|
1244 | + 'description' => __( 'The invoice number.', 'invoicing' ), |
|
1245 | + 'type' => 'string', |
|
1246 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1247 | + 'readonly' => true, |
|
1248 | + ), |
|
1249 | + |
|
1250 | + 'transaction_id' => array( |
|
1251 | + 'description' => __( 'The transaction id of the invoice.', 'invoicing' ), |
|
1252 | + 'type' => 'string', |
|
1253 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1254 | + ), |
|
1255 | + |
|
1256 | + 'gateway' => array( |
|
1257 | + 'description' => __( 'The gateway used to process the invoice.', 'invoicing' ), |
|
1258 | + 'type' => 'string', |
|
1259 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1260 | + ), |
|
1261 | + |
|
1262 | + 'gateway_title' => array( |
|
1263 | + 'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ), |
|
1264 | + 'type' => 'string', |
|
1265 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1266 | + ), |
|
1267 | + |
|
1268 | + 'total' => array( |
|
1269 | + 'description' => __( 'The total amount of the invoice.', 'invoicing' ), |
|
1270 | + 'type' => 'number', |
|
1271 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1272 | + 'readonly' => true, |
|
1273 | + ), |
|
1274 | + |
|
1275 | + 'discount' => array( |
|
1276 | + 'description' => __( 'The discount applied to the invoice.', 'invoicing' ), |
|
1277 | + 'type' => 'number', |
|
1278 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1279 | + 'readonly' => true, |
|
1280 | + ), |
|
1281 | + |
|
1282 | + 'discount_code' => array( |
|
1283 | + 'description' => __( 'The discount code applied to the invoice.', 'invoicing' ), |
|
1284 | + 'type' => 'string', |
|
1285 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1286 | + 'readonly' => true, |
|
1287 | + ), |
|
1288 | + |
|
1289 | + 'tax' => array( |
|
1290 | + 'description' => __( 'The tax applied to the invoice.', 'invoicing' ), |
|
1291 | + 'type' => 'number', |
|
1292 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1293 | + 'readonly' => true, |
|
1294 | + ), |
|
1295 | + |
|
1296 | + 'fees_total' => array( |
|
1297 | + 'description' => __( 'The total fees applied to the invoice.', 'invoicing' ), |
|
1298 | + 'type' => 'number', |
|
1299 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1300 | + 'readonly' => true, |
|
1301 | + ), |
|
1302 | + |
|
1303 | + 'subtotal' => array( |
|
1304 | + 'description' => __( 'The sub-total for the invoice.', 'invoicing' ), |
|
1305 | + 'type' => 'number', |
|
1306 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1307 | + 'readonly' => true, |
|
1308 | + ), |
|
1309 | + |
|
1310 | + 'currency' => array( |
|
1311 | + 'description' => __( 'The currency used to process the invoice.', 'invoicing' ), |
|
1312 | + 'type' => 'string', |
|
1313 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1314 | + ), |
|
1315 | + |
|
1316 | + 'cart_details' => array( |
|
1317 | + 'description' => __( 'The cart details for invoice.', 'invoicing' ), |
|
1318 | + 'type' => 'array', |
|
1319 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1320 | + 'required' => true, |
|
1321 | + ), |
|
1322 | + |
|
1323 | + 'date' => array( |
|
1324 | + 'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ), |
|
1325 | + 'type' => array( 'string', 'null' ), |
|
1326 | + 'format' => 'date-time', |
|
1327 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1328 | + ), |
|
1329 | + |
|
1330 | + 'due_date' => array( |
|
1331 | + 'description' => __( 'The due date for the invoice.', 'invoicing' ), |
|
1332 | + 'type' => array( 'string', 'null' ), |
|
1333 | + 'format' => 'date-time', |
|
1334 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1335 | + ), |
|
1336 | + |
|
1337 | + 'completed_date' => array( |
|
1338 | + 'description' => __( 'The completed date for the invoice.', 'invoicing' ), |
|
1339 | + 'type' => array( 'string', 'null' ), |
|
1340 | + 'format' => 'date-time', |
|
1341 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1342 | + 'readonly' => true, |
|
1343 | + ), |
|
1344 | 1344 | |
1345 | - 'link' => array( |
|
1346 | - 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
1347 | - 'type' => 'string', |
|
1348 | - 'format' => 'uri', |
|
1349 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1350 | - 'readonly' => true, |
|
1351 | - ), |
|
1352 | - |
|
1353 | - 'mode' => array( |
|
1354 | - 'description' => __( 'The mode used to process the invoice.', 'invoicing' ), |
|
1355 | - 'type' => 'string', |
|
1356 | - 'enum' => array( 'live', 'test' ), |
|
1357 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1358 | - 'readonly' => true, |
|
1359 | - ), |
|
1360 | - |
|
1361 | - 'slug' => array( |
|
1362 | - 'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ), |
|
1363 | - 'type' => 'string', |
|
1364 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1365 | - 'arg_options' => array( |
|
1366 | - 'sanitize_callback' => array( $this, 'sanitize_slug' ), |
|
1367 | - ), |
|
1368 | - 'readonly' => true, |
|
1369 | - ), |
|
1370 | - |
|
1371 | - 'status' => array( |
|
1372 | - 'description' => __( 'A named status for the invoice.', 'invoicing' ), |
|
1373 | - 'type' => 'string', |
|
1374 | - 'enum' => $this->get_post_statuses(), |
|
1375 | - 'context' => array( 'view', 'edit' ), |
|
1376 | - 'default' => 'wpi-pending', |
|
1377 | - ), |
|
1378 | - |
|
1379 | - 'status_nicename' => array( |
|
1380 | - 'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ), |
|
1381 | - 'type' => 'string', |
|
1382 | - 'context' => array( 'view', 'embed' ), |
|
1383 | - 'readonly' => true, |
|
1384 | - ), |
|
1385 | - |
|
1386 | - 'post_type' => array( |
|
1387 | - 'description' => __( 'The post type for the invoice.', 'invoicing' ), |
|
1388 | - 'type' => 'string', |
|
1389 | - 'context' => array( 'view' ), |
|
1390 | - 'readonly' => true, |
|
1391 | - ), |
|
1392 | - ), |
|
1393 | - ); |
|
1394 | - |
|
1395 | - // Add helpful links to the invoice schem. |
|
1396 | - $schema['links'] = $this->get_schema_links(); |
|
1397 | - |
|
1398 | - /** |
|
1399 | - * Filters the invoice schema for the REST API. |
|
1400 | - * |
|
1401 | - * Enables adding extra properties to invoices. |
|
1402 | - * |
|
1403 | - * @since 1.0.13 |
|
1404 | - * |
|
1405 | - * @param array $schema The invoice schema. |
|
1406 | - */ |
|
1345 | + 'link' => array( |
|
1346 | + 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
1347 | + 'type' => 'string', |
|
1348 | + 'format' => 'uri', |
|
1349 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1350 | + 'readonly' => true, |
|
1351 | + ), |
|
1352 | + |
|
1353 | + 'mode' => array( |
|
1354 | + 'description' => __( 'The mode used to process the invoice.', 'invoicing' ), |
|
1355 | + 'type' => 'string', |
|
1356 | + 'enum' => array( 'live', 'test' ), |
|
1357 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1358 | + 'readonly' => true, |
|
1359 | + ), |
|
1360 | + |
|
1361 | + 'slug' => array( |
|
1362 | + 'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ), |
|
1363 | + 'type' => 'string', |
|
1364 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1365 | + 'arg_options' => array( |
|
1366 | + 'sanitize_callback' => array( $this, 'sanitize_slug' ), |
|
1367 | + ), |
|
1368 | + 'readonly' => true, |
|
1369 | + ), |
|
1370 | + |
|
1371 | + 'status' => array( |
|
1372 | + 'description' => __( 'A named status for the invoice.', 'invoicing' ), |
|
1373 | + 'type' => 'string', |
|
1374 | + 'enum' => $this->get_post_statuses(), |
|
1375 | + 'context' => array( 'view', 'edit' ), |
|
1376 | + 'default' => 'wpi-pending', |
|
1377 | + ), |
|
1378 | + |
|
1379 | + 'status_nicename' => array( |
|
1380 | + 'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ), |
|
1381 | + 'type' => 'string', |
|
1382 | + 'context' => array( 'view', 'embed' ), |
|
1383 | + 'readonly' => true, |
|
1384 | + ), |
|
1385 | + |
|
1386 | + 'post_type' => array( |
|
1387 | + 'description' => __( 'The post type for the invoice.', 'invoicing' ), |
|
1388 | + 'type' => 'string', |
|
1389 | + 'context' => array( 'view' ), |
|
1390 | + 'readonly' => true, |
|
1391 | + ), |
|
1392 | + ), |
|
1393 | + ); |
|
1394 | + |
|
1395 | + // Add helpful links to the invoice schem. |
|
1396 | + $schema['links'] = $this->get_schema_links(); |
|
1397 | + |
|
1398 | + /** |
|
1399 | + * Filters the invoice schema for the REST API. |
|
1400 | + * |
|
1401 | + * Enables adding extra properties to invoices. |
|
1402 | + * |
|
1403 | + * @since 1.0.13 |
|
1404 | + * |
|
1405 | + * @param array $schema The invoice schema. |
|
1406 | + */ |
|
1407 | 1407 | $schema = apply_filters( "wpinv_rest_invoice_schema", $schema ); |
1408 | 1408 | |
1409 | - // Cache the invoice schema. |
|
1410 | - $this->schema = $schema; |
|
1409 | + // Cache the invoice schema. |
|
1410 | + $this->schema = $schema; |
|
1411 | 1411 | |
1412 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1413 | - } |
|
1414 | - |
|
1415 | - /** |
|
1416 | - * Retrieve Link Description Objects that should be added to the Schema for the invoices collection. |
|
1417 | - * |
|
1418 | - * @since 1.0.13 |
|
1419 | - * |
|
1420 | - * @return array |
|
1421 | - */ |
|
1422 | - protected function get_schema_links() { |
|
1423 | - |
|
1424 | - $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" ); |
|
1425 | - |
|
1426 | - $links = array(); |
|
1427 | - |
|
1428 | - $links[] = array( |
|
1429 | - 'rel' => 'https://api.w.org/action-publish', |
|
1430 | - 'title' => __( 'The current user can mark this invoice as completed.', 'invoicing' ), |
|
1431 | - 'href' => $href, |
|
1432 | - 'targetSchema' => array( |
|
1433 | - 'type' => 'object', |
|
1434 | - 'properties' => array( |
|
1435 | - 'status' => array( |
|
1436 | - 'type' => 'string', |
|
1437 | - 'enum' => array( 'publish', 'wpi-renewal' ), |
|
1438 | - ), |
|
1439 | - ), |
|
1440 | - ), |
|
1441 | - ); |
|
1442 | - |
|
1443 | - $links[] = array( |
|
1444 | - 'rel' => 'https://api.w.org/action-assign-author', |
|
1445 | - 'title' => __( 'The current user can change the owner of this invoice.', 'invoicing' ), |
|
1446 | - 'href' => $href, |
|
1447 | - 'targetSchema' => array( |
|
1448 | - 'type' => 'object', |
|
1449 | - 'properties' => array( |
|
1450 | - 'user_id' => array( |
|
1451 | - 'type' => 'integer', |
|
1452 | - ), |
|
1453 | - ), |
|
1454 | - ), |
|
1455 | - ); |
|
1456 | - |
|
1457 | - return $links; |
|
1458 | - } |
|
1459 | - |
|
1460 | - /** |
|
1461 | - * Prepares links for the request. |
|
1462 | - * |
|
1463 | - * @since 1.0.13 |
|
1464 | - * |
|
1465 | - * @param WPInv_Invoice $invoice Invoice Object. |
|
1466 | - * @return array Links for the given invoice. |
|
1467 | - */ |
|
1468 | - protected function prepare_links( $invoice ) { |
|
1469 | - |
|
1470 | - // Prepare the base REST API endpoint for invoices. |
|
1471 | - $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); |
|
1472 | - |
|
1473 | - // Entity meta. |
|
1474 | - $links = array( |
|
1475 | - 'self' => array( |
|
1476 | - 'href' => rest_url( trailingslashit( $base ) . $invoice->ID ), |
|
1477 | - ), |
|
1478 | - 'collection' => array( |
|
1479 | - 'href' => rest_url( $base ), |
|
1480 | - ), |
|
1481 | - ); |
|
1482 | - |
|
1483 | - if ( ! empty( $invoice->user_id ) ) { |
|
1484 | - $links['user'] = array( |
|
1485 | - 'href' => rest_url( 'wp/v2/users/' . $invoice->user_id ), |
|
1486 | - 'embeddable' => true, |
|
1487 | - ); |
|
1488 | - } |
|
1489 | - |
|
1490 | - /** |
|
1491 | - * Filters the returned invoice links for the REST API. |
|
1492 | - * |
|
1493 | - * Enables adding extra links to invoice API responses. |
|
1494 | - * |
|
1495 | - * @since 1.0.13 |
|
1496 | - * |
|
1497 | - * @param array $links Rest links. |
|
1498 | - */ |
|
1499 | - return apply_filters( "wpinv_rest_invoice_links", $links ); |
|
1500 | - |
|
1501 | - } |
|
1502 | - |
|
1503 | - /** |
|
1504 | - * Get the link relations available for the post and current user. |
|
1505 | - * |
|
1506 | - * @since 1.0.13 |
|
1507 | - * |
|
1508 | - * @param WPInv_Invoice $invoice Invoice object. |
|
1509 | - * @param WP_REST_Request $request Request object. |
|
1510 | - * @return array List of link relations. |
|
1511 | - */ |
|
1512 | - protected function get_available_actions( $invoice, $request ) { |
|
1513 | - |
|
1514 | - if ( 'edit' !== $request['context'] ) { |
|
1515 | - return array(); |
|
1516 | - } |
|
1517 | - |
|
1518 | - $rels = array(); |
|
1519 | - |
|
1520 | - // Retrieve the post type object. |
|
1521 | - $post_type = get_post_type_object( $invoice->post_type ); |
|
1522 | - |
|
1523 | - // Mark invoice as completed. |
|
1524 | - if ( current_user_can( $post_type->cap->publish_posts ) ) { |
|
1525 | - $rels[] = 'https://api.w.org/action-publish'; |
|
1526 | - } |
|
1527 | - |
|
1528 | - // Change the owner of the invoice. |
|
1529 | - if ( current_user_can( $post_type->cap->edit_others_posts ) ) { |
|
1530 | - $rels[] = 'https://api.w.org/action-assign-author'; |
|
1531 | - } |
|
1532 | - |
|
1533 | - /** |
|
1534 | - * Filters the available invoice link relations for the REST API. |
|
1535 | - * |
|
1536 | - * Enables adding extra link relation for the current user and request to invoice responses. |
|
1537 | - * |
|
1538 | - * @since 1.0.13 |
|
1539 | - * |
|
1540 | - * @param array $rels Available link relations. |
|
1541 | - */ |
|
1542 | - return apply_filters( "wpinv_rest_invoice_link_relations", $rels ); |
|
1543 | - } |
|
1544 | - |
|
1545 | - /** |
|
1546 | - * Sanitizes and validates the list of post statuses. |
|
1547 | - * |
|
1548 | - * @since 1.0.13 |
|
1549 | - * |
|
1550 | - * @param string|array $statuses One or more post statuses. |
|
1551 | - * @param WP_REST_Request $request Full details about the request. |
|
1552 | - * @param string $parameter Additional parameter to pass to validation. |
|
1553 | - * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. |
|
1554 | - */ |
|
1555 | - public function sanitize_post_statuses( $statuses, $request, $parameter ) { |
|
1556 | - return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() ); |
|
1557 | - } |
|
1558 | - |
|
1559 | - /** |
|
1560 | - * Retrieves a valid list of post statuses. |
|
1561 | - * |
|
1562 | - * @since 1.0.15 |
|
1563 | - * |
|
1564 | - * @return array A list of registered item statuses. |
|
1565 | - */ |
|
1566 | - public function get_post_statuses() { |
|
1567 | - return array_keys( wpinv_get_invoice_statuses( true, true ) ); |
|
1568 | - } |
|
1412 | + return $this->add_additional_fields_schema( $this->schema ); |
|
1413 | + } |
|
1414 | + |
|
1415 | + /** |
|
1416 | + * Retrieve Link Description Objects that should be added to the Schema for the invoices collection. |
|
1417 | + * |
|
1418 | + * @since 1.0.13 |
|
1419 | + * |
|
1420 | + * @return array |
|
1421 | + */ |
|
1422 | + protected function get_schema_links() { |
|
1423 | + |
|
1424 | + $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" ); |
|
1425 | + |
|
1426 | + $links = array(); |
|
1427 | + |
|
1428 | + $links[] = array( |
|
1429 | + 'rel' => 'https://api.w.org/action-publish', |
|
1430 | + 'title' => __( 'The current user can mark this invoice as completed.', 'invoicing' ), |
|
1431 | + 'href' => $href, |
|
1432 | + 'targetSchema' => array( |
|
1433 | + 'type' => 'object', |
|
1434 | + 'properties' => array( |
|
1435 | + 'status' => array( |
|
1436 | + 'type' => 'string', |
|
1437 | + 'enum' => array( 'publish', 'wpi-renewal' ), |
|
1438 | + ), |
|
1439 | + ), |
|
1440 | + ), |
|
1441 | + ); |
|
1442 | + |
|
1443 | + $links[] = array( |
|
1444 | + 'rel' => 'https://api.w.org/action-assign-author', |
|
1445 | + 'title' => __( 'The current user can change the owner of this invoice.', 'invoicing' ), |
|
1446 | + 'href' => $href, |
|
1447 | + 'targetSchema' => array( |
|
1448 | + 'type' => 'object', |
|
1449 | + 'properties' => array( |
|
1450 | + 'user_id' => array( |
|
1451 | + 'type' => 'integer', |
|
1452 | + ), |
|
1453 | + ), |
|
1454 | + ), |
|
1455 | + ); |
|
1456 | + |
|
1457 | + return $links; |
|
1458 | + } |
|
1459 | + |
|
1460 | + /** |
|
1461 | + * Prepares links for the request. |
|
1462 | + * |
|
1463 | + * @since 1.0.13 |
|
1464 | + * |
|
1465 | + * @param WPInv_Invoice $invoice Invoice Object. |
|
1466 | + * @return array Links for the given invoice. |
|
1467 | + */ |
|
1468 | + protected function prepare_links( $invoice ) { |
|
1469 | + |
|
1470 | + // Prepare the base REST API endpoint for invoices. |
|
1471 | + $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); |
|
1472 | + |
|
1473 | + // Entity meta. |
|
1474 | + $links = array( |
|
1475 | + 'self' => array( |
|
1476 | + 'href' => rest_url( trailingslashit( $base ) . $invoice->ID ), |
|
1477 | + ), |
|
1478 | + 'collection' => array( |
|
1479 | + 'href' => rest_url( $base ), |
|
1480 | + ), |
|
1481 | + ); |
|
1482 | + |
|
1483 | + if ( ! empty( $invoice->user_id ) ) { |
|
1484 | + $links['user'] = array( |
|
1485 | + 'href' => rest_url( 'wp/v2/users/' . $invoice->user_id ), |
|
1486 | + 'embeddable' => true, |
|
1487 | + ); |
|
1488 | + } |
|
1489 | + |
|
1490 | + /** |
|
1491 | + * Filters the returned invoice links for the REST API. |
|
1492 | + * |
|
1493 | + * Enables adding extra links to invoice API responses. |
|
1494 | + * |
|
1495 | + * @since 1.0.13 |
|
1496 | + * |
|
1497 | + * @param array $links Rest links. |
|
1498 | + */ |
|
1499 | + return apply_filters( "wpinv_rest_invoice_links", $links ); |
|
1500 | + |
|
1501 | + } |
|
1502 | + |
|
1503 | + /** |
|
1504 | + * Get the link relations available for the post and current user. |
|
1505 | + * |
|
1506 | + * @since 1.0.13 |
|
1507 | + * |
|
1508 | + * @param WPInv_Invoice $invoice Invoice object. |
|
1509 | + * @param WP_REST_Request $request Request object. |
|
1510 | + * @return array List of link relations. |
|
1511 | + */ |
|
1512 | + protected function get_available_actions( $invoice, $request ) { |
|
1513 | + |
|
1514 | + if ( 'edit' !== $request['context'] ) { |
|
1515 | + return array(); |
|
1516 | + } |
|
1517 | + |
|
1518 | + $rels = array(); |
|
1519 | + |
|
1520 | + // Retrieve the post type object. |
|
1521 | + $post_type = get_post_type_object( $invoice->post_type ); |
|
1522 | + |
|
1523 | + // Mark invoice as completed. |
|
1524 | + if ( current_user_can( $post_type->cap->publish_posts ) ) { |
|
1525 | + $rels[] = 'https://api.w.org/action-publish'; |
|
1526 | + } |
|
1527 | + |
|
1528 | + // Change the owner of the invoice. |
|
1529 | + if ( current_user_can( $post_type->cap->edit_others_posts ) ) { |
|
1530 | + $rels[] = 'https://api.w.org/action-assign-author'; |
|
1531 | + } |
|
1532 | + |
|
1533 | + /** |
|
1534 | + * Filters the available invoice link relations for the REST API. |
|
1535 | + * |
|
1536 | + * Enables adding extra link relation for the current user and request to invoice responses. |
|
1537 | + * |
|
1538 | + * @since 1.0.13 |
|
1539 | + * |
|
1540 | + * @param array $rels Available link relations. |
|
1541 | + */ |
|
1542 | + return apply_filters( "wpinv_rest_invoice_link_relations", $rels ); |
|
1543 | + } |
|
1544 | + |
|
1545 | + /** |
|
1546 | + * Sanitizes and validates the list of post statuses. |
|
1547 | + * |
|
1548 | + * @since 1.0.13 |
|
1549 | + * |
|
1550 | + * @param string|array $statuses One or more post statuses. |
|
1551 | + * @param WP_REST_Request $request Full details about the request. |
|
1552 | + * @param string $parameter Additional parameter to pass to validation. |
|
1553 | + * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. |
|
1554 | + */ |
|
1555 | + public function sanitize_post_statuses( $statuses, $request, $parameter ) { |
|
1556 | + return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() ); |
|
1557 | + } |
|
1558 | + |
|
1559 | + /** |
|
1560 | + * Retrieves a valid list of post statuses. |
|
1561 | + * |
|
1562 | + * @since 1.0.15 |
|
1563 | + * |
|
1564 | + * @return array A list of registered item statuses. |
|
1565 | + */ |
|
1566 | + public function get_post_statuses() { |
|
1567 | + return array_keys( wpinv_get_invoice_statuses( true, true ) ); |
|
1568 | + } |
|
1569 | 1569 | |
1570 | 1570 | } |
1571 | 1571 | \ No newline at end of file |
@@ -8,7 +8,7 @@ discard block |
||
8 | 8 | * @since 1.0.13 |
9 | 9 | */ |
10 | 10 | |
11 | -if ( !defined( 'WPINC' ) ) { |
|
11 | +if (!defined('WPINC')) { |
|
12 | 12 | exit; |
13 | 13 | } |
14 | 14 | |
@@ -41,7 +41,7 @@ discard block |
||
41 | 41 | * |
42 | 42 | * @param string $namespace Api Namespace |
43 | 43 | */ |
44 | - public function __construct( $namespace ) { |
|
44 | + public function __construct($namespace) { |
|
45 | 45 | |
46 | 46 | // Set api namespace... |
47 | 47 | $this->namespace = $namespace; |
@@ -60,16 +60,16 @@ discard block |
||
60 | 60 | * @param WP_REST_Request $request Full details about the request. |
61 | 61 | * @return true|WP_Error True if the request has read access, WP_Error object otherwise. |
62 | 62 | */ |
63 | - public function get_items_permissions_check( $request ) { |
|
63 | + public function get_items_permissions_check($request) { |
|
64 | 64 | |
65 | - $post_type = get_post_type_object( $this->post_type ); |
|
65 | + $post_type = get_post_type_object($this->post_type); |
|
66 | 66 | |
67 | - if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { |
|
68 | - return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
67 | + if ('edit' === $request['context'] && !current_user_can($post_type->cap->edit_posts)) { |
|
68 | + return new WP_Error('rest_forbidden_context', __('Sorry, you are not allowed to edit items.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
69 | 69 | } |
70 | 70 | |
71 | - if ( ! is_user_logged_in() ) { |
|
72 | - return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
71 | + if (!is_user_logged_in()) { |
|
72 | + return new WP_Error('rest_forbidden', __('Sorry, you must be logged in to view items.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
73 | 73 | } |
74 | 74 | |
75 | 75 | // Read checks will be evaluated on a per invoice basis |
@@ -86,33 +86,33 @@ discard block |
||
86 | 86 | * @param WP_REST_Request $request Full details about the request. |
87 | 87 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
88 | 88 | */ |
89 | - public function get_items( $request ) { |
|
89 | + public function get_items($request) { |
|
90 | 90 | |
91 | 91 | // Retrieve request query parameters. |
92 | - $args = $this->get_request_collection_params( $request ); |
|
92 | + $args = $this->get_request_collection_params($request); |
|
93 | 93 | |
94 | 94 | // WP_Query Args. |
95 | - $wp_query_args = $this->get_collection_wp_query_params( $args, $request ); |
|
95 | + $wp_query_args = $this->get_collection_wp_query_params($args, $request); |
|
96 | 96 | |
97 | 97 | // Get invoice ids... |
98 | - $query = new WP_Query( $wp_query_args ); |
|
98 | + $query = new WP_Query($wp_query_args); |
|
99 | 99 | |
100 | 100 | // ... and map them into invoice objects. |
101 | - $_invoices = array_map( array( $this, 'get_post' ), $query->posts ); |
|
101 | + $_invoices = array_map(array($this, 'get_post'), $query->posts); |
|
102 | 102 | |
103 | 103 | // Prepare the retrieved invoices |
104 | 104 | $invoices = array(); |
105 | 105 | |
106 | - foreach( $_invoices as $invoice ) { |
|
107 | - if ( $this->check_read_permission( $invoice ) ) { |
|
108 | - $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) ); |
|
106 | + foreach ($_invoices as $invoice) { |
|
107 | + if ($this->check_read_permission($invoice)) { |
|
108 | + $invoices[] = $this->prepare_response_for_collection($this->prepare_item_for_response($invoice, $request)); |
|
109 | 109 | } |
110 | 110 | } |
111 | 111 | |
112 | 112 | // Prepare the response. |
113 | - $response = rest_ensure_response( $invoices ); |
|
114 | - $response->header( 'X-WP-Total', (int) $query->found_posts ); |
|
115 | - $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages ); |
|
113 | + $response = rest_ensure_response($invoices); |
|
114 | + $response->header('X-WP-Total', (int) $query->found_posts); |
|
115 | + $response->header('X-WP-TotalPages', (int) $query->max_num_pages); |
|
116 | 116 | |
117 | 117 | /** |
118 | 118 | * Filters the responses for invoices requests. |
@@ -125,9 +125,9 @@ discard block |
||
125 | 125 | * @param WP_REST_Request $request The request used. |
126 | 126 | * @param array $args Array of args used to retrieve the invoices |
127 | 127 | */ |
128 | - $response = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args ); |
|
128 | + $response = apply_filters("wpinv_rest_invoices_response", $response, $request, $args); |
|
129 | 129 | |
130 | - return rest_ensure_response( $response ); |
|
130 | + return rest_ensure_response($response); |
|
131 | 131 | |
132 | 132 | } |
133 | 133 | |
@@ -139,17 +139,17 @@ discard block |
||
139 | 139 | * @param int $invoice_id Supplied ID. |
140 | 140 | * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise. |
141 | 141 | */ |
142 | - protected function get_post( $invoice_id ) { |
|
142 | + protected function get_post($invoice_id) { |
|
143 | 143 | |
144 | - $error = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) ); |
|
144 | + $error = new WP_Error('rest_invoice_invalid_id', __('Invalid item ID.', 'invoicing'), array('status' => 404)); |
|
145 | 145 | |
146 | 146 | // Ids start from 1 |
147 | - if ( (int) $invoice_id <= 0 ) { |
|
147 | + if ((int) $invoice_id <= 0) { |
|
148 | 148 | return $error; |
149 | 149 | } |
150 | 150 | |
151 | - $invoice = wpinv_get_invoice( (int) $invoice_id ); |
|
152 | - if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) { |
|
151 | + $invoice = wpinv_get_invoice((int) $invoice_id); |
|
152 | + if (empty($invoice) || $this->post_type !== $invoice->post_type) { |
|
153 | 153 | return $error; |
154 | 154 | } |
155 | 155 | |
@@ -165,18 +165,18 @@ discard block |
||
165 | 165 | * @param WP_REST_Request $request Full details about the request. |
166 | 166 | * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise. |
167 | 167 | */ |
168 | - public function get_item_permissions_check( $request ) { |
|
168 | + public function get_item_permissions_check($request) { |
|
169 | 169 | |
170 | 170 | // Retrieve the invoice object. |
171 | - $invoice = $this->get_post( $request['id'] ); |
|
171 | + $invoice = $this->get_post($request['id']); |
|
172 | 172 | |
173 | 173 | // Ensure it is valid. |
174 | - if ( is_wp_error( $invoice ) ) { |
|
174 | + if (is_wp_error($invoice)) { |
|
175 | 175 | return $invoice; |
176 | 176 | } |
177 | 177 | |
178 | - if ( $invoice ) { |
|
179 | - return $this->check_read_permission( $invoice ); |
|
178 | + if ($invoice) { |
|
179 | + return $this->check_read_permission($invoice); |
|
180 | 180 | } |
181 | 181 | |
182 | 182 | return true; |
@@ -193,8 +193,8 @@ discard block |
||
193 | 193 | * @param WPInv_Invoice $invoice WPInv_Invoice object. |
194 | 194 | * @return bool Whether the post can be read. |
195 | 195 | */ |
196 | - public function check_read_permission( $invoice ) { |
|
197 | - return wpinv_user_can_view_invoice( $invoice->ID ); |
|
196 | + public function check_read_permission($invoice) { |
|
197 | + return wpinv_user_can_view_invoice($invoice->ID); |
|
198 | 198 | } |
199 | 199 | |
200 | 200 | /** |
@@ -205,19 +205,19 @@ discard block |
||
205 | 205 | * @param WP_REST_Request $request Full details about the request. |
206 | 206 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
207 | 207 | */ |
208 | - public function get_item( $request ) { |
|
208 | + public function get_item($request) { |
|
209 | 209 | |
210 | 210 | // Fetch the invoice. |
211 | - $invoice = $this->get_post( $request['id'] ); |
|
211 | + $invoice = $this->get_post($request['id']); |
|
212 | 212 | |
213 | 213 | // Abort early if it does not exist |
214 | - if ( is_wp_error( $invoice ) ) { |
|
214 | + if (is_wp_error($invoice)) { |
|
215 | 215 | return $invoice; |
216 | 216 | } |
217 | 217 | |
218 | 218 | // Prepare the response |
219 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
220 | - $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) ); |
|
219 | + $response = $this->prepare_item_for_response($invoice, $request); |
|
220 | + $response->link_header('alternate', esc_url($invoice->get_view_url()), array('type' => 'text/html')); |
|
221 | 221 | |
222 | 222 | /** |
223 | 223 | * Filters the responses for single invoice requests. |
@@ -229,9 +229,9 @@ discard block |
||
229 | 229 | * @param WP_HTTP_Response $response Response. |
230 | 230 | * @param WP_REST_Request $request The request used. |
231 | 231 | */ |
232 | - $response = apply_filters( "wpinv_rest_get_invoice_response", $response, $request ); |
|
232 | + $response = apply_filters("wpinv_rest_get_invoice_response", $response, $request); |
|
233 | 233 | |
234 | - return rest_ensure_response( $response ); |
|
234 | + return rest_ensure_response($response); |
|
235 | 235 | |
236 | 236 | } |
237 | 237 | |
@@ -243,18 +243,18 @@ discard block |
||
243 | 243 | * @param WP_REST_Request $request Full details about the request. |
244 | 244 | * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. |
245 | 245 | */ |
246 | - public function create_item_permissions_check( $request ) { |
|
246 | + public function create_item_permissions_check($request) { |
|
247 | 247 | |
248 | - if ( ! empty( $request['id'] ) ) { |
|
249 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
248 | + if (!empty($request['id'])) { |
|
249 | + return new WP_Error('rest_invoice_exists', __('Cannot create existing item.', 'invoicing'), array('status' => 400)); |
|
250 | 250 | } |
251 | 251 | |
252 | - $post_type = get_post_type_object( $this->post_type ); |
|
252 | + $post_type = get_post_type_object($this->post_type); |
|
253 | 253 | |
254 | - if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) { |
|
254 | + if (!current_user_can($post_type->cap->create_posts) && !wpinv_current_user_can_manage_invoicing()) { |
|
255 | 255 | return new WP_Error( |
256 | 256 | 'rest_cannot_create', |
257 | - __( 'Sorry, you are not allowed to create items as this user.', 'invoicing' ), |
|
257 | + __('Sorry, you are not allowed to create items as this user.', 'invoicing'), |
|
258 | 258 | array( |
259 | 259 | 'status' => rest_authorization_required_code(), |
260 | 260 | ) |
@@ -272,32 +272,32 @@ discard block |
||
272 | 272 | * @param WP_REST_Request $request Full details about the request. |
273 | 273 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
274 | 274 | */ |
275 | - public function create_item( $request ) { |
|
275 | + public function create_item($request) { |
|
276 | 276 | |
277 | - if ( ! empty( $request['id'] ) ) { |
|
278 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
277 | + if (!empty($request['id'])) { |
|
278 | + return new WP_Error('rest_invoice_exists', __('Cannot create existing item.', 'invoicing'), array('status' => 400)); |
|
279 | 279 | } |
280 | 280 | |
281 | - $request->set_param( 'context', 'edit' ); |
|
281 | + $request->set_param('context', 'edit'); |
|
282 | 282 | |
283 | 283 | // Prepare the updated data. |
284 | - $invoice_data = $this->prepare_item_for_database( $request ); |
|
284 | + $invoice_data = $this->prepare_item_for_database($request); |
|
285 | 285 | |
286 | - if ( is_wp_error( $invoice_data ) ) { |
|
286 | + if (is_wp_error($invoice_data)) { |
|
287 | 287 | return $invoice_data; |
288 | 288 | } |
289 | 289 | |
290 | 290 | // Try creating the invoice |
291 | 291 | $invoice_data['post_type'] = $this->post_type; |
292 | - $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' ); |
|
293 | - $invoice = wpinv_insert_invoice( $invoice_data, true ); |
|
292 | + $invoice_data['private_note'] = __('Created via API.', 'invoicing'); |
|
293 | + $invoice = wpinv_insert_invoice($invoice_data, true); |
|
294 | 294 | |
295 | - if ( is_wp_error( $invoice ) ) { |
|
295 | + if (is_wp_error($invoice)) { |
|
296 | 296 | return $invoice; |
297 | 297 | } |
298 | 298 | |
299 | 299 | // Prepare the response |
300 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
300 | + $response = $this->prepare_item_for_response($invoice, $request); |
|
301 | 301 | |
302 | 302 | /** |
303 | 303 | * Fires after a single invoice is created or updated via the REST API. |
@@ -308,7 +308,7 @@ discard block |
||
308 | 308 | * @param WP_REST_Request $request Request object. |
309 | 309 | * @param bool $creating True when creating a post, false when updating. |
310 | 310 | */ |
311 | - do_action( "wpinv_rest_insert_invoice", $invoice, $request, true ); |
|
311 | + do_action("wpinv_rest_insert_invoice", $invoice, $request, true); |
|
312 | 312 | |
313 | 313 | /** |
314 | 314 | * Filters the responses for creating single invoice requests. |
@@ -320,9 +320,9 @@ discard block |
||
320 | 320 | * @param array $invoice_data Invoice properties. |
321 | 321 | * @param WP_REST_Request $request The request used. |
322 | 322 | */ |
323 | - $response = apply_filters( "wpinv_rest_create_invoice_response", $response, $request ); |
|
323 | + $response = apply_filters("wpinv_rest_create_invoice_response", $response, $request); |
|
324 | 324 | |
325 | - return rest_ensure_response( $response ); |
|
325 | + return rest_ensure_response($response); |
|
326 | 326 | } |
327 | 327 | |
328 | 328 | /** |
@@ -333,20 +333,20 @@ discard block |
||
333 | 333 | * @param WP_REST_Request $request Full details about the request. |
334 | 334 | * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. |
335 | 335 | */ |
336 | - public function update_item_permissions_check( $request ) { |
|
336 | + public function update_item_permissions_check($request) { |
|
337 | 337 | |
338 | 338 | // Retrieve the invoice. |
339 | - $invoice = $this->get_post( $request['id'] ); |
|
340 | - if ( is_wp_error( $invoice ) ) { |
|
339 | + $invoice = $this->get_post($request['id']); |
|
340 | + if (is_wp_error($invoice)) { |
|
341 | 341 | return $invoice; |
342 | 342 | } |
343 | 343 | |
344 | - $post_type = get_post_type_object( $this->post_type ); |
|
344 | + $post_type = get_post_type_object($this->post_type); |
|
345 | 345 | |
346 | - if ( ! current_user_can( $post_type->cap->edit_post, $invoice->ID ) ) { |
|
346 | + if (!current_user_can($post_type->cap->edit_post, $invoice->ID)) { |
|
347 | 347 | return new WP_Error( |
348 | 348 | 'rest_cannot_edit', |
349 | - __( 'Sorry, you are not allowed to update this item.', 'invoicing' ), |
|
349 | + __('Sorry, you are not allowed to update this item.', 'invoicing'), |
|
350 | 350 | array( |
351 | 351 | 'status' => rest_authorization_required_code(), |
352 | 352 | ) |
@@ -364,46 +364,46 @@ discard block |
||
364 | 364 | * @param WP_REST_Request $request Full details about the request. |
365 | 365 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
366 | 366 | */ |
367 | - public function update_item( $request ) { |
|
367 | + public function update_item($request) { |
|
368 | 368 | |
369 | 369 | // Ensure the invoice exists. |
370 | - $valid_check = $this->get_post( $request['id'] ); |
|
370 | + $valid_check = $this->get_post($request['id']); |
|
371 | 371 | |
372 | 372 | // Abort early if it does not exist |
373 | - if ( is_wp_error( $valid_check ) ) { |
|
373 | + if (is_wp_error($valid_check)) { |
|
374 | 374 | return $valid_check; |
375 | 375 | } |
376 | 376 | |
377 | - $request->set_param( 'context', 'edit' ); |
|
377 | + $request->set_param('context', 'edit'); |
|
378 | 378 | |
379 | 379 | // Prepare the updated data. |
380 | - $data_to_update = $this->prepare_item_for_database( $request ); |
|
380 | + $data_to_update = $this->prepare_item_for_database($request); |
|
381 | 381 | |
382 | - if ( is_wp_error( $data_to_update ) ) { |
|
382 | + if (is_wp_error($data_to_update)) { |
|
383 | 383 | return $data_to_update; |
384 | 384 | } |
385 | 385 | |
386 | 386 | // Abort if no invoice data is provided |
387 | - if( empty( $data_to_update ) ) { |
|
388 | - return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) ); |
|
387 | + if (empty($data_to_update)) { |
|
388 | + return new WP_Error('missing_data', __('An update request cannot be empty.', 'invoicing')); |
|
389 | 389 | } |
390 | 390 | |
391 | 391 | // Include the invoice ID |
392 | 392 | $data_to_update['ID'] = $request['id']; |
393 | 393 | |
394 | 394 | // Update the invoice |
395 | - $updated_invoice = wpinv_update_invoice( $data_to_update, true ); |
|
395 | + $updated_invoice = wpinv_update_invoice($data_to_update, true); |
|
396 | 396 | |
397 | 397 | // Incase the update operation failed... |
398 | - if ( is_wp_error( $updated_invoice ) ) { |
|
398 | + if (is_wp_error($updated_invoice)) { |
|
399 | 399 | return $updated_invoice; |
400 | 400 | } |
401 | 401 | |
402 | 402 | // Prepare the response |
403 | - $response = $this->prepare_item_for_response( $updated_invoice, $request ); |
|
403 | + $response = $this->prepare_item_for_response($updated_invoice, $request); |
|
404 | 404 | |
405 | 405 | /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */ |
406 | - do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false ); |
|
406 | + do_action("wpinv_rest_insert_invoice", $updated_invoice, $request, false); |
|
407 | 407 | |
408 | 408 | /** |
409 | 409 | * Filters the responses for updating single invoice requests. |
@@ -415,9 +415,9 @@ discard block |
||
415 | 415 | * @param array $invoice_data Invoice properties. |
416 | 416 | * @param WP_REST_Request $request The request used. |
417 | 417 | */ |
418 | - $response = apply_filters( "wpinv_rest_update_invoice_response", $response, $request ); |
|
418 | + $response = apply_filters("wpinv_rest_update_invoice_response", $response, $request); |
|
419 | 419 | |
420 | - return rest_ensure_response( $response ); |
|
420 | + return rest_ensure_response($response); |
|
421 | 421 | } |
422 | 422 | |
423 | 423 | /** |
@@ -428,22 +428,22 @@ discard block |
||
428 | 428 | * @param WP_REST_Request $request Full details about the request. |
429 | 429 | * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise. |
430 | 430 | */ |
431 | - public function delete_item_permissions_check( $request ) { |
|
431 | + public function delete_item_permissions_check($request) { |
|
432 | 432 | |
433 | 433 | // Retrieve the invoice. |
434 | - $invoice = $this->get_post( $request['id'] ); |
|
435 | - if ( is_wp_error( $invoice ) ) { |
|
434 | + $invoice = $this->get_post($request['id']); |
|
435 | + if (is_wp_error($invoice)) { |
|
436 | 436 | return $invoice; |
437 | 437 | } |
438 | 438 | |
439 | 439 | // Ensure the current user can delete invoices |
440 | - if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'delete_invoices', $request['id'] ) ) { |
|
440 | + if (wpinv_current_user_can_manage_invoicing() || current_user_can('delete_invoices', $request['id'])) { |
|
441 | 441 | return true; |
442 | 442 | } |
443 | 443 | |
444 | 444 | return new WP_Error( |
445 | 445 | 'rest_cannot_delete', |
446 | - __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), |
|
446 | + __('Sorry, you are not allowed to delete this item.', 'invoicing'), |
|
447 | 447 | array( |
448 | 448 | 'status' => rest_authorization_required_code(), |
449 | 449 | ) |
@@ -458,31 +458,31 @@ discard block |
||
458 | 458 | * @param WP_REST_Request $request Full details about the request. |
459 | 459 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
460 | 460 | */ |
461 | - public function delete_item( $request ) { |
|
461 | + public function delete_item($request) { |
|
462 | 462 | |
463 | 463 | // Retrieve the invoice. |
464 | - $invoice = $this->get_post( $request['id'] ); |
|
465 | - if ( is_wp_error( $invoice ) ) { |
|
464 | + $invoice = $this->get_post($request['id']); |
|
465 | + if (is_wp_error($invoice)) { |
|
466 | 466 | return $invoice; |
467 | 467 | } |
468 | 468 | |
469 | - $request->set_param( 'context', 'edit' ); |
|
469 | + $request->set_param('context', 'edit'); |
|
470 | 470 | |
471 | 471 | // Prepare the invoice id |
472 | - $id = $invoice->ID; |
|
472 | + $id = $invoice->ID; |
|
473 | 473 | |
474 | 474 | // Prepare the response |
475 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
475 | + $response = $this->prepare_item_for_response($invoice, $request); |
|
476 | 476 | |
477 | 477 | // Check if the user wants to bypass the trash... |
478 | 478 | $force_delete = (bool) $request['force']; |
479 | 479 | |
480 | 480 | // Try deleting the invoice. |
481 | - $deleted = wp_delete_post( $id, $force_delete ); |
|
481 | + $deleted = wp_delete_post($id, $force_delete); |
|
482 | 482 | |
483 | 483 | // Abort early if we can't delete the invoice. |
484 | - if ( ! $deleted ) { |
|
485 | - return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) ); |
|
484 | + if (!$deleted) { |
|
485 | + return new WP_Error('rest_cannot_delete', __('The item cannot be deleted.', 'invoicing'), array('status' => 500)); |
|
486 | 486 | } |
487 | 487 | |
488 | 488 | /** |
@@ -494,7 +494,7 @@ discard block |
||
494 | 494 | * @param WPInv_Invoice $invoice The deleted or trashed invoice. |
495 | 495 | * @param WP_REST_Request $request The request sent to the API. |
496 | 496 | */ |
497 | - do_action( "wpinv_rest_delete_invoice", $invoice, $request ); |
|
497 | + do_action("wpinv_rest_delete_invoice", $invoice, $request); |
|
498 | 498 | |
499 | 499 | return $response; |
500 | 500 | |
@@ -510,29 +510,29 @@ discard block |
||
510 | 510 | */ |
511 | 511 | public function get_collection_params() { |
512 | 512 | |
513 | - $query_params = array( |
|
513 | + $query_params = array( |
|
514 | 514 | |
515 | 515 | // item status. |
516 | 516 | 'status' => array( |
517 | 517 | 'default' => $this->get_post_statuses(), |
518 | - 'description' => __( 'Limit result set to items assigned one or more statuses.', 'invoicing' ), |
|
518 | + 'description' => __('Limit result set to items assigned one or more statuses.', 'invoicing'), |
|
519 | 519 | 'type' => 'array', |
520 | 520 | 'items' => array( |
521 | 521 | 'enum' => $this->get_post_statuses(), |
522 | 522 | 'type' => 'string', |
523 | 523 | ), |
524 | - 'sanitize_callback' => array( $this, 'sanitize_post_statuses' ), |
|
524 | + 'sanitize_callback' => array($this, 'sanitize_post_statuses'), |
|
525 | 525 | ), |
526 | 526 | |
527 | 527 | // User. |
528 | 528 | 'user' => array( |
529 | - 'description' => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ), |
|
529 | + 'description' => __('Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing'), |
|
530 | 530 | 'type' => 'string', |
531 | 531 | ), |
532 | 532 | |
533 | 533 | // Exclude certain users |
534 | 534 | 'exclude_users' => array( |
535 | - 'description' => __( 'Exclude items from specific users.', 'invoicing' ), |
|
535 | + 'description' => __('Exclude items from specific users.', 'invoicing'), |
|
536 | 536 | 'type' => 'array', |
537 | 537 | 'items' => array( |
538 | 538 | 'type' => 'integer', |
@@ -542,62 +542,62 @@ discard block |
||
542 | 542 | |
543 | 543 | // Items before. |
544 | 544 | 'before_date' => array( |
545 | - 'description' => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
545 | + 'description' => __('Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing'), |
|
546 | 546 | 'type' => 'string', |
547 | 547 | ), |
548 | 548 | |
549 | 549 | 'meta_key' => array( |
550 | - 'description' => __( 'Filter items by custom field key.', 'invoicing' ), |
|
550 | + 'description' => __('Filter items by custom field key.', 'invoicing'), |
|
551 | 551 | 'type' => 'string', |
552 | 552 | ), |
553 | 553 | |
554 | 554 | 'meta_compare_key' => array( |
555 | - 'description' => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ), |
|
555 | + 'description' => __('Comparison operator to test the `meta_key`.', 'invoicing'), |
|
556 | 556 | 'type' => 'string', |
557 | 557 | 'default' => '=', |
558 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
558 | + 'enum' => array_map('trim', explode(',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE')), |
|
559 | 559 | ), |
560 | 560 | |
561 | 561 | 'meta_value' => array( |
562 | - 'description' => __( 'Filter items by custom field value.', 'invoicing' ), |
|
562 | + 'description' => __('Filter items by custom field value.', 'invoicing'), |
|
563 | 563 | 'type' => 'string', |
564 | 564 | ), |
565 | 565 | |
566 | 566 | 'meta_compare' => array( |
567 | - 'description' => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ), |
|
567 | + 'description' => __('Comparison operator to test the `meta_value`.', 'invoicing'), |
|
568 | 568 | 'type' => 'string', |
569 | 569 | 'default' => '=', |
570 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
570 | + 'enum' => array_map('trim', explode(',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE')), |
|
571 | 571 | ), |
572 | 572 | |
573 | 573 | 'meta_value_num' => array( |
574 | - 'description' => __( 'Filter items by a numeric custom field value.', 'invoicing' ), |
|
574 | + 'description' => __('Filter items by a numeric custom field value.', 'invoicing'), |
|
575 | 575 | 'type' => 'integer', |
576 | 576 | ), |
577 | 577 | |
578 | 578 | // items after. |
579 | 579 | 'after_date' => array( |
580 | - 'description' => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
580 | + 'description' => __('Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing'), |
|
581 | 581 | 'type' => 'string', |
582 | 582 | ), |
583 | 583 | |
584 | 584 | // Number of results per page |
585 | 585 | 'limit' => array( |
586 | - 'description' => __( 'Number of items to fetch.', 'invoicing' ), |
|
586 | + 'description' => __('Number of items to fetch.', 'invoicing'), |
|
587 | 587 | 'type' => 'integer', |
588 | - 'default' => (int) get_option( 'posts_per_page' ), |
|
588 | + 'default' => (int) get_option('posts_per_page'), |
|
589 | 589 | ), |
590 | 590 | |
591 | 591 | // Pagination |
592 | 592 | 'page' => array( |
593 | - 'description' => __( 'Current page to fetch.', 'invoicing' ), |
|
593 | + 'description' => __('Current page to fetch.', 'invoicing'), |
|
594 | 594 | 'type' => 'integer', |
595 | 595 | 'default' => 1, |
596 | 596 | ), |
597 | 597 | |
598 | 598 | // limit to certain items |
599 | 599 | 'include' => array( |
600 | - 'description' => __( 'Limit result set to specific IDs.', 'invoicing' ), |
|
600 | + 'description' => __('Limit result set to specific IDs.', 'invoicing'), |
|
601 | 601 | 'type' => 'array', |
602 | 602 | 'items' => array( |
603 | 603 | 'type' => 'integer', |
@@ -607,7 +607,7 @@ discard block |
||
607 | 607 | |
608 | 608 | // Exclude certain items |
609 | 609 | 'exclude' => array( |
610 | - 'description' => __( 'Ensure result set excludes specific IDs.', 'invoicing' ), |
|
610 | + 'description' => __('Ensure result set excludes specific IDs.', 'invoicing'), |
|
611 | 611 | 'type' => 'array', |
612 | 612 | 'items' => array( |
613 | 613 | 'type' => 'integer', |
@@ -617,7 +617,7 @@ discard block |
||
617 | 617 | |
618 | 618 | // Order items by |
619 | 619 | 'orderby' => array( |
620 | - 'description' => __( 'Sort retrieved items by parameter.', 'invoicing' ), |
|
620 | + 'description' => __('Sort retrieved items by parameter.', 'invoicing'), |
|
621 | 621 | 'type' => 'string', |
622 | 622 | 'default' => 'date', |
623 | 623 | 'enum' => array( |
@@ -632,10 +632,10 @@ discard block |
||
632 | 632 | |
633 | 633 | // How to order |
634 | 634 | 'order' => array( |
635 | - 'description' => __( 'Designates ascending or descending order of ítems.', 'invoicing' ), |
|
635 | + 'description' => __('Designates ascending or descending order of ítems.', 'invoicing'), |
|
636 | 636 | 'type' => 'string', |
637 | 637 | 'default' => 'DESC', |
638 | - 'enum' => array( 'ASC', 'DESC' ), |
|
638 | + 'enum' => array('ASC', 'DESC'), |
|
639 | 639 | ), |
640 | 640 | ); |
641 | 641 | |
@@ -647,7 +647,7 @@ discard block |
||
647 | 647 | * |
648 | 648 | * @param array $query_params JSON Schema-formatted collection parameters. |
649 | 649 | */ |
650 | - return apply_filters( "wpinv_rest_invoices_collection_params", $query_params ); |
|
650 | + return apply_filters("wpinv_rest_invoices_collection_params", $query_params); |
|
651 | 651 | } |
652 | 652 | |
653 | 653 | /** |
@@ -657,7 +657,7 @@ discard block |
||
657 | 657 | * @param WP_REST_Request $request Full details about the request. |
658 | 658 | * @return array Request collection parameters. |
659 | 659 | */ |
660 | - public function get_request_collection_params( $request ) { |
|
660 | + public function get_request_collection_params($request) { |
|
661 | 661 | |
662 | 662 | // Retrieve the list of registered invoice query parameters. |
663 | 663 | $registered = $this->get_collection_params(); |
@@ -674,7 +674,7 @@ discard block |
||
674 | 674 | 'meta_compare' => '=', |
675 | 675 | 'meta_value_num' => null, |
676 | 676 | 'after_date' => null, |
677 | - 'limit' => (int) get_option( 'posts_per_page' ), |
|
677 | + 'limit' => (int) get_option('posts_per_page'), |
|
678 | 678 | 'page' => 1, |
679 | 679 | 'include' => array(), |
680 | 680 | 'exclude' => array(), |
@@ -683,9 +683,9 @@ discard block |
||
683 | 683 | ); |
684 | 684 | |
685 | 685 | // Add any params from the requests. |
686 | - foreach ( array_keys( $registered ) as $key ) { |
|
687 | - if ( isset( $request[ $key] ) ) { |
|
688 | - $args[ $key ] = $request[ $key]; |
|
686 | + foreach (array_keys($registered) as $key) { |
|
687 | + if (isset($request[$key])) { |
|
688 | + $args[$key] = $request[$key]; |
|
689 | 689 | } |
690 | 690 | } |
691 | 691 | |
@@ -698,7 +698,7 @@ discard block |
||
698 | 698 | * @param array $args Request query args. |
699 | 699 | * @param WP_REST_Request $request Full details about the request. |
700 | 700 | */ |
701 | - return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request ); |
|
701 | + return apply_filters("wpinv_rest_invoices_collection_request_params", $args, $request); |
|
702 | 702 | } |
703 | 703 | |
704 | 704 | /** |
@@ -709,7 +709,7 @@ discard block |
||
709 | 709 | * @param WP_REST_Request $request Full details about the request. |
710 | 710 | * @return array WP_Query parameters. |
711 | 711 | */ |
712 | - public function get_collection_wp_query_params( $args, $request ) { |
|
712 | + public function get_collection_wp_query_params($args, $request) { |
|
713 | 713 | |
714 | 714 | // Prepare the parameters. |
715 | 715 | $wp_query_args = array( |
@@ -726,35 +726,35 @@ discard block |
||
726 | 726 | 'meta_value_num' => $args['meta_value_num'], |
727 | 727 | 'post__in' => $args['include'], |
728 | 728 | 'post__in' => $args['exclude'], |
729 | - 'date_query' => array( array() ), |
|
729 | + 'date_query' => array(array()), |
|
730 | 730 | 'fields' => 'ids', |
731 | 731 | 'orderby' => $args['orderby'], |
732 | 732 | 'order' => $args['order'], |
733 | 733 | ); |
734 | 734 | |
735 | 735 | // Only admins can view other user's invoices. |
736 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
736 | + if (!wpinv_current_user_can_manage_invoicing()) { |
|
737 | 737 | $wp_query_args['author'] = get_current_user_id(); |
738 | 738 | } |
739 | 739 | |
740 | 740 | // No date specific params provided. |
741 | - if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) { |
|
742 | - unset( $wp_query_args['date_query'] ); |
|
741 | + if (empty($args['before_date']) && empty($args['after_date'])) { |
|
742 | + unset($wp_query_args['date_query']); |
|
743 | 743 | } |
744 | 744 | |
745 | - if ( ! empty( $args['before_date'] ) ) { |
|
745 | + if (!empty($args['before_date'])) { |
|
746 | 746 | $wp_query_args['date_query'][0]['before'] = $args['before_date']; |
747 | 747 | } |
748 | 748 | |
749 | - if ( ! empty( $args['after_date'] ) ) { |
|
749 | + if (!empty($args['after_date'])) { |
|
750 | 750 | $wp_query_args['date_query'][0]['after'] = $args['after_date']; |
751 | 751 | } |
752 | 752 | |
753 | 753 | // Remove empty variables. |
754 | - $wp_query_args = array_filter( $wp_query_args ); |
|
754 | + $wp_query_args = array_filter($wp_query_args); |
|
755 | 755 | |
756 | 756 | // This can be zero. |
757 | - if ( ! is_null( $args['meta_value_num'] ) ) { |
|
757 | + if (!is_null($args['meta_value_num'])) { |
|
758 | 758 | $wp_query_args['meta_value_num'] = $args['meta_value_num']; |
759 | 759 | } |
760 | 760 | |
@@ -768,7 +768,7 @@ discard block |
||
768 | 768 | * @param array $wp_query_args Generated WP_Query args args. |
769 | 769 | * @param WP_REST_Request $request Full details about the request. |
770 | 770 | */ |
771 | - return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request ); |
|
771 | + return apply_filters("wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request); |
|
772 | 772 | } |
773 | 773 | |
774 | 774 | /** |
@@ -779,7 +779,7 @@ discard block |
||
779 | 779 | * @param object|string $post_type Post type name or object. |
780 | 780 | * @return bool Whether the post type is allowed in REST. |
781 | 781 | */ |
782 | - protected function check_is_post_type_allowed( $post_type ) { |
|
782 | + protected function check_is_post_type_allowed($post_type) { |
|
783 | 783 | return true; |
784 | 784 | } |
785 | 785 | |
@@ -791,49 +791,49 @@ discard block |
||
791 | 791 | * @param WP_REST_Request $request Request object. |
792 | 792 | * @return array|WP_Error Invoice Properties or WP_Error. |
793 | 793 | */ |
794 | - protected function prepare_item_for_database( $request ) { |
|
794 | + protected function prepare_item_for_database($request) { |
|
795 | 795 | $prepared_invoice = new stdClass(); |
796 | 796 | |
797 | 797 | // Post ID. |
798 | - if ( isset( $request['id'] ) ) { |
|
799 | - $existing_invoice = $this->get_post( $request['id'] ); |
|
800 | - if ( is_wp_error( $existing_invoice ) ) { |
|
798 | + if (isset($request['id'])) { |
|
799 | + $existing_invoice = $this->get_post($request['id']); |
|
800 | + if (is_wp_error($existing_invoice)) { |
|
801 | 801 | return $existing_invoice; |
802 | 802 | } |
803 | 803 | |
804 | - $prepared_invoice->ID = $existing_invoice->ID; |
|
804 | + $prepared_invoice->ID = $existing_invoice->ID; |
|
805 | 805 | $prepared_invoice->invoice_id = $existing_invoice->ID; |
806 | 806 | } |
807 | 807 | |
808 | 808 | $schema = $this->get_item_schema(); |
809 | 809 | |
810 | 810 | // Invoice owner. |
811 | - if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { |
|
811 | + if (!empty($schema['properties']['user_id']) && isset($request['user_id'])) { |
|
812 | 812 | $prepared_invoice->user_id = (int) $request['user_id']; |
813 | 813 | } |
814 | 814 | |
815 | 815 | // Cart details. |
816 | - if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) { |
|
816 | + if (!empty($schema['properties']['cart_details']) && isset($request['cart_details'])) { |
|
817 | 817 | $prepared_invoice->cart_details = (array) $request['cart_details']; |
818 | 818 | } |
819 | 819 | |
820 | 820 | // Invoice status. |
821 | - if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { |
|
821 | + if (!empty($schema['properties']['status']) && isset($request['status'])) { |
|
822 | 822 | |
823 | - if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) { |
|
823 | + if (in_array($request['status'], $this->get_post_statuses(), true)) { |
|
824 | 824 | $prepared_invoice->status = $request['status']; |
825 | 825 | } |
826 | 826 | |
827 | 827 | } |
828 | 828 | |
829 | 829 | // User info |
830 | - if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) { |
|
830 | + if (!empty($schema['properties']['user_info']) && isset($request['user_info'])) { |
|
831 | 831 | $prepared_invoice->user_info = array(); |
832 | 832 | $user_info = (array) $request['user_info']; |
833 | 833 | |
834 | - foreach( $user_info as $prop => $value ) { |
|
834 | + foreach ($user_info as $prop => $value) { |
|
835 | 835 | |
836 | - if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) { |
|
836 | + if (!empty($schema['properties']['user_info']['properties'][$prop])) { |
|
837 | 837 | |
838 | 838 | $prepared_invoice->user_info[$prop] = $value; |
839 | 839 | |
@@ -844,59 +844,59 @@ discard block |
||
844 | 844 | } |
845 | 845 | |
846 | 846 | // IP |
847 | - if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) { |
|
847 | + if (!empty($schema['properties']['ip']) && isset($request['ip'])) { |
|
848 | 848 | $prepared_invoice->ip = $request['ip']; |
849 | 849 | } |
850 | 850 | |
851 | 851 | // Payment details |
852 | 852 | $prepared_invoice->payment_details = array(); |
853 | 853 | |
854 | - if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) { |
|
854 | + if (!empty($schema['properties']['gateway']) && isset($request['gateway'])) { |
|
855 | 855 | $prepared_invoice->payment_details['gateway'] = $request['gateway']; |
856 | 856 | } |
857 | 857 | |
858 | - if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) { |
|
858 | + if (!empty($schema['properties']['gateway_title']) && isset($request['gateway_title'])) { |
|
859 | 859 | $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title']; |
860 | 860 | } |
861 | 861 | |
862 | - if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) { |
|
862 | + if (!empty($schema['properties']['currency']) && isset($request['currency'])) { |
|
863 | 863 | $prepared_invoice->payment_details['currency'] = $request['currency']; |
864 | 864 | } |
865 | 865 | |
866 | - if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) { |
|
866 | + if (!empty($schema['properties']['transaction_id']) && isset($request['transaction_id'])) { |
|
867 | 867 | $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id']; |
868 | 868 | } |
869 | 869 | |
870 | 870 | // Dates |
871 | - if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) { |
|
872 | - $post_date = rest_get_date_with_gmt( $request['date'] ); |
|
871 | + if (!empty($schema['properties']['date']) && isset($request['date'])) { |
|
872 | + $post_date = rest_get_date_with_gmt($request['date']); |
|
873 | 873 | |
874 | - if ( ! empty( $post_date ) ) { |
|
874 | + if (!empty($post_date)) { |
|
875 | 875 | $prepared_invoice->post_date = $post_date[0]; |
876 | 876 | } |
877 | 877 | |
878 | 878 | } |
879 | 879 | |
880 | - if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) { |
|
881 | - $due_date = rest_get_date_with_gmt( $request['due_date'] ); |
|
880 | + if (!empty($schema['properties']['due_date']) && isset($request['due_date'])) { |
|
881 | + $due_date = rest_get_date_with_gmt($request['due_date']); |
|
882 | 882 | |
883 | - if ( ! empty( $due_date ) ) { |
|
883 | + if (!empty($due_date)) { |
|
884 | 884 | $prepared_invoice->due_date = $due_date[0]; |
885 | 885 | } |
886 | 886 | |
887 | 887 | } |
888 | 888 | |
889 | - if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) { |
|
889 | + if (!empty($schema['properties']['valid_until']) && isset($request['valid_until'])) { |
|
890 | 890 | |
891 | - if ( ! empty( $request['valid_until'] ) ) { |
|
892 | - $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) ); |
|
891 | + if (!empty($request['valid_until'])) { |
|
892 | + $prepared_invoice->valid_until = gmdate('Y-m-d', strtotime($request['valid_until'])); |
|
893 | 893 | } else { |
894 | 894 | $prepared_invoice->valid_until = ''; |
895 | 895 | } |
896 | 896 | |
897 | 897 | } |
898 | 898 | |
899 | - $invoice_data = (array) wp_unslash( $prepared_invoice ); |
|
899 | + $invoice_data = (array) wp_unslash($prepared_invoice); |
|
900 | 900 | |
901 | 901 | /** |
902 | 902 | * Filters an invoice before it is inserted via the REST API. |
@@ -906,7 +906,7 @@ discard block |
||
906 | 906 | * @param array $invoice_data An array of invoice data |
907 | 907 | * @param WP_REST_Request $request Request object. |
908 | 908 | */ |
909 | - return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request ); |
|
909 | + return apply_filters("wpinv_rest_pre_insert_invoice", $invoice_data, $request); |
|
910 | 910 | |
911 | 911 | } |
912 | 912 | |
@@ -919,20 +919,20 @@ discard block |
||
919 | 919 | * @param WP_REST_Request $request Request object. |
920 | 920 | * @return WP_REST_Response Response object. |
921 | 921 | */ |
922 | - public function prepare_item_for_response( $invoice, $request ) { |
|
922 | + public function prepare_item_for_response($invoice, $request) { |
|
923 | 923 | |
924 | - $GLOBALS['post'] = get_post( $invoice->ID ); |
|
924 | + $GLOBALS['post'] = get_post($invoice->ID); |
|
925 | 925 | |
926 | - setup_postdata( $invoice->ID ); |
|
926 | + setup_postdata($invoice->ID); |
|
927 | 927 | |
928 | 928 | // Fetch the fields to include in this response. |
929 | - $fields = $this->get_fields_for_response( $request ); |
|
929 | + $fields = $this->get_fields_for_response($request); |
|
930 | 930 | |
931 | 931 | // Base fields for every invoice. |
932 | 932 | $data = array(); |
933 | 933 | |
934 | 934 | // Set up ID |
935 | - if ( rest_is_field_included( 'id', $fields ) ) { |
|
935 | + if (rest_is_field_included('id', $fields)) { |
|
936 | 936 | $data['id'] = $invoice->ID; |
937 | 937 | } |
938 | 938 | |
@@ -947,79 +947,79 @@ discard block |
||
947 | 947 | 'status', 'status_nicename', 'post_type' |
948 | 948 | ); |
949 | 949 | |
950 | - foreach( $invoice_properties as $property ) { |
|
950 | + foreach ($invoice_properties as $property) { |
|
951 | 951 | |
952 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
953 | - $data[$property] = $invoice->get( $property ); |
|
952 | + if (rest_is_field_included($property, $fields)) { |
|
953 | + $data[$property] = $invoice->get($property); |
|
954 | 954 | } |
955 | 955 | |
956 | 956 | } |
957 | 957 | |
958 | 958 | // Valid until |
959 | - if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) { |
|
960 | - $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true ); |
|
959 | + if (rest_is_field_included('valid_until', $fields) && $this->post_type === 'wpi_quote') { |
|
960 | + $data['valid_until'] = get_post_meta($invoice->ID, 'wpinv_quote_valid_until', true); |
|
961 | 961 | } |
962 | 962 | |
963 | 963 | // Cart details |
964 | - if ( rest_is_field_included( 'cart_details', $fields ) ) { |
|
965 | - $data['cart_details'] = $invoice->get( 'cart_details' ); |
|
964 | + if (rest_is_field_included('cart_details', $fields)) { |
|
965 | + $data['cart_details'] = $invoice->get('cart_details'); |
|
966 | 966 | } |
967 | 967 | |
968 | 968 | //Dates |
969 | - $invoice_properties = array( 'date', 'due_date', 'completed_date' ); |
|
969 | + $invoice_properties = array('date', 'due_date', 'completed_date'); |
|
970 | 970 | |
971 | - foreach( $invoice_properties as $property ) { |
|
971 | + foreach ($invoice_properties as $property) { |
|
972 | 972 | |
973 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
974 | - $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) ); |
|
973 | + if (rest_is_field_included($property, $fields)) { |
|
974 | + $data[$property] = $this->prepare_date_response('0000-00-00 00:00:00', $invoice->get($property)); |
|
975 | 975 | } |
976 | 976 | |
977 | 977 | } |
978 | 978 | |
979 | 979 | // User id |
980 | - if ( rest_is_field_included( 'user_id', $fields ) ) { |
|
981 | - $data['user_id'] = (int) $invoice->get( 'user_id' ); |
|
980 | + if (rest_is_field_included('user_id', $fields)) { |
|
981 | + $data['user_id'] = (int) $invoice->get('user_id'); |
|
982 | 982 | } |
983 | 983 | |
984 | 984 | // User info |
985 | - $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' ); |
|
985 | + $user_info = array('first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone'); |
|
986 | 986 | |
987 | - foreach( $user_info as $property ) { |
|
987 | + foreach ($user_info as $property) { |
|
988 | 988 | |
989 | - if ( rest_is_field_included( "user_info.$property", $fields ) ) { |
|
990 | - $data['user_info'][$property] = $invoice->get( $property ); |
|
989 | + if (rest_is_field_included("user_info.$property", $fields)) { |
|
990 | + $data['user_info'][$property] = $invoice->get($property); |
|
991 | 991 | } |
992 | 992 | |
993 | 993 | } |
994 | 994 | |
995 | 995 | // Slug |
996 | - if ( rest_is_field_included( 'slug', $fields ) ) { |
|
997 | - $data['slug'] = $invoice->get( 'post_name' ); |
|
996 | + if (rest_is_field_included('slug', $fields)) { |
|
997 | + $data['slug'] = $invoice->get('post_name'); |
|
998 | 998 | } |
999 | 999 | |
1000 | 1000 | // View invoice link |
1001 | - if ( rest_is_field_included( 'link', $fields ) ) { |
|
1002 | - $data['link'] = esc_url( $invoice->get_view_url() ); |
|
1001 | + if (rest_is_field_included('link', $fields)) { |
|
1002 | + $data['link'] = esc_url($invoice->get_view_url()); |
|
1003 | 1003 | } |
1004 | 1004 | |
1005 | 1005 | |
1006 | - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
1007 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
1008 | - $data = $this->filter_response_by_context( $data, $context ); |
|
1006 | + $context = !empty($request['context']) ? $request['context'] : 'view'; |
|
1007 | + $data = $this->add_additional_fields_to_object($data, $request); |
|
1008 | + $data = $this->filter_response_by_context($data, $context); |
|
1009 | 1009 | |
1010 | 1010 | // Wrap the data in a response object. |
1011 | - $response = rest_ensure_response( $data ); |
|
1011 | + $response = rest_ensure_response($data); |
|
1012 | 1012 | |
1013 | - $links = $this->prepare_links( $invoice ); |
|
1014 | - $response->add_links( $links ); |
|
1013 | + $links = $this->prepare_links($invoice); |
|
1014 | + $response->add_links($links); |
|
1015 | 1015 | |
1016 | - if ( ! empty( $links['self']['href'] ) ) { |
|
1017 | - $actions = $this->get_available_actions( $invoice, $request ); |
|
1016 | + if (!empty($links['self']['href'])) { |
|
1017 | + $actions = $this->get_available_actions($invoice, $request); |
|
1018 | 1018 | |
1019 | 1019 | $self = $links['self']['href']; |
1020 | 1020 | |
1021 | - foreach ( $actions as $rel ) { |
|
1022 | - $response->add_link( $rel, $self ); |
|
1021 | + foreach ($actions as $rel) { |
|
1022 | + $response->add_link($rel, $self); |
|
1023 | 1023 | } |
1024 | 1024 | } |
1025 | 1025 | |
@@ -1032,7 +1032,7 @@ discard block |
||
1032 | 1032 | * @param WPInv_Invoice $invoice The invoice object. |
1033 | 1033 | * @param WP_REST_Request $request Request object. |
1034 | 1034 | */ |
1035 | - return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request ); |
|
1035 | + return apply_filters("wpinv_rest_prepare_invoice", $response, $invoice, $request); |
|
1036 | 1036 | } |
1037 | 1037 | |
1038 | 1038 | /** |
@@ -1045,57 +1045,57 @@ discard block |
||
1045 | 1045 | * @param WP_REST_Request $request Full details about the request. |
1046 | 1046 | * @return array Fields to be included in the response. |
1047 | 1047 | */ |
1048 | - public function get_fields_for_response( $request ) { |
|
1048 | + public function get_fields_for_response($request) { |
|
1049 | 1049 | $schema = $this->get_item_schema(); |
1050 | - $properties = isset( $schema['properties'] ) ? $schema['properties'] : array(); |
|
1050 | + $properties = isset($schema['properties']) ? $schema['properties'] : array(); |
|
1051 | 1051 | |
1052 | 1052 | $additional_fields = $this->get_additional_fields(); |
1053 | - foreach ( $additional_fields as $field_name => $field_options ) { |
|
1053 | + foreach ($additional_fields as $field_name => $field_options) { |
|
1054 | 1054 | // For back-compat, include any field with an empty schema |
1055 | 1055 | // because it won't be present in $this->get_item_schema(). |
1056 | - if ( is_null( $field_options['schema'] ) ) { |
|
1057 | - $properties[ $field_name ] = $field_options; |
|
1056 | + if (is_null($field_options['schema'])) { |
|
1057 | + $properties[$field_name] = $field_options; |
|
1058 | 1058 | } |
1059 | 1059 | } |
1060 | 1060 | |
1061 | 1061 | // Exclude fields that specify a different context than the request context. |
1062 | 1062 | $context = $request['context']; |
1063 | - if ( $context ) { |
|
1064 | - foreach ( $properties as $name => $options ) { |
|
1065 | - if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) { |
|
1066 | - unset( $properties[ $name ] ); |
|
1063 | + if ($context) { |
|
1064 | + foreach ($properties as $name => $options) { |
|
1065 | + if (!empty($options['context']) && !in_array($context, $options['context'], true)) { |
|
1066 | + unset($properties[$name]); |
|
1067 | 1067 | } |
1068 | 1068 | } |
1069 | 1069 | } |
1070 | 1070 | |
1071 | - $fields = array_keys( $properties ); |
|
1071 | + $fields = array_keys($properties); |
|
1072 | 1072 | |
1073 | - if ( ! isset( $request['_fields'] ) ) { |
|
1073 | + if (!isset($request['_fields'])) { |
|
1074 | 1074 | return $fields; |
1075 | 1075 | } |
1076 | - $requested_fields = wpinv_parse_list( $request['_fields'] ); |
|
1077 | - if ( 0 === count( $requested_fields ) ) { |
|
1076 | + $requested_fields = wpinv_parse_list($request['_fields']); |
|
1077 | + if (0 === count($requested_fields)) { |
|
1078 | 1078 | return $fields; |
1079 | 1079 | } |
1080 | 1080 | // Trim off outside whitespace from the comma delimited list. |
1081 | - $requested_fields = array_map( 'trim', $requested_fields ); |
|
1081 | + $requested_fields = array_map('trim', $requested_fields); |
|
1082 | 1082 | // Always persist 'id', because it can be needed for add_additional_fields_to_object(). |
1083 | - if ( in_array( 'id', $fields, true ) ) { |
|
1083 | + if (in_array('id', $fields, true)) { |
|
1084 | 1084 | $requested_fields[] = 'id'; |
1085 | 1085 | } |
1086 | 1086 | // Return the list of all requested fields which appear in the schema. |
1087 | 1087 | return array_reduce( |
1088 | 1088 | $requested_fields, |
1089 | - function( $response_fields, $field ) use ( $fields ) { |
|
1090 | - if ( in_array( $field, $fields, true ) ) { |
|
1089 | + function($response_fields, $field) use ($fields) { |
|
1090 | + if (in_array($field, $fields, true)) { |
|
1091 | 1091 | $response_fields[] = $field; |
1092 | 1092 | return $response_fields; |
1093 | 1093 | } |
1094 | 1094 | // Check for nested fields if $field is not a direct match. |
1095 | - $nested_fields = explode( '.', $field ); |
|
1095 | + $nested_fields = explode('.', $field); |
|
1096 | 1096 | // A nested field is included so long as its top-level property is |
1097 | 1097 | // present in the schema. |
1098 | - if ( in_array( $nested_fields[0], $fields, true ) ) { |
|
1098 | + if (in_array($nested_fields[0], $fields, true)) { |
|
1099 | 1099 | $response_fields[] = $field; |
1100 | 1100 | } |
1101 | 1101 | return $response_fields; |
@@ -1114,8 +1114,8 @@ discard block |
||
1114 | 1114 | public function get_item_schema() { |
1115 | 1115 | |
1116 | 1116 | // Maybe retrieve the schema from cache. |
1117 | - if ( $this->schema ) { |
|
1118 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1117 | + if ($this->schema) { |
|
1118 | + return $this->add_additional_fields_schema($this->schema); |
|
1119 | 1119 | } |
1120 | 1120 | |
1121 | 1121 | $schema = array( |
@@ -1127,266 +1127,266 @@ discard block |
||
1127 | 1127 | 'properties' => array( |
1128 | 1128 | |
1129 | 1129 | 'title' => array( |
1130 | - 'description' => __( 'The title for the invoice.', 'invoicing' ), |
|
1130 | + 'description' => __('The title for the invoice.', 'invoicing'), |
|
1131 | 1131 | 'type' => 'string', |
1132 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1132 | + 'context' => array('view', 'edit', 'embed'), |
|
1133 | 1133 | 'readonly' => true, |
1134 | 1134 | ), |
1135 | 1135 | |
1136 | 1136 | 'user_id' => array( |
1137 | - 'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ), |
|
1137 | + 'description' => __('The ID of the owner of the invoice.', 'invoicing'), |
|
1138 | 1138 | 'type' => 'integer', |
1139 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1139 | + 'context' => array('view', 'edit', 'embed'), |
|
1140 | 1140 | ), |
1141 | 1141 | |
1142 | 1142 | 'email' => array( |
1143 | - 'description' => __( 'The email of the owner of the invoice.', 'invoicing' ), |
|
1143 | + 'description' => __('The email of the owner of the invoice.', 'invoicing'), |
|
1144 | 1144 | 'type' => 'string', |
1145 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1145 | + 'context' => array('view', 'edit', 'embed'), |
|
1146 | 1146 | 'readonly' => true, |
1147 | 1147 | ), |
1148 | 1148 | |
1149 | 1149 | 'ip' => array( |
1150 | - 'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ), |
|
1150 | + 'description' => __('The IP of the owner of the invoice.', 'invoicing'), |
|
1151 | 1151 | 'type' => 'string', |
1152 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1152 | + 'context' => array('view', 'edit', 'embed'), |
|
1153 | 1153 | ), |
1154 | 1154 | |
1155 | 1155 | 'user_info' => array( |
1156 | - 'description' => __( 'Information about the owner of the invoice.', 'invoicing' ), |
|
1156 | + 'description' => __('Information about the owner of the invoice.', 'invoicing'), |
|
1157 | 1157 | 'type' => 'object', |
1158 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1158 | + 'context' => array('view', 'edit', 'embed'), |
|
1159 | 1159 | 'properties' => array( |
1160 | 1160 | |
1161 | 1161 | 'first_name' => array( |
1162 | - 'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ), |
|
1162 | + 'description' => __('The first name of the owner of the invoice.', 'invoicing'), |
|
1163 | 1163 | 'type' => 'string', |
1164 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1164 | + 'context' => array('view', 'edit', 'embed'), |
|
1165 | 1165 | ), |
1166 | 1166 | |
1167 | 1167 | 'last_name' => array( |
1168 | - 'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ), |
|
1168 | + 'description' => __('The last name of the owner of the invoice.', 'invoicing'), |
|
1169 | 1169 | 'type' => 'string', |
1170 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1170 | + 'context' => array('view', 'edit', 'embed'), |
|
1171 | 1171 | ), |
1172 | 1172 | |
1173 | 1173 | 'company' => array( |
1174 | - 'description' => __( 'The company of the owner of the invoice.', 'invoicing' ), |
|
1174 | + 'description' => __('The company of the owner of the invoice.', 'invoicing'), |
|
1175 | 1175 | 'type' => 'string', |
1176 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1176 | + 'context' => array('view', 'edit', 'embed'), |
|
1177 | 1177 | ), |
1178 | 1178 | |
1179 | 1179 | 'vat_number' => array( |
1180 | - 'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ), |
|
1180 | + 'description' => __('The VAT number of the owner of the invoice.', 'invoicing'), |
|
1181 | 1181 | 'type' => 'string', |
1182 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1182 | + 'context' => array('view', 'edit', 'embed'), |
|
1183 | 1183 | ), |
1184 | 1184 | |
1185 | 1185 | 'vat_rate' => array( |
1186 | - 'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ), |
|
1186 | + 'description' => __('The VAT rate applied on the invoice.', 'invoicing'), |
|
1187 | 1187 | 'type' => 'string', |
1188 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1188 | + 'context' => array('view', 'edit', 'embed'), |
|
1189 | 1189 | ), |
1190 | 1190 | |
1191 | 1191 | 'address' => array( |
1192 | - 'description' => __( 'The address of the invoice owner.', 'invoicing' ), |
|
1192 | + 'description' => __('The address of the invoice owner.', 'invoicing'), |
|
1193 | 1193 | 'type' => 'string', |
1194 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1194 | + 'context' => array('view', 'edit', 'embed'), |
|
1195 | 1195 | ), |
1196 | 1196 | |
1197 | 1197 | 'city' => array( |
1198 | - 'description' => __( 'The city of the invoice owner.', 'invoicing' ), |
|
1198 | + 'description' => __('The city of the invoice owner.', 'invoicing'), |
|
1199 | 1199 | 'type' => 'string', |
1200 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1200 | + 'context' => array('view', 'edit', 'embed'), |
|
1201 | 1201 | ), |
1202 | 1202 | |
1203 | 1203 | 'country' => array( |
1204 | - 'description' => __( 'The country of the invoice owner.', 'invoicing' ), |
|
1204 | + 'description' => __('The country of the invoice owner.', 'invoicing'), |
|
1205 | 1205 | 'type' => 'string', |
1206 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1206 | + 'context' => array('view', 'edit', 'embed'), |
|
1207 | 1207 | ), |
1208 | 1208 | |
1209 | 1209 | 'state' => array( |
1210 | - 'description' => __( 'The state of the invoice owner.', 'invoicing' ), |
|
1210 | + 'description' => __('The state of the invoice owner.', 'invoicing'), |
|
1211 | 1211 | 'type' => 'string', |
1212 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1212 | + 'context' => array('view', 'edit', 'embed'), |
|
1213 | 1213 | ), |
1214 | 1214 | |
1215 | 1215 | 'zip' => array( |
1216 | - 'description' => __( 'The zip code of the invoice owner.', 'invoicing' ), |
|
1216 | + 'description' => __('The zip code of the invoice owner.', 'invoicing'), |
|
1217 | 1217 | 'type' => 'string', |
1218 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1218 | + 'context' => array('view', 'edit', 'embed'), |
|
1219 | 1219 | ), |
1220 | 1220 | |
1221 | 1221 | 'phone' => array( |
1222 | - 'description' => __( 'The phone number of the invoice owner.', 'invoicing' ), |
|
1222 | + 'description' => __('The phone number of the invoice owner.', 'invoicing'), |
|
1223 | 1223 | 'type' => 'string', |
1224 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1224 | + 'context' => array('view', 'edit', 'embed'), |
|
1225 | 1225 | ), |
1226 | 1226 | ), |
1227 | 1227 | ), |
1228 | 1228 | |
1229 | 1229 | 'id' => array( |
1230 | - 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
1230 | + 'description' => __('Unique identifier for the invoice.', 'invoicing'), |
|
1231 | 1231 | 'type' => 'integer', |
1232 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1232 | + 'context' => array('view', 'edit', 'embed'), |
|
1233 | 1233 | 'readonly' => true, |
1234 | 1234 | ), |
1235 | 1235 | |
1236 | 1236 | 'key' => array( |
1237 | - 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
1237 | + 'description' => __('A unique key for the invoice.', 'invoicing'), |
|
1238 | 1238 | 'type' => 'string', |
1239 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1239 | + 'context' => array('view', 'edit', 'embed'), |
|
1240 | 1240 | 'readonly' => true, |
1241 | 1241 | ), |
1242 | 1242 | |
1243 | 1243 | 'number' => array( |
1244 | - 'description' => __( 'The invoice number.', 'invoicing' ), |
|
1244 | + 'description' => __('The invoice number.', 'invoicing'), |
|
1245 | 1245 | 'type' => 'string', |
1246 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1246 | + 'context' => array('view', 'edit', 'embed'), |
|
1247 | 1247 | 'readonly' => true, |
1248 | 1248 | ), |
1249 | 1249 | |
1250 | 1250 | 'transaction_id' => array( |
1251 | - 'description' => __( 'The transaction id of the invoice.', 'invoicing' ), |
|
1251 | + 'description' => __('The transaction id of the invoice.', 'invoicing'), |
|
1252 | 1252 | 'type' => 'string', |
1253 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1253 | + 'context' => array('view', 'edit', 'embed'), |
|
1254 | 1254 | ), |
1255 | 1255 | |
1256 | 1256 | 'gateway' => array( |
1257 | - 'description' => __( 'The gateway used to process the invoice.', 'invoicing' ), |
|
1257 | + 'description' => __('The gateway used to process the invoice.', 'invoicing'), |
|
1258 | 1258 | 'type' => 'string', |
1259 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1259 | + 'context' => array('view', 'edit', 'embed'), |
|
1260 | 1260 | ), |
1261 | 1261 | |
1262 | 1262 | 'gateway_title' => array( |
1263 | - 'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ), |
|
1263 | + 'description' => __('The title of the gateway used to process the invoice.', 'invoicing'), |
|
1264 | 1264 | 'type' => 'string', |
1265 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1265 | + 'context' => array('view', 'edit', 'embed'), |
|
1266 | 1266 | ), |
1267 | 1267 | |
1268 | 1268 | 'total' => array( |
1269 | - 'description' => __( 'The total amount of the invoice.', 'invoicing' ), |
|
1269 | + 'description' => __('The total amount of the invoice.', 'invoicing'), |
|
1270 | 1270 | 'type' => 'number', |
1271 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1271 | + 'context' => array('view', 'edit', 'embed'), |
|
1272 | 1272 | 'readonly' => true, |
1273 | 1273 | ), |
1274 | 1274 | |
1275 | 1275 | 'discount' => array( |
1276 | - 'description' => __( 'The discount applied to the invoice.', 'invoicing' ), |
|
1276 | + 'description' => __('The discount applied to the invoice.', 'invoicing'), |
|
1277 | 1277 | 'type' => 'number', |
1278 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1278 | + 'context' => array('view', 'edit', 'embed'), |
|
1279 | 1279 | 'readonly' => true, |
1280 | 1280 | ), |
1281 | 1281 | |
1282 | 1282 | 'discount_code' => array( |
1283 | - 'description' => __( 'The discount code applied to the invoice.', 'invoicing' ), |
|
1283 | + 'description' => __('The discount code applied to the invoice.', 'invoicing'), |
|
1284 | 1284 | 'type' => 'string', |
1285 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1285 | + 'context' => array('view', 'edit', 'embed'), |
|
1286 | 1286 | 'readonly' => true, |
1287 | 1287 | ), |
1288 | 1288 | |
1289 | 1289 | 'tax' => array( |
1290 | - 'description' => __( 'The tax applied to the invoice.', 'invoicing' ), |
|
1290 | + 'description' => __('The tax applied to the invoice.', 'invoicing'), |
|
1291 | 1291 | 'type' => 'number', |
1292 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1292 | + 'context' => array('view', 'edit', 'embed'), |
|
1293 | 1293 | 'readonly' => true, |
1294 | 1294 | ), |
1295 | 1295 | |
1296 | 1296 | 'fees_total' => array( |
1297 | - 'description' => __( 'The total fees applied to the invoice.', 'invoicing' ), |
|
1297 | + 'description' => __('The total fees applied to the invoice.', 'invoicing'), |
|
1298 | 1298 | 'type' => 'number', |
1299 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1299 | + 'context' => array('view', 'edit', 'embed'), |
|
1300 | 1300 | 'readonly' => true, |
1301 | 1301 | ), |
1302 | 1302 | |
1303 | 1303 | 'subtotal' => array( |
1304 | - 'description' => __( 'The sub-total for the invoice.', 'invoicing' ), |
|
1304 | + 'description' => __('The sub-total for the invoice.', 'invoicing'), |
|
1305 | 1305 | 'type' => 'number', |
1306 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1306 | + 'context' => array('view', 'edit', 'embed'), |
|
1307 | 1307 | 'readonly' => true, |
1308 | 1308 | ), |
1309 | 1309 | |
1310 | 1310 | 'currency' => array( |
1311 | - 'description' => __( 'The currency used to process the invoice.', 'invoicing' ), |
|
1311 | + 'description' => __('The currency used to process the invoice.', 'invoicing'), |
|
1312 | 1312 | 'type' => 'string', |
1313 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1313 | + 'context' => array('view', 'edit', 'embed'), |
|
1314 | 1314 | ), |
1315 | 1315 | |
1316 | 1316 | 'cart_details' => array( |
1317 | - 'description' => __( 'The cart details for invoice.', 'invoicing' ), |
|
1317 | + 'description' => __('The cart details for invoice.', 'invoicing'), |
|
1318 | 1318 | 'type' => 'array', |
1319 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1319 | + 'context' => array('view', 'edit', 'embed'), |
|
1320 | 1320 | 'required' => true, |
1321 | 1321 | ), |
1322 | 1322 | |
1323 | 1323 | 'date' => array( |
1324 | - 'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ), |
|
1325 | - 'type' => array( 'string', 'null' ), |
|
1324 | + 'description' => __("The date the invoice was published, in the site's timezone.", 'invoicing'), |
|
1325 | + 'type' => array('string', 'null'), |
|
1326 | 1326 | 'format' => 'date-time', |
1327 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1327 | + 'context' => array('view', 'edit', 'embed'), |
|
1328 | 1328 | ), |
1329 | 1329 | |
1330 | 1330 | 'due_date' => array( |
1331 | - 'description' => __( 'The due date for the invoice.', 'invoicing' ), |
|
1332 | - 'type' => array( 'string', 'null' ), |
|
1331 | + 'description' => __('The due date for the invoice.', 'invoicing'), |
|
1332 | + 'type' => array('string', 'null'), |
|
1333 | 1333 | 'format' => 'date-time', |
1334 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1334 | + 'context' => array('view', 'edit', 'embed'), |
|
1335 | 1335 | ), |
1336 | 1336 | |
1337 | 1337 | 'completed_date' => array( |
1338 | - 'description' => __( 'The completed date for the invoice.', 'invoicing' ), |
|
1339 | - 'type' => array( 'string', 'null' ), |
|
1338 | + 'description' => __('The completed date for the invoice.', 'invoicing'), |
|
1339 | + 'type' => array('string', 'null'), |
|
1340 | 1340 | 'format' => 'date-time', |
1341 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1341 | + 'context' => array('view', 'edit', 'embed'), |
|
1342 | 1342 | 'readonly' => true, |
1343 | 1343 | ), |
1344 | 1344 | |
1345 | 1345 | 'link' => array( |
1346 | - 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
1346 | + 'description' => __('URL to the invoice.', 'invoicing'), |
|
1347 | 1347 | 'type' => 'string', |
1348 | 1348 | 'format' => 'uri', |
1349 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1349 | + 'context' => array('view', 'edit', 'embed'), |
|
1350 | 1350 | 'readonly' => true, |
1351 | 1351 | ), |
1352 | 1352 | |
1353 | 1353 | 'mode' => array( |
1354 | - 'description' => __( 'The mode used to process the invoice.', 'invoicing' ), |
|
1354 | + 'description' => __('The mode used to process the invoice.', 'invoicing'), |
|
1355 | 1355 | 'type' => 'string', |
1356 | - 'enum' => array( 'live', 'test' ), |
|
1357 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1356 | + 'enum' => array('live', 'test'), |
|
1357 | + 'context' => array('view', 'edit', 'embed'), |
|
1358 | 1358 | 'readonly' => true, |
1359 | 1359 | ), |
1360 | 1360 | |
1361 | 1361 | 'slug' => array( |
1362 | - 'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ), |
|
1362 | + 'description' => __('An alphanumeric identifier for the invoice.', 'invoicing'), |
|
1363 | 1363 | 'type' => 'string', |
1364 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1364 | + 'context' => array('view', 'edit', 'embed'), |
|
1365 | 1365 | 'arg_options' => array( |
1366 | - 'sanitize_callback' => array( $this, 'sanitize_slug' ), |
|
1366 | + 'sanitize_callback' => array($this, 'sanitize_slug'), |
|
1367 | 1367 | ), |
1368 | 1368 | 'readonly' => true, |
1369 | 1369 | ), |
1370 | 1370 | |
1371 | 1371 | 'status' => array( |
1372 | - 'description' => __( 'A named status for the invoice.', 'invoicing' ), |
|
1372 | + 'description' => __('A named status for the invoice.', 'invoicing'), |
|
1373 | 1373 | 'type' => 'string', |
1374 | 1374 | 'enum' => $this->get_post_statuses(), |
1375 | - 'context' => array( 'view', 'edit' ), |
|
1375 | + 'context' => array('view', 'edit'), |
|
1376 | 1376 | 'default' => 'wpi-pending', |
1377 | 1377 | ), |
1378 | 1378 | |
1379 | 1379 | 'status_nicename' => array( |
1380 | - 'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ), |
|
1380 | + 'description' => __('A human-readable status name for the invoice.', 'invoicing'), |
|
1381 | 1381 | 'type' => 'string', |
1382 | - 'context' => array( 'view', 'embed' ), |
|
1382 | + 'context' => array('view', 'embed'), |
|
1383 | 1383 | 'readonly' => true, |
1384 | 1384 | ), |
1385 | 1385 | |
1386 | 1386 | 'post_type' => array( |
1387 | - 'description' => __( 'The post type for the invoice.', 'invoicing' ), |
|
1387 | + 'description' => __('The post type for the invoice.', 'invoicing'), |
|
1388 | 1388 | 'type' => 'string', |
1389 | - 'context' => array( 'view' ), |
|
1389 | + 'context' => array('view'), |
|
1390 | 1390 | 'readonly' => true, |
1391 | 1391 | ), |
1392 | 1392 | ), |
@@ -1404,12 +1404,12 @@ discard block |
||
1404 | 1404 | * |
1405 | 1405 | * @param array $schema The invoice schema. |
1406 | 1406 | */ |
1407 | - $schema = apply_filters( "wpinv_rest_invoice_schema", $schema ); |
|
1407 | + $schema = apply_filters("wpinv_rest_invoice_schema", $schema); |
|
1408 | 1408 | |
1409 | 1409 | // Cache the invoice schema. |
1410 | 1410 | $this->schema = $schema; |
1411 | 1411 | |
1412 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1412 | + return $this->add_additional_fields_schema($this->schema); |
|
1413 | 1413 | } |
1414 | 1414 | |
1415 | 1415 | /** |
@@ -1421,20 +1421,20 @@ discard block |
||
1421 | 1421 | */ |
1422 | 1422 | protected function get_schema_links() { |
1423 | 1423 | |
1424 | - $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" ); |
|
1424 | + $href = rest_url("{$this->namespace}/{$this->rest_base}/{id}"); |
|
1425 | 1425 | |
1426 | 1426 | $links = array(); |
1427 | 1427 | |
1428 | 1428 | $links[] = array( |
1429 | 1429 | 'rel' => 'https://api.w.org/action-publish', |
1430 | - 'title' => __( 'The current user can mark this invoice as completed.', 'invoicing' ), |
|
1430 | + 'title' => __('The current user can mark this invoice as completed.', 'invoicing'), |
|
1431 | 1431 | 'href' => $href, |
1432 | 1432 | 'targetSchema' => array( |
1433 | 1433 | 'type' => 'object', |
1434 | 1434 | 'properties' => array( |
1435 | 1435 | 'status' => array( |
1436 | 1436 | 'type' => 'string', |
1437 | - 'enum' => array( 'publish', 'wpi-renewal' ), |
|
1437 | + 'enum' => array('publish', 'wpi-renewal'), |
|
1438 | 1438 | ), |
1439 | 1439 | ), |
1440 | 1440 | ), |
@@ -1442,7 +1442,7 @@ discard block |
||
1442 | 1442 | |
1443 | 1443 | $links[] = array( |
1444 | 1444 | 'rel' => 'https://api.w.org/action-assign-author', |
1445 | - 'title' => __( 'The current user can change the owner of this invoice.', 'invoicing' ), |
|
1445 | + 'title' => __('The current user can change the owner of this invoice.', 'invoicing'), |
|
1446 | 1446 | 'href' => $href, |
1447 | 1447 | 'targetSchema' => array( |
1448 | 1448 | 'type' => 'object', |
@@ -1465,24 +1465,24 @@ discard block |
||
1465 | 1465 | * @param WPInv_Invoice $invoice Invoice Object. |
1466 | 1466 | * @return array Links for the given invoice. |
1467 | 1467 | */ |
1468 | - protected function prepare_links( $invoice ) { |
|
1468 | + protected function prepare_links($invoice) { |
|
1469 | 1469 | |
1470 | 1470 | // Prepare the base REST API endpoint for invoices. |
1471 | - $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); |
|
1471 | + $base = sprintf('%s/%s', $this->namespace, $this->rest_base); |
|
1472 | 1472 | |
1473 | 1473 | // Entity meta. |
1474 | 1474 | $links = array( |
1475 | 1475 | 'self' => array( |
1476 | - 'href' => rest_url( trailingslashit( $base ) . $invoice->ID ), |
|
1476 | + 'href' => rest_url(trailingslashit($base) . $invoice->ID), |
|
1477 | 1477 | ), |
1478 | 1478 | 'collection' => array( |
1479 | - 'href' => rest_url( $base ), |
|
1479 | + 'href' => rest_url($base), |
|
1480 | 1480 | ), |
1481 | 1481 | ); |
1482 | 1482 | |
1483 | - if ( ! empty( $invoice->user_id ) ) { |
|
1483 | + if (!empty($invoice->user_id)) { |
|
1484 | 1484 | $links['user'] = array( |
1485 | - 'href' => rest_url( 'wp/v2/users/' . $invoice->user_id ), |
|
1485 | + 'href' => rest_url('wp/v2/users/' . $invoice->user_id), |
|
1486 | 1486 | 'embeddable' => true, |
1487 | 1487 | ); |
1488 | 1488 | } |
@@ -1496,7 +1496,7 @@ discard block |
||
1496 | 1496 | * |
1497 | 1497 | * @param array $links Rest links. |
1498 | 1498 | */ |
1499 | - return apply_filters( "wpinv_rest_invoice_links", $links ); |
|
1499 | + return apply_filters("wpinv_rest_invoice_links", $links); |
|
1500 | 1500 | |
1501 | 1501 | } |
1502 | 1502 | |
@@ -1509,24 +1509,24 @@ discard block |
||
1509 | 1509 | * @param WP_REST_Request $request Request object. |
1510 | 1510 | * @return array List of link relations. |
1511 | 1511 | */ |
1512 | - protected function get_available_actions( $invoice, $request ) { |
|
1512 | + protected function get_available_actions($invoice, $request) { |
|
1513 | 1513 | |
1514 | - if ( 'edit' !== $request['context'] ) { |
|
1514 | + if ('edit' !== $request['context']) { |
|
1515 | 1515 | return array(); |
1516 | 1516 | } |
1517 | 1517 | |
1518 | 1518 | $rels = array(); |
1519 | 1519 | |
1520 | 1520 | // Retrieve the post type object. |
1521 | - $post_type = get_post_type_object( $invoice->post_type ); |
|
1521 | + $post_type = get_post_type_object($invoice->post_type); |
|
1522 | 1522 | |
1523 | 1523 | // Mark invoice as completed. |
1524 | - if ( current_user_can( $post_type->cap->publish_posts ) ) { |
|
1524 | + if (current_user_can($post_type->cap->publish_posts)) { |
|
1525 | 1525 | $rels[] = 'https://api.w.org/action-publish'; |
1526 | 1526 | } |
1527 | 1527 | |
1528 | 1528 | // Change the owner of the invoice. |
1529 | - if ( current_user_can( $post_type->cap->edit_others_posts ) ) { |
|
1529 | + if (current_user_can($post_type->cap->edit_others_posts)) { |
|
1530 | 1530 | $rels[] = 'https://api.w.org/action-assign-author'; |
1531 | 1531 | } |
1532 | 1532 | |
@@ -1539,7 +1539,7 @@ discard block |
||
1539 | 1539 | * |
1540 | 1540 | * @param array $rels Available link relations. |
1541 | 1541 | */ |
1542 | - return apply_filters( "wpinv_rest_invoice_link_relations", $rels ); |
|
1542 | + return apply_filters("wpinv_rest_invoice_link_relations", $rels); |
|
1543 | 1543 | } |
1544 | 1544 | |
1545 | 1545 | /** |
@@ -1552,8 +1552,8 @@ discard block |
||
1552 | 1552 | * @param string $parameter Additional parameter to pass to validation. |
1553 | 1553 | * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. |
1554 | 1554 | */ |
1555 | - public function sanitize_post_statuses( $statuses, $request, $parameter ) { |
|
1556 | - return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() ); |
|
1555 | + public function sanitize_post_statuses($statuses, $request, $parameter) { |
|
1556 | + return array_intersect(wp_parse_slug_list($statuses), $this->get_post_statuses()); |
|
1557 | 1557 | } |
1558 | 1558 | |
1559 | 1559 | /** |
@@ -1564,7 +1564,7 @@ discard block |
||
1564 | 1564 | * @return array A list of registered item statuses. |
1565 | 1565 | */ |
1566 | 1566 | public function get_post_statuses() { |
1567 | - return array_keys( wpinv_get_invoice_statuses( true, true ) ); |
|
1567 | + return array_keys(wpinv_get_invoice_statuses(true, true)); |
|
1568 | 1568 | } |
1569 | 1569 | |
1570 | 1570 | } |
1571 | 1571 | \ No newline at end of file |
@@ -58,14 +58,14 @@ discard block |
||
58 | 58 | } |
59 | 59 | |
60 | 60 | |
61 | - /** |
|
62 | - * Registers routes |
|
63 | - * |
|
61 | + /** |
|
62 | + * Registers routes |
|
63 | + * |
|
64 | 64 | * @since 1.0.13 |
65 | - */ |
|
66 | - public function register_rest_routes() { |
|
65 | + */ |
|
66 | + public function register_rest_routes() { |
|
67 | 67 | |
68 | - // Invoices. |
|
68 | + // Invoices. |
|
69 | 69 | $this->invoices_controller->register_routes(); |
70 | 70 | |
71 | 71 | // Items. |
@@ -75,15 +75,15 @@ discard block |
||
75 | 75 | $this->discounts_controller->register_routes(); |
76 | 76 | |
77 | 77 | /** |
78 | - * Fires when registering Invoicing REST routes. |
|
79 | - * |
|
80 | - * |
|
81 | - * @since 1.0.15 |
|
82 | - * |
|
83 | - * |
|
84 | - * @param array $invoice_data Invoice properties. |
|
85 | - * @param WP_REST_Request $request The request used. |
|
86 | - */ |
|
78 | + * Fires when registering Invoicing REST routes. |
|
79 | + * |
|
80 | + * |
|
81 | + * @since 1.0.15 |
|
82 | + * |
|
83 | + * |
|
84 | + * @param array $invoice_data Invoice properties. |
|
85 | + * @param WP_REST_Request $request The request used. |
|
86 | + */ |
|
87 | 87 | do_action( "wpinv_register_rest_routes", $this ); |
88 | 88 | |
89 | 89 | } |
@@ -7,7 +7,7 @@ discard block |
||
7 | 7 | */ |
8 | 8 | |
9 | 9 | // MUST have WordPress. |
10 | -if ( !defined( 'WPINC' ) ) { |
|
10 | +if (!defined('WPINC')) { |
|
11 | 11 | exit; |
12 | 12 | } |
13 | 13 | |
@@ -19,7 +19,7 @@ discard block |
||
19 | 19 | /** |
20 | 20 | * @param string A prefix for our REST routes |
21 | 21 | */ |
22 | - public $api_namespace = ''; |
|
22 | + public $api_namespace = ''; |
|
23 | 23 | |
24 | 24 | /** |
25 | 25 | * @param WPInv_REST_Invoice_Controller Invoices controller |
@@ -42,19 +42,19 @@ discard block |
||
42 | 42 | * @since 1.0.13 |
43 | 43 | * Sets the API namespace and inits hooks |
44 | 44 | */ |
45 | - public function __construct( $api_namespace = 'invoicing/v1' ) { |
|
45 | + public function __construct($api_namespace = 'invoicing/v1') { |
|
46 | 46 | |
47 | 47 | // Include controllers and related files |
48 | 48 | $this->includes(); |
49 | 49 | |
50 | 50 | // Set up class variables |
51 | - $this->api_namespace = apply_filters( 'wpinv_rest_api_namespace', $api_namespace ); |
|
52 | - $this->invoices_controller = new WPInv_REST_Invoice_Controller( $this->api_namespace ); |
|
53 | - $this->items_controller = new WPInv_REST_Items_Controller( $this->api_namespace ); |
|
54 | - $this->discounts_controller= new WPInv_REST_Discounts_Controller( $this->api_namespace ); |
|
51 | + $this->api_namespace = apply_filters('wpinv_rest_api_namespace', $api_namespace); |
|
52 | + $this->invoices_controller = new WPInv_REST_Invoice_Controller($this->api_namespace); |
|
53 | + $this->items_controller = new WPInv_REST_Items_Controller($this->api_namespace); |
|
54 | + $this->discounts_controller = new WPInv_REST_Discounts_Controller($this->api_namespace); |
|
55 | 55 | |
56 | 56 | //Register REST routes |
57 | - add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) ); |
|
57 | + add_action('rest_api_init', array($this, 'register_rest_routes')); |
|
58 | 58 | } |
59 | 59 | |
60 | 60 | |
@@ -84,7 +84,7 @@ discard block |
||
84 | 84 | * @param array $invoice_data Invoice properties. |
85 | 85 | * @param WP_REST_Request $request The request used. |
86 | 86 | */ |
87 | - do_action( "wpinv_register_rest_routes", $this ); |
|
87 | + do_action("wpinv_register_rest_routes", $this); |
|
88 | 88 | |
89 | 89 | } |
90 | 90 | |
@@ -97,13 +97,13 @@ discard block |
||
97 | 97 | protected function includes() { |
98 | 98 | |
99 | 99 | // Invoices |
100 | - require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-invoice-controller.php' ); |
|
100 | + require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-invoice-controller.php'); |
|
101 | 101 | |
102 | 102 | // Items |
103 | - require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-items-controller.php' ); |
|
103 | + require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-items-controller.php'); |
|
104 | 104 | |
105 | 105 | // Discounts |
106 | - require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-discounts-controller.php' ); |
|
106 | + require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-discounts-controller.php'); |
|
107 | 107 | |
108 | 108 | } |
109 | 109 |
@@ -2,7 +2,7 @@ discard block |
||
2 | 2 | |
3 | 3 | // Exit if accessed directly |
4 | 4 | if ( ! defined( 'ABSPATH' ) ) { |
5 | - exit; |
|
5 | + exit; |
|
6 | 6 | } |
7 | 7 | |
8 | 8 | |
@@ -13,183 +13,183 @@ discard block |
||
13 | 13 | */ |
14 | 14 | class WPInv_Subscription { |
15 | 15 | |
16 | - private $subs_db; |
|
16 | + private $subs_db; |
|
17 | + |
|
18 | + public $id = 0; |
|
19 | + public $customer_id = 0; |
|
20 | + public $period = ''; |
|
21 | + public $initial_amount = ''; |
|
22 | + public $recurring_amount = ''; |
|
23 | + public $bill_times = 0; |
|
24 | + public $transaction_id = ''; |
|
25 | + public $parent_payment_id = 0; |
|
26 | + public $product_id = 0; |
|
27 | + public $created = '0000-00-00 00:00:00'; |
|
28 | + public $expiration = '0000-00-00 00:00:00'; |
|
29 | + public $trial_period = ''; |
|
30 | + public $status = 'pending'; |
|
31 | + public $profile_id = ''; |
|
32 | + public $gateway = ''; |
|
33 | + public $customer; |
|
17 | 34 | |
18 | - public $id = 0; |
|
19 | - public $customer_id = 0; |
|
20 | - public $period = ''; |
|
21 | - public $initial_amount = ''; |
|
22 | - public $recurring_amount = ''; |
|
23 | - public $bill_times = 0; |
|
24 | - public $transaction_id = ''; |
|
25 | - public $parent_payment_id = 0; |
|
26 | - public $product_id = 0; |
|
27 | - public $created = '0000-00-00 00:00:00'; |
|
28 | - public $expiration = '0000-00-00 00:00:00'; |
|
29 | - public $trial_period = ''; |
|
30 | - public $status = 'pending'; |
|
31 | - public $profile_id = ''; |
|
32 | - public $gateway = ''; |
|
33 | - public $customer; |
|
34 | - |
|
35 | - /** |
|
36 | - * Get us started |
|
37 | - * |
|
38 | - * @since 1.0.0 |
|
39 | - * @return void |
|
40 | - */ |
|
41 | - function __construct( $_id_or_object = 0, $_by_profile_id = false ) { |
|
35 | + /** |
|
36 | + * Get us started |
|
37 | + * |
|
38 | + * @since 1.0.0 |
|
39 | + * @return void |
|
40 | + */ |
|
41 | + function __construct( $_id_or_object = 0, $_by_profile_id = false ) { |
|
42 | 42 | |
43 | - $this->subs_db = new WPInv_Subscriptions_DB; |
|
43 | + $this->subs_db = new WPInv_Subscriptions_DB; |
|
44 | 44 | |
45 | - if( $_by_profile_id ) { |
|
45 | + if( $_by_profile_id ) { |
|
46 | 46 | |
47 | - $_sub = $this->subs_db->get_by( 'profile_id', $_id_or_object ); |
|
47 | + $_sub = $this->subs_db->get_by( 'profile_id', $_id_or_object ); |
|
48 | 48 | |
49 | - if( empty( $_sub ) ) { |
|
50 | - return false; |
|
51 | - } |
|
49 | + if( empty( $_sub ) ) { |
|
50 | + return false; |
|
51 | + } |
|
52 | 52 | |
53 | - $_id_or_object = $_sub; |
|
53 | + $_id_or_object = $_sub; |
|
54 | 54 | |
55 | - } |
|
55 | + } |
|
56 | 56 | |
57 | - return $this->setup_subscription( $_id_or_object ); |
|
58 | - } |
|
57 | + return $this->setup_subscription( $_id_or_object ); |
|
58 | + } |
|
59 | 59 | |
60 | - /** |
|
61 | - * Setup the subscription object |
|
62 | - * |
|
63 | - * @since 1.0.0 |
|
64 | - * @return void |
|
65 | - */ |
|
66 | - private function setup_subscription( $id_or_object = 0 ) { |
|
60 | + /** |
|
61 | + * Setup the subscription object |
|
62 | + * |
|
63 | + * @since 1.0.0 |
|
64 | + * @return void |
|
65 | + */ |
|
66 | + private function setup_subscription( $id_or_object = 0 ) { |
|
67 | 67 | |
68 | - if( empty( $id_or_object ) ) { |
|
69 | - return false; |
|
70 | - } |
|
68 | + if( empty( $id_or_object ) ) { |
|
69 | + return false; |
|
70 | + } |
|
71 | 71 | |
72 | - if( is_numeric( $id_or_object ) ) { |
|
72 | + if( is_numeric( $id_or_object ) ) { |
|
73 | 73 | |
74 | - $sub = $this->subs_db->get( $id_or_object ); |
|
74 | + $sub = $this->subs_db->get( $id_or_object ); |
|
75 | 75 | |
76 | - } elseif( is_object( $id_or_object ) ) { |
|
76 | + } elseif( is_object( $id_or_object ) ) { |
|
77 | 77 | |
78 | - $sub = $id_or_object; |
|
78 | + $sub = $id_or_object; |
|
79 | 79 | |
80 | - } |
|
80 | + } |
|
81 | 81 | |
82 | - if( empty( $sub ) ) { |
|
83 | - return false; |
|
84 | - } |
|
82 | + if( empty( $sub ) ) { |
|
83 | + return false; |
|
84 | + } |
|
85 | 85 | |
86 | - foreach( $sub as $key => $value ) { |
|
87 | - $this->$key = $value; |
|
88 | - } |
|
86 | + foreach( $sub as $key => $value ) { |
|
87 | + $this->$key = $value; |
|
88 | + } |
|
89 | 89 | |
90 | - $this->customer = get_userdata( $this->customer_id ); |
|
91 | - $this->gateway = wpinv_get_payment_gateway( $this->parent_payment_id ); |
|
90 | + $this->customer = get_userdata( $this->customer_id ); |
|
91 | + $this->gateway = wpinv_get_payment_gateway( $this->parent_payment_id ); |
|
92 | 92 | |
93 | - do_action( 'wpinv_recurring_setup_subscription', $this ); |
|
93 | + do_action( 'wpinv_recurring_setup_subscription', $this ); |
|
94 | 94 | |
95 | - return $this; |
|
96 | - } |
|
95 | + return $this; |
|
96 | + } |
|
97 | 97 | |
98 | - /** |
|
99 | - * Magic __get function to dispatch a call to retrieve a private property |
|
100 | - * |
|
101 | - * @since 1.0.0 |
|
102 | - */ |
|
103 | - public function __get( $key ) { |
|
98 | + /** |
|
99 | + * Magic __get function to dispatch a call to retrieve a private property |
|
100 | + * |
|
101 | + * @since 1.0.0 |
|
102 | + */ |
|
103 | + public function __get( $key ) { |
|
104 | 104 | |
105 | - if( method_exists( $this, 'get_' . $key ) ) { |
|
105 | + if( method_exists( $this, 'get_' . $key ) ) { |
|
106 | 106 | |
107 | - return call_user_func( array( $this, 'get_' . $key ) ); |
|
107 | + return call_user_func( array( $this, 'get_' . $key ) ); |
|
108 | 108 | |
109 | - } else { |
|
109 | + } else { |
|
110 | 110 | |
111 | - return new WP_Error( 'wpinv-subscription-invalid-property', sprintf( __( 'Can\'t get property %s', 'invoicing' ), $key ) ); |
|
111 | + return new WP_Error( 'wpinv-subscription-invalid-property', sprintf( __( 'Can\'t get property %s', 'invoicing' ), $key ) ); |
|
112 | 112 | |
113 | - } |
|
113 | + } |
|
114 | 114 | |
115 | - } |
|
115 | + } |
|
116 | 116 | |
117 | - /** |
|
118 | - * Creates a subscription |
|
119 | - * |
|
120 | - * @since 1.0.0 |
|
121 | - * @param array $data Array of attributes for a subscription |
|
122 | - * @return mixed false if data isn't passed and class not instantiated for creation |
|
123 | - */ |
|
124 | - public function create( $data = array() ) { |
|
117 | + /** |
|
118 | + * Creates a subscription |
|
119 | + * |
|
120 | + * @since 1.0.0 |
|
121 | + * @param array $data Array of attributes for a subscription |
|
122 | + * @return mixed false if data isn't passed and class not instantiated for creation |
|
123 | + */ |
|
124 | + public function create( $data = array() ) { |
|
125 | 125 | |
126 | - if ( $this->id != 0 ) { |
|
127 | - return false; |
|
128 | - } |
|
126 | + if ( $this->id != 0 ) { |
|
127 | + return false; |
|
128 | + } |
|
129 | 129 | |
130 | - $defaults = array( |
|
131 | - 'customer_id' => 0, |
|
132 | - 'frequency' => '', |
|
133 | - 'period' => '', |
|
134 | - 'initial_amount' => '', |
|
135 | - 'recurring_amount' => '', |
|
136 | - 'bill_times' => 0, |
|
137 | - 'parent_payment_id' => 0, |
|
138 | - 'product_id' => 0, |
|
139 | - 'created' => '', |
|
140 | - 'expiration' => '', |
|
141 | - 'status' => '', |
|
142 | - 'profile_id' => '', |
|
143 | - ); |
|
130 | + $defaults = array( |
|
131 | + 'customer_id' => 0, |
|
132 | + 'frequency' => '', |
|
133 | + 'period' => '', |
|
134 | + 'initial_amount' => '', |
|
135 | + 'recurring_amount' => '', |
|
136 | + 'bill_times' => 0, |
|
137 | + 'parent_payment_id' => 0, |
|
138 | + 'product_id' => 0, |
|
139 | + 'created' => '', |
|
140 | + 'expiration' => '', |
|
141 | + 'status' => '', |
|
142 | + 'profile_id' => '', |
|
143 | + ); |
|
144 | 144 | |
145 | - $args = wp_parse_args( $data, $defaults ); |
|
145 | + $args = wp_parse_args( $data, $defaults ); |
|
146 | 146 | |
147 | - if( $args['expiration'] && strtotime( 'NOW', current_time( 'timestamp' ) ) > strtotime( $args['expiration'], current_time( 'timestamp' ) ) ) { |
|
147 | + if( $args['expiration'] && strtotime( 'NOW', current_time( 'timestamp' ) ) > strtotime( $args['expiration'], current_time( 'timestamp' ) ) ) { |
|
148 | 148 | |
149 | - if( 'active' == $args['status'] || 'trialling' == $args['status'] ) { |
|
149 | + if( 'active' == $args['status'] || 'trialling' == $args['status'] ) { |
|
150 | 150 | |
151 | - // Force an active subscription to expired if expiration date is in the past |
|
152 | - $args['status'] = 'expired'; |
|
151 | + // Force an active subscription to expired if expiration date is in the past |
|
152 | + $args['status'] = 'expired'; |
|
153 | 153 | |
154 | - } |
|
155 | - } |
|
154 | + } |
|
155 | + } |
|
156 | 156 | |
157 | - do_action( 'wpinv_subscription_pre_create', $args ); |
|
157 | + do_action( 'wpinv_subscription_pre_create', $args ); |
|
158 | 158 | |
159 | - $id = $this->subs_db->insert( $args, 'subscription' ); |
|
159 | + $id = $this->subs_db->insert( $args, 'subscription' ); |
|
160 | 160 | |
161 | - do_action( 'wpinv_subscription_post_create', $id, $args ); |
|
161 | + do_action( 'wpinv_subscription_post_create', $id, $args ); |
|
162 | 162 | |
163 | - return $this->setup_subscription( $id ); |
|
163 | + return $this->setup_subscription( $id ); |
|
164 | 164 | |
165 | - } |
|
165 | + } |
|
166 | 166 | |
167 | - /** |
|
168 | - * Updates a subscription |
|
169 | - * |
|
170 | - * @since 1.0.0 |
|
171 | - * @param array $args Array of fields to update |
|
172 | - * @return bool |
|
173 | - */ |
|
174 | - public function update( $args = array() ) { |
|
167 | + /** |
|
168 | + * Updates a subscription |
|
169 | + * |
|
170 | + * @since 1.0.0 |
|
171 | + * @param array $args Array of fields to update |
|
172 | + * @return bool |
|
173 | + */ |
|
174 | + public function update( $args = array() ) { |
|
175 | 175 | |
176 | - $ret = $this->subs_db->update( $this->id, $args ); |
|
176 | + $ret = $this->subs_db->update( $this->id, $args ); |
|
177 | 177 | |
178 | - do_action( 'wpinv_recurring_update_subscription', $this->id, $args, $this ); |
|
178 | + do_action( 'wpinv_recurring_update_subscription', $this->id, $args, $this ); |
|
179 | 179 | |
180 | - return $ret; |
|
180 | + return $ret; |
|
181 | 181 | |
182 | - } |
|
182 | + } |
|
183 | 183 | |
184 | - /** |
|
185 | - * Delete the subscription |
|
186 | - * |
|
187 | - * @since 1.0.0 |
|
188 | - * @return bool |
|
189 | - */ |
|
190 | - public function delete() { |
|
191 | - return $this->subs_db->delete( $this->id ); |
|
192 | - } |
|
184 | + /** |
|
185 | + * Delete the subscription |
|
186 | + * |
|
187 | + * @since 1.0.0 |
|
188 | + * @return bool |
|
189 | + */ |
|
190 | + public function delete() { |
|
191 | + return $this->subs_db->delete( $this->id ); |
|
192 | + } |
|
193 | 193 | |
194 | 194 | /** |
195 | 195 | * Retrieves the parent payment ID |
@@ -357,8 +357,8 @@ discard block |
||
357 | 357 | |
358 | 358 | $invoice = wpinv_get_invoice( $invoice->ID ); |
359 | 359 | |
360 | - // Send email notifications. |
|
361 | - wpinv_completed_invoice_notification( $invoice->ID ); |
|
360 | + // Send email notifications. |
|
361 | + wpinv_completed_invoice_notification( $invoice->ID ); |
|
362 | 362 | |
363 | 363 | do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
364 | 364 | do_action( 'wpinv_recurring_record_payment', $invoice->ID, $this->parent_payment_id, $args['amount'], $args['transaction_id'] ); |
@@ -369,185 +369,185 @@ discard block |
||
369 | 369 | return false; |
370 | 370 | } |
371 | 371 | |
372 | - /** |
|
373 | - * Retrieves the transaction ID from the subscription |
|
374 | - * |
|
375 | - * @since 1.0.0 |
|
376 | - * @return bool |
|
377 | - */ |
|
378 | - public function get_transaction_id() { |
|
372 | + /** |
|
373 | + * Retrieves the transaction ID from the subscription |
|
374 | + * |
|
375 | + * @since 1.0.0 |
|
376 | + * @return bool |
|
377 | + */ |
|
378 | + public function get_transaction_id() { |
|
379 | 379 | |
380 | - if( empty( $this->transaction_id ) ) { |
|
380 | + if( empty( $this->transaction_id ) ) { |
|
381 | 381 | |
382 | - $txn_id = wpinv_get_payment_transaction_id( $this->parent_payment_id ); |
|
382 | + $txn_id = wpinv_get_payment_transaction_id( $this->parent_payment_id ); |
|
383 | 383 | |
384 | - if( ! empty( $txn_id ) && (int) $this->parent_payment_id !== (int) $txn_id ) { |
|
385 | - $this->set_transaction_id( $txn_id ); |
|
386 | - } |
|
384 | + if( ! empty( $txn_id ) && (int) $this->parent_payment_id !== (int) $txn_id ) { |
|
385 | + $this->set_transaction_id( $txn_id ); |
|
386 | + } |
|
387 | 387 | |
388 | - } |
|
388 | + } |
|
389 | 389 | |
390 | - return $this->transaction_id; |
|
390 | + return $this->transaction_id; |
|
391 | 391 | |
392 | - } |
|
392 | + } |
|
393 | 393 | |
394 | - /** |
|
395 | - * Stores the transaction ID for the subscription purchase |
|
396 | - * |
|
397 | - * @since 1.0.0.4 |
|
398 | - * @return bool |
|
399 | - */ |
|
400 | - public function set_transaction_id( $txn_id = '' ) { |
|
401 | - $this->update( array( 'transaction_id' => $txn_id ) ); |
|
402 | - $this->transaction_id = $txn_id; |
|
403 | - } |
|
394 | + /** |
|
395 | + * Stores the transaction ID for the subscription purchase |
|
396 | + * |
|
397 | + * @since 1.0.0.4 |
|
398 | + * @return bool |
|
399 | + */ |
|
400 | + public function set_transaction_id( $txn_id = '' ) { |
|
401 | + $this->update( array( 'transaction_id' => $txn_id ) ); |
|
402 | + $this->transaction_id = $txn_id; |
|
403 | + } |
|
404 | 404 | |
405 | - /** |
|
406 | - * Renews a subscription |
|
407 | - * |
|
408 | - * @since 1.0.0 |
|
409 | - * @return bool |
|
410 | - */ |
|
411 | - public function renew() { |
|
405 | + /** |
|
406 | + * Renews a subscription |
|
407 | + * |
|
408 | + * @since 1.0.0 |
|
409 | + * @return bool |
|
410 | + */ |
|
411 | + public function renew() { |
|
412 | 412 | |
413 | - $expires = $this->get_expiration_time(); |
|
413 | + $expires = $this->get_expiration_time(); |
|
414 | 414 | |
415 | 415 | |
416 | - // Determine what date to use as the start for the new expiration calculation |
|
417 | - if( $expires > current_time( 'timestamp' ) && $this->is_active() ) { |
|
416 | + // Determine what date to use as the start for the new expiration calculation |
|
417 | + if( $expires > current_time( 'timestamp' ) && $this->is_active() ) { |
|
418 | 418 | |
419 | - $base_date = $expires; |
|
419 | + $base_date = $expires; |
|
420 | 420 | |
421 | - } else { |
|
421 | + } else { |
|
422 | 422 | |
423 | - $base_date = current_time( 'timestamp' ); |
|
423 | + $base_date = current_time( 'timestamp' ); |
|
424 | 424 | |
425 | - } |
|
425 | + } |
|
426 | 426 | |
427 | - $last_day = wpinv_cal_days_in_month( CAL_GREGORIAN, date( 'n', $base_date ), date( 'Y', $base_date ) ); |
|
427 | + $last_day = wpinv_cal_days_in_month( CAL_GREGORIAN, date( 'n', $base_date ), date( 'Y', $base_date ) ); |
|
428 | 428 | |
429 | 429 | |
430 | - $frequency = isset($this->frequency) ? $this->frequency : 1; |
|
431 | - $expiration = date( 'Y-m-d H:i:s', strtotime( '+' . $frequency . ' ' . $this->period . ' 23:59:59', $base_date ) ); |
|
430 | + $frequency = isset($this->frequency) ? $this->frequency : 1; |
|
431 | + $expiration = date( 'Y-m-d H:i:s', strtotime( '+' . $frequency . ' ' . $this->period . ' 23:59:59', $base_date ) ); |
|
432 | 432 | |
433 | - if( date( 'j', $base_date ) == $last_day && 'day' != $this->period ) { |
|
434 | - $expiration = date( 'Y-m-d H:i:s', strtotime( $expiration . ' +2 days' ) ); |
|
435 | - } |
|
433 | + if( date( 'j', $base_date ) == $last_day && 'day' != $this->period ) { |
|
434 | + $expiration = date( 'Y-m-d H:i:s', strtotime( $expiration . ' +2 days' ) ); |
|
435 | + } |
|
436 | 436 | |
437 | - $expiration = apply_filters( 'wpinv_subscription_renewal_expiration', $expiration, $this->id, $this ); |
|
437 | + $expiration = apply_filters( 'wpinv_subscription_renewal_expiration', $expiration, $this->id, $this ); |
|
438 | 438 | |
439 | - do_action( 'wpinv_subscription_pre_renew', $this->id, $expiration, $this ); |
|
439 | + do_action( 'wpinv_subscription_pre_renew', $this->id, $expiration, $this ); |
|
440 | 440 | |
441 | - $this->status = 'active'; |
|
442 | - $times_billed = $this->get_times_billed(); |
|
441 | + $this->status = 'active'; |
|
442 | + $times_billed = $this->get_times_billed(); |
|
443 | 443 | |
444 | - // Complete subscription if applicable |
|
445 | - if ( $this->bill_times > 0 && $times_billed >= $this->bill_times ) { |
|
446 | - $this->complete(); |
|
447 | - $this->status = 'completed'; |
|
448 | - } |
|
444 | + // Complete subscription if applicable |
|
445 | + if ( $this->bill_times > 0 && $times_billed >= $this->bill_times ) { |
|
446 | + $this->complete(); |
|
447 | + $this->status = 'completed'; |
|
448 | + } |
|
449 | 449 | |
450 | - $args = array( |
|
451 | - 'expiration' => $expiration, |
|
452 | - 'status' => $this->status, |
|
453 | - ); |
|
450 | + $args = array( |
|
451 | + 'expiration' => $expiration, |
|
452 | + 'status' => $this->status, |
|
453 | + ); |
|
454 | 454 | |
455 | 455 | $this->subs_db->update( $this->id, $args ); |
456 | 456 | |
457 | - do_action( 'wpinv_subscription_post_renew', $this->id, $expiration, $this ); |
|
458 | - do_action( 'wpinv_recurring_set_subscription_status', $this->id, $this->status, $this ); |
|
457 | + do_action( 'wpinv_subscription_post_renew', $this->id, $expiration, $this ); |
|
458 | + do_action( 'wpinv_recurring_set_subscription_status', $this->id, $this->status, $this ); |
|
459 | 459 | |
460 | - } |
|
460 | + } |
|
461 | 461 | |
462 | - /** |
|
463 | - * Marks a subscription as completed |
|
464 | - * |
|
465 | - * Subscription is completed when the number of payments matches the billing_times field |
|
466 | - * |
|
467 | - * @since 1.0.0 |
|
468 | - * @return void |
|
469 | - */ |
|
470 | - public function complete() { |
|
462 | + /** |
|
463 | + * Marks a subscription as completed |
|
464 | + * |
|
465 | + * Subscription is completed when the number of payments matches the billing_times field |
|
466 | + * |
|
467 | + * @since 1.0.0 |
|
468 | + * @return void |
|
469 | + */ |
|
470 | + public function complete() { |
|
471 | 471 | |
472 | - // Only mark a subscription as complete if it's not already cancelled. |
|
473 | - if ( 'cancelled' === $this->status ) { |
|
474 | - return; |
|
475 | - } |
|
472 | + // Only mark a subscription as complete if it's not already cancelled. |
|
473 | + if ( 'cancelled' === $this->status ) { |
|
474 | + return; |
|
475 | + } |
|
476 | 476 | |
477 | - $args = array( |
|
478 | - 'status' => 'completed' |
|
479 | - ); |
|
477 | + $args = array( |
|
478 | + 'status' => 'completed' |
|
479 | + ); |
|
480 | 480 | |
481 | - if( $this->subs_db->update( $this->id, $args ) ) { |
|
481 | + if( $this->subs_db->update( $this->id, $args ) ) { |
|
482 | 482 | |
483 | - $this->status = 'completed'; |
|
483 | + $this->status = 'completed'; |
|
484 | 484 | |
485 | - do_action( 'wpinv_subscription_completed', $this->id, $this ); |
|
485 | + do_action( 'wpinv_subscription_completed', $this->id, $this ); |
|
486 | 486 | |
487 | - } |
|
487 | + } |
|
488 | 488 | |
489 | - } |
|
489 | + } |
|
490 | 490 | |
491 | - /** |
|
492 | - * Marks a subscription as expired |
|
493 | - * |
|
494 | - * Subscription is completed when the billing times is reached |
|
495 | - * |
|
496 | - * @since 1.0.0 |
|
497 | - * @param $check_expiration bool True if expiration date should be checked with merchant processor before expiring |
|
498 | - * @return void |
|
499 | - */ |
|
500 | - public function expire( $check_expiration = false ) { |
|
491 | + /** |
|
492 | + * Marks a subscription as expired |
|
493 | + * |
|
494 | + * Subscription is completed when the billing times is reached |
|
495 | + * |
|
496 | + * @since 1.0.0 |
|
497 | + * @param $check_expiration bool True if expiration date should be checked with merchant processor before expiring |
|
498 | + * @return void |
|
499 | + */ |
|
500 | + public function expire( $check_expiration = false ) { |
|
501 | 501 | |
502 | - $expiration = $this->expiration; |
|
502 | + $expiration = $this->expiration; |
|
503 | 503 | |
504 | - if( $check_expiration ) { |
|
504 | + if( $check_expiration ) { |
|
505 | 505 | |
506 | - // check_expiration() updates $this->expiration so compare to $expiration above |
|
506 | + // check_expiration() updates $this->expiration so compare to $expiration above |
|
507 | 507 | |
508 | - if( $expiration < $this->get_expiration() && current_time( 'timestamp' ) < $this->get_expiration_time() ) { |
|
508 | + if( $expiration < $this->get_expiration() && current_time( 'timestamp' ) < $this->get_expiration_time() ) { |
|
509 | 509 | |
510 | - return false; // Do not mark as expired since real expiration date is in the future |
|
511 | - } |
|
510 | + return false; // Do not mark as expired since real expiration date is in the future |
|
511 | + } |
|
512 | 512 | |
513 | - } |
|
513 | + } |
|
514 | 514 | |
515 | - $args = array( |
|
516 | - 'status' => 'expired' |
|
517 | - ); |
|
515 | + $args = array( |
|
516 | + 'status' => 'expired' |
|
517 | + ); |
|
518 | 518 | |
519 | - if( $this->subs_db->update( $this->id, $args ) ) { |
|
519 | + if( $this->subs_db->update( $this->id, $args ) ) { |
|
520 | 520 | |
521 | - $this->status = 'expired'; |
|
521 | + $this->status = 'expired'; |
|
522 | 522 | |
523 | - do_action( 'wpinv_subscription_expired', $this->id, $this ); |
|
523 | + do_action( 'wpinv_subscription_expired', $this->id, $this ); |
|
524 | 524 | |
525 | - } |
|
525 | + } |
|
526 | 526 | |
527 | - } |
|
527 | + } |
|
528 | 528 | |
529 | - /** |
|
530 | - * Marks a subscription as failing |
|
531 | - * |
|
532 | - * @since 2.4.2 |
|
533 | - * @return void |
|
534 | - */ |
|
535 | - public function failing() { |
|
529 | + /** |
|
530 | + * Marks a subscription as failing |
|
531 | + * |
|
532 | + * @since 2.4.2 |
|
533 | + * @return void |
|
534 | + */ |
|
535 | + public function failing() { |
|
536 | 536 | |
537 | - $args = array( |
|
538 | - 'status' => 'failing' |
|
539 | - ); |
|
537 | + $args = array( |
|
538 | + 'status' => 'failing' |
|
539 | + ); |
|
540 | 540 | |
541 | - if( $this->subs_db->update( $this->id, $args ) ) { |
|
541 | + if( $this->subs_db->update( $this->id, $args ) ) { |
|
542 | 542 | |
543 | - $this->status = 'failing'; |
|
543 | + $this->status = 'failing'; |
|
544 | 544 | |
545 | - do_action( 'wpinv_subscription_failing', $this->id, $this ); |
|
545 | + do_action( 'wpinv_subscription_failing', $this->id, $this ); |
|
546 | 546 | |
547 | 547 | |
548 | - } |
|
548 | + } |
|
549 | 549 | |
550 | - } |
|
550 | + } |
|
551 | 551 | |
552 | 552 | /** |
553 | 553 | * Marks a subscription as cancelled |
@@ -581,22 +581,22 @@ discard block |
||
581 | 581 | } |
582 | 582 | } |
583 | 583 | |
584 | - /** |
|
585 | - * Determines if subscription can be cancelled |
|
586 | - * |
|
587 | - * This method is filtered by payment gateways in order to return true on subscriptions |
|
588 | - * that can be cancelled with a profile ID through the merchant processor |
|
589 | - * |
|
590 | - * @since 1.0.0 |
|
591 | - * @return bool |
|
592 | - */ |
|
593 | - public function can_cancel() { |
|
584 | + /** |
|
585 | + * Determines if subscription can be cancelled |
|
586 | + * |
|
587 | + * This method is filtered by payment gateways in order to return true on subscriptions |
|
588 | + * that can be cancelled with a profile ID through the merchant processor |
|
589 | + * |
|
590 | + * @since 1.0.0 |
|
591 | + * @return bool |
|
592 | + */ |
|
593 | + public function can_cancel() { |
|
594 | 594 | $ret = false; |
595 | - if( $this->gateway === 'manual' || in_array( $this->status, $this->get_cancellable_statuses() ) ) { |
|
595 | + if( $this->gateway === 'manual' || in_array( $this->status, $this->get_cancellable_statuses() ) ) { |
|
596 | 596 | $ret = true; |
597 | 597 | } |
598 | - return apply_filters( 'wpinv_subscription_can_cancel', $ret, $this ); |
|
599 | - } |
|
598 | + return apply_filters( 'wpinv_subscription_can_cancel', $ret, $this ); |
|
599 | + } |
|
600 | 600 | |
601 | 601 | /** |
602 | 602 | * Returns an array of subscription statuses that can be cancelled |
@@ -609,197 +609,197 @@ discard block |
||
609 | 609 | return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) ); |
610 | 610 | } |
611 | 611 | |
612 | - /** |
|
613 | - * Retrieves the URL to cancel subscription |
|
614 | - * |
|
615 | - * @since 1.0.0 |
|
616 | - * @return string |
|
617 | - */ |
|
618 | - public function get_cancel_url() { |
|
612 | + /** |
|
613 | + * Retrieves the URL to cancel subscription |
|
614 | + * |
|
615 | + * @since 1.0.0 |
|
616 | + * @return string |
|
617 | + */ |
|
618 | + public function get_cancel_url() { |
|
619 | 619 | |
620 | - $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-cancel' ); |
|
620 | + $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-cancel' ); |
|
621 | 621 | |
622 | - return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
623 | - } |
|
622 | + return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
623 | + } |
|
624 | 624 | |
625 | - /** |
|
626 | - * Determines if subscription can be manually renewed |
|
627 | - * |
|
628 | - * This method is filtered by payment gateways in order to return true on subscriptions |
|
629 | - * that can be renewed manually |
|
630 | - * |
|
631 | - * @since 2.5 |
|
632 | - * @return bool |
|
633 | - */ |
|
634 | - public function can_renew() { |
|
625 | + /** |
|
626 | + * Determines if subscription can be manually renewed |
|
627 | + * |
|
628 | + * This method is filtered by payment gateways in order to return true on subscriptions |
|
629 | + * that can be renewed manually |
|
630 | + * |
|
631 | + * @since 2.5 |
|
632 | + * @return bool |
|
633 | + */ |
|
634 | + public function can_renew() { |
|
635 | 635 | |
636 | - return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
637 | - } |
|
638 | - |
|
639 | - /** |
|
640 | - * Retrieves the URL to renew a subscription |
|
641 | - * |
|
642 | - * @since 2.5 |
|
643 | - * @return string |
|
644 | - */ |
|
645 | - public function get_renew_url() { |
|
646 | - |
|
647 | - $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'renew_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-renew' ); |
|
648 | - |
|
649 | - return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
650 | - } |
|
651 | - |
|
652 | - /** |
|
653 | - * Determines if subscription can have their payment method updated |
|
654 | - * |
|
655 | - * @since 1.0.0 |
|
656 | - * @return bool |
|
657 | - */ |
|
658 | - public function can_update() { |
|
659 | - return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
660 | - } |
|
661 | - |
|
662 | - /** |
|
663 | - * Retrieves the URL to update subscription |
|
664 | - * |
|
665 | - * @since 1.0.0 |
|
666 | - * @return void |
|
667 | - */ |
|
668 | - public function get_update_url() { |
|
669 | - |
|
670 | - $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->id ) ); |
|
671 | - |
|
672 | - return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
673 | - } |
|
674 | - |
|
675 | - /** |
|
676 | - * Determines if subscription is active |
|
677 | - * |
|
678 | - * @since 1.0.0 |
|
679 | - * @return void |
|
680 | - */ |
|
681 | - public function is_active() { |
|
682 | - |
|
683 | - $ret = false; |
|
684 | - |
|
685 | - if( ! $this->is_expired() && ( $this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling' ) ) { |
|
686 | - $ret = true; |
|
687 | - } |
|
688 | - |
|
689 | - return apply_filters( 'wpinv_subscription_is_active', $ret, $this->id, $this ); |
|
690 | - |
|
691 | - } |
|
692 | - |
|
693 | - /** |
|
694 | - * Determines if subscription is expired |
|
695 | - * |
|
696 | - * @since 1.0.0 |
|
697 | - * @return void |
|
698 | - */ |
|
699 | - public function is_expired() { |
|
700 | - |
|
701 | - $ret = false; |
|
702 | - |
|
703 | - if ( $this->status == 'expired' ) { |
|
704 | - |
|
705 | - $ret = true; |
|
706 | - |
|
707 | - } elseif( 'active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling' ) { |
|
708 | - |
|
709 | - $ret = false; |
|
710 | - $expiration = $this->get_expiration_time(); |
|
711 | - |
|
712 | - if( $expiration && strtotime( 'NOW', current_time( 'timestamp' ) ) > $expiration ) { |
|
713 | - $ret = true; |
|
714 | - |
|
715 | - if ( 'active' === $this->status || $this->status == 'trialling' ) { |
|
716 | - $this->expire(); |
|
717 | - } |
|
718 | - } |
|
719 | - |
|
720 | - } |
|
721 | - |
|
722 | - return apply_filters( 'wpinv_subscription_is_expired', $ret, $this->id, $this ); |
|
723 | - |
|
724 | - } |
|
725 | - |
|
726 | - /** |
|
727 | - * Retrieves the expiration date |
|
728 | - * |
|
729 | - * @since 1.0.0 |
|
730 | - * @return string |
|
731 | - */ |
|
732 | - public function get_expiration() { |
|
733 | - return $this->expiration; |
|
734 | - } |
|
735 | - |
|
736 | - /** |
|
737 | - * Retrieves the expiration date in a timestamp |
|
738 | - * |
|
739 | - * @since 1.0.0 |
|
740 | - * @return int |
|
741 | - */ |
|
742 | - public function get_expiration_time() { |
|
743 | - return strtotime( $this->expiration, current_time( 'timestamp' ) ); |
|
744 | - } |
|
745 | - |
|
746 | - /** |
|
747 | - * Retrieves the subscription status |
|
748 | - * |
|
749 | - * @since 1.0.0 |
|
750 | - * @return int |
|
751 | - */ |
|
752 | - public function get_status() { |
|
753 | - |
|
754 | - // Monitor for page load delays on pages with large subscription lists (IE: Subscriptions table in admin) |
|
755 | - $this->is_expired(); |
|
756 | - return $this->status; |
|
757 | - } |
|
758 | - |
|
759 | - /** |
|
760 | - * Retrieves the subscription status label |
|
761 | - * |
|
762 | - * @since 1.0.0 |
|
763 | - * @return int |
|
764 | - */ |
|
765 | - public function get_status_label() { |
|
766 | - |
|
767 | - switch( $this->get_status() ) { |
|
768 | - case 'active' : |
|
769 | - $status = __( 'Active', 'invoicing' ); |
|
770 | - break; |
|
771 | - |
|
772 | - case 'cancelled' : |
|
773 | - $status = __( 'Cancelled', 'invoicing' ); |
|
774 | - break; |
|
775 | - |
|
776 | - case 'expired' : |
|
777 | - $status = __( 'Expired', 'invoicing' ); |
|
778 | - break; |
|
779 | - |
|
780 | - case 'pending' : |
|
781 | - $status = __( 'Pending', 'invoicing' ); |
|
782 | - break; |
|
783 | - |
|
784 | - case 'failing' : |
|
785 | - $status = __( 'Failing', 'invoicing' ); |
|
786 | - break; |
|
787 | - |
|
788 | - case 'trialling' : |
|
789 | - $status = __( 'Trialling', 'invoicing' ); |
|
790 | - break; |
|
791 | - |
|
792 | - case 'completed' : |
|
793 | - $status = __( 'Completed', 'invoicing' ); |
|
794 | - break; |
|
795 | - |
|
796 | - default: |
|
797 | - $status = ucfirst( $this->get_status() ); |
|
798 | - break; |
|
799 | - } |
|
800 | - |
|
801 | - return $status; |
|
802 | - } |
|
636 | + return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
637 | + } |
|
638 | + |
|
639 | + /** |
|
640 | + * Retrieves the URL to renew a subscription |
|
641 | + * |
|
642 | + * @since 2.5 |
|
643 | + * @return string |
|
644 | + */ |
|
645 | + public function get_renew_url() { |
|
646 | + |
|
647 | + $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'renew_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-renew' ); |
|
648 | + |
|
649 | + return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
650 | + } |
|
651 | + |
|
652 | + /** |
|
653 | + * Determines if subscription can have their payment method updated |
|
654 | + * |
|
655 | + * @since 1.0.0 |
|
656 | + * @return bool |
|
657 | + */ |
|
658 | + public function can_update() { |
|
659 | + return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
660 | + } |
|
661 | + |
|
662 | + /** |
|
663 | + * Retrieves the URL to update subscription |
|
664 | + * |
|
665 | + * @since 1.0.0 |
|
666 | + * @return void |
|
667 | + */ |
|
668 | + public function get_update_url() { |
|
669 | + |
|
670 | + $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->id ) ); |
|
671 | + |
|
672 | + return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
673 | + } |
|
674 | + |
|
675 | + /** |
|
676 | + * Determines if subscription is active |
|
677 | + * |
|
678 | + * @since 1.0.0 |
|
679 | + * @return void |
|
680 | + */ |
|
681 | + public function is_active() { |
|
682 | + |
|
683 | + $ret = false; |
|
684 | + |
|
685 | + if( ! $this->is_expired() && ( $this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling' ) ) { |
|
686 | + $ret = true; |
|
687 | + } |
|
688 | + |
|
689 | + return apply_filters( 'wpinv_subscription_is_active', $ret, $this->id, $this ); |
|
690 | + |
|
691 | + } |
|
692 | + |
|
693 | + /** |
|
694 | + * Determines if subscription is expired |
|
695 | + * |
|
696 | + * @since 1.0.0 |
|
697 | + * @return void |
|
698 | + */ |
|
699 | + public function is_expired() { |
|
700 | + |
|
701 | + $ret = false; |
|
702 | + |
|
703 | + if ( $this->status == 'expired' ) { |
|
704 | + |
|
705 | + $ret = true; |
|
706 | + |
|
707 | + } elseif( 'active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling' ) { |
|
708 | + |
|
709 | + $ret = false; |
|
710 | + $expiration = $this->get_expiration_time(); |
|
711 | + |
|
712 | + if( $expiration && strtotime( 'NOW', current_time( 'timestamp' ) ) > $expiration ) { |
|
713 | + $ret = true; |
|
714 | + |
|
715 | + if ( 'active' === $this->status || $this->status == 'trialling' ) { |
|
716 | + $this->expire(); |
|
717 | + } |
|
718 | + } |
|
719 | + |
|
720 | + } |
|
721 | + |
|
722 | + return apply_filters( 'wpinv_subscription_is_expired', $ret, $this->id, $this ); |
|
723 | + |
|
724 | + } |
|
725 | + |
|
726 | + /** |
|
727 | + * Retrieves the expiration date |
|
728 | + * |
|
729 | + * @since 1.0.0 |
|
730 | + * @return string |
|
731 | + */ |
|
732 | + public function get_expiration() { |
|
733 | + return $this->expiration; |
|
734 | + } |
|
735 | + |
|
736 | + /** |
|
737 | + * Retrieves the expiration date in a timestamp |
|
738 | + * |
|
739 | + * @since 1.0.0 |
|
740 | + * @return int |
|
741 | + */ |
|
742 | + public function get_expiration_time() { |
|
743 | + return strtotime( $this->expiration, current_time( 'timestamp' ) ); |
|
744 | + } |
|
745 | + |
|
746 | + /** |
|
747 | + * Retrieves the subscription status |
|
748 | + * |
|
749 | + * @since 1.0.0 |
|
750 | + * @return int |
|
751 | + */ |
|
752 | + public function get_status() { |
|
753 | + |
|
754 | + // Monitor for page load delays on pages with large subscription lists (IE: Subscriptions table in admin) |
|
755 | + $this->is_expired(); |
|
756 | + return $this->status; |
|
757 | + } |
|
758 | + |
|
759 | + /** |
|
760 | + * Retrieves the subscription status label |
|
761 | + * |
|
762 | + * @since 1.0.0 |
|
763 | + * @return int |
|
764 | + */ |
|
765 | + public function get_status_label() { |
|
766 | + |
|
767 | + switch( $this->get_status() ) { |
|
768 | + case 'active' : |
|
769 | + $status = __( 'Active', 'invoicing' ); |
|
770 | + break; |
|
771 | + |
|
772 | + case 'cancelled' : |
|
773 | + $status = __( 'Cancelled', 'invoicing' ); |
|
774 | + break; |
|
775 | + |
|
776 | + case 'expired' : |
|
777 | + $status = __( 'Expired', 'invoicing' ); |
|
778 | + break; |
|
779 | + |
|
780 | + case 'pending' : |
|
781 | + $status = __( 'Pending', 'invoicing' ); |
|
782 | + break; |
|
783 | + |
|
784 | + case 'failing' : |
|
785 | + $status = __( 'Failing', 'invoicing' ); |
|
786 | + break; |
|
787 | + |
|
788 | + case 'trialling' : |
|
789 | + $status = __( 'Trialling', 'invoicing' ); |
|
790 | + break; |
|
791 | + |
|
792 | + case 'completed' : |
|
793 | + $status = __( 'Completed', 'invoicing' ); |
|
794 | + break; |
|
795 | + |
|
796 | + default: |
|
797 | + $status = ucfirst( $this->get_status() ); |
|
798 | + break; |
|
799 | + } |
|
800 | + |
|
801 | + return $status; |
|
802 | + } |
|
803 | 803 | |
804 | 804 | /** |
805 | 805 | * Retrieves the subscription status label |
@@ -1,7 +1,7 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | |
3 | 3 | // Exit if accessed directly |
4 | -if ( ! defined( 'ABSPATH' ) ) { |
|
4 | +if (!defined('ABSPATH')) { |
|
5 | 5 | exit; |
6 | 6 | } |
7 | 7 | |
@@ -38,15 +38,15 @@ discard block |
||
38 | 38 | * @since 1.0.0 |
39 | 39 | * @return void |
40 | 40 | */ |
41 | - function __construct( $_id_or_object = 0, $_by_profile_id = false ) { |
|
41 | + function __construct($_id_or_object = 0, $_by_profile_id = false) { |
|
42 | 42 | |
43 | 43 | $this->subs_db = new WPInv_Subscriptions_DB; |
44 | 44 | |
45 | - if( $_by_profile_id ) { |
|
45 | + if ($_by_profile_id) { |
|
46 | 46 | |
47 | - $_sub = $this->subs_db->get_by( 'profile_id', $_id_or_object ); |
|
47 | + $_sub = $this->subs_db->get_by('profile_id', $_id_or_object); |
|
48 | 48 | |
49 | - if( empty( $_sub ) ) { |
|
49 | + if (empty($_sub)) { |
|
50 | 50 | return false; |
51 | 51 | } |
52 | 52 | |
@@ -54,7 +54,7 @@ discard block |
||
54 | 54 | |
55 | 55 | } |
56 | 56 | |
57 | - return $this->setup_subscription( $_id_or_object ); |
|
57 | + return $this->setup_subscription($_id_or_object); |
|
58 | 58 | } |
59 | 59 | |
60 | 60 | /** |
@@ -63,34 +63,34 @@ discard block |
||
63 | 63 | * @since 1.0.0 |
64 | 64 | * @return void |
65 | 65 | */ |
66 | - private function setup_subscription( $id_or_object = 0 ) { |
|
66 | + private function setup_subscription($id_or_object = 0) { |
|
67 | 67 | |
68 | - if( empty( $id_or_object ) ) { |
|
68 | + if (empty($id_or_object)) { |
|
69 | 69 | return false; |
70 | 70 | } |
71 | 71 | |
72 | - if( is_numeric( $id_or_object ) ) { |
|
72 | + if (is_numeric($id_or_object)) { |
|
73 | 73 | |
74 | - $sub = $this->subs_db->get( $id_or_object ); |
|
74 | + $sub = $this->subs_db->get($id_or_object); |
|
75 | 75 | |
76 | - } elseif( is_object( $id_or_object ) ) { |
|
76 | + } elseif (is_object($id_or_object)) { |
|
77 | 77 | |
78 | 78 | $sub = $id_or_object; |
79 | 79 | |
80 | 80 | } |
81 | 81 | |
82 | - if( empty( $sub ) ) { |
|
82 | + if (empty($sub)) { |
|
83 | 83 | return false; |
84 | 84 | } |
85 | 85 | |
86 | - foreach( $sub as $key => $value ) { |
|
86 | + foreach ($sub as $key => $value) { |
|
87 | 87 | $this->$key = $value; |
88 | 88 | } |
89 | 89 | |
90 | - $this->customer = get_userdata( $this->customer_id ); |
|
91 | - $this->gateway = wpinv_get_payment_gateway( $this->parent_payment_id ); |
|
90 | + $this->customer = get_userdata($this->customer_id); |
|
91 | + $this->gateway = wpinv_get_payment_gateway($this->parent_payment_id); |
|
92 | 92 | |
93 | - do_action( 'wpinv_recurring_setup_subscription', $this ); |
|
93 | + do_action('wpinv_recurring_setup_subscription', $this); |
|
94 | 94 | |
95 | 95 | return $this; |
96 | 96 | } |
@@ -100,15 +100,15 @@ discard block |
||
100 | 100 | * |
101 | 101 | * @since 1.0.0 |
102 | 102 | */ |
103 | - public function __get( $key ) { |
|
103 | + public function __get($key) { |
|
104 | 104 | |
105 | - if( method_exists( $this, 'get_' . $key ) ) { |
|
105 | + if (method_exists($this, 'get_' . $key)) { |
|
106 | 106 | |
107 | - return call_user_func( array( $this, 'get_' . $key ) ); |
|
107 | + return call_user_func(array($this, 'get_' . $key)); |
|
108 | 108 | |
109 | 109 | } else { |
110 | 110 | |
111 | - return new WP_Error( 'wpinv-subscription-invalid-property', sprintf( __( 'Can\'t get property %s', 'invoicing' ), $key ) ); |
|
111 | + return new WP_Error('wpinv-subscription-invalid-property', sprintf(__('Can\'t get property %s', 'invoicing'), $key)); |
|
112 | 112 | |
113 | 113 | } |
114 | 114 | |
@@ -121,9 +121,9 @@ discard block |
||
121 | 121 | * @param array $data Array of attributes for a subscription |
122 | 122 | * @return mixed false if data isn't passed and class not instantiated for creation |
123 | 123 | */ |
124 | - public function create( $data = array() ) { |
|
124 | + public function create($data = array()) { |
|
125 | 125 | |
126 | - if ( $this->id != 0 ) { |
|
126 | + if ($this->id != 0) { |
|
127 | 127 | return false; |
128 | 128 | } |
129 | 129 | |
@@ -142,11 +142,11 @@ discard block |
||
142 | 142 | 'profile_id' => '', |
143 | 143 | ); |
144 | 144 | |
145 | - $args = wp_parse_args( $data, $defaults ); |
|
145 | + $args = wp_parse_args($data, $defaults); |
|
146 | 146 | |
147 | - if( $args['expiration'] && strtotime( 'NOW', current_time( 'timestamp' ) ) > strtotime( $args['expiration'], current_time( 'timestamp' ) ) ) { |
|
147 | + if ($args['expiration'] && strtotime('NOW', current_time('timestamp')) > strtotime($args['expiration'], current_time('timestamp'))) { |
|
148 | 148 | |
149 | - if( 'active' == $args['status'] || 'trialling' == $args['status'] ) { |
|
149 | + if ('active' == $args['status'] || 'trialling' == $args['status']) { |
|
150 | 150 | |
151 | 151 | // Force an active subscription to expired if expiration date is in the past |
152 | 152 | $args['status'] = 'expired'; |
@@ -154,13 +154,13 @@ discard block |
||
154 | 154 | } |
155 | 155 | } |
156 | 156 | |
157 | - do_action( 'wpinv_subscription_pre_create', $args ); |
|
157 | + do_action('wpinv_subscription_pre_create', $args); |
|
158 | 158 | |
159 | - $id = $this->subs_db->insert( $args, 'subscription' ); |
|
159 | + $id = $this->subs_db->insert($args, 'subscription'); |
|
160 | 160 | |
161 | - do_action( 'wpinv_subscription_post_create', $id, $args ); |
|
161 | + do_action('wpinv_subscription_post_create', $id, $args); |
|
162 | 162 | |
163 | - return $this->setup_subscription( $id ); |
|
163 | + return $this->setup_subscription($id); |
|
164 | 164 | |
165 | 165 | } |
166 | 166 | |
@@ -171,11 +171,11 @@ discard block |
||
171 | 171 | * @param array $args Array of fields to update |
172 | 172 | * @return bool |
173 | 173 | */ |
174 | - public function update( $args = array() ) { |
|
174 | + public function update($args = array()) { |
|
175 | 175 | |
176 | - $ret = $this->subs_db->update( $this->id, $args ); |
|
176 | + $ret = $this->subs_db->update($this->id, $args); |
|
177 | 177 | |
178 | - do_action( 'wpinv_recurring_update_subscription', $this->id, $args, $this ); |
|
178 | + do_action('wpinv_recurring_update_subscription', $this->id, $args, $this); |
|
179 | 179 | |
180 | 180 | return $ret; |
181 | 181 | |
@@ -188,7 +188,7 @@ discard block |
||
188 | 188 | * @return bool |
189 | 189 | */ |
190 | 190 | public function delete() { |
191 | - return $this->subs_db->delete( $this->id ); |
|
191 | + return $this->subs_db->delete($this->id); |
|
192 | 192 | } |
193 | 193 | |
194 | 194 | /** |
@@ -208,14 +208,14 @@ discard block |
||
208 | 208 | * @return array |
209 | 209 | */ |
210 | 210 | public function get_child_payments() { |
211 | - $payments = get_posts( array( |
|
211 | + $payments = get_posts(array( |
|
212 | 212 | 'post_parent' => (int) $this->parent_payment_id, |
213 | 213 | 'posts_per_page' => '999', |
214 | - 'post_status' => array( 'publish', 'wpi-processing', 'wpi-renewal' ), |
|
214 | + 'post_status' => array('publish', 'wpi-processing', 'wpi-renewal'), |
|
215 | 215 | 'orderby' => 'ID', |
216 | 216 | 'order' => 'DESC', |
217 | 217 | 'post_type' => 'wpi_invoice' |
218 | - ) ); |
|
218 | + )); |
|
219 | 219 | |
220 | 220 | return $payments; |
221 | 221 | } |
@@ -228,9 +228,9 @@ discard block |
||
228 | 228 | */ |
229 | 229 | public function get_total_payments() { |
230 | 230 | $child_payments = $this->get_child_payments(); |
231 | - $total_payments = !empty( $child_payments ) ? count( $child_payments ) : 0; |
|
231 | + $total_payments = !empty($child_payments) ? count($child_payments) : 0; |
|
232 | 232 | |
233 | - if ( 'pending' != $this->status ) { |
|
233 | + if ('pending' != $this->status) { |
|
234 | 234 | $total_payments++; |
235 | 235 | } |
236 | 236 | |
@@ -244,9 +244,9 @@ discard block |
||
244 | 244 | * @return int |
245 | 245 | */ |
246 | 246 | public function get_times_billed() { |
247 | - $times_billed = (int)$this->get_total_payments(); |
|
247 | + $times_billed = (int) $this->get_total_payments(); |
|
248 | 248 | |
249 | - if ( ! empty( $this->trial_period ) && $times_billed > 0 ) { |
|
249 | + if (!empty($this->trial_period) && $times_billed > 0) { |
|
250 | 250 | $times_billed--; |
251 | 251 | } |
252 | 252 | |
@@ -260,51 +260,51 @@ discard block |
||
260 | 260 | * @param array $args Array of values for the payment, including amount and transaction ID |
261 | 261 | * @return bool |
262 | 262 | */ |
263 | - public function add_payment( $args = array() ) { |
|
264 | - if ( ! $this->parent_payment_id ) { |
|
263 | + public function add_payment($args = array()) { |
|
264 | + if (!$this->parent_payment_id) { |
|
265 | 265 | return false; |
266 | 266 | } |
267 | 267 | |
268 | - $args = wp_parse_args( $args, array( |
|
268 | + $args = wp_parse_args($args, array( |
|
269 | 269 | 'amount' => '', |
270 | 270 | 'transaction_id' => '', |
271 | 271 | 'gateway' => '' |
272 | - ) ); |
|
272 | + )); |
|
273 | 273 | |
274 | - if ( empty( $args['transaction_id'] ) || $this->payment_exists( $args['transaction_id'] ) ) { |
|
274 | + if (empty($args['transaction_id']) || $this->payment_exists($args['transaction_id'])) { |
|
275 | 275 | return false; |
276 | 276 | } |
277 | 277 | |
278 | - $parent_invoice = wpinv_get_invoice( $this->parent_payment_id ); |
|
279 | - if ( empty( $parent_invoice->ID ) ) { |
|
278 | + $parent_invoice = wpinv_get_invoice($this->parent_payment_id); |
|
279 | + if (empty($parent_invoice->ID)) { |
|
280 | 280 | return false; |
281 | 281 | } |
282 | 282 | |
283 | 283 | $invoice = new WPInv_Invoice(); |
284 | - $invoice->set( 'post_type', 'wpi_invoice' ); |
|
285 | - $invoice->set( 'parent_invoice', $this->parent_payment_id ); |
|
286 | - $invoice->set( 'currency', $parent_invoice->get_currency() ); |
|
287 | - $invoice->set( 'transaction_id', $args['transaction_id'] ); |
|
288 | - $invoice->set( 'key', $parent_invoice->generate_key() ); |
|
289 | - $invoice->set( 'ip', $parent_invoice->ip ); |
|
290 | - $invoice->set( 'user_id', $parent_invoice->get_user_id() ); |
|
291 | - $invoice->set( 'first_name', $parent_invoice->get_first_name() ); |
|
292 | - $invoice->set( 'last_name', $parent_invoice->get_last_name() ); |
|
293 | - $invoice->set( 'phone', $parent_invoice->phone ); |
|
294 | - $invoice->set( 'address', $parent_invoice->address ); |
|
295 | - $invoice->set( 'city', $parent_invoice->city ); |
|
296 | - $invoice->set( 'country', $parent_invoice->country ); |
|
297 | - $invoice->set( 'state', $parent_invoice->state ); |
|
298 | - $invoice->set( 'zip', $parent_invoice->zip ); |
|
299 | - $invoice->set( 'company', $parent_invoice->company ); |
|
300 | - $invoice->set( 'vat_number', $parent_invoice->vat_number ); |
|
301 | - $invoice->set( 'vat_rate', $parent_invoice->vat_rate ); |
|
302 | - $invoice->set( 'adddress_confirmed', $parent_invoice->adddress_confirmed ); |
|
303 | - |
|
304 | - if ( empty( $args['gateway'] ) ) { |
|
305 | - $invoice->set( 'gateway', $parent_invoice->get_gateway() ); |
|
284 | + $invoice->set('post_type', 'wpi_invoice'); |
|
285 | + $invoice->set('parent_invoice', $this->parent_payment_id); |
|
286 | + $invoice->set('currency', $parent_invoice->get_currency()); |
|
287 | + $invoice->set('transaction_id', $args['transaction_id']); |
|
288 | + $invoice->set('key', $parent_invoice->generate_key()); |
|
289 | + $invoice->set('ip', $parent_invoice->ip); |
|
290 | + $invoice->set('user_id', $parent_invoice->get_user_id()); |
|
291 | + $invoice->set('first_name', $parent_invoice->get_first_name()); |
|
292 | + $invoice->set('last_name', $parent_invoice->get_last_name()); |
|
293 | + $invoice->set('phone', $parent_invoice->phone); |
|
294 | + $invoice->set('address', $parent_invoice->address); |
|
295 | + $invoice->set('city', $parent_invoice->city); |
|
296 | + $invoice->set('country', $parent_invoice->country); |
|
297 | + $invoice->set('state', $parent_invoice->state); |
|
298 | + $invoice->set('zip', $parent_invoice->zip); |
|
299 | + $invoice->set('company', $parent_invoice->company); |
|
300 | + $invoice->set('vat_number', $parent_invoice->vat_number); |
|
301 | + $invoice->set('vat_rate', $parent_invoice->vat_rate); |
|
302 | + $invoice->set('adddress_confirmed', $parent_invoice->adddress_confirmed); |
|
303 | + |
|
304 | + if (empty($args['gateway'])) { |
|
305 | + $invoice->set('gateway', $parent_invoice->get_gateway()); |
|
306 | 306 | } else { |
307 | - $invoice->set( 'gateway', $args['gateway'] ); |
|
307 | + $invoice->set('gateway', $args['gateway']); |
|
308 | 308 | } |
309 | 309 | |
310 | 310 | $recurring_details = $parent_invoice->get_recurring_details(); |
@@ -312,11 +312,11 @@ discard block |
||
312 | 312 | // increase the earnings for each item in the subscription |
313 | 313 | $items = $recurring_details['cart_details']; |
314 | 314 | |
315 | - if ( $items ) { |
|
315 | + if ($items) { |
|
316 | 316 | $add_items = array(); |
317 | 317 | $cart_details = array(); |
318 | 318 | |
319 | - foreach ( $items as $item ) { |
|
319 | + foreach ($items as $item) { |
|
320 | 320 | $add_item = array(); |
321 | 321 | $add_item['id'] = $item['id']; |
322 | 322 | $add_item['quantity'] = $item['quantity']; |
@@ -326,7 +326,7 @@ discard block |
||
326 | 326 | break; |
327 | 327 | } |
328 | 328 | |
329 | - $invoice->set( 'items', $add_items ); |
|
329 | + $invoice->set('items', $add_items); |
|
330 | 330 | $invoice->cart_details = $cart_details; |
331 | 331 | } |
332 | 332 | |
@@ -336,32 +336,32 @@ discard block |
||
336 | 336 | $tax = $recurring_details['tax']; |
337 | 337 | $discount = $recurring_details['discount']; |
338 | 338 | |
339 | - if ( $discount > 0 ) { |
|
340 | - $invoice->set( 'discount_code', $parent_invoice->discount_code ); |
|
339 | + if ($discount > 0) { |
|
340 | + $invoice->set('discount_code', $parent_invoice->discount_code); |
|
341 | 341 | } |
342 | 342 | |
343 | - $invoice->subtotal = wpinv_round_amount( $subtotal ); |
|
344 | - $invoice->tax = wpinv_round_amount( $tax ); |
|
345 | - $invoice->discount = wpinv_round_amount( $discount ); |
|
346 | - $invoice->total = wpinv_round_amount( $total ); |
|
343 | + $invoice->subtotal = wpinv_round_amount($subtotal); |
|
344 | + $invoice->tax = wpinv_round_amount($tax); |
|
345 | + $invoice->discount = wpinv_round_amount($discount); |
|
346 | + $invoice->total = wpinv_round_amount($total); |
|
347 | 347 | |
348 | - $invoice = apply_filters( 'wpinv_subscription_add_payment_save', $invoice, $this, $args ); |
|
348 | + $invoice = apply_filters('wpinv_subscription_add_payment_save', $invoice, $this, $args); |
|
349 | 349 | |
350 | 350 | $invoice->save(); |
351 | - $invoice->update_meta( '_wpinv_subscription_id', $this->id ); |
|
351 | + $invoice->update_meta('_wpinv_subscription_id', $this->id); |
|
352 | 352 | |
353 | - if ( !empty( $invoice->ID ) ) { |
|
354 | - wpinv_update_payment_status( $invoice->ID, 'publish' ); |
|
353 | + if (!empty($invoice->ID)) { |
|
354 | + wpinv_update_payment_status($invoice->ID, 'publish'); |
|
355 | 355 | sleep(1); |
356 | - wpinv_update_payment_status( $invoice->ID, 'wpi-renewal' ); |
|
356 | + wpinv_update_payment_status($invoice->ID, 'wpi-renewal'); |
|
357 | 357 | |
358 | - $invoice = wpinv_get_invoice( $invoice->ID ); |
|
358 | + $invoice = wpinv_get_invoice($invoice->ID); |
|
359 | 359 | |
360 | 360 | // Send email notifications. |
361 | - wpinv_completed_invoice_notification( $invoice->ID ); |
|
361 | + wpinv_completed_invoice_notification($invoice->ID); |
|
362 | 362 | |
363 | - do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
364 | - do_action( 'wpinv_recurring_record_payment', $invoice->ID, $this->parent_payment_id, $args['amount'], $args['transaction_id'] ); |
|
363 | + do_action('wpinv_recurring_add_subscription_payment', $invoice, $this); |
|
364 | + do_action('wpinv_recurring_record_payment', $invoice->ID, $this->parent_payment_id, $args['amount'], $args['transaction_id']); |
|
365 | 365 | |
366 | 366 | return $invoice->ID; |
367 | 367 | } |
@@ -377,12 +377,12 @@ discard block |
||
377 | 377 | */ |
378 | 378 | public function get_transaction_id() { |
379 | 379 | |
380 | - if( empty( $this->transaction_id ) ) { |
|
380 | + if (empty($this->transaction_id)) { |
|
381 | 381 | |
382 | - $txn_id = wpinv_get_payment_transaction_id( $this->parent_payment_id ); |
|
382 | + $txn_id = wpinv_get_payment_transaction_id($this->parent_payment_id); |
|
383 | 383 | |
384 | - if( ! empty( $txn_id ) && (int) $this->parent_payment_id !== (int) $txn_id ) { |
|
385 | - $this->set_transaction_id( $txn_id ); |
|
384 | + if (!empty($txn_id) && (int) $this->parent_payment_id !== (int) $txn_id) { |
|
385 | + $this->set_transaction_id($txn_id); |
|
386 | 386 | } |
387 | 387 | |
388 | 388 | } |
@@ -397,8 +397,8 @@ discard block |
||
397 | 397 | * @since 1.0.0.4 |
398 | 398 | * @return bool |
399 | 399 | */ |
400 | - public function set_transaction_id( $txn_id = '' ) { |
|
401 | - $this->update( array( 'transaction_id' => $txn_id ) ); |
|
400 | + public function set_transaction_id($txn_id = '') { |
|
401 | + $this->update(array('transaction_id' => $txn_id)); |
|
402 | 402 | $this->transaction_id = $txn_id; |
403 | 403 | } |
404 | 404 | |
@@ -414,35 +414,35 @@ discard block |
||
414 | 414 | |
415 | 415 | |
416 | 416 | // Determine what date to use as the start for the new expiration calculation |
417 | - if( $expires > current_time( 'timestamp' ) && $this->is_active() ) { |
|
417 | + if ($expires > current_time('timestamp') && $this->is_active()) { |
|
418 | 418 | |
419 | - $base_date = $expires; |
|
419 | + $base_date = $expires; |
|
420 | 420 | |
421 | 421 | } else { |
422 | 422 | |
423 | - $base_date = current_time( 'timestamp' ); |
|
423 | + $base_date = current_time('timestamp'); |
|
424 | 424 | |
425 | 425 | } |
426 | 426 | |
427 | - $last_day = wpinv_cal_days_in_month( CAL_GREGORIAN, date( 'n', $base_date ), date( 'Y', $base_date ) ); |
|
427 | + $last_day = wpinv_cal_days_in_month(CAL_GREGORIAN, date('n', $base_date), date('Y', $base_date)); |
|
428 | 428 | |
429 | 429 | |
430 | 430 | $frequency = isset($this->frequency) ? $this->frequency : 1; |
431 | - $expiration = date( 'Y-m-d H:i:s', strtotime( '+' . $frequency . ' ' . $this->period . ' 23:59:59', $base_date ) ); |
|
431 | + $expiration = date('Y-m-d H:i:s', strtotime('+' . $frequency . ' ' . $this->period . ' 23:59:59', $base_date)); |
|
432 | 432 | |
433 | - if( date( 'j', $base_date ) == $last_day && 'day' != $this->period ) { |
|
434 | - $expiration = date( 'Y-m-d H:i:s', strtotime( $expiration . ' +2 days' ) ); |
|
433 | + if (date('j', $base_date) == $last_day && 'day' != $this->period) { |
|
434 | + $expiration = date('Y-m-d H:i:s', strtotime($expiration . ' +2 days')); |
|
435 | 435 | } |
436 | 436 | |
437 | - $expiration = apply_filters( 'wpinv_subscription_renewal_expiration', $expiration, $this->id, $this ); |
|
437 | + $expiration = apply_filters('wpinv_subscription_renewal_expiration', $expiration, $this->id, $this); |
|
438 | 438 | |
439 | - do_action( 'wpinv_subscription_pre_renew', $this->id, $expiration, $this ); |
|
439 | + do_action('wpinv_subscription_pre_renew', $this->id, $expiration, $this); |
|
440 | 440 | |
441 | 441 | $this->status = 'active'; |
442 | 442 | $times_billed = $this->get_times_billed(); |
443 | 443 | |
444 | 444 | // Complete subscription if applicable |
445 | - if ( $this->bill_times > 0 && $times_billed >= $this->bill_times ) { |
|
445 | + if ($this->bill_times > 0 && $times_billed >= $this->bill_times) { |
|
446 | 446 | $this->complete(); |
447 | 447 | $this->status = 'completed'; |
448 | 448 | } |
@@ -452,10 +452,10 @@ discard block |
||
452 | 452 | 'status' => $this->status, |
453 | 453 | ); |
454 | 454 | |
455 | - $this->subs_db->update( $this->id, $args ); |
|
455 | + $this->subs_db->update($this->id, $args); |
|
456 | 456 | |
457 | - do_action( 'wpinv_subscription_post_renew', $this->id, $expiration, $this ); |
|
458 | - do_action( 'wpinv_recurring_set_subscription_status', $this->id, $this->status, $this ); |
|
457 | + do_action('wpinv_subscription_post_renew', $this->id, $expiration, $this); |
|
458 | + do_action('wpinv_recurring_set_subscription_status', $this->id, $this->status, $this); |
|
459 | 459 | |
460 | 460 | } |
461 | 461 | |
@@ -470,7 +470,7 @@ discard block |
||
470 | 470 | public function complete() { |
471 | 471 | |
472 | 472 | // Only mark a subscription as complete if it's not already cancelled. |
473 | - if ( 'cancelled' === $this->status ) { |
|
473 | + if ('cancelled' === $this->status) { |
|
474 | 474 | return; |
475 | 475 | } |
476 | 476 | |
@@ -478,11 +478,11 @@ discard block |
||
478 | 478 | 'status' => 'completed' |
479 | 479 | ); |
480 | 480 | |
481 | - if( $this->subs_db->update( $this->id, $args ) ) { |
|
481 | + if ($this->subs_db->update($this->id, $args)) { |
|
482 | 482 | |
483 | 483 | $this->status = 'completed'; |
484 | 484 | |
485 | - do_action( 'wpinv_subscription_completed', $this->id, $this ); |
|
485 | + do_action('wpinv_subscription_completed', $this->id, $this); |
|
486 | 486 | |
487 | 487 | } |
488 | 488 | |
@@ -497,15 +497,15 @@ discard block |
||
497 | 497 | * @param $check_expiration bool True if expiration date should be checked with merchant processor before expiring |
498 | 498 | * @return void |
499 | 499 | */ |
500 | - public function expire( $check_expiration = false ) { |
|
500 | + public function expire($check_expiration = false) { |
|
501 | 501 | |
502 | 502 | $expiration = $this->expiration; |
503 | 503 | |
504 | - if( $check_expiration ) { |
|
504 | + if ($check_expiration) { |
|
505 | 505 | |
506 | 506 | // check_expiration() updates $this->expiration so compare to $expiration above |
507 | 507 | |
508 | - if( $expiration < $this->get_expiration() && current_time( 'timestamp' ) < $this->get_expiration_time() ) { |
|
508 | + if ($expiration < $this->get_expiration() && current_time('timestamp') < $this->get_expiration_time()) { |
|
509 | 509 | |
510 | 510 | return false; // Do not mark as expired since real expiration date is in the future |
511 | 511 | } |
@@ -516,11 +516,11 @@ discard block |
||
516 | 516 | 'status' => 'expired' |
517 | 517 | ); |
518 | 518 | |
519 | - if( $this->subs_db->update( $this->id, $args ) ) { |
|
519 | + if ($this->subs_db->update($this->id, $args)) { |
|
520 | 520 | |
521 | 521 | $this->status = 'expired'; |
522 | 522 | |
523 | - do_action( 'wpinv_subscription_expired', $this->id, $this ); |
|
523 | + do_action('wpinv_subscription_expired', $this->id, $this); |
|
524 | 524 | |
525 | 525 | } |
526 | 526 | |
@@ -538,11 +538,11 @@ discard block |
||
538 | 538 | 'status' => 'failing' |
539 | 539 | ); |
540 | 540 | |
541 | - if( $this->subs_db->update( $this->id, $args ) ) { |
|
541 | + if ($this->subs_db->update($this->id, $args)) { |
|
542 | 542 | |
543 | 543 | $this->status = 'failing'; |
544 | 544 | |
545 | - do_action( 'wpinv_subscription_failing', $this->id, $this ); |
|
545 | + do_action('wpinv_subscription_failing', $this->id, $this); |
|
546 | 546 | |
547 | 547 | |
548 | 548 | } |
@@ -556,7 +556,7 @@ discard block |
||
556 | 556 | * @return void |
557 | 557 | */ |
558 | 558 | public function cancel() { |
559 | - if ( 'cancelled' === $this->status ) { |
|
559 | + if ('cancelled' === $this->status) { |
|
560 | 560 | return; // Already cancelled |
561 | 561 | } |
562 | 562 | |
@@ -564,20 +564,20 @@ discard block |
||
564 | 564 | 'status' => 'cancelled' |
565 | 565 | ); |
566 | 566 | |
567 | - if ( $this->subs_db->update( $this->id, $args ) ) { |
|
568 | - if ( is_user_logged_in() ) { |
|
569 | - $userdata = get_userdata( get_current_user_id() ); |
|
567 | + if ($this->subs_db->update($this->id, $args)) { |
|
568 | + if (is_user_logged_in()) { |
|
569 | + $userdata = get_userdata(get_current_user_id()); |
|
570 | 570 | $user = $userdata->display_name; |
571 | 571 | } else { |
572 | - $user = __( 'gateway', 'invoicing' ); |
|
572 | + $user = __('gateway', 'invoicing'); |
|
573 | 573 | } |
574 | 574 | |
575 | - $note = sprintf( __( 'Subscription has been cancelled by %s', 'invoicing' ), $user ); |
|
576 | - wpinv_insert_payment_note( $this->parent_payment_id, $note, '', '', true ); |
|
575 | + $note = sprintf(__('Subscription has been cancelled by %s', 'invoicing'), $user); |
|
576 | + wpinv_insert_payment_note($this->parent_payment_id, $note, '', '', true); |
|
577 | 577 | |
578 | 578 | $this->status = 'cancelled'; |
579 | 579 | |
580 | - do_action( 'wpinv_subscription_cancelled', $this->id, $this ); |
|
580 | + do_action('wpinv_subscription_cancelled', $this->id, $this); |
|
581 | 581 | } |
582 | 582 | } |
583 | 583 | |
@@ -592,10 +592,10 @@ discard block |
||
592 | 592 | */ |
593 | 593 | public function can_cancel() { |
594 | 594 | $ret = false; |
595 | - if( $this->gateway === 'manual' || in_array( $this->status, $this->get_cancellable_statuses() ) ) { |
|
595 | + if ($this->gateway === 'manual' || in_array($this->status, $this->get_cancellable_statuses())) { |
|
596 | 596 | $ret = true; |
597 | 597 | } |
598 | - return apply_filters( 'wpinv_subscription_can_cancel', $ret, $this ); |
|
598 | + return apply_filters('wpinv_subscription_can_cancel', $ret, $this); |
|
599 | 599 | } |
600 | 600 | |
601 | 601 | /** |
@@ -606,7 +606,7 @@ discard block |
||
606 | 606 | * @return array |
607 | 607 | */ |
608 | 608 | public function get_cancellable_statuses() { |
609 | - return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) ); |
|
609 | + return apply_filters('wpinv_recurring_cancellable_statuses', array('active', 'trialling', 'failing')); |
|
610 | 610 | } |
611 | 611 | |
612 | 612 | /** |
@@ -617,9 +617,9 @@ discard block |
||
617 | 617 | */ |
618 | 618 | public function get_cancel_url() { |
619 | 619 | |
620 | - $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-cancel' ); |
|
620 | + $url = wp_nonce_url(add_query_arg(array('wpinv_action' => 'cancel_subscription', 'sub_id' => $this->id)), 'wpinv-recurring-cancel'); |
|
621 | 621 | |
622 | - return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
622 | + return apply_filters('wpinv_subscription_cancel_url', $url, $this); |
|
623 | 623 | } |
624 | 624 | |
625 | 625 | /** |
@@ -633,7 +633,7 @@ discard block |
||
633 | 633 | */ |
634 | 634 | public function can_renew() { |
635 | 635 | |
636 | - return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
636 | + return apply_filters('wpinv_subscription_can_renew', true, $this); |
|
637 | 637 | } |
638 | 638 | |
639 | 639 | /** |
@@ -644,9 +644,9 @@ discard block |
||
644 | 644 | */ |
645 | 645 | public function get_renew_url() { |
646 | 646 | |
647 | - $url = wp_nonce_url( add_query_arg( array( 'wpinv_action' => 'renew_subscription', 'sub_id' => $this->id ) ), 'wpinv-recurring-renew' ); |
|
647 | + $url = wp_nonce_url(add_query_arg(array('wpinv_action' => 'renew_subscription', 'sub_id' => $this->id)), 'wpinv-recurring-renew'); |
|
648 | 648 | |
649 | - return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
649 | + return apply_filters('wpinv_subscription_renew_url', $url, $this); |
|
650 | 650 | } |
651 | 651 | |
652 | 652 | /** |
@@ -656,7 +656,7 @@ discard block |
||
656 | 656 | * @return bool |
657 | 657 | */ |
658 | 658 | public function can_update() { |
659 | - return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
659 | + return apply_filters('wpinv_subscription_can_update', false, $this); |
|
660 | 660 | } |
661 | 661 | |
662 | 662 | /** |
@@ -667,9 +667,9 @@ discard block |
||
667 | 667 | */ |
668 | 668 | public function get_update_url() { |
669 | 669 | |
670 | - $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->id ) ); |
|
670 | + $url = add_query_arg(array('action' => 'update', 'subscription_id' => $this->id)); |
|
671 | 671 | |
672 | - return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
672 | + return apply_filters('wpinv_subscription_update_url', $url, $this); |
|
673 | 673 | } |
674 | 674 | |
675 | 675 | /** |
@@ -682,11 +682,11 @@ discard block |
||
682 | 682 | |
683 | 683 | $ret = false; |
684 | 684 | |
685 | - if( ! $this->is_expired() && ( $this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling' ) ) { |
|
685 | + if (!$this->is_expired() && ($this->status == 'active' || $this->status == 'cancelled' || $this->status == 'trialling')) { |
|
686 | 686 | $ret = true; |
687 | 687 | } |
688 | 688 | |
689 | - return apply_filters( 'wpinv_subscription_is_active', $ret, $this->id, $this ); |
|
689 | + return apply_filters('wpinv_subscription_is_active', $ret, $this->id, $this); |
|
690 | 690 | |
691 | 691 | } |
692 | 692 | |
@@ -700,26 +700,26 @@ discard block |
||
700 | 700 | |
701 | 701 | $ret = false; |
702 | 702 | |
703 | - if ( $this->status == 'expired' ) { |
|
703 | + if ($this->status == 'expired') { |
|
704 | 704 | |
705 | 705 | $ret = true; |
706 | 706 | |
707 | - } elseif( 'active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling' ) { |
|
707 | + } elseif ('active' === $this->status || 'cancelled' === $this->status || $this->status == 'trialling') { |
|
708 | 708 | |
709 | 709 | $ret = false; |
710 | 710 | $expiration = $this->get_expiration_time(); |
711 | 711 | |
712 | - if( $expiration && strtotime( 'NOW', current_time( 'timestamp' ) ) > $expiration ) { |
|
712 | + if ($expiration && strtotime('NOW', current_time('timestamp')) > $expiration) { |
|
713 | 713 | $ret = true; |
714 | 714 | |
715 | - if ( 'active' === $this->status || $this->status == 'trialling' ) { |
|
715 | + if ('active' === $this->status || $this->status == 'trialling') { |
|
716 | 716 | $this->expire(); |
717 | 717 | } |
718 | 718 | } |
719 | 719 | |
720 | 720 | } |
721 | 721 | |
722 | - return apply_filters( 'wpinv_subscription_is_expired', $ret, $this->id, $this ); |
|
722 | + return apply_filters('wpinv_subscription_is_expired', $ret, $this->id, $this); |
|
723 | 723 | |
724 | 724 | } |
725 | 725 | |
@@ -740,7 +740,7 @@ discard block |
||
740 | 740 | * @return int |
741 | 741 | */ |
742 | 742 | public function get_expiration_time() { |
743 | - return strtotime( $this->expiration, current_time( 'timestamp' ) ); |
|
743 | + return strtotime($this->expiration, current_time('timestamp')); |
|
744 | 744 | } |
745 | 745 | |
746 | 746 | /** |
@@ -764,37 +764,37 @@ discard block |
||
764 | 764 | */ |
765 | 765 | public function get_status_label() { |
766 | 766 | |
767 | - switch( $this->get_status() ) { |
|
767 | + switch ($this->get_status()) { |
|
768 | 768 | case 'active' : |
769 | - $status = __( 'Active', 'invoicing' ); |
|
769 | + $status = __('Active', 'invoicing'); |
|
770 | 770 | break; |
771 | 771 | |
772 | 772 | case 'cancelled' : |
773 | - $status = __( 'Cancelled', 'invoicing' ); |
|
773 | + $status = __('Cancelled', 'invoicing'); |
|
774 | 774 | break; |
775 | 775 | |
776 | 776 | case 'expired' : |
777 | - $status = __( 'Expired', 'invoicing' ); |
|
777 | + $status = __('Expired', 'invoicing'); |
|
778 | 778 | break; |
779 | 779 | |
780 | 780 | case 'pending' : |
781 | - $status = __( 'Pending', 'invoicing' ); |
|
781 | + $status = __('Pending', 'invoicing'); |
|
782 | 782 | break; |
783 | 783 | |
784 | 784 | case 'failing' : |
785 | - $status = __( 'Failing', 'invoicing' ); |
|
785 | + $status = __('Failing', 'invoicing'); |
|
786 | 786 | break; |
787 | 787 | |
788 | 788 | case 'trialling' : |
789 | - $status = __( 'Trialling', 'invoicing' ); |
|
789 | + $status = __('Trialling', 'invoicing'); |
|
790 | 790 | break; |
791 | 791 | |
792 | 792 | case 'completed' : |
793 | - $status = __( 'Completed', 'invoicing' ); |
|
793 | + $status = __('Completed', 'invoicing'); |
|
794 | 794 | break; |
795 | 795 | |
796 | 796 | default: |
797 | - $status = ucfirst( $this->get_status() ); |
|
797 | + $status = ucfirst($this->get_status()); |
|
798 | 798 | break; |
799 | 799 | } |
800 | 800 | |
@@ -809,51 +809,51 @@ discard block |
||
809 | 809 | */ |
810 | 810 | public function get_status_label_html() { |
811 | 811 | |
812 | - switch( $get_status = $this->get_status() ) { |
|
812 | + switch ($get_status = $this->get_status()) { |
|
813 | 813 | case 'active' : |
814 | - $status = __( 'Active', 'invoicing' ); |
|
814 | + $status = __('Active', 'invoicing'); |
|
815 | 815 | $class = 'label-info'; |
816 | 816 | break; |
817 | 817 | |
818 | 818 | case 'cancelled' : |
819 | - $status = __( 'Cancelled', 'invoicing' ); |
|
819 | + $status = __('Cancelled', 'invoicing'); |
|
820 | 820 | $class = 'label-danger'; |
821 | 821 | break; |
822 | 822 | |
823 | 823 | case 'expired' : |
824 | - $status = __( 'Expired', 'invoicing' ); |
|
824 | + $status = __('Expired', 'invoicing'); |
|
825 | 825 | $class = 'label-default'; |
826 | 826 | break; |
827 | 827 | |
828 | 828 | case 'pending' : |
829 | - $status = __( 'Pending', 'invoicing' ); |
|
829 | + $status = __('Pending', 'invoicing'); |
|
830 | 830 | $class = 'label-primary'; |
831 | 831 | break; |
832 | 832 | |
833 | 833 | case 'failing' : |
834 | - $status = __( 'Failing', 'invoicing' ); |
|
834 | + $status = __('Failing', 'invoicing'); |
|
835 | 835 | $class = 'label-danger'; |
836 | 836 | break; |
837 | 837 | |
838 | 838 | case 'trialling' : |
839 | - $status = __( 'Trialling', 'invoicing' ); |
|
839 | + $status = __('Trialling', 'invoicing'); |
|
840 | 840 | $class = 'label-info'; |
841 | 841 | break; |
842 | 842 | |
843 | 843 | case 'completed' : |
844 | - $status = __( 'Completed', 'invoicing' ); |
|
844 | + $status = __('Completed', 'invoicing'); |
|
845 | 845 | $class = 'label-success'; |
846 | 846 | break; |
847 | 847 | |
848 | 848 | default: |
849 | - $status = ucfirst( $this->get_status() ); |
|
849 | + $status = ucfirst($this->get_status()); |
|
850 | 850 | $class = 'label-default'; |
851 | 851 | break; |
852 | 852 | } |
853 | 853 | |
854 | 854 | $label = '<span class="sub-status label label-sub-' . $get_status . ' ' . $class . '">' . $status . '</span>'; |
855 | 855 | |
856 | - return apply_filters( 'wpinv_subscription_status_label_html', $label, $get_status, $status ); |
|
856 | + return apply_filters('wpinv_subscription_status_label_html', $label, $get_status, $status); |
|
857 | 857 | } |
858 | 858 | |
859 | 859 | /** |
@@ -863,18 +863,18 @@ discard block |
||
863 | 863 | * @param string $txn_id The transaction ID from the merchant processor |
864 | 864 | * @return bool |
865 | 865 | */ |
866 | - public function payment_exists( $txn_id = '' ) { |
|
866 | + public function payment_exists($txn_id = '') { |
|
867 | 867 | global $wpdb; |
868 | 868 | |
869 | - if ( empty( $txn_id ) ) { |
|
869 | + if (empty($txn_id)) { |
|
870 | 870 | return false; |
871 | 871 | } |
872 | 872 | |
873 | - $txn_id = esc_sql( $txn_id ); |
|
873 | + $txn_id = esc_sql($txn_id); |
|
874 | 874 | |
875 | - $purchase = $wpdb->get_var( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wpinv_transaction_id' AND meta_value = '{$txn_id}' LIMIT 1" ); |
|
875 | + $purchase = $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wpinv_transaction_id' AND meta_value = '{$txn_id}' LIMIT 1"); |
|
876 | 876 | |
877 | - if ( $purchase != null ) { |
|
877 | + if ($purchase != null) { |
|
878 | 878 | return true; |
879 | 879 | } |
880 | 880 |