Passed
Push — master ( 039fc1...a932b5 )
by Brian
05:54
created
includes/data/currencies.php 1 patch
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -11,165 +11,165 @@
 block discarded – undo
11 11
 defined( 'ABSPATH' ) || exit;
12 12
 
13 13
 return array(
14
-	'USD' => __( 'US Dollar', 'invoicing' ),
15
-	'EUR' => __( 'Euro', 'invoicing' ),
16
-	'GBP' => __( 'Pound Sterling', 'invoicing' ),
17
-	'AED' => __( 'United Arab Emirates', 'invoicing' ),
18
-	'AFN' => __( 'Afghan Afghani', 'invoicing' ),
19
-	'ALL' => __( 'Albanian Lek', 'invoicing' ),
20
-	'AMD' => __( 'Armenian Dram', 'invoicing' ),
21
-	'ANG' => __( 'Netherlands Antillean Guilder', 'invoicing' ),
22
-	'AOA' => __( 'Angolan Kwanza', 'invoicing' ),
23
-	'ARS' => __( 'Argentine Peso', 'invoicing' ),
24
-	'AUD' => __( 'Australian Dollar', 'invoicing' ),
25
-	'AWG' => __( 'Aruban Florin', 'invoicing' ),
26
-	'AZN' => __( 'Azerbaijani Manat', 'invoicing' ),
27
-	'BAM' => __( 'Bosnia and Herzegovina Convertible Marka', 'invoicing' ),
28
-	'BBD' => __( 'Barbadian Dollar', 'invoicing' ),
29
-	'BDT' => __( 'Bangladeshi Taka', 'invoicing' ),
30
-	'BGN' => __( 'Bulgarian Lev', 'invoicing' ),
31
-	'BHD' => __( 'Bahraini Dinar', 'invoicing' ),
32
-	'BIF' => __( 'Burundian Franc', 'invoicing' ),
33
-	'BMD' => __( 'Bermudian Dollar', 'invoicing' ),
34
-	'BND' => __( 'Brunei Dollar', 'invoicing' ),
35
-	'BOB' => __( 'Bolivian Boliviano', 'invoicing' ),
36
-	'BRL' => __( 'Brazilian Real', 'invoicing' ),
37
-	'BSD' => __( 'Bahamian Dollar', 'invoicing' ),
38
-	'BTC' => __( 'Bitcoin', 'invoicing' ),
39
-	'BTN' => __( 'Bhutanese Ngultrum', 'invoicing' ),
40
-	'BWP' => __( 'Botswana Pula', 'invoicing' ),
41
-	'BYN' => __( 'Belarusian Ruble', 'invoicing' ),
42
-	'BZD' => __( 'Belize Dollar', 'invoicing' ),
43
-	'CAD' => __( 'Canadian Dollar', 'invoicing' ),
44
-	'CDF' => __( 'Congolese Franc', 'invoicing' ),
45
-	'CHF' => __( 'Swiss Franc', 'invoicing' ),
46
-	'CLP' => __( 'Chilean Peso', 'invoicing' ),
47
-	'CNY' => __( 'Chinese Yuan', 'invoicing' ),
48
-	'COP' => __( 'Colombian Peso', 'invoicing' ),
49
-	'CRC' => __( 'Costa Rican Colon', 'invoicing' ),
50
-	'CUC' => __( 'Cuban Convertible Peso', 'invoicing' ),
51
-	'CUP' => __( 'Cuban Peso', 'invoicing' ),
52
-	'CVE' => __( 'Cape Verdean escudo', 'invoicing' ),
53
-	'CZK' => __( 'Czech Koruna', 'invoicing' ),
54
-	'DJF' => __( 'Djiboutian Franc', 'invoicing' ),
55
-	'DKK' => __( 'Danish Krone', 'invoicing' ),
56
-	'DOP' => __( 'Dominican Peso', 'invoicing' ),
57
-	'DZD' => __( 'Algerian Dinar', 'invoicing' ),
58
-	'EGP' => __( 'Egyptian Pound', 'invoicing' ),
59
-	'ERN' => __( 'Eritrean Nakfa', 'invoicing' ),
60
-	'ETB' => __( 'Ethiopian Irr', 'invoicing' ),
61
-	'FJD' => __( 'Fijian Dollar', 'invoicing' ),
62
-	'FKP' => __( 'Falkland Islands Pound', 'invoicing' ),
63
-	'GEL' => __( 'Georgian Lari', 'invoicing' ),
64
-	'GGP' => __( 'Guernsey Pound', 'invoicing' ),
65
-	'GHS' => __( 'Ghana Cedi', 'invoicing' ),
66
-	'GIP' => __( 'Gibraltar Pound', 'invoicing' ),
67
-	'GMD' => __( 'Gambian Dalasi', 'invoicing' ),
68
-	'GNF' => __( 'Guinean Franc', 'invoicing' ),
69
-	'GTQ' => __( 'Guatemalan Quetzal', 'invoicing' ),
70
-	'GYD' => __( 'Guyanese Dollar', 'invoicing' ),
71
-	'HKD' => __( 'Hong Kong Dollar', 'invoicing' ),
72
-	'HNL' => __( 'Honduran Lempira', 'invoicing' ),
73
-	'HRK' => __( 'Croatian Kuna', 'invoicing' ),
74
-	'HTG' => __( 'Haitian Gourde', 'invoicing' ),
75
-	'HUF' => __( 'Hungarian Forint', 'invoicing' ),
76
-	'IDR' => __( 'Indonesian Rupiah', 'invoicing' ),
77
-	'ILS' => __( 'Israeli New Shekel', 'invoicing' ),
78
-	'IMP' => __( 'Manx Pound', 'invoicing' ),
79
-	'INR' => __( 'Indian Rupee', 'invoicing' ),
80
-	'IQD' => __( 'Iraqi Dinar', 'invoicing' ),
81
-	'IRR' => __( 'Iranian Rial', 'invoicing' ),
82
-	'IRT' => __( 'Iranian Toman', 'invoicing' ),
83
-	'ISK' => __( 'Icelandic Krona', 'invoicing' ),
84
-	'JEP' => __( 'Jersey Pound', 'invoicing' ),
85
-	'JMD' => __( 'Jamaican Dollar', 'invoicing' ),
86
-	'JOD' => __( 'Jordanian Dinar', 'invoicing' ),
87
-	'JPY' => __( 'Japanese Yen', 'invoicing' ),
88
-	'KES' => __( 'Kenyan Shilling', 'invoicing' ),
89
-	'KGS' => __( 'Kyrgyzstani Som', 'invoicing' ),
90
-	'KHR' => __( 'Cambodian Riel', 'invoicing' ),
91
-	'KMF' => __( 'Comorian Franc', 'invoicing' ),
92
-	'KPW' => __( 'North Korean Won', 'invoicing' ),
93
-	'KRW' => __( 'South Korean Won', 'invoicing' ),
94
-	'KWD' => __( 'Kuwaiti Dinar', 'invoicing' ),
95
-	'KYD' => __( 'Cayman Islands Dollar', 'invoicing' ),
96
-	'KZT' => __( 'Kazakhstani Tenge', 'invoicing' ),
97
-	'LAK' => __( 'Lao Kip', 'invoicing' ),
98
-	'LBP' => __( 'Lebanese Pound', 'invoicing' ),
99
-	'LKR' => __( 'Sri Lankan Rupee', 'invoicing' ),
100
-	'LRD' => __( 'Liberian Dollar', 'invoicing' ),
101
-	'LSL' => __( 'Lesotho Loti', 'invoicing' ),
102
-	'LYD' => __( 'Libyan Dinar', 'invoicing' ),
103
-	'MAD' => __( 'Moroccan Dirham', 'invoicing' ),
104
-	'MDL' => __( 'Moldovan Leu', 'invoicing' ),
105
-	'MGA' => __( 'Malagasy Ariary', 'invoicing' ),
106
-	'MKD' => __( 'Macedonian Denar', 'invoicing' ),
107
-	'MMK' => __( 'Burmese Kyat', 'invoicing' ),
108
-	'MNT' => __( 'Mongolian Tughrik', 'invoicing' ),
109
-	'MOP' => __( 'Macanese Pataca', 'invoicing' ),
110
-	'MRO' => __( 'Mauritanian Ouguiya', 'invoicing' ),
111
-	'MUR' => __( 'Mauritian Rupee', 'invoicing' ),
112
-	'MVR' => __( 'Maldivian Rufiyaa', 'invoicing' ),
113
-	'MWK' => __( 'Malawian Kwacha', 'invoicing' ),
114
-	'MXN' => __( 'Mexican Peso', 'invoicing' ),
115
-	'MYR' => __( 'Malaysian Ringgit', 'invoicing' ),
116
-	'MZN' => __( 'Mozambican Metical', 'invoicing' ),
117
-	'NAD' => __( 'Namibian Dollar', 'invoicing' ),
118
-	'NGN' => __( 'Nigerian Naira', 'invoicing' ),
119
-	'NIO' => __( 'Nicaraguan Cordoba', 'invoicing' ),
120
-	'NOK' => __( 'Norwegian Krone', 'invoicing' ),
121
-	'NPR' => __( 'Nepalese Rupee', 'invoicing' ),
122
-	'NZD' => __( 'New Zealand Dollar', 'invoicing' ),
123
-	'OMR' => __( 'Omani Rial', 'invoicing' ),
124
-	'PAB' => __( 'Panamanian Balboa', 'invoicing' ),
125
-	'PEN' => __( 'Peruvian Nuevo Sol', 'invoicing' ),
126
-	'PGK' => __( 'Papua New Guinean Kina', 'invoicing' ),
127
-	'PHP' => __( 'Philippine Peso', 'invoicing' ),
128
-	'PKR' => __( 'Pakistani Rupee', 'invoicing' ),
129
-	'PLN' => __( 'Polish Zloty', 'invoicing' ),
130
-	'PRB' => __( 'Transnistrian Ruble', 'invoicing' ),
131
-	'PYG' => __( 'Paraguayan Guarani', 'invoicing' ),
132
-	'QAR' => __( 'Qatari Riyal', 'invoicing' ),
133
-	'RON' => __( 'Romanian Leu', 'invoicing' ),
134
-	'RSD' => __( 'Serbian Dinar', 'invoicing' ),
135
-	'RUB' => __( 'Russian Ruble', 'invoicing' ),
136
-	'RWF' => __( 'Rwandan Franc', 'invoicing' ),
137
-	'SAR' => __( 'Saudi Riyal', 'invoicing' ),
138
-	'SBD' => __( 'Solomon Islands Dollar', 'invoicing' ),
139
-	'SCR' => __( 'Seychellois Rupee', 'invoicing' ),
140
-	'SDG' => __( 'Sudanese Pound', 'invoicing' ),
141
-	'SEK' => __( 'Swedish Krona', 'invoicing' ),
142
-	'SGD' => __( 'Singapore Dollar', 'invoicing' ),
143
-	'SHP' => __( 'Saint Helena Pound', 'invoicing' ),
144
-	'SLL' => __( 'Sierra Leonean Leone', 'invoicing' ),
145
-	'SOS' => __( 'Somali Shilling', 'invoicing' ),
146
-	'SRD' => __( 'Surinamese Dollar', 'invoicing' ),
147
-	'SSP' => __( 'South Sudanese Pound', 'invoicing' ),
148
-	'STD' => __( 'Sao Tomean Dobra', 'invoicing' ),
149
-	'SYP' => __( 'Syrian Pound', 'invoicing' ),
150
-	'SZL' => __( 'Swazi Lilangeni', 'invoicing' ),
151
-	'THB' => __( 'Thai Baht', 'invoicing' ),
152
-	'TJS' => __( 'Tajikistani Somoni', 'invoicing' ),
153
-	'TMT' => __( 'Turkmenistan Manat', 'invoicing' ),
154
-	'TND' => __( 'Tunisian Dinar', 'invoicing' ),
155
-	'TOP' => __( 'Tongan Paʻanga', 'invoicing' ),
156
-	'TRY' => __( 'Turkish Lira', 'invoicing' ),
157
-	'TTD' => __( 'Trinidad and Tobago Dollar', 'invoicing' ),
158
-	'TWD' => __( 'New Taiwan Dollar', 'invoicing' ),
159
-	'TZS' => __( 'Tanzanian Shilling', 'invoicing' ),
160
-	'UAH' => __( 'Ukrainian Hryvnia', 'invoicing' ),
161
-	'UGX' => __( 'Ugandan Shilling', 'invoicing' ),
162
-	'UYU' => __( 'Uruguayan Peso', 'invoicing' ),
163
-	'UZS' => __( 'Uzbekistani Som', 'invoicing' ),
164
-	'VEF' => __( 'Venezuelan Bolívar', 'invoicing' ),
165
-	'VND' => __( 'Vietnamese Dong', 'invoicing' ),
166
-	'VUV' => __( 'Vanuatu Vatu', 'invoicing' ),
167
-	'WST' => __( 'Samoan Tala', 'invoicing' ),
168
-	'XAF' => __( 'Central African CFA Franc', 'invoicing' ),
169
-	'XCD' => __( 'East Caribbean Dollar', 'invoicing' ),
170
-	'XOF' => __( 'West African CFA Franc', 'invoicing' ),
171
-	'XPF' => __( 'CFP Franc', 'invoicing' ),
172
-	'YER' => __( 'Yemeni Rial', 'invoicing' ),
173
-	'ZAR' => __( 'South African Rand', 'invoicing' ),
174
-	'ZMW' => __( 'Zambian Kwacha', 'invoicing' ),
14
+    'USD' => __( 'US Dollar', 'invoicing' ),
15
+    'EUR' => __( 'Euro', 'invoicing' ),
16
+    'GBP' => __( 'Pound Sterling', 'invoicing' ),
17
+    'AED' => __( 'United Arab Emirates', 'invoicing' ),
18
+    'AFN' => __( 'Afghan Afghani', 'invoicing' ),
19
+    'ALL' => __( 'Albanian Lek', 'invoicing' ),
20
+    'AMD' => __( 'Armenian Dram', 'invoicing' ),
21
+    'ANG' => __( 'Netherlands Antillean Guilder', 'invoicing' ),
22
+    'AOA' => __( 'Angolan Kwanza', 'invoicing' ),
23
+    'ARS' => __( 'Argentine Peso', 'invoicing' ),
24
+    'AUD' => __( 'Australian Dollar', 'invoicing' ),
25
+    'AWG' => __( 'Aruban Florin', 'invoicing' ),
26
+    'AZN' => __( 'Azerbaijani Manat', 'invoicing' ),
27
+    'BAM' => __( 'Bosnia and Herzegovina Convertible Marka', 'invoicing' ),
28
+    'BBD' => __( 'Barbadian Dollar', 'invoicing' ),
29
+    'BDT' => __( 'Bangladeshi Taka', 'invoicing' ),
30
+    'BGN' => __( 'Bulgarian Lev', 'invoicing' ),
31
+    'BHD' => __( 'Bahraini Dinar', 'invoicing' ),
32
+    'BIF' => __( 'Burundian Franc', 'invoicing' ),
33
+    'BMD' => __( 'Bermudian Dollar', 'invoicing' ),
34
+    'BND' => __( 'Brunei Dollar', 'invoicing' ),
35
+    'BOB' => __( 'Bolivian Boliviano', 'invoicing' ),
36
+    'BRL' => __( 'Brazilian Real', 'invoicing' ),
37
+    'BSD' => __( 'Bahamian Dollar', 'invoicing' ),
38
+    'BTC' => __( 'Bitcoin', 'invoicing' ),
39
+    'BTN' => __( 'Bhutanese Ngultrum', 'invoicing' ),
40
+    'BWP' => __( 'Botswana Pula', 'invoicing' ),
41
+    'BYN' => __( 'Belarusian Ruble', 'invoicing' ),
42
+    'BZD' => __( 'Belize Dollar', 'invoicing' ),
43
+    'CAD' => __( 'Canadian Dollar', 'invoicing' ),
44
+    'CDF' => __( 'Congolese Franc', 'invoicing' ),
45
+    'CHF' => __( 'Swiss Franc', 'invoicing' ),
46
+    'CLP' => __( 'Chilean Peso', 'invoicing' ),
47
+    'CNY' => __( 'Chinese Yuan', 'invoicing' ),
48
+    'COP' => __( 'Colombian Peso', 'invoicing' ),
49
+    'CRC' => __( 'Costa Rican Colon', 'invoicing' ),
50
+    'CUC' => __( 'Cuban Convertible Peso', 'invoicing' ),
51
+    'CUP' => __( 'Cuban Peso', 'invoicing' ),
52
+    'CVE' => __( 'Cape Verdean escudo', 'invoicing' ),
53
+    'CZK' => __( 'Czech Koruna', 'invoicing' ),
54
+    'DJF' => __( 'Djiboutian Franc', 'invoicing' ),
55
+    'DKK' => __( 'Danish Krone', 'invoicing' ),
56
+    'DOP' => __( 'Dominican Peso', 'invoicing' ),
57
+    'DZD' => __( 'Algerian Dinar', 'invoicing' ),
58
+    'EGP' => __( 'Egyptian Pound', 'invoicing' ),
59
+    'ERN' => __( 'Eritrean Nakfa', 'invoicing' ),
60
+    'ETB' => __( 'Ethiopian Irr', 'invoicing' ),
61
+    'FJD' => __( 'Fijian Dollar', 'invoicing' ),
62
+    'FKP' => __( 'Falkland Islands Pound', 'invoicing' ),
63
+    'GEL' => __( 'Georgian Lari', 'invoicing' ),
64
+    'GGP' => __( 'Guernsey Pound', 'invoicing' ),
65
+    'GHS' => __( 'Ghana Cedi', 'invoicing' ),
66
+    'GIP' => __( 'Gibraltar Pound', 'invoicing' ),
67
+    'GMD' => __( 'Gambian Dalasi', 'invoicing' ),
68
+    'GNF' => __( 'Guinean Franc', 'invoicing' ),
69
+    'GTQ' => __( 'Guatemalan Quetzal', 'invoicing' ),
70
+    'GYD' => __( 'Guyanese Dollar', 'invoicing' ),
71
+    'HKD' => __( 'Hong Kong Dollar', 'invoicing' ),
72
+    'HNL' => __( 'Honduran Lempira', 'invoicing' ),
73
+    'HRK' => __( 'Croatian Kuna', 'invoicing' ),
74
+    'HTG' => __( 'Haitian Gourde', 'invoicing' ),
75
+    'HUF' => __( 'Hungarian Forint', 'invoicing' ),
76
+    'IDR' => __( 'Indonesian Rupiah', 'invoicing' ),
77
+    'ILS' => __( 'Israeli New Shekel', 'invoicing' ),
78
+    'IMP' => __( 'Manx Pound', 'invoicing' ),
79
+    'INR' => __( 'Indian Rupee', 'invoicing' ),
80
+    'IQD' => __( 'Iraqi Dinar', 'invoicing' ),
81
+    'IRR' => __( 'Iranian Rial', 'invoicing' ),
82
+    'IRT' => __( 'Iranian Toman', 'invoicing' ),
83
+    'ISK' => __( 'Icelandic Krona', 'invoicing' ),
84
+    'JEP' => __( 'Jersey Pound', 'invoicing' ),
85
+    'JMD' => __( 'Jamaican Dollar', 'invoicing' ),
86
+    'JOD' => __( 'Jordanian Dinar', 'invoicing' ),
87
+    'JPY' => __( 'Japanese Yen', 'invoicing' ),
88
+    'KES' => __( 'Kenyan Shilling', 'invoicing' ),
89
+    'KGS' => __( 'Kyrgyzstani Som', 'invoicing' ),
90
+    'KHR' => __( 'Cambodian Riel', 'invoicing' ),
91
+    'KMF' => __( 'Comorian Franc', 'invoicing' ),
92
+    'KPW' => __( 'North Korean Won', 'invoicing' ),
93
+    'KRW' => __( 'South Korean Won', 'invoicing' ),
94
+    'KWD' => __( 'Kuwaiti Dinar', 'invoicing' ),
95
+    'KYD' => __( 'Cayman Islands Dollar', 'invoicing' ),
96
+    'KZT' => __( 'Kazakhstani Tenge', 'invoicing' ),
97
+    'LAK' => __( 'Lao Kip', 'invoicing' ),
98
+    'LBP' => __( 'Lebanese Pound', 'invoicing' ),
99
+    'LKR' => __( 'Sri Lankan Rupee', 'invoicing' ),
100
+    'LRD' => __( 'Liberian Dollar', 'invoicing' ),
101
+    'LSL' => __( 'Lesotho Loti', 'invoicing' ),
102
+    'LYD' => __( 'Libyan Dinar', 'invoicing' ),
103
+    'MAD' => __( 'Moroccan Dirham', 'invoicing' ),
104
+    'MDL' => __( 'Moldovan Leu', 'invoicing' ),
105
+    'MGA' => __( 'Malagasy Ariary', 'invoicing' ),
106
+    'MKD' => __( 'Macedonian Denar', 'invoicing' ),
107
+    'MMK' => __( 'Burmese Kyat', 'invoicing' ),
108
+    'MNT' => __( 'Mongolian Tughrik', 'invoicing' ),
109
+    'MOP' => __( 'Macanese Pataca', 'invoicing' ),
110
+    'MRO' => __( 'Mauritanian Ouguiya', 'invoicing' ),
111
+    'MUR' => __( 'Mauritian Rupee', 'invoicing' ),
112
+    'MVR' => __( 'Maldivian Rufiyaa', 'invoicing' ),
113
+    'MWK' => __( 'Malawian Kwacha', 'invoicing' ),
114
+    'MXN' => __( 'Mexican Peso', 'invoicing' ),
115
+    'MYR' => __( 'Malaysian Ringgit', 'invoicing' ),
116
+    'MZN' => __( 'Mozambican Metical', 'invoicing' ),
117
+    'NAD' => __( 'Namibian Dollar', 'invoicing' ),
118
+    'NGN' => __( 'Nigerian Naira', 'invoicing' ),
119
+    'NIO' => __( 'Nicaraguan Cordoba', 'invoicing' ),
120
+    'NOK' => __( 'Norwegian Krone', 'invoicing' ),
121
+    'NPR' => __( 'Nepalese Rupee', 'invoicing' ),
122
+    'NZD' => __( 'New Zealand Dollar', 'invoicing' ),
123
+    'OMR' => __( 'Omani Rial', 'invoicing' ),
124
+    'PAB' => __( 'Panamanian Balboa', 'invoicing' ),
125
+    'PEN' => __( 'Peruvian Nuevo Sol', 'invoicing' ),
126
+    'PGK' => __( 'Papua New Guinean Kina', 'invoicing' ),
127
+    'PHP' => __( 'Philippine Peso', 'invoicing' ),
128
+    'PKR' => __( 'Pakistani Rupee', 'invoicing' ),
129
+    'PLN' => __( 'Polish Zloty', 'invoicing' ),
130
+    'PRB' => __( 'Transnistrian Ruble', 'invoicing' ),
131
+    'PYG' => __( 'Paraguayan Guarani', 'invoicing' ),
132
+    'QAR' => __( 'Qatari Riyal', 'invoicing' ),
133
+    'RON' => __( 'Romanian Leu', 'invoicing' ),
134
+    'RSD' => __( 'Serbian Dinar', 'invoicing' ),
135
+    'RUB' => __( 'Russian Ruble', 'invoicing' ),
136
+    'RWF' => __( 'Rwandan Franc', 'invoicing' ),
137
+    'SAR' => __( 'Saudi Riyal', 'invoicing' ),
138
+    'SBD' => __( 'Solomon Islands Dollar', 'invoicing' ),
139
+    'SCR' => __( 'Seychellois Rupee', 'invoicing' ),
140
+    'SDG' => __( 'Sudanese Pound', 'invoicing' ),
141
+    'SEK' => __( 'Swedish Krona', 'invoicing' ),
142
+    'SGD' => __( 'Singapore Dollar', 'invoicing' ),
143
+    'SHP' => __( 'Saint Helena Pound', 'invoicing' ),
144
+    'SLL' => __( 'Sierra Leonean Leone', 'invoicing' ),
145
+    'SOS' => __( 'Somali Shilling', 'invoicing' ),
146
+    'SRD' => __( 'Surinamese Dollar', 'invoicing' ),
147
+    'SSP' => __( 'South Sudanese Pound', 'invoicing' ),
148
+    'STD' => __( 'Sao Tomean Dobra', 'invoicing' ),
149
+    'SYP' => __( 'Syrian Pound', 'invoicing' ),
150
+    'SZL' => __( 'Swazi Lilangeni', 'invoicing' ),
151
+    'THB' => __( 'Thai Baht', 'invoicing' ),
152
+    'TJS' => __( 'Tajikistani Somoni', 'invoicing' ),
153
+    'TMT' => __( 'Turkmenistan Manat', 'invoicing' ),
154
+    'TND' => __( 'Tunisian Dinar', 'invoicing' ),
155
+    'TOP' => __( 'Tongan Paʻanga', 'invoicing' ),
156
+    'TRY' => __( 'Turkish Lira', 'invoicing' ),
157
+    'TTD' => __( 'Trinidad and Tobago Dollar', 'invoicing' ),
158
+    'TWD' => __( 'New Taiwan Dollar', 'invoicing' ),
159
+    'TZS' => __( 'Tanzanian Shilling', 'invoicing' ),
160
+    'UAH' => __( 'Ukrainian Hryvnia', 'invoicing' ),
161
+    'UGX' => __( 'Ugandan Shilling', 'invoicing' ),
162
+    'UYU' => __( 'Uruguayan Peso', 'invoicing' ),
163
+    'UZS' => __( 'Uzbekistani Som', 'invoicing' ),
164
+    'VEF' => __( 'Venezuelan Bolívar', 'invoicing' ),
165
+    'VND' => __( 'Vietnamese Dong', 'invoicing' ),
166
+    'VUV' => __( 'Vanuatu Vatu', 'invoicing' ),
167
+    'WST' => __( 'Samoan Tala', 'invoicing' ),
168
+    'XAF' => __( 'Central African CFA Franc', 'invoicing' ),
169
+    'XCD' => __( 'East Caribbean Dollar', 'invoicing' ),
170
+    'XOF' => __( 'West African CFA Franc', 'invoicing' ),
171
+    'XPF' => __( 'CFP Franc', 'invoicing' ),
172
+    'YER' => __( 'Yemeni Rial', 'invoicing' ),
173
+    'ZAR' => __( 'South African Rand', 'invoicing' ),
174
+    'ZMW' => __( 'Zambian Kwacha', 'invoicing' ),
175 175
 );
Please login to merge, or discard this patch.
uninstall.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
4
-	exit;
4
+    exit;
5 5
 }
6 6
 
7 7
 global $wpdb;
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-data-store.php 1 patch
Indentation   +181 added lines, -181 removed lines patch added patch discarded remove patch
@@ -11,186 +11,186 @@
 block discarded – undo
11 11
  */
12 12
 class GetPaid_Data_Store {
13 13
 
14
-	/**
15
-	 * Contains an instance of the data store class that we are working with.
16
-	 *
17
-	 * @var GetPaid_Data_Store
18
-	 */
19
-	private $instance = null;
20
-
21
-	/**
22
-	 * Contains an array of default supported data stores.
23
-	 * Format of object name => class name.
24
-	 * Example: 'item' => 'GetPaid_Item_Data_Store'
25
-	 * You can also pass something like item-<type> for item stores and
26
-	 * that type will be used first when available, if a store is requested like
27
-	 * this and doesn't exist, then the store would fall back to 'item'.
28
-	 * Ran through `getpaid_data_stores`.
29
-	 *
30
-	 * @var array
31
-	 */
32
-	private $stores = array(
33
-		'item'         => 'GetPaid_Item_Data_Store',
34
-		'payment_form' => 'GetPaid_Payment_Form_Data_Store',
35
-		'discount'     => 'GetPaid_Discount_Data_Store',
36
-		'invoice'      => 'GetPaid_Invoice_Data_Store',
37
-		'subscription' => 'GetPaid_Subscription_Data_Store',
38
-	);
39
-
40
-	/**
41
-	 * Contains the name of the current data store's class name.
42
-	 *
43
-	 * @var string
44
-	 */
45
-	private $current_class_name = '';
46
-
47
-	/**
48
-	 * The object type this store works with.
49
-	 *
50
-	 * @var string
51
-	 */
52
-	private $object_type = '';
53
-
54
-	/**
55
-	 * Tells GetPaid_Data_Store which object
56
-	 * store we want to work with.
57
-	 *
58
-	 * @param string $object_type Name of object.
59
-	 */
60
-	public function __construct( $object_type ) {
61
-		$this->object_type = $object_type;
62
-		$this->stores      = apply_filters( 'getpaid_data_stores', $this->stores );
63
-
64
-		// If this object type can't be found, check to see if we can load one
65
-		// level up (so if item-type isn't found, we try item).
66
-		if ( ! array_key_exists( $object_type, $this->stores ) ) {
67
-			$pieces      = explode( '-', $object_type );
68
-			$object_type = $pieces[0];
69
-		}
70
-
71
-		if ( array_key_exists( $object_type, $this->stores ) ) {
72
-			$store = apply_filters( 'getpaid_' . $object_type . '_data_store', $this->stores[ $object_type ] );
73
-			if ( is_object( $store ) ) {
74
-				$this->current_class_name = get_class( $store );
75
-				$this->instance           = $store;
76
-			} else {
77
-				if ( ! class_exists( $store ) ) {
78
-					throw new Exception( __( 'Data store class does not exist.', 'invoicing' ) );
79
-				}
80
-				$this->current_class_name = $store;
81
-				$this->instance           = new $store();
82
-			}
83
-		} else {
84
-			throw new Exception( __( 'Invalid data store.', 'invoicing' ) );
85
-		}
86
-	}
87
-
88
-	/**
89
-	 * Only store the object type to avoid serializing the data store instance.
90
-	 *
91
-	 * @return array
92
-	 */
93
-	public function __sleep() {
94
-		return array( 'object_type' );
95
-	}
96
-
97
-	/**
98
-	 * Re-run the constructor with the object type.
99
-	 *
100
-	 * @throws Exception When validation fails.
101
-	 */
102
-	public function __wakeup() {
103
-		$this->__construct( $this->object_type );
104
-	}
105
-
106
-	/**
107
-	 * Loads a data store.
108
-	 *
109
-	 * @param string $object_type Name of object.
110
-	 *
111
-	 * @since 1.0.19
112
-	 * @throws Exception When validation fails.
113
-	 * @return GetPaid_Data_Store
114
-	 */
115
-	public static function load( $object_type ) {
116
-		return new GetPaid_Data_Store( $object_type );
117
-	}
118
-
119
-	/**
120
-	 * Returns the class name of the current data store.
121
-	 *
122
-	 * @since 1.0.19
123
-	 * @return string
124
-	 */
125
-	public function get_current_class_name() {
126
-		return $this->current_class_name;
127
-	}
128
-
129
-	/**
130
-	 * Returns the object type of the current data store.
131
-	 *
132
-	 * @since 1.0.19
133
-	 * @return string
134
-	 */
135
-	public function get_object_type() {
136
-		return $this->object_type;
137
-	}
138
-
139
-	/**
140
-	 * Reads an object from the data store.
141
-	 *
142
-	 * @since 1.0.19
143
-	 * @param GetPaid_Data $data GetPaid data instance.
144
-	 */
145
-	public function read( &$data ) {
146
-		$this->instance->read( $data );
147
-	}
148
-
149
-	/**
150
-	 * Create an object in the data store.
151
-	 *
152
-	 * @since 1.0.19
153
-	 * @param GetPaid_Data $data GetPaid data instance.
154
-	 */
155
-	public function create( &$data ) {
156
-		$this->instance->create( $data );
157
-	}
158
-
159
-	/**
160
-	 * Update an object in the data store.
161
-	 *
162
-	 * @since 1.0.19
163
-	 * @param GetPaid_Data $data GetPaid data instance.
164
-	 */
165
-	public function update( &$data ) {
166
-		$this->instance->update( $data );
167
-	}
168
-
169
-	/**
170
-	 * Delete an object from the data store.
171
-	 *
172
-	 * @since 1.0.19
173
-	 * @param GetPaid_Data $data GetPaid data instance.
174
-	 * @param array   $args Array of args to pass to the delete method.
175
-	 */
176
-	public function delete( &$data, $args = array() ) {
177
-		$this->instance->delete( $data, $args );
178
-	}
179
-
180
-	/**
181
-	 * Data stores can define additional function. This passes
182
-	 * through to the instance if that function exists.
183
-	 *
184
-	 * @since 1.0.19
185
-	 * @param string $method     Method.
186
-	 * @return mixed
187
-	 */
188
-	public function __call( $method, $parameters ) {
189
-		if ( is_callable( array( $this->instance, $method ) ) ) {
190
-			$object     = array_shift( $parameters );
191
-			$parameters = array_merge( array( &$object ), $parameters );
192
-			return call_user_func_array( array( $this->instance, $method ), $parameters );
193
-		}
194
-	}
14
+    /**
15
+     * Contains an instance of the data store class that we are working with.
16
+     *
17
+     * @var GetPaid_Data_Store
18
+     */
19
+    private $instance = null;
20
+
21
+    /**
22
+     * Contains an array of default supported data stores.
23
+     * Format of object name => class name.
24
+     * Example: 'item' => 'GetPaid_Item_Data_Store'
25
+     * You can also pass something like item-<type> for item stores and
26
+     * that type will be used first when available, if a store is requested like
27
+     * this and doesn't exist, then the store would fall back to 'item'.
28
+     * Ran through `getpaid_data_stores`.
29
+     *
30
+     * @var array
31
+     */
32
+    private $stores = array(
33
+        'item'         => 'GetPaid_Item_Data_Store',
34
+        'payment_form' => 'GetPaid_Payment_Form_Data_Store',
35
+        'discount'     => 'GetPaid_Discount_Data_Store',
36
+        'invoice'      => 'GetPaid_Invoice_Data_Store',
37
+        'subscription' => 'GetPaid_Subscription_Data_Store',
38
+    );
39
+
40
+    /**
41
+     * Contains the name of the current data store's class name.
42
+     *
43
+     * @var string
44
+     */
45
+    private $current_class_name = '';
46
+
47
+    /**
48
+     * The object type this store works with.
49
+     *
50
+     * @var string
51
+     */
52
+    private $object_type = '';
53
+
54
+    /**
55
+     * Tells GetPaid_Data_Store which object
56
+     * store we want to work with.
57
+     *
58
+     * @param string $object_type Name of object.
59
+     */
60
+    public function __construct( $object_type ) {
61
+        $this->object_type = $object_type;
62
+        $this->stores      = apply_filters( 'getpaid_data_stores', $this->stores );
63
+
64
+        // If this object type can't be found, check to see if we can load one
65
+        // level up (so if item-type isn't found, we try item).
66
+        if ( ! array_key_exists( $object_type, $this->stores ) ) {
67
+            $pieces      = explode( '-', $object_type );
68
+            $object_type = $pieces[0];
69
+        }
70
+
71
+        if ( array_key_exists( $object_type, $this->stores ) ) {
72
+            $store = apply_filters( 'getpaid_' . $object_type . '_data_store', $this->stores[ $object_type ] );
73
+            if ( is_object( $store ) ) {
74
+                $this->current_class_name = get_class( $store );
75
+                $this->instance           = $store;
76
+            } else {
77
+                if ( ! class_exists( $store ) ) {
78
+                    throw new Exception( __( 'Data store class does not exist.', 'invoicing' ) );
79
+                }
80
+                $this->current_class_name = $store;
81
+                $this->instance           = new $store();
82
+            }
83
+        } else {
84
+            throw new Exception( __( 'Invalid data store.', 'invoicing' ) );
85
+        }
86
+    }
87
+
88
+    /**
89
+     * Only store the object type to avoid serializing the data store instance.
90
+     *
91
+     * @return array
92
+     */
93
+    public function __sleep() {
94
+        return array( 'object_type' );
95
+    }
96
+
97
+    /**
98
+     * Re-run the constructor with the object type.
99
+     *
100
+     * @throws Exception When validation fails.
101
+     */
102
+    public function __wakeup() {
103
+        $this->__construct( $this->object_type );
104
+    }
105
+
106
+    /**
107
+     * Loads a data store.
108
+     *
109
+     * @param string $object_type Name of object.
110
+     *
111
+     * @since 1.0.19
112
+     * @throws Exception When validation fails.
113
+     * @return GetPaid_Data_Store
114
+     */
115
+    public static function load( $object_type ) {
116
+        return new GetPaid_Data_Store( $object_type );
117
+    }
118
+
119
+    /**
120
+     * Returns the class name of the current data store.
121
+     *
122
+     * @since 1.0.19
123
+     * @return string
124
+     */
125
+    public function get_current_class_name() {
126
+        return $this->current_class_name;
127
+    }
128
+
129
+    /**
130
+     * Returns the object type of the current data store.
131
+     *
132
+     * @since 1.0.19
133
+     * @return string
134
+     */
135
+    public function get_object_type() {
136
+        return $this->object_type;
137
+    }
138
+
139
+    /**
140
+     * Reads an object from the data store.
141
+     *
142
+     * @since 1.0.19
143
+     * @param GetPaid_Data $data GetPaid data instance.
144
+     */
145
+    public function read( &$data ) {
146
+        $this->instance->read( $data );
147
+    }
148
+
149
+    /**
150
+     * Create an object in the data store.
151
+     *
152
+     * @since 1.0.19
153
+     * @param GetPaid_Data $data GetPaid data instance.
154
+     */
155
+    public function create( &$data ) {
156
+        $this->instance->create( $data );
157
+    }
158
+
159
+    /**
160
+     * Update an object in the data store.
161
+     *
162
+     * @since 1.0.19
163
+     * @param GetPaid_Data $data GetPaid data instance.
164
+     */
165
+    public function update( &$data ) {
166
+        $this->instance->update( $data );
167
+    }
168
+
169
+    /**
170
+     * Delete an object from the data store.
171
+     *
172
+     * @since 1.0.19
173
+     * @param GetPaid_Data $data GetPaid data instance.
174
+     * @param array   $args Array of args to pass to the delete method.
175
+     */
176
+    public function delete( &$data, $args = array() ) {
177
+        $this->instance->delete( $data, $args );
178
+    }
179
+
180
+    /**
181
+     * Data stores can define additional function. This passes
182
+     * through to the instance if that function exists.
183
+     *
184
+     * @since 1.0.19
185
+     * @param string $method     Method.
186
+     * @return mixed
187
+     */
188
+    public function __call( $method, $parameters ) {
189
+        if ( is_callable( array( $this->instance, $method ) ) ) {
190
+            $object     = array_shift( $parameters );
191
+            $parameters = array_merge( array( &$object ), $parameters );
192
+            return call_user_func_array( array( $this->instance, $method ), $parameters );
193
+        }
194
+    }
195 195
 
196 196
 }
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-data-store-wp.php 1 patch
Indentation   +338 added lines, -338 removed lines patch added patch discarded remove patch
@@ -14,346 +14,346 @@
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Meta type. This should match up with
19
-	 * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
20
-	 * WP defines 'post', 'user', 'comment', and 'term'.
21
-	 *
22
-	 * @var string
23
-	 */
24
-	protected $meta_type = 'post';
25
-
26
-	/**
27
-	 * This only needs set if you are using a custom metadata type.
28
-	 *
29
-	 * @var string
30
-	 */
31
-	protected $object_id_field_for_meta = '';
32
-
33
-	/**
34
-	 * Data stored in meta keys, but not considered "meta" for an object.
35
-	 *
36
-	 * @since 1.0.19
37
-	 *
38
-	 * @var array
39
-	 */
40
-	protected $internal_meta_keys = array();
41
-
42
-	/**
43
-	 * Meta data which should exist in the DB, even if empty.
44
-	 *
45
-	 * @since 1.0.19
46
-	 *
47
-	 * @var array
48
-	 */
49
-	protected $must_exist_meta_keys = array();
50
-
51
-	/**
52
-	 * A map of meta keys to data props.
53
-	 *
54
-	 * @since 1.0.19
55
-	 *
56
-	 * @var array
57
-	 */
58
-	protected $meta_key_to_props = array();
59
-
60
-	/**
61
-	 * Returns an array of meta for an object.
62
-	 *
63
-	 * @since  1.0.19
64
-	 * @param  GetPaid_Data $object GetPaid_Data object.
65
-	 * @return array
66
-	 */
67
-	public function read_meta( &$object ) {
68
-		global $wpdb;
69
-		$db_info       = $this->get_db_info();
70
-		$raw_meta_data = $wpdb->get_results(
71
-			$wpdb->prepare(
72
-				"SELECT {$db_info['meta_id_field']} as meta_id, meta_key, meta_value
17
+    /**
18
+     * Meta type. This should match up with
19
+     * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
20
+     * WP defines 'post', 'user', 'comment', and 'term'.
21
+     *
22
+     * @var string
23
+     */
24
+    protected $meta_type = 'post';
25
+
26
+    /**
27
+     * This only needs set if you are using a custom metadata type.
28
+     *
29
+     * @var string
30
+     */
31
+    protected $object_id_field_for_meta = '';
32
+
33
+    /**
34
+     * Data stored in meta keys, but not considered "meta" for an object.
35
+     *
36
+     * @since 1.0.19
37
+     *
38
+     * @var array
39
+     */
40
+    protected $internal_meta_keys = array();
41
+
42
+    /**
43
+     * Meta data which should exist in the DB, even if empty.
44
+     *
45
+     * @since 1.0.19
46
+     *
47
+     * @var array
48
+     */
49
+    protected $must_exist_meta_keys = array();
50
+
51
+    /**
52
+     * A map of meta keys to data props.
53
+     *
54
+     * @since 1.0.19
55
+     *
56
+     * @var array
57
+     */
58
+    protected $meta_key_to_props = array();
59
+
60
+    /**
61
+     * Returns an array of meta for an object.
62
+     *
63
+     * @since  1.0.19
64
+     * @param  GetPaid_Data $object GetPaid_Data object.
65
+     * @return array
66
+     */
67
+    public function read_meta( &$object ) {
68
+        global $wpdb;
69
+        $db_info       = $this->get_db_info();
70
+        $raw_meta_data = $wpdb->get_results(
71
+            $wpdb->prepare(
72
+                "SELECT {$db_info['meta_id_field']} as meta_id, meta_key, meta_value
73 73
 				FROM {$db_info['table']}
74 74
 				WHERE {$db_info['object_id_field']} = %d
75 75
 				ORDER BY {$db_info['meta_id_field']}",
76
-				$object->get_id()
77
-			)
78
-		);
79
-
80
-		$this->internal_meta_keys = array_merge( array_map( array( $this, 'prefix_key' ), $object->get_data_keys() ), $this->internal_meta_keys );
81
-		$meta_data                = array_filter( $raw_meta_data, array( $this, 'exclude_internal_meta_keys' ) );
82
-		return apply_filters( "getpaid_data_store_wp_{$this->meta_type}_read_meta", $meta_data, $object, $this );
83
-	}
84
-
85
-	/**
86
-	 * Deletes meta based on meta ID.
87
-	 *
88
-	 * @since  1.0.19
89
-	 * @param  GetPaid_Data  $object GetPaid_Data object.
90
-	 * @param  stdClass $meta (containing at least ->id).
91
-	 */
92
-	public function delete_meta( &$object, $meta ) {
93
-		delete_metadata_by_mid( $this->meta_type, $meta->id );
94
-	}
95
-
96
-	/**
97
-	 * Add new piece of meta.
98
-	 *
99
-	 * @since  1.0.19
100
-	 * @param  GetPaid_Data  $object GetPaid_Data object.
101
-	 * @param  stdClass $meta (containing ->key and ->value).
102
-	 * @return int meta ID
103
-	 */
104
-	public function add_meta( &$object, $meta ) {
105
-		return add_metadata( $this->meta_type, $object->get_id(), $meta->key, is_string( $meta->value ) ? wp_slash( $meta->value ) : $meta->value, false );
106
-	}
107
-
108
-	/**
109
-	 * Update meta.
110
-	 *
111
-	 * @since  1.0.19
112
-	 * @param  GetPaid_Data  $object GetPaid_Data object.
113
-	 * @param  stdClass $meta (containing ->id, ->key and ->value).
114
-	 */
115
-	public function update_meta( &$object, $meta ) {
116
-		update_metadata_by_mid( $this->meta_type, $meta->id, $meta->value, $meta->key );
117
-	}
118
-
119
-	/**
120
-	 * Table structure is slightly different between meta types, this function will return what we need to know.
121
-	 *
122
-	 * @since  1.0.19
123
-	 * @return array Array elements: table, object_id_field, meta_id_field
124
-	 */
125
-	protected function get_db_info() {
126
-		global $wpdb;
127
-
128
-		$meta_id_field = 'meta_id'; // users table calls this umeta_id so we need to track this as well.
129
-		$table         = $wpdb->prefix;
130
-
131
-		// If we are dealing with a type of metadata that is not a core type, the table should be prefixed.
132
-		if ( ! in_array( $this->meta_type, array( 'post', 'user', 'comment', 'term' ), true ) ) {
133
-			$table .= 'getpaid_';
134
-		}
135
-
136
-		$table          .= $this->meta_type . 'meta';
137
-		$object_id_field = $this->meta_type . '_id';
138
-
139
-		// Figure out our field names.
140
-		if ( 'user' === $this->meta_type ) {
141
-			$meta_id_field = 'umeta_id';
142
-			$table         = $wpdb->usermeta;
143
-		}
144
-
145
-		if ( ! empty( $this->object_id_field_for_meta ) ) {
146
-			$object_id_field = $this->object_id_field_for_meta;
147
-		}
148
-
149
-		return array(
150
-			'table'           => $table,
151
-			'object_id_field' => $object_id_field,
152
-			'meta_id_field'   => $meta_id_field,
153
-		);
154
-	}
155
-
156
-	/**
157
-	 * Internal meta keys we don't want exposed as part of meta_data. This is in
158
-	 * addition to all data props with _ prefix.
159
-	 *
160
-	 * @since 1.0.19
161
-	 *
162
-	 * @param string $key Prefix to be added to meta keys.
163
-	 * @return string
164
-	 */
165
-	protected function prefix_key( $key ) {
166
-		return '_' === substr( $key, 0, 1 ) ? $key : '_' . $key;
167
-	}
168
-
169
-	/**
170
-	 * Callback to remove unwanted meta data.
171
-	 *
172
-	 * @param object $meta Meta object to check if it should be excluded or not.
173
-	 * @return bool
174
-	 */
175
-	protected function exclude_internal_meta_keys( $meta ) {
176
-		return ! in_array( $meta->meta_key, $this->internal_meta_keys, true ) && 0 !== stripos( $meta->meta_key, 'wp_' );
177
-	}
178
-
179
-	/**
180
-	 * Gets a list of props and meta keys that need updated based on change state
181
-	 * or if they are present in the database or not.
182
-	 *
183
-	 * @param  GetPaid_Data $object         The GetPaid_Data object.
184
-	 * @param  array   $meta_key_to_props   A mapping of meta keys => prop names.
185
-	 * @param  string  $meta_type           The internal WP meta type (post, user, etc).
186
-	 * @return array                        A mapping of meta keys => prop names, filtered by ones that should be updated.
187
-	 */
188
-	protected function get_props_to_update( $object, $meta_key_to_props, $meta_type = 'post' ) {
189
-		$props_to_update = array();
190
-		$changed_props   = $object->get_changes();
191
-
192
-		// Props should be updated if they are a part of the $changed array or don't exist yet.
193
-		foreach ( $meta_key_to_props as $meta_key => $prop ) {
194
-			if ( array_key_exists( $prop, $changed_props ) || ! metadata_exists( $meta_type, $object->get_id(), $meta_key ) ) {
195
-				$props_to_update[ $meta_key ] = $prop;
196
-			}
197
-		}
198
-
199
-		return $props_to_update;
200
-	}
201
-
202
-	/**
203
-	 * Read object data.
204
-	 *
205
-	 * @param GetPaid_Data $object GetPaid_Data object.
206
-	 * @param WP_Post   $post_object Post object.
207
-	 * @since 1.0.19
208
-	 */
209
-	protected function read_object_data( &$object, $post_object ) {
210
-		$id    = $object->get_id();
211
-		$props = array();
212
-
213
-		foreach ( $this->meta_key_to_props as $meta_key => $prop ) {
214
-			$props[ $prop ] = get_post_meta( $id, $meta_key, true );
215
-		}
216
-
217
-		// Set object properties.
218
-		$object->set_props( $props );
219
-
220
-		// Gets extra data associated with the object if needed.
221
-		foreach ( $object->get_extra_data_keys() as $key ) {
222
-			$function = 'set_' . $key;
223
-			if ( is_callable( array( $object, $function ) ) ) {
224
-				$object->{$function}( get_post_meta( $object->get_id(), $key, true ) );
225
-			}
226
-		}
227
-	}
228
-
229
-	/**
230
-	 * Helper method that updates all the post meta for an object based on it's settings in the GetPaid_Data class.
231
-	 *
232
-	 * @param GetPaid_Data $object GetPaid_Data object.
233
-	 * @since 1.0.19
234
-	 */
235
-	protected function update_post_meta( &$object ) {
236
-
237
-		$updated_props   = array();
238
-		$props_to_update = $this->get_props_to_update( $object, $this->meta_key_to_props );
239
-		$object_type     = $object->get_object_type();
240
-
241
-		foreach ( $props_to_update as $meta_key => $prop ) {
242
-			$value = $object->{"get_$prop"}( 'edit' );
243
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
244
-
245
-			$updated = $this->update_or_delete_post_meta( $object, $meta_key, $value );
246
-
247
-			if ( $updated ) {
248
-				$updated_props[] = $prop;
249
-			}
250
-		}
251
-
252
-		do_action( "getpaid_{$object_type}_object_updated_props", $object, $updated_props );
253
-	}
254
-
255
-	/**
256
-	 * Update meta data in, or delete it from, the database.
257
-	 *
258
-	 * Avoids storing meta when it's either an empty string or empty array or null.
259
-	 * Other empty values such as numeric 0 should still be stored.
260
-	 * Data-stores can force meta to exist using `must_exist_meta_keys`.
261
-	 *
262
-	 * Note: WordPress `get_metadata` function returns an empty string when meta data does not exist.
263
-	 *
264
-	 * @param GetPaid_Data $object The GetPaid_Data object.
265
-	 * @param string  $meta_key Meta key to update.
266
-	 * @param mixed   $meta_value Value to save.
267
-	 *
268
-	 * @since 1.0.19 Added to prevent empty meta being stored unless required.
269
-	 *
270
-	 * @return bool True if updated/deleted.
271
-	 */
272
-	protected function update_or_delete_post_meta( $object, $meta_key, $meta_value ) {
273
-		if ( in_array( $meta_value, array( array(), '', null ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
274
-			$updated = delete_post_meta( $object->get_id(), $meta_key );
275
-		} else {
276
-			$updated = update_post_meta( $object->get_id(), $meta_key, $meta_value );
277
-		}
278
-
279
-		return (bool) $updated;
280
-	}
281
-
282
-	/**
283
-	 * Return list of internal meta keys.
284
-	 *
285
-	 * @since 1.0.19
286
-	 * @return array
287
-	 */
288
-	public function get_internal_meta_keys() {
289
-		return $this->internal_meta_keys;
290
-	}
291
-
292
-	/**
293
-	 * Clear any caches.
294
-	 *
295
-	 * @param GetPaid_Data $object GetPaid_Data object.
296
-	 * @since 1.0.19
297
-	 */
298
-	protected function clear_caches( &$object ) {
299
-		clean_post_cache( $object->get_id() );
300
-	}
301
-
302
-	/**
303
-	 * Method to delete a data object from the database.
304
-	 *
305
-	 * @param GetPaid_Data $object GetPaid_Data object.
306
-	 * @param array    $args Array of args to pass to the delete method.
307
-	 *
308
-	 * @return void
309
-	 */
310
-	public function delete( &$object, $args = array() ) {
311
-		$id          = $object->get_id();
312
-		$object_type = $object->get_object_type();
313
-
314
-		if ( 'invoice' == $object_type ) {
315
-			$object_type = $object->get_type();
316
-		}
317
-
318
-		$args        = wp_parse_args(
319
-			$args,
320
-			array(
321
-				'force_delete' => false,
322
-			)
323
-		);
324
-
325
-		if ( ! $id ) {
326
-			return;
327
-		}
328
-
329
-		if ( $args['force_delete'] ) {
330
-			do_action( "getpaid_delete_$object_type", $object );
331
-			wp_delete_post( $id, true );
332
-			$object->set_id( 0 );
333
-		} else {
334
-			do_action( "getpaid_trash_$object_type", $object );
335
-			wp_trash_post( $id );
336
-			$object->set_status( 'trash' );
337
-		}
338
-	}
339
-
340
-	/**
341
-	 * Get the status to save to the post object.
342
-	 *
343
-	 *
344
-	 * @since 1.0.19
345
-	 * @param  GetPaid_Data $object GetPaid_Data object.
346
-	 * @return string
347
-	 */
348
-	protected function get_post_status( $object ) {
349
-		$object_status = $object->get_status( 'edit' );
350
-		$object_type   = $object->get_object_type();
351
-
352
-		if ( ! $object_status ) {
353
-			$object_status = apply_filters( "getpaid_default_{$object_type}_status", 'draft' );
354
-		}
355
-
356
-		return $object_status;
357
-	}
76
+                $object->get_id()
77
+            )
78
+        );
79
+
80
+        $this->internal_meta_keys = array_merge( array_map( array( $this, 'prefix_key' ), $object->get_data_keys() ), $this->internal_meta_keys );
81
+        $meta_data                = array_filter( $raw_meta_data, array( $this, 'exclude_internal_meta_keys' ) );
82
+        return apply_filters( "getpaid_data_store_wp_{$this->meta_type}_read_meta", $meta_data, $object, $this );
83
+    }
84
+
85
+    /**
86
+     * Deletes meta based on meta ID.
87
+     *
88
+     * @since  1.0.19
89
+     * @param  GetPaid_Data  $object GetPaid_Data object.
90
+     * @param  stdClass $meta (containing at least ->id).
91
+     */
92
+    public function delete_meta( &$object, $meta ) {
93
+        delete_metadata_by_mid( $this->meta_type, $meta->id );
94
+    }
95
+
96
+    /**
97
+     * Add new piece of meta.
98
+     *
99
+     * @since  1.0.19
100
+     * @param  GetPaid_Data  $object GetPaid_Data object.
101
+     * @param  stdClass $meta (containing ->key and ->value).
102
+     * @return int meta ID
103
+     */
104
+    public function add_meta( &$object, $meta ) {
105
+        return add_metadata( $this->meta_type, $object->get_id(), $meta->key, is_string( $meta->value ) ? wp_slash( $meta->value ) : $meta->value, false );
106
+    }
107
+
108
+    /**
109
+     * Update meta.
110
+     *
111
+     * @since  1.0.19
112
+     * @param  GetPaid_Data  $object GetPaid_Data object.
113
+     * @param  stdClass $meta (containing ->id, ->key and ->value).
114
+     */
115
+    public function update_meta( &$object, $meta ) {
116
+        update_metadata_by_mid( $this->meta_type, $meta->id, $meta->value, $meta->key );
117
+    }
118
+
119
+    /**
120
+     * Table structure is slightly different between meta types, this function will return what we need to know.
121
+     *
122
+     * @since  1.0.19
123
+     * @return array Array elements: table, object_id_field, meta_id_field
124
+     */
125
+    protected function get_db_info() {
126
+        global $wpdb;
127
+
128
+        $meta_id_field = 'meta_id'; // users table calls this umeta_id so we need to track this as well.
129
+        $table         = $wpdb->prefix;
130
+
131
+        // If we are dealing with a type of metadata that is not a core type, the table should be prefixed.
132
+        if ( ! in_array( $this->meta_type, array( 'post', 'user', 'comment', 'term' ), true ) ) {
133
+            $table .= 'getpaid_';
134
+        }
135
+
136
+        $table          .= $this->meta_type . 'meta';
137
+        $object_id_field = $this->meta_type . '_id';
138
+
139
+        // Figure out our field names.
140
+        if ( 'user' === $this->meta_type ) {
141
+            $meta_id_field = 'umeta_id';
142
+            $table         = $wpdb->usermeta;
143
+        }
144
+
145
+        if ( ! empty( $this->object_id_field_for_meta ) ) {
146
+            $object_id_field = $this->object_id_field_for_meta;
147
+        }
148
+
149
+        return array(
150
+            'table'           => $table,
151
+            'object_id_field' => $object_id_field,
152
+            'meta_id_field'   => $meta_id_field,
153
+        );
154
+    }
155
+
156
+    /**
157
+     * Internal meta keys we don't want exposed as part of meta_data. This is in
158
+     * addition to all data props with _ prefix.
159
+     *
160
+     * @since 1.0.19
161
+     *
162
+     * @param string $key Prefix to be added to meta keys.
163
+     * @return string
164
+     */
165
+    protected function prefix_key( $key ) {
166
+        return '_' === substr( $key, 0, 1 ) ? $key : '_' . $key;
167
+    }
168
+
169
+    /**
170
+     * Callback to remove unwanted meta data.
171
+     *
172
+     * @param object $meta Meta object to check if it should be excluded or not.
173
+     * @return bool
174
+     */
175
+    protected function exclude_internal_meta_keys( $meta ) {
176
+        return ! in_array( $meta->meta_key, $this->internal_meta_keys, true ) && 0 !== stripos( $meta->meta_key, 'wp_' );
177
+    }
178
+
179
+    /**
180
+     * Gets a list of props and meta keys that need updated based on change state
181
+     * or if they are present in the database or not.
182
+     *
183
+     * @param  GetPaid_Data $object         The GetPaid_Data object.
184
+     * @param  array   $meta_key_to_props   A mapping of meta keys => prop names.
185
+     * @param  string  $meta_type           The internal WP meta type (post, user, etc).
186
+     * @return array                        A mapping of meta keys => prop names, filtered by ones that should be updated.
187
+     */
188
+    protected function get_props_to_update( $object, $meta_key_to_props, $meta_type = 'post' ) {
189
+        $props_to_update = array();
190
+        $changed_props   = $object->get_changes();
191
+
192
+        // Props should be updated if they are a part of the $changed array or don't exist yet.
193
+        foreach ( $meta_key_to_props as $meta_key => $prop ) {
194
+            if ( array_key_exists( $prop, $changed_props ) || ! metadata_exists( $meta_type, $object->get_id(), $meta_key ) ) {
195
+                $props_to_update[ $meta_key ] = $prop;
196
+            }
197
+        }
198
+
199
+        return $props_to_update;
200
+    }
201
+
202
+    /**
203
+     * Read object data.
204
+     *
205
+     * @param GetPaid_Data $object GetPaid_Data object.
206
+     * @param WP_Post   $post_object Post object.
207
+     * @since 1.0.19
208
+     */
209
+    protected function read_object_data( &$object, $post_object ) {
210
+        $id    = $object->get_id();
211
+        $props = array();
212
+
213
+        foreach ( $this->meta_key_to_props as $meta_key => $prop ) {
214
+            $props[ $prop ] = get_post_meta( $id, $meta_key, true );
215
+        }
216
+
217
+        // Set object properties.
218
+        $object->set_props( $props );
219
+
220
+        // Gets extra data associated with the object if needed.
221
+        foreach ( $object->get_extra_data_keys() as $key ) {
222
+            $function = 'set_' . $key;
223
+            if ( is_callable( array( $object, $function ) ) ) {
224
+                $object->{$function}( get_post_meta( $object->get_id(), $key, true ) );
225
+            }
226
+        }
227
+    }
228
+
229
+    /**
230
+     * Helper method that updates all the post meta for an object based on it's settings in the GetPaid_Data class.
231
+     *
232
+     * @param GetPaid_Data $object GetPaid_Data object.
233
+     * @since 1.0.19
234
+     */
235
+    protected function update_post_meta( &$object ) {
236
+
237
+        $updated_props   = array();
238
+        $props_to_update = $this->get_props_to_update( $object, $this->meta_key_to_props );
239
+        $object_type     = $object->get_object_type();
240
+
241
+        foreach ( $props_to_update as $meta_key => $prop ) {
242
+            $value = $object->{"get_$prop"}( 'edit' );
243
+            $value = is_string( $value ) ? wp_slash( $value ) : $value;
244
+
245
+            $updated = $this->update_or_delete_post_meta( $object, $meta_key, $value );
246
+
247
+            if ( $updated ) {
248
+                $updated_props[] = $prop;
249
+            }
250
+        }
251
+
252
+        do_action( "getpaid_{$object_type}_object_updated_props", $object, $updated_props );
253
+    }
254
+
255
+    /**
256
+     * Update meta data in, or delete it from, the database.
257
+     *
258
+     * Avoids storing meta when it's either an empty string or empty array or null.
259
+     * Other empty values such as numeric 0 should still be stored.
260
+     * Data-stores can force meta to exist using `must_exist_meta_keys`.
261
+     *
262
+     * Note: WordPress `get_metadata` function returns an empty string when meta data does not exist.
263
+     *
264
+     * @param GetPaid_Data $object The GetPaid_Data object.
265
+     * @param string  $meta_key Meta key to update.
266
+     * @param mixed   $meta_value Value to save.
267
+     *
268
+     * @since 1.0.19 Added to prevent empty meta being stored unless required.
269
+     *
270
+     * @return bool True if updated/deleted.
271
+     */
272
+    protected function update_or_delete_post_meta( $object, $meta_key, $meta_value ) {
273
+        if ( in_array( $meta_value, array( array(), '', null ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
274
+            $updated = delete_post_meta( $object->get_id(), $meta_key );
275
+        } else {
276
+            $updated = update_post_meta( $object->get_id(), $meta_key, $meta_value );
277
+        }
278
+
279
+        return (bool) $updated;
280
+    }
281
+
282
+    /**
283
+     * Return list of internal meta keys.
284
+     *
285
+     * @since 1.0.19
286
+     * @return array
287
+     */
288
+    public function get_internal_meta_keys() {
289
+        return $this->internal_meta_keys;
290
+    }
291
+
292
+    /**
293
+     * Clear any caches.
294
+     *
295
+     * @param GetPaid_Data $object GetPaid_Data object.
296
+     * @since 1.0.19
297
+     */
298
+    protected function clear_caches( &$object ) {
299
+        clean_post_cache( $object->get_id() );
300
+    }
301
+
302
+    /**
303
+     * Method to delete a data object from the database.
304
+     *
305
+     * @param GetPaid_Data $object GetPaid_Data object.
306
+     * @param array    $args Array of args to pass to the delete method.
307
+     *
308
+     * @return void
309
+     */
310
+    public function delete( &$object, $args = array() ) {
311
+        $id          = $object->get_id();
312
+        $object_type = $object->get_object_type();
313
+
314
+        if ( 'invoice' == $object_type ) {
315
+            $object_type = $object->get_type();
316
+        }
317
+
318
+        $args        = wp_parse_args(
319
+            $args,
320
+            array(
321
+                'force_delete' => false,
322
+            )
323
+        );
324
+
325
+        if ( ! $id ) {
326
+            return;
327
+        }
328
+
329
+        if ( $args['force_delete'] ) {
330
+            do_action( "getpaid_delete_$object_type", $object );
331
+            wp_delete_post( $id, true );
332
+            $object->set_id( 0 );
333
+        } else {
334
+            do_action( "getpaid_trash_$object_type", $object );
335
+            wp_trash_post( $id );
336
+            $object->set_status( 'trash' );
337
+        }
338
+    }
339
+
340
+    /**
341
+     * Get the status to save to the post object.
342
+     *
343
+     *
344
+     * @since 1.0.19
345
+     * @param  GetPaid_Data $object GetPaid_Data object.
346
+     * @return string
347
+     */
348
+    protected function get_post_status( $object ) {
349
+        $object_status = $object->get_status( 'edit' );
350
+        $object_type   = $object->get_object_type();
351
+
352
+        if ( ! $object_status ) {
353
+            $object_status = apply_filters( "getpaid_default_{$object_type}_status", 'draft' );
354
+        }
355
+
356
+        return $object_status;
357
+    }
358 358
 
359 359
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-forms.php 1 patch
Indentation   +123 added lines, -123 removed lines patch added patch discarded remove patch
@@ -13,128 +13,128 @@
 block discarded – undo
13 13
 class GetPaid_Payment_Forms {
14 14
 
15 15
     /**
16
-	 * Class constructor
17
-	 *
18
-	 */
19
-	public function __construct() {
20
-
21
-		// Update a payment form's revenue whenever an invoice is paid for or refunded.
22
-		add_action( 'getpaid_invoice_payment_status_changed', array( $this, 'increment_form_revenue' ) );
23
-		add_action( 'getpaid_invoice_payment_status_reversed', array( $this, 'decrease_form_revenue' ) );
24
-
25
-		// Sync form amount whenever invoice statuses change.
26
-		add_action( 'getpaid_invoice_status_changed', array( $this, 'update_form_failed_amount' ), 10, 3 );
27
-		add_action( 'getpaid_invoice_status_changed', array( $this, 'update_form_refunded_amount' ), 10, 3 );
28
-		add_action( 'getpaid_invoice_status_changed', array( $this, 'update_form_cancelled_amount' ), 10, 3 );
29
-
30
-	}
31
-
32
-	/**
33
-	 * Increments a form's revenue whenever there is a payment.
34
-	 *
35
-	 * @param WPInv_Invoice $invoice
36
-	 */
37
-	public function increment_form_revenue( $invoice ) {
38
-
39
-		$form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
40
-		if ( $form->get_id() ) {
41
-			$form->set_earned( $form->get_earned() + $invoice->get_total() );
42
-			$form->save();
43
-		}
44
-
45
-	}
46
-
47
-	/**
48
-	 * Decreases form revenue whenever invoice payment changes.
49
-	 *
50
-	 * @param WPInv_Invoice $invoice
51
-	 */
52
-	public function decrease_form_revenue( $invoice ) {
53
-
54
-		$form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
55
-		if ( $form->get_id() ) {
56
-			$form->set_earned( $form->get_earned() - $invoice->get_total() );
57
-			$form->save();
58
-		}
59
-
60
-	}
61
-
62
-	/**
63
-	 * Updates a form's failed amount.
64
-	 *
65
-	 * @param WPInv_Invoice $invoice
66
-	 * @param string $from
67
-	 * @param string $to
68
-	 */
69
-	public function update_form_failed_amount( $invoice, $from, $to ) {
70
-
71
-		$form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
72
-		if ( $form->get_id() ) {
73
-			return;
74
-		}
75
-
76
-		if ( 'wpi-failed' == $from ) {
77
-			$form->set_failed( $form->get_failed() - $invoice->get_total() );
78
-			$form->save();
79
-		}
80
-
81
-		if ( 'wpi-failed' == $to ) {
82
-			$form->set_failed( $form->get_failed() + $invoice->get_total() );
83
-			$form->save();
84
-		}
85
-
86
-	}
87
-
88
-	/**
89
-	 * Updates a form's refunded amount.
90
-	 *
91
-	 * @param WPInv_Invoice $invoice
92
-	 * @param string $from
93
-	 * @param string $to
94
-	 */
95
-	public function update_form_refunded_amount( $invoice, $from, $to ) {
96
-
97
-		$form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
98
-		if ( $form->get_id() ) {
99
-			return;
100
-		}
101
-
102
-		if ( 'wpi-refunded' == $from ) {
103
-			$form->set_refunded( $form->get_refunded() - $invoice->get_total() );
104
-			$form->save();
105
-		}
106
-
107
-		if ( 'wpi-refunded' == $to ) {
108
-			$form->set_refunded( $form->get_refunded() + $invoice->get_total() );
109
-			$form->save();
110
-		}
111
-
112
-	}
113
-
114
-	/**
115
-	 * Updates a form's cancelled amount.
116
-	 *
117
-	 * @param WPInv_Invoice $invoice
118
-	 * @param string $from
119
-	 * @param string $to
120
-	 */
121
-	public function update_form_cancelled_amount( $invoice, $from, $to ) {
122
-
123
-		$form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
124
-		if ( $form->get_id() ) {
125
-			return;
126
-		}
127
-
128
-		if ( 'wpi-cancelled' == $from ) {
129
-			$form->set_cancelled( $form->get_cancelled() - $invoice->get_total() );
130
-			$form->save();
131
-		}
132
-
133
-		if ( 'wpi-cancelled' == $to ) {
134
-			$form->set_cancelled( $form->get_cancelled() + $invoice->get_total() );
135
-			$form->save();
136
-		}
137
-
138
-	}
16
+     * Class constructor
17
+     *
18
+     */
19
+    public function __construct() {
20
+
21
+        // Update a payment form's revenue whenever an invoice is paid for or refunded.
22
+        add_action( 'getpaid_invoice_payment_status_changed', array( $this, 'increment_form_revenue' ) );
23
+        add_action( 'getpaid_invoice_payment_status_reversed', array( $this, 'decrease_form_revenue' ) );
24
+
25
+        // Sync form amount whenever invoice statuses change.
26
+        add_action( 'getpaid_invoice_status_changed', array( $this, 'update_form_failed_amount' ), 10, 3 );
27
+        add_action( 'getpaid_invoice_status_changed', array( $this, 'update_form_refunded_amount' ), 10, 3 );
28
+        add_action( 'getpaid_invoice_status_changed', array( $this, 'update_form_cancelled_amount' ), 10, 3 );
29
+
30
+    }
31
+
32
+    /**
33
+     * Increments a form's revenue whenever there is a payment.
34
+     *
35
+     * @param WPInv_Invoice $invoice
36
+     */
37
+    public function increment_form_revenue( $invoice ) {
38
+
39
+        $form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
40
+        if ( $form->get_id() ) {
41
+            $form->set_earned( $form->get_earned() + $invoice->get_total() );
42
+            $form->save();
43
+        }
44
+
45
+    }
46
+
47
+    /**
48
+     * Decreases form revenue whenever invoice payment changes.
49
+     *
50
+     * @param WPInv_Invoice $invoice
51
+     */
52
+    public function decrease_form_revenue( $invoice ) {
53
+
54
+        $form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
55
+        if ( $form->get_id() ) {
56
+            $form->set_earned( $form->get_earned() - $invoice->get_total() );
57
+            $form->save();
58
+        }
59
+
60
+    }
61
+
62
+    /**
63
+     * Updates a form's failed amount.
64
+     *
65
+     * @param WPInv_Invoice $invoice
66
+     * @param string $from
67
+     * @param string $to
68
+     */
69
+    public function update_form_failed_amount( $invoice, $from, $to ) {
70
+
71
+        $form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
72
+        if ( $form->get_id() ) {
73
+            return;
74
+        }
75
+
76
+        if ( 'wpi-failed' == $from ) {
77
+            $form->set_failed( $form->get_failed() - $invoice->get_total() );
78
+            $form->save();
79
+        }
80
+
81
+        if ( 'wpi-failed' == $to ) {
82
+            $form->set_failed( $form->get_failed() + $invoice->get_total() );
83
+            $form->save();
84
+        }
85
+
86
+    }
87
+
88
+    /**
89
+     * Updates a form's refunded amount.
90
+     *
91
+     * @param WPInv_Invoice $invoice
92
+     * @param string $from
93
+     * @param string $to
94
+     */
95
+    public function update_form_refunded_amount( $invoice, $from, $to ) {
96
+
97
+        $form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
98
+        if ( $form->get_id() ) {
99
+            return;
100
+        }
101
+
102
+        if ( 'wpi-refunded' == $from ) {
103
+            $form->set_refunded( $form->get_refunded() - $invoice->get_total() );
104
+            $form->save();
105
+        }
106
+
107
+        if ( 'wpi-refunded' == $to ) {
108
+            $form->set_refunded( $form->get_refunded() + $invoice->get_total() );
109
+            $form->save();
110
+        }
111
+
112
+    }
113
+
114
+    /**
115
+     * Updates a form's cancelled amount.
116
+     *
117
+     * @param WPInv_Invoice $invoice
118
+     * @param string $from
119
+     * @param string $to
120
+     */
121
+    public function update_form_cancelled_amount( $invoice, $from, $to ) {
122
+
123
+        $form = new GetPaid_Payment_Form( $invoice->get_payment_form() );
124
+        if ( $form->get_id() ) {
125
+            return;
126
+        }
127
+
128
+        if ( 'wpi-cancelled' == $from ) {
129
+            $form->set_cancelled( $form->get_cancelled() - $invoice->get_total() );
130
+            $form->save();
131
+        }
132
+
133
+        if ( 'wpi-cancelled' == $to ) {
134
+            $form->set_cancelled( $form->get_cancelled() + $invoice->get_total() );
135
+            $form->save();
136
+        }
137
+
138
+    }
139 139
 
140 140
 }
Please login to merge, or discard this patch.
includes/admin/wpinv-admin-functions.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@
 block discarded – undo
56 56
 }
57 57
 
58 58
 function wpinv_admin_messages() {
59
-	settings_errors( 'wpinv-notices' );
59
+    settings_errors( 'wpinv-notices' );
60 60
 }
61 61
 add_action( 'admin_notices', 'wpinv_admin_messages' );
62 62
 
Please login to merge, or discard this patch.
includes/geolocation/class-getpaid-maxmind-database-service.php 1 patch
Indentation   +149 added lines, -149 removed lines patch added patch discarded remove patch
@@ -13,154 +13,154 @@
 block discarded – undo
13 13
  */
14 14
 class GetPaid_MaxMind_Database_Service {
15 15
 
16
-	/**
17
-	 * The name of the MaxMind database to utilize.
18
-	 */
19
-	const DATABASE = 'GeoLite2-Country';
20
-
21
-	/**
22
-	 * The extension for the MaxMind database.
23
-	 */
24
-	const DATABASE_EXTENSION = '.mmdb';
25
-
26
-	/**
27
-	 * A prefix for the MaxMind database filename.
28
-	 *
29
-	 * @var string
30
-	 */
31
-	private $database_prefix;
32
-
33
-	/**
34
-	 * Class constructor.
35
-	 *
36
-	 * @param string|null $database_prefix A prefix for the MaxMind database filename.
37
-	 */
38
-	public function __construct( $database_prefix ) {
39
-		$this->database_prefix = $database_prefix;
40
-	}
41
-
42
-	/**
43
-	 * Fetches the path that the database should be stored.
44
-	 *
45
-	 * @return string The local database path.
46
-	 */
47
-	public function get_database_path() {
48
-		$uploads_dir = wp_upload_dir();
49
-
50
-		$database_path = trailingslashit( $uploads_dir['basedir'] ) . 'invoicing/';
51
-		if ( ! empty( $this->database_prefix ) ) {
52
-			$database_path .= $this->database_prefix . '-';
53
-		}
54
-		$database_path .= self::DATABASE . self::DATABASE_EXTENSION;
55
-
56
-		// Filter the geolocation database storage path.
57
-		return apply_filters( 'getpaid_maxmind_geolocation_database_path', $database_path );
58
-	}
59
-
60
-	/**
61
-	 * Fetches the database from the MaxMind service.
62
-	 *
63
-	 * @param string $license_key The license key to be used when downloading the database.
64
-	 * @return string|WP_Error The path to the database file or an error if invalid.
65
-	 */
66
-	public function download_database( $license_key ) {
67
-
68
-		$download_uri = add_query_arg(
69
-			array(
70
-				'edition_id'  => self::DATABASE,
71
-				'license_key' => urlencode( wpinv_clean( $license_key ) ),
72
-				'suffix'      => 'tar.gz',
73
-			),
74
-			'https://download.maxmind.com/app/geoip_download'
75
-		);
76
-
77
-		// Needed for the download_url call right below.
78
-		require_once ABSPATH . 'wp-admin/includes/file.php';
79
-
80
-		$tmp_archive_path = download_url( esc_url_raw( $download_uri ) );
81
-
82
-		if ( is_wp_error( $tmp_archive_path ) ) {
83
-			// Transform the error into something more informative.
84
-			$error_data = $tmp_archive_path->get_error_data();
85
-			if ( isset( $error_data['code'] ) && $error_data['code'] == 401 ) {
86
-				return new WP_Error(
87
-					'getpaid_maxmind_geolocation_database_license_key',
88
-					__( 'The MaxMind license key is invalid. If you have recently created this key, you may need to wait for it to become active.', 'invoicing' )
89
-				);
90
-			}
91
-
92
-			return new WP_Error( 'getpaid_maxmind_geolocation_database_download', __( 'Failed to download the MaxMind database.', 'invoicing' ) );
93
-		}
94
-
95
-		// Extract the database from the archive.
96
-		return $this->extract_downloaded_database( $tmp_archive_path );
97
-
98
-	}
99
-
100
-	/**
101
-	 * Extracts the downloaded database.
102
-	 *
103
-	 * @param string $tmp_archive_path The database archive path.
104
-	 * @return string|WP_Error The path to the database file or an error if invalid.
105
-	 */
106
-	protected function extract_downloaded_database( $tmp_archive_path ) {
107
-
108
-		// Extract the database from the archive.
109
-		$tmp_database_path = '';
110
-
111
-		try {
112
-
113
-			$file              = new PharData( $tmp_archive_path );
114
-			$tmp_database_path = trailingslashit( dirname( $tmp_archive_path ) ) . trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION;
115
-
116
-			$file->extractTo(
117
-				dirname( $tmp_archive_path ),
118
-				trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION,
119
-				true
120
-			);
121
-
122
-		} catch ( Exception $exception ) {
123
-			return new WP_Error( 'invoicing_maxmind_geolocation_database_archive', $exception->getMessage() );
124
-		} finally {
125
-			// Remove the archive since we only care about a single file in it.
126
-			unlink( $tmp_archive_path );
127
-		}
128
-
129
-		return $tmp_database_path;
130
-	}
131
-
132
-	/**
133
-	 * Fetches the ISO country code associated with an IP address.
134
-	 *
135
-	 * @param string $ip_address The IP address to find the country code for.
136
-	 * @return string The country code for the IP address, or empty if not found.
137
-	 */
138
-	public function get_iso_country_code_for_ip( $ip_address ) {
139
-		$country_code = '';
140
-
141
-		if ( ! class_exists( 'MaxMind\Db\Reader' ) ) {
142
-			return $country_code;
143
-		}
144
-
145
-		$database_path = $this->get_database_path();
146
-		if ( ! file_exists( $database_path ) ) {
147
-			return $country_code;
148
-		}
149
-
150
-		try {
151
-			$reader = new MaxMind\Db\Reader( $database_path );
152
-			$data   = $reader->get( $ip_address );
153
-
154
-			if ( isset( $data['country']['iso_code'] ) ) {
155
-				$country_code = $data['country']['iso_code'];
156
-			}
157
-
158
-			$reader->close();
159
-		} catch ( Exception $e ) {
160
-			wpinv_error_log( $e->getMessage(), 'SOURCE: MaxMind GeoLocation' );
161
-		}
162
-
163
-		return $country_code;
164
-	}
16
+    /**
17
+     * The name of the MaxMind database to utilize.
18
+     */
19
+    const DATABASE = 'GeoLite2-Country';
20
+
21
+    /**
22
+     * The extension for the MaxMind database.
23
+     */
24
+    const DATABASE_EXTENSION = '.mmdb';
25
+
26
+    /**
27
+     * A prefix for the MaxMind database filename.
28
+     *
29
+     * @var string
30
+     */
31
+    private $database_prefix;
32
+
33
+    /**
34
+     * Class constructor.
35
+     *
36
+     * @param string|null $database_prefix A prefix for the MaxMind database filename.
37
+     */
38
+    public function __construct( $database_prefix ) {
39
+        $this->database_prefix = $database_prefix;
40
+    }
41
+
42
+    /**
43
+     * Fetches the path that the database should be stored.
44
+     *
45
+     * @return string The local database path.
46
+     */
47
+    public function get_database_path() {
48
+        $uploads_dir = wp_upload_dir();
49
+
50
+        $database_path = trailingslashit( $uploads_dir['basedir'] ) . 'invoicing/';
51
+        if ( ! empty( $this->database_prefix ) ) {
52
+            $database_path .= $this->database_prefix . '-';
53
+        }
54
+        $database_path .= self::DATABASE . self::DATABASE_EXTENSION;
55
+
56
+        // Filter the geolocation database storage path.
57
+        return apply_filters( 'getpaid_maxmind_geolocation_database_path', $database_path );
58
+    }
59
+
60
+    /**
61
+     * Fetches the database from the MaxMind service.
62
+     *
63
+     * @param string $license_key The license key to be used when downloading the database.
64
+     * @return string|WP_Error The path to the database file or an error if invalid.
65
+     */
66
+    public function download_database( $license_key ) {
67
+
68
+        $download_uri = add_query_arg(
69
+            array(
70
+                'edition_id'  => self::DATABASE,
71
+                'license_key' => urlencode( wpinv_clean( $license_key ) ),
72
+                'suffix'      => 'tar.gz',
73
+            ),
74
+            'https://download.maxmind.com/app/geoip_download'
75
+        );
76
+
77
+        // Needed for the download_url call right below.
78
+        require_once ABSPATH . 'wp-admin/includes/file.php';
79
+
80
+        $tmp_archive_path = download_url( esc_url_raw( $download_uri ) );
81
+
82
+        if ( is_wp_error( $tmp_archive_path ) ) {
83
+            // Transform the error into something more informative.
84
+            $error_data = $tmp_archive_path->get_error_data();
85
+            if ( isset( $error_data['code'] ) && $error_data['code'] == 401 ) {
86
+                return new WP_Error(
87
+                    'getpaid_maxmind_geolocation_database_license_key',
88
+                    __( 'The MaxMind license key is invalid. If you have recently created this key, you may need to wait for it to become active.', 'invoicing' )
89
+                );
90
+            }
91
+
92
+            return new WP_Error( 'getpaid_maxmind_geolocation_database_download', __( 'Failed to download the MaxMind database.', 'invoicing' ) );
93
+        }
94
+
95
+        // Extract the database from the archive.
96
+        return $this->extract_downloaded_database( $tmp_archive_path );
97
+
98
+    }
99
+
100
+    /**
101
+     * Extracts the downloaded database.
102
+     *
103
+     * @param string $tmp_archive_path The database archive path.
104
+     * @return string|WP_Error The path to the database file or an error if invalid.
105
+     */
106
+    protected function extract_downloaded_database( $tmp_archive_path ) {
107
+
108
+        // Extract the database from the archive.
109
+        $tmp_database_path = '';
110
+
111
+        try {
112
+
113
+            $file              = new PharData( $tmp_archive_path );
114
+            $tmp_database_path = trailingslashit( dirname( $tmp_archive_path ) ) . trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION;
115
+
116
+            $file->extractTo(
117
+                dirname( $tmp_archive_path ),
118
+                trailingslashit( $file->current()->getFilename() ) . self::DATABASE . self::DATABASE_EXTENSION,
119
+                true
120
+            );
121
+
122
+        } catch ( Exception $exception ) {
123
+            return new WP_Error( 'invoicing_maxmind_geolocation_database_archive', $exception->getMessage() );
124
+        } finally {
125
+            // Remove the archive since we only care about a single file in it.
126
+            unlink( $tmp_archive_path );
127
+        }
128
+
129
+        return $tmp_database_path;
130
+    }
131
+
132
+    /**
133
+     * Fetches the ISO country code associated with an IP address.
134
+     *
135
+     * @param string $ip_address The IP address to find the country code for.
136
+     * @return string The country code for the IP address, or empty if not found.
137
+     */
138
+    public function get_iso_country_code_for_ip( $ip_address ) {
139
+        $country_code = '';
140
+
141
+        if ( ! class_exists( 'MaxMind\Db\Reader' ) ) {
142
+            return $country_code;
143
+        }
144
+
145
+        $database_path = $this->get_database_path();
146
+        if ( ! file_exists( $database_path ) ) {
147
+            return $country_code;
148
+        }
149
+
150
+        try {
151
+            $reader = new MaxMind\Db\Reader( $database_path );
152
+            $data   = $reader->get( $ip_address );
153
+
154
+            if ( isset( $data['country']['iso_code'] ) ) {
155
+                $country_code = $data['country']['iso_code'];
156
+            }
157
+
158
+            $reader->close();
159
+        } catch ( Exception $e ) {
160
+            wpinv_error_log( $e->getMessage(), 'SOURCE: MaxMind GeoLocation' );
161
+        }
162
+
163
+        return $country_code;
164
+    }
165 165
 
166 166
 }
Please login to merge, or discard this patch.
includes/wpinv-tax-functions.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -215,16 +215,16 @@  discard block
 block discarded – undo
215 215
 function getpaid_prepare_item_tax( $item, $tax_name, $tax_amount, $recurring_tax_amount ) {
216 216
 
217 217
     $initial_tax   = $tax_amount;
218
-	$recurring_tax = 0;
218
+    $recurring_tax = 0;
219 219
 
220 220
     if ( $item->is_recurring() ) {
221
-		$recurring_tax = $recurring_tax_amount;
222
-	}
221
+        $recurring_tax = $recurring_tax_amount;
222
+    }
223 223
 
224
-	return array(
225
-		'name'          => sanitize_text_field( $tax_name ),
226
-		'initial_tax'   => $initial_tax,
227
-		'recurring_tax' => $recurring_tax,
224
+    return array(
225
+        'name'          => sanitize_text_field( $tax_name ),
226
+        'initial_tax'   => $initial_tax,
227
+        'recurring_tax' => $recurring_tax,
228 228
     );
229 229
 
230 230
 }
@@ -328,7 +328,7 @@  discard block
 block discarded – undo
328 328
  */
329 329
 function wpinv_should_validate_vat_number() {
330 330
     $validate = wpinv_get_option( 'validate_vat_number' );
331
-	return ! empty( $validate );
331
+    return ! empty( $validate );
332 332
 }
333 333
 
334 334
 function wpinv_sales_tax_for_year( $year = null ) {
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-getpaid-meta-box-item-vat.php 1 patch
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  */
9 9
 
10 10
 if ( ! defined( 'ABSPATH' ) ) {
11
-	exit; // Exit if accessed directly
11
+    exit; // Exit if accessed directly
12 12
 }
13 13
 
14 14
 /**
@@ -17,10 +17,10 @@  discard block
 block discarded – undo
17 17
 class GetPaid_Meta_Box_Item_VAT {
18 18
 
19 19
     /**
20
-	 * Output the metabox.
21
-	 *
22
-	 * @param WP_Post $post
23
-	 */
20
+     * Output the metabox.
21
+     *
22
+     * @param WP_Post $post
23
+     */
24 24
     public static function output( $post ) {
25 25
 
26 26
         // Prepare the item.
@@ -46,10 +46,10 @@  discard block
 block discarded – undo
46 46
     }
47 47
 
48 48
     /**
49
-	 * Output the VAT rules settings.
50
-	 *
51
-	 * @param WPInv_Item $item
52
-	 */
49
+     * Output the VAT rules settings.
50
+     *
51
+     * @param WPInv_Item $item
52
+     */
53 53
     public static function output_vat_rules( $item ) {
54 54
         ?>
55 55
 
@@ -87,10 +87,10 @@  discard block
 block discarded – undo
87 87
     }
88 88
 
89 89
     /**
90
-	 * Output the VAT class settings.
91
-	 *
92
-	 * @param WPInv_Item $item
93
-	 */
90
+     * Output the VAT class settings.
91
+     *
92
+     * @param WPInv_Item $item
93
+     */
94 94
     public static function output_vat_classes( $item ) {
95 95
         ?>
96 96
 
Please login to merge, or discard this patch.