@@ -18,179 +18,179 @@ |
||
18 | 18 | */ |
19 | 19 | class GetPaid_REST_Report_Top_Sellers_Controller extends GetPaid_REST_Report_Sales_Controller { |
20 | 20 | |
21 | - /** |
|
22 | - * Route base. |
|
23 | - * |
|
24 | - * @var string |
|
25 | - */ |
|
26 | - protected $rest_base = 'reports/top_sellers'; |
|
27 | - |
|
28 | - /** |
|
29 | - * Get top sellers report. |
|
30 | - * |
|
31 | - * @param WP_REST_Request $request |
|
32 | - * @return array|WP_Error |
|
33 | - */ |
|
34 | - public function get_items( $request ) { |
|
35 | - |
|
36 | - // Prepare items. |
|
37 | - $this->report_range = $this->get_date_range( $request ); |
|
38 | - $report_data = $this->get_report_data(); |
|
39 | - |
|
40 | - $top_sellers = array(); |
|
41 | - |
|
42 | - foreach ( $report_data as $item ) { |
|
43 | - |
|
44 | - $item_obj = new WPInv_Item( $item ); |
|
45 | - $item_name = $item->invoice_item_name; |
|
46 | - $item_qty = floatval( $item->invoice_item_qty ); |
|
47 | - $item_id = absint( $item->invoice_item_id ); |
|
48 | - $price = sanitize_text_field( wpinv_price( $item->invoice_item_price ) ); |
|
49 | - |
|
50 | - $item_obj = new WPInv_Item( $item_id ); |
|
51 | - |
|
52 | - if ( $item_obj->exists() ) { |
|
53 | - $item_name = $item_obj->get_name(); |
|
54 | - } else { |
|
55 | - $item_id = 0; |
|
56 | - } |
|
57 | - |
|
58 | - $top_sellers[] = array( |
|
59 | - 'name' =>sanitize_text_field( $item_name ), |
|
60 | - 'item_id' => $item_id, |
|
61 | - 'quantity' => $item_qty, |
|
62 | - 'earnings' => wpinv_round_amount( $item->invoice_item_price ), |
|
63 | - 'earnings_formatted' => sanitize_text_field( wpinv_price( $price ) ), |
|
64 | - ); |
|
65 | - |
|
66 | - } |
|
67 | - |
|
68 | - $data = array(); |
|
69 | - foreach ( $top_sellers as $top_seller ) { |
|
70 | - $item = $this->prepare_item_for_response( (object) $top_seller, $request ); |
|
71 | - $data[] = $this->prepare_response_for_collection( $item ); |
|
72 | - } |
|
73 | - |
|
74 | - return rest_ensure_response( $data ); |
|
75 | - |
|
76 | - } |
|
77 | - |
|
78 | - /** |
|
79 | - * Prepare a report sales object for serialization. |
|
80 | - * |
|
81 | - * @param stdClass $top_seller |
|
82 | - * @param WP_REST_Request $request Request object. |
|
83 | - * @return WP_REST_Response $response Response data. |
|
84 | - */ |
|
85 | - public function prepare_item_for_response( $top_seller, $request ) { |
|
86 | - $data = (array) $top_seller; |
|
87 | - |
|
88 | - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
89 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
90 | - $data = $this->filter_response_by_context( $data, $context ); |
|
91 | - |
|
92 | - // Wrap the data in a response object. |
|
93 | - $response = rest_ensure_response( $data ); |
|
94 | - $links = array( |
|
95 | - 'about' => array( |
|
96 | - 'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ), |
|
97 | - ), |
|
98 | - ); |
|
99 | - |
|
100 | - if ( ! empty( $top_seller->item_id ) ) { |
|
101 | - $links['item'] = array( |
|
102 | - 'href' => rest_url( sprintf( '/%s/items/%s', $this->namespace, $top_seller->item_id ) ), |
|
103 | - 'embeddable' => true, |
|
104 | - ); |
|
105 | - } |
|
106 | - |
|
107 | - $response->add_links( $links ); |
|
108 | - return apply_filters( 'getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request ); |
|
109 | - } |
|
110 | - |
|
111 | - /** |
|
112 | - * Get all data needed for this report and store in the class. |
|
113 | - */ |
|
114 | - protected function query_report_data() { |
|
115 | - |
|
116 | - $this->report_data = GetPaid_Reports_Helper::get_invoice_report_data( |
|
117 | - array( |
|
118 | - 'data' => array( |
|
119 | - 'quantity' => array( |
|
120 | - 'type' => 'invoice_item', |
|
121 | - 'function' => 'SUM', |
|
122 | - 'name' => 'invoice_item_qty', |
|
123 | - ), |
|
124 | - 'item_id' => array( |
|
125 | - 'type' => 'invoice_item', |
|
126 | - 'function' => '', |
|
127 | - 'name' => 'invoice_item_id', |
|
128 | - ), |
|
129 | - 'item_name' => array( |
|
130 | - 'type' => 'invoice_item', |
|
131 | - 'function' => '', |
|
132 | - 'name' => 'invoice_item_name', |
|
133 | - ), |
|
134 | - 'price' => array( |
|
135 | - 'type' => 'invoice_item', |
|
136 | - 'function' => 'SUM', |
|
137 | - 'name' => 'invoice_item_price', |
|
138 | - ), |
|
139 | - ), |
|
140 | - 'group_by' => 'invoice_item_id', |
|
141 | - 'order_by' => 'invoice_item_qty DESC', |
|
142 | - 'query_type' => 'get_results', |
|
143 | - 'limit' => 10, |
|
144 | - 'filter_range' => $this->report_range, |
|
145 | - ) |
|
146 | - ); |
|
147 | - |
|
148 | - } |
|
149 | - |
|
150 | - /** |
|
151 | - * Get the Report's schema, conforming to JSON Schema. |
|
152 | - * |
|
153 | - * @return array |
|
154 | - */ |
|
155 | - public function get_item_schema() { |
|
156 | - $schema = array( |
|
157 | - '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
158 | - 'title' => $this->rest_base, |
|
159 | - 'type' => 'object', |
|
160 | - 'properties' => array( |
|
161 | - 'name' => array( |
|
162 | - 'description' => __( 'Item name.', 'invoicing' ), |
|
163 | - 'type' => 'string', |
|
164 | - 'context' => array( 'view' ), |
|
165 | - 'readonly' => true, |
|
166 | - ), |
|
167 | - 'item_id' => array( |
|
168 | - 'description' => __( 'Item ID.', 'invoicing' ), |
|
169 | - 'type' => 'integer', |
|
170 | - 'context' => array( 'view' ), |
|
171 | - 'readonly' => true, |
|
172 | - ), |
|
173 | - 'quantity' => array( |
|
174 | - 'description' => __( 'Total number of purchases.', 'invoicing' ), |
|
175 | - 'type' => 'number', |
|
176 | - 'context' => array( 'view' ), |
|
177 | - 'readonly' => true, |
|
178 | - ), |
|
179 | - 'earnings' => array( |
|
180 | - 'description' => __( 'Total earnings for the item.', 'invoicing' ), |
|
181 | - 'type' => 'number', |
|
182 | - 'context' => array( 'view' ), |
|
183 | - 'readonly' => true, |
|
184 | - ), |
|
185 | - 'earnings_formatted"' => array( |
|
186 | - 'description' => __( 'Total earnings (formatted) for the item.', 'invoicing' ), |
|
187 | - 'type' => 'string', |
|
188 | - 'context' => array( 'view' ), |
|
189 | - 'readonly' => true, |
|
190 | - ), |
|
191 | - ), |
|
192 | - ); |
|
193 | - |
|
194 | - return $this->add_additional_fields_schema( $schema ); |
|
195 | - } |
|
21 | + /** |
|
22 | + * Route base. |
|
23 | + * |
|
24 | + * @var string |
|
25 | + */ |
|
26 | + protected $rest_base = 'reports/top_sellers'; |
|
27 | + |
|
28 | + /** |
|
29 | + * Get top sellers report. |
|
30 | + * |
|
31 | + * @param WP_REST_Request $request |
|
32 | + * @return array|WP_Error |
|
33 | + */ |
|
34 | + public function get_items( $request ) { |
|
35 | + |
|
36 | + // Prepare items. |
|
37 | + $this->report_range = $this->get_date_range( $request ); |
|
38 | + $report_data = $this->get_report_data(); |
|
39 | + |
|
40 | + $top_sellers = array(); |
|
41 | + |
|
42 | + foreach ( $report_data as $item ) { |
|
43 | + |
|
44 | + $item_obj = new WPInv_Item( $item ); |
|
45 | + $item_name = $item->invoice_item_name; |
|
46 | + $item_qty = floatval( $item->invoice_item_qty ); |
|
47 | + $item_id = absint( $item->invoice_item_id ); |
|
48 | + $price = sanitize_text_field( wpinv_price( $item->invoice_item_price ) ); |
|
49 | + |
|
50 | + $item_obj = new WPInv_Item( $item_id ); |
|
51 | + |
|
52 | + if ( $item_obj->exists() ) { |
|
53 | + $item_name = $item_obj->get_name(); |
|
54 | + } else { |
|
55 | + $item_id = 0; |
|
56 | + } |
|
57 | + |
|
58 | + $top_sellers[] = array( |
|
59 | + 'name' =>sanitize_text_field( $item_name ), |
|
60 | + 'item_id' => $item_id, |
|
61 | + 'quantity' => $item_qty, |
|
62 | + 'earnings' => wpinv_round_amount( $item->invoice_item_price ), |
|
63 | + 'earnings_formatted' => sanitize_text_field( wpinv_price( $price ) ), |
|
64 | + ); |
|
65 | + |
|
66 | + } |
|
67 | + |
|
68 | + $data = array(); |
|
69 | + foreach ( $top_sellers as $top_seller ) { |
|
70 | + $item = $this->prepare_item_for_response( (object) $top_seller, $request ); |
|
71 | + $data[] = $this->prepare_response_for_collection( $item ); |
|
72 | + } |
|
73 | + |
|
74 | + return rest_ensure_response( $data ); |
|
75 | + |
|
76 | + } |
|
77 | + |
|
78 | + /** |
|
79 | + * Prepare a report sales object for serialization. |
|
80 | + * |
|
81 | + * @param stdClass $top_seller |
|
82 | + * @param WP_REST_Request $request Request object. |
|
83 | + * @return WP_REST_Response $response Response data. |
|
84 | + */ |
|
85 | + public function prepare_item_for_response( $top_seller, $request ) { |
|
86 | + $data = (array) $top_seller; |
|
87 | + |
|
88 | + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
89 | + $data = $this->add_additional_fields_to_object( $data, $request ); |
|
90 | + $data = $this->filter_response_by_context( $data, $context ); |
|
91 | + |
|
92 | + // Wrap the data in a response object. |
|
93 | + $response = rest_ensure_response( $data ); |
|
94 | + $links = array( |
|
95 | + 'about' => array( |
|
96 | + 'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ), |
|
97 | + ), |
|
98 | + ); |
|
99 | + |
|
100 | + if ( ! empty( $top_seller->item_id ) ) { |
|
101 | + $links['item'] = array( |
|
102 | + 'href' => rest_url( sprintf( '/%s/items/%s', $this->namespace, $top_seller->item_id ) ), |
|
103 | + 'embeddable' => true, |
|
104 | + ); |
|
105 | + } |
|
106 | + |
|
107 | + $response->add_links( $links ); |
|
108 | + return apply_filters( 'getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request ); |
|
109 | + } |
|
110 | + |
|
111 | + /** |
|
112 | + * Get all data needed for this report and store in the class. |
|
113 | + */ |
|
114 | + protected function query_report_data() { |
|
115 | + |
|
116 | + $this->report_data = GetPaid_Reports_Helper::get_invoice_report_data( |
|
117 | + array( |
|
118 | + 'data' => array( |
|
119 | + 'quantity' => array( |
|
120 | + 'type' => 'invoice_item', |
|
121 | + 'function' => 'SUM', |
|
122 | + 'name' => 'invoice_item_qty', |
|
123 | + ), |
|
124 | + 'item_id' => array( |
|
125 | + 'type' => 'invoice_item', |
|
126 | + 'function' => '', |
|
127 | + 'name' => 'invoice_item_id', |
|
128 | + ), |
|
129 | + 'item_name' => array( |
|
130 | + 'type' => 'invoice_item', |
|
131 | + 'function' => '', |
|
132 | + 'name' => 'invoice_item_name', |
|
133 | + ), |
|
134 | + 'price' => array( |
|
135 | + 'type' => 'invoice_item', |
|
136 | + 'function' => 'SUM', |
|
137 | + 'name' => 'invoice_item_price', |
|
138 | + ), |
|
139 | + ), |
|
140 | + 'group_by' => 'invoice_item_id', |
|
141 | + 'order_by' => 'invoice_item_qty DESC', |
|
142 | + 'query_type' => 'get_results', |
|
143 | + 'limit' => 10, |
|
144 | + 'filter_range' => $this->report_range, |
|
145 | + ) |
|
146 | + ); |
|
147 | + |
|
148 | + } |
|
149 | + |
|
150 | + /** |
|
151 | + * Get the Report's schema, conforming to JSON Schema. |
|
152 | + * |
|
153 | + * @return array |
|
154 | + */ |
|
155 | + public function get_item_schema() { |
|
156 | + $schema = array( |
|
157 | + '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
158 | + 'title' => $this->rest_base, |
|
159 | + 'type' => 'object', |
|
160 | + 'properties' => array( |
|
161 | + 'name' => array( |
|
162 | + 'description' => __( 'Item name.', 'invoicing' ), |
|
163 | + 'type' => 'string', |
|
164 | + 'context' => array( 'view' ), |
|
165 | + 'readonly' => true, |
|
166 | + ), |
|
167 | + 'item_id' => array( |
|
168 | + 'description' => __( 'Item ID.', 'invoicing' ), |
|
169 | + 'type' => 'integer', |
|
170 | + 'context' => array( 'view' ), |
|
171 | + 'readonly' => true, |
|
172 | + ), |
|
173 | + 'quantity' => array( |
|
174 | + 'description' => __( 'Total number of purchases.', 'invoicing' ), |
|
175 | + 'type' => 'number', |
|
176 | + 'context' => array( 'view' ), |
|
177 | + 'readonly' => true, |
|
178 | + ), |
|
179 | + 'earnings' => array( |
|
180 | + 'description' => __( 'Total earnings for the item.', 'invoicing' ), |
|
181 | + 'type' => 'number', |
|
182 | + 'context' => array( 'view' ), |
|
183 | + 'readonly' => true, |
|
184 | + ), |
|
185 | + 'earnings_formatted"' => array( |
|
186 | + 'description' => __( 'Total earnings (formatted) for the item.', 'invoicing' ), |
|
187 | + 'type' => 'string', |
|
188 | + 'context' => array( 'view' ), |
|
189 | + 'readonly' => true, |
|
190 | + ), |
|
191 | + ), |
|
192 | + ); |
|
193 | + |
|
194 | + return $this->add_additional_fields_schema( $schema ); |
|
195 | + } |
|
196 | 196 | } |
@@ -9,7 +9,7 @@ discard block |
||
9 | 9 | * @since 2.0.0 |
10 | 10 | */ |
11 | 11 | |
12 | -defined( 'ABSPATH' ) || exit; |
|
12 | +defined('ABSPATH') || exit; |
|
13 | 13 | |
14 | 14 | /** |
15 | 15 | * GetPaid REST top sellers controller class. |
@@ -31,47 +31,47 @@ discard block |
||
31 | 31 | * @param WP_REST_Request $request |
32 | 32 | * @return array|WP_Error |
33 | 33 | */ |
34 | - public function get_items( $request ) { |
|
34 | + public function get_items($request) { |
|
35 | 35 | |
36 | 36 | // Prepare items. |
37 | - $this->report_range = $this->get_date_range( $request ); |
|
37 | + $this->report_range = $this->get_date_range($request); |
|
38 | 38 | $report_data = $this->get_report_data(); |
39 | 39 | |
40 | 40 | $top_sellers = array(); |
41 | 41 | |
42 | - foreach ( $report_data as $item ) { |
|
42 | + foreach ($report_data as $item) { |
|
43 | 43 | |
44 | - $item_obj = new WPInv_Item( $item ); |
|
44 | + $item_obj = new WPInv_Item($item); |
|
45 | 45 | $item_name = $item->invoice_item_name; |
46 | - $item_qty = floatval( $item->invoice_item_qty ); |
|
47 | - $item_id = absint( $item->invoice_item_id ); |
|
48 | - $price = sanitize_text_field( wpinv_price( $item->invoice_item_price ) ); |
|
46 | + $item_qty = floatval($item->invoice_item_qty); |
|
47 | + $item_id = absint($item->invoice_item_id); |
|
48 | + $price = sanitize_text_field(wpinv_price($item->invoice_item_price)); |
|
49 | 49 | |
50 | - $item_obj = new WPInv_Item( $item_id ); |
|
50 | + $item_obj = new WPInv_Item($item_id); |
|
51 | 51 | |
52 | - if ( $item_obj->exists() ) { |
|
52 | + if ($item_obj->exists()) { |
|
53 | 53 | $item_name = $item_obj->get_name(); |
54 | 54 | } else { |
55 | 55 | $item_id = 0; |
56 | 56 | } |
57 | 57 | |
58 | 58 | $top_sellers[] = array( |
59 | - 'name' =>sanitize_text_field( $item_name ), |
|
59 | + 'name' =>sanitize_text_field($item_name), |
|
60 | 60 | 'item_id' => $item_id, |
61 | 61 | 'quantity' => $item_qty, |
62 | - 'earnings' => wpinv_round_amount( $item->invoice_item_price ), |
|
63 | - 'earnings_formatted' => sanitize_text_field( wpinv_price( $price ) ), |
|
62 | + 'earnings' => wpinv_round_amount($item->invoice_item_price), |
|
63 | + 'earnings_formatted' => sanitize_text_field(wpinv_price($price)), |
|
64 | 64 | ); |
65 | 65 | |
66 | 66 | } |
67 | 67 | |
68 | 68 | $data = array(); |
69 | - foreach ( $top_sellers as $top_seller ) { |
|
70 | - $item = $this->prepare_item_for_response( (object) $top_seller, $request ); |
|
71 | - $data[] = $this->prepare_response_for_collection( $item ); |
|
69 | + foreach ($top_sellers as $top_seller) { |
|
70 | + $item = $this->prepare_item_for_response((object) $top_seller, $request); |
|
71 | + $data[] = $this->prepare_response_for_collection($item); |
|
72 | 72 | } |
73 | 73 | |
74 | - return rest_ensure_response( $data ); |
|
74 | + return rest_ensure_response($data); |
|
75 | 75 | |
76 | 76 | } |
77 | 77 | |
@@ -82,30 +82,30 @@ discard block |
||
82 | 82 | * @param WP_REST_Request $request Request object. |
83 | 83 | * @return WP_REST_Response $response Response data. |
84 | 84 | */ |
85 | - public function prepare_item_for_response( $top_seller, $request ) { |
|
85 | + public function prepare_item_for_response($top_seller, $request) { |
|
86 | 86 | $data = (array) $top_seller; |
87 | 87 | |
88 | - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
89 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
90 | - $data = $this->filter_response_by_context( $data, $context ); |
|
88 | + $context = !empty($request['context']) ? $request['context'] : 'view'; |
|
89 | + $data = $this->add_additional_fields_to_object($data, $request); |
|
90 | + $data = $this->filter_response_by_context($data, $context); |
|
91 | 91 | |
92 | 92 | // Wrap the data in a response object. |
93 | - $response = rest_ensure_response( $data ); |
|
93 | + $response = rest_ensure_response($data); |
|
94 | 94 | $links = array( |
95 | 95 | 'about' => array( |
96 | - 'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ), |
|
96 | + 'href' => rest_url(sprintf('%s/reports', $this->namespace)), |
|
97 | 97 | ), |
98 | 98 | ); |
99 | 99 | |
100 | - if ( ! empty( $top_seller->item_id ) ) { |
|
101 | - $links['item'] = array( |
|
102 | - 'href' => rest_url( sprintf( '/%s/items/%s', $this->namespace, $top_seller->item_id ) ), |
|
100 | + if (!empty($top_seller->item_id)) { |
|
101 | + $links['item'] = array( |
|
102 | + 'href' => rest_url(sprintf('/%s/items/%s', $this->namespace, $top_seller->item_id)), |
|
103 | 103 | 'embeddable' => true, |
104 | 104 | ); |
105 | 105 | } |
106 | 106 | |
107 | - $response->add_links( $links ); |
|
108 | - return apply_filters( 'getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request ); |
|
107 | + $response->add_links($links); |
|
108 | + return apply_filters('getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request); |
|
109 | 109 | } |
110 | 110 | |
111 | 111 | /** |
@@ -159,38 +159,38 @@ discard block |
||
159 | 159 | 'type' => 'object', |
160 | 160 | 'properties' => array( |
161 | 161 | 'name' => array( |
162 | - 'description' => __( 'Item name.', 'invoicing' ), |
|
162 | + 'description' => __('Item name.', 'invoicing'), |
|
163 | 163 | 'type' => 'string', |
164 | - 'context' => array( 'view' ), |
|
164 | + 'context' => array('view'), |
|
165 | 165 | 'readonly' => true, |
166 | 166 | ), |
167 | 167 | 'item_id' => array( |
168 | - 'description' => __( 'Item ID.', 'invoicing' ), |
|
168 | + 'description' => __('Item ID.', 'invoicing'), |
|
169 | 169 | 'type' => 'integer', |
170 | - 'context' => array( 'view' ), |
|
170 | + 'context' => array('view'), |
|
171 | 171 | 'readonly' => true, |
172 | 172 | ), |
173 | 173 | 'quantity' => array( |
174 | - 'description' => __( 'Total number of purchases.', 'invoicing' ), |
|
174 | + 'description' => __('Total number of purchases.', 'invoicing'), |
|
175 | 175 | 'type' => 'number', |
176 | - 'context' => array( 'view' ), |
|
176 | + 'context' => array('view'), |
|
177 | 177 | 'readonly' => true, |
178 | 178 | ), |
179 | 179 | 'earnings' => array( |
180 | - 'description' => __( 'Total earnings for the item.', 'invoicing' ), |
|
180 | + 'description' => __('Total earnings for the item.', 'invoicing'), |
|
181 | 181 | 'type' => 'number', |
182 | - 'context' => array( 'view' ), |
|
182 | + 'context' => array('view'), |
|
183 | 183 | 'readonly' => true, |
184 | 184 | ), |
185 | 185 | 'earnings_formatted"' => array( |
186 | - 'description' => __( 'Total earnings (formatted) for the item.', 'invoicing' ), |
|
186 | + 'description' => __('Total earnings (formatted) for the item.', 'invoicing'), |
|
187 | 187 | 'type' => 'string', |
188 | - 'context' => array( 'view' ), |
|
188 | + 'context' => array('view'), |
|
189 | 189 | 'readonly' => true, |
190 | 190 | ), |
191 | 191 | ), |
192 | 192 | ); |
193 | 193 | |
194 | - return $this->add_additional_fields_schema( $schema ); |
|
194 | + return $this->add_additional_fields_schema($schema); |
|
195 | 195 | } |
196 | 196 | } |
@@ -13,629 +13,629 @@ |
||
13 | 13 | |
14 | 14 | return array( |
15 | 15 | |
16 | - 'id' => array( |
|
17 | - 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
18 | - 'type' => 'integer', |
|
19 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
20 | - 'readonly' => true, |
|
21 | - ), |
|
22 | - |
|
23 | - 'parent_id' => array( |
|
24 | - 'description' => __( 'Parent invoice ID.', 'invoicing' ), |
|
25 | - 'type' => 'integer', |
|
26 | - 'minimum' => 0, |
|
27 | - 'default' => 0, |
|
28 | - 'context' => array( 'view', 'edit' ), |
|
29 | - ), |
|
30 | - |
|
31 | - 'key' => array( |
|
32 | - 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
33 | - 'type' => 'string', |
|
34 | - 'context' => array( 'view', 'edit' ), |
|
35 | - 'readonly' => true, |
|
36 | - ), |
|
37 | - |
|
38 | - 'number' => array( |
|
39 | - 'description' => __( 'A unique number for the invoice.', 'invoicing' ), |
|
40 | - 'type' => 'string', |
|
41 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
42 | - ), |
|
43 | - |
|
44 | - 'type' => array( |
|
45 | - 'description' => __( 'Get the invoice type (e.g invoice, quote etc).', 'invoicing' ), |
|
46 | - 'type' => 'string', |
|
47 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
48 | - 'readonly' => true, |
|
49 | - ), |
|
50 | - |
|
51 | - 'post_type' => array( |
|
52 | - 'description' => __( 'Get the invoice post type (e.g wpi_invoice, wpi_quote etc).', 'invoicing' ), |
|
53 | - 'type' => 'string', |
|
54 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
55 | - 'readonly' => true, |
|
56 | - ), |
|
57 | - |
|
58 | - 'version' => array( |
|
59 | - 'description' => __( 'Version of GetPaid/Invoicing which last updated the invoice.', 'invoicing' ), |
|
60 | - 'type' => 'integer', |
|
61 | - 'context' => array( 'view', 'edit' ), |
|
62 | - 'readonly' => true, |
|
63 | - ), |
|
64 | - |
|
65 | - 'template' => array( |
|
66 | - 'description' => __( 'The invoice template.', 'invoicing' ), |
|
67 | - 'type' => 'string', |
|
68 | - 'default' => 'quantity', |
|
69 | - 'enum' => array( 'quantity', 'hours', 'amount' ), |
|
70 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
71 | - ), |
|
72 | - |
|
73 | - 'status' => array( |
|
74 | - 'description' => __( 'Invoice status.', 'invoicing' ), |
|
75 | - 'type' => 'string', |
|
76 | - 'default' => 'wpi-pending', |
|
77 | - 'enum' => array_keys( wpinv_get_invoice_statuses( true ) ), |
|
78 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
79 | - ), |
|
80 | - |
|
81 | - 'status_nicename' => array( |
|
82 | - 'description' => __( 'A human readable name for the invoice status.', 'invoicing' ), |
|
83 | - 'type' => 'string', |
|
84 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
85 | - 'readonly' => true, |
|
86 | - ), |
|
87 | - |
|
88 | - 'currency' => array( |
|
89 | - 'description' => __( 'The invoice currency in ISO format.', 'invoicing' ), |
|
90 | - 'type' => 'string', |
|
91 | - 'default' => wpinv_get_currency(), |
|
92 | - 'enum' => array_keys( wpinv_get_currencies() ), |
|
93 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
94 | - ), |
|
95 | - |
|
96 | - 'date_created' => array( |
|
97 | - 'description' => __( "The date the invoice was created, in the site's timezone.", 'invoicing' ), |
|
98 | - 'type' => 'string', |
|
99 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
100 | - ), |
|
101 | - |
|
102 | - 'date_created_gmt' => array( |
|
103 | - 'description' => __( 'The GMT date the invoice was created.', 'invoicing' ), |
|
104 | - 'type' => 'string', |
|
105 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
106 | - 'readonly' => true, |
|
107 | - ), |
|
108 | - |
|
109 | - 'date_modified' => array( |
|
110 | - 'description' => __( "The date the invoice was last modified, in the site's timezone.", 'invoicing' ), |
|
111 | - 'type' => 'string', |
|
112 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
113 | - 'readonly' => true, |
|
114 | - ), |
|
115 | - |
|
116 | - 'date_modified_gmt' => array( |
|
117 | - 'description' => __( 'The GMT date the invoice was last modified.', 'invoicing' ), |
|
118 | - 'type' => 'string', |
|
119 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
120 | - 'readonly' => true, |
|
121 | - ), |
|
122 | - |
|
123 | - 'due_date' => array( |
|
124 | - 'description' => __( "The invoice's due date, in the site's timezone.", 'invoicing' ), |
|
125 | - 'type' => 'string', |
|
126 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
127 | - ), |
|
128 | - |
|
129 | - 'due_date_gmt' => array( |
|
130 | - 'description' => __( 'The GMT date the invoice is/was due.', 'invoicing' ), |
|
131 | - 'type' => 'string', |
|
132 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
133 | - 'readonly' => true, |
|
134 | - ), |
|
135 | - |
|
136 | - 'completed_date' => array( |
|
137 | - 'description' => __( "The date the invoice was paid, in the site's timezone.", 'invoicing' ), |
|
138 | - 'type' => 'string', |
|
139 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
140 | - 'readonly' => true, |
|
141 | - ), |
|
142 | - |
|
143 | - 'completed_date_gmt' => array( |
|
144 | - 'description' => __( 'The GMT date the invoice was paid.', 'invoicing' ), |
|
145 | - 'type' => 'string', |
|
146 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
147 | - 'readonly' => true, |
|
148 | - ), |
|
149 | - |
|
150 | - 'total_discount' => array( |
|
151 | - 'description' => __( 'Total discount amount for the invoice.', 'invoicing' ), |
|
152 | - 'type' => 'number', |
|
153 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
154 | - 'readonly' => true, |
|
155 | - ), |
|
156 | - |
|
157 | - 'total_tax' => array( |
|
158 | - 'description' => __( 'Total tax amount for the invoice.', 'invoicing' ), |
|
159 | - 'type' => 'number', |
|
160 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
161 | - 'readonly' => true, |
|
162 | - ), |
|
163 | - |
|
164 | - 'total_fees' => array( |
|
165 | - 'description' => __( 'Total fees amount for the invoice.', 'invoicing' ), |
|
166 | - 'type' => 'number', |
|
167 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
168 | - 'readonly' => true, |
|
169 | - ), |
|
170 | - |
|
171 | - 'subtotal' => array( |
|
172 | - 'description' => __( 'Invoice subtotal.', 'invoicing' ), |
|
173 | - 'type' => 'number', |
|
174 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
175 | - 'readonly' => true, |
|
176 | - ), |
|
177 | - |
|
178 | - 'total' => array( |
|
179 | - 'description' => __( 'Grand total.', 'invoicing' ), |
|
180 | - 'type' => 'number', |
|
181 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
182 | - 'readonly' => true, |
|
183 | - ), |
|
184 | - |
|
185 | - 'initial_total' => array( |
|
186 | - 'description' => __( 'Initial total (for recurring invoices).', 'invoicing' ), |
|
187 | - 'type' => 'number', |
|
188 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
189 | - 'readonly' => true, |
|
190 | - ), |
|
191 | - |
|
192 | - 'recurring_total' => array( |
|
193 | - 'description' => __( 'Recurring total (for recurring invoices).', 'invoicing' ), |
|
194 | - 'type' => 'number', |
|
195 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
196 | - 'readonly' => true, |
|
197 | - ), |
|
198 | - |
|
199 | - 'totals' => array( |
|
200 | - 'description' => __( 'Invoice totals.', 'invoicing' ), |
|
201 | - 'type' => 'object', |
|
202 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
203 | - 'readonly' => true, |
|
204 | - ), |
|
205 | - |
|
206 | - 'fees' => array( |
|
207 | - 'description' => __( 'Invoice fees (Name => properties).', 'invoicing' ), |
|
208 | - 'type' => 'object', |
|
209 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
210 | - 'items' => array( |
|
211 | - 'type' => 'object', |
|
212 | - 'required' => array( 'amount' ), |
|
213 | - 'properties' => array( |
|
214 | - 'amount' => array( |
|
215 | - 'description' => __( 'Fee amount.', 'invoicing' ), |
|
216 | - 'type' => 'string', |
|
217 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
218 | - ), |
|
219 | - 'recurring' => array( |
|
220 | - 'description' => __( 'Whether this is a recurring or one-time fee.', 'invoicing' ), |
|
221 | - 'type' => array( 'boolean', 'integer' ), |
|
222 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
223 | - ), |
|
224 | - ), |
|
225 | - ), |
|
226 | - ), |
|
227 | - |
|
228 | - 'discounts' => array( |
|
229 | - 'description' => __( 'Invoice discounts (Name => properties).', 'invoicing' ), |
|
230 | - 'type' => 'object', |
|
231 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
232 | - 'items' => array( |
|
233 | - 'type' => 'object', |
|
234 | - 'required' => array( 'amount' ), |
|
235 | - 'properties' => array( |
|
236 | - 'amount' => array( |
|
237 | - 'description' => __( 'Fee amount.', 'invoicing' ), |
|
238 | - 'type' => 'string', |
|
239 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
240 | - ), |
|
241 | - 'recurring' => array( |
|
242 | - 'description' => __( 'Whether this is a recurring or one-time discount.', 'invoicing' ), |
|
243 | - 'type' => array( 'boolean', 'integer' ), |
|
244 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
245 | - ), |
|
246 | - ), |
|
247 | - ), |
|
248 | - ), |
|
249 | - |
|
250 | - 'taxes' => array( |
|
251 | - 'description' => __( 'Invoice taxes (Name => properties).', 'invoicing' ), |
|
252 | - 'type' => 'object', |
|
253 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
254 | - 'items' => array( |
|
255 | - 'type' => 'object', |
|
256 | - 'required' => array( 'amount' ), |
|
257 | - 'properties' => array( |
|
258 | - 'amount' => array( |
|
259 | - 'description' => __( 'Fee amount.', 'invoicing' ), |
|
260 | - 'type' => 'string', |
|
261 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
262 | - ), |
|
263 | - 'recurring' => array( |
|
264 | - 'description' => __( 'Whether this is a recurring or one-time tax.', 'invoicing' ), |
|
265 | - 'type' => array( 'boolean', 'integer' ), |
|
266 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
267 | - ), |
|
268 | - ), |
|
269 | - ), |
|
270 | - ), |
|
271 | - |
|
272 | - 'items' => array( |
|
273 | - 'description' => __( 'Invoice items.', 'invoicing' ), |
|
274 | - 'type' => 'array', |
|
275 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
276 | - 'items' => array( |
|
277 | - 'type' => 'object', |
|
278 | - 'required' => array( 'item_id' ), |
|
279 | - 'properties' => array( |
|
280 | - 'item_id' => array( |
|
281 | - 'description' => __( 'Item ID.', 'invoicing' ), |
|
282 | - 'type' => 'integer', |
|
283 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
284 | - ), |
|
285 | - 'item_name' => array( |
|
286 | - 'description' => __( 'Item Name.', 'invoicing' ), |
|
287 | - 'type' => 'string', |
|
288 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
289 | - ), |
|
290 | - 'item_description' => array( |
|
291 | - 'description' => __( 'Item Description.', 'invoicing' ), |
|
292 | - 'type' => 'string', |
|
293 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
294 | - ), |
|
295 | - 'item_price' => array( |
|
296 | - 'description' => __( 'Item Price.', 'invoicing' ), |
|
297 | - 'type' => 'number', |
|
298 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
299 | - ), |
|
300 | - 'quantity' => array( |
|
301 | - 'description' => __( 'Item Quantity.', 'invoicing' ), |
|
302 | - 'type' => 'number', |
|
303 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
304 | - ), |
|
305 | - 'subtotal' => array( |
|
306 | - 'description' => __( 'Item Subtotal.', 'invoicing' ), |
|
307 | - 'type' => 'number', |
|
308 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
309 | - 'readonly' => true, |
|
310 | - ), |
|
311 | - 'meta' => array( |
|
312 | - 'description' => __( 'Item Meta.', 'invoicing' ), |
|
313 | - 'type' => 'object', |
|
314 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
315 | - ), |
|
316 | - ), |
|
317 | - ), |
|
318 | - ), |
|
319 | - |
|
320 | - 'mode' => array( |
|
321 | - 'description' => __( 'The invoice transaction mode.', 'invoicing' ), |
|
322 | - 'type' => 'string', |
|
323 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
324 | - 'enum' => array( 'live', 'test' ), |
|
325 | - 'readonly' => true, |
|
326 | - ), |
|
16 | + 'id' => array( |
|
17 | + 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
18 | + 'type' => 'integer', |
|
19 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
20 | + 'readonly' => true, |
|
21 | + ), |
|
22 | + |
|
23 | + 'parent_id' => array( |
|
24 | + 'description' => __( 'Parent invoice ID.', 'invoicing' ), |
|
25 | + 'type' => 'integer', |
|
26 | + 'minimum' => 0, |
|
27 | + 'default' => 0, |
|
28 | + 'context' => array( 'view', 'edit' ), |
|
29 | + ), |
|
30 | + |
|
31 | + 'key' => array( |
|
32 | + 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
33 | + 'type' => 'string', |
|
34 | + 'context' => array( 'view', 'edit' ), |
|
35 | + 'readonly' => true, |
|
36 | + ), |
|
37 | + |
|
38 | + 'number' => array( |
|
39 | + 'description' => __( 'A unique number for the invoice.', 'invoicing' ), |
|
40 | + 'type' => 'string', |
|
41 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
42 | + ), |
|
43 | + |
|
44 | + 'type' => array( |
|
45 | + 'description' => __( 'Get the invoice type (e.g invoice, quote etc).', 'invoicing' ), |
|
46 | + 'type' => 'string', |
|
47 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
48 | + 'readonly' => true, |
|
49 | + ), |
|
50 | + |
|
51 | + 'post_type' => array( |
|
52 | + 'description' => __( 'Get the invoice post type (e.g wpi_invoice, wpi_quote etc).', 'invoicing' ), |
|
53 | + 'type' => 'string', |
|
54 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
55 | + 'readonly' => true, |
|
56 | + ), |
|
57 | + |
|
58 | + 'version' => array( |
|
59 | + 'description' => __( 'Version of GetPaid/Invoicing which last updated the invoice.', 'invoicing' ), |
|
60 | + 'type' => 'integer', |
|
61 | + 'context' => array( 'view', 'edit' ), |
|
62 | + 'readonly' => true, |
|
63 | + ), |
|
64 | + |
|
65 | + 'template' => array( |
|
66 | + 'description' => __( 'The invoice template.', 'invoicing' ), |
|
67 | + 'type' => 'string', |
|
68 | + 'default' => 'quantity', |
|
69 | + 'enum' => array( 'quantity', 'hours', 'amount' ), |
|
70 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
71 | + ), |
|
72 | + |
|
73 | + 'status' => array( |
|
74 | + 'description' => __( 'Invoice status.', 'invoicing' ), |
|
75 | + 'type' => 'string', |
|
76 | + 'default' => 'wpi-pending', |
|
77 | + 'enum' => array_keys( wpinv_get_invoice_statuses( true ) ), |
|
78 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
79 | + ), |
|
80 | + |
|
81 | + 'status_nicename' => array( |
|
82 | + 'description' => __( 'A human readable name for the invoice status.', 'invoicing' ), |
|
83 | + 'type' => 'string', |
|
84 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
85 | + 'readonly' => true, |
|
86 | + ), |
|
87 | + |
|
88 | + 'currency' => array( |
|
89 | + 'description' => __( 'The invoice currency in ISO format.', 'invoicing' ), |
|
90 | + 'type' => 'string', |
|
91 | + 'default' => wpinv_get_currency(), |
|
92 | + 'enum' => array_keys( wpinv_get_currencies() ), |
|
93 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
94 | + ), |
|
95 | + |
|
96 | + 'date_created' => array( |
|
97 | + 'description' => __( "The date the invoice was created, in the site's timezone.", 'invoicing' ), |
|
98 | + 'type' => 'string', |
|
99 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
100 | + ), |
|
101 | + |
|
102 | + 'date_created_gmt' => array( |
|
103 | + 'description' => __( 'The GMT date the invoice was created.', 'invoicing' ), |
|
104 | + 'type' => 'string', |
|
105 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
106 | + 'readonly' => true, |
|
107 | + ), |
|
108 | + |
|
109 | + 'date_modified' => array( |
|
110 | + 'description' => __( "The date the invoice was last modified, in the site's timezone.", 'invoicing' ), |
|
111 | + 'type' => 'string', |
|
112 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
113 | + 'readonly' => true, |
|
114 | + ), |
|
115 | + |
|
116 | + 'date_modified_gmt' => array( |
|
117 | + 'description' => __( 'The GMT date the invoice was last modified.', 'invoicing' ), |
|
118 | + 'type' => 'string', |
|
119 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
120 | + 'readonly' => true, |
|
121 | + ), |
|
122 | + |
|
123 | + 'due_date' => array( |
|
124 | + 'description' => __( "The invoice's due date, in the site's timezone.", 'invoicing' ), |
|
125 | + 'type' => 'string', |
|
126 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
127 | + ), |
|
128 | + |
|
129 | + 'due_date_gmt' => array( |
|
130 | + 'description' => __( 'The GMT date the invoice is/was due.', 'invoicing' ), |
|
131 | + 'type' => 'string', |
|
132 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
133 | + 'readonly' => true, |
|
134 | + ), |
|
135 | + |
|
136 | + 'completed_date' => array( |
|
137 | + 'description' => __( "The date the invoice was paid, in the site's timezone.", 'invoicing' ), |
|
138 | + 'type' => 'string', |
|
139 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
140 | + 'readonly' => true, |
|
141 | + ), |
|
142 | + |
|
143 | + 'completed_date_gmt' => array( |
|
144 | + 'description' => __( 'The GMT date the invoice was paid.', 'invoicing' ), |
|
145 | + 'type' => 'string', |
|
146 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
147 | + 'readonly' => true, |
|
148 | + ), |
|
149 | + |
|
150 | + 'total_discount' => array( |
|
151 | + 'description' => __( 'Total discount amount for the invoice.', 'invoicing' ), |
|
152 | + 'type' => 'number', |
|
153 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
154 | + 'readonly' => true, |
|
155 | + ), |
|
156 | + |
|
157 | + 'total_tax' => array( |
|
158 | + 'description' => __( 'Total tax amount for the invoice.', 'invoicing' ), |
|
159 | + 'type' => 'number', |
|
160 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
161 | + 'readonly' => true, |
|
162 | + ), |
|
163 | + |
|
164 | + 'total_fees' => array( |
|
165 | + 'description' => __( 'Total fees amount for the invoice.', 'invoicing' ), |
|
166 | + 'type' => 'number', |
|
167 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
168 | + 'readonly' => true, |
|
169 | + ), |
|
170 | + |
|
171 | + 'subtotal' => array( |
|
172 | + 'description' => __( 'Invoice subtotal.', 'invoicing' ), |
|
173 | + 'type' => 'number', |
|
174 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
175 | + 'readonly' => true, |
|
176 | + ), |
|
177 | + |
|
178 | + 'total' => array( |
|
179 | + 'description' => __( 'Grand total.', 'invoicing' ), |
|
180 | + 'type' => 'number', |
|
181 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
182 | + 'readonly' => true, |
|
183 | + ), |
|
184 | + |
|
185 | + 'initial_total' => array( |
|
186 | + 'description' => __( 'Initial total (for recurring invoices).', 'invoicing' ), |
|
187 | + 'type' => 'number', |
|
188 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
189 | + 'readonly' => true, |
|
190 | + ), |
|
191 | + |
|
192 | + 'recurring_total' => array( |
|
193 | + 'description' => __( 'Recurring total (for recurring invoices).', 'invoicing' ), |
|
194 | + 'type' => 'number', |
|
195 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
196 | + 'readonly' => true, |
|
197 | + ), |
|
198 | + |
|
199 | + 'totals' => array( |
|
200 | + 'description' => __( 'Invoice totals.', 'invoicing' ), |
|
201 | + 'type' => 'object', |
|
202 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
203 | + 'readonly' => true, |
|
204 | + ), |
|
205 | + |
|
206 | + 'fees' => array( |
|
207 | + 'description' => __( 'Invoice fees (Name => properties).', 'invoicing' ), |
|
208 | + 'type' => 'object', |
|
209 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
210 | + 'items' => array( |
|
211 | + 'type' => 'object', |
|
212 | + 'required' => array( 'amount' ), |
|
213 | + 'properties' => array( |
|
214 | + 'amount' => array( |
|
215 | + 'description' => __( 'Fee amount.', 'invoicing' ), |
|
216 | + 'type' => 'string', |
|
217 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
218 | + ), |
|
219 | + 'recurring' => array( |
|
220 | + 'description' => __( 'Whether this is a recurring or one-time fee.', 'invoicing' ), |
|
221 | + 'type' => array( 'boolean', 'integer' ), |
|
222 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
223 | + ), |
|
224 | + ), |
|
225 | + ), |
|
226 | + ), |
|
227 | + |
|
228 | + 'discounts' => array( |
|
229 | + 'description' => __( 'Invoice discounts (Name => properties).', 'invoicing' ), |
|
230 | + 'type' => 'object', |
|
231 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
232 | + 'items' => array( |
|
233 | + 'type' => 'object', |
|
234 | + 'required' => array( 'amount' ), |
|
235 | + 'properties' => array( |
|
236 | + 'amount' => array( |
|
237 | + 'description' => __( 'Fee amount.', 'invoicing' ), |
|
238 | + 'type' => 'string', |
|
239 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
240 | + ), |
|
241 | + 'recurring' => array( |
|
242 | + 'description' => __( 'Whether this is a recurring or one-time discount.', 'invoicing' ), |
|
243 | + 'type' => array( 'boolean', 'integer' ), |
|
244 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
245 | + ), |
|
246 | + ), |
|
247 | + ), |
|
248 | + ), |
|
249 | + |
|
250 | + 'taxes' => array( |
|
251 | + 'description' => __( 'Invoice taxes (Name => properties).', 'invoicing' ), |
|
252 | + 'type' => 'object', |
|
253 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
254 | + 'items' => array( |
|
255 | + 'type' => 'object', |
|
256 | + 'required' => array( 'amount' ), |
|
257 | + 'properties' => array( |
|
258 | + 'amount' => array( |
|
259 | + 'description' => __( 'Fee amount.', 'invoicing' ), |
|
260 | + 'type' => 'string', |
|
261 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
262 | + ), |
|
263 | + 'recurring' => array( |
|
264 | + 'description' => __( 'Whether this is a recurring or one-time tax.', 'invoicing' ), |
|
265 | + 'type' => array( 'boolean', 'integer' ), |
|
266 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
267 | + ), |
|
268 | + ), |
|
269 | + ), |
|
270 | + ), |
|
271 | + |
|
272 | + 'items' => array( |
|
273 | + 'description' => __( 'Invoice items.', 'invoicing' ), |
|
274 | + 'type' => 'array', |
|
275 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
276 | + 'items' => array( |
|
277 | + 'type' => 'object', |
|
278 | + 'required' => array( 'item_id' ), |
|
279 | + 'properties' => array( |
|
280 | + 'item_id' => array( |
|
281 | + 'description' => __( 'Item ID.', 'invoicing' ), |
|
282 | + 'type' => 'integer', |
|
283 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
284 | + ), |
|
285 | + 'item_name' => array( |
|
286 | + 'description' => __( 'Item Name.', 'invoicing' ), |
|
287 | + 'type' => 'string', |
|
288 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
289 | + ), |
|
290 | + 'item_description' => array( |
|
291 | + 'description' => __( 'Item Description.', 'invoicing' ), |
|
292 | + 'type' => 'string', |
|
293 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
294 | + ), |
|
295 | + 'item_price' => array( |
|
296 | + 'description' => __( 'Item Price.', 'invoicing' ), |
|
297 | + 'type' => 'number', |
|
298 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
299 | + ), |
|
300 | + 'quantity' => array( |
|
301 | + 'description' => __( 'Item Quantity.', 'invoicing' ), |
|
302 | + 'type' => 'number', |
|
303 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
304 | + ), |
|
305 | + 'subtotal' => array( |
|
306 | + 'description' => __( 'Item Subtotal.', 'invoicing' ), |
|
307 | + 'type' => 'number', |
|
308 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
309 | + 'readonly' => true, |
|
310 | + ), |
|
311 | + 'meta' => array( |
|
312 | + 'description' => __( 'Item Meta.', 'invoicing' ), |
|
313 | + 'type' => 'object', |
|
314 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
315 | + ), |
|
316 | + ), |
|
317 | + ), |
|
318 | + ), |
|
319 | + |
|
320 | + 'mode' => array( |
|
321 | + 'description' => __( 'The invoice transaction mode.', 'invoicing' ), |
|
322 | + 'type' => 'string', |
|
323 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
324 | + 'enum' => array( 'live', 'test' ), |
|
325 | + 'readonly' => true, |
|
326 | + ), |
|
327 | 327 | |
328 | - 'discount_code' => array( |
|
329 | - 'description' => __( 'The discount code used on this invoice.', 'invoicing' ), |
|
330 | - 'type' => 'string', |
|
331 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
332 | - ), |
|
333 | - |
|
334 | - 'gateway' => array( |
|
335 | - 'description' => __( 'The gateway used to pay this invoice.', 'invoicing' ), |
|
336 | - 'type' => 'string', |
|
337 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
338 | - ), |
|
339 | - |
|
340 | - 'gateway_title' => array( |
|
341 | - 'description' => __( 'The title of the gateway used to pay this invoice.', 'invoicing' ), |
|
342 | - 'type' => 'string', |
|
343 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
344 | - 'readonly' => true, |
|
345 | - ), |
|
346 | - |
|
347 | - 'transaction_id' => array( |
|
348 | - 'description' => __( 'The transaction id for this invoice.', 'invoicing' ), |
|
349 | - 'type' => 'string', |
|
350 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
351 | - ), |
|
328 | + 'discount_code' => array( |
|
329 | + 'description' => __( 'The discount code used on this invoice.', 'invoicing' ), |
|
330 | + 'type' => 'string', |
|
331 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
332 | + ), |
|
333 | + |
|
334 | + 'gateway' => array( |
|
335 | + 'description' => __( 'The gateway used to pay this invoice.', 'invoicing' ), |
|
336 | + 'type' => 'string', |
|
337 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
338 | + ), |
|
339 | + |
|
340 | + 'gateway_title' => array( |
|
341 | + 'description' => __( 'The title of the gateway used to pay this invoice.', 'invoicing' ), |
|
342 | + 'type' => 'string', |
|
343 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
344 | + 'readonly' => true, |
|
345 | + ), |
|
346 | + |
|
347 | + 'transaction_id' => array( |
|
348 | + 'description' => __( 'The transaction id for this invoice.', 'invoicing' ), |
|
349 | + 'type' => 'string', |
|
350 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
351 | + ), |
|
352 | 352 | |
353 | - 'disable_taxes' => array( |
|
354 | - 'description' => __( 'Whether or not taxes should be disabled for this invoice.', 'invoicing' ), |
|
355 | - 'type' => 'boolean ', |
|
356 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
357 | - ), |
|
358 | - |
|
359 | - 'is_viewed' => array( |
|
360 | - 'description' => __( 'Whether or not this invoice has been viewed by the user.', 'invoicing' ), |
|
361 | - 'type' => 'boolean ', |
|
362 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
363 | - 'readonly' => true, |
|
364 | - ), |
|
365 | - |
|
366 | - 'email_cc' => array( |
|
367 | - 'description' => __( 'A comma separated list of other emails that should receive communications for this invoice.', 'invoicing' ), |
|
368 | - 'type' => 'string ', |
|
369 | - 'context' => array( 'view', 'edit' ), |
|
370 | - ), |
|
371 | - |
|
372 | - 'subscription_id' => array( |
|
373 | - 'description' => __( 'The ID of the subscription associated with this invoice.', 'invoicing' ), |
|
374 | - 'type' => 'string ', |
|
375 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
376 | - 'readonly' => true, |
|
377 | - ), |
|
378 | - |
|
379 | - 'subscription_name' => array( |
|
380 | - 'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ), |
|
381 | - 'type' => 'string ', |
|
382 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
383 | - 'readonly' => true, |
|
384 | - ), |
|
385 | - |
|
386 | - 'subscription_name' => array( |
|
387 | - 'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ), |
|
388 | - 'type' => 'string ', |
|
389 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
390 | - 'readonly' => true, |
|
391 | - ), |
|
392 | - |
|
393 | - 'is_parent' => array( |
|
394 | - 'description' => __( 'Whether or not this is a parent invoice.', 'invoicing' ), |
|
395 | - 'type' => 'boolean', |
|
396 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
397 | - 'readonly' => true, |
|
398 | - ), |
|
399 | - |
|
400 | - 'is_renewal' => array( |
|
401 | - 'description' => __( 'Whether or not this is a renewal invoice.', 'invoicing' ), |
|
402 | - 'type' => 'boolean', |
|
403 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
404 | - 'readonly' => true, |
|
405 | - ), |
|
406 | - |
|
407 | - 'is_recurring' => array( |
|
408 | - 'description' => __( 'Whether or not this is a recurring invoice.', 'invoicing' ), |
|
409 | - 'type' => 'boolean', |
|
410 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
411 | - 'readonly' => true, |
|
412 | - ), |
|
413 | - |
|
414 | - 'is_free' => array( |
|
415 | - 'description' => __( 'Whether or not this invoice is free.', 'invoicing' ), |
|
416 | - 'type' => 'boolean', |
|
417 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
418 | - 'readonly' => true, |
|
419 | - ), |
|
420 | - |
|
421 | - 'is_paid' => array( |
|
422 | - 'description' => __( 'Whether or not this invoice has been paid.', 'invoicing' ), |
|
423 | - 'type' => 'boolean', |
|
424 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
425 | - 'readonly' => true, |
|
426 | - ), |
|
427 | - |
|
428 | - 'needs_payment' => array( |
|
429 | - 'description' => __( 'Whether or not this invoice needs payment.', 'invoicing' ), |
|
430 | - 'type' => 'boolean', |
|
431 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
432 | - 'readonly' => true, |
|
433 | - ), |
|
434 | - |
|
435 | - 'is_refunded' => array( |
|
436 | - 'description' => __( 'Whether or not this invoice was refunded.', 'invoicing' ), |
|
437 | - 'type' => 'boolean', |
|
438 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
439 | - 'readonly' => true, |
|
440 | - ), |
|
441 | - |
|
442 | - 'is_due' => array( |
|
443 | - 'description' => __( 'Whether or not this invoice is due.', 'invoicing' ), |
|
444 | - 'type' => 'boolean', |
|
445 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
446 | - 'readonly' => true, |
|
447 | - ), |
|
448 | - |
|
449 | - 'is_held' => array( |
|
450 | - 'description' => __( 'Whether or not this invoice has been held for payment confirmation.', 'invoicing' ), |
|
451 | - 'type' => 'boolean', |
|
452 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
453 | - 'readonly' => true, |
|
454 | - ), |
|
455 | - |
|
456 | - 'is_draft' => array( |
|
457 | - 'description' => __( 'Whether or not this invoice is marked as draft (cannot be viewed on the frontend).', 'invoicing' ), |
|
458 | - 'type' => 'boolean', |
|
459 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
460 | - 'readonly' => true, |
|
461 | - ), |
|
462 | - |
|
463 | - 'path' => array( |
|
464 | - 'description' => __( 'The invoice path/slug/name.', 'invoicing' ), |
|
465 | - 'type' => 'string', |
|
466 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
467 | - 'readonly' => true, |
|
468 | - ), |
|
469 | - |
|
470 | - 'description' => array( |
|
471 | - 'description' => __( 'The invoice description.', 'invoicing' ), |
|
472 | - 'type' => 'string', |
|
473 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
474 | - ), |
|
475 | - |
|
476 | - 'payment_form' => array( |
|
477 | - 'description' => __( 'The id of the payment form used to pay for this invoice.', 'invoicing' ), |
|
478 | - 'type' => 'integer', |
|
479 | - 'context' => array( 'view', 'edit' ), |
|
480 | - 'readonly' => true, |
|
481 | - ), |
|
482 | - |
|
483 | - 'submission_id' => array( |
|
484 | - 'description' => __( 'A uniques ID of the submission details used to pay for this invoice.', 'invoicing' ), |
|
485 | - 'type' => 'string', |
|
486 | - 'context' => array( 'view', 'edit' ), |
|
487 | - 'readonly' => true, |
|
488 | - ), |
|
489 | - |
|
490 | - 'customer_id' => array( |
|
491 | - 'description' => __( 'The customer id.', 'invoicing' ), |
|
492 | - 'type' => 'integer', |
|
493 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
494 | - ), |
|
495 | - |
|
496 | - 'customer_ip' => array( |
|
497 | - 'description' => __( "The customer's ip address.", 'invoicing' ), |
|
498 | - 'type' => 'string', |
|
499 | - 'format' => 'ip', |
|
500 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
501 | - ), |
|
502 | - |
|
503 | - 'first_name' => array( |
|
504 | - 'description' => __( "The customer's first name.", 'invoicing' ), |
|
505 | - 'type' => 'string', |
|
506 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
507 | - ), |
|
508 | - |
|
509 | - 'last_name' => array( |
|
510 | - 'description' => __( "The customer's last name.", 'invoicing' ), |
|
511 | - 'type' => 'string', |
|
512 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
513 | - ), |
|
353 | + 'disable_taxes' => array( |
|
354 | + 'description' => __( 'Whether or not taxes should be disabled for this invoice.', 'invoicing' ), |
|
355 | + 'type' => 'boolean ', |
|
356 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
357 | + ), |
|
358 | + |
|
359 | + 'is_viewed' => array( |
|
360 | + 'description' => __( 'Whether or not this invoice has been viewed by the user.', 'invoicing' ), |
|
361 | + 'type' => 'boolean ', |
|
362 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
363 | + 'readonly' => true, |
|
364 | + ), |
|
365 | + |
|
366 | + 'email_cc' => array( |
|
367 | + 'description' => __( 'A comma separated list of other emails that should receive communications for this invoice.', 'invoicing' ), |
|
368 | + 'type' => 'string ', |
|
369 | + 'context' => array( 'view', 'edit' ), |
|
370 | + ), |
|
371 | + |
|
372 | + 'subscription_id' => array( |
|
373 | + 'description' => __( 'The ID of the subscription associated with this invoice.', 'invoicing' ), |
|
374 | + 'type' => 'string ', |
|
375 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
376 | + 'readonly' => true, |
|
377 | + ), |
|
378 | + |
|
379 | + 'subscription_name' => array( |
|
380 | + 'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ), |
|
381 | + 'type' => 'string ', |
|
382 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
383 | + 'readonly' => true, |
|
384 | + ), |
|
385 | + |
|
386 | + 'subscription_name' => array( |
|
387 | + 'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ), |
|
388 | + 'type' => 'string ', |
|
389 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
390 | + 'readonly' => true, |
|
391 | + ), |
|
392 | + |
|
393 | + 'is_parent' => array( |
|
394 | + 'description' => __( 'Whether or not this is a parent invoice.', 'invoicing' ), |
|
395 | + 'type' => 'boolean', |
|
396 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
397 | + 'readonly' => true, |
|
398 | + ), |
|
399 | + |
|
400 | + 'is_renewal' => array( |
|
401 | + 'description' => __( 'Whether or not this is a renewal invoice.', 'invoicing' ), |
|
402 | + 'type' => 'boolean', |
|
403 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
404 | + 'readonly' => true, |
|
405 | + ), |
|
406 | + |
|
407 | + 'is_recurring' => array( |
|
408 | + 'description' => __( 'Whether or not this is a recurring invoice.', 'invoicing' ), |
|
409 | + 'type' => 'boolean', |
|
410 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
411 | + 'readonly' => true, |
|
412 | + ), |
|
413 | + |
|
414 | + 'is_free' => array( |
|
415 | + 'description' => __( 'Whether or not this invoice is free.', 'invoicing' ), |
|
416 | + 'type' => 'boolean', |
|
417 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
418 | + 'readonly' => true, |
|
419 | + ), |
|
420 | + |
|
421 | + 'is_paid' => array( |
|
422 | + 'description' => __( 'Whether or not this invoice has been paid.', 'invoicing' ), |
|
423 | + 'type' => 'boolean', |
|
424 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
425 | + 'readonly' => true, |
|
426 | + ), |
|
427 | + |
|
428 | + 'needs_payment' => array( |
|
429 | + 'description' => __( 'Whether or not this invoice needs payment.', 'invoicing' ), |
|
430 | + 'type' => 'boolean', |
|
431 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
432 | + 'readonly' => true, |
|
433 | + ), |
|
434 | + |
|
435 | + 'is_refunded' => array( |
|
436 | + 'description' => __( 'Whether or not this invoice was refunded.', 'invoicing' ), |
|
437 | + 'type' => 'boolean', |
|
438 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
439 | + 'readonly' => true, |
|
440 | + ), |
|
441 | + |
|
442 | + 'is_due' => array( |
|
443 | + 'description' => __( 'Whether or not this invoice is due.', 'invoicing' ), |
|
444 | + 'type' => 'boolean', |
|
445 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
446 | + 'readonly' => true, |
|
447 | + ), |
|
448 | + |
|
449 | + 'is_held' => array( |
|
450 | + 'description' => __( 'Whether or not this invoice has been held for payment confirmation.', 'invoicing' ), |
|
451 | + 'type' => 'boolean', |
|
452 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
453 | + 'readonly' => true, |
|
454 | + ), |
|
455 | + |
|
456 | + 'is_draft' => array( |
|
457 | + 'description' => __( 'Whether or not this invoice is marked as draft (cannot be viewed on the frontend).', 'invoicing' ), |
|
458 | + 'type' => 'boolean', |
|
459 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
460 | + 'readonly' => true, |
|
461 | + ), |
|
462 | + |
|
463 | + 'path' => array( |
|
464 | + 'description' => __( 'The invoice path/slug/name.', 'invoicing' ), |
|
465 | + 'type' => 'string', |
|
466 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
467 | + 'readonly' => true, |
|
468 | + ), |
|
469 | + |
|
470 | + 'description' => array( |
|
471 | + 'description' => __( 'The invoice description.', 'invoicing' ), |
|
472 | + 'type' => 'string', |
|
473 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
474 | + ), |
|
475 | + |
|
476 | + 'payment_form' => array( |
|
477 | + 'description' => __( 'The id of the payment form used to pay for this invoice.', 'invoicing' ), |
|
478 | + 'type' => 'integer', |
|
479 | + 'context' => array( 'view', 'edit' ), |
|
480 | + 'readonly' => true, |
|
481 | + ), |
|
482 | + |
|
483 | + 'submission_id' => array( |
|
484 | + 'description' => __( 'A uniques ID of the submission details used to pay for this invoice.', 'invoicing' ), |
|
485 | + 'type' => 'string', |
|
486 | + 'context' => array( 'view', 'edit' ), |
|
487 | + 'readonly' => true, |
|
488 | + ), |
|
489 | + |
|
490 | + 'customer_id' => array( |
|
491 | + 'description' => __( 'The customer id.', 'invoicing' ), |
|
492 | + 'type' => 'integer', |
|
493 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
494 | + ), |
|
495 | + |
|
496 | + 'customer_ip' => array( |
|
497 | + 'description' => __( "The customer's ip address.", 'invoicing' ), |
|
498 | + 'type' => 'string', |
|
499 | + 'format' => 'ip', |
|
500 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
501 | + ), |
|
502 | + |
|
503 | + 'first_name' => array( |
|
504 | + 'description' => __( "The customer's first name.", 'invoicing' ), |
|
505 | + 'type' => 'string', |
|
506 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
507 | + ), |
|
508 | + |
|
509 | + 'last_name' => array( |
|
510 | + 'description' => __( "The customer's last name.", 'invoicing' ), |
|
511 | + 'type' => 'string', |
|
512 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
513 | + ), |
|
514 | 514 | |
515 | - 'full_name' => array( |
|
516 | - 'description' => __( "The customer's full name.", 'invoicing' ), |
|
517 | - 'type' => 'string', |
|
518 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
519 | - 'readonly' => true, |
|
520 | - ), |
|
521 | - |
|
522 | - 'phone_number' => array( |
|
523 | - 'description' => __( "The customer's phone number.", 'invoicing' ), |
|
524 | - 'type' => 'string', |
|
525 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
526 | - ), |
|
527 | - |
|
528 | - 'email_address' => array( |
|
529 | - 'description' => __( "The customer's email address.", 'invoicing' ), |
|
530 | - 'type' => 'string', |
|
531 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
532 | - 'readonly' => true, |
|
533 | - ), |
|
534 | - |
|
535 | - 'customer_country' => array( |
|
536 | - 'description' => __( "The customer's country.", 'invoicing' ), |
|
537 | - 'type' => 'string', |
|
538 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
539 | - 'default' => wpinv_get_default_country(), |
|
540 | - ), |
|
541 | - |
|
542 | - 'customer_state' => array( |
|
543 | - 'description' => __( "The customer's state.", 'invoicing' ), |
|
544 | - 'type' => 'string', |
|
545 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
546 | - ), |
|
547 | - |
|
548 | - 'customer_city' => array( |
|
549 | - 'description' => __( "The customer's city.", 'invoicing' ), |
|
550 | - 'type' => 'string', |
|
551 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
552 | - ), |
|
553 | - |
|
554 | - 'customer_zip' => array( |
|
555 | - 'description' => __( "The customer's zip/postal code.", 'invoicing' ), |
|
556 | - 'type' => 'string', |
|
557 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
558 | - ), |
|
559 | - |
|
560 | - 'customer_company' => array( |
|
561 | - 'description' => __( "The customer's company name.", 'invoicing' ), |
|
562 | - 'type' => 'string', |
|
563 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
564 | - ), |
|
565 | - |
|
566 | - 'vat_number' => array( |
|
567 | - 'description' => __( "The customer's VAT number.", 'invoicing' ), |
|
568 | - 'type' => 'string', |
|
569 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
570 | - ), |
|
571 | - |
|
572 | - 'vat_rate' => array( |
|
573 | - 'description' => __( "The customer's VAT rate.", 'invoicing' ), |
|
574 | - 'type' => 'number', |
|
575 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
576 | - 'readonly' => true, |
|
577 | - ), |
|
578 | - |
|
579 | - 'customer_address' => array( |
|
580 | - 'description' => __( "The customer's address.", 'invoicing' ), |
|
581 | - 'type' => 'string', |
|
582 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
583 | - ), |
|
584 | - |
|
585 | - 'address_confirmed' => array( |
|
586 | - 'description' => __( "Whether or not the customer's address is confirmed.", 'invoicing' ), |
|
587 | - 'type' => 'boolean', |
|
588 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
589 | - ), |
|
590 | - |
|
591 | - 'meta_data' => array( |
|
592 | - 'description' => __( 'Invoice meta data.', 'invoicing' ), |
|
593 | - 'type' => 'array', |
|
594 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
595 | - 'items' => array( |
|
596 | - 'type' => 'object', |
|
597 | - 'properties' => array( |
|
598 | - 'id' => array( |
|
599 | - 'description' => __( 'Meta ID.', 'invoicing' ), |
|
600 | - 'type' => 'string', |
|
601 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
602 | - ), |
|
603 | - 'key' => array( |
|
604 | - 'description' => __( 'Meta key.', 'invoicing' ), |
|
605 | - 'type' => 'string', |
|
606 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
607 | - ), |
|
608 | - 'value' => array( |
|
609 | - 'description' => __( 'Meta Value.', 'invoicing' ), |
|
610 | - 'type' => array( 'string', 'array', 'object', 'integer', 'null' ), |
|
611 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
612 | - ), |
|
613 | - ), |
|
614 | - ), |
|
615 | - ), |
|
616 | - |
|
617 | - 'view_url' => array( |
|
618 | - 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
619 | - 'type' => 'string', |
|
620 | - 'format' => 'uri', |
|
621 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
622 | - 'readonly' => true, |
|
623 | - ), |
|
624 | - |
|
625 | - 'checkout_payment_url' => array( |
|
626 | - 'description' => __( 'URL to the invoice checkout page.', 'invoicing' ), |
|
627 | - 'type' => 'string', |
|
628 | - 'format' => 'uri', |
|
629 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
630 | - 'readonly' => true, |
|
631 | - ), |
|
632 | - |
|
633 | - 'receipt_url' => array( |
|
634 | - 'description' => __( 'URL to the invoice receipt page.', 'invoicing' ), |
|
635 | - 'type' => 'string', |
|
636 | - 'format' => 'uri', |
|
637 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
638 | - 'readonly' => true, |
|
639 | - ), |
|
515 | + 'full_name' => array( |
|
516 | + 'description' => __( "The customer's full name.", 'invoicing' ), |
|
517 | + 'type' => 'string', |
|
518 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
519 | + 'readonly' => true, |
|
520 | + ), |
|
521 | + |
|
522 | + 'phone_number' => array( |
|
523 | + 'description' => __( "The customer's phone number.", 'invoicing' ), |
|
524 | + 'type' => 'string', |
|
525 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
526 | + ), |
|
527 | + |
|
528 | + 'email_address' => array( |
|
529 | + 'description' => __( "The customer's email address.", 'invoicing' ), |
|
530 | + 'type' => 'string', |
|
531 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
532 | + 'readonly' => true, |
|
533 | + ), |
|
534 | + |
|
535 | + 'customer_country' => array( |
|
536 | + 'description' => __( "The customer's country.", 'invoicing' ), |
|
537 | + 'type' => 'string', |
|
538 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
539 | + 'default' => wpinv_get_default_country(), |
|
540 | + ), |
|
541 | + |
|
542 | + 'customer_state' => array( |
|
543 | + 'description' => __( "The customer's state.", 'invoicing' ), |
|
544 | + 'type' => 'string', |
|
545 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
546 | + ), |
|
547 | + |
|
548 | + 'customer_city' => array( |
|
549 | + 'description' => __( "The customer's city.", 'invoicing' ), |
|
550 | + 'type' => 'string', |
|
551 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
552 | + ), |
|
553 | + |
|
554 | + 'customer_zip' => array( |
|
555 | + 'description' => __( "The customer's zip/postal code.", 'invoicing' ), |
|
556 | + 'type' => 'string', |
|
557 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
558 | + ), |
|
559 | + |
|
560 | + 'customer_company' => array( |
|
561 | + 'description' => __( "The customer's company name.", 'invoicing' ), |
|
562 | + 'type' => 'string', |
|
563 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
564 | + ), |
|
565 | + |
|
566 | + 'vat_number' => array( |
|
567 | + 'description' => __( "The customer's VAT number.", 'invoicing' ), |
|
568 | + 'type' => 'string', |
|
569 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
570 | + ), |
|
571 | + |
|
572 | + 'vat_rate' => array( |
|
573 | + 'description' => __( "The customer's VAT rate.", 'invoicing' ), |
|
574 | + 'type' => 'number', |
|
575 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
576 | + 'readonly' => true, |
|
577 | + ), |
|
578 | + |
|
579 | + 'customer_address' => array( |
|
580 | + 'description' => __( "The customer's address.", 'invoicing' ), |
|
581 | + 'type' => 'string', |
|
582 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
583 | + ), |
|
584 | + |
|
585 | + 'address_confirmed' => array( |
|
586 | + 'description' => __( "Whether or not the customer's address is confirmed.", 'invoicing' ), |
|
587 | + 'type' => 'boolean', |
|
588 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
589 | + ), |
|
590 | + |
|
591 | + 'meta_data' => array( |
|
592 | + 'description' => __( 'Invoice meta data.', 'invoicing' ), |
|
593 | + 'type' => 'array', |
|
594 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
595 | + 'items' => array( |
|
596 | + 'type' => 'object', |
|
597 | + 'properties' => array( |
|
598 | + 'id' => array( |
|
599 | + 'description' => __( 'Meta ID.', 'invoicing' ), |
|
600 | + 'type' => 'string', |
|
601 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
602 | + ), |
|
603 | + 'key' => array( |
|
604 | + 'description' => __( 'Meta key.', 'invoicing' ), |
|
605 | + 'type' => 'string', |
|
606 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
607 | + ), |
|
608 | + 'value' => array( |
|
609 | + 'description' => __( 'Meta Value.', 'invoicing' ), |
|
610 | + 'type' => array( 'string', 'array', 'object', 'integer', 'null' ), |
|
611 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
612 | + ), |
|
613 | + ), |
|
614 | + ), |
|
615 | + ), |
|
616 | + |
|
617 | + 'view_url' => array( |
|
618 | + 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
619 | + 'type' => 'string', |
|
620 | + 'format' => 'uri', |
|
621 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
622 | + 'readonly' => true, |
|
623 | + ), |
|
624 | + |
|
625 | + 'checkout_payment_url' => array( |
|
626 | + 'description' => __( 'URL to the invoice checkout page.', 'invoicing' ), |
|
627 | + 'type' => 'string', |
|
628 | + 'format' => 'uri', |
|
629 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
630 | + 'readonly' => true, |
|
631 | + ), |
|
632 | + |
|
633 | + 'receipt_url' => array( |
|
634 | + 'description' => __( 'URL to the invoice receipt page.', 'invoicing' ), |
|
635 | + 'type' => 'string', |
|
636 | + 'format' => 'uri', |
|
637 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
638 | + 'readonly' => true, |
|
639 | + ), |
|
640 | 640 | |
641 | 641 | ); |
@@ -9,632 +9,632 @@ |
||
9 | 9 | * @version 1.0.19 |
10 | 10 | */ |
11 | 11 | |
12 | -defined( 'ABSPATH' ) || exit; |
|
12 | +defined('ABSPATH') || exit; |
|
13 | 13 | |
14 | 14 | return array( |
15 | 15 | |
16 | 16 | 'id' => array( |
17 | - 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
17 | + 'description' => __('Unique identifier for the invoice.', 'invoicing'), |
|
18 | 18 | 'type' => 'integer', |
19 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
19 | + 'context' => array('view', 'edit', 'embed'), |
|
20 | 20 | 'readonly' => true, |
21 | 21 | ), |
22 | 22 | |
23 | 23 | 'parent_id' => array( |
24 | - 'description' => __( 'Parent invoice ID.', 'invoicing' ), |
|
24 | + 'description' => __('Parent invoice ID.', 'invoicing'), |
|
25 | 25 | 'type' => 'integer', |
26 | 26 | 'minimum' => 0, |
27 | 27 | 'default' => 0, |
28 | - 'context' => array( 'view', 'edit' ), |
|
28 | + 'context' => array('view', 'edit'), |
|
29 | 29 | ), |
30 | 30 | |
31 | 31 | 'key' => array( |
32 | - 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
32 | + 'description' => __('A unique key for the invoice.', 'invoicing'), |
|
33 | 33 | 'type' => 'string', |
34 | - 'context' => array( 'view', 'edit' ), |
|
34 | + 'context' => array('view', 'edit'), |
|
35 | 35 | 'readonly' => true, |
36 | 36 | ), |
37 | 37 | |
38 | 38 | 'number' => array( |
39 | - 'description' => __( 'A unique number for the invoice.', 'invoicing' ), |
|
39 | + 'description' => __('A unique number for the invoice.', 'invoicing'), |
|
40 | 40 | 'type' => 'string', |
41 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
41 | + 'context' => array('view', 'edit', 'embed'), |
|
42 | 42 | ), |
43 | 43 | |
44 | 44 | 'type' => array( |
45 | - 'description' => __( 'Get the invoice type (e.g invoice, quote etc).', 'invoicing' ), |
|
45 | + 'description' => __('Get the invoice type (e.g invoice, quote etc).', 'invoicing'), |
|
46 | 46 | 'type' => 'string', |
47 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
47 | + 'context' => array('view', 'edit', 'embed'), |
|
48 | 48 | 'readonly' => true, |
49 | 49 | ), |
50 | 50 | |
51 | 51 | 'post_type' => array( |
52 | - 'description' => __( 'Get the invoice post type (e.g wpi_invoice, wpi_quote etc).', 'invoicing' ), |
|
52 | + 'description' => __('Get the invoice post type (e.g wpi_invoice, wpi_quote etc).', 'invoicing'), |
|
53 | 53 | 'type' => 'string', |
54 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
54 | + 'context' => array('view', 'edit', 'embed'), |
|
55 | 55 | 'readonly' => true, |
56 | 56 | ), |
57 | 57 | |
58 | 58 | 'version' => array( |
59 | - 'description' => __( 'Version of GetPaid/Invoicing which last updated the invoice.', 'invoicing' ), |
|
59 | + 'description' => __('Version of GetPaid/Invoicing which last updated the invoice.', 'invoicing'), |
|
60 | 60 | 'type' => 'integer', |
61 | - 'context' => array( 'view', 'edit' ), |
|
61 | + 'context' => array('view', 'edit'), |
|
62 | 62 | 'readonly' => true, |
63 | 63 | ), |
64 | 64 | |
65 | 65 | 'template' => array( |
66 | - 'description' => __( 'The invoice template.', 'invoicing' ), |
|
66 | + 'description' => __('The invoice template.', 'invoicing'), |
|
67 | 67 | 'type' => 'string', |
68 | 68 | 'default' => 'quantity', |
69 | - 'enum' => array( 'quantity', 'hours', 'amount' ), |
|
70 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
69 | + 'enum' => array('quantity', 'hours', 'amount'), |
|
70 | + 'context' => array('view', 'edit', 'embed'), |
|
71 | 71 | ), |
72 | 72 | |
73 | 73 | 'status' => array( |
74 | - 'description' => __( 'Invoice status.', 'invoicing' ), |
|
74 | + 'description' => __('Invoice status.', 'invoicing'), |
|
75 | 75 | 'type' => 'string', |
76 | 76 | 'default' => 'wpi-pending', |
77 | - 'enum' => array_keys( wpinv_get_invoice_statuses( true ) ), |
|
78 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
77 | + 'enum' => array_keys(wpinv_get_invoice_statuses(true)), |
|
78 | + 'context' => array('view', 'edit', 'embed'), |
|
79 | 79 | ), |
80 | 80 | |
81 | 81 | 'status_nicename' => array( |
82 | - 'description' => __( 'A human readable name for the invoice status.', 'invoicing' ), |
|
82 | + 'description' => __('A human readable name for the invoice status.', 'invoicing'), |
|
83 | 83 | 'type' => 'string', |
84 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
84 | + 'context' => array('view', 'edit', 'embed'), |
|
85 | 85 | 'readonly' => true, |
86 | 86 | ), |
87 | 87 | |
88 | 88 | 'currency' => array( |
89 | - 'description' => __( 'The invoice currency in ISO format.', 'invoicing' ), |
|
89 | + 'description' => __('The invoice currency in ISO format.', 'invoicing'), |
|
90 | 90 | 'type' => 'string', |
91 | 91 | 'default' => wpinv_get_currency(), |
92 | - 'enum' => array_keys( wpinv_get_currencies() ), |
|
93 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
92 | + 'enum' => array_keys(wpinv_get_currencies()), |
|
93 | + 'context' => array('view', 'edit', 'embed'), |
|
94 | 94 | ), |
95 | 95 | |
96 | 96 | 'date_created' => array( |
97 | - 'description' => __( "The date the invoice was created, in the site's timezone.", 'invoicing' ), |
|
97 | + 'description' => __("The date the invoice was created, in the site's timezone.", 'invoicing'), |
|
98 | 98 | 'type' => 'string', |
99 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
99 | + 'context' => array('view', 'edit', 'embed'), |
|
100 | 100 | ), |
101 | 101 | |
102 | 102 | 'date_created_gmt' => array( |
103 | - 'description' => __( 'The GMT date the invoice was created.', 'invoicing' ), |
|
103 | + 'description' => __('The GMT date the invoice was created.', 'invoicing'), |
|
104 | 104 | 'type' => 'string', |
105 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
105 | + 'context' => array('view', 'edit', 'embed'), |
|
106 | 106 | 'readonly' => true, |
107 | 107 | ), |
108 | 108 | |
109 | 109 | 'date_modified' => array( |
110 | - 'description' => __( "The date the invoice was last modified, in the site's timezone.", 'invoicing' ), |
|
110 | + 'description' => __("The date the invoice was last modified, in the site's timezone.", 'invoicing'), |
|
111 | 111 | 'type' => 'string', |
112 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
112 | + 'context' => array('view', 'edit', 'embed'), |
|
113 | 113 | 'readonly' => true, |
114 | 114 | ), |
115 | 115 | |
116 | 116 | 'date_modified_gmt' => array( |
117 | - 'description' => __( 'The GMT date the invoice was last modified.', 'invoicing' ), |
|
117 | + 'description' => __('The GMT date the invoice was last modified.', 'invoicing'), |
|
118 | 118 | 'type' => 'string', |
119 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
119 | + 'context' => array('view', 'edit', 'embed'), |
|
120 | 120 | 'readonly' => true, |
121 | 121 | ), |
122 | 122 | |
123 | 123 | 'due_date' => array( |
124 | - 'description' => __( "The invoice's due date, in the site's timezone.", 'invoicing' ), |
|
124 | + 'description' => __("The invoice's due date, in the site's timezone.", 'invoicing'), |
|
125 | 125 | 'type' => 'string', |
126 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
126 | + 'context' => array('view', 'edit', 'embed'), |
|
127 | 127 | ), |
128 | 128 | |
129 | 129 | 'due_date_gmt' => array( |
130 | - 'description' => __( 'The GMT date the invoice is/was due.', 'invoicing' ), |
|
130 | + 'description' => __('The GMT date the invoice is/was due.', 'invoicing'), |
|
131 | 131 | 'type' => 'string', |
132 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
132 | + 'context' => array('view', 'edit', 'embed'), |
|
133 | 133 | 'readonly' => true, |
134 | 134 | ), |
135 | 135 | |
136 | 136 | 'completed_date' => array( |
137 | - 'description' => __( "The date the invoice was paid, in the site's timezone.", 'invoicing' ), |
|
137 | + 'description' => __("The date the invoice was paid, in the site's timezone.", 'invoicing'), |
|
138 | 138 | 'type' => 'string', |
139 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
139 | + 'context' => array('view', 'edit', 'embed'), |
|
140 | 140 | 'readonly' => true, |
141 | 141 | ), |
142 | 142 | |
143 | 143 | 'completed_date_gmt' => array( |
144 | - 'description' => __( 'The GMT date the invoice was paid.', 'invoicing' ), |
|
144 | + 'description' => __('The GMT date the invoice was paid.', 'invoicing'), |
|
145 | 145 | 'type' => 'string', |
146 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
146 | + 'context' => array('view', 'edit', 'embed'), |
|
147 | 147 | 'readonly' => true, |
148 | 148 | ), |
149 | 149 | |
150 | 150 | 'total_discount' => array( |
151 | - 'description' => __( 'Total discount amount for the invoice.', 'invoicing' ), |
|
151 | + 'description' => __('Total discount amount for the invoice.', 'invoicing'), |
|
152 | 152 | 'type' => 'number', |
153 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
153 | + 'context' => array('view', 'edit', 'embed'), |
|
154 | 154 | 'readonly' => true, |
155 | 155 | ), |
156 | 156 | |
157 | 157 | 'total_tax' => array( |
158 | - 'description' => __( 'Total tax amount for the invoice.', 'invoicing' ), |
|
158 | + 'description' => __('Total tax amount for the invoice.', 'invoicing'), |
|
159 | 159 | 'type' => 'number', |
160 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
160 | + 'context' => array('view', 'edit', 'embed'), |
|
161 | 161 | 'readonly' => true, |
162 | 162 | ), |
163 | 163 | |
164 | 164 | 'total_fees' => array( |
165 | - 'description' => __( 'Total fees amount for the invoice.', 'invoicing' ), |
|
165 | + 'description' => __('Total fees amount for the invoice.', 'invoicing'), |
|
166 | 166 | 'type' => 'number', |
167 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
167 | + 'context' => array('view', 'edit', 'embed'), |
|
168 | 168 | 'readonly' => true, |
169 | 169 | ), |
170 | 170 | |
171 | 171 | 'subtotal' => array( |
172 | - 'description' => __( 'Invoice subtotal.', 'invoicing' ), |
|
172 | + 'description' => __('Invoice subtotal.', 'invoicing'), |
|
173 | 173 | 'type' => 'number', |
174 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
174 | + 'context' => array('view', 'edit', 'embed'), |
|
175 | 175 | 'readonly' => true, |
176 | 176 | ), |
177 | 177 | |
178 | 178 | 'total' => array( |
179 | - 'description' => __( 'Grand total.', 'invoicing' ), |
|
179 | + 'description' => __('Grand total.', 'invoicing'), |
|
180 | 180 | 'type' => 'number', |
181 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
181 | + 'context' => array('view', 'edit', 'embed'), |
|
182 | 182 | 'readonly' => true, |
183 | 183 | ), |
184 | 184 | |
185 | 185 | 'initial_total' => array( |
186 | - 'description' => __( 'Initial total (for recurring invoices).', 'invoicing' ), |
|
186 | + 'description' => __('Initial total (for recurring invoices).', 'invoicing'), |
|
187 | 187 | 'type' => 'number', |
188 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
188 | + 'context' => array('view', 'edit', 'embed'), |
|
189 | 189 | 'readonly' => true, |
190 | 190 | ), |
191 | 191 | |
192 | 192 | 'recurring_total' => array( |
193 | - 'description' => __( 'Recurring total (for recurring invoices).', 'invoicing' ), |
|
193 | + 'description' => __('Recurring total (for recurring invoices).', 'invoicing'), |
|
194 | 194 | 'type' => 'number', |
195 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
195 | + 'context' => array('view', 'edit', 'embed'), |
|
196 | 196 | 'readonly' => true, |
197 | 197 | ), |
198 | 198 | |
199 | 199 | 'totals' => array( |
200 | - 'description' => __( 'Invoice totals.', 'invoicing' ), |
|
200 | + 'description' => __('Invoice totals.', 'invoicing'), |
|
201 | 201 | 'type' => 'object', |
202 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
202 | + 'context' => array('view', 'edit', 'embed'), |
|
203 | 203 | 'readonly' => true, |
204 | 204 | ), |
205 | 205 | |
206 | 206 | 'fees' => array( |
207 | - 'description' => __( 'Invoice fees (Name => properties).', 'invoicing' ), |
|
207 | + 'description' => __('Invoice fees (Name => properties).', 'invoicing'), |
|
208 | 208 | 'type' => 'object', |
209 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
209 | + 'context' => array('view', 'edit', 'embed'), |
|
210 | 210 | 'items' => array( |
211 | 211 | 'type' => 'object', |
212 | - 'required' => array( 'amount' ), |
|
212 | + 'required' => array('amount'), |
|
213 | 213 | 'properties' => array( |
214 | 214 | 'amount' => array( |
215 | - 'description' => __( 'Fee amount.', 'invoicing' ), |
|
215 | + 'description' => __('Fee amount.', 'invoicing'), |
|
216 | 216 | 'type' => 'string', |
217 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
217 | + 'context' => array('view', 'edit', 'embed'), |
|
218 | 218 | ), |
219 | 219 | 'recurring' => array( |
220 | - 'description' => __( 'Whether this is a recurring or one-time fee.', 'invoicing' ), |
|
221 | - 'type' => array( 'boolean', 'integer' ), |
|
222 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
220 | + 'description' => __('Whether this is a recurring or one-time fee.', 'invoicing'), |
|
221 | + 'type' => array('boolean', 'integer'), |
|
222 | + 'context' => array('view', 'edit', 'embed'), |
|
223 | 223 | ), |
224 | 224 | ), |
225 | 225 | ), |
226 | 226 | ), |
227 | 227 | |
228 | 228 | 'discounts' => array( |
229 | - 'description' => __( 'Invoice discounts (Name => properties).', 'invoicing' ), |
|
229 | + 'description' => __('Invoice discounts (Name => properties).', 'invoicing'), |
|
230 | 230 | 'type' => 'object', |
231 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
231 | + 'context' => array('view', 'edit', 'embed'), |
|
232 | 232 | 'items' => array( |
233 | 233 | 'type' => 'object', |
234 | - 'required' => array( 'amount' ), |
|
234 | + 'required' => array('amount'), |
|
235 | 235 | 'properties' => array( |
236 | 236 | 'amount' => array( |
237 | - 'description' => __( 'Fee amount.', 'invoicing' ), |
|
237 | + 'description' => __('Fee amount.', 'invoicing'), |
|
238 | 238 | 'type' => 'string', |
239 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
239 | + 'context' => array('view', 'edit', 'embed'), |
|
240 | 240 | ), |
241 | 241 | 'recurring' => array( |
242 | - 'description' => __( 'Whether this is a recurring or one-time discount.', 'invoicing' ), |
|
243 | - 'type' => array( 'boolean', 'integer' ), |
|
244 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
242 | + 'description' => __('Whether this is a recurring or one-time discount.', 'invoicing'), |
|
243 | + 'type' => array('boolean', 'integer'), |
|
244 | + 'context' => array('view', 'edit', 'embed'), |
|
245 | 245 | ), |
246 | 246 | ), |
247 | 247 | ), |
248 | 248 | ), |
249 | 249 | |
250 | 250 | 'taxes' => array( |
251 | - 'description' => __( 'Invoice taxes (Name => properties).', 'invoicing' ), |
|
251 | + 'description' => __('Invoice taxes (Name => properties).', 'invoicing'), |
|
252 | 252 | 'type' => 'object', |
253 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
253 | + 'context' => array('view', 'edit', 'embed'), |
|
254 | 254 | 'items' => array( |
255 | 255 | 'type' => 'object', |
256 | - 'required' => array( 'amount' ), |
|
256 | + 'required' => array('amount'), |
|
257 | 257 | 'properties' => array( |
258 | 258 | 'amount' => array( |
259 | - 'description' => __( 'Fee amount.', 'invoicing' ), |
|
259 | + 'description' => __('Fee amount.', 'invoicing'), |
|
260 | 260 | 'type' => 'string', |
261 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
261 | + 'context' => array('view', 'edit', 'embed'), |
|
262 | 262 | ), |
263 | 263 | 'recurring' => array( |
264 | - 'description' => __( 'Whether this is a recurring or one-time tax.', 'invoicing' ), |
|
265 | - 'type' => array( 'boolean', 'integer' ), |
|
266 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
264 | + 'description' => __('Whether this is a recurring or one-time tax.', 'invoicing'), |
|
265 | + 'type' => array('boolean', 'integer'), |
|
266 | + 'context' => array('view', 'edit', 'embed'), |
|
267 | 267 | ), |
268 | 268 | ), |
269 | 269 | ), |
270 | 270 | ), |
271 | 271 | |
272 | 272 | 'items' => array( |
273 | - 'description' => __( 'Invoice items.', 'invoicing' ), |
|
273 | + 'description' => __('Invoice items.', 'invoicing'), |
|
274 | 274 | 'type' => 'array', |
275 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
275 | + 'context' => array('view', 'edit', 'embed'), |
|
276 | 276 | 'items' => array( |
277 | 277 | 'type' => 'object', |
278 | - 'required' => array( 'item_id' ), |
|
278 | + 'required' => array('item_id'), |
|
279 | 279 | 'properties' => array( |
280 | 280 | 'item_id' => array( |
281 | - 'description' => __( 'Item ID.', 'invoicing' ), |
|
281 | + 'description' => __('Item ID.', 'invoicing'), |
|
282 | 282 | 'type' => 'integer', |
283 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
283 | + 'context' => array('view', 'edit', 'embed'), |
|
284 | 284 | ), |
285 | 285 | 'item_name' => array( |
286 | - 'description' => __( 'Item Name.', 'invoicing' ), |
|
286 | + 'description' => __('Item Name.', 'invoicing'), |
|
287 | 287 | 'type' => 'string', |
288 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
288 | + 'context' => array('view', 'edit', 'embed'), |
|
289 | 289 | ), |
290 | 290 | 'item_description' => array( |
291 | - 'description' => __( 'Item Description.', 'invoicing' ), |
|
291 | + 'description' => __('Item Description.', 'invoicing'), |
|
292 | 292 | 'type' => 'string', |
293 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
293 | + 'context' => array('view', 'edit', 'embed'), |
|
294 | 294 | ), |
295 | 295 | 'item_price' => array( |
296 | - 'description' => __( 'Item Price.', 'invoicing' ), |
|
296 | + 'description' => __('Item Price.', 'invoicing'), |
|
297 | 297 | 'type' => 'number', |
298 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
298 | + 'context' => array('view', 'edit', 'embed'), |
|
299 | 299 | ), |
300 | 300 | 'quantity' => array( |
301 | - 'description' => __( 'Item Quantity.', 'invoicing' ), |
|
301 | + 'description' => __('Item Quantity.', 'invoicing'), |
|
302 | 302 | 'type' => 'number', |
303 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
303 | + 'context' => array('view', 'edit', 'embed'), |
|
304 | 304 | ), |
305 | 305 | 'subtotal' => array( |
306 | - 'description' => __( 'Item Subtotal.', 'invoicing' ), |
|
306 | + 'description' => __('Item Subtotal.', 'invoicing'), |
|
307 | 307 | 'type' => 'number', |
308 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
308 | + 'context' => array('view', 'edit', 'embed'), |
|
309 | 309 | 'readonly' => true, |
310 | 310 | ), |
311 | 311 | 'meta' => array( |
312 | - 'description' => __( 'Item Meta.', 'invoicing' ), |
|
312 | + 'description' => __('Item Meta.', 'invoicing'), |
|
313 | 313 | 'type' => 'object', |
314 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
314 | + 'context' => array('view', 'edit', 'embed'), |
|
315 | 315 | ), |
316 | 316 | ), |
317 | 317 | ), |
318 | 318 | ), |
319 | 319 | |
320 | 320 | 'mode' => array( |
321 | - 'description' => __( 'The invoice transaction mode.', 'invoicing' ), |
|
321 | + 'description' => __('The invoice transaction mode.', 'invoicing'), |
|
322 | 322 | 'type' => 'string', |
323 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
324 | - 'enum' => array( 'live', 'test' ), |
|
323 | + 'context' => array('view', 'edit', 'embed'), |
|
324 | + 'enum' => array('live', 'test'), |
|
325 | 325 | 'readonly' => true, |
326 | 326 | ), |
327 | 327 | |
328 | 328 | 'discount_code' => array( |
329 | - 'description' => __( 'The discount code used on this invoice.', 'invoicing' ), |
|
329 | + 'description' => __('The discount code used on this invoice.', 'invoicing'), |
|
330 | 330 | 'type' => 'string', |
331 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
331 | + 'context' => array('view', 'edit', 'embed'), |
|
332 | 332 | ), |
333 | 333 | |
334 | 334 | 'gateway' => array( |
335 | - 'description' => __( 'The gateway used to pay this invoice.', 'invoicing' ), |
|
335 | + 'description' => __('The gateway used to pay this invoice.', 'invoicing'), |
|
336 | 336 | 'type' => 'string', |
337 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
337 | + 'context' => array('view', 'edit', 'embed'), |
|
338 | 338 | ), |
339 | 339 | |
340 | 340 | 'gateway_title' => array( |
341 | - 'description' => __( 'The title of the gateway used to pay this invoice.', 'invoicing' ), |
|
341 | + 'description' => __('The title of the gateway used to pay this invoice.', 'invoicing'), |
|
342 | 342 | 'type' => 'string', |
343 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
343 | + 'context' => array('view', 'edit', 'embed'), |
|
344 | 344 | 'readonly' => true, |
345 | 345 | ), |
346 | 346 | |
347 | 347 | 'transaction_id' => array( |
348 | - 'description' => __( 'The transaction id for this invoice.', 'invoicing' ), |
|
348 | + 'description' => __('The transaction id for this invoice.', 'invoicing'), |
|
349 | 349 | 'type' => 'string', |
350 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
350 | + 'context' => array('view', 'edit', 'embed'), |
|
351 | 351 | ), |
352 | 352 | |
353 | 353 | 'disable_taxes' => array( |
354 | - 'description' => __( 'Whether or not taxes should be disabled for this invoice.', 'invoicing' ), |
|
354 | + 'description' => __('Whether or not taxes should be disabled for this invoice.', 'invoicing'), |
|
355 | 355 | 'type' => 'boolean ', |
356 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
356 | + 'context' => array('view', 'edit', 'embed'), |
|
357 | 357 | ), |
358 | 358 | |
359 | 359 | 'is_viewed' => array( |
360 | - 'description' => __( 'Whether or not this invoice has been viewed by the user.', 'invoicing' ), |
|
360 | + 'description' => __('Whether or not this invoice has been viewed by the user.', 'invoicing'), |
|
361 | 361 | 'type' => 'boolean ', |
362 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
362 | + 'context' => array('view', 'edit', 'embed'), |
|
363 | 363 | 'readonly' => true, |
364 | 364 | ), |
365 | 365 | |
366 | 366 | 'email_cc' => array( |
367 | - 'description' => __( 'A comma separated list of other emails that should receive communications for this invoice.', 'invoicing' ), |
|
367 | + 'description' => __('A comma separated list of other emails that should receive communications for this invoice.', 'invoicing'), |
|
368 | 368 | 'type' => 'string ', |
369 | - 'context' => array( 'view', 'edit' ), |
|
369 | + 'context' => array('view', 'edit'), |
|
370 | 370 | ), |
371 | 371 | |
372 | 372 | 'subscription_id' => array( |
373 | - 'description' => __( 'The ID of the subscription associated with this invoice.', 'invoicing' ), |
|
373 | + 'description' => __('The ID of the subscription associated with this invoice.', 'invoicing'), |
|
374 | 374 | 'type' => 'string ', |
375 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
375 | + 'context' => array('view', 'edit', 'embed'), |
|
376 | 376 | 'readonly' => true, |
377 | 377 | ), |
378 | 378 | |
379 | 379 | 'subscription_name' => array( |
380 | - 'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ), |
|
380 | + 'description' => __('The name of the subscription associated with this invoice.', 'invoicing'), |
|
381 | 381 | 'type' => 'string ', |
382 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
382 | + 'context' => array('view', 'edit', 'embed'), |
|
383 | 383 | 'readonly' => true, |
384 | 384 | ), |
385 | 385 | |
386 | 386 | 'subscription_name' => array( |
387 | - 'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ), |
|
387 | + 'description' => __('The name of the subscription associated with this invoice.', 'invoicing'), |
|
388 | 388 | 'type' => 'string ', |
389 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
389 | + 'context' => array('view', 'edit', 'embed'), |
|
390 | 390 | 'readonly' => true, |
391 | 391 | ), |
392 | 392 | |
393 | 393 | 'is_parent' => array( |
394 | - 'description' => __( 'Whether or not this is a parent invoice.', 'invoicing' ), |
|
394 | + 'description' => __('Whether or not this is a parent invoice.', 'invoicing'), |
|
395 | 395 | 'type' => 'boolean', |
396 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
396 | + 'context' => array('view', 'edit', 'embed'), |
|
397 | 397 | 'readonly' => true, |
398 | 398 | ), |
399 | 399 | |
400 | 400 | 'is_renewal' => array( |
401 | - 'description' => __( 'Whether or not this is a renewal invoice.', 'invoicing' ), |
|
401 | + 'description' => __('Whether or not this is a renewal invoice.', 'invoicing'), |
|
402 | 402 | 'type' => 'boolean', |
403 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
403 | + 'context' => array('view', 'edit', 'embed'), |
|
404 | 404 | 'readonly' => true, |
405 | 405 | ), |
406 | 406 | |
407 | 407 | 'is_recurring' => array( |
408 | - 'description' => __( 'Whether or not this is a recurring invoice.', 'invoicing' ), |
|
408 | + 'description' => __('Whether or not this is a recurring invoice.', 'invoicing'), |
|
409 | 409 | 'type' => 'boolean', |
410 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
410 | + 'context' => array('view', 'edit', 'embed'), |
|
411 | 411 | 'readonly' => true, |
412 | 412 | ), |
413 | 413 | |
414 | 414 | 'is_free' => array( |
415 | - 'description' => __( 'Whether or not this invoice is free.', 'invoicing' ), |
|
415 | + 'description' => __('Whether or not this invoice is free.', 'invoicing'), |
|
416 | 416 | 'type' => 'boolean', |
417 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
417 | + 'context' => array('view', 'edit', 'embed'), |
|
418 | 418 | 'readonly' => true, |
419 | 419 | ), |
420 | 420 | |
421 | 421 | 'is_paid' => array( |
422 | - 'description' => __( 'Whether or not this invoice has been paid.', 'invoicing' ), |
|
422 | + 'description' => __('Whether or not this invoice has been paid.', 'invoicing'), |
|
423 | 423 | 'type' => 'boolean', |
424 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
424 | + 'context' => array('view', 'edit', 'embed'), |
|
425 | 425 | 'readonly' => true, |
426 | 426 | ), |
427 | 427 | |
428 | 428 | 'needs_payment' => array( |
429 | - 'description' => __( 'Whether or not this invoice needs payment.', 'invoicing' ), |
|
429 | + 'description' => __('Whether or not this invoice needs payment.', 'invoicing'), |
|
430 | 430 | 'type' => 'boolean', |
431 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
431 | + 'context' => array('view', 'edit', 'embed'), |
|
432 | 432 | 'readonly' => true, |
433 | 433 | ), |
434 | 434 | |
435 | 435 | 'is_refunded' => array( |
436 | - 'description' => __( 'Whether or not this invoice was refunded.', 'invoicing' ), |
|
436 | + 'description' => __('Whether or not this invoice was refunded.', 'invoicing'), |
|
437 | 437 | 'type' => 'boolean', |
438 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
438 | + 'context' => array('view', 'edit', 'embed'), |
|
439 | 439 | 'readonly' => true, |
440 | 440 | ), |
441 | 441 | |
442 | 442 | 'is_due' => array( |
443 | - 'description' => __( 'Whether or not this invoice is due.', 'invoicing' ), |
|
443 | + 'description' => __('Whether or not this invoice is due.', 'invoicing'), |
|
444 | 444 | 'type' => 'boolean', |
445 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
445 | + 'context' => array('view', 'edit', 'embed'), |
|
446 | 446 | 'readonly' => true, |
447 | 447 | ), |
448 | 448 | |
449 | 449 | 'is_held' => array( |
450 | - 'description' => __( 'Whether or not this invoice has been held for payment confirmation.', 'invoicing' ), |
|
450 | + 'description' => __('Whether or not this invoice has been held for payment confirmation.', 'invoicing'), |
|
451 | 451 | 'type' => 'boolean', |
452 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
452 | + 'context' => array('view', 'edit', 'embed'), |
|
453 | 453 | 'readonly' => true, |
454 | 454 | ), |
455 | 455 | |
456 | 456 | 'is_draft' => array( |
457 | - 'description' => __( 'Whether or not this invoice is marked as draft (cannot be viewed on the frontend).', 'invoicing' ), |
|
457 | + 'description' => __('Whether or not this invoice is marked as draft (cannot be viewed on the frontend).', 'invoicing'), |
|
458 | 458 | 'type' => 'boolean', |
459 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
459 | + 'context' => array('view', 'edit', 'embed'), |
|
460 | 460 | 'readonly' => true, |
461 | 461 | ), |
462 | 462 | |
463 | 463 | 'path' => array( |
464 | - 'description' => __( 'The invoice path/slug/name.', 'invoicing' ), |
|
464 | + 'description' => __('The invoice path/slug/name.', 'invoicing'), |
|
465 | 465 | 'type' => 'string', |
466 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
466 | + 'context' => array('view', 'edit', 'embed'), |
|
467 | 467 | 'readonly' => true, |
468 | 468 | ), |
469 | 469 | |
470 | 470 | 'description' => array( |
471 | - 'description' => __( 'The invoice description.', 'invoicing' ), |
|
471 | + 'description' => __('The invoice description.', 'invoicing'), |
|
472 | 472 | 'type' => 'string', |
473 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
473 | + 'context' => array('view', 'edit', 'embed'), |
|
474 | 474 | ), |
475 | 475 | |
476 | 476 | 'payment_form' => array( |
477 | - 'description' => __( 'The id of the payment form used to pay for this invoice.', 'invoicing' ), |
|
477 | + 'description' => __('The id of the payment form used to pay for this invoice.', 'invoicing'), |
|
478 | 478 | 'type' => 'integer', |
479 | - 'context' => array( 'view', 'edit' ), |
|
479 | + 'context' => array('view', 'edit'), |
|
480 | 480 | 'readonly' => true, |
481 | 481 | ), |
482 | 482 | |
483 | 483 | 'submission_id' => array( |
484 | - 'description' => __( 'A uniques ID of the submission details used to pay for this invoice.', 'invoicing' ), |
|
484 | + 'description' => __('A uniques ID of the submission details used to pay for this invoice.', 'invoicing'), |
|
485 | 485 | 'type' => 'string', |
486 | - 'context' => array( 'view', 'edit' ), |
|
486 | + 'context' => array('view', 'edit'), |
|
487 | 487 | 'readonly' => true, |
488 | 488 | ), |
489 | 489 | |
490 | 490 | 'customer_id' => array( |
491 | - 'description' => __( 'The customer id.', 'invoicing' ), |
|
491 | + 'description' => __('The customer id.', 'invoicing'), |
|
492 | 492 | 'type' => 'integer', |
493 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
493 | + 'context' => array('view', 'edit', 'embed'), |
|
494 | 494 | ), |
495 | 495 | |
496 | 496 | 'customer_ip' => array( |
497 | - 'description' => __( "The customer's ip address.", 'invoicing' ), |
|
497 | + 'description' => __("The customer's ip address.", 'invoicing'), |
|
498 | 498 | 'type' => 'string', |
499 | 499 | 'format' => 'ip', |
500 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
500 | + 'context' => array('view', 'edit', 'embed'), |
|
501 | 501 | ), |
502 | 502 | |
503 | 503 | 'first_name' => array( |
504 | - 'description' => __( "The customer's first name.", 'invoicing' ), |
|
504 | + 'description' => __("The customer's first name.", 'invoicing'), |
|
505 | 505 | 'type' => 'string', |
506 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
506 | + 'context' => array('view', 'edit', 'embed'), |
|
507 | 507 | ), |
508 | 508 | |
509 | 509 | 'last_name' => array( |
510 | - 'description' => __( "The customer's last name.", 'invoicing' ), |
|
510 | + 'description' => __("The customer's last name.", 'invoicing'), |
|
511 | 511 | 'type' => 'string', |
512 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
512 | + 'context' => array('view', 'edit', 'embed'), |
|
513 | 513 | ), |
514 | 514 | |
515 | 515 | 'full_name' => array( |
516 | - 'description' => __( "The customer's full name.", 'invoicing' ), |
|
516 | + 'description' => __("The customer's full name.", 'invoicing'), |
|
517 | 517 | 'type' => 'string', |
518 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
518 | + 'context' => array('view', 'edit', 'embed'), |
|
519 | 519 | 'readonly' => true, |
520 | 520 | ), |
521 | 521 | |
522 | 522 | 'phone_number' => array( |
523 | - 'description' => __( "The customer's phone number.", 'invoicing' ), |
|
523 | + 'description' => __("The customer's phone number.", 'invoicing'), |
|
524 | 524 | 'type' => 'string', |
525 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
525 | + 'context' => array('view', 'edit', 'embed'), |
|
526 | 526 | ), |
527 | 527 | |
528 | 528 | 'email_address' => array( |
529 | - 'description' => __( "The customer's email address.", 'invoicing' ), |
|
529 | + 'description' => __("The customer's email address.", 'invoicing'), |
|
530 | 530 | 'type' => 'string', |
531 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
531 | + 'context' => array('view', 'edit', 'embed'), |
|
532 | 532 | 'readonly' => true, |
533 | 533 | ), |
534 | 534 | |
535 | 535 | 'customer_country' => array( |
536 | - 'description' => __( "The customer's country.", 'invoicing' ), |
|
536 | + 'description' => __("The customer's country.", 'invoicing'), |
|
537 | 537 | 'type' => 'string', |
538 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
538 | + 'context' => array('view', 'edit', 'embed'), |
|
539 | 539 | 'default' => wpinv_get_default_country(), |
540 | 540 | ), |
541 | 541 | |
542 | 542 | 'customer_state' => array( |
543 | - 'description' => __( "The customer's state.", 'invoicing' ), |
|
543 | + 'description' => __("The customer's state.", 'invoicing'), |
|
544 | 544 | 'type' => 'string', |
545 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
545 | + 'context' => array('view', 'edit', 'embed'), |
|
546 | 546 | ), |
547 | 547 | |
548 | 548 | 'customer_city' => array( |
549 | - 'description' => __( "The customer's city.", 'invoicing' ), |
|
549 | + 'description' => __("The customer's city.", 'invoicing'), |
|
550 | 550 | 'type' => 'string', |
551 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
551 | + 'context' => array('view', 'edit', 'embed'), |
|
552 | 552 | ), |
553 | 553 | |
554 | 554 | 'customer_zip' => array( |
555 | - 'description' => __( "The customer's zip/postal code.", 'invoicing' ), |
|
555 | + 'description' => __("The customer's zip/postal code.", 'invoicing'), |
|
556 | 556 | 'type' => 'string', |
557 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
557 | + 'context' => array('view', 'edit', 'embed'), |
|
558 | 558 | ), |
559 | 559 | |
560 | 560 | 'customer_company' => array( |
561 | - 'description' => __( "The customer's company name.", 'invoicing' ), |
|
561 | + 'description' => __("The customer's company name.", 'invoicing'), |
|
562 | 562 | 'type' => 'string', |
563 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
563 | + 'context' => array('view', 'edit', 'embed'), |
|
564 | 564 | ), |
565 | 565 | |
566 | 566 | 'vat_number' => array( |
567 | - 'description' => __( "The customer's VAT number.", 'invoicing' ), |
|
567 | + 'description' => __("The customer's VAT number.", 'invoicing'), |
|
568 | 568 | 'type' => 'string', |
569 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
569 | + 'context' => array('view', 'edit', 'embed'), |
|
570 | 570 | ), |
571 | 571 | |
572 | 572 | 'vat_rate' => array( |
573 | - 'description' => __( "The customer's VAT rate.", 'invoicing' ), |
|
573 | + 'description' => __("The customer's VAT rate.", 'invoicing'), |
|
574 | 574 | 'type' => 'number', |
575 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
575 | + 'context' => array('view', 'edit', 'embed'), |
|
576 | 576 | 'readonly' => true, |
577 | 577 | ), |
578 | 578 | |
579 | 579 | 'customer_address' => array( |
580 | - 'description' => __( "The customer's address.", 'invoicing' ), |
|
580 | + 'description' => __("The customer's address.", 'invoicing'), |
|
581 | 581 | 'type' => 'string', |
582 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
582 | + 'context' => array('view', 'edit', 'embed'), |
|
583 | 583 | ), |
584 | 584 | |
585 | 585 | 'address_confirmed' => array( |
586 | - 'description' => __( "Whether or not the customer's address is confirmed.", 'invoicing' ), |
|
586 | + 'description' => __("Whether or not the customer's address is confirmed.", 'invoicing'), |
|
587 | 587 | 'type' => 'boolean', |
588 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
588 | + 'context' => array('view', 'edit', 'embed'), |
|
589 | 589 | ), |
590 | 590 | |
591 | 591 | 'meta_data' => array( |
592 | - 'description' => __( 'Invoice meta data.', 'invoicing' ), |
|
592 | + 'description' => __('Invoice meta data.', 'invoicing'), |
|
593 | 593 | 'type' => 'array', |
594 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
594 | + 'context' => array('view', 'edit', 'embed'), |
|
595 | 595 | 'items' => array( |
596 | 596 | 'type' => 'object', |
597 | 597 | 'properties' => array( |
598 | 598 | 'id' => array( |
599 | - 'description' => __( 'Meta ID.', 'invoicing' ), |
|
599 | + 'description' => __('Meta ID.', 'invoicing'), |
|
600 | 600 | 'type' => 'string', |
601 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
601 | + 'context' => array('view', 'edit', 'embed'), |
|
602 | 602 | ), |
603 | 603 | 'key' => array( |
604 | - 'description' => __( 'Meta key.', 'invoicing' ), |
|
604 | + 'description' => __('Meta key.', 'invoicing'), |
|
605 | 605 | 'type' => 'string', |
606 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
606 | + 'context' => array('view', 'edit', 'embed'), |
|
607 | 607 | ), |
608 | 608 | 'value' => array( |
609 | - 'description' => __( 'Meta Value.', 'invoicing' ), |
|
610 | - 'type' => array( 'string', 'array', 'object', 'integer', 'null' ), |
|
611 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
609 | + 'description' => __('Meta Value.', 'invoicing'), |
|
610 | + 'type' => array('string', 'array', 'object', 'integer', 'null'), |
|
611 | + 'context' => array('view', 'edit', 'embed'), |
|
612 | 612 | ), |
613 | 613 | ), |
614 | 614 | ), |
615 | 615 | ), |
616 | 616 | |
617 | 617 | 'view_url' => array( |
618 | - 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
618 | + 'description' => __('URL to the invoice.', 'invoicing'), |
|
619 | 619 | 'type' => 'string', |
620 | 620 | 'format' => 'uri', |
621 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
621 | + 'context' => array('view', 'edit', 'embed'), |
|
622 | 622 | 'readonly' => true, |
623 | 623 | ), |
624 | 624 | |
625 | 625 | 'checkout_payment_url' => array( |
626 | - 'description' => __( 'URL to the invoice checkout page.', 'invoicing' ), |
|
626 | + 'description' => __('URL to the invoice checkout page.', 'invoicing'), |
|
627 | 627 | 'type' => 'string', |
628 | 628 | 'format' => 'uri', |
629 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
629 | + 'context' => array('view', 'edit', 'embed'), |
|
630 | 630 | 'readonly' => true, |
631 | 631 | ), |
632 | 632 | |
633 | 633 | 'receipt_url' => array( |
634 | - 'description' => __( 'URL to the invoice receipt page.', 'invoicing' ), |
|
634 | + 'description' => __('URL to the invoice receipt page.', 'invoicing'), |
|
635 | 635 | 'type' => 'string', |
636 | 636 | 'format' => 'uri', |
637 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
637 | + 'context' => array('view', 'edit', 'embed'), |
|
638 | 638 | 'readonly' => true, |
639 | 639 | ), |
640 | 640 |
@@ -4,7 +4,7 @@ discard block |
||
4 | 4 | * |
5 | 5 | */ |
6 | 6 | if ( ! defined( 'ABSPATH' ) ) { |
7 | - exit; |
|
7 | + exit; |
|
8 | 8 | } |
9 | 9 | |
10 | 10 | /** |
@@ -14,228 +14,228 @@ discard block |
||
14 | 14 | */ |
15 | 15 | class GetPaid_Item_Data_Store extends GetPaid_Data_Store_WP { |
16 | 16 | |
17 | - /** |
|
18 | - * Data stored in meta keys, but not considered "meta" for an item. |
|
19 | - * |
|
20 | - * @since 1.0.19 |
|
21 | - * @var array |
|
22 | - */ |
|
23 | - protected $internal_meta_keys = array( |
|
24 | - '_wpinv_price', |
|
25 | - '_wpinv_vat_rule', |
|
26 | - '_wpinv_vat_class', |
|
27 | - '_wpinv_type', |
|
28 | - '_wpinv_custom_id', |
|
29 | - '_wpinv_custom_name', |
|
30 | - '_wpinv_custom_singular_name', |
|
31 | - '_wpinv_editable', |
|
32 | - '_wpinv_dynamic_pricing', |
|
33 | - '_minimum_price', |
|
34 | - '_wpinv_is_recurring', |
|
35 | - '_wpinv_recurring_period', |
|
36 | - '_wpinv_recurring_interval', |
|
37 | - '_wpinv_recurring_limit', |
|
38 | - '_wpinv_free_trial', |
|
39 | - '_wpinv_trial_period', |
|
40 | - '_wpinv_trial_interval' |
|
41 | - ); |
|
42 | - |
|
43 | - /** |
|
44 | - * A map of meta keys to data props. |
|
45 | - * |
|
46 | - * @since 1.0.19 |
|
47 | - * |
|
48 | - * @var array |
|
49 | - */ |
|
50 | - protected $meta_key_to_props = array( |
|
51 | - '_wpinv_price' => 'price', |
|
52 | - '_wpinv_vat_rule' => 'vat_rule', |
|
53 | - '_wpinv_vat_class' => 'vat_class', |
|
54 | - '_wpinv_type' => 'type', |
|
55 | - '_wpinv_custom_id' => 'custom_id', |
|
56 | - '_wpinv_custom_name' => 'custom_name', |
|
57 | - '_wpinv_custom_singular_name' => 'custom_singular_name', |
|
58 | - '_wpinv_editable' => 'is_editable', |
|
59 | - '_wpinv_dynamic_pricing' => 'is_dynamic_pricing', |
|
60 | - '_minimum_price' => 'minimum_price', |
|
61 | - '_wpinv_custom_name' => 'custom_name', |
|
62 | - '_wpinv_is_recurring' => 'is_recurring', |
|
63 | - '_wpinv_recurring_period' => 'recurring_period', |
|
64 | - '_wpinv_recurring_interval' => 'recurring_interval', |
|
65 | - '_wpinv_recurring_limit' => 'recurring_limit', |
|
66 | - '_wpinv_free_trial' => 'is_free_trial', |
|
67 | - '_wpinv_trial_period' => 'trial_period', |
|
68 | - '_wpinv_trial_interval' => 'trial_interval', |
|
69 | - '_wpinv_version' => 'version', |
|
70 | - ); |
|
71 | - |
|
72 | - /* |
|
17 | + /** |
|
18 | + * Data stored in meta keys, but not considered "meta" for an item. |
|
19 | + * |
|
20 | + * @since 1.0.19 |
|
21 | + * @var array |
|
22 | + */ |
|
23 | + protected $internal_meta_keys = array( |
|
24 | + '_wpinv_price', |
|
25 | + '_wpinv_vat_rule', |
|
26 | + '_wpinv_vat_class', |
|
27 | + '_wpinv_type', |
|
28 | + '_wpinv_custom_id', |
|
29 | + '_wpinv_custom_name', |
|
30 | + '_wpinv_custom_singular_name', |
|
31 | + '_wpinv_editable', |
|
32 | + '_wpinv_dynamic_pricing', |
|
33 | + '_minimum_price', |
|
34 | + '_wpinv_is_recurring', |
|
35 | + '_wpinv_recurring_period', |
|
36 | + '_wpinv_recurring_interval', |
|
37 | + '_wpinv_recurring_limit', |
|
38 | + '_wpinv_free_trial', |
|
39 | + '_wpinv_trial_period', |
|
40 | + '_wpinv_trial_interval' |
|
41 | + ); |
|
42 | + |
|
43 | + /** |
|
44 | + * A map of meta keys to data props. |
|
45 | + * |
|
46 | + * @since 1.0.19 |
|
47 | + * |
|
48 | + * @var array |
|
49 | + */ |
|
50 | + protected $meta_key_to_props = array( |
|
51 | + '_wpinv_price' => 'price', |
|
52 | + '_wpinv_vat_rule' => 'vat_rule', |
|
53 | + '_wpinv_vat_class' => 'vat_class', |
|
54 | + '_wpinv_type' => 'type', |
|
55 | + '_wpinv_custom_id' => 'custom_id', |
|
56 | + '_wpinv_custom_name' => 'custom_name', |
|
57 | + '_wpinv_custom_singular_name' => 'custom_singular_name', |
|
58 | + '_wpinv_editable' => 'is_editable', |
|
59 | + '_wpinv_dynamic_pricing' => 'is_dynamic_pricing', |
|
60 | + '_minimum_price' => 'minimum_price', |
|
61 | + '_wpinv_custom_name' => 'custom_name', |
|
62 | + '_wpinv_is_recurring' => 'is_recurring', |
|
63 | + '_wpinv_recurring_period' => 'recurring_period', |
|
64 | + '_wpinv_recurring_interval' => 'recurring_interval', |
|
65 | + '_wpinv_recurring_limit' => 'recurring_limit', |
|
66 | + '_wpinv_free_trial' => 'is_free_trial', |
|
67 | + '_wpinv_trial_period' => 'trial_period', |
|
68 | + '_wpinv_trial_interval' => 'trial_interval', |
|
69 | + '_wpinv_version' => 'version', |
|
70 | + ); |
|
71 | + |
|
72 | + /* |
|
73 | 73 | |-------------------------------------------------------------------------- |
74 | 74 | | CRUD Methods |
75 | 75 | |-------------------------------------------------------------------------- |
76 | 76 | */ |
77 | 77 | |
78 | - /** |
|
79 | - * Method to create a new item in the database. |
|
80 | - * |
|
81 | - * @param WPInv_Item $item Item object. |
|
82 | - */ |
|
83 | - public function create( &$item ) { |
|
84 | - $item->set_version( WPINV_VERSION ); |
|
85 | - $item->set_date_created( current_time('mysql') ); |
|
86 | - |
|
87 | - // Create a new post. |
|
88 | - $id = wp_insert_post( |
|
89 | - apply_filters( |
|
90 | - 'getpaid_new_item_data', |
|
91 | - array( |
|
92 | - 'post_date' => $item->get_date_created( 'edit' ), |
|
93 | - 'post_type' => 'wpi_item', |
|
94 | - 'post_status' => $this->get_post_status( $item ), |
|
95 | - 'ping_status' => 'closed', |
|
96 | - 'post_author' => $item->get_author( 'edit' ), |
|
97 | - 'post_title' => $item->get_name( 'edit' ), |
|
98 | - 'post_parent' => 0, |
|
99 | - 'post_excerpt' => $item->get_description( 'edit' ), |
|
100 | - ) |
|
101 | - ), |
|
102 | - true |
|
103 | - ); |
|
104 | - |
|
105 | - if ( $id && ! is_wp_error( $id ) ) { |
|
106 | - $item->set_id( $id ); |
|
107 | - $this->update_post_meta( $item ); |
|
108 | - $item->save_meta_data(); |
|
109 | - $item->apply_changes(); |
|
110 | - $this->clear_caches( $item ); |
|
111 | - do_action( 'getpaid_new_item', $item ); |
|
112 | - return true; |
|
113 | - } |
|
114 | - |
|
115 | - if ( is_wp_error( $id ) ) { |
|
116 | - $item->last_error = $id->get_error_message(); |
|
117 | - } |
|
78 | + /** |
|
79 | + * Method to create a new item in the database. |
|
80 | + * |
|
81 | + * @param WPInv_Item $item Item object. |
|
82 | + */ |
|
83 | + public function create( &$item ) { |
|
84 | + $item->set_version( WPINV_VERSION ); |
|
85 | + $item->set_date_created( current_time('mysql') ); |
|
86 | + |
|
87 | + // Create a new post. |
|
88 | + $id = wp_insert_post( |
|
89 | + apply_filters( |
|
90 | + 'getpaid_new_item_data', |
|
91 | + array( |
|
92 | + 'post_date' => $item->get_date_created( 'edit' ), |
|
93 | + 'post_type' => 'wpi_item', |
|
94 | + 'post_status' => $this->get_post_status( $item ), |
|
95 | + 'ping_status' => 'closed', |
|
96 | + 'post_author' => $item->get_author( 'edit' ), |
|
97 | + 'post_title' => $item->get_name( 'edit' ), |
|
98 | + 'post_parent' => 0, |
|
99 | + 'post_excerpt' => $item->get_description( 'edit' ), |
|
100 | + ) |
|
101 | + ), |
|
102 | + true |
|
103 | + ); |
|
104 | + |
|
105 | + if ( $id && ! is_wp_error( $id ) ) { |
|
106 | + $item->set_id( $id ); |
|
107 | + $this->update_post_meta( $item ); |
|
108 | + $item->save_meta_data(); |
|
109 | + $item->apply_changes(); |
|
110 | + $this->clear_caches( $item ); |
|
111 | + do_action( 'getpaid_new_item', $item ); |
|
112 | + return true; |
|
113 | + } |
|
114 | + |
|
115 | + if ( is_wp_error( $id ) ) { |
|
116 | + $item->last_error = $id->get_error_message(); |
|
117 | + } |
|
118 | 118 | |
119 | - return false; |
|
120 | - } |
|
121 | - |
|
122 | - /** |
|
123 | - * Method to read an item from the database. |
|
124 | - * |
|
125 | - * @param WPInv_Item $item Item object. |
|
126 | - * |
|
127 | - */ |
|
128 | - public function read( &$item ) { |
|
129 | - |
|
130 | - $item->set_defaults(); |
|
131 | - $item_object = get_post( $item->get_id() ); |
|
132 | - |
|
133 | - if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) { |
|
134 | - $item->last_error = __( 'Invalid item.', 'invoicing' ); |
|
135 | - $item->set_id( 0 ); |
|
136 | - return false; |
|
137 | - } |
|
138 | - |
|
139 | - $item->set_props( |
|
140 | - array( |
|
141 | - 'parent_id' => $item_object->post_parent, |
|
142 | - 'date_created' => 0 < $item_object->post_date ? $item_object->post_date : null, |
|
143 | - 'date_modified' => 0 < $item_object->post_modified ? $item_object->post_modified : null, |
|
144 | - 'status' => $item_object->post_status, |
|
145 | - 'name' => $item_object->post_title, |
|
146 | - 'description' => $item_object->post_excerpt, |
|
147 | - 'author' => $item_object->post_author, |
|
148 | - ) |
|
149 | - ); |
|
150 | - |
|
151 | - $this->read_object_data( $item, $item_object ); |
|
152 | - $item->read_meta_data(); |
|
153 | - $item->set_object_read( true ); |
|
154 | - do_action( 'getpaid_read_item', $item ); |
|
155 | - |
|
156 | - } |
|
157 | - |
|
158 | - /** |
|
159 | - * Method to update an item in the database. |
|
160 | - * |
|
161 | - * @param WPInv_Item $item Item object. |
|
162 | - */ |
|
163 | - public function update( &$item ) { |
|
164 | - $item->save_meta_data(); |
|
165 | - $item->set_version( WPINV_VERSION ); |
|
166 | - |
|
167 | - if ( null === $item->get_date_created( 'edit' ) ) { |
|
168 | - $item->set_date_created( current_time('mysql') ); |
|
169 | - } |
|
170 | - |
|
171 | - // Grab the current status so we can compare. |
|
172 | - $previous_status = get_post_status( $item->get_id() ); |
|
173 | - |
|
174 | - $changes = $item->get_changes(); |
|
175 | - |
|
176 | - // Only update the post when the post data changes. |
|
177 | - if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) { |
|
178 | - $post_data = array( |
|
179 | - 'post_date' => $item->get_date_created( 'edit' ), |
|
180 | - 'post_status' => $item->get_status( 'edit' ), |
|
181 | - 'post_parent' => $item->get_parent_id( 'edit' ), |
|
182 | - 'post_excerpt' => $item->get_description( 'edit' ), |
|
183 | - 'post_modified' => $item->get_date_modified( 'edit' ), |
|
184 | - 'post_title' => $item->get_name( 'edit' ), |
|
185 | - 'post_author' => $item->get_author( 'edit' ), |
|
186 | - ); |
|
187 | - |
|
188 | - /** |
|
189 | - * When updating this object, to prevent infinite loops, use $wpdb |
|
190 | - * to update data, since wp_update_post spawns more calls to the |
|
191 | - * save_post action. |
|
192 | - * |
|
193 | - * This ensures hooks are fired by either WP itself (admin screen save), |
|
194 | - * or an update purely from CRUD. |
|
195 | - */ |
|
196 | - if ( doing_action( 'save_post' ) ) { |
|
197 | - $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) ); |
|
198 | - clean_post_cache( $item->get_id() ); |
|
199 | - } else { |
|
200 | - wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) ); |
|
201 | - } |
|
202 | - $item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. |
|
203 | - } |
|
204 | - $this->update_post_meta( $item ); |
|
205 | - $item->apply_changes(); |
|
206 | - $this->clear_caches( $item ); |
|
207 | - |
|
208 | - // Fire a hook depending on the status - this should be considered a creation if it was previously draft status. |
|
209 | - $new_status = $item->get_status( 'edit' ); |
|
210 | - |
|
211 | - if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) { |
|
212 | - do_action( 'getpaid_new_item', $item ); |
|
213 | - } else { |
|
214 | - do_action( 'getpaid_update_item', $item ); |
|
215 | - } |
|
216 | - |
|
217 | - } |
|
218 | - |
|
219 | - /* |
|
119 | + return false; |
|
120 | + } |
|
121 | + |
|
122 | + /** |
|
123 | + * Method to read an item from the database. |
|
124 | + * |
|
125 | + * @param WPInv_Item $item Item object. |
|
126 | + * |
|
127 | + */ |
|
128 | + public function read( &$item ) { |
|
129 | + |
|
130 | + $item->set_defaults(); |
|
131 | + $item_object = get_post( $item->get_id() ); |
|
132 | + |
|
133 | + if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) { |
|
134 | + $item->last_error = __( 'Invalid item.', 'invoicing' ); |
|
135 | + $item->set_id( 0 ); |
|
136 | + return false; |
|
137 | + } |
|
138 | + |
|
139 | + $item->set_props( |
|
140 | + array( |
|
141 | + 'parent_id' => $item_object->post_parent, |
|
142 | + 'date_created' => 0 < $item_object->post_date ? $item_object->post_date : null, |
|
143 | + 'date_modified' => 0 < $item_object->post_modified ? $item_object->post_modified : null, |
|
144 | + 'status' => $item_object->post_status, |
|
145 | + 'name' => $item_object->post_title, |
|
146 | + 'description' => $item_object->post_excerpt, |
|
147 | + 'author' => $item_object->post_author, |
|
148 | + ) |
|
149 | + ); |
|
150 | + |
|
151 | + $this->read_object_data( $item, $item_object ); |
|
152 | + $item->read_meta_data(); |
|
153 | + $item->set_object_read( true ); |
|
154 | + do_action( 'getpaid_read_item', $item ); |
|
155 | + |
|
156 | + } |
|
157 | + |
|
158 | + /** |
|
159 | + * Method to update an item in the database. |
|
160 | + * |
|
161 | + * @param WPInv_Item $item Item object. |
|
162 | + */ |
|
163 | + public function update( &$item ) { |
|
164 | + $item->save_meta_data(); |
|
165 | + $item->set_version( WPINV_VERSION ); |
|
166 | + |
|
167 | + if ( null === $item->get_date_created( 'edit' ) ) { |
|
168 | + $item->set_date_created( current_time('mysql') ); |
|
169 | + } |
|
170 | + |
|
171 | + // Grab the current status so we can compare. |
|
172 | + $previous_status = get_post_status( $item->get_id() ); |
|
173 | + |
|
174 | + $changes = $item->get_changes(); |
|
175 | + |
|
176 | + // Only update the post when the post data changes. |
|
177 | + if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) { |
|
178 | + $post_data = array( |
|
179 | + 'post_date' => $item->get_date_created( 'edit' ), |
|
180 | + 'post_status' => $item->get_status( 'edit' ), |
|
181 | + 'post_parent' => $item->get_parent_id( 'edit' ), |
|
182 | + 'post_excerpt' => $item->get_description( 'edit' ), |
|
183 | + 'post_modified' => $item->get_date_modified( 'edit' ), |
|
184 | + 'post_title' => $item->get_name( 'edit' ), |
|
185 | + 'post_author' => $item->get_author( 'edit' ), |
|
186 | + ); |
|
187 | + |
|
188 | + /** |
|
189 | + * When updating this object, to prevent infinite loops, use $wpdb |
|
190 | + * to update data, since wp_update_post spawns more calls to the |
|
191 | + * save_post action. |
|
192 | + * |
|
193 | + * This ensures hooks are fired by either WP itself (admin screen save), |
|
194 | + * or an update purely from CRUD. |
|
195 | + */ |
|
196 | + if ( doing_action( 'save_post' ) ) { |
|
197 | + $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) ); |
|
198 | + clean_post_cache( $item->get_id() ); |
|
199 | + } else { |
|
200 | + wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) ); |
|
201 | + } |
|
202 | + $item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. |
|
203 | + } |
|
204 | + $this->update_post_meta( $item ); |
|
205 | + $item->apply_changes(); |
|
206 | + $this->clear_caches( $item ); |
|
207 | + |
|
208 | + // Fire a hook depending on the status - this should be considered a creation if it was previously draft status. |
|
209 | + $new_status = $item->get_status( 'edit' ); |
|
210 | + |
|
211 | + if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) { |
|
212 | + do_action( 'getpaid_new_item', $item ); |
|
213 | + } else { |
|
214 | + do_action( 'getpaid_update_item', $item ); |
|
215 | + } |
|
216 | + |
|
217 | + } |
|
218 | + |
|
219 | + /* |
|
220 | 220 | |-------------------------------------------------------------------------- |
221 | 221 | | Additional Methods |
222 | 222 | |-------------------------------------------------------------------------- |
223 | 223 | */ |
224 | 224 | |
225 | - /** |
|
226 | - * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class. |
|
227 | - * |
|
228 | - * @param WPInv_Item $item WPInv_Item object. |
|
229 | - * @since 1.0.19 |
|
230 | - */ |
|
231 | - protected function update_post_meta( &$item ) { |
|
225 | + /** |
|
226 | + * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class. |
|
227 | + * |
|
228 | + * @param WPInv_Item $item WPInv_Item object. |
|
229 | + * @since 1.0.19 |
|
230 | + */ |
|
231 | + protected function update_post_meta( &$item ) { |
|
232 | 232 | |
233 | - // Ensure that we have a custom id. |
|
233 | + // Ensure that we have a custom id. |
|
234 | 234 | if ( ! $item->get_custom_id() ) { |
235 | 235 | $item->set_custom_id( $item->get_id() ); |
236 | - } |
|
236 | + } |
|
237 | 237 | |
238 | - parent::update_post_meta( $item ); |
|
239 | - } |
|
238 | + parent::update_post_meta( $item ); |
|
239 | + } |
|
240 | 240 | |
241 | 241 | } |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * GetPaid_Item_Data_Store class file. |
4 | 4 | * |
5 | 5 | */ |
6 | -if ( ! defined( 'ABSPATH' ) ) { |
|
6 | +if (!defined('ABSPATH')) { |
|
7 | 7 | exit; |
8 | 8 | } |
9 | 9 | |
@@ -80,39 +80,39 @@ discard block |
||
80 | 80 | * |
81 | 81 | * @param WPInv_Item $item Item object. |
82 | 82 | */ |
83 | - public function create( &$item ) { |
|
84 | - $item->set_version( WPINV_VERSION ); |
|
85 | - $item->set_date_created( current_time('mysql') ); |
|
83 | + public function create(&$item) { |
|
84 | + $item->set_version(WPINV_VERSION); |
|
85 | + $item->set_date_created(current_time('mysql')); |
|
86 | 86 | |
87 | 87 | // Create a new post. |
88 | 88 | $id = wp_insert_post( |
89 | 89 | apply_filters( |
90 | 90 | 'getpaid_new_item_data', |
91 | 91 | array( |
92 | - 'post_date' => $item->get_date_created( 'edit' ), |
|
92 | + 'post_date' => $item->get_date_created('edit'), |
|
93 | 93 | 'post_type' => 'wpi_item', |
94 | - 'post_status' => $this->get_post_status( $item ), |
|
94 | + 'post_status' => $this->get_post_status($item), |
|
95 | 95 | 'ping_status' => 'closed', |
96 | - 'post_author' => $item->get_author( 'edit' ), |
|
97 | - 'post_title' => $item->get_name( 'edit' ), |
|
96 | + 'post_author' => $item->get_author('edit'), |
|
97 | + 'post_title' => $item->get_name('edit'), |
|
98 | 98 | 'post_parent' => 0, |
99 | - 'post_excerpt' => $item->get_description( 'edit' ), |
|
99 | + 'post_excerpt' => $item->get_description('edit'), |
|
100 | 100 | ) |
101 | 101 | ), |
102 | 102 | true |
103 | 103 | ); |
104 | 104 | |
105 | - if ( $id && ! is_wp_error( $id ) ) { |
|
106 | - $item->set_id( $id ); |
|
107 | - $this->update_post_meta( $item ); |
|
105 | + if ($id && !is_wp_error($id)) { |
|
106 | + $item->set_id($id); |
|
107 | + $this->update_post_meta($item); |
|
108 | 108 | $item->save_meta_data(); |
109 | 109 | $item->apply_changes(); |
110 | - $this->clear_caches( $item ); |
|
111 | - do_action( 'getpaid_new_item', $item ); |
|
110 | + $this->clear_caches($item); |
|
111 | + do_action('getpaid_new_item', $item); |
|
112 | 112 | return true; |
113 | 113 | } |
114 | 114 | |
115 | - if ( is_wp_error( $id ) ) { |
|
115 | + if (is_wp_error($id)) { |
|
116 | 116 | $item->last_error = $id->get_error_message(); |
117 | 117 | } |
118 | 118 | |
@@ -125,14 +125,14 @@ discard block |
||
125 | 125 | * @param WPInv_Item $item Item object. |
126 | 126 | * |
127 | 127 | */ |
128 | - public function read( &$item ) { |
|
128 | + public function read(&$item) { |
|
129 | 129 | |
130 | 130 | $item->set_defaults(); |
131 | - $item_object = get_post( $item->get_id() ); |
|
131 | + $item_object = get_post($item->get_id()); |
|
132 | 132 | |
133 | - if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) { |
|
134 | - $item->last_error = __( 'Invalid item.', 'invoicing' ); |
|
135 | - $item->set_id( 0 ); |
|
133 | + if (!$item->get_id() || !$item_object || $item_object->post_type != 'wpi_item') { |
|
134 | + $item->last_error = __('Invalid item.', 'invoicing'); |
|
135 | + $item->set_id(0); |
|
136 | 136 | return false; |
137 | 137 | } |
138 | 138 | |
@@ -148,10 +148,10 @@ discard block |
||
148 | 148 | ) |
149 | 149 | ); |
150 | 150 | |
151 | - $this->read_object_data( $item, $item_object ); |
|
151 | + $this->read_object_data($item, $item_object); |
|
152 | 152 | $item->read_meta_data(); |
153 | - $item->set_object_read( true ); |
|
154 | - do_action( 'getpaid_read_item', $item ); |
|
153 | + $item->set_object_read(true); |
|
154 | + do_action('getpaid_read_item', $item); |
|
155 | 155 | |
156 | 156 | } |
157 | 157 | |
@@ -160,29 +160,29 @@ discard block |
||
160 | 160 | * |
161 | 161 | * @param WPInv_Item $item Item object. |
162 | 162 | */ |
163 | - public function update( &$item ) { |
|
163 | + public function update(&$item) { |
|
164 | 164 | $item->save_meta_data(); |
165 | - $item->set_version( WPINV_VERSION ); |
|
165 | + $item->set_version(WPINV_VERSION); |
|
166 | 166 | |
167 | - if ( null === $item->get_date_created( 'edit' ) ) { |
|
168 | - $item->set_date_created( current_time('mysql') ); |
|
167 | + if (null === $item->get_date_created('edit')) { |
|
168 | + $item->set_date_created(current_time('mysql')); |
|
169 | 169 | } |
170 | 170 | |
171 | 171 | // Grab the current status so we can compare. |
172 | - $previous_status = get_post_status( $item->get_id() ); |
|
172 | + $previous_status = get_post_status($item->get_id()); |
|
173 | 173 | |
174 | 174 | $changes = $item->get_changes(); |
175 | 175 | |
176 | 176 | // Only update the post when the post data changes. |
177 | - if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) { |
|
177 | + if (array_intersect(array('date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author'), array_keys($changes))) { |
|
178 | 178 | $post_data = array( |
179 | - 'post_date' => $item->get_date_created( 'edit' ), |
|
180 | - 'post_status' => $item->get_status( 'edit' ), |
|
181 | - 'post_parent' => $item->get_parent_id( 'edit' ), |
|
182 | - 'post_excerpt' => $item->get_description( 'edit' ), |
|
183 | - 'post_modified' => $item->get_date_modified( 'edit' ), |
|
184 | - 'post_title' => $item->get_name( 'edit' ), |
|
185 | - 'post_author' => $item->get_author( 'edit' ), |
|
179 | + 'post_date' => $item->get_date_created('edit'), |
|
180 | + 'post_status' => $item->get_status('edit'), |
|
181 | + 'post_parent' => $item->get_parent_id('edit'), |
|
182 | + 'post_excerpt' => $item->get_description('edit'), |
|
183 | + 'post_modified' => $item->get_date_modified('edit'), |
|
184 | + 'post_title' => $item->get_name('edit'), |
|
185 | + 'post_author' => $item->get_author('edit'), |
|
186 | 186 | ); |
187 | 187 | |
188 | 188 | /** |
@@ -193,25 +193,25 @@ discard block |
||
193 | 193 | * This ensures hooks are fired by either WP itself (admin screen save), |
194 | 194 | * or an update purely from CRUD. |
195 | 195 | */ |
196 | - if ( doing_action( 'save_post' ) ) { |
|
197 | - $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) ); |
|
198 | - clean_post_cache( $item->get_id() ); |
|
196 | + if (doing_action('save_post')) { |
|
197 | + $GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $item->get_id())); |
|
198 | + clean_post_cache($item->get_id()); |
|
199 | 199 | } else { |
200 | - wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) ); |
|
200 | + wp_update_post(array_merge(array('ID' => $item->get_id()), $post_data)); |
|
201 | 201 | } |
202 | - $item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. |
|
202 | + $item->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook. |
|
203 | 203 | } |
204 | - $this->update_post_meta( $item ); |
|
204 | + $this->update_post_meta($item); |
|
205 | 205 | $item->apply_changes(); |
206 | - $this->clear_caches( $item ); |
|
206 | + $this->clear_caches($item); |
|
207 | 207 | |
208 | 208 | // Fire a hook depending on the status - this should be considered a creation if it was previously draft status. |
209 | - $new_status = $item->get_status( 'edit' ); |
|
209 | + $new_status = $item->get_status('edit'); |
|
210 | 210 | |
211 | - if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) { |
|
212 | - do_action( 'getpaid_new_item', $item ); |
|
211 | + if ($new_status !== $previous_status && in_array($previous_status, array('new', 'auto-draft', 'draft'), true)) { |
|
212 | + do_action('getpaid_new_item', $item); |
|
213 | 213 | } else { |
214 | - do_action( 'getpaid_update_item', $item ); |
|
214 | + do_action('getpaid_update_item', $item); |
|
215 | 215 | } |
216 | 216 | |
217 | 217 | } |
@@ -228,14 +228,14 @@ discard block |
||
228 | 228 | * @param WPInv_Item $item WPInv_Item object. |
229 | 229 | * @since 1.0.19 |
230 | 230 | */ |
231 | - protected function update_post_meta( &$item ) { |
|
231 | + protected function update_post_meta(&$item) { |
|
232 | 232 | |
233 | 233 | // Ensure that we have a custom id. |
234 | - if ( ! $item->get_custom_id() ) { |
|
235 | - $item->set_custom_id( $item->get_id() ); |
|
234 | + if (!$item->get_custom_id()) { |
|
235 | + $item->set_custom_id($item->get_id()); |
|
236 | 236 | } |
237 | 237 | |
238 | - parent::update_post_meta( $item ); |
|
238 | + parent::update_post_meta($item); |
|
239 | 239 | } |
240 | 240 | |
241 | 241 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if (!defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -87,9 +87,9 @@ discard block |
||
87 | 87 | * @param string $context View or edit context. |
88 | 88 | * @return string |
89 | 89 | */ |
90 | - public function get_name( $context = 'view' ) { |
|
91 | - $name = parent::get_name( $context ); |
|
92 | - return $name . wpinv_get_item_suffix( $this ); |
|
90 | + public function get_name($context = 'view') { |
|
91 | + $name = parent::get_name($context); |
|
92 | + return $name . wpinv_get_item_suffix($this); |
|
93 | 93 | } |
94 | 94 | |
95 | 95 | /** |
@@ -99,8 +99,8 @@ discard block |
||
99 | 99 | * @param string $context View or edit context. |
100 | 100 | * @return string |
101 | 101 | */ |
102 | - public function get_raw_name( $context = 'view' ) { |
|
103 | - return parent::get_name( $context ); |
|
102 | + public function get_raw_name($context = 'view') { |
|
103 | + return parent::get_name($context); |
|
104 | 104 | } |
105 | 105 | |
106 | 106 | /** |
@@ -110,13 +110,13 @@ discard block |
||
110 | 110 | * @param string $context View or edit context. |
111 | 111 | * @return string |
112 | 112 | */ |
113 | - public function get_description( $context = 'view' ) { |
|
113 | + public function get_description($context = 'view') { |
|
114 | 114 | |
115 | - if ( isset( $this->custom_description ) ) { |
|
115 | + if (isset($this->custom_description)) { |
|
116 | 116 | return $this->custom_description; |
117 | 117 | } |
118 | 118 | |
119 | - return parent::get_description( $context ); |
|
119 | + return parent::get_description($context); |
|
120 | 120 | } |
121 | 121 | |
122 | 122 | /** |
@@ -126,8 +126,8 @@ discard block |
||
126 | 126 | * @param string $context View or edit context. |
127 | 127 | * @return float |
128 | 128 | */ |
129 | - public function get_sub_total( $context = 'view' ) { |
|
130 | - return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
129 | + public function get_sub_total($context = 'view') { |
|
130 | + return $this->get_quantity($context) * $this->get_initial_price($context); |
|
131 | 131 | } |
132 | 132 | |
133 | 133 | /** |
@@ -137,10 +137,10 @@ discard block |
||
137 | 137 | * @param string $context View or edit context. |
138 | 138 | * @return float |
139 | 139 | */ |
140 | - public function get_recurring_sub_total( $context = 'view' ) { |
|
140 | + public function get_recurring_sub_total($context = 'view') { |
|
141 | 141 | |
142 | - if ( $this->is_recurring() ) { |
|
143 | - return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
142 | + if ($this->is_recurring()) { |
|
143 | + return $this->get_quantity($context) * $this->get_price($context); |
|
144 | 144 | } |
145 | 145 | |
146 | 146 | return 0; |
@@ -149,8 +149,8 @@ discard block |
||
149 | 149 | /** |
150 | 150 | * @deprecated |
151 | 151 | */ |
152 | - public function get_qantity( $context = 'view' ) { |
|
153 | - return $this->get_quantity( $context ); |
|
152 | + public function get_qantity($context = 'view') { |
|
153 | + return $this->get_quantity($context); |
|
154 | 154 | } |
155 | 155 | |
156 | 156 | /** |
@@ -160,15 +160,15 @@ discard block |
||
160 | 160 | * @param string $context View or edit context. |
161 | 161 | * @return float |
162 | 162 | */ |
163 | - public function get_quantity( $context = 'view' ) { |
|
163 | + public function get_quantity($context = 'view') { |
|
164 | 164 | $quantity = (float) $this->quantity; |
165 | 165 | |
166 | - if ( empty( $quantity ) || 1 > $quantity ) { |
|
166 | + if (empty($quantity) || 1 > $quantity) { |
|
167 | 167 | $quantity = 1; |
168 | 168 | } |
169 | 169 | |
170 | - if ( 'view' == $context ) { |
|
171 | - return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
170 | + if ('view' == $context) { |
|
171 | + return apply_filters('getpaid_payment_form_item_quantity', $quantity, $this); |
|
172 | 172 | } |
173 | 173 | |
174 | 174 | return $quantity; |
@@ -182,11 +182,11 @@ discard block |
||
182 | 182 | * @param string $context View or edit context. |
183 | 183 | * @return meta |
184 | 184 | */ |
185 | - public function get_item_meta( $context = 'view' ) { |
|
185 | + public function get_item_meta($context = 'view') { |
|
186 | 186 | $meta = $this->meta; |
187 | 187 | |
188 | - if ( 'view' == $context ) { |
|
189 | - return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
188 | + if ('view' == $context) { |
|
189 | + return apply_filters('getpaid_payment_form_item_meta', $meta, $this); |
|
190 | 190 | } |
191 | 191 | |
192 | 192 | return $meta; |
@@ -200,11 +200,11 @@ discard block |
||
200 | 200 | * @param string $context View or edit context. |
201 | 201 | * @return bool |
202 | 202 | */ |
203 | - public function get_allow_quantities( $context = 'view' ) { |
|
203 | + public function get_allow_quantities($context = 'view') { |
|
204 | 204 | $allow_quantities = (bool) $this->allow_quantities; |
205 | 205 | |
206 | - if ( 'view' == $context ) { |
|
207 | - return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
206 | + if ('view' == $context) { |
|
207 | + return apply_filters('getpaid_payment_form_item_allow_quantities', $allow_quantities, $this); |
|
208 | 208 | } |
209 | 209 | |
210 | 210 | return $allow_quantities; |
@@ -218,11 +218,11 @@ discard block |
||
218 | 218 | * @param string $context View or edit context. |
219 | 219 | * @return bool |
220 | 220 | */ |
221 | - public function get_is_required( $context = 'view' ) { |
|
221 | + public function get_is_required($context = 'view') { |
|
222 | 222 | $is_required = (bool) $this->is_required; |
223 | 223 | |
224 | - if ( 'view' == $context ) { |
|
225 | - return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
224 | + if ('view' == $context) { |
|
225 | + return apply_filters('getpaid_payment_form_item_is_required', $is_required, $this); |
|
226 | 226 | } |
227 | 227 | |
228 | 228 | return $is_required; |
@@ -235,11 +235,11 @@ discard block |
||
235 | 235 | * @since 1.0.19 |
236 | 236 | * @return array |
237 | 237 | */ |
238 | - public function prepare_data_for_use( $required = null ) { |
|
238 | + public function prepare_data_for_use($required = null) { |
|
239 | 239 | |
240 | - $required = is_null( $required ) ? $this->is_required() : $required; |
|
240 | + $required = is_null($required) ? $this->is_required() : $required; |
|
241 | 241 | return array( |
242 | - 'title' => strip_tags( $this->get_name() ), |
|
242 | + 'title' => strip_tags($this->get_name()), |
|
243 | 243 | 'id' => $this->get_id(), |
244 | 244 | 'price' => $this->get_price(), |
245 | 245 | 'recurring' => $this->is_recurring(), |
@@ -256,30 +256,30 @@ discard block |
||
256 | 256 | * @since 1.0.19 |
257 | 257 | * @return array |
258 | 258 | */ |
259 | - public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
259 | + public function prepare_data_for_invoice_edit_ajax($currency = '', $is_renewal = false) { |
|
260 | 260 | |
261 | - $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
261 | + $description = getpaid_item_recurring_price_help_text($this, $currency); |
|
262 | 262 | |
263 | - if ( $description ) { |
|
263 | + if ($description) { |
|
264 | 264 | $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
265 | 265 | } |
266 | 266 | |
267 | - $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
268 | - $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
267 | + $price = !$is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
268 | + $subtotal = !$is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
269 | 269 | return array( |
270 | 270 | 'id' => $this->get_id(), |
271 | 271 | 'texts' => array( |
272 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
273 | - 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
274 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
275 | - 'item-price' => wpinv_price( $price, $currency ), |
|
276 | - 'item-total' => wpinv_price( $subtotal, $currency ), |
|
272 | + 'item-name' => sanitize_text_field($this->get_name()), |
|
273 | + 'item-description' => wp_kses_post($this->get_description()) . $description, |
|
274 | + 'item-quantity' => floatval($this->get_quantity()), |
|
275 | + 'item-price' => wpinv_price($price, $currency), |
|
276 | + 'item-total' => wpinv_price($subtotal, $currency), |
|
277 | 277 | ), |
278 | 278 | 'inputs' => array( |
279 | 279 | 'item-id' => $this->get_id(), |
280 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
281 | - 'item-description' => wp_kses_post( $this->get_description() ), |
|
282 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
280 | + 'item-name' => sanitize_text_field($this->get_name()), |
|
281 | + 'item-description' => wp_kses_post($this->get_description()), |
|
282 | + 'item-quantity' => floatval($this->get_quantity()), |
|
283 | 283 | 'item-price' => $price, |
284 | 284 | ) |
285 | 285 | ); |
@@ -297,7 +297,7 @@ discard block |
||
297 | 297 | return array( |
298 | 298 | 'post_id' => $this->invoice_id, |
299 | 299 | 'item_id' => $this->get_id(), |
300 | - 'item_name' => sanitize_text_field( $this->get_raw_name() ), |
|
300 | + 'item_name' => sanitize_text_field($this->get_raw_name()), |
|
301 | 301 | 'item_description' => $this->get_description(), |
302 | 302 | 'tax' => $this->item_tax, |
303 | 303 | 'item_price' => $this->get_price(), |
@@ -326,9 +326,9 @@ discard block |
||
326 | 326 | * @since 1.0.19 |
327 | 327 | * @param float $quantity The item quantity. |
328 | 328 | */ |
329 | - public function set_quantity( $quantity ) { |
|
329 | + public function set_quantity($quantity) { |
|
330 | 330 | |
331 | - if ( empty( $quantity ) || ! is_numeric( $quantity ) ) { |
|
331 | + if (empty($quantity) || !is_numeric($quantity)) { |
|
332 | 332 | $quantity = 1; |
333 | 333 | } |
334 | 334 | |
@@ -342,8 +342,8 @@ discard block |
||
342 | 342 | * @since 1.0.19 |
343 | 343 | * @param array $meta The item meta data. |
344 | 344 | */ |
345 | - public function set_item_meta( $meta ) { |
|
346 | - $this->meta = maybe_unserialize( $meta ); |
|
345 | + public function set_item_meta($meta) { |
|
346 | + $this->meta = maybe_unserialize($meta); |
|
347 | 347 | } |
348 | 348 | |
349 | 349 | /** |
@@ -352,7 +352,7 @@ discard block |
||
352 | 352 | * @since 1.0.19 |
353 | 353 | * @param bool $allow_quantities |
354 | 354 | */ |
355 | - public function set_allow_quantities( $allow_quantities ) { |
|
355 | + public function set_allow_quantities($allow_quantities) { |
|
356 | 356 | $this->allow_quantities = (bool) $allow_quantities; |
357 | 357 | } |
358 | 358 | |
@@ -362,7 +362,7 @@ discard block |
||
362 | 362 | * @since 1.0.19 |
363 | 363 | * @param bool $is_required |
364 | 364 | */ |
365 | - public function set_is_required( $is_required ) { |
|
365 | + public function set_is_required($is_required) { |
|
366 | 366 | $this->is_required = (bool) $is_required; |
367 | 367 | } |
368 | 368 | |
@@ -372,7 +372,7 @@ discard block |
||
372 | 372 | * @since 1.0.19 |
373 | 373 | * @param string $description |
374 | 374 | */ |
375 | - public function set_custom_description( $description ) { |
|
375 | + public function set_custom_description($description) { |
|
376 | 376 | $this->custom_description = $description; |
377 | 377 | } |
378 | 378 | |
@@ -381,7 +381,7 @@ discard block |
||
381 | 381 | * |
382 | 382 | * @return int item id |
383 | 383 | */ |
384 | - public function save( $data = array() ) { |
|
384 | + public function save($data = array()) { |
|
385 | 385 | return $this->get_id(); |
386 | 386 | } |
387 | 387 |
@@ -1,6 +1,6 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | if ( ! defined( 'ABSPATH' ) ) { |
3 | - exit; |
|
3 | + exit; |
|
4 | 4 | } |
5 | 5 | |
6 | 6 | /** |
@@ -10,67 +10,67 @@ discard block |
||
10 | 10 | class GetPaid_Form_Item extends WPInv_Item { |
11 | 11 | |
12 | 12 | /** |
13 | - * Stores a custom description for the item. |
|
14 | - * |
|
15 | - * @var string |
|
16 | - */ |
|
17 | - protected $custom_description = null; |
|
18 | - |
|
19 | - /** |
|
20 | - * Stores the item quantity. |
|
21 | - * |
|
22 | - * @var float |
|
23 | - */ |
|
24 | - protected $quantity = 1; |
|
25 | - |
|
26 | - /** |
|
27 | - * Stores the item meta. |
|
28 | - * |
|
29 | - * @var array |
|
30 | - */ |
|
31 | - protected $meta = array(); |
|
32 | - |
|
33 | - /** |
|
34 | - * Is this item required? |
|
35 | - * |
|
36 | - * @var int |
|
37 | - */ |
|
38 | - protected $is_required = true; |
|
39 | - |
|
40 | - /** |
|
41 | - * Are quantities allowed? |
|
42 | - * |
|
43 | - * @var int |
|
44 | - */ |
|
45 | - protected $allow_quantities = false; |
|
46 | - |
|
47 | - /** |
|
48 | - * Associated invoice. |
|
49 | - * |
|
50 | - * @var int |
|
51 | - */ |
|
52 | - public $invoice_id = 0; |
|
53 | - |
|
54 | - /** |
|
55 | - * Item discount. |
|
56 | - * |
|
57 | - * @var float |
|
58 | - */ |
|
59 | - public $item_discount = 0; |
|
60 | - |
|
61 | - /** |
|
62 | - * Recurring item discount. |
|
63 | - * |
|
64 | - * @var float |
|
65 | - */ |
|
66 | - public $recurring_item_discount = 0; |
|
67 | - |
|
68 | - /** |
|
69 | - * Item tax. |
|
70 | - * |
|
71 | - * @var float |
|
72 | - */ |
|
73 | - public $item_tax = 0; |
|
13 | + * Stores a custom description for the item. |
|
14 | + * |
|
15 | + * @var string |
|
16 | + */ |
|
17 | + protected $custom_description = null; |
|
18 | + |
|
19 | + /** |
|
20 | + * Stores the item quantity. |
|
21 | + * |
|
22 | + * @var float |
|
23 | + */ |
|
24 | + protected $quantity = 1; |
|
25 | + |
|
26 | + /** |
|
27 | + * Stores the item meta. |
|
28 | + * |
|
29 | + * @var array |
|
30 | + */ |
|
31 | + protected $meta = array(); |
|
32 | + |
|
33 | + /** |
|
34 | + * Is this item required? |
|
35 | + * |
|
36 | + * @var int |
|
37 | + */ |
|
38 | + protected $is_required = true; |
|
39 | + |
|
40 | + /** |
|
41 | + * Are quantities allowed? |
|
42 | + * |
|
43 | + * @var int |
|
44 | + */ |
|
45 | + protected $allow_quantities = false; |
|
46 | + |
|
47 | + /** |
|
48 | + * Associated invoice. |
|
49 | + * |
|
50 | + * @var int |
|
51 | + */ |
|
52 | + public $invoice_id = 0; |
|
53 | + |
|
54 | + /** |
|
55 | + * Item discount. |
|
56 | + * |
|
57 | + * @var float |
|
58 | + */ |
|
59 | + public $item_discount = 0; |
|
60 | + |
|
61 | + /** |
|
62 | + * Recurring item discount. |
|
63 | + * |
|
64 | + * @var float |
|
65 | + */ |
|
66 | + public $recurring_item_discount = 0; |
|
67 | + |
|
68 | + /** |
|
69 | + * Item tax. |
|
70 | + * |
|
71 | + * @var float |
|
72 | + */ |
|
73 | + public $item_tax = 0; |
|
74 | 74 | |
75 | 75 | /* |
76 | 76 | |-------------------------------------------------------------------------- |
@@ -88,234 +88,234 @@ discard block |
||
88 | 88 | */ |
89 | 89 | |
90 | 90 | /** |
91 | - * Get the item name. |
|
92 | - * |
|
93 | - * @since 1.0.19 |
|
94 | - * @param string $context View or edit context. |
|
95 | - * @return string |
|
96 | - */ |
|
97 | - public function get_name( $context = 'view' ) { |
|
98 | - $name = parent::get_name( $context ); |
|
99 | - return $name . wpinv_get_item_suffix( $this ); |
|
100 | - } |
|
101 | - |
|
102 | - /** |
|
103 | - * Get the item name without a suffix. |
|
104 | - * |
|
105 | - * @since 1.0.19 |
|
106 | - * @param string $context View or edit context. |
|
107 | - * @return string |
|
108 | - */ |
|
109 | - public function get_raw_name( $context = 'view' ) { |
|
110 | - return parent::get_name( $context ); |
|
111 | - } |
|
112 | - |
|
113 | - /** |
|
114 | - * Get the item description. |
|
115 | - * |
|
116 | - * @since 1.0.19 |
|
117 | - * @param string $context View or edit context. |
|
118 | - * @return string |
|
119 | - */ |
|
120 | - public function get_description( $context = 'view' ) { |
|
121 | - |
|
122 | - if ( isset( $this->custom_description ) ) { |
|
123 | - return $this->custom_description; |
|
124 | - } |
|
125 | - |
|
126 | - return parent::get_description( $context ); |
|
127 | - } |
|
128 | - |
|
129 | - /** |
|
130 | - * Returns the sub total. |
|
131 | - * |
|
132 | - * @since 1.0.19 |
|
133 | - * @param string $context View or edit context. |
|
134 | - * @return float |
|
135 | - */ |
|
136 | - public function get_sub_total( $context = 'view' ) { |
|
137 | - return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
138 | - } |
|
139 | - |
|
140 | - /** |
|
141 | - * Returns the recurring sub total. |
|
142 | - * |
|
143 | - * @since 1.0.19 |
|
144 | - * @param string $context View or edit context. |
|
145 | - * @return float |
|
146 | - */ |
|
147 | - public function get_recurring_sub_total( $context = 'view' ) { |
|
148 | - |
|
149 | - if ( $this->is_recurring() ) { |
|
150 | - return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
151 | - } |
|
152 | - |
|
153 | - return 0; |
|
154 | - } |
|
155 | - |
|
156 | - /** |
|
157 | - * @deprecated |
|
158 | - */ |
|
159 | - public function get_qantity( $context = 'view' ) { |
|
160 | - return $this->get_quantity( $context ); |
|
161 | - } |
|
162 | - |
|
163 | - /** |
|
164 | - * Get the item quantity. |
|
165 | - * |
|
166 | - * @since 1.0.19 |
|
167 | - * @param string $context View or edit context. |
|
168 | - * @return float |
|
169 | - */ |
|
170 | - public function get_quantity( $context = 'view' ) { |
|
171 | - $quantity = (float) $this->quantity; |
|
172 | - |
|
173 | - if ( empty( $quantity ) || 1 > $quantity ) { |
|
174 | - $quantity = 1; |
|
175 | - } |
|
176 | - |
|
177 | - if ( 'view' == $context ) { |
|
178 | - return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
179 | - } |
|
180 | - |
|
181 | - return $quantity; |
|
182 | - |
|
183 | - } |
|
184 | - |
|
185 | - /** |
|
186 | - * Get the item meta data. |
|
187 | - * |
|
188 | - * @since 1.0.19 |
|
189 | - * @param string $context View or edit context. |
|
190 | - * @return meta |
|
191 | - */ |
|
192 | - public function get_item_meta( $context = 'view' ) { |
|
193 | - $meta = $this->meta; |
|
194 | - |
|
195 | - if ( 'view' == $context ) { |
|
196 | - return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
197 | - } |
|
198 | - |
|
199 | - return $meta; |
|
200 | - |
|
201 | - } |
|
202 | - |
|
203 | - /** |
|
204 | - * Returns whether or not customers can update the item quantity. |
|
205 | - * |
|
206 | - * @since 1.0.19 |
|
207 | - * @param string $context View or edit context. |
|
208 | - * @return bool |
|
209 | - */ |
|
210 | - public function get_allow_quantities( $context = 'view' ) { |
|
211 | - $allow_quantities = (bool) $this->allow_quantities; |
|
212 | - |
|
213 | - if ( 'view' == $context ) { |
|
214 | - return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
215 | - } |
|
216 | - |
|
217 | - return $allow_quantities; |
|
218 | - |
|
219 | - } |
|
220 | - |
|
221 | - /** |
|
222 | - * Returns whether or not the item is required. |
|
223 | - * |
|
224 | - * @since 1.0.19 |
|
225 | - * @param string $context View or edit context. |
|
226 | - * @return bool |
|
227 | - */ |
|
228 | - public function get_is_required( $context = 'view' ) { |
|
229 | - $is_required = (bool) $this->is_required; |
|
230 | - |
|
231 | - if ( 'view' == $context ) { |
|
232 | - return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
233 | - } |
|
234 | - |
|
235 | - return $is_required; |
|
236 | - |
|
237 | - } |
|
238 | - |
|
239 | - /** |
|
240 | - * Prepares form data for use. |
|
241 | - * |
|
242 | - * @since 1.0.19 |
|
243 | - * @return array |
|
244 | - */ |
|
245 | - public function prepare_data_for_use( $required = null ) { |
|
246 | - |
|
247 | - $required = is_null( $required ) ? $this->is_required() : $required; |
|
248 | - return array( |
|
249 | - 'title' => strip_tags( $this->get_name() ), |
|
250 | - 'id' => $this->get_id(), |
|
251 | - 'price' => $this->get_price(), |
|
252 | - 'recurring' => $this->is_recurring(), |
|
253 | - 'description' => $this->get_description(), |
|
254 | - 'allow_quantities' => $this->allows_quantities(), |
|
255 | - 'required' => $required, |
|
256 | - ); |
|
257 | - |
|
258 | - } |
|
259 | - |
|
260 | - /** |
|
261 | - * Prepares form data for ajax use. |
|
262 | - * |
|
263 | - * @since 1.0.19 |
|
264 | - * @return array |
|
265 | - */ |
|
266 | - public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
267 | - |
|
268 | - $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
269 | - |
|
270 | - if ( $description ) { |
|
271 | - $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
|
272 | - } |
|
273 | - |
|
274 | - $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
275 | - $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
276 | - return array( |
|
277 | - 'id' => $this->get_id(), |
|
278 | - 'texts' => array( |
|
279 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
280 | - 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
281 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
282 | - 'item-price' => wpinv_price( $price, $currency ), |
|
283 | - 'item-total' => wpinv_price( $subtotal, $currency ), |
|
284 | - ), |
|
285 | - 'inputs' => array( |
|
286 | - 'item-id' => $this->get_id(), |
|
287 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
288 | - 'item-description' => wp_kses_post( $this->get_description() ), |
|
289 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
290 | - 'item-price' => $price, |
|
291 | - ) |
|
292 | - ); |
|
293 | - |
|
294 | - } |
|
295 | - |
|
296 | - /** |
|
297 | - * Prepares form data for saving (cart_details). |
|
298 | - * |
|
299 | - * @since 1.0.19 |
|
300 | - * @return array |
|
301 | - */ |
|
302 | - public function prepare_data_for_saving() { |
|
303 | - |
|
304 | - return array( |
|
305 | - 'post_id' => $this->invoice_id, |
|
306 | - 'item_id' => $this->get_id(), |
|
307 | - 'item_name' => sanitize_text_field( $this->get_raw_name() ), |
|
308 | - 'item_description' => $this->get_description(), |
|
309 | - 'tax' => $this->item_tax, |
|
310 | - 'item_price' => $this->get_price(), |
|
311 | - 'quantity' => (float) $this->get_quantity(), |
|
312 | - 'discount' => $this->item_discount, |
|
313 | - 'subtotal' => $this->get_sub_total(), |
|
314 | - 'price' => $this->get_sub_total() + $this->item_tax - $this->item_discount, |
|
315 | - 'meta' => $this->get_item_meta(), |
|
316 | - ); |
|
317 | - |
|
318 | - } |
|
91 | + * Get the item name. |
|
92 | + * |
|
93 | + * @since 1.0.19 |
|
94 | + * @param string $context View or edit context. |
|
95 | + * @return string |
|
96 | + */ |
|
97 | + public function get_name( $context = 'view' ) { |
|
98 | + $name = parent::get_name( $context ); |
|
99 | + return $name . wpinv_get_item_suffix( $this ); |
|
100 | + } |
|
101 | + |
|
102 | + /** |
|
103 | + * Get the item name without a suffix. |
|
104 | + * |
|
105 | + * @since 1.0.19 |
|
106 | + * @param string $context View or edit context. |
|
107 | + * @return string |
|
108 | + */ |
|
109 | + public function get_raw_name( $context = 'view' ) { |
|
110 | + return parent::get_name( $context ); |
|
111 | + } |
|
112 | + |
|
113 | + /** |
|
114 | + * Get the item description. |
|
115 | + * |
|
116 | + * @since 1.0.19 |
|
117 | + * @param string $context View or edit context. |
|
118 | + * @return string |
|
119 | + */ |
|
120 | + public function get_description( $context = 'view' ) { |
|
121 | + |
|
122 | + if ( isset( $this->custom_description ) ) { |
|
123 | + return $this->custom_description; |
|
124 | + } |
|
125 | + |
|
126 | + return parent::get_description( $context ); |
|
127 | + } |
|
128 | + |
|
129 | + /** |
|
130 | + * Returns the sub total. |
|
131 | + * |
|
132 | + * @since 1.0.19 |
|
133 | + * @param string $context View or edit context. |
|
134 | + * @return float |
|
135 | + */ |
|
136 | + public function get_sub_total( $context = 'view' ) { |
|
137 | + return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
138 | + } |
|
139 | + |
|
140 | + /** |
|
141 | + * Returns the recurring sub total. |
|
142 | + * |
|
143 | + * @since 1.0.19 |
|
144 | + * @param string $context View or edit context. |
|
145 | + * @return float |
|
146 | + */ |
|
147 | + public function get_recurring_sub_total( $context = 'view' ) { |
|
148 | + |
|
149 | + if ( $this->is_recurring() ) { |
|
150 | + return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
151 | + } |
|
152 | + |
|
153 | + return 0; |
|
154 | + } |
|
155 | + |
|
156 | + /** |
|
157 | + * @deprecated |
|
158 | + */ |
|
159 | + public function get_qantity( $context = 'view' ) { |
|
160 | + return $this->get_quantity( $context ); |
|
161 | + } |
|
162 | + |
|
163 | + /** |
|
164 | + * Get the item quantity. |
|
165 | + * |
|
166 | + * @since 1.0.19 |
|
167 | + * @param string $context View or edit context. |
|
168 | + * @return float |
|
169 | + */ |
|
170 | + public function get_quantity( $context = 'view' ) { |
|
171 | + $quantity = (float) $this->quantity; |
|
172 | + |
|
173 | + if ( empty( $quantity ) || 1 > $quantity ) { |
|
174 | + $quantity = 1; |
|
175 | + } |
|
176 | + |
|
177 | + if ( 'view' == $context ) { |
|
178 | + return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
179 | + } |
|
180 | + |
|
181 | + return $quantity; |
|
182 | + |
|
183 | + } |
|
184 | + |
|
185 | + /** |
|
186 | + * Get the item meta data. |
|
187 | + * |
|
188 | + * @since 1.0.19 |
|
189 | + * @param string $context View or edit context. |
|
190 | + * @return meta |
|
191 | + */ |
|
192 | + public function get_item_meta( $context = 'view' ) { |
|
193 | + $meta = $this->meta; |
|
194 | + |
|
195 | + if ( 'view' == $context ) { |
|
196 | + return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
197 | + } |
|
198 | + |
|
199 | + return $meta; |
|
200 | + |
|
201 | + } |
|
202 | + |
|
203 | + /** |
|
204 | + * Returns whether or not customers can update the item quantity. |
|
205 | + * |
|
206 | + * @since 1.0.19 |
|
207 | + * @param string $context View or edit context. |
|
208 | + * @return bool |
|
209 | + */ |
|
210 | + public function get_allow_quantities( $context = 'view' ) { |
|
211 | + $allow_quantities = (bool) $this->allow_quantities; |
|
212 | + |
|
213 | + if ( 'view' == $context ) { |
|
214 | + return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
215 | + } |
|
216 | + |
|
217 | + return $allow_quantities; |
|
218 | + |
|
219 | + } |
|
220 | + |
|
221 | + /** |
|
222 | + * Returns whether or not the item is required. |
|
223 | + * |
|
224 | + * @since 1.0.19 |
|
225 | + * @param string $context View or edit context. |
|
226 | + * @return bool |
|
227 | + */ |
|
228 | + public function get_is_required( $context = 'view' ) { |
|
229 | + $is_required = (bool) $this->is_required; |
|
230 | + |
|
231 | + if ( 'view' == $context ) { |
|
232 | + return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
233 | + } |
|
234 | + |
|
235 | + return $is_required; |
|
236 | + |
|
237 | + } |
|
238 | + |
|
239 | + /** |
|
240 | + * Prepares form data for use. |
|
241 | + * |
|
242 | + * @since 1.0.19 |
|
243 | + * @return array |
|
244 | + */ |
|
245 | + public function prepare_data_for_use( $required = null ) { |
|
246 | + |
|
247 | + $required = is_null( $required ) ? $this->is_required() : $required; |
|
248 | + return array( |
|
249 | + 'title' => strip_tags( $this->get_name() ), |
|
250 | + 'id' => $this->get_id(), |
|
251 | + 'price' => $this->get_price(), |
|
252 | + 'recurring' => $this->is_recurring(), |
|
253 | + 'description' => $this->get_description(), |
|
254 | + 'allow_quantities' => $this->allows_quantities(), |
|
255 | + 'required' => $required, |
|
256 | + ); |
|
257 | + |
|
258 | + } |
|
259 | + |
|
260 | + /** |
|
261 | + * Prepares form data for ajax use. |
|
262 | + * |
|
263 | + * @since 1.0.19 |
|
264 | + * @return array |
|
265 | + */ |
|
266 | + public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
267 | + |
|
268 | + $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
269 | + |
|
270 | + if ( $description ) { |
|
271 | + $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
|
272 | + } |
|
273 | + |
|
274 | + $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
275 | + $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
276 | + return array( |
|
277 | + 'id' => $this->get_id(), |
|
278 | + 'texts' => array( |
|
279 | + 'item-name' => sanitize_text_field( $this->get_name() ), |
|
280 | + 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
281 | + 'item-quantity' => floatval( $this->get_quantity() ), |
|
282 | + 'item-price' => wpinv_price( $price, $currency ), |
|
283 | + 'item-total' => wpinv_price( $subtotal, $currency ), |
|
284 | + ), |
|
285 | + 'inputs' => array( |
|
286 | + 'item-id' => $this->get_id(), |
|
287 | + 'item-name' => sanitize_text_field( $this->get_name() ), |
|
288 | + 'item-description' => wp_kses_post( $this->get_description() ), |
|
289 | + 'item-quantity' => floatval( $this->get_quantity() ), |
|
290 | + 'item-price' => $price, |
|
291 | + ) |
|
292 | + ); |
|
293 | + |
|
294 | + } |
|
295 | + |
|
296 | + /** |
|
297 | + * Prepares form data for saving (cart_details). |
|
298 | + * |
|
299 | + * @since 1.0.19 |
|
300 | + * @return array |
|
301 | + */ |
|
302 | + public function prepare_data_for_saving() { |
|
303 | + |
|
304 | + return array( |
|
305 | + 'post_id' => $this->invoice_id, |
|
306 | + 'item_id' => $this->get_id(), |
|
307 | + 'item_name' => sanitize_text_field( $this->get_raw_name() ), |
|
308 | + 'item_description' => $this->get_description(), |
|
309 | + 'tax' => $this->item_tax, |
|
310 | + 'item_price' => $this->get_price(), |
|
311 | + 'quantity' => (float) $this->get_quantity(), |
|
312 | + 'discount' => $this->item_discount, |
|
313 | + 'subtotal' => $this->get_sub_total(), |
|
314 | + 'price' => $this->get_sub_total() + $this->item_tax - $this->item_discount, |
|
315 | + 'meta' => $this->get_item_meta(), |
|
316 | + ); |
|
317 | + |
|
318 | + } |
|
319 | 319 | |
320 | 320 | /* |
321 | 321 | |-------------------------------------------------------------------------- |
@@ -327,70 +327,70 @@ discard block |
||
327 | 327 | | object. |
328 | 328 | */ |
329 | 329 | |
330 | - /** |
|
331 | - * Set the item qantity. |
|
332 | - * |
|
333 | - * @since 1.0.19 |
|
334 | - * @param float $quantity The item quantity. |
|
335 | - */ |
|
336 | - public function set_quantity( $quantity ) { |
|
337 | - |
|
338 | - if ( empty( $quantity ) || ! is_numeric( $quantity ) ) { |
|
339 | - $quantity = 1; |
|
340 | - } |
|
341 | - |
|
342 | - $this->quantity = (float) $quantity; |
|
343 | - |
|
344 | - } |
|
345 | - |
|
346 | - /** |
|
347 | - * Set the item meta data. |
|
348 | - * |
|
349 | - * @since 1.0.19 |
|
350 | - * @param array $meta The item meta data. |
|
351 | - */ |
|
352 | - public function set_item_meta( $meta ) { |
|
353 | - $this->meta = maybe_unserialize( $meta ); |
|
354 | - } |
|
355 | - |
|
356 | - /** |
|
357 | - * Set whether or not the quantities are allowed. |
|
358 | - * |
|
359 | - * @since 1.0.19 |
|
360 | - * @param bool $allow_quantities |
|
361 | - */ |
|
362 | - public function set_allow_quantities( $allow_quantities ) { |
|
363 | - $this->allow_quantities = (bool) $allow_quantities; |
|
364 | - } |
|
365 | - |
|
366 | - /** |
|
367 | - * Set whether or not the item is required. |
|
368 | - * |
|
369 | - * @since 1.0.19 |
|
370 | - * @param bool $is_required |
|
371 | - */ |
|
372 | - public function set_is_required( $is_required ) { |
|
373 | - $this->is_required = (bool) $is_required; |
|
374 | - } |
|
375 | - |
|
376 | - /** |
|
377 | - * Sets the custom item description. |
|
378 | - * |
|
379 | - * @since 1.0.19 |
|
380 | - * @param string $description |
|
381 | - */ |
|
382 | - public function set_custom_description( $description ) { |
|
383 | - $this->custom_description = $description; |
|
384 | - } |
|
330 | + /** |
|
331 | + * Set the item qantity. |
|
332 | + * |
|
333 | + * @since 1.0.19 |
|
334 | + * @param float $quantity The item quantity. |
|
335 | + */ |
|
336 | + public function set_quantity( $quantity ) { |
|
337 | + |
|
338 | + if ( empty( $quantity ) || ! is_numeric( $quantity ) ) { |
|
339 | + $quantity = 1; |
|
340 | + } |
|
341 | + |
|
342 | + $this->quantity = (float) $quantity; |
|
343 | + |
|
344 | + } |
|
345 | + |
|
346 | + /** |
|
347 | + * Set the item meta data. |
|
348 | + * |
|
349 | + * @since 1.0.19 |
|
350 | + * @param array $meta The item meta data. |
|
351 | + */ |
|
352 | + public function set_item_meta( $meta ) { |
|
353 | + $this->meta = maybe_unserialize( $meta ); |
|
354 | + } |
|
355 | + |
|
356 | + /** |
|
357 | + * Set whether or not the quantities are allowed. |
|
358 | + * |
|
359 | + * @since 1.0.19 |
|
360 | + * @param bool $allow_quantities |
|
361 | + */ |
|
362 | + public function set_allow_quantities( $allow_quantities ) { |
|
363 | + $this->allow_quantities = (bool) $allow_quantities; |
|
364 | + } |
|
365 | + |
|
366 | + /** |
|
367 | + * Set whether or not the item is required. |
|
368 | + * |
|
369 | + * @since 1.0.19 |
|
370 | + * @param bool $is_required |
|
371 | + */ |
|
372 | + public function set_is_required( $is_required ) { |
|
373 | + $this->is_required = (bool) $is_required; |
|
374 | + } |
|
375 | + |
|
376 | + /** |
|
377 | + * Sets the custom item description. |
|
378 | + * |
|
379 | + * @since 1.0.19 |
|
380 | + * @param string $description |
|
381 | + */ |
|
382 | + public function set_custom_description( $description ) { |
|
383 | + $this->custom_description = $description; |
|
384 | + } |
|
385 | 385 | |
386 | 386 | /** |
387 | 387 | * We do not want to save items to the database. |
388 | 388 | * |
389 | - * @return int item id |
|
389 | + * @return int item id |
|
390 | 390 | */ |
391 | 391 | public function save( $data = array() ) { |
392 | 392 | return $this->get_id(); |
393 | - } |
|
393 | + } |
|
394 | 394 | |
395 | 395 | /* |
396 | 396 | |-------------------------------------------------------------------------- |
@@ -402,23 +402,23 @@ discard block |
||
402 | 402 | */ |
403 | 403 | |
404 | 404 | /** |
405 | - * Checks whether the item has enabled dynamic pricing. |
|
406 | - * |
|
407 | - * @since 1.0.19 |
|
408 | - * @return bool |
|
409 | - */ |
|
410 | - public function is_required() { |
|
405 | + * Checks whether the item has enabled dynamic pricing. |
|
406 | + * |
|
407 | + * @since 1.0.19 |
|
408 | + * @return bool |
|
409 | + */ |
|
410 | + public function is_required() { |
|
411 | 411 | return (bool) $this->get_is_required(); |
412 | - } |
|
413 | - |
|
414 | - /** |
|
415 | - * Checks whether users can edit the quantities. |
|
416 | - * |
|
417 | - * @since 1.0.19 |
|
418 | - * @return bool |
|
419 | - */ |
|
420 | - public function allows_quantities() { |
|
412 | + } |
|
413 | + |
|
414 | + /** |
|
415 | + * Checks whether users can edit the quantities. |
|
416 | + * |
|
417 | + * @since 1.0.19 |
|
418 | + * @return bool |
|
419 | + */ |
|
420 | + public function allows_quantities() { |
|
421 | 421 | return (bool) $this->get_allow_quantities(); |
422 | - } |
|
422 | + } |
|
423 | 423 | |
424 | 424 | } |
@@ -165,7 +165,7 @@ discard block |
||
165 | 165 | { |
166 | 166 | $installPath = $this->getPackageBasePath($package); |
167 | 167 | $io = $this->io; |
168 | - $outputStatus = function () use ($io, $installPath) { |
|
168 | + $outputStatus = function() use ($io, $installPath) { |
|
169 | 169 | $io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>')); |
170 | 170 | }; |
171 | 171 | |
@@ -235,7 +235,7 @@ discard block |
||
235 | 235 | $pattern = $locations ? '(' . implode('|', $locations) . ')' : false; |
236 | 236 | } |
237 | 237 | |
238 | - return $pattern ? : '(\w+)'; |
|
238 | + return $pattern ?: '(\w+)'; |
|
239 | 239 | } |
240 | 240 | |
241 | 241 | /** |
@@ -36,7 +36,7 @@ discard block |
||
36 | 36 | public function getLocations() |
37 | 37 | { |
38 | 38 | if ($this->matchesCakeVersion('>=', '3.0.0')) { |
39 | - $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/'; |
|
39 | + $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/'; |
|
40 | 40 | } |
41 | 41 | return $this->locations; |
42 | 42 | } |
@@ -51,7 +51,7 @@ discard block |
||
51 | 51 | protected function matchesCakeVersion($matcher, $version) |
52 | 52 | { |
53 | 53 | $repositoryManager = $this->composer->getRepositoryManager(); |
54 | - if (! $repositoryManager) { |
|
54 | + if (!$repositoryManager) { |
|
55 | 55 | return false; |
56 | 56 | } |
57 | 57 |
@@ -5,7 +5,7 @@ discard block |
||
5 | 5 | |
6 | 6 | class OxidInstaller extends BaseInstaller |
7 | 7 | { |
8 | - const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/'; |
|
8 | + const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/'; |
|
9 | 9 | |
10 | 10 | protected $locations = array( |
11 | 11 | 'module' => 'modules/{$name}/', |
@@ -13,47 +13,47 @@ discard block |
||
13 | 13 | 'out' => 'out/{$name}/', |
14 | 14 | ); |
15 | 15 | |
16 | - /** |
|
17 | - * getInstallPath |
|
18 | - * |
|
19 | - * @param PackageInterface $package |
|
20 | - * @param string $frameworkType |
|
21 | - * @return string |
|
22 | - */ |
|
23 | - public function getInstallPath(PackageInterface $package, $frameworkType = '') |
|
24 | - { |
|
25 | - $installPath = parent::getInstallPath($package, $frameworkType); |
|
26 | - $type = $this->package->getType(); |
|
27 | - if ($type === 'oxid-module') { |
|
28 | - $this->prepareVendorDirectory($installPath); |
|
29 | - } |
|
30 | - return $installPath; |
|
31 | - } |
|
16 | + /** |
|
17 | + * getInstallPath |
|
18 | + * |
|
19 | + * @param PackageInterface $package |
|
20 | + * @param string $frameworkType |
|
21 | + * @return string |
|
22 | + */ |
|
23 | + public function getInstallPath(PackageInterface $package, $frameworkType = '') |
|
24 | + { |
|
25 | + $installPath = parent::getInstallPath($package, $frameworkType); |
|
26 | + $type = $this->package->getType(); |
|
27 | + if ($type === 'oxid-module') { |
|
28 | + $this->prepareVendorDirectory($installPath); |
|
29 | + } |
|
30 | + return $installPath; |
|
31 | + } |
|
32 | 32 | |
33 | - /** |
|
34 | - * prepareVendorDirectory |
|
35 | - * |
|
36 | - * Makes sure there is a vendormetadata.php file inside |
|
37 | - * the vendor folder if there is a vendor folder. |
|
38 | - * |
|
39 | - * @param string $installPath |
|
40 | - * @return void |
|
41 | - */ |
|
42 | - protected function prepareVendorDirectory($installPath) |
|
43 | - { |
|
44 | - $matches = ''; |
|
45 | - $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches); |
|
46 | - if (!$hasVendorDirectory) { |
|
47 | - return; |
|
48 | - } |
|
33 | + /** |
|
34 | + * prepareVendorDirectory |
|
35 | + * |
|
36 | + * Makes sure there is a vendormetadata.php file inside |
|
37 | + * the vendor folder if there is a vendor folder. |
|
38 | + * |
|
39 | + * @param string $installPath |
|
40 | + * @return void |
|
41 | + */ |
|
42 | + protected function prepareVendorDirectory($installPath) |
|
43 | + { |
|
44 | + $matches = ''; |
|
45 | + $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches); |
|
46 | + if (!$hasVendorDirectory) { |
|
47 | + return; |
|
48 | + } |
|
49 | 49 | |
50 | - $vendorDirectory = $matches['vendor']; |
|
51 | - $vendorPath = getcwd() . '/modules/' . $vendorDirectory; |
|
52 | - if (!file_exists($vendorPath)) { |
|
53 | - mkdir($vendorPath, 0755, true); |
|
54 | - } |
|
50 | + $vendorDirectory = $matches['vendor']; |
|
51 | + $vendorPath = getcwd() . '/modules/' . $vendorDirectory; |
|
52 | + if (!file_exists($vendorPath)) { |
|
53 | + mkdir($vendorPath, 0755, true); |
|
54 | + } |
|
55 | 55 | |
56 | - $vendorMetaDataPath = $vendorPath . '/vendormetadata.php'; |
|
57 | - touch($vendorMetaDataPath); |
|
58 | - } |
|
56 | + $vendorMetaDataPath = $vendorPath . '/vendormetadata.php'; |
|
57 | + touch($vendorMetaDataPath); |
|
58 | + } |
|
59 | 59 | } |
@@ -34,11 +34,11 @@ discard block |
||
34 | 34 | */ |
35 | 35 | function wpinv_get_capability( $capalibilty = 'manage_invoicing' ) { |
36 | 36 | |
37 | - if ( current_user_can( 'manage_options' ) ) { |
|
38 | - return 'manage_options'; |
|
39 | - }; |
|
37 | + if ( current_user_can( 'manage_options' ) ) { |
|
38 | + return 'manage_options'; |
|
39 | + }; |
|
40 | 40 | |
41 | - return $capalibilty; |
|
41 | + return $capalibilty; |
|
42 | 42 | } |
43 | 43 | |
44 | 44 | /** |
@@ -62,10 +62,10 @@ discard block |
||
62 | 62 | // Prepare user values. |
63 | 63 | $prefix = preg_replace( '/\s+/', '', $prefix ); |
64 | 64 | $prefix = empty( $prefix ) ? $email : $prefix; |
65 | - $args = array( |
|
66 | - 'user_login' => wpinv_generate_user_name( $prefix ), |
|
67 | - 'user_pass' => wp_generate_password(), |
|
68 | - 'user_email' => $email, |
|
65 | + $args = array( |
|
66 | + 'user_login' => wpinv_generate_user_name( $prefix ), |
|
67 | + 'user_pass' => wp_generate_password(), |
|
68 | + 'user_email' => $email, |
|
69 | 69 | 'role' => 'subscriber', |
70 | 70 | ); |
71 | 71 | |
@@ -82,16 +82,16 @@ discard block |
||
82 | 82 | function wpinv_generate_user_name( $prefix = '' ) { |
83 | 83 | |
84 | 84 | // If prefix is an email, retrieve the part before the email. |
85 | - $prefix = strtok( $prefix, '@' ); |
|
85 | + $prefix = strtok( $prefix, '@' ); |
|
86 | 86 | $prefix = trim( $prefix, '.' ); |
87 | 87 | |
88 | - // Sanitize the username. |
|
89 | - $prefix = sanitize_user( $prefix, true ); |
|
88 | + // Sanitize the username. |
|
89 | + $prefix = sanitize_user( $prefix, true ); |
|
90 | 90 | |
91 | - $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() ); |
|
92 | - if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) { |
|
93 | - $prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 ); |
|
94 | - } |
|
91 | + $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() ); |
|
92 | + if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) { |
|
93 | + $prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 ); |
|
94 | + } |
|
95 | 95 | |
96 | 96 | $username = $prefix; |
97 | 97 | $postfix = 2; |
@@ -6,7 +6,7 @@ discard block |
||
6 | 6 | * @package GetPaid |
7 | 7 | */ |
8 | 8 | |
9 | -defined( 'ABSPATH' ) || exit; |
|
9 | +defined('ABSPATH') || exit; |
|
10 | 10 | |
11 | 11 | /** |
12 | 12 | * Generates a users select dropdown. |
@@ -16,13 +16,13 @@ discard block |
||
16 | 16 | * @param array $args |
17 | 17 | * @see wp_dropdown_users |
18 | 18 | */ |
19 | -function wpinv_dropdown_users( $args = '' ) { |
|
19 | +function wpinv_dropdown_users($args = '') { |
|
20 | 20 | |
21 | - if ( is_array( $args ) && ! empty( $args['show'] ) && 'display_name_with_email' == $args['show'] ) { |
|
21 | + if (is_array($args) && !empty($args['show']) && 'display_name_with_email' == $args['show']) { |
|
22 | 22 | $args['show'] = 'display_name_with_login'; |
23 | 23 | } |
24 | 24 | |
25 | - return wp_dropdown_users( $args ); |
|
25 | + return wp_dropdown_users($args); |
|
26 | 26 | } |
27 | 27 | |
28 | 28 | /** |
@@ -32,9 +32,9 @@ discard block |
||
32 | 32 | * @return string capability to check against |
33 | 33 | * @param string $capalibilty Optional. The alternative capability to check against. |
34 | 34 | */ |
35 | -function wpinv_get_capability( $capalibilty = 'manage_invoicing' ) { |
|
35 | +function wpinv_get_capability($capalibilty = 'manage_invoicing') { |
|
36 | 36 | |
37 | - if ( current_user_can( 'manage_options' ) ) { |
|
37 | + if (current_user_can('manage_options')) { |
|
38 | 38 | return 'manage_options'; |
39 | 39 | }; |
40 | 40 | |
@@ -48,7 +48,7 @@ discard block |
||
48 | 48 | * @return bool |
49 | 49 | */ |
50 | 50 | function wpinv_current_user_can_manage_invoicing() { |
51 | - return current_user_can( wpinv_get_capability() ); |
|
51 | + return current_user_can(wpinv_get_capability()); |
|
52 | 52 | } |
53 | 53 | |
54 | 54 | /** |
@@ -57,19 +57,19 @@ discard block |
||
57 | 57 | * @since 1.0.19 |
58 | 58 | * @return int|WP_Error |
59 | 59 | */ |
60 | -function wpinv_create_user( $email, $prefix = '' ) { |
|
60 | +function wpinv_create_user($email, $prefix = '') { |
|
61 | 61 | |
62 | 62 | // Prepare user values. |
63 | - $prefix = preg_replace( '/\s+/', '', $prefix ); |
|
64 | - $prefix = empty( $prefix ) ? $email : $prefix; |
|
65 | - $args = array( |
|
66 | - 'user_login' => wpinv_generate_user_name( $prefix ), |
|
63 | + $prefix = preg_replace('/\s+/', '', $prefix); |
|
64 | + $prefix = empty($prefix) ? $email : $prefix; |
|
65 | + $args = array( |
|
66 | + 'user_login' => wpinv_generate_user_name($prefix), |
|
67 | 67 | 'user_pass' => wp_generate_password(), |
68 | 68 | 'user_email' => $email, |
69 | 69 | 'role' => 'subscriber', |
70 | 70 | ); |
71 | 71 | |
72 | - return wp_insert_user( $args ); |
|
72 | + return wp_insert_user($args); |
|
73 | 73 | |
74 | 74 | } |
75 | 75 | |
@@ -79,26 +79,26 @@ discard block |
||
79 | 79 | * @since 1.0.19 |
80 | 80 | * @return bool|WP_User |
81 | 81 | */ |
82 | -function wpinv_generate_user_name( $prefix = '' ) { |
|
82 | +function wpinv_generate_user_name($prefix = '') { |
|
83 | 83 | |
84 | 84 | // If prefix is an email, retrieve the part before the email. |
85 | - $prefix = strtok( $prefix, '@' ); |
|
86 | - $prefix = trim( $prefix, '.' ); |
|
85 | + $prefix = strtok($prefix, '@'); |
|
86 | + $prefix = trim($prefix, '.'); |
|
87 | 87 | |
88 | 88 | // Sanitize the username. |
89 | - $prefix = sanitize_user( $prefix, true ); |
|
89 | + $prefix = sanitize_user($prefix, true); |
|
90 | 90 | |
91 | - $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() ); |
|
92 | - if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) { |
|
93 | - $prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 ); |
|
91 | + $illegal_logins = (array) apply_filters('illegal_user_logins', array()); |
|
92 | + if (empty($prefix) || in_array(strtolower($prefix), array_map('strtolower', $illegal_logins), true)) { |
|
93 | + $prefix = 'gtp_' . zeroise(wp_rand(0, 9999), 4); |
|
94 | 94 | } |
95 | 95 | |
96 | 96 | $username = $prefix; |
97 | 97 | $postfix = 2; |
98 | 98 | |
99 | - while ( username_exists( $username ) ) { |
|
99 | + while (username_exists($username)) { |
|
100 | 100 | $username = $prefix + $postfix; |
101 | - $postfix ++; |
|
101 | + $postfix++; |
|
102 | 102 | } |
103 | 103 | |
104 | 104 | return $username; |
@@ -115,31 +115,31 @@ discard block |
||
115 | 115 | $tabs = array( |
116 | 116 | |
117 | 117 | 'gp-invoices' => array( |
118 | - 'label' => __( 'Invoices', 'invoicing' ), // Name of the tab. |
|
118 | + 'label' => __('Invoices', 'invoicing'), // Name of the tab. |
|
119 | 119 | 'content' => '[wpinv_history]', // Content of the tab. Or specify "callback" to provide a callback instead. |
120 | 120 | 'icon' => 'fas fa-file-invoice', // Shown on some profile plugins. |
121 | 121 | ), |
122 | 122 | |
123 | 123 | 'gp-subscriptions' => array( |
124 | - 'label' => __( 'Subscriptions', 'invoicing' ), |
|
124 | + 'label' => __('Subscriptions', 'invoicing'), |
|
125 | 125 | 'content' => '[wpinv_subscriptions]', |
126 | 126 | 'icon' => 'fas fa-redo', |
127 | 127 | ), |
128 | 128 | |
129 | 129 | 'gp-edit-address' => array( |
130 | - 'label' => __( 'Billing Address', 'invoicing' ), |
|
130 | + 'label' => __('Billing Address', 'invoicing'), |
|
131 | 131 | 'callback' => 'getpaid_display_address_edit_tab', |
132 | 132 | 'icon' => 'fas fa-credit-card', |
133 | 133 | ), |
134 | 134 | |
135 | 135 | ); |
136 | 136 | |
137 | - $tabs = apply_filters( 'getpaid_user_content_tabs', $tabs ); |
|
137 | + $tabs = apply_filters('getpaid_user_content_tabs', $tabs); |
|
138 | 138 | |
139 | 139 | // Make sure address editing is last on the list. |
140 | - if ( isset( $tabs['gp-edit-address'] ) ) { |
|
140 | + if (isset($tabs['gp-edit-address'])) { |
|
141 | 141 | $address = $tabs['gp-edit-address']; |
142 | - unset( $tabs['gp-edit-address'] ); |
|
142 | + unset($tabs['gp-edit-address']); |
|
143 | 143 | $tabs['gp-edit-address'] = $address; |
144 | 144 | } |
145 | 145 | |
@@ -153,19 +153,19 @@ discard block |
||
153 | 153 | * @param array $tab |
154 | 154 | * @return array |
155 | 155 | */ |
156 | -function getpaid_prepare_user_content_tab( $tab ) { |
|
156 | +function getpaid_prepare_user_content_tab($tab) { |
|
157 | 157 | |
158 | - if ( ! empty( $tab['callback'] ) ) { |
|
159 | - return call_user_func( $tab['callback'] ); |
|
158 | + if (!empty($tab['callback'])) { |
|
159 | + return call_user_func($tab['callback']); |
|
160 | 160 | } |
161 | 161 | |
162 | - if ( ! empty( $tab['content'] ) ) { |
|
163 | - return convert_smilies( capital_P_dangit( wp_filter_content_tags( do_shortcode( shortcode_unautop( wpautop( wptexturize( do_blocks( $tab['content'] ) ) ) ) ) ) ) ); |
|
162 | + if (!empty($tab['content'])) { |
|
163 | + return convert_smilies(capital_P_dangit(wp_filter_content_tags(do_shortcode(shortcode_unautop(wpautop(wptexturize(do_blocks($tab['content'])))))))); |
|
164 | 164 | } |
165 | 165 | |
166 | 166 | $notice = aui()->alert( |
167 | 167 | array( |
168 | - 'content' => __( 'This tab has no content or content callback.', 'invoicing' ), |
|
168 | + 'content' => __('This tab has no content or content callback.', 'invoicing'), |
|
169 | 169 | 'type' => 'error', |
170 | 170 | ) |
171 | 171 | ); |
@@ -181,14 +181,14 @@ discard block |
||
181 | 181 | * @param string $default |
182 | 182 | * @return array |
183 | 183 | */ |
184 | -function getpaid_get_tab_url( $tab, $default ) { |
|
184 | +function getpaid_get_tab_url($tab, $default) { |
|
185 | 185 | global $getpaid_tab_url; |
186 | 186 | |
187 | - if ( empty( $getpaid_tab_url ) ) { |
|
187 | + if (empty($getpaid_tab_url)) { |
|
188 | 188 | return $default; |
189 | 189 | } |
190 | 190 | |
191 | - return sprintf( $getpaid_tab_url, $tab ); |
|
191 | + return sprintf($getpaid_tab_url, $tab); |
|
192 | 192 | |
193 | 193 | } |
194 | 194 | |
@@ -208,19 +208,19 @@ discard block |
||
208 | 208 | |
209 | 209 | <?php |
210 | 210 | |
211 | - foreach ( getpaid_user_address_fields() as $key => $label ) { |
|
211 | + foreach (getpaid_user_address_fields() as $key => $label) { |
|
212 | 212 | |
213 | 213 | // Display the country. |
214 | - if ( 'country' == $key ) { |
|
214 | + if ('country' == $key) { |
|
215 | 215 | |
216 | 216 | echo aui()->select( |
217 | 217 | array( |
218 | 218 | 'options' => wpinv_get_country_list(), |
219 | - 'name' => 'getpaid_address[' . esc_attr( $key ) . ']', |
|
220 | - 'id' => 'wpinv-' . sanitize_html_class( $key ), |
|
221 | - 'value' => sanitize_text_field( getpaid_get_user_address_field( get_current_user_id(), $key ) ), |
|
219 | + 'name' => 'getpaid_address[' . esc_attr($key) . ']', |
|
220 | + 'id' => 'wpinv-' . sanitize_html_class($key), |
|
221 | + 'value' => sanitize_text_field(getpaid_get_user_address_field(get_current_user_id(), $key)), |
|
222 | 222 | 'placeholder' => $label, |
223 | - 'label' => wp_kses_post( $label ), |
|
223 | + 'label' => wp_kses_post($label), |
|
224 | 224 | 'label_type' => 'vertical', |
225 | 225 | 'class' => 'getpaid-address-field', |
226 | 226 | ) |
@@ -229,30 +229,30 @@ discard block |
||
229 | 229 | } |
230 | 230 | |
231 | 231 | // Display the state. |
232 | - else if ( 'state' == $key ) { |
|
232 | + else if ('state' == $key) { |
|
233 | 233 | |
234 | - echo getpaid_get_states_select_markup ( |
|
235 | - getpaid_get_user_address_field( get_current_user_id(), 'country' ), |
|
236 | - getpaid_get_user_address_field( get_current_user_id(), 'state' ), |
|
234 | + echo getpaid_get_states_select_markup( |
|
235 | + getpaid_get_user_address_field(get_current_user_id(), 'country'), |
|
236 | + getpaid_get_user_address_field(get_current_user_id(), 'state'), |
|
237 | 237 | $label, |
238 | 238 | $label, |
239 | 239 | '', |
240 | 240 | false, |
241 | 241 | '', |
242 | - 'getpaid_address[' . esc_attr( $key ) . ']' |
|
242 | + 'getpaid_address[' . esc_attr($key) . ']' |
|
243 | 243 | ); |
244 | 244 | |
245 | 245 | } else { |
246 | 246 | |
247 | 247 | echo aui()->input( |
248 | 248 | array( |
249 | - 'name' => 'getpaid_address[' . esc_attr( $key ) . ']', |
|
250 | - 'id' => 'wpinv-' . sanitize_html_class( $key ), |
|
249 | + 'name' => 'getpaid_address[' . esc_attr($key) . ']', |
|
250 | + 'id' => 'wpinv-' . sanitize_html_class($key), |
|
251 | 251 | 'placeholder' => $label, |
252 | - 'label' => wp_kses_post( $label ), |
|
252 | + 'label' => wp_kses_post($label), |
|
253 | 253 | 'label_type' => 'vertical', |
254 | 254 | 'type' => 'text', |
255 | - 'value' => sanitize_text_field( getpaid_get_user_address_field( get_current_user_id(), $key ) ), |
|
255 | + 'value' => sanitize_text_field(getpaid_get_user_address_field(get_current_user_id(), $key)), |
|
256 | 256 | 'class' => 'getpaid-address-field', |
257 | 257 | ) |
258 | 258 | ); |
@@ -261,21 +261,21 @@ discard block |
||
261 | 261 | |
262 | 262 | } |
263 | 263 | |
264 | - do_action( 'getpaid_display_address_edit_tab' ); |
|
264 | + do_action('getpaid_display_address_edit_tab'); |
|
265 | 265 | |
266 | 266 | echo aui()->input( |
267 | 267 | array( |
268 | 268 | 'name' => 'getpaid_profile_edit_submit_button', |
269 | 269 | 'id' => 'getpaid_profile_edit_submit_button', |
270 | - 'value' => __( 'Save Address', 'invoicing' ), |
|
271 | - 'help_text' => __( 'New invoices will use this address as the billing address.', 'invoicing' ), |
|
270 | + 'value' => __('Save Address', 'invoicing'), |
|
271 | + 'help_text' => __('New invoices will use this address as the billing address.', 'invoicing'), |
|
272 | 272 | 'type' => 'submit', |
273 | 273 | 'class' => 'btn btn-primary btn-block submit-button', |
274 | 274 | ) |
275 | 275 | ); |
276 | 276 | |
277 | - wp_nonce_field( 'getpaid-nonce', 'getpaid-nonce' ); |
|
278 | - getpaid_hidden_field( 'getpaid-action', 'edit_billing_details' ); |
|
277 | + wp_nonce_field('getpaid-nonce', 'getpaid-nonce'); |
|
278 | + getpaid_hidden_field('getpaid-action', 'edit_billing_details'); |
|
279 | 279 | ?> |
280 | 280 | |
281 | 281 | </form> |
@@ -292,27 +292,27 @@ discard block |
||
292 | 292 | * @since 2.1.4 |
293 | 293 | * @param array $data |
294 | 294 | */ |
295 | -function getpaid_save_address_edit_tab( $data ) { |
|
295 | +function getpaid_save_address_edit_tab($data) { |
|
296 | 296 | |
297 | - if ( empty( $data['getpaid_address'] ) || ! is_array( $data['getpaid_address'] ) ) { |
|
297 | + if (empty($data['getpaid_address']) || !is_array($data['getpaid_address'])) { |
|
298 | 298 | return; |
299 | 299 | } |
300 | 300 | |
301 | 301 | $data = $data['getpaid_address']; |
302 | 302 | $user_id = get_current_user_id(); |
303 | 303 | |
304 | - foreach ( array_keys( getpaid_user_address_fields() ) as $field ) { |
|
304 | + foreach (array_keys(getpaid_user_address_fields()) as $field) { |
|
305 | 305 | |
306 | - if ( isset( $data[ $field ] ) ) { |
|
307 | - $value = sanitize_text_field( $data[ $field ] ); |
|
308 | - update_user_meta( $user_id, '_wpinv_' . $field, $value ); |
|
306 | + if (isset($data[$field])) { |
|
307 | + $value = sanitize_text_field($data[$field]); |
|
308 | + update_user_meta($user_id, '_wpinv_' . $field, $value); |
|
309 | 309 | } |
310 | 310 | |
311 | - wpinv_set_error( 'address_updated', __( 'Your billing address has been updated', 'invoicing' ), 'success'); |
|
311 | + wpinv_set_error('address_updated', __('Your billing address has been updated', 'invoicing'), 'success'); |
|
312 | 312 | } |
313 | 313 | |
314 | 314 | } |
315 | -add_action( 'getpaid_authenticated_action_edit_billing_details', 'getpaid_save_address_edit_tab' ); |
|
315 | +add_action('getpaid_authenticated_action_edit_billing_details', 'getpaid_save_address_edit_tab'); |
|
316 | 316 | |
317 | 317 | |
318 | 318 | /* |
@@ -330,27 +330,27 @@ discard block |
||
330 | 330 | * @param array $tabs |
331 | 331 | * @return array |
332 | 332 | */ |
333 | -function getpaid_filter_userswp_account_tabs( $tabs ) { |
|
333 | +function getpaid_filter_userswp_account_tabs($tabs) { |
|
334 | 334 | |
335 | 335 | // Abort if the integration is inactive. |
336 | - if ( ! getpaid_is_userswp_integration_active() ) { |
|
336 | + if (!getpaid_is_userswp_integration_active()) { |
|
337 | 337 | return $tabs; |
338 | 338 | } |
339 | 339 | |
340 | - $new_tabs = array(); |
|
340 | + $new_tabs = array(); |
|
341 | 341 | |
342 | - foreach ( getpaid_get_user_content_tabs() as $slug => $tab ) { |
|
342 | + foreach (getpaid_get_user_content_tabs() as $slug => $tab) { |
|
343 | 343 | |
344 | - $new_tabs[ $slug ] = array( |
|
345 | - 'title' => $tab[ 'label'], |
|
346 | - 'icon' => $tab[ 'icon'], |
|
344 | + $new_tabs[$slug] = array( |
|
345 | + 'title' => $tab['label'], |
|
346 | + 'icon' => $tab['icon'], |
|
347 | 347 | ); |
348 | 348 | |
349 | 349 | } |
350 | 350 | |
351 | - return array_merge( $tabs, $new_tabs ); |
|
351 | + return array_merge($tabs, $new_tabs); |
|
352 | 352 | } |
353 | -add_filter( 'uwp_account_available_tabs', 'getpaid_filter_userswp_account_tabs' ); |
|
353 | +add_filter('uwp_account_available_tabs', 'getpaid_filter_userswp_account_tabs'); |
|
354 | 354 | |
355 | 355 | /** |
356 | 356 | * Display our UsersWP account tabs. |
@@ -359,18 +359,18 @@ discard block |
||
359 | 359 | * @param array $tabs |
360 | 360 | * @return array |
361 | 361 | */ |
362 | -function getpaid_display_userswp_account_tabs( $tab ) { |
|
362 | +function getpaid_display_userswp_account_tabs($tab) { |
|
363 | 363 | global $getpaid_tab_url; |
364 | 364 | |
365 | 365 | $our_tabs = getpaid_get_user_content_tabs(); |
366 | 366 | |
367 | - if ( getpaid_is_userswp_integration_active() && isset( $our_tabs[ $tab ] ) ) { |
|
368 | - $getpaid_tab_url = add_query_arg( 'type', '%s', uwp_get_account_page_url() ); |
|
369 | - echo getpaid_prepare_user_content_tab( $our_tabs[ $tab ] ); |
|
367 | + if (getpaid_is_userswp_integration_active() && isset($our_tabs[$tab])) { |
|
368 | + $getpaid_tab_url = add_query_arg('type', '%s', uwp_get_account_page_url()); |
|
369 | + echo getpaid_prepare_user_content_tab($our_tabs[$tab]); |
|
370 | 370 | } |
371 | 371 | |
372 | 372 | } |
373 | -add_action( 'uwp_account_form_display', 'getpaid_display_userswp_account_tabs' ); |
|
373 | +add_action('uwp_account_form_display', 'getpaid_display_userswp_account_tabs'); |
|
374 | 374 | |
375 | 375 | |
376 | 376 | /** |
@@ -381,17 +381,17 @@ discard block |
||
381 | 381 | * @param string $tab Current tab. |
382 | 382 | * @return string Title. |
383 | 383 | */ |
384 | -function getpaid_filter_userswp_account_title( $title, $tab ) { |
|
384 | +function getpaid_filter_userswp_account_title($title, $tab) { |
|
385 | 385 | |
386 | - $our_tabs = getpaid_get_user_content_tabs(); |
|
386 | + $our_tabs = getpaid_get_user_content_tabs(); |
|
387 | 387 | |
388 | - if ( getpaid_is_userswp_integration_active() && isset( $our_tabs[ $tab ] ) ) { |
|
389 | - return $our_tabs[ $tab ]['label']; |
|
388 | + if (getpaid_is_userswp_integration_active() && isset($our_tabs[$tab])) { |
|
389 | + return $our_tabs[$tab]['label']; |
|
390 | 390 | } |
391 | 391 | |
392 | 392 | return $title; |
393 | 393 | } |
394 | -add_filter( 'uwp_account_page_title', 'getpaid_filter_userswp_account_title', 10, 2 ); |
|
394 | +add_filter('uwp_account_page_title', 'getpaid_filter_userswp_account_title', 10, 2); |
|
395 | 395 | |
396 | 396 | /** |
397 | 397 | * Registers the UsersWP integration settings. |
@@ -400,26 +400,26 @@ discard block |
||
400 | 400 | * @param array $settings An array of integration settings. |
401 | 401 | * @return array |
402 | 402 | */ |
403 | -function getpaid_register_userswp_settings( $settings ) { |
|
403 | +function getpaid_register_userswp_settings($settings) { |
|
404 | 404 | |
405 | - if ( defined( 'USERSWP_PLUGIN_FILE' ) ) { |
|
405 | + if (defined('USERSWP_PLUGIN_FILE')) { |
|
406 | 406 | |
407 | 407 | $settings[] = array( |
408 | 408 | |
409 | 409 | 'id' => 'userswp', |
410 | - 'label' => __( 'UsersWP', 'invoicing' ), |
|
410 | + 'label' => __('UsersWP', 'invoicing'), |
|
411 | 411 | 'settings' => array( |
412 | 412 | |
413 | 413 | 'userswp_settings' => array( |
414 | 414 | 'id' => 'userswp_settings', |
415 | - 'name' => '<h3>' . __( 'UsersWP', 'invoicing' ) . '</h3>', |
|
415 | + 'name' => '<h3>' . __('UsersWP', 'invoicing') . '</h3>', |
|
416 | 416 | 'type' => 'header', |
417 | 417 | ), |
418 | 418 | |
419 | 419 | 'enable_userswp' => array( |
420 | 420 | 'id' => 'enable_userswp', |
421 | - 'name' => __( 'Enable Integration', 'invoicing' ), |
|
422 | - 'desc' => __( 'Display GetPaid items on UsersWP account page.', 'invoicing' ), |
|
421 | + 'name' => __('Enable Integration', 'invoicing'), |
|
422 | + 'desc' => __('Display GetPaid items on UsersWP account page.', 'invoicing'), |
|
423 | 423 | 'type' => 'checkbox', |
424 | 424 | 'std' => 1, |
425 | 425 | ) |
@@ -432,7 +432,7 @@ discard block |
||
432 | 432 | |
433 | 433 | return $settings; |
434 | 434 | } |
435 | -add_filter( 'getpaid_integration_settings', 'getpaid_register_userswp_settings' ); |
|
435 | +add_filter('getpaid_integration_settings', 'getpaid_register_userswp_settings'); |
|
436 | 436 | |
437 | 437 | /** |
438 | 438 | * Ovewrites the invoices history page to UsersWP. |
@@ -440,18 +440,18 @@ discard block |
||
440 | 440 | * @since 2.3.1 |
441 | 441 | * @return bool |
442 | 442 | */ |
443 | -function getpaid_userswp_overwrite_invoice_history_page( $url, $post_type ) { |
|
443 | +function getpaid_userswp_overwrite_invoice_history_page($url, $post_type) { |
|
444 | 444 | |
445 | 445 | $our_tabs = getpaid_get_user_content_tabs(); |
446 | 446 | $tab = "gp-{$post_type}s"; |
447 | - if ( getpaid_is_userswp_integration_active() && isset( $our_tabs[ $tab ] ) ) { |
|
448 | - return add_query_arg( 'type', $tab, uwp_get_account_page_url() ); |
|
447 | + if (getpaid_is_userswp_integration_active() && isset($our_tabs[$tab])) { |
|
448 | + return add_query_arg('type', $tab, uwp_get_account_page_url()); |
|
449 | 449 | } |
450 | 450 | |
451 | 451 | return $url; |
452 | 452 | |
453 | 453 | } |
454 | -add_filter( 'wpinv_get_history_page_uri', 'getpaid_userswp_overwrite_invoice_history_page', 10, 2 ); |
|
454 | +add_filter('wpinv_get_history_page_uri', 'getpaid_userswp_overwrite_invoice_history_page', 10, 2); |
|
455 | 455 | |
456 | 456 | /** |
457 | 457 | * Checks if the integration is enabled. |
@@ -460,8 +460,8 @@ discard block |
||
460 | 460 | * @return bool |
461 | 461 | */ |
462 | 462 | function getpaid_is_userswp_integration_active() { |
463 | - $enabled = wpinv_get_option( 'enable_userswp', 1 ); |
|
464 | - return defined( 'USERSWP_PLUGIN_FILE' ) && ! empty( $enabled ); |
|
463 | + $enabled = wpinv_get_option('enable_userswp', 1); |
|
464 | + return defined('USERSWP_PLUGIN_FILE') && !empty($enabled); |
|
465 | 465 | } |
466 | 466 | |
467 | 467 | /* |
@@ -479,26 +479,26 @@ discard block |
||
479 | 479 | * @param array $settings An array of integration settings. |
480 | 480 | * @return array |
481 | 481 | */ |
482 | -function getpaid_register_buddypress_settings( $settings ) { |
|
482 | +function getpaid_register_buddypress_settings($settings) { |
|
483 | 483 | |
484 | - if ( class_exists( 'BuddyPress' ) ) { |
|
484 | + if (class_exists('BuddyPress')) { |
|
485 | 485 | |
486 | 486 | $settings[] = array( |
487 | 487 | |
488 | 488 | 'id' => 'buddypress', |
489 | - 'label' => __( 'BuddyPress', 'invoicing' ), |
|
489 | + 'label' => __('BuddyPress', 'invoicing'), |
|
490 | 490 | 'settings' => array( |
491 | 491 | |
492 | 492 | 'buddypress_settings' => array( |
493 | 493 | 'id' => 'buddypress_settings', |
494 | - 'name' => '<h3>' . __( 'BuddyPress', 'invoicing' ) . '</h3>', |
|
494 | + 'name' => '<h3>' . __('BuddyPress', 'invoicing') . '</h3>', |
|
495 | 495 | 'type' => 'header', |
496 | 496 | ), |
497 | 497 | |
498 | 498 | 'enable_buddypress' => array( |
499 | 499 | 'id' => 'enable_buddypress', |
500 | - 'name' => __( 'Enable Integration', 'invoicing' ), |
|
501 | - 'desc' => __( 'Display GetPaid items on BuddyPress account pages.', 'invoicing' ), |
|
500 | + 'name' => __('Enable Integration', 'invoicing'), |
|
501 | + 'desc' => __('Display GetPaid items on BuddyPress account pages.', 'invoicing'), |
|
502 | 502 | 'type' => 'checkbox', |
503 | 503 | 'std' => 1, |
504 | 504 | ) |
@@ -511,7 +511,7 @@ discard block |
||
511 | 511 | |
512 | 512 | return $settings; |
513 | 513 | } |
514 | -add_filter( 'getpaid_integration_settings', 'getpaid_register_buddypress_settings' ); |
|
514 | +add_filter('getpaid_integration_settings', 'getpaid_register_buddypress_settings'); |
|
515 | 515 | |
516 | 516 | /** |
517 | 517 | * Checks if the integration is enabled. |
@@ -520,8 +520,8 @@ discard block |
||
520 | 520 | * @return bool |
521 | 521 | */ |
522 | 522 | function getpaid_is_buddypress_integration_active() { |
523 | - $enabled = wpinv_get_option( 'enable_buddypress', 1 ); |
|
524 | - return class_exists( 'BuddyPress' ) && ! empty( $enabled ); |
|
523 | + $enabled = wpinv_get_option('enable_buddypress', 1); |
|
524 | + return class_exists('BuddyPress') && !empty($enabled); |
|
525 | 525 | } |
526 | 526 | |
527 | 527 | /** |
@@ -532,10 +532,10 @@ discard block |
||
532 | 532 | */ |
533 | 533 | function getpaid_setup_buddypress_integration() { |
534 | 534 | |
535 | - if ( getpaid_is_buddypress_integration_active() ) { |
|
536 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-bp-getpaid-component.php' ); |
|
535 | + if (getpaid_is_buddypress_integration_active()) { |
|
536 | + require_once(WPINV_PLUGIN_DIR . 'includes/class-bp-getpaid-component.php'); |
|
537 | 537 | buddypress()->getpaid = new BP_GetPaid_Component(); |
538 | 538 | } |
539 | 539 | |
540 | 540 | } |
541 | -add_action( 'bp_setup_components', 'getpaid_setup_buddypress_integration' ); |
|
541 | +add_action('bp_setup_components', 'getpaid_setup_buddypress_integration'); |
@@ -13,30 +13,30 @@ discard block |
||
13 | 13 | class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway { |
14 | 14 | |
15 | 15 | /** |
16 | - * Payment method id. |
|
17 | - * |
|
18 | - * @var string |
|
19 | - */ |
|
16 | + * Payment method id. |
|
17 | + * |
|
18 | + * @var string |
|
19 | + */ |
|
20 | 20 | public $id = 'bank_transfer'; |
21 | 21 | |
22 | - /** |
|
23 | - * An array of features that this gateway supports. |
|
24 | - * |
|
25 | - * @var array |
|
26 | - */ |
|
27 | - protected $supports = array( 'addons' ); |
|
22 | + /** |
|
23 | + * An array of features that this gateway supports. |
|
24 | + * |
|
25 | + * @var array |
|
26 | + */ |
|
27 | + protected $supports = array( 'addons' ); |
|
28 | 28 | |
29 | 29 | /** |
30 | - * Payment method order. |
|
31 | - * |
|
32 | - * @var int |
|
33 | - */ |
|
34 | - public $order = 8; |
|
30 | + * Payment method order. |
|
31 | + * |
|
32 | + * @var int |
|
33 | + */ |
|
34 | + public $order = 8; |
|
35 | 35 | |
36 | 36 | /** |
37 | - * Class constructor. |
|
38 | - */ |
|
39 | - public function __construct() { |
|
37 | + * Class constructor. |
|
38 | + */ |
|
39 | + public function __construct() { |
|
40 | 40 | parent::__construct(); |
41 | 41 | |
42 | 42 | $this->title = __( 'Direct bank transfer', 'invoicing' ); |
@@ -44,23 +44,23 @@ discard block |
||
44 | 44 | $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
45 | 45 | $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
46 | 46 | |
47 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
48 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
49 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
50 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
47 | + add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
48 | + add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
49 | + add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
50 | + add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
51 | 51 | |
52 | 52 | } |
53 | 53 | |
54 | 54 | /** |
55 | - * Process Payment. |
|
56 | - * |
|
57 | - * |
|
58 | - * @param WPInv_Invoice $invoice Invoice. |
|
59 | - * @param array $submission_data Posted checkout fields. |
|
60 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
61 | - * @return array |
|
62 | - */ |
|
63 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
55 | + * Process Payment. |
|
56 | + * |
|
57 | + * |
|
58 | + * @param WPInv_Invoice $invoice Invoice. |
|
59 | + * @param array $submission_data Posted checkout fields. |
|
60 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
61 | + * @return array |
|
62 | + */ |
|
63 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
64 | 64 | |
65 | 65 | // Add a transaction id. |
66 | 66 | $invoice->set_transaction_id( $invoice->generate_key('trans_') ); |
@@ -81,66 +81,66 @@ discard block |
||
81 | 81 | } |
82 | 82 | |
83 | 83 | /** |
84 | - * Output for the order received page. |
|
85 | - * |
|
86 | - * @param WPInv_Invoice $invoice Invoice. |
|
87 | - */ |
|
88 | - public function thankyou_page( $invoice ) { |
|
84 | + * Output for the order received page. |
|
85 | + * |
|
86 | + * @param WPInv_Invoice $invoice Invoice. |
|
87 | + */ |
|
88 | + public function thankyou_page( $invoice ) { |
|
89 | 89 | |
90 | 90 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
91 | 91 | |
92 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
92 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
93 | 93 | |
94 | 94 | if ( ! empty( $this->instructions ) ) { |
95 | 95 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
96 | - } |
|
96 | + } |
|
97 | 97 | |
98 | - $this->bank_details( $invoice ); |
|
98 | + $this->bank_details( $invoice ); |
|
99 | 99 | |
100 | - echo '</div>'; |
|
100 | + echo '</div>'; |
|
101 | 101 | |
102 | 102 | } |
103 | 103 | |
104 | - } |
|
104 | + } |
|
105 | 105 | |
106 | 106 | /** |
107 | - * Add content to the WPI emails. |
|
108 | - * |
|
109 | - * @param WPInv_Invoice $invoice Invoice. |
|
110 | - * @param string $email_type Email format: plain text or HTML. |
|
111 | - * @param bool $sent_to_admin Sent to admin. |
|
112 | - */ |
|
113 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
107 | + * Add content to the WPI emails. |
|
108 | + * |
|
109 | + * @param WPInv_Invoice $invoice Invoice. |
|
110 | + * @param string $email_type Email format: plain text or HTML. |
|
111 | + * @param bool $sent_to_admin Sent to admin. |
|
112 | + */ |
|
113 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
114 | 114 | |
115 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
115 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
116 | 116 | |
117 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
117 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
118 | 118 | |
119 | - if ( $this->instructions ) { |
|
120 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
119 | + if ( $this->instructions ) { |
|
120 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
121 | 121 | } |
122 | 122 | |
123 | - $this->bank_details( $invoice ); |
|
123 | + $this->bank_details( $invoice ); |
|
124 | 124 | |
125 | - echo '</div>'; |
|
125 | + echo '</div>'; |
|
126 | 126 | |
127 | - } |
|
127 | + } |
|
128 | 128 | |
129 | 129 | } |
130 | 130 | |
131 | 131 | /** |
132 | - * Get bank details and place into a list format. |
|
133 | - * |
|
134 | - * @param WPInv_Invoice $invoice Invoice. |
|
135 | - */ |
|
136 | - protected function bank_details( $invoice ) { |
|
132 | + * Get bank details and place into a list format. |
|
133 | + * |
|
134 | + * @param WPInv_Invoice $invoice Invoice. |
|
135 | + */ |
|
136 | + protected function bank_details( $invoice ) { |
|
137 | 137 | |
138 | - // Get the invoice country and country $locale. |
|
139 | - $country = $invoice->get_country(); |
|
140 | - $locale = $this->get_country_locale(); |
|
138 | + // Get the invoice country and country $locale. |
|
139 | + $country = $invoice->get_country(); |
|
140 | + $locale = $this->get_country_locale(); |
|
141 | 141 | |
142 | - // Get sortcode label in the $locale array and use appropriate one. |
|
143 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
142 | + // Get sortcode label in the $locale array and use appropriate one. |
|
143 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
144 | 144 | |
145 | 145 | $bank_fields = array( |
146 | 146 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -169,144 +169,144 @@ discard block |
||
169 | 169 | return; |
170 | 170 | } |
171 | 171 | |
172 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
172 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
173 | 173 | |
174 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
174 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
175 | 175 | |
176 | - foreach ( $bank_info as $key => $data ) { |
|
176 | + foreach ( $bank_info as $key => $data ) { |
|
177 | 177 | |
178 | - $key = sanitize_html_class( $key ); |
|
179 | - $label = wp_kses_post( $data['label'] ); |
|
180 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
178 | + $key = sanitize_html_class( $key ); |
|
179 | + $label = wp_kses_post( $data['label'] ); |
|
180 | + $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
181 | 181 | |
182 | - echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
|
183 | - } |
|
182 | + echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
|
183 | + } |
|
184 | 184 | |
185 | - echo '</table>'; |
|
185 | + echo '</table>'; |
|
186 | 186 | |
187 | 187 | } |
188 | 188 | |
189 | 189 | /** |
190 | - * Get country locale if localized. |
|
191 | - * |
|
192 | - * @return array |
|
193 | - */ |
|
194 | - public function get_country_locale() { |
|
195 | - |
|
196 | - if ( empty( $this->locale ) ) { |
|
197 | - |
|
198 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
199 | - $this->locale = apply_filters( |
|
200 | - 'getpaid_get_bank_transfer_locale', |
|
201 | - array( |
|
202 | - 'AU' => array( |
|
203 | - 'sortcode' => array( |
|
204 | - 'label' => __( 'BSB', 'invoicing' ), |
|
205 | - ), |
|
206 | - ), |
|
207 | - 'CA' => array( |
|
208 | - 'sortcode' => array( |
|
209 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
210 | - ), |
|
211 | - ), |
|
212 | - 'IN' => array( |
|
213 | - 'sortcode' => array( |
|
214 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
215 | - ), |
|
216 | - ), |
|
217 | - 'IT' => array( |
|
218 | - 'sortcode' => array( |
|
219 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
220 | - ), |
|
221 | - ), |
|
222 | - 'NZ' => array( |
|
223 | - 'sortcode' => array( |
|
224 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
225 | - ), |
|
226 | - ), |
|
227 | - 'SE' => array( |
|
228 | - 'sortcode' => array( |
|
229 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
230 | - ), |
|
231 | - ), |
|
232 | - 'US' => array( |
|
233 | - 'sortcode' => array( |
|
234 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
235 | - ), |
|
236 | - ), |
|
237 | - 'ZA' => array( |
|
238 | - 'sortcode' => array( |
|
239 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
240 | - ), |
|
241 | - ), |
|
242 | - ) |
|
243 | - ); |
|
244 | - |
|
245 | - } |
|
246 | - |
|
247 | - return $this->locale; |
|
248 | - |
|
249 | - } |
|
250 | - |
|
251 | - /** |
|
252 | - * Filters the gateway settings. |
|
253 | - * |
|
254 | - * @param array $admin_settings |
|
255 | - */ |
|
256 | - public function admin_settings( $admin_settings ) { |
|
190 | + * Get country locale if localized. |
|
191 | + * |
|
192 | + * @return array |
|
193 | + */ |
|
194 | + public function get_country_locale() { |
|
195 | + |
|
196 | + if ( empty( $this->locale ) ) { |
|
197 | + |
|
198 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
199 | + $this->locale = apply_filters( |
|
200 | + 'getpaid_get_bank_transfer_locale', |
|
201 | + array( |
|
202 | + 'AU' => array( |
|
203 | + 'sortcode' => array( |
|
204 | + 'label' => __( 'BSB', 'invoicing' ), |
|
205 | + ), |
|
206 | + ), |
|
207 | + 'CA' => array( |
|
208 | + 'sortcode' => array( |
|
209 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
210 | + ), |
|
211 | + ), |
|
212 | + 'IN' => array( |
|
213 | + 'sortcode' => array( |
|
214 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
215 | + ), |
|
216 | + ), |
|
217 | + 'IT' => array( |
|
218 | + 'sortcode' => array( |
|
219 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
220 | + ), |
|
221 | + ), |
|
222 | + 'NZ' => array( |
|
223 | + 'sortcode' => array( |
|
224 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
225 | + ), |
|
226 | + ), |
|
227 | + 'SE' => array( |
|
228 | + 'sortcode' => array( |
|
229 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
230 | + ), |
|
231 | + ), |
|
232 | + 'US' => array( |
|
233 | + 'sortcode' => array( |
|
234 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
235 | + ), |
|
236 | + ), |
|
237 | + 'ZA' => array( |
|
238 | + 'sortcode' => array( |
|
239 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
240 | + ), |
|
241 | + ), |
|
242 | + ) |
|
243 | + ); |
|
244 | + |
|
245 | + } |
|
246 | + |
|
247 | + return $this->locale; |
|
248 | + |
|
249 | + } |
|
250 | + |
|
251 | + /** |
|
252 | + * Filters the gateway settings. |
|
253 | + * |
|
254 | + * @param array $admin_settings |
|
255 | + */ |
|
256 | + public function admin_settings( $admin_settings ) { |
|
257 | 257 | |
258 | 258 | $admin_settings['bank_transfer_desc']['std'] = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ); |
259 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
259 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
260 | 260 | |
261 | - $locale = $this->get_country_locale(); |
|
261 | + $locale = $this->get_country_locale(); |
|
262 | 262 | |
263 | - // Get sortcode label in the $locale array and use appropriate one. |
|
264 | - $country = wpinv_default_billing_country(); |
|
265 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
263 | + // Get sortcode label in the $locale array and use appropriate one. |
|
264 | + $country = wpinv_default_billing_country(); |
|
265 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
266 | 266 | |
267 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
267 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
268 | 268 | 'type' => 'text', |
269 | 269 | 'id' => 'bank_transfer_ac_name', |
270 | 270 | 'name' => __( 'Account Name', 'invoicing' ), |
271 | - ); |
|
271 | + ); |
|
272 | 272 | |
273 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
273 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
274 | 274 | 'type' => 'text', |
275 | 275 | 'id' => 'bank_transfer_ac_no', |
276 | 276 | 'name' => __( 'Account Number', 'invoicing' ), |
277 | - ); |
|
277 | + ); |
|
278 | 278 | |
279 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
279 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
280 | 280 | 'type' => 'text', |
281 | 281 | 'id' => 'bank_transfer_bank_name', |
282 | 282 | 'name' => __( 'Bank Name', 'invoicing' ), |
283 | - ); |
|
283 | + ); |
|
284 | 284 | |
285 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
285 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
286 | 286 | 'type' => 'text', |
287 | 287 | 'id' => 'bank_transfer_ifsc', |
288 | 288 | 'name' => __( 'IFSC Code', 'invoicing' ), |
289 | - ); |
|
289 | + ); |
|
290 | 290 | |
291 | - $admin_settings['bank_transfer_iban'] = array( |
|
291 | + $admin_settings['bank_transfer_iban'] = array( |
|
292 | 292 | 'type' => 'text', |
293 | 293 | 'id' => 'bank_transfer_iban', |
294 | 294 | 'name' => __( 'IBAN', 'invoicing' ), |
295 | - ); |
|
295 | + ); |
|
296 | 296 | |
297 | - $admin_settings['bank_transfer_bic'] = array( |
|
297 | + $admin_settings['bank_transfer_bic'] = array( |
|
298 | 298 | 'type' => 'text', |
299 | 299 | 'id' => 'bank_transfer_bic', |
300 | 300 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
301 | - ); |
|
301 | + ); |
|
302 | 302 | |
303 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
304 | - 'type' => 'text', |
|
305 | - 'id' => 'bank_transfer_sort_code', |
|
306 | - 'name' => $sortcode, |
|
307 | - ); |
|
303 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
304 | + 'type' => 'text', |
|
305 | + 'id' => 'bank_transfer_sort_code', |
|
306 | + 'name' => $sortcode, |
|
307 | + ); |
|
308 | 308 | |
309 | - $admin_settings['bank_transfer_info'] = array( |
|
309 | + $admin_settings['bank_transfer_info'] = array( |
|
310 | 310 | 'id' => 'bank_transfer_info', |
311 | 311 | 'name' => __( 'Instructions', 'invoicing' ), |
312 | 312 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -316,17 +316,17 @@ discard block |
||
316 | 316 | 'rows' => 5 |
317 | 317 | ); |
318 | 318 | |
319 | - return $admin_settings; |
|
320 | - } |
|
319 | + return $admin_settings; |
|
320 | + } |
|
321 | 321 | |
322 | - /** |
|
323 | - * Processes invoice addons. |
|
324 | - * |
|
325 | - * @param WPInv_Invoice $invoice |
|
326 | - * @param GetPaid_Form_Item[] $items |
|
327 | - * @return WPInv_Invoice |
|
328 | - */ |
|
329 | - public function process_addons( $invoice, $items ) { |
|
322 | + /** |
|
323 | + * Processes invoice addons. |
|
324 | + * |
|
325 | + * @param WPInv_Invoice $invoice |
|
326 | + * @param GetPaid_Form_Item[] $items |
|
327 | + * @return WPInv_Invoice |
|
328 | + */ |
|
329 | + public function process_addons( $invoice, $items ) { |
|
330 | 330 | |
331 | 331 | foreach ( $items as $item ) { |
332 | 332 | $invoice->add_item( $item ); |
@@ -334,6 +334,6 @@ discard block |
||
334 | 334 | |
335 | 335 | $invoice->recalculate_total(); |
336 | 336 | $invoice->save(); |
337 | - } |
|
337 | + } |
|
338 | 338 | |
339 | 339 | } |
@@ -4,7 +4,7 @@ discard block |
||
4 | 4 | * |
5 | 5 | */ |
6 | 6 | |
7 | -defined( 'ABSPATH' ) || exit; |
|
7 | +defined('ABSPATH') || exit; |
|
8 | 8 | |
9 | 9 | /** |
10 | 10 | * Bank transfer Payment Gateway class. |
@@ -24,7 +24,7 @@ discard block |
||
24 | 24 | * |
25 | 25 | * @var array |
26 | 26 | */ |
27 | - protected $supports = array( 'addons' ); |
|
27 | + protected $supports = array('addons'); |
|
28 | 28 | |
29 | 29 | /** |
30 | 30 | * Payment method order. |
@@ -39,15 +39,15 @@ discard block |
||
39 | 39 | public function __construct() { |
40 | 40 | parent::__construct(); |
41 | 41 | |
42 | - $this->title = __( 'Direct bank transfer', 'invoicing' ); |
|
43 | - $this->method_title = __( 'Bank transfer', 'invoicing' ); |
|
44 | - $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
|
45 | - $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
|
42 | + $this->title = __('Direct bank transfer', 'invoicing'); |
|
43 | + $this->method_title = __('Bank transfer', 'invoicing'); |
|
44 | + $this->checkout_button_text = __('Proceed', 'invoicing'); |
|
45 | + $this->instructions = apply_filters('wpinv_bank_instructions', $this->get_option('info')); |
|
46 | 46 | |
47 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
48 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
49 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
50 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
47 | + add_action('wpinv_receipt_end', array($this, 'thankyou_page')); |
|
48 | + add_action('getpaid_invoice_line_items', array($this, 'thankyou_page'), 40); |
|
49 | + add_action('wpinv_pdf_content_billing', array($this, 'thankyou_page'), 11); |
|
50 | + add_action('wpinv_email_invoice_details', array($this, 'email_instructions'), 10, 3); |
|
51 | 51 | |
52 | 52 | } |
53 | 53 | |
@@ -60,23 +60,23 @@ discard block |
||
60 | 60 | * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
61 | 61 | * @return array |
62 | 62 | */ |
63 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
63 | + public function process_payment($invoice, $submission_data, $submission) { |
|
64 | 64 | |
65 | 65 | // Add a transaction id. |
66 | - $invoice->set_transaction_id( $invoice->generate_key('trans_') ); |
|
66 | + $invoice->set_transaction_id($invoice->generate_key('trans_')); |
|
67 | 67 | |
68 | 68 | // Set it as pending payment. |
69 | - if ( ! $invoice->needs_payment() ) { |
|
69 | + if (!$invoice->needs_payment()) { |
|
70 | 70 | $invoice->mark_paid(); |
71 | - } else if ( ! $invoice->is_paid() ) { |
|
72 | - $invoice->set_status( 'wpi-onhold' ); |
|
71 | + } else if (!$invoice->is_paid()) { |
|
72 | + $invoice->set_status('wpi-onhold'); |
|
73 | 73 | } |
74 | 74 | |
75 | 75 | // Save it. |
76 | 76 | $invoice->save(); |
77 | 77 | |
78 | 78 | // Send to the success page. |
79 | - wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) ); |
|
79 | + wpinv_send_to_success_page(array('invoice_key' => $invoice->get_key())); |
|
80 | 80 | |
81 | 81 | } |
82 | 82 | |
@@ -85,17 +85,17 @@ discard block |
||
85 | 85 | * |
86 | 86 | * @param WPInv_Invoice $invoice Invoice. |
87 | 87 | */ |
88 | - public function thankyou_page( $invoice ) { |
|
88 | + public function thankyou_page($invoice) { |
|
89 | 89 | |
90 | - if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
90 | + if ('bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) { |
|
91 | 91 | |
92 | 92 | echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
93 | 93 | |
94 | - if ( ! empty( $this->instructions ) ) { |
|
95 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
|
94 | + if (!empty($this->instructions)) { |
|
95 | + echo wp_kses_post(wpautop(wptexturize($this->instructions))); |
|
96 | 96 | } |
97 | 97 | |
98 | - $this->bank_details( $invoice ); |
|
98 | + $this->bank_details($invoice); |
|
99 | 99 | |
100 | 100 | echo '</div>'; |
101 | 101 | |
@@ -110,17 +110,17 @@ discard block |
||
110 | 110 | * @param string $email_type Email format: plain text or HTML. |
111 | 111 | * @param bool $sent_to_admin Sent to admin. |
112 | 112 | */ |
113 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
113 | + public function email_instructions($invoice, $email_type, $sent_to_admin) { |
|
114 | 114 | |
115 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
115 | + if (!$sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) { |
|
116 | 116 | |
117 | 117 | echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
118 | 118 | |
119 | - if ( $this->instructions ) { |
|
120 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
119 | + if ($this->instructions) { |
|
120 | + echo wp_kses_post(wpautop(wptexturize($this->instructions)) . PHP_EOL); |
|
121 | 121 | } |
122 | 122 | |
123 | - $this->bank_details( $invoice ); |
|
123 | + $this->bank_details($invoice); |
|
124 | 124 | |
125 | 125 | echo '</div>'; |
126 | 126 | |
@@ -133,51 +133,51 @@ discard block |
||
133 | 133 | * |
134 | 134 | * @param WPInv_Invoice $invoice Invoice. |
135 | 135 | */ |
136 | - protected function bank_details( $invoice ) { |
|
136 | + protected function bank_details($invoice) { |
|
137 | 137 | |
138 | 138 | // Get the invoice country and country $locale. |
139 | 139 | $country = $invoice->get_country(); |
140 | 140 | $locale = $this->get_country_locale(); |
141 | 141 | |
142 | 142 | // Get sortcode label in the $locale array and use appropriate one. |
143 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
143 | + $sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing'); |
|
144 | 144 | |
145 | 145 | $bank_fields = array( |
146 | - 'ac_name' => __( 'Account Name', 'invoicing' ), |
|
147 | - 'ac_no' => __( 'Account Number', 'invoicing' ), |
|
148 | - 'bank_name' => __( 'Bank Name', 'invoicing' ), |
|
149 | - 'ifsc' => __( 'IFSC code', 'invoicing' ), |
|
150 | - 'iban' => __( 'IBAN', 'invoicing' ), |
|
151 | - 'bic' => __( 'BIC/Swift code', 'invoicing' ), |
|
146 | + 'ac_name' => __('Account Name', 'invoicing'), |
|
147 | + 'ac_no' => __('Account Number', 'invoicing'), |
|
148 | + 'bank_name' => __('Bank Name', 'invoicing'), |
|
149 | + 'ifsc' => __('IFSC code', 'invoicing'), |
|
150 | + 'iban' => __('IBAN', 'invoicing'), |
|
151 | + 'bic' => __('BIC/Swift code', 'invoicing'), |
|
152 | 152 | 'sort_code' => $sortcode, |
153 | 153 | ); |
154 | 154 | |
155 | 155 | $bank_info = array(); |
156 | 156 | |
157 | - foreach ( $bank_fields as $field => $label ) { |
|
158 | - $value = $this->get_option( $field ); |
|
157 | + foreach ($bank_fields as $field => $label) { |
|
158 | + $value = $this->get_option($field); |
|
159 | 159 | |
160 | - if ( ! empty( $value ) ) { |
|
161 | - $bank_info[$field] = array( 'label' => $label, 'value' => $value ); |
|
160 | + if (!empty($value)) { |
|
161 | + $bank_info[$field] = array('label' => $label, 'value' => $value); |
|
162 | 162 | } |
163 | 163 | |
164 | 164 | } |
165 | 165 | |
166 | - $bank_info = apply_filters( 'wpinv_bank_info', $bank_info ); |
|
166 | + $bank_info = apply_filters('wpinv_bank_info', $bank_info); |
|
167 | 167 | |
168 | - if ( empty( $bank_info ) ) { |
|
168 | + if (empty($bank_info)) { |
|
169 | 169 | return; |
170 | 170 | } |
171 | 171 | |
172 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
172 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters('wpinv_receipt_bank_details_title', __('Bank Details', 'invoicing')) . '</h3>' . PHP_EOL; |
|
173 | 173 | |
174 | 174 | echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
175 | 175 | |
176 | - foreach ( $bank_info as $key => $data ) { |
|
176 | + foreach ($bank_info as $key => $data) { |
|
177 | 177 | |
178 | - $key = sanitize_html_class( $key ); |
|
179 | - $label = wp_kses_post( $data['label'] ); |
|
180 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
178 | + $key = sanitize_html_class($key); |
|
179 | + $label = wp_kses_post($data['label']); |
|
180 | + $value = wp_kses_post(wptexturize($data['value'])); |
|
181 | 181 | |
182 | 182 | echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
183 | 183 | } |
@@ -193,7 +193,7 @@ discard block |
||
193 | 193 | */ |
194 | 194 | public function get_country_locale() { |
195 | 195 | |
196 | - if ( empty( $this->locale ) ) { |
|
196 | + if (empty($this->locale)) { |
|
197 | 197 | |
198 | 198 | // Locale information to be used - only those that are not 'Sort Code'. |
199 | 199 | $this->locale = apply_filters( |
@@ -201,42 +201,42 @@ discard block |
||
201 | 201 | array( |
202 | 202 | 'AU' => array( |
203 | 203 | 'sortcode' => array( |
204 | - 'label' => __( 'BSB', 'invoicing' ), |
|
204 | + 'label' => __('BSB', 'invoicing'), |
|
205 | 205 | ), |
206 | 206 | ), |
207 | 207 | 'CA' => array( |
208 | 208 | 'sortcode' => array( |
209 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
209 | + 'label' => __('Bank transit number', 'invoicing'), |
|
210 | 210 | ), |
211 | 211 | ), |
212 | 212 | 'IN' => array( |
213 | 213 | 'sortcode' => array( |
214 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
214 | + 'label' => __('IFSC', 'invoicing'), |
|
215 | 215 | ), |
216 | 216 | ), |
217 | 217 | 'IT' => array( |
218 | 218 | 'sortcode' => array( |
219 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
219 | + 'label' => __('Branch sort', 'invoicing'), |
|
220 | 220 | ), |
221 | 221 | ), |
222 | 222 | 'NZ' => array( |
223 | 223 | 'sortcode' => array( |
224 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
224 | + 'label' => __('Bank code', 'invoicing'), |
|
225 | 225 | ), |
226 | 226 | ), |
227 | 227 | 'SE' => array( |
228 | 228 | 'sortcode' => array( |
229 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
229 | + 'label' => __('Bank code', 'invoicing'), |
|
230 | 230 | ), |
231 | 231 | ), |
232 | 232 | 'US' => array( |
233 | 233 | 'sortcode' => array( |
234 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
234 | + 'label' => __('Routing number', 'invoicing'), |
|
235 | 235 | ), |
236 | 236 | ), |
237 | 237 | 'ZA' => array( |
238 | 238 | 'sortcode' => array( |
239 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
239 | + 'label' => __('Branch code', 'invoicing'), |
|
240 | 240 | ), |
241 | 241 | ), |
242 | 242 | ) |
@@ -253,51 +253,51 @@ discard block |
||
253 | 253 | * |
254 | 254 | * @param array $admin_settings |
255 | 255 | */ |
256 | - public function admin_settings( $admin_settings ) { |
|
256 | + public function admin_settings($admin_settings) { |
|
257 | 257 | |
258 | - $admin_settings['bank_transfer_desc']['std'] = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ); |
|
259 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
258 | + $admin_settings['bank_transfer_desc']['std'] = __("Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing'); |
|
259 | + $admin_settings['bank_transfer_active']['desc'] = __('Enable bank transfer', 'invoicing'); |
|
260 | 260 | |
261 | - $locale = $this->get_country_locale(); |
|
261 | + $locale = $this->get_country_locale(); |
|
262 | 262 | |
263 | 263 | // Get sortcode label in the $locale array and use appropriate one. |
264 | 264 | $country = wpinv_default_billing_country(); |
265 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
265 | + $sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing'); |
|
266 | 266 | |
267 | 267 | $admin_settings['bank_transfer_ac_name'] = array( |
268 | 268 | 'type' => 'text', |
269 | 269 | 'id' => 'bank_transfer_ac_name', |
270 | - 'name' => __( 'Account Name', 'invoicing' ), |
|
270 | + 'name' => __('Account Name', 'invoicing'), |
|
271 | 271 | ); |
272 | 272 | |
273 | 273 | $admin_settings['bank_transfer_ac_no'] = array( |
274 | 274 | 'type' => 'text', |
275 | 275 | 'id' => 'bank_transfer_ac_no', |
276 | - 'name' => __( 'Account Number', 'invoicing' ), |
|
276 | + 'name' => __('Account Number', 'invoicing'), |
|
277 | 277 | ); |
278 | 278 | |
279 | 279 | $admin_settings['bank_transfer_bank_name'] = array( |
280 | 280 | 'type' => 'text', |
281 | 281 | 'id' => 'bank_transfer_bank_name', |
282 | - 'name' => __( 'Bank Name', 'invoicing' ), |
|
282 | + 'name' => __('Bank Name', 'invoicing'), |
|
283 | 283 | ); |
284 | 284 | |
285 | 285 | $admin_settings['bank_transfer_ifsc'] = array( |
286 | 286 | 'type' => 'text', |
287 | 287 | 'id' => 'bank_transfer_ifsc', |
288 | - 'name' => __( 'IFSC Code', 'invoicing' ), |
|
288 | + 'name' => __('IFSC Code', 'invoicing'), |
|
289 | 289 | ); |
290 | 290 | |
291 | 291 | $admin_settings['bank_transfer_iban'] = array( |
292 | 292 | 'type' => 'text', |
293 | 293 | 'id' => 'bank_transfer_iban', |
294 | - 'name' => __( 'IBAN', 'invoicing' ), |
|
294 | + 'name' => __('IBAN', 'invoicing'), |
|
295 | 295 | ); |
296 | 296 | |
297 | 297 | $admin_settings['bank_transfer_bic'] = array( |
298 | 298 | 'type' => 'text', |
299 | 299 | 'id' => 'bank_transfer_bic', |
300 | - 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
|
300 | + 'name' => __('BIC/Swift Code', 'invoicing'), |
|
301 | 301 | ); |
302 | 302 | |
303 | 303 | $admin_settings['bank_transfer_sort_code'] = array( |
@@ -308,10 +308,10 @@ discard block |
||
308 | 308 | |
309 | 309 | $admin_settings['bank_transfer_info'] = array( |
310 | 310 | 'id' => 'bank_transfer_info', |
311 | - 'name' => __( 'Instructions', 'invoicing' ), |
|
312 | - 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
|
311 | + 'name' => __('Instructions', 'invoicing'), |
|
312 | + 'desc' => __('Instructions that will be added to the thank you page and emails.', 'invoicing'), |
|
313 | 313 | 'type' => 'textarea', |
314 | - 'std' => __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ), |
|
314 | + 'std' => __("Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing'), |
|
315 | 315 | 'cols' => 50, |
316 | 316 | 'rows' => 5 |
317 | 317 | ); |
@@ -326,10 +326,10 @@ discard block |
||
326 | 326 | * @param GetPaid_Form_Item[] $items |
327 | 327 | * @return WPInv_Invoice |
328 | 328 | */ |
329 | - public function process_addons( $invoice, $items ) { |
|
329 | + public function process_addons($invoice, $items) { |
|
330 | 330 | |
331 | - foreach ( $items as $item ) { |
|
332 | - $invoice->add_item( $item ); |
|
331 | + foreach ($items as $item) { |
|
332 | + $invoice->add_item($item); |
|
333 | 333 | } |
334 | 334 | |
335 | 335 | $invoice->recalculate_total(); |