@@ -31,25 +31,25 @@ |
||
31 | 31 | public function get_privacy_message() { |
32 | 32 | |
33 | 33 | $content = '<div class="wp-suggested-text">' . |
34 | - '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
35 | - '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
36 | - '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
37 | - '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
38 | - '<ul>' . |
|
39 | - '<li>' . __( '- Send you important account/order/service information.', 'invoicing' ) . '</li>' . |
|
40 | - '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
41 | - '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
42 | - '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
43 | - '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
44 | - '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
45 | - '</ul>' . |
|
46 | - '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
47 | - '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
48 | - '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
49 | - '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
50 | - '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
51 | - '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
52 | - '</div>'; |
|
34 | + '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
35 | + '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
36 | + '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
37 | + '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
38 | + '<ul>' . |
|
39 | + '<li>' . __( '- Send you important account/order/service information.', 'invoicing' ) . '</li>' . |
|
40 | + '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
41 | + '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
42 | + '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
43 | + '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
44 | + '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
45 | + '</ul>' . |
|
46 | + '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
47 | + '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
48 | + '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
49 | + '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
50 | + '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
51 | + '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
52 | + '</div>'; |
|
53 | 53 | |
54 | 54 | return apply_filters( 'wpinv_privacy_policy_content', $content ); |
55 | 55 | } |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * Privacy/GDPR related functionality which ties into WordPress functionality. |
4 | 4 | */ |
5 | 5 | |
6 | -defined( 'ABSPATH' ) || exit; |
|
6 | +defined('ABSPATH') || exit; |
|
7 | 7 | |
8 | 8 | /** |
9 | 9 | * WPInv_Privacy Class. |
@@ -14,13 +14,13 @@ discard block |
||
14 | 14 | * Init - hook into events. |
15 | 15 | */ |
16 | 16 | public function __construct() { |
17 | - parent::__construct( __( 'Invoicing', 'invoicing' ) ); |
|
17 | + parent::__construct(__('Invoicing', 'invoicing')); |
|
18 | 18 | |
19 | 19 | // Include supporting classes. |
20 | 20 | include_once 'class-wpinv-privacy-exporters.php'; |
21 | 21 | |
22 | 22 | // This hook registers Invoicing data exporters. |
23 | - $this->add_exporter( 'wpinv-customer-invoices', __( 'Customer Invoices', 'invoicing' ), array( 'WPInv_Privacy_Exporters', 'customer_invoice_data_exporter' ) ); |
|
23 | + $this->add_exporter('wpinv-customer-invoices', __('Customer Invoices', 'invoicing'), array('WPInv_Privacy_Exporters', 'customer_invoice_data_exporter')); |
|
24 | 24 | } |
25 | 25 | |
26 | 26 | /** |
@@ -31,27 +31,27 @@ discard block |
||
31 | 31 | public function get_privacy_message() { |
32 | 32 | |
33 | 33 | $content = '<div class="wp-suggested-text">' . |
34 | - '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
35 | - '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
36 | - '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
37 | - '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
34 | + '<h2>' . __('Invoices and checkout', 'invoicing') . '</h2>' . |
|
35 | + '<p class="privacy-policy-tutorial">' . __('Example privacy texts.', 'invoicing') . '</p>' . |
|
36 | + '<p>' . __('We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing') . '</p>' . |
|
37 | + '<p>' . __('Handling this data also allows us to:', 'invoicing') . '</p>' . |
|
38 | 38 | '<ul>' . |
39 | - '<li>' . __( '- Send you important account/order/service information.', 'invoicing' ) . '</li>' . |
|
40 | - '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
41 | - '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
42 | - '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
43 | - '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
44 | - '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
39 | + '<li>' . __('- Send you important account/order/service information.', 'invoicing') . '</li>' . |
|
40 | + '<li>' . __('- Estimate taxes based on your location.', 'invoicing') . '</li>' . |
|
41 | + '<li>' . __('- Respond to your queries or complaints.', 'invoicing') . '</li>' . |
|
42 | + '<li>' . __('- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing') . '</li>' . |
|
43 | + '<li>' . __('- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing') . '</li>' . |
|
44 | + '<li>' . __('- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing') . '</li>' . |
|
45 | 45 | '</ul>' . |
46 | - '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
47 | - '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
48 | - '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
49 | - '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
50 | - '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
51 | - '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
46 | + '<p>' . __('In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing') . '</p>' . |
|
47 | + '<h2>' . __('What we share with others', 'invoicing') . '</h2>' . |
|
48 | + '<p>' . __('We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing') . '</p>' . |
|
49 | + '<p class="privacy-policy-tutorial">' . __('In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing') . '</p>' . |
|
50 | + '<p>' . __('We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing') . '</p>' . |
|
51 | + '<p>' . __('Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing') . '</p>' . |
|
52 | 52 | '</div>'; |
53 | 53 | |
54 | - return apply_filters( 'wpinv_privacy_policy_content', $content ); |
|
54 | + return apply_filters('wpinv_privacy_policy_content', $content); |
|
55 | 55 | } |
56 | 56 | |
57 | 57 | } |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * Personal data exporters. |
4 | 4 | */ |
5 | 5 | |
6 | -defined( 'ABSPATH' ) || exit; |
|
6 | +defined('ABSPATH') || exit; |
|
7 | 7 | |
8 | 8 | /** |
9 | 9 | * WPInv_Privacy_Exporters Class. |
@@ -17,38 +17,38 @@ discard block |
||
17 | 17 | * @param int $page Page. |
18 | 18 | * @return array An array of invoice data in name value pairs |
19 | 19 | */ |
20 | - public static function customer_invoice_data_exporter( $email_address, $page ) { |
|
20 | + public static function customer_invoice_data_exporter($email_address, $page) { |
|
21 | 21 | $done = false; |
22 | 22 | $page = (int) $page; |
23 | 23 | $data_to_export = array(); |
24 | 24 | |
25 | - $user = get_user_by( 'email', $email_address ); |
|
26 | - if ( ! $user instanceof WP_User ) { |
|
25 | + $user = get_user_by('email', $email_address); |
|
26 | + if (!$user instanceof WP_User) { |
|
27 | 27 | return array( |
28 | 28 | 'data' => $data_to_export, |
29 | 29 | 'done' => true, |
30 | 30 | ); |
31 | 31 | } |
32 | 32 | |
33 | - $args = array( |
|
33 | + $args = array( |
|
34 | 34 | 'limit' => 30, |
35 | 35 | 'page' => $page, |
36 | 36 | 'user' => $user->ID, |
37 | 37 | ); |
38 | 38 | |
39 | - $invoices = wpinv_get_invoices( $args ); |
|
39 | + $invoices = wpinv_get_invoices($args); |
|
40 | 40 | |
41 | - if ( 0 < count( $invoices ) ) { |
|
42 | - foreach ( $invoices as $invoice ) { |
|
41 | + if (0 < count($invoices)) { |
|
42 | + foreach ($invoices as $invoice) { |
|
43 | 43 | $data_to_export[] = array( |
44 | 44 | 'group_id' => 'customer_invoices', |
45 | - 'group_label' => __( 'Invoicing Data', 'invoicing' ), |
|
46 | - 'group_description' => __( 'Customer invoicing data.', 'invoicing' ), |
|
45 | + 'group_label' => __('Invoicing Data', 'invoicing'), |
|
46 | + 'group_description' => __('Customer invoicing data.', 'invoicing'), |
|
47 | 47 | 'item_id' => "wpinv-{$invoice->ID}", |
48 | - 'data' => self::get_customer_invoice_data( $invoice ), |
|
48 | + 'data' => self::get_customer_invoice_data($invoice), |
|
49 | 49 | ); |
50 | 50 | } |
51 | - $done = 30 > count( $invoices ); |
|
51 | + $done = 30 > count($invoices); |
|
52 | 52 | } else { |
53 | 53 | $done = true; |
54 | 54 | } |
@@ -66,59 +66,59 @@ discard block |
||
66 | 66 | * @param WPInv_Invoice $invoice invoice object. |
67 | 67 | * @return array |
68 | 68 | */ |
69 | - public static function get_customer_invoice_data( $invoice ) { |
|
69 | + public static function get_customer_invoice_data($invoice) { |
|
70 | 70 | $personal_data = array(); |
71 | 71 | |
72 | 72 | $props_to_export = array( |
73 | - 'number' => __( 'Invoice Number', 'invoicing' ), |
|
74 | - 'created_date' => __( 'Invoice Date', 'invoicing' ), |
|
75 | - 'status' => __( 'Invoice Status', 'invoicing' ), |
|
76 | - 'total' => __( 'Invoice Total', 'invoicing' ), |
|
77 | - 'items' => __( 'Invoice Items', 'invoicing' ), |
|
78 | - 'first_name' => __( 'First Name', 'invoicing' ), |
|
79 | - 'last_name' => __( 'Last Name', 'invoicing' ), |
|
80 | - 'email' => __( 'Email Address', 'invoicing' ), |
|
81 | - '_wpinv_company' => __( 'Company', 'invoicing' ), |
|
82 | - 'phone' => __( 'Phone Number', 'invoicing' ), |
|
83 | - 'address' => __( 'Address', 'invoicing' ), |
|
84 | - '_wpinv_city' => __( 'City', 'invoicing' ), |
|
85 | - '_wpinv_country' => __( 'Country', 'invoicing' ), |
|
86 | - '_wpinv_state' => __( 'State', 'invoicing' ), |
|
87 | - '_wpinv_zip' => __( 'Zip Code', 'invoicing' ), |
|
73 | + 'number' => __('Invoice Number', 'invoicing'), |
|
74 | + 'created_date' => __('Invoice Date', 'invoicing'), |
|
75 | + 'status' => __('Invoice Status', 'invoicing'), |
|
76 | + 'total' => __('Invoice Total', 'invoicing'), |
|
77 | + 'items' => __('Invoice Items', 'invoicing'), |
|
78 | + 'first_name' => __('First Name', 'invoicing'), |
|
79 | + 'last_name' => __('Last Name', 'invoicing'), |
|
80 | + 'email' => __('Email Address', 'invoicing'), |
|
81 | + '_wpinv_company' => __('Company', 'invoicing'), |
|
82 | + 'phone' => __('Phone Number', 'invoicing'), |
|
83 | + 'address' => __('Address', 'invoicing'), |
|
84 | + '_wpinv_city' => __('City', 'invoicing'), |
|
85 | + '_wpinv_country' => __('Country', 'invoicing'), |
|
86 | + '_wpinv_state' => __('State', 'invoicing'), |
|
87 | + '_wpinv_zip' => __('Zip Code', 'invoicing'), |
|
88 | 88 | ); |
89 | 89 | |
90 | - $subscription = wpinv_get_subscription( $invoice ); |
|
90 | + $subscription = wpinv_get_subscription($invoice); |
|
91 | 91 | $period = $initial_amt = $bill_times = $billed = $renewal_date = ''; |
92 | 92 | |
93 | - if ( $invoice->is_recurring() && !empty( $subscription ) ) { |
|
94 | - $frequency = WPInv_Subscriptions::wpinv_get_pretty_subscription_frequency( $subscription->period,$subscription->frequency ); |
|
95 | - $period = wpinv_price( wpinv_format_amount( $subscription->recurring_amount ), wpinv_get_invoice_currency_code( $subscription->parent_payment_id ) ) . ' / ' . $frequency; |
|
96 | - $initial_amt = wpinv_price( wpinv_format_amount( $subscription->initial_amount ), wpinv_get_invoice_currency_code( $subscription->parent_payment_id ) ); |
|
97 | - $bill_times = $subscription->get_times_billed() . ' / ' . ( ( $subscription->bill_times == 0 ) ? 'Until Cancelled' : $subscription->bill_times ); |
|
98 | - $renewal_date = ! empty( $subscription->expiration ) ? date_i18n( get_option( 'date_format' ), strtotime( $subscription->expiration ) ) : __( 'N/A', 'invoicing' ); |
|
99 | - |
|
100 | - $props_to_export['period'] = __( 'Billing Cycle', 'invoicing' ); |
|
101 | - $props_to_export['initial_amount'] = __( 'Initial Amount', 'invoicing' ); |
|
102 | - $props_to_export['bill_times'] = __( 'Times Billed', 'invoicing' ); |
|
103 | - $props_to_export['renewal_date'] = __( 'Renewal Date', 'invoicing' ); |
|
93 | + if ($invoice->is_recurring() && !empty($subscription)) { |
|
94 | + $frequency = WPInv_Subscriptions::wpinv_get_pretty_subscription_frequency($subscription->period, $subscription->frequency); |
|
95 | + $period = wpinv_price(wpinv_format_amount($subscription->recurring_amount), wpinv_get_invoice_currency_code($subscription->parent_payment_id)) . ' / ' . $frequency; |
|
96 | + $initial_amt = wpinv_price(wpinv_format_amount($subscription->initial_amount), wpinv_get_invoice_currency_code($subscription->parent_payment_id)); |
|
97 | + $bill_times = $subscription->get_times_billed() . ' / ' . (($subscription->bill_times == 0) ? 'Until Cancelled' : $subscription->bill_times); |
|
98 | + $renewal_date = !empty($subscription->expiration) ? date_i18n(get_option('date_format'), strtotime($subscription->expiration)) : __('N/A', 'invoicing'); |
|
99 | + |
|
100 | + $props_to_export['period'] = __('Billing Cycle', 'invoicing'); |
|
101 | + $props_to_export['initial_amount'] = __('Initial Amount', 'invoicing'); |
|
102 | + $props_to_export['bill_times'] = __('Times Billed', 'invoicing'); |
|
103 | + $props_to_export['renewal_date'] = __('Renewal Date', 'invoicing'); |
|
104 | 104 | } |
105 | 105 | |
106 | - $props_to_export['ip'] = __( 'IP Address', 'invoicing' ); |
|
107 | - $props_to_export['view_url'] = __( 'Invoice Link', 'invoicing' ); |
|
106 | + $props_to_export['ip'] = __('IP Address', 'invoicing'); |
|
107 | + $props_to_export['view_url'] = __('Invoice Link', 'invoicing'); |
|
108 | 108 | |
109 | - $props_to_export = apply_filters( 'wpinv_privacy_export_invoice_personal_data_props', $props_to_export, $invoice, $subscription); |
|
109 | + $props_to_export = apply_filters('wpinv_privacy_export_invoice_personal_data_props', $props_to_export, $invoice, $subscription); |
|
110 | 110 | |
111 | - foreach ( $props_to_export as $prop => $name ) { |
|
111 | + foreach ($props_to_export as $prop => $name) { |
|
112 | 112 | $value = ''; |
113 | 113 | |
114 | - switch ( $prop ) { |
|
114 | + switch ($prop) { |
|
115 | 115 | case 'items': |
116 | 116 | $item_names = array(); |
117 | - foreach ( $invoice->get_cart_details() as $key => $cart_item ) { |
|
118 | - $item_quantity = $cart_item['quantity'] > 0 ? absint( $cart_item['quantity'] ) : 1; |
|
117 | + foreach ($invoice->get_cart_details() as $key => $cart_item) { |
|
118 | + $item_quantity = $cart_item['quantity'] > 0 ? absint($cart_item['quantity']) : 1; |
|
119 | 119 | $item_names[] = $cart_item['name'] . ' x ' . $item_quantity; |
120 | 120 | } |
121 | - $value = implode( ', ', $item_names ); |
|
121 | + $value = implode(', ', $item_names); |
|
122 | 122 | break; |
123 | 123 | case 'status': |
124 | 124 | $value = $invoice->get_status(true); |
@@ -139,7 +139,7 @@ discard block |
||
139 | 139 | $value = $renewal_date; |
140 | 140 | break; |
141 | 141 | default: |
142 | - if ( is_callable( array( $invoice, 'get_' . $prop ) ) ) { |
|
142 | + if (is_callable(array($invoice, 'get_' . $prop))) { |
|
143 | 143 | $value = $invoice->{"get_$prop"}(); |
144 | 144 | } else { |
145 | 145 | $value = $invoice->get_meta($prop); |
@@ -147,9 +147,9 @@ discard block |
||
147 | 147 | break; |
148 | 148 | } |
149 | 149 | |
150 | - $value = apply_filters( 'wpi_privacy_export_invoice_personal_data_prop', $value, $prop, $invoice ); |
|
150 | + $value = apply_filters('wpi_privacy_export_invoice_personal_data_prop', $value, $prop, $invoice); |
|
151 | 151 | |
152 | - if ( $value ) { |
|
152 | + if ($value) { |
|
153 | 153 | $personal_data[] = array( |
154 | 154 | 'name' => $name, |
155 | 155 | 'value' => $value, |
@@ -158,7 +158,7 @@ discard block |
||
158 | 158 | |
159 | 159 | } |
160 | 160 | |
161 | - $personal_data = apply_filters( 'wpinv_privacy_export_invoice_personal_data', $personal_data, $invoice ); |
|
161 | + $personal_data = apply_filters('wpinv_privacy_export_invoice_personal_data', $personal_data, $invoice); |
|
162 | 162 | |
163 | 163 | return $personal_data; |
164 | 164 |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | * Setup menus in WP admin. |
4 | 4 | */ |
5 | 5 | |
6 | -defined( 'ABSPATH' ) || exit; |
|
6 | +defined('ABSPATH') || exit; |
|
7 | 7 | |
8 | 8 | /** |
9 | 9 | * WC_Admin_Menus Class. |
@@ -13,40 +13,40 @@ discard block |
||
13 | 13 | * Hook in tabs. |
14 | 14 | */ |
15 | 15 | public function __construct() { |
16 | - add_action( 'admin_menu', array( $this, 'admin_menu' ), 10 ); |
|
17 | - add_action( 'admin_menu', array( $this, 'add_addons_menu' ), 99 ); |
|
18 | - add_action( 'admin_menu', array( $this, 'remove_admin_submenus' ), 10 ); |
|
19 | - add_action( 'admin_head-nav-menus.php', array( $this, 'add_nav_menu_meta_boxes' ) ); |
|
16 | + add_action('admin_menu', array($this, 'admin_menu'), 10); |
|
17 | + add_action('admin_menu', array($this, 'add_addons_menu'), 99); |
|
18 | + add_action('admin_menu', array($this, 'remove_admin_submenus'), 10); |
|
19 | + add_action('admin_head-nav-menus.php', array($this, 'add_nav_menu_meta_boxes')); |
|
20 | 20 | } |
21 | 21 | |
22 | 22 | public function admin_menu() { |
23 | 23 | global $menu, $submenu; |
24 | 24 | |
25 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
25 | + if (!wpinv_current_user_can_manage_invoicing()) { |
|
26 | 26 | return; |
27 | 27 | } |
28 | 28 | |
29 | - $capability = apply_filters( 'invoicing_capability', wpinv_get_capability() ); |
|
29 | + $capability = apply_filters('invoicing_capability', wpinv_get_capability()); |
|
30 | 30 | |
31 | - if ( wpinv_current_user_can_manage_invoicing() ) { |
|
32 | - $menu[] = array( '', 'read', 'separator-wpinv', '', 'wp-menu-separator wpinv' ); |
|
31 | + if (wpinv_current_user_can_manage_invoicing()) { |
|
32 | + $menu[] = array('', 'read', 'separator-wpinv', '', 'wp-menu-separator wpinv'); |
|
33 | 33 | |
34 | 34 | // Allow users with 'manage_invocing' capability to create new invoices |
35 | - $submenu['post-new.php?post_type=wpi_invoice'][] = array( '', '', 'post-new.php?post_type=wpi_invoice', '' ); |
|
36 | - $submenu['post-new.php?post_type=wpi_item'][] = array( '', '', 'post-new.php?post_type=wpi_item', '' ); |
|
37 | - $submenu['post-new.php?post_type=wpi_discount'][] = array( '', '', 'post-new.php?post_type=wpi_discount', '' ); |
|
35 | + $submenu['post-new.php?post_type=wpi_invoice'][] = array('', '', 'post-new.php?post_type=wpi_invoice', ''); |
|
36 | + $submenu['post-new.php?post_type=wpi_item'][] = array('', '', 'post-new.php?post_type=wpi_item', ''); |
|
37 | + $submenu['post-new.php?post_type=wpi_discount'][] = array('', '', 'post-new.php?post_type=wpi_discount', ''); |
|
38 | 38 | |
39 | 39 | } |
40 | 40 | |
41 | - $wpi_invoice = get_post_type_object( 'wpi_invoice' ); |
|
41 | + $wpi_invoice = get_post_type_object('wpi_invoice'); |
|
42 | 42 | |
43 | - add_menu_page( __( 'Invoicing', 'invoicing' ), __( 'Invoicing', 'invoicing' ), $capability, 'wpinv', null, $wpi_invoice->menu_icon, '54.123460' ); |
|
43 | + add_menu_page(__('Invoicing', 'invoicing'), __('Invoicing', 'invoicing'), $capability, 'wpinv', null, $wpi_invoice->menu_icon, '54.123460'); |
|
44 | 44 | |
45 | - add_submenu_page( 'wpinv', __( 'Invoice Settings', 'invoicing' ), __( 'Settings', 'invoicing' ), $capability, 'wpinv-settings', array( $this, 'options_page' )); |
|
45 | + add_submenu_page('wpinv', __('Invoice Settings', 'invoicing'), __('Settings', 'invoicing'), $capability, 'wpinv-settings', array($this, 'options_page')); |
|
46 | 46 | } |
47 | 47 | |
48 | - public function add_addons_menu(){ |
|
49 | - if ( !apply_filters( 'wpi_show_addons_page', true ) ) { |
|
48 | + public function add_addons_menu() { |
|
49 | + if (!apply_filters('wpi_show_addons_page', true)) { |
|
50 | 50 | return; |
51 | 51 | } |
52 | 52 | |
@@ -56,78 +56,78 @@ discard block |
||
56 | 56 | __('Extensions', 'invoicing'), |
57 | 57 | 'manage_options', |
58 | 58 | 'wpi-addons', |
59 | - array( $this, 'addons_page' ) |
|
59 | + array($this, 'addons_page') |
|
60 | 60 | ); |
61 | 61 | } |
62 | 62 | |
63 | - public function addons_page(){ |
|
63 | + public function addons_page() { |
|
64 | 64 | $addon_obj = new WPInv_Admin_Addons(); |
65 | 65 | $addon_obj->output(); |
66 | 66 | } |
67 | 67 | |
68 | 68 | function options_page() { |
69 | - $page = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : false; |
|
69 | + $page = isset($_GET['page']) ? strtolower($_GET['page']) : false; |
|
70 | 70 | |
71 | - if ( $page !== 'wpinv-settings' ) { |
|
71 | + if ($page !== 'wpinv-settings') { |
|
72 | 72 | return; |
73 | 73 | } |
74 | 74 | |
75 | 75 | $settings_tabs = wpinv_get_settings_tabs(); |
76 | 76 | $settings_tabs = empty($settings_tabs) ? array() : $settings_tabs; |
77 | - $active_tab = isset( $_GET['tab'] ) && array_key_exists( $_GET['tab'], $settings_tabs ) ? sanitize_text_field( $_GET['tab'] ) : 'general'; |
|
78 | - $sections = wpinv_get_settings_tab_sections( $active_tab ); |
|
77 | + $active_tab = isset($_GET['tab']) && array_key_exists($_GET['tab'], $settings_tabs) ? sanitize_text_field($_GET['tab']) : 'general'; |
|
78 | + $sections = wpinv_get_settings_tab_sections($active_tab); |
|
79 | 79 | $key = 'main'; |
80 | 80 | |
81 | - if ( is_array( $sections ) ) { |
|
82 | - $key = key( $sections ); |
|
81 | + if (is_array($sections)) { |
|
82 | + $key = key($sections); |
|
83 | 83 | } |
84 | 84 | |
85 | - $registered_sections = wpinv_get_settings_tab_sections( $active_tab ); |
|
86 | - $section = isset( $_GET['section'] ) && ! empty( $registered_sections ) && array_key_exists( $_GET['section'], $registered_sections ) ? $_GET['section'] : $key; |
|
85 | + $registered_sections = wpinv_get_settings_tab_sections($active_tab); |
|
86 | + $section = isset($_GET['section']) && !empty($registered_sections) && array_key_exists($_GET['section'], $registered_sections) ? $_GET['section'] : $key; |
|
87 | 87 | ob_start(); |
88 | 88 | ?> |
89 | 89 | <div class="wrap"> |
90 | 90 | <h1 class="nav-tab-wrapper"> |
91 | 91 | <?php |
92 | - foreach( wpinv_get_settings_tabs() as $tab_id => $tab_name ) { |
|
93 | - $tab_url = add_query_arg( array( |
|
92 | + foreach (wpinv_get_settings_tabs() as $tab_id => $tab_name) { |
|
93 | + $tab_url = add_query_arg(array( |
|
94 | 94 | 'settings-updated' => false, |
95 | 95 | 'tab' => $tab_id, |
96 | - ) ); |
|
96 | + )); |
|
97 | 97 | |
98 | 98 | // Remove the section from the tabs so we always end up at the main section |
99 | - $tab_url = remove_query_arg( 'section', $tab_url ); |
|
100 | - $tab_url = remove_query_arg( 'wpi_sub', $tab_url ); |
|
99 | + $tab_url = remove_query_arg('section', $tab_url); |
|
100 | + $tab_url = remove_query_arg('wpi_sub', $tab_url); |
|
101 | 101 | |
102 | 102 | $active = $active_tab == $tab_id ? ' nav-tab-active' : ''; |
103 | 103 | |
104 | - echo '<a href="' . esc_url( $tab_url ) . '" title="' . esc_attr( $tab_name ) . '" class="nav-tab' . $active . '">'; |
|
105 | - echo esc_html( $tab_name ); |
|
104 | + echo '<a href="' . esc_url($tab_url) . '" title="' . esc_attr($tab_name) . '" class="nav-tab' . $active . '">'; |
|
105 | + echo esc_html($tab_name); |
|
106 | 106 | echo '</a>'; |
107 | 107 | } |
108 | 108 | ?> |
109 | 109 | </h1> |
110 | 110 | <?php |
111 | - $number_of_sections = count( $sections ); |
|
111 | + $number_of_sections = count($sections); |
|
112 | 112 | $number = 0; |
113 | - if ( $number_of_sections > 1 ) { |
|
113 | + if ($number_of_sections > 1) { |
|
114 | 114 | echo '<div><ul class="subsubsub">'; |
115 | - foreach( $sections as $section_id => $section_name ) { |
|
115 | + foreach ($sections as $section_id => $section_name) { |
|
116 | 116 | echo '<li>'; |
117 | 117 | $number++; |
118 | - $tab_url = add_query_arg( array( |
|
118 | + $tab_url = add_query_arg(array( |
|
119 | 119 | 'settings-updated' => false, |
120 | 120 | 'tab' => $active_tab, |
121 | 121 | 'section' => $section_id |
122 | - ) ); |
|
123 | - $tab_url = remove_query_arg( 'wpi_sub', $tab_url ); |
|
122 | + )); |
|
123 | + $tab_url = remove_query_arg('wpi_sub', $tab_url); |
|
124 | 124 | $class = ''; |
125 | - if ( $section == $section_id ) { |
|
125 | + if ($section == $section_id) { |
|
126 | 126 | $class = 'current'; |
127 | 127 | } |
128 | - echo '<a class="' . $class . '" href="' . esc_url( $tab_url ) . '">' . $section_name . '</a>'; |
|
128 | + echo '<a class="' . $class . '" href="' . esc_url($tab_url) . '">' . $section_name . '</a>'; |
|
129 | 129 | |
130 | - if ( $number != $number_of_sections ) { |
|
130 | + if ($number != $number_of_sections) { |
|
131 | 131 | echo ' | '; |
132 | 132 | } |
133 | 133 | echo '</li>'; |
@@ -139,19 +139,19 @@ discard block |
||
139 | 139 | <form method="post" action="options.php"> |
140 | 140 | <table class="form-table"> |
141 | 141 | <?php |
142 | - settings_fields( 'wpinv_settings' ); |
|
142 | + settings_fields('wpinv_settings'); |
|
143 | 143 | |
144 | - if ( 'main' === $section ) { |
|
145 | - do_action( 'wpinv_settings_tab_top', $active_tab ); |
|
144 | + if ('main' === $section) { |
|
145 | + do_action('wpinv_settings_tab_top', $active_tab); |
|
146 | 146 | } |
147 | 147 | |
148 | - do_action( 'wpinv_settings_tab_top_' . $active_tab . '_' . $section, $active_tab, $section ); |
|
149 | - do_settings_sections( 'wpinv_settings_' . $active_tab . '_' . $section, $active_tab, $section ); |
|
150 | - do_action( 'wpinv_settings_tab_bottom_' . $active_tab . '_' . $section, $active_tab, $section ); |
|
148 | + do_action('wpinv_settings_tab_top_' . $active_tab . '_' . $section, $active_tab, $section); |
|
149 | + do_settings_sections('wpinv_settings_' . $active_tab . '_' . $section, $active_tab, $section); |
|
150 | + do_action('wpinv_settings_tab_bottom_' . $active_tab . '_' . $section, $active_tab, $section); |
|
151 | 151 | |
152 | 152 | // For backwards compatibility |
153 | - if ( 'main' === $section ) { |
|
154 | - do_action( 'wpinv_settings_tab_bottom', $active_tab ); |
|
153 | + if ('main' === $section) { |
|
154 | + do_action('wpinv_settings_tab_bottom', $active_tab); |
|
155 | 155 | } |
156 | 156 | ?> |
157 | 157 | </table> |
@@ -165,18 +165,18 @@ discard block |
||
165 | 165 | } |
166 | 166 | |
167 | 167 | public function remove_admin_submenus() { |
168 | - remove_submenu_page( 'edit.php?post_type=wpi_invoice', 'post-new.php?post_type=wpi_invoice' ); |
|
168 | + remove_submenu_page('edit.php?post_type=wpi_invoice', 'post-new.php?post_type=wpi_invoice'); |
|
169 | 169 | } |
170 | 170 | |
171 | - public function add_nav_menu_meta_boxes(){ |
|
172 | - add_meta_box( 'wpinv_endpoints_nav_link', __( 'Invoicing Pages', 'invoicing' ), array( $this, 'nav_menu_links' ), 'nav-menus', 'side', 'low' ); |
|
171 | + public function add_nav_menu_meta_boxes() { |
|
172 | + add_meta_box('wpinv_endpoints_nav_link', __('Invoicing Pages', 'invoicing'), array($this, 'nav_menu_links'), 'nav-menus', 'side', 'low'); |
|
173 | 173 | } |
174 | 174 | |
175 | - public function nav_menu_links(){ |
|
175 | + public function nav_menu_links() { |
|
176 | 176 | $endpoints = $this->get_menu_items(); |
177 | 177 | ?> |
178 | 178 | <div id="invoicing-endpoints" class="posttypediv"> |
179 | - <?php if(!empty($endpoints['pages'])){ ?> |
|
179 | + <?php if (!empty($endpoints['pages'])) { ?> |
|
180 | 180 | <div id="tabs-panel-invoicing-endpoints" class="tabs-panel tabs-panel-active"> |
181 | 181 | <ul id="invoicing-endpoints-checklist" class="categorychecklist form-no-clear"> |
182 | 182 | <?php |
@@ -188,29 +188,29 @@ discard block |
||
188 | 188 | <?php } ?> |
189 | 189 | <p class="button-controls"> |
190 | 190 | <span class="list-controls"> |
191 | - <a href="<?php echo admin_url( 'nav-menus.php?page-tab=all&selectall=1#invoicing-endpoints' ); ?>" class="select-all"><?php _e( 'Select all', 'invoicing' ); ?></a> |
|
191 | + <a href="<?php echo admin_url('nav-menus.php?page-tab=all&selectall=1#invoicing-endpoints'); ?>" class="select-all"><?php _e('Select all', 'invoicing'); ?></a> |
|
192 | 192 | </span> |
193 | 193 | <span class="add-to-menu"> |
194 | - <input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to menu', 'invoicing' ); ?>" name="add-post-type-menu-item" id="submit-invoicing-endpoints"> |
|
194 | + <input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to menu', 'invoicing'); ?>" name="add-post-type-menu-item" id="submit-invoicing-endpoints"> |
|
195 | 195 | <span class="spinner"></span> |
196 | 196 | </span> |
197 | 197 | </p> |
198 | 198 | <?php |
199 | 199 | } |
200 | 200 | |
201 | - public function get_menu_items(){ |
|
201 | + public function get_menu_items() { |
|
202 | 202 | $items = array(); |
203 | 203 | |
204 | - $wpinv_history_page_id = (int)wpinv_get_option( 'invoice_history_page' ); |
|
205 | - if($wpinv_history_page_id > 0){ |
|
204 | + $wpinv_history_page_id = (int) wpinv_get_option('invoice_history_page'); |
|
205 | + if ($wpinv_history_page_id > 0) { |
|
206 | 206 | $item = new stdClass(); |
207 | 207 | $item->object_id = $wpinv_history_page_id; |
208 | 208 | $item->db_id = 0; |
209 | - $item->object = 'page'; |
|
209 | + $item->object = 'page'; |
|
210 | 210 | $item->menu_item_parent = 0; |
211 | 211 | $item->type = 'post_type'; |
212 | - $item->title = __('Invoice History Page','invoicing'); |
|
213 | - $item->url = get_permalink( $wpinv_history_page_id ); |
|
212 | + $item->title = __('Invoice History Page', 'invoicing'); |
|
213 | + $item->url = get_permalink($wpinv_history_page_id); |
|
214 | 214 | $item->target = ''; |
215 | 215 | $item->attr_title = ''; |
216 | 216 | $item->classes = array('wpinv-menu-item'); |
@@ -219,16 +219,16 @@ discard block |
||
219 | 219 | $items['pages'][] = $item; |
220 | 220 | } |
221 | 221 | |
222 | - $wpinv_sub_history_page_id = (int)wpinv_get_option( 'invoice_subscription_page' ); |
|
223 | - if($wpinv_sub_history_page_id > 0){ |
|
222 | + $wpinv_sub_history_page_id = (int) wpinv_get_option('invoice_subscription_page'); |
|
223 | + if ($wpinv_sub_history_page_id > 0) { |
|
224 | 224 | $item = new stdClass(); |
225 | 225 | $item->object_id = $wpinv_sub_history_page_id; |
226 | 226 | $item->db_id = 0; |
227 | - $item->object = 'page'; |
|
227 | + $item->object = 'page'; |
|
228 | 228 | $item->menu_item_parent = 0; |
229 | 229 | $item->type = 'post_type'; |
230 | - $item->title = __('Invoice Subscriptions Page','invoicing'); |
|
231 | - $item->url = get_permalink( $wpinv_sub_history_page_id ); |
|
230 | + $item->title = __('Invoice Subscriptions Page', 'invoicing'); |
|
231 | + $item->url = get_permalink($wpinv_sub_history_page_id); |
|
232 | 232 | $item->target = ''; |
233 | 233 | $item->attr_title = ''; |
234 | 234 | $item->classes = array('wpinv-menu-item'); |
@@ -237,16 +237,16 @@ discard block |
||
237 | 237 | $items['pages'][] = $item; |
238 | 238 | } |
239 | 239 | |
240 | - $wpinv_checkout_page_id = (int)wpinv_get_option( 'checkout_page' ); |
|
241 | - if($wpinv_checkout_page_id > 0){ |
|
240 | + $wpinv_checkout_page_id = (int) wpinv_get_option('checkout_page'); |
|
241 | + if ($wpinv_checkout_page_id > 0) { |
|
242 | 242 | $item = new stdClass(); |
243 | 243 | $item->object_id = $wpinv_checkout_page_id; |
244 | 244 | $item->db_id = 0; |
245 | - $item->object = 'page'; |
|
245 | + $item->object = 'page'; |
|
246 | 246 | $item->menu_item_parent = 0; |
247 | 247 | $item->type = 'post_type'; |
248 | - $item->title = __('Checkout Page','invoicing'); |
|
249 | - $item->url = get_permalink( $wpinv_checkout_page_id ); |
|
248 | + $item->title = __('Checkout Page', 'invoicing'); |
|
249 | + $item->url = get_permalink($wpinv_checkout_page_id); |
|
250 | 250 | $item->target = ''; |
251 | 251 | $item->attr_title = ''; |
252 | 252 | $item->classes = array('wpinv-menu-item'); |
@@ -255,16 +255,16 @@ discard block |
||
255 | 255 | $items['pages'][] = $item; |
256 | 256 | } |
257 | 257 | |
258 | - $wpinv_tandc_page_id = (int)wpinv_get_option( 'tandc_page' ); |
|
259 | - if($wpinv_tandc_page_id > 0){ |
|
258 | + $wpinv_tandc_page_id = (int) wpinv_get_option('tandc_page'); |
|
259 | + if ($wpinv_tandc_page_id > 0) { |
|
260 | 260 | $item = new stdClass(); |
261 | 261 | $item->object_id = $wpinv_tandc_page_id; |
262 | 262 | $item->db_id = 0; |
263 | - $item->object = 'page'; |
|
263 | + $item->object = 'page'; |
|
264 | 264 | $item->menu_item_parent = 0; |
265 | 265 | $item->type = 'post_type'; |
266 | - $item->title = __('Terms & Conditions','invoicing'); |
|
267 | - $item->url = get_permalink( $wpinv_tandc_page_id ); |
|
266 | + $item->title = __('Terms & Conditions', 'invoicing'); |
|
267 | + $item->url = get_permalink($wpinv_tandc_page_id); |
|
268 | 268 | $item->target = ''; |
269 | 269 | $item->attr_title = ''; |
270 | 270 | $item->classes = array('wpinv-menu-item'); |
@@ -273,16 +273,16 @@ discard block |
||
273 | 273 | $items['pages'][] = $item; |
274 | 274 | } |
275 | 275 | |
276 | - $wpinv_success_page_id = (int)wpinv_get_option( 'success_page' ); |
|
277 | - if($wpinv_success_page_id > 0){ |
|
276 | + $wpinv_success_page_id = (int) wpinv_get_option('success_page'); |
|
277 | + if ($wpinv_success_page_id > 0) { |
|
278 | 278 | $item = new stdClass(); |
279 | 279 | $item->object_id = $wpinv_success_page_id; |
280 | 280 | $item->db_id = 0; |
281 | - $item->object = 'page'; |
|
281 | + $item->object = 'page'; |
|
282 | 282 | $item->menu_item_parent = 0; |
283 | 283 | $item->type = 'post_type'; |
284 | - $item->title = __('Success Page','invoicing'); |
|
285 | - $item->url = get_permalink( $wpinv_success_page_id ); |
|
284 | + $item->title = __('Success Page', 'invoicing'); |
|
285 | + $item->url = get_permalink($wpinv_success_page_id); |
|
286 | 286 | $item->target = ''; |
287 | 287 | $item->attr_title = ''; |
288 | 288 | $item->classes = array('wpinv-menu-item'); |
@@ -291,16 +291,16 @@ discard block |
||
291 | 291 | $items['pages'][] = $item; |
292 | 292 | } |
293 | 293 | |
294 | - $wpinv_failure_page_id = (int)wpinv_get_option( 'failure_page' ); |
|
295 | - if($wpinv_failure_page_id > 0){ |
|
294 | + $wpinv_failure_page_id = (int) wpinv_get_option('failure_page'); |
|
295 | + if ($wpinv_failure_page_id > 0) { |
|
296 | 296 | $item = new stdClass(); |
297 | 297 | $item->object_id = $wpinv_failure_page_id; |
298 | 298 | $item->db_id = 0; |
299 | - $item->object = 'page'; |
|
299 | + $item->object = 'page'; |
|
300 | 300 | $item->menu_item_parent = 0; |
301 | 301 | $item->type = 'post_type'; |
302 | - $item->title = __('Failed Transaction Page','invoicing'); |
|
303 | - $item->url = get_permalink( $wpinv_failure_page_id ); |
|
302 | + $item->title = __('Failed Transaction Page', 'invoicing'); |
|
303 | + $item->url = get_permalink($wpinv_failure_page_id); |
|
304 | 304 | $item->target = ''; |
305 | 305 | $item->attr_title = ''; |
306 | 306 | $item->classes = array('wpinv-menu-item'); |
@@ -309,7 +309,7 @@ discard block |
||
309 | 309 | $items['pages'][] = $item; |
310 | 310 | } |
311 | 311 | |
312 | - return apply_filters( 'wpinv_menu_items', $items ); |
|
312 | + return apply_filters('wpinv_menu_items', $items); |
|
313 | 313 | } |
314 | 314 | |
315 | 315 | } |
@@ -38,29 +38,29 @@ discard block |
||
38 | 38 | 'advanced' => false |
39 | 39 | ), |
40 | 40 | 'items' => array( |
41 | - 'title' => __( 'Items to buy', 'invoicing' ), |
|
42 | - 'desc' => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ), |
|
43 | - 'type' => 'text', |
|
44 | - 'desc_tip' => true, |
|
45 | - 'default' => '', |
|
46 | - 'placeholder' => __('Items to buy','invoicing'), |
|
47 | - 'advanced' => false |
|
41 | + 'title' => __( 'Items to buy', 'invoicing' ), |
|
42 | + 'desc' => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ), |
|
43 | + 'type' => 'text', |
|
44 | + 'desc_tip' => true, |
|
45 | + 'default' => '', |
|
46 | + 'placeholder' => __('Items to buy','invoicing'), |
|
47 | + 'advanced' => false |
|
48 | 48 | ), |
49 | 49 | 'label' => array( |
50 | - 'title' => __( 'Button Label', 'invoicing' ), |
|
51 | - 'desc' => __( 'Enter button label. Default "Buy Now".', 'invoicing' ), |
|
52 | - 'type' => 'text', |
|
53 | - 'desc_tip' => true, |
|
54 | - 'default' => __( 'Buy Now', 'invoicing' ), |
|
55 | - 'advanced' => false |
|
50 | + 'title' => __( 'Button Label', 'invoicing' ), |
|
51 | + 'desc' => __( 'Enter button label. Default "Buy Now".', 'invoicing' ), |
|
52 | + 'type' => 'text', |
|
53 | + 'desc_tip' => true, |
|
54 | + 'default' => __( 'Buy Now', 'invoicing' ), |
|
55 | + 'advanced' => false |
|
56 | 56 | ), |
57 | 57 | 'post_id' => array( |
58 | - 'title' => __( 'Post ID', 'invoicing' ), |
|
59 | - 'desc' => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ), |
|
60 | - 'type' => 'number', |
|
61 | - 'desc_tip' => true, |
|
62 | - 'default' => '', |
|
63 | - 'advanced' => true |
|
58 | + 'title' => __( 'Post ID', 'invoicing' ), |
|
59 | + 'desc' => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ), |
|
60 | + 'type' => 'number', |
|
61 | + 'desc_tip' => true, |
|
62 | + 'default' => '', |
|
63 | + 'advanced' => true |
|
64 | 64 | ), |
65 | 65 | ) |
66 | 66 | |
@@ -70,43 +70,43 @@ discard block |
||
70 | 70 | parent::__construct( $options ); |
71 | 71 | } |
72 | 72 | |
73 | - /** |
|
74 | - * The Super block output function. |
|
75 | - * |
|
76 | - * @param array $args |
|
77 | - * @param array $widget_args |
|
78 | - * @param string $content |
|
79 | - * |
|
80 | - * @return string |
|
81 | - */ |
|
73 | + /** |
|
74 | + * The Super block output function. |
|
75 | + * |
|
76 | + * @param array $args |
|
77 | + * @param array $widget_args |
|
78 | + * @param string $content |
|
79 | + * |
|
80 | + * @return string |
|
81 | + */ |
|
82 | 82 | public function output( $args = array(), $widget_args = array(), $content = '' ) { |
83 | 83 | |
84 | - $defaults = array( |
|
85 | - 'items' => '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity |
|
86 | - 'label' => __( 'Buy Now', 'invoicing' ), // the button title |
|
87 | - 'post_id' => '', // any related post_id |
|
88 | - ); |
|
84 | + $defaults = array( |
|
85 | + 'items' => '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity |
|
86 | + 'label' => __( 'Buy Now', 'invoicing' ), // the button title |
|
87 | + 'post_id' => '', // any related post_id |
|
88 | + ); |
|
89 | 89 | |
90 | - /** |
|
91 | - * Parse incoming $args into an array and merge it with $defaults |
|
92 | - */ |
|
93 | - $args = wp_parse_args( $args, $defaults ); |
|
90 | + /** |
|
91 | + * Parse incoming $args into an array and merge it with $defaults |
|
92 | + */ |
|
93 | + $args = wp_parse_args( $args, $defaults ); |
|
94 | 94 | |
95 | - $html = '<div class="wpi-buy-button-wrapper wpi-g">'; |
|
95 | + $html = '<div class="wpi-buy-button-wrapper wpi-g">'; |
|
96 | 96 | |
97 | - if ( empty( $args['items'] ) ) { |
|
98 | - $html .= __( 'No items selected', 'invoicing' ); |
|
99 | - } else { |
|
100 | - $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0; |
|
101 | - $label = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' ); |
|
102 | - $items = esc_attr( $args['items'] ); |
|
103 | - $html .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>"; |
|
104 | - } |
|
97 | + if ( empty( $args['items'] ) ) { |
|
98 | + $html .= __( 'No items selected', 'invoicing' ); |
|
99 | + } else { |
|
100 | + $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0; |
|
101 | + $label = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' ); |
|
102 | + $items = esc_attr( $args['items'] ); |
|
103 | + $html .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>"; |
|
104 | + } |
|
105 | 105 | |
106 | - $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false ); |
|
107 | - $html .= '</div>'; |
|
106 | + $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false ); |
|
107 | + $html .= '</div>'; |
|
108 | 108 | |
109 | - return $html; |
|
109 | + return $html; |
|
110 | 110 | |
111 | 111 | } |
112 | 112 |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if (!defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -23,40 +23,40 @@ discard block |
||
23 | 23 | 'block-keywords'=> "['invoicing','buy', 'buy item']", |
24 | 24 | 'class_name' => __CLASS__, |
25 | 25 | 'base_id' => 'wpinv_buy', |
26 | - 'name' => __('Invoicing > Buy Item Button','invoicing'), |
|
26 | + 'name' => __('Invoicing > Buy Item Button', 'invoicing'), |
|
27 | 27 | 'widget_ops' => array( |
28 | 28 | 'classname' => 'wpinv-buy-item-class wpi-g', |
29 | - 'description' => esc_html__('Displays buy invoicing item button.','invoicing'), |
|
29 | + 'description' => esc_html__('Displays buy invoicing item button.', 'invoicing'), |
|
30 | 30 | ), |
31 | 31 | 'arguments' => array( |
32 | 32 | 'title' => array( |
33 | - 'title' => __( 'Widget title', 'invoicing' ), |
|
34 | - 'desc' => __( 'Enter widget title.', 'invoicing' ), |
|
33 | + 'title' => __('Widget title', 'invoicing'), |
|
34 | + 'desc' => __('Enter widget title.', 'invoicing'), |
|
35 | 35 | 'type' => 'text', |
36 | 36 | 'desc_tip' => true, |
37 | 37 | 'default' => '', |
38 | 38 | 'advanced' => false |
39 | 39 | ), |
40 | 40 | 'items' => array( |
41 | - 'title' => __( 'Items to buy', 'invoicing' ), |
|
42 | - 'desc' => __( 'Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing' ), |
|
41 | + 'title' => __('Items to buy', 'invoicing'), |
|
42 | + 'desc' => __('Enter comma separated list of invoicing item id and quantity (item_id|quantity). Ex. 101|2 ', 'invoicing'), |
|
43 | 43 | 'type' => 'text', |
44 | 44 | 'desc_tip' => true, |
45 | 45 | 'default' => '', |
46 | - 'placeholder' => __('Items to buy','invoicing'), |
|
46 | + 'placeholder' => __('Items to buy', 'invoicing'), |
|
47 | 47 | 'advanced' => false |
48 | 48 | ), |
49 | 49 | 'label' => array( |
50 | - 'title' => __( 'Button Label', 'invoicing' ), |
|
51 | - 'desc' => __( 'Enter button label. Default "Buy Now".', 'invoicing' ), |
|
50 | + 'title' => __('Button Label', 'invoicing'), |
|
51 | + 'desc' => __('Enter button label. Default "Buy Now".', 'invoicing'), |
|
52 | 52 | 'type' => 'text', |
53 | 53 | 'desc_tip' => true, |
54 | - 'default' => __( 'Buy Now', 'invoicing' ), |
|
54 | + 'default' => __('Buy Now', 'invoicing'), |
|
55 | 55 | 'advanced' => false |
56 | 56 | ), |
57 | 57 | 'post_id' => array( |
58 | - 'title' => __( 'Post ID', 'invoicing' ), |
|
59 | - 'desc' => __( 'Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing' ), |
|
58 | + 'title' => __('Post ID', 'invoicing'), |
|
59 | + 'desc' => __('Enter related post ID. This is for 3rd party add ons and not mandatory field.', 'invoicing'), |
|
60 | 60 | 'type' => 'number', |
61 | 61 | 'desc_tip' => true, |
62 | 62 | 'default' => '', |
@@ -67,7 +67,7 @@ discard block |
||
67 | 67 | ); |
68 | 68 | |
69 | 69 | |
70 | - parent::__construct( $options ); |
|
70 | + parent::__construct($options); |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -79,31 +79,31 @@ discard block |
||
79 | 79 | * |
80 | 80 | * @return string |
81 | 81 | */ |
82 | - public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
82 | + public function output($args = array(), $widget_args = array(), $content = '') { |
|
83 | 83 | |
84 | 84 | $defaults = array( |
85 | 85 | 'items' => '', // should be used like: item_id|quantity,item_id|quantity,item_id|quantity |
86 | - 'label' => __( 'Buy Now', 'invoicing' ), // the button title |
|
86 | + 'label' => __('Buy Now', 'invoicing'), // the button title |
|
87 | 87 | 'post_id' => '', // any related post_id |
88 | 88 | ); |
89 | 89 | |
90 | 90 | /** |
91 | 91 | * Parse incoming $args into an array and merge it with $defaults |
92 | 92 | */ |
93 | - $args = wp_parse_args( $args, $defaults ); |
|
93 | + $args = wp_parse_args($args, $defaults); |
|
94 | 94 | |
95 | 95 | $html = '<div class="wpi-buy-button-wrapper wpi-g">'; |
96 | 96 | |
97 | - if ( empty( $args['items'] ) ) { |
|
98 | - $html .= __( 'No items selected', 'invoicing' ); |
|
97 | + if (empty($args['items'])) { |
|
98 | + $html .= __('No items selected', 'invoicing'); |
|
99 | 99 | } else { |
100 | - $post_id = isset( $args['post_id'] ) && is_numeric( $args['post_id'] ) ? sanitize_text_field( $args['post_id'] ) : 0; |
|
101 | - $label = isset( $args['label'] ) ? sanitize_text_field( $args['label'] ) : __( 'Buy Now', 'invoicing' ); |
|
102 | - $items = esc_attr( $args['items'] ); |
|
100 | + $post_id = isset($args['post_id']) && is_numeric($args['post_id']) ? sanitize_text_field($args['post_id']) : 0; |
|
101 | + $label = isset($args['label']) ? sanitize_text_field($args['label']) : __('Buy Now', 'invoicing'); |
|
102 | + $items = esc_attr($args['items']); |
|
103 | 103 | $html .= "<button class='button button-primary wpi-buy-button' type='button' onclick=\"wpi_buy(this, '$items','$post_id');\">$label</button>"; |
104 | 104 | } |
105 | 105 | |
106 | - $html .= wp_nonce_field( 'wpinv_buy_items', 'wpinv_buy_nonce', true, false ); |
|
106 | + $html .= wp_nonce_field('wpinv_buy_items', 'wpinv_buy_nonce', true, false); |
|
107 | 107 | $html .= '</div>'; |
108 | 108 | |
109 | 109 | return $html; |
@@ -12,19 +12,19 @@ |
||
12 | 12 | */ |
13 | 13 | |
14 | 14 | // MUST have WordPress. |
15 | -if ( !defined( 'WPINC' ) ) { |
|
16 | - exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) ); |
|
15 | +if (!defined('WPINC')) { |
|
16 | + exit('Do NOT access this file directly: ' . basename(__FILE__)); |
|
17 | 17 | } |
18 | 18 | |
19 | -if ( !defined( 'WPINV_VERSION' ) ) { |
|
20 | - define( 'WPINV_VERSION', '1.0.14' ); |
|
19 | +if (!defined('WPINV_VERSION')) { |
|
20 | + define('WPINV_VERSION', '1.0.14'); |
|
21 | 21 | } |
22 | 22 | |
23 | -if ( !defined( 'WPINV_PLUGIN_FILE' ) ) { |
|
24 | - define( 'WPINV_PLUGIN_FILE', __FILE__ ); |
|
23 | +if (!defined('WPINV_PLUGIN_FILE')) { |
|
24 | + define('WPINV_PLUGIN_FILE', __FILE__); |
|
25 | 25 | } |
26 | 26 | |
27 | -require plugin_dir_path( __FILE__ ) . 'includes/class-wpinv.php'; |
|
27 | +require plugin_dir_path(__FILE__) . 'includes/class-wpinv.php'; |
|
28 | 28 | |
29 | 29 | function wpinv_run() { |
30 | 30 | global $invoicing; |
@@ -20,31 +20,31 @@ discard block |
||
20 | 20 | class WPInv_REST_Invoice_Controller extends WP_REST_Posts_Controller { |
21 | 21 | |
22 | 22 | /** |
23 | - * Post type. |
|
24 | - * |
|
25 | - * @var string |
|
26 | - */ |
|
27 | - protected $post_type = 'wpi_invoice'; |
|
23 | + * Post type. |
|
24 | + * |
|
25 | + * @var string |
|
26 | + */ |
|
27 | + protected $post_type = 'wpi_invoice'; |
|
28 | 28 | |
29 | - /** |
|
30 | - * Cached results of get_item_schema. |
|
31 | - * |
|
32 | - * @since 1.0.13 |
|
33 | - * @var array |
|
34 | - */ |
|
35 | - protected $schema; |
|
29 | + /** |
|
30 | + * Cached results of get_item_schema. |
|
31 | + * |
|
32 | + * @since 1.0.13 |
|
33 | + * @var array |
|
34 | + */ |
|
35 | + protected $schema; |
|
36 | 36 | |
37 | 37 | /** |
38 | - * Constructor. |
|
39 | - * |
|
40 | - * @since 1.0.13 |
|
41 | - * |
|
42 | - * @param string $namespace Api Namespace |
|
43 | - */ |
|
44 | - public function __construct( $namespace ) { |
|
38 | + * Constructor. |
|
39 | + * |
|
40 | + * @since 1.0.13 |
|
41 | + * |
|
42 | + * @param string $namespace Api Namespace |
|
43 | + */ |
|
44 | + public function __construct( $namespace ) { |
|
45 | 45 | |
46 | 46 | // Set api namespace... |
47 | - $this->namespace = $namespace; |
|
47 | + $this->namespace = $namespace; |
|
48 | 48 | |
49 | 49 | // ... and the rest base |
50 | 50 | $this->rest_base = 'invoices'; |
@@ -52,79 +52,79 @@ discard block |
||
52 | 52 | } |
53 | 53 | |
54 | 54 | /** |
55 | - * Checks if a given request has access to read invoices. |
|
55 | + * Checks if a given request has access to read invoices. |
|
56 | 56 | * |
57 | - * |
|
58 | - * @since 1.0.13 |
|
59 | - * |
|
60 | - * @param WP_REST_Request $request Full details about the request. |
|
61 | - * @return true|WP_Error True if the request has read access, WP_Error object otherwise. |
|
62 | - */ |
|
63 | - public function get_items_permissions_check( $request ) { |
|
57 | + * |
|
58 | + * @since 1.0.13 |
|
59 | + * |
|
60 | + * @param WP_REST_Request $request Full details about the request. |
|
61 | + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. |
|
62 | + */ |
|
63 | + public function get_items_permissions_check( $request ) { |
|
64 | 64 | |
65 | 65 | $post_type = get_post_type_object( $this->post_type ); |
66 | 66 | |
67 | - if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { |
|
68 | - return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
69 | - } |
|
67 | + if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { |
|
68 | + return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
69 | + } |
|
70 | 70 | |
71 | - if ( ! is_user_logged_in() ) { |
|
72 | - return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
73 | - } |
|
71 | + if ( ! is_user_logged_in() ) { |
|
72 | + return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
73 | + } |
|
74 | 74 | |
75 | - // Read checks will be evaluated on a per invoice basis |
|
75 | + // Read checks will be evaluated on a per invoice basis |
|
76 | 76 | |
77 | - return true; |
|
77 | + return true; |
|
78 | 78 | |
79 | 79 | } |
80 | 80 | |
81 | 81 | /** |
82 | - * Retrieves a collection of invoices. |
|
83 | - * |
|
84 | - * @since 1.0.13 |
|
85 | - * |
|
86 | - * @param WP_REST_Request $request Full details about the request. |
|
87 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
88 | - */ |
|
89 | - public function get_items( $request ) { |
|
82 | + * Retrieves a collection of invoices. |
|
83 | + * |
|
84 | + * @since 1.0.13 |
|
85 | + * |
|
86 | + * @param WP_REST_Request $request Full details about the request. |
|
87 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
88 | + */ |
|
89 | + public function get_items( $request ) { |
|
90 | 90 | |
91 | - // Retrieve request query parameters. |
|
92 | - $args = $this->get_request_collection_params( $request ); |
|
91 | + // Retrieve request query parameters. |
|
92 | + $args = $this->get_request_collection_params( $request ); |
|
93 | 93 | |
94 | - // WP_Query Args. |
|
95 | - $wp_query_args = $this->get_collection_wp_query_params( $args, $request ); |
|
94 | + // WP_Query Args. |
|
95 | + $wp_query_args = $this->get_collection_wp_query_params( $args, $request ); |
|
96 | 96 | |
97 | - // Get invoice ids... |
|
98 | - $query = new WP_Query( $wp_query_args ); |
|
99 | - |
|
100 | - // ... and map them into invoice objects. |
|
101 | - $_invoices = array_map( array( $this, 'get_post' ), $query->posts ); |
|
102 | - |
|
103 | - // Prepare the retrieved invoices |
|
104 | - $invoices = array(); |
|
105 | - |
|
106 | - foreach( $_invoices as $invoice ) { |
|
107 | - if ( $this->check_read_permission( $invoice ) ) { |
|
108 | - $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) ); |
|
109 | - } |
|
110 | - } |
|
111 | - |
|
112 | - // Prepare the response. |
|
113 | - $response = rest_ensure_response( $invoices ); |
|
114 | - $response->header( 'X-WP-Total', (int) $query->found_posts ); |
|
115 | - $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages ); |
|
116 | - |
|
117 | - /** |
|
118 | - * Filters the responses for invoices requests. |
|
119 | - * |
|
120 | - * |
|
121 | - * @since 1.0.13 |
|
122 | - * |
|
123 | - * |
|
124 | - * @param arrWP_REST_Response $response Response object. |
|
125 | - * @param WP_REST_Request $request The request used. |
|
97 | + // Get invoice ids... |
|
98 | + $query = new WP_Query( $wp_query_args ); |
|
99 | + |
|
100 | + // ... and map them into invoice objects. |
|
101 | + $_invoices = array_map( array( $this, 'get_post' ), $query->posts ); |
|
102 | + |
|
103 | + // Prepare the retrieved invoices |
|
104 | + $invoices = array(); |
|
105 | + |
|
106 | + foreach( $_invoices as $invoice ) { |
|
107 | + if ( $this->check_read_permission( $invoice ) ) { |
|
108 | + $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) ); |
|
109 | + } |
|
110 | + } |
|
111 | + |
|
112 | + // Prepare the response. |
|
113 | + $response = rest_ensure_response( $invoices ); |
|
114 | + $response->header( 'X-WP-Total', (int) $query->found_posts ); |
|
115 | + $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages ); |
|
116 | + |
|
117 | + /** |
|
118 | + * Filters the responses for invoices requests. |
|
119 | + * |
|
120 | + * |
|
121 | + * @since 1.0.13 |
|
122 | + * |
|
123 | + * |
|
124 | + * @param arrWP_REST_Response $response Response object. |
|
125 | + * @param WP_REST_Request $request The request used. |
|
126 | 126 | * @param array $args Array of args used to retrieve the invoices |
127 | - */ |
|
127 | + */ |
|
128 | 128 | $response = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args ); |
129 | 129 | |
130 | 130 | return rest_ensure_response( $response ); |
@@ -132,25 +132,25 @@ discard block |
||
132 | 132 | } |
133 | 133 | |
134 | 134 | /** |
135 | - * Get the post, if the ID is valid. |
|
136 | - * |
|
137 | - * @since 1.0.13 |
|
138 | - * |
|
139 | - * @param int $invoice_id Supplied ID. |
|
140 | - * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise. |
|
141 | - */ |
|
142 | - protected function get_post( $invoice_id ) { |
|
135 | + * Get the post, if the ID is valid. |
|
136 | + * |
|
137 | + * @since 1.0.13 |
|
138 | + * |
|
139 | + * @param int $invoice_id Supplied ID. |
|
140 | + * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise. |
|
141 | + */ |
|
142 | + protected function get_post( $invoice_id ) { |
|
143 | 143 | |
144 | - $error = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) ); |
|
144 | + $error = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) ); |
|
145 | 145 | |
146 | 146 | // Ids start from 1 |
147 | 147 | if ( (int) $invoice_id <= 0 ) { |
148 | - return $error; |
|
149 | - } |
|
148 | + return $error; |
|
149 | + } |
|
150 | 150 | |
151 | - $invoice = wpinv_get_invoice( (int) $invoice_id ); |
|
152 | - if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) { |
|
153 | - return $error; |
|
151 | + $invoice = wpinv_get_invoice( (int) $invoice_id ); |
|
152 | + if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) { |
|
153 | + return $error; |
|
154 | 154 | } |
155 | 155 | |
156 | 156 | return $invoice; |
@@ -158,77 +158,77 @@ discard block |
||
158 | 158 | } |
159 | 159 | |
160 | 160 | /** |
161 | - * Checks if a given request has access to read an invoice. |
|
162 | - * |
|
163 | - * @since 1.0.13 |
|
164 | - * |
|
165 | - * @param WP_REST_Request $request Full details about the request. |
|
166 | - * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise. |
|
167 | - */ |
|
168 | - public function get_item_permissions_check( $request ) { |
|
161 | + * Checks if a given request has access to read an invoice. |
|
162 | + * |
|
163 | + * @since 1.0.13 |
|
164 | + * |
|
165 | + * @param WP_REST_Request $request Full details about the request. |
|
166 | + * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise. |
|
167 | + */ |
|
168 | + public function get_item_permissions_check( $request ) { |
|
169 | 169 | |
170 | 170 | // Retrieve the invoice object. |
171 | 171 | $invoice = $this->get_post( $request['id'] ); |
172 | 172 | |
173 | 173 | // Ensure it is valid. |
174 | - if ( is_wp_error( $invoice ) ) { |
|
175 | - return $invoice; |
|
176 | - } |
|
174 | + if ( is_wp_error( $invoice ) ) { |
|
175 | + return $invoice; |
|
176 | + } |
|
177 | 177 | |
178 | - if ( $invoice ) { |
|
179 | - return $this->check_read_permission( $invoice ); |
|
180 | - } |
|
178 | + if ( $invoice ) { |
|
179 | + return $this->check_read_permission( $invoice ); |
|
180 | + } |
|
181 | 181 | |
182 | - return true; |
|
182 | + return true; |
|
183 | 183 | } |
184 | 184 | |
185 | 185 | /** |
186 | - * Checks if an invoice can be read. |
|
187 | - * |
|
188 | - * An invoice can be read by site admins and owners of the invoice |
|
189 | - * |
|
190 | - * |
|
191 | - * @since 1.0.13 |
|
192 | - * |
|
193 | - * @param WPInv_Invoice $invoice WPInv_Invoice object. |
|
194 | - * @return bool Whether the post can be read. |
|
195 | - */ |
|
196 | - public function check_read_permission( $invoice ) { |
|
197 | - return wpinv_user_can_view_invoice( $invoice->ID ); |
|
186 | + * Checks if an invoice can be read. |
|
187 | + * |
|
188 | + * An invoice can be read by site admins and owners of the invoice |
|
189 | + * |
|
190 | + * |
|
191 | + * @since 1.0.13 |
|
192 | + * |
|
193 | + * @param WPInv_Invoice $invoice WPInv_Invoice object. |
|
194 | + * @return bool Whether the post can be read. |
|
195 | + */ |
|
196 | + public function check_read_permission( $invoice ) { |
|
197 | + return wpinv_user_can_view_invoice( $invoice->ID ); |
|
198 | 198 | } |
199 | 199 | |
200 | 200 | /** |
201 | - * Retrieves a single invoice. |
|
202 | - * |
|
203 | - * @since 1.0.13 |
|
204 | - * |
|
205 | - * @param WP_REST_Request $request Full details about the request. |
|
206 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
207 | - */ |
|
208 | - public function get_item( $request ) { |
|
201 | + * Retrieves a single invoice. |
|
202 | + * |
|
203 | + * @since 1.0.13 |
|
204 | + * |
|
205 | + * @param WP_REST_Request $request Full details about the request. |
|
206 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
207 | + */ |
|
208 | + public function get_item( $request ) { |
|
209 | 209 | |
210 | 210 | // Fetch the invoice. |
211 | 211 | $invoice = $this->get_post( $request['id'] ); |
212 | 212 | |
213 | 213 | // Abort early if it does not exist |
214 | - if ( is_wp_error( $invoice ) ) { |
|
215 | - return $invoice; |
|
216 | - } |
|
217 | - |
|
218 | - // Prepare the response |
|
219 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
220 | - $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) ); |
|
221 | - |
|
222 | - /** |
|
223 | - * Filters the responses for single invoice requests. |
|
224 | - * |
|
225 | - * |
|
226 | - * @since 1.0.13 |
|
227 | - * @var WP_HTTP_Response |
|
228 | - * |
|
229 | - * @param WP_HTTP_Response $response Response. |
|
230 | - * @param WP_REST_Request $request The request used. |
|
231 | - */ |
|
214 | + if ( is_wp_error( $invoice ) ) { |
|
215 | + return $invoice; |
|
216 | + } |
|
217 | + |
|
218 | + // Prepare the response |
|
219 | + $response = $this->prepare_item_for_response( $invoice, $request ); |
|
220 | + $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) ); |
|
221 | + |
|
222 | + /** |
|
223 | + * Filters the responses for single invoice requests. |
|
224 | + * |
|
225 | + * |
|
226 | + * @since 1.0.13 |
|
227 | + * @var WP_HTTP_Response |
|
228 | + * |
|
229 | + * @param WP_HTTP_Response $response Response. |
|
230 | + * @param WP_REST_Request $request The request used. |
|
231 | + */ |
|
232 | 232 | $response = apply_filters( "wpinv_rest_get_invoice_response", $response, $request ); |
233 | 233 | |
234 | 234 | return rest_ensure_response( $response ); |
@@ -236,23 +236,23 @@ discard block |
||
236 | 236 | } |
237 | 237 | |
238 | 238 | /** |
239 | - * Checks if a given request has access to create an invoice. |
|
240 | - * |
|
241 | - * @since 1.0.13 |
|
242 | - * |
|
243 | - * @param WP_REST_Request $request Full details about the request. |
|
244 | - * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. |
|
245 | - */ |
|
246 | - public function create_item_permissions_check( $request ) { |
|
239 | + * Checks if a given request has access to create an invoice. |
|
240 | + * |
|
241 | + * @since 1.0.13 |
|
242 | + * |
|
243 | + * @param WP_REST_Request $request Full details about the request. |
|
244 | + * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. |
|
245 | + */ |
|
246 | + public function create_item_permissions_check( $request ) { |
|
247 | 247 | |
248 | - if ( ! empty( $request['id'] ) ) { |
|
249 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
250 | - } |
|
248 | + if ( ! empty( $request['id'] ) ) { |
|
249 | + return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
250 | + } |
|
251 | 251 | |
252 | - $post_type = get_post_type_object( $this->post_type ); |
|
252 | + $post_type = get_post_type_object( $this->post_type ); |
|
253 | 253 | |
254 | - if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) { |
|
255 | - return new WP_Error( |
|
254 | + if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) { |
|
255 | + return new WP_Error( |
|
256 | 256 | 'rest_cannot_create', |
257 | 257 | __( 'Sorry, you are not allowed to create items as this user.', 'invoicing' ), |
258 | 258 | array( |
@@ -261,90 +261,90 @@ discard block |
||
261 | 261 | ); |
262 | 262 | } |
263 | 263 | |
264 | - return true; |
|
264 | + return true; |
|
265 | 265 | } |
266 | 266 | |
267 | 267 | /** |
268 | - * Creates a single invoice. |
|
269 | - * |
|
270 | - * @since 1.0.13 |
|
271 | - * |
|
272 | - * @param WP_REST_Request $request Full details about the request. |
|
273 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
274 | - */ |
|
275 | - public function create_item( $request ) { |
|
276 | - |
|
277 | - if ( ! empty( $request['id'] ) ) { |
|
278 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
279 | - } |
|
280 | - |
|
281 | - $request->set_param( 'context', 'edit' ); |
|
282 | - |
|
283 | - // Prepare the updated data. |
|
284 | - $invoice_data = $this->prepare_item_for_database( $request ); |
|
285 | - |
|
286 | - if ( is_wp_error( $invoice_data ) ) { |
|
287 | - return $invoice_data; |
|
288 | - } |
|
289 | - |
|
290 | - // Try creating the invoice |
|
291 | - $invoice_data['post_type'] = $this->post_type; |
|
292 | - $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' ); |
|
268 | + * Creates a single invoice. |
|
269 | + * |
|
270 | + * @since 1.0.13 |
|
271 | + * |
|
272 | + * @param WP_REST_Request $request Full details about the request. |
|
273 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
274 | + */ |
|
275 | + public function create_item( $request ) { |
|
276 | + |
|
277 | + if ( ! empty( $request['id'] ) ) { |
|
278 | + return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
279 | + } |
|
280 | + |
|
281 | + $request->set_param( 'context', 'edit' ); |
|
282 | + |
|
283 | + // Prepare the updated data. |
|
284 | + $invoice_data = $this->prepare_item_for_database( $request ); |
|
285 | + |
|
286 | + if ( is_wp_error( $invoice_data ) ) { |
|
287 | + return $invoice_data; |
|
288 | + } |
|
289 | + |
|
290 | + // Try creating the invoice |
|
291 | + $invoice_data['post_type'] = $this->post_type; |
|
292 | + $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' ); |
|
293 | 293 | $invoice = wpinv_insert_invoice( $invoice_data, true ); |
294 | 294 | |
295 | - if ( is_wp_error( $invoice ) ) { |
|
295 | + if ( is_wp_error( $invoice ) ) { |
|
296 | 296 | return $invoice; |
297 | - } |
|
298 | - |
|
299 | - // Prepare the response |
|
300 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
301 | - |
|
302 | - /** |
|
303 | - * Fires after a single invoice is created or updated via the REST API. |
|
304 | - * |
|
305 | - * @since 1.0.13 |
|
306 | - * |
|
307 | - * @param WPinv_Invoice $invoice Inserted or updated invoice object. |
|
308 | - * @param WP_REST_Request $request Request object. |
|
309 | - * @param bool $creating True when creating a post, false when updating. |
|
310 | - */ |
|
311 | - do_action( "wpinv_rest_insert_invoice", $invoice, $request, true ); |
|
312 | - |
|
313 | - /** |
|
314 | - * Filters the responses for creating single invoice requests. |
|
315 | - * |
|
316 | - * |
|
317 | - * @since 1.0.13 |
|
318 | - * |
|
319 | - * |
|
320 | - * @param array $invoice_data Invoice properties. |
|
321 | - * @param WP_REST_Request $request The request used. |
|
322 | - */ |
|
297 | + } |
|
298 | + |
|
299 | + // Prepare the response |
|
300 | + $response = $this->prepare_item_for_response( $invoice, $request ); |
|
301 | + |
|
302 | + /** |
|
303 | + * Fires after a single invoice is created or updated via the REST API. |
|
304 | + * |
|
305 | + * @since 1.0.13 |
|
306 | + * |
|
307 | + * @param WPinv_Invoice $invoice Inserted or updated invoice object. |
|
308 | + * @param WP_REST_Request $request Request object. |
|
309 | + * @param bool $creating True when creating a post, false when updating. |
|
310 | + */ |
|
311 | + do_action( "wpinv_rest_insert_invoice", $invoice, $request, true ); |
|
312 | + |
|
313 | + /** |
|
314 | + * Filters the responses for creating single invoice requests. |
|
315 | + * |
|
316 | + * |
|
317 | + * @since 1.0.13 |
|
318 | + * |
|
319 | + * |
|
320 | + * @param array $invoice_data Invoice properties. |
|
321 | + * @param WP_REST_Request $request The request used. |
|
322 | + */ |
|
323 | 323 | $response = apply_filters( "wpinv_rest_create_invoice_response", $response, $request ); |
324 | 324 | |
325 | 325 | return rest_ensure_response( $response ); |
326 | - } |
|
327 | - |
|
328 | - /** |
|
329 | - * Checks if a given request has access to update an invoice. |
|
330 | - * |
|
331 | - * @since 1.0.13 |
|
332 | - * |
|
333 | - * @param WP_REST_Request $request Full details about the request. |
|
334 | - * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. |
|
335 | - */ |
|
336 | - public function update_item_permissions_check( $request ) { |
|
337 | - |
|
338 | - // Retrieve the invoice. |
|
339 | - $invoice = $this->get_post( $request['id'] ); |
|
340 | - if ( is_wp_error( $invoice ) ) { |
|
341 | - return $invoice; |
|
342 | - } |
|
343 | - |
|
344 | - $post_type = get_post_type_object( $this->post_type ); |
|
345 | - |
|
346 | - if ( ! current_user_can( $post_type->cap->edit_post, $invoice->ID ) ) { |
|
347 | - return new WP_Error( |
|
326 | + } |
|
327 | + |
|
328 | + /** |
|
329 | + * Checks if a given request has access to update an invoice. |
|
330 | + * |
|
331 | + * @since 1.0.13 |
|
332 | + * |
|
333 | + * @param WP_REST_Request $request Full details about the request. |
|
334 | + * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. |
|
335 | + */ |
|
336 | + public function update_item_permissions_check( $request ) { |
|
337 | + |
|
338 | + // Retrieve the invoice. |
|
339 | + $invoice = $this->get_post( $request['id'] ); |
|
340 | + if ( is_wp_error( $invoice ) ) { |
|
341 | + return $invoice; |
|
342 | + } |
|
343 | + |
|
344 | + $post_type = get_post_type_object( $this->post_type ); |
|
345 | + |
|
346 | + if ( ! current_user_can( $post_type->cap->edit_post, $invoice->ID ) ) { |
|
347 | + return new WP_Error( |
|
348 | 348 | 'rest_cannot_edit', |
349 | 349 | __( 'Sorry, you are not allowed to update this item.', 'invoicing' ), |
350 | 350 | array( |
@@ -353,162 +353,162 @@ discard block |
||
353 | 353 | ); |
354 | 354 | } |
355 | 355 | |
356 | - return true; |
|
357 | - } |
|
358 | - |
|
359 | - /** |
|
360 | - * Updates a single invoice. |
|
361 | - * |
|
362 | - * @since 1.0.13 |
|
363 | - * |
|
364 | - * @param WP_REST_Request $request Full details about the request. |
|
365 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
366 | - */ |
|
367 | - public function update_item( $request ) { |
|
356 | + return true; |
|
357 | + } |
|
358 | + |
|
359 | + /** |
|
360 | + * Updates a single invoice. |
|
361 | + * |
|
362 | + * @since 1.0.13 |
|
363 | + * |
|
364 | + * @param WP_REST_Request $request Full details about the request. |
|
365 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
366 | + */ |
|
367 | + public function update_item( $request ) { |
|
368 | 368 | |
369 | - // Ensure the invoice exists. |
|
369 | + // Ensure the invoice exists. |
|
370 | 370 | $valid_check = $this->get_post( $request['id'] ); |
371 | 371 | |
372 | 372 | // Abort early if it does not exist |
373 | - if ( is_wp_error( $valid_check ) ) { |
|
374 | - return $valid_check; |
|
375 | - } |
|
373 | + if ( is_wp_error( $valid_check ) ) { |
|
374 | + return $valid_check; |
|
375 | + } |
|
376 | 376 | |
377 | - $request->set_param( 'context', 'edit' ); |
|
377 | + $request->set_param( 'context', 'edit' ); |
|
378 | 378 | |
379 | - // Prepare the updated data. |
|
380 | - $data_to_update = $this->prepare_item_for_database( $request ); |
|
379 | + // Prepare the updated data. |
|
380 | + $data_to_update = $this->prepare_item_for_database( $request ); |
|
381 | 381 | |
382 | - if ( is_wp_error( $data_to_update ) ) { |
|
383 | - return $data_to_update; |
|
384 | - } |
|
382 | + if ( is_wp_error( $data_to_update ) ) { |
|
383 | + return $data_to_update; |
|
384 | + } |
|
385 | 385 | |
386 | - // Abort if no invoice data is provided |
|
386 | + // Abort if no invoice data is provided |
|
387 | 387 | if( empty( $data_to_update ) ) { |
388 | 388 | return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) ); |
389 | 389 | } |
390 | 390 | |
391 | - // Include the invoice ID |
|
392 | - $data_to_update['ID'] = $request['id']; |
|
393 | - |
|
394 | - // Update the invoice |
|
395 | - $updated_invoice = wpinv_update_invoice( $data_to_update, true ); |
|
396 | - |
|
397 | - // Incase the update operation failed... |
|
398 | - if ( is_wp_error( $updated_invoice ) ) { |
|
399 | - return $updated_invoice; |
|
400 | - } |
|
401 | - |
|
402 | - // Prepare the response |
|
403 | - $response = $this->prepare_item_for_response( $updated_invoice, $request ); |
|
404 | - |
|
405 | - /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */ |
|
406 | - do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false ); |
|
407 | - |
|
408 | - /** |
|
409 | - * Filters the responses for updating single invoice requests. |
|
410 | - * |
|
411 | - * |
|
412 | - * @since 1.0.13 |
|
413 | - * |
|
414 | - * |
|
415 | - * @param array $invoice_data Invoice properties. |
|
416 | - * @param WP_REST_Request $request The request used. |
|
417 | - */ |
|
391 | + // Include the invoice ID |
|
392 | + $data_to_update['ID'] = $request['id']; |
|
393 | + |
|
394 | + // Update the invoice |
|
395 | + $updated_invoice = wpinv_update_invoice( $data_to_update, true ); |
|
396 | + |
|
397 | + // Incase the update operation failed... |
|
398 | + if ( is_wp_error( $updated_invoice ) ) { |
|
399 | + return $updated_invoice; |
|
400 | + } |
|
401 | + |
|
402 | + // Prepare the response |
|
403 | + $response = $this->prepare_item_for_response( $updated_invoice, $request ); |
|
404 | + |
|
405 | + /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */ |
|
406 | + do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false ); |
|
407 | + |
|
408 | + /** |
|
409 | + * Filters the responses for updating single invoice requests. |
|
410 | + * |
|
411 | + * |
|
412 | + * @since 1.0.13 |
|
413 | + * |
|
414 | + * |
|
415 | + * @param array $invoice_data Invoice properties. |
|
416 | + * @param WP_REST_Request $request The request used. |
|
417 | + */ |
|
418 | 418 | $response = apply_filters( "wpinv_rest_update_invoice_response", $response, $request ); |
419 | 419 | |
420 | 420 | return rest_ensure_response( $response ); |
421 | - } |
|
422 | - |
|
423 | - /** |
|
424 | - * Checks if a given request has access to delete an invoice. |
|
425 | - * |
|
426 | - * @since 1.0.13 |
|
427 | - * |
|
428 | - * @param WP_REST_Request $request Full details about the request. |
|
429 | - * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise. |
|
430 | - */ |
|
431 | - public function delete_item_permissions_check( $request ) { |
|
432 | - |
|
433 | - // Retrieve the invoice. |
|
434 | - $invoice = $this->get_post( $request['id'] ); |
|
435 | - if ( is_wp_error( $invoice ) ) { |
|
436 | - return $invoice; |
|
437 | - } |
|
438 | - |
|
439 | - // Ensure the current user can delete invoices |
|
440 | - if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'delete_invoices', $request['id'] ) ) { |
|
441 | - return true; |
|
442 | - } |
|
443 | - |
|
444 | - return new WP_Error( |
|
445 | - 'rest_cannot_delete', |
|
446 | - __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), |
|
447 | - array( |
|
448 | - 'status' => rest_authorization_required_code(), |
|
449 | - ) |
|
450 | - ); |
|
451 | - } |
|
452 | - |
|
453 | - /** |
|
454 | - * Deletes a single invoice. |
|
455 | - * |
|
456 | - * @since 1.0.13 |
|
457 | - * |
|
458 | - * @param WP_REST_Request $request Full details about the request. |
|
459 | - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
460 | - */ |
|
461 | - public function delete_item( $request ) { |
|
421 | + } |
|
422 | + |
|
423 | + /** |
|
424 | + * Checks if a given request has access to delete an invoice. |
|
425 | + * |
|
426 | + * @since 1.0.13 |
|
427 | + * |
|
428 | + * @param WP_REST_Request $request Full details about the request. |
|
429 | + * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise. |
|
430 | + */ |
|
431 | + public function delete_item_permissions_check( $request ) { |
|
432 | + |
|
433 | + // Retrieve the invoice. |
|
434 | + $invoice = $this->get_post( $request['id'] ); |
|
435 | + if ( is_wp_error( $invoice ) ) { |
|
436 | + return $invoice; |
|
437 | + } |
|
438 | + |
|
439 | + // Ensure the current user can delete invoices |
|
440 | + if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'delete_invoices', $request['id'] ) ) { |
|
441 | + return true; |
|
442 | + } |
|
443 | + |
|
444 | + return new WP_Error( |
|
445 | + 'rest_cannot_delete', |
|
446 | + __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), |
|
447 | + array( |
|
448 | + 'status' => rest_authorization_required_code(), |
|
449 | + ) |
|
450 | + ); |
|
451 | + } |
|
452 | + |
|
453 | + /** |
|
454 | + * Deletes a single invoice. |
|
455 | + * |
|
456 | + * @since 1.0.13 |
|
457 | + * |
|
458 | + * @param WP_REST_Request $request Full details about the request. |
|
459 | + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
|
460 | + */ |
|
461 | + public function delete_item( $request ) { |
|
462 | 462 | |
463 | - // Retrieve the invoice. |
|
464 | - $invoice = $this->get_post( $request['id'] ); |
|
465 | - if ( is_wp_error( $invoice ) ) { |
|
466 | - return $invoice; |
|
467 | - } |
|
463 | + // Retrieve the invoice. |
|
464 | + $invoice = $this->get_post( $request['id'] ); |
|
465 | + if ( is_wp_error( $invoice ) ) { |
|
466 | + return $invoice; |
|
467 | + } |
|
468 | 468 | |
469 | - $request->set_param( 'context', 'edit' ); |
|
469 | + $request->set_param( 'context', 'edit' ); |
|
470 | 470 | |
471 | - // Prepare the invoice id |
|
472 | - $id = $invoice->ID; |
|
471 | + // Prepare the invoice id |
|
472 | + $id = $invoice->ID; |
|
473 | 473 | |
474 | - // Prepare the response |
|
475 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
474 | + // Prepare the response |
|
475 | + $response = $this->prepare_item_for_response( $invoice, $request ); |
|
476 | 476 | |
477 | - // Check if the user wants to bypass the trash... |
|
478 | - $force_delete = (bool) $request['force']; |
|
477 | + // Check if the user wants to bypass the trash... |
|
478 | + $force_delete = (bool) $request['force']; |
|
479 | 479 | |
480 | - // Try deleting the invoice. |
|
481 | - $deleted = wp_delete_post( $id, $force_delete ); |
|
480 | + // Try deleting the invoice. |
|
481 | + $deleted = wp_delete_post( $id, $force_delete ); |
|
482 | 482 | |
483 | - // Abort early if we can't delete the invoice. |
|
484 | - if ( ! $deleted ) { |
|
485 | - return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) ); |
|
486 | - } |
|
483 | + // Abort early if we can't delete the invoice. |
|
484 | + if ( ! $deleted ) { |
|
485 | + return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) ); |
|
486 | + } |
|
487 | 487 | |
488 | - /** |
|
489 | - * Fires immediately after a single invoice is deleted or trashed via the REST API. |
|
490 | - * |
|
491 | - * |
|
492 | - * @since 1.0.13 |
|
493 | - * |
|
494 | - * @param WPInv_Invoice $invoice The deleted or trashed invoice. |
|
495 | - * @param WP_REST_Request $request The request sent to the API. |
|
496 | - */ |
|
497 | - do_action( "wpinv_rest_delete_invoice", $invoice, $request ); |
|
488 | + /** |
|
489 | + * Fires immediately after a single invoice is deleted or trashed via the REST API. |
|
490 | + * |
|
491 | + * |
|
492 | + * @since 1.0.13 |
|
493 | + * |
|
494 | + * @param WPInv_Invoice $invoice The deleted or trashed invoice. |
|
495 | + * @param WP_REST_Request $request The request sent to the API. |
|
496 | + */ |
|
497 | + do_action( "wpinv_rest_delete_invoice", $invoice, $request ); |
|
498 | 498 | |
499 | - return $response; |
|
499 | + return $response; |
|
500 | 500 | |
501 | - } |
|
501 | + } |
|
502 | 502 | |
503 | 503 | |
504 | 504 | /** |
505 | - * Retrieves the query params for the invoices collection. |
|
506 | - * |
|
507 | - * @since 1.0.13 |
|
508 | - * |
|
509 | - * @return array Collection parameters. |
|
510 | - */ |
|
511 | - public function get_collection_params() { |
|
505 | + * Retrieves the query params for the invoices collection. |
|
506 | + * |
|
507 | + * @since 1.0.13 |
|
508 | + * |
|
509 | + * @return array Collection parameters. |
|
510 | + */ |
|
511 | + public function get_collection_params() { |
|
512 | 512 | |
513 | 513 | $query_params = array( |
514 | 514 | |
@@ -526,11 +526,11 @@ discard block |
||
526 | 526 | |
527 | 527 | // User. |
528 | 528 | 'user' => array( |
529 | - 'description' => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ), |
|
530 | - 'type' => 'string', |
|
531 | - ), |
|
529 | + 'description' => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ), |
|
530 | + 'type' => 'string', |
|
531 | + ), |
|
532 | 532 | |
533 | - // Exclude certain users |
|
533 | + // Exclude certain users |
|
534 | 534 | 'exclude_users' => array( |
535 | 535 | 'description' => __( 'Exclude items from specific users.', 'invoicing' ), |
536 | 536 | 'type' => 'array', |
@@ -540,59 +540,59 @@ discard block |
||
540 | 540 | 'default' => array(), |
541 | 541 | ), |
542 | 542 | |
543 | - // Items before. |
|
543 | + // Items before. |
|
544 | 544 | 'before_date' => array( |
545 | - 'description' => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
546 | - 'type' => 'string', |
|
547 | - ), |
|
545 | + 'description' => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
546 | + 'type' => 'string', |
|
547 | + ), |
|
548 | 548 | |
549 | 549 | 'meta_key' => array( |
550 | - 'description' => __( 'Filter items by custom field key.', 'invoicing' ), |
|
551 | - 'type' => 'string', |
|
552 | - ), |
|
550 | + 'description' => __( 'Filter items by custom field key.', 'invoicing' ), |
|
551 | + 'type' => 'string', |
|
552 | + ), |
|
553 | 553 | |
554 | 554 | 'meta_compare_key' => array( |
555 | - 'description' => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ), |
|
556 | - 'type' => 'string', |
|
557 | - 'default' => '=', |
|
558 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
559 | - ), |
|
555 | + 'description' => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ), |
|
556 | + 'type' => 'string', |
|
557 | + 'default' => '=', |
|
558 | + 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
559 | + ), |
|
560 | 560 | |
561 | 561 | 'meta_value' => array( |
562 | - 'description' => __( 'Filter items by custom field value.', 'invoicing' ), |
|
563 | - 'type' => 'string', |
|
564 | - ), |
|
562 | + 'description' => __( 'Filter items by custom field value.', 'invoicing' ), |
|
563 | + 'type' => 'string', |
|
564 | + ), |
|
565 | 565 | |
566 | 566 | 'meta_compare' => array( |
567 | - 'description' => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ), |
|
568 | - 'type' => 'string', |
|
569 | - 'default' => '=', |
|
570 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
571 | - ), |
|
572 | - |
|
573 | - 'meta_value_num' => array( |
|
574 | - 'description' => __( 'Filter items by a numeric custom field value.', 'invoicing' ), |
|
575 | - 'type' => 'integer', |
|
576 | - ), |
|
577 | - |
|
578 | - // items after. |
|
567 | + 'description' => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ), |
|
568 | + 'type' => 'string', |
|
569 | + 'default' => '=', |
|
570 | + 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
571 | + ), |
|
572 | + |
|
573 | + 'meta_value_num' => array( |
|
574 | + 'description' => __( 'Filter items by a numeric custom field value.', 'invoicing' ), |
|
575 | + 'type' => 'integer', |
|
576 | + ), |
|
577 | + |
|
578 | + // items after. |
|
579 | 579 | 'after_date' => array( |
580 | - 'description' => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
581 | - 'type' => 'string', |
|
580 | + 'description' => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
581 | + 'type' => 'string', |
|
582 | 582 | ), |
583 | 583 | |
584 | 584 | // Number of results per page |
585 | 585 | 'limit' => array( |
586 | - 'description' => __( 'Number of items to fetch.', 'invoicing' ), |
|
587 | - 'type' => 'integer', |
|
588 | - 'default' => (int) get_option( 'posts_per_page' ), |
|
586 | + 'description' => __( 'Number of items to fetch.', 'invoicing' ), |
|
587 | + 'type' => 'integer', |
|
588 | + 'default' => (int) get_option( 'posts_per_page' ), |
|
589 | 589 | ), |
590 | 590 | |
591 | 591 | // Pagination |
592 | 592 | 'page' => array( |
593 | - 'description' => __( 'Current page to fetch.', 'invoicing' ), |
|
594 | - 'type' => 'integer', |
|
595 | - 'default' => 1, |
|
593 | + 'description' => __( 'Current page to fetch.', 'invoicing' ), |
|
594 | + 'type' => 'integer', |
|
595 | + 'default' => 1, |
|
596 | 596 | ), |
597 | 597 | |
598 | 598 | // limit to certain items |
@@ -603,9 +603,9 @@ discard block |
||
603 | 603 | 'type' => 'integer', |
604 | 604 | ), |
605 | 605 | 'default' => array(), |
606 | - ), |
|
606 | + ), |
|
607 | 607 | |
608 | - // Exclude certain items |
|
608 | + // Exclude certain items |
|
609 | 609 | 'exclude' => array( |
610 | 610 | 'description' => __( 'Ensure result set excludes specific IDs.', 'invoicing' ), |
611 | 611 | 'type' => 'array', |
@@ -624,9 +624,9 @@ discard block |
||
624 | 624 | 'date', |
625 | 625 | 'id', |
626 | 626 | 'modified', |
627 | - 'title', |
|
628 | - 'meta_value', |
|
629 | - 'meta_value_num' |
|
627 | + 'title', |
|
628 | + 'meta_value', |
|
629 | + 'meta_value_num' |
|
630 | 630 | ), |
631 | 631 | ), |
632 | 632 | |
@@ -639,932 +639,932 @@ discard block |
||
639 | 639 | ), |
640 | 640 | ); |
641 | 641 | |
642 | - /** |
|
643 | - * Filter collection parameters for the invoices controller. |
|
644 | - * |
|
645 | - * |
|
646 | - * @since 1.0.13 |
|
647 | - * |
|
648 | - * @param array $query_params JSON Schema-formatted collection parameters. |
|
649 | - */ |
|
650 | - return apply_filters( "wpinv_rest_invoices_collection_params", $query_params ); |
|
651 | - } |
|
642 | + /** |
|
643 | + * Filter collection parameters for the invoices controller. |
|
644 | + * |
|
645 | + * |
|
646 | + * @since 1.0.13 |
|
647 | + * |
|
648 | + * @param array $query_params JSON Schema-formatted collection parameters. |
|
649 | + */ |
|
650 | + return apply_filters( "wpinv_rest_invoices_collection_params", $query_params ); |
|
651 | + } |
|
652 | 652 | |
653 | - /** |
|
654 | - * Retrieves the request query params for the invoices collection. |
|
655 | - * |
|
656 | - * @since 1.0.15 |
|
657 | - * @param WP_REST_Request $request Full details about the request. |
|
658 | - * @return array Request collection parameters. |
|
659 | - */ |
|
660 | - public function get_request_collection_params( $request ) { |
|
653 | + /** |
|
654 | + * Retrieves the request query params for the invoices collection. |
|
655 | + * |
|
656 | + * @since 1.0.15 |
|
657 | + * @param WP_REST_Request $request Full details about the request. |
|
658 | + * @return array Request collection parameters. |
|
659 | + */ |
|
660 | + public function get_request_collection_params( $request ) { |
|
661 | 661 | |
662 | - // Retrieve the list of registered invoice query parameters. |
|
663 | - $registered = $this->get_collection_params(); |
|
662 | + // Retrieve the list of registered invoice query parameters. |
|
663 | + $registered = $this->get_collection_params(); |
|
664 | 664 | |
665 | - // Default args |
|
666 | - $args = array( |
|
665 | + // Default args |
|
666 | + $args = array( |
|
667 | 667 | 'status' => $this->get_post_statuses(), |
668 | 668 | 'user' => null, |
669 | 669 | 'exclude_users' => array(), |
670 | - 'before_date' => null, |
|
670 | + 'before_date' => null, |
|
671 | 671 | 'meta_key' => null, |
672 | 672 | 'meta_compare_key' => '=', |
673 | 673 | 'meta_value' => null, |
674 | 674 | 'meta_compare' => '=', |
675 | - 'meta_value_num' => null, |
|
675 | + 'meta_value_num' => null, |
|
676 | 676 | 'after_date' => null, |
677 | 677 | 'limit' => (int) get_option( 'posts_per_page' ), |
678 | - 'page' => 1, |
|
679 | - 'include' => array(), |
|
678 | + 'page' => 1, |
|
679 | + 'include' => array(), |
|
680 | 680 | 'exclude' => array(), |
681 | 681 | 'orderby' => 'date', |
682 | 682 | 'order' => 'DESC', |
683 | - ); |
|
683 | + ); |
|
684 | 684 | |
685 | - // Add any params from the requests. |
|
686 | - foreach ( array_keys( $registered ) as $key ) { |
|
685 | + // Add any params from the requests. |
|
686 | + foreach ( array_keys( $registered ) as $key ) { |
|
687 | 687 | if ( isset( $request[ $key] ) ) { |
688 | 688 | $args[ $key ] = $request[ $key]; |
689 | 689 | } |
690 | 690 | } |
691 | 691 | |
692 | - /** |
|
693 | - * Filters the requests collection parameters for the invoices controller. |
|
694 | - * |
|
695 | - * |
|
696 | - * @since 1.0.15 |
|
697 | - * |
|
698 | - * @param array $args Request query args. |
|
699 | - * @param WP_REST_Request $request Full details about the request. |
|
700 | - */ |
|
701 | - return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request ); |
|
702 | - } |
|
692 | + /** |
|
693 | + * Filters the requests collection parameters for the invoices controller. |
|
694 | + * |
|
695 | + * |
|
696 | + * @since 1.0.15 |
|
697 | + * |
|
698 | + * @param array $args Request query args. |
|
699 | + * @param WP_REST_Request $request Full details about the request. |
|
700 | + */ |
|
701 | + return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request ); |
|
702 | + } |
|
703 | 703 | |
704 | - /** |
|
705 | - * Retrieves the WP_Query params for the invoices collection. |
|
706 | - * |
|
707 | - * @since 1.0.15 |
|
708 | - * @param array $args Request args. |
|
709 | - * @param WP_REST_Request $request Full details about the request. |
|
710 | - * @return array WP_Query parameters. |
|
711 | - */ |
|
712 | - public function get_collection_wp_query_params( $args, $request ) { |
|
704 | + /** |
|
705 | + * Retrieves the WP_Query params for the invoices collection. |
|
706 | + * |
|
707 | + * @since 1.0.15 |
|
708 | + * @param array $args Request args. |
|
709 | + * @param WP_REST_Request $request Full details about the request. |
|
710 | + * @return array WP_Query parameters. |
|
711 | + */ |
|
712 | + public function get_collection_wp_query_params( $args, $request ) { |
|
713 | 713 | |
714 | - // Prepare the parameters. |
|
715 | - $wp_query_args = array( |
|
716 | - 'post_type' => $this->post_type, |
|
717 | - 'post_status' => $args['status'], |
|
718 | - 'author' => $args['user'], |
|
719 | - 'author__not_in' => $args['exclude_users'], |
|
720 | - 'posts_per_page' => $args['limit'], |
|
721 | - 'paged' => $args['page'], |
|
722 | - 'meta_key' => $args['meta_key'], |
|
723 | - 'meta_compare_key' => $args['meta_compare_key'], |
|
724 | - 'meta_value' => $args['meta_value'], |
|
725 | - 'meta_compare' => $args['meta_compare'], |
|
726 | - 'meta_value_num' => $args['meta_value_num'], |
|
727 | - 'post__in' => $args['include'], |
|
728 | - 'post__in' => $args['exclude'], |
|
729 | - 'date_query' => array( array() ), |
|
730 | - 'fields' => 'ids', |
|
731 | - 'orderby' => $args['orderby'], |
|
732 | - 'order' => $args['order'], |
|
733 | - ); |
|
734 | - |
|
735 | - // Only admins can view other user's invoices. |
|
736 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
737 | - $wp_query_args['author'] = get_current_user_id(); |
|
738 | - } |
|
739 | - |
|
740 | - // No date specific params provided. |
|
741 | - if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) { |
|
742 | - unset( $wp_query_args['date_query'] ); |
|
743 | - } |
|
744 | - |
|
745 | - if ( ! empty( $args['before_date'] ) ) { |
|
746 | - $wp_query_args['date_query'][0]['before'] = $args['before_date']; |
|
747 | - } |
|
748 | - |
|
749 | - if ( ! empty( $args['after_date'] ) ) { |
|
750 | - $wp_query_args['date_query'][0]['after'] = $args['after_date']; |
|
751 | - } |
|
752 | - |
|
753 | - // Remove empty variables. |
|
754 | - $wp_query_args = array_filter( $wp_query_args ); |
|
755 | - |
|
756 | - // This can be zero. |
|
757 | - if ( ! is_null( $args['meta_value_num'] ) ) { |
|
758 | - $wp_query_args['meta_value_num'] = $args['meta_value_num']; |
|
759 | - } |
|
714 | + // Prepare the parameters. |
|
715 | + $wp_query_args = array( |
|
716 | + 'post_type' => $this->post_type, |
|
717 | + 'post_status' => $args['status'], |
|
718 | + 'author' => $args['user'], |
|
719 | + 'author__not_in' => $args['exclude_users'], |
|
720 | + 'posts_per_page' => $args['limit'], |
|
721 | + 'paged' => $args['page'], |
|
722 | + 'meta_key' => $args['meta_key'], |
|
723 | + 'meta_compare_key' => $args['meta_compare_key'], |
|
724 | + 'meta_value' => $args['meta_value'], |
|
725 | + 'meta_compare' => $args['meta_compare'], |
|
726 | + 'meta_value_num' => $args['meta_value_num'], |
|
727 | + 'post__in' => $args['include'], |
|
728 | + 'post__in' => $args['exclude'], |
|
729 | + 'date_query' => array( array() ), |
|
730 | + 'fields' => 'ids', |
|
731 | + 'orderby' => $args['orderby'], |
|
732 | + 'order' => $args['order'], |
|
733 | + ); |
|
734 | + |
|
735 | + // Only admins can view other user's invoices. |
|
736 | + if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
737 | + $wp_query_args['author'] = get_current_user_id(); |
|
738 | + } |
|
739 | + |
|
740 | + // No date specific params provided. |
|
741 | + if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) { |
|
742 | + unset( $wp_query_args['date_query'] ); |
|
743 | + } |
|
744 | + |
|
745 | + if ( ! empty( $args['before_date'] ) ) { |
|
746 | + $wp_query_args['date_query'][0]['before'] = $args['before_date']; |
|
747 | + } |
|
748 | + |
|
749 | + if ( ! empty( $args['after_date'] ) ) { |
|
750 | + $wp_query_args['date_query'][0]['after'] = $args['after_date']; |
|
751 | + } |
|
752 | + |
|
753 | + // Remove empty variables. |
|
754 | + $wp_query_args = array_filter( $wp_query_args ); |
|
755 | + |
|
756 | + // This can be zero. |
|
757 | + if ( ! is_null( $args['meta_value_num'] ) ) { |
|
758 | + $wp_query_args['meta_value_num'] = $args['meta_value_num']; |
|
759 | + } |
|
760 | 760 | |
761 | - /** |
|
762 | - * Filters the invoices collection WP_Query parameters for the invoices controller. |
|
763 | - * |
|
764 | - * |
|
765 | - * @since 1.0.15 |
|
766 | - * |
|
767 | - * @param array $args Request args. |
|
768 | - * @param array $wp_query_args Generated WP_Query args args. |
|
769 | - * @param WP_REST_Request $request Full details about the request. |
|
770 | - */ |
|
771 | - return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request ); |
|
761 | + /** |
|
762 | + * Filters the invoices collection WP_Query parameters for the invoices controller. |
|
763 | + * |
|
764 | + * |
|
765 | + * @since 1.0.15 |
|
766 | + * |
|
767 | + * @param array $args Request args. |
|
768 | + * @param array $wp_query_args Generated WP_Query args args. |
|
769 | + * @param WP_REST_Request $request Full details about the request. |
|
770 | + */ |
|
771 | + return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request ); |
|
772 | 772 | } |
773 | 773 | |
774 | 774 | /** |
775 | - * Checks if a given post type can be viewed or managed. |
|
776 | - * |
|
777 | - * @since 1.0.13 |
|
778 | - * |
|
779 | - * @param object|string $post_type Post type name or object. |
|
780 | - * @return bool Whether the post type is allowed in REST. |
|
781 | - */ |
|
782 | - protected function check_is_post_type_allowed( $post_type ) { |
|
783 | - return true; |
|
784 | - } |
|
785 | - |
|
786 | - /** |
|
787 | - * Prepares a single invoice for create or update. |
|
788 | - * |
|
789 | - * @since 1.0.13 |
|
790 | - * |
|
791 | - * @param WP_REST_Request $request Request object. |
|
792 | - * @return array|WP_Error Invoice Properties or WP_Error. |
|
793 | - */ |
|
794 | - protected function prepare_item_for_database( $request ) { |
|
795 | - $prepared_invoice = new stdClass(); |
|
796 | - |
|
797 | - // Post ID. |
|
798 | - if ( isset( $request['id'] ) ) { |
|
799 | - $existing_invoice = $this->get_post( $request['id'] ); |
|
800 | - if ( is_wp_error( $existing_invoice ) ) { |
|
801 | - return $existing_invoice; |
|
802 | - } |
|
803 | - |
|
804 | - $prepared_invoice->ID = $existing_invoice->ID; |
|
805 | - $prepared_invoice->invoice_id = $existing_invoice->ID; |
|
806 | - } |
|
807 | - |
|
808 | - $schema = $this->get_item_schema(); |
|
809 | - |
|
810 | - // Invoice owner. |
|
811 | - if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { |
|
812 | - $prepared_invoice->user_id = (int) $request['user_id']; |
|
813 | - } |
|
814 | - |
|
815 | - // Cart details. |
|
816 | - if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) { |
|
817 | - $prepared_invoice->cart_details = (array) $request['cart_details']; |
|
818 | - } |
|
819 | - |
|
820 | - // Invoice status. |
|
821 | - if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { |
|
822 | - |
|
823 | - if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) { |
|
824 | - $prepared_invoice->status = $request['status']; |
|
825 | - } |
|
826 | - |
|
827 | - } |
|
828 | - |
|
829 | - // User info |
|
830 | - if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) { |
|
831 | - $prepared_invoice->user_info = array(); |
|
832 | - $user_info = (array) $request['user_info']; |
|
833 | - |
|
834 | - foreach( $user_info as $prop => $value ) { |
|
835 | - |
|
836 | - if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) { |
|
837 | - |
|
838 | - $prepared_invoice->user_info[$prop] = $value; |
|
775 | + * Checks if a given post type can be viewed or managed. |
|
776 | + * |
|
777 | + * @since 1.0.13 |
|
778 | + * |
|
779 | + * @param object|string $post_type Post type name or object. |
|
780 | + * @return bool Whether the post type is allowed in REST. |
|
781 | + */ |
|
782 | + protected function check_is_post_type_allowed( $post_type ) { |
|
783 | + return true; |
|
784 | + } |
|
785 | + |
|
786 | + /** |
|
787 | + * Prepares a single invoice for create or update. |
|
788 | + * |
|
789 | + * @since 1.0.13 |
|
790 | + * |
|
791 | + * @param WP_REST_Request $request Request object. |
|
792 | + * @return array|WP_Error Invoice Properties or WP_Error. |
|
793 | + */ |
|
794 | + protected function prepare_item_for_database( $request ) { |
|
795 | + $prepared_invoice = new stdClass(); |
|
796 | + |
|
797 | + // Post ID. |
|
798 | + if ( isset( $request['id'] ) ) { |
|
799 | + $existing_invoice = $this->get_post( $request['id'] ); |
|
800 | + if ( is_wp_error( $existing_invoice ) ) { |
|
801 | + return $existing_invoice; |
|
802 | + } |
|
803 | + |
|
804 | + $prepared_invoice->ID = $existing_invoice->ID; |
|
805 | + $prepared_invoice->invoice_id = $existing_invoice->ID; |
|
806 | + } |
|
807 | + |
|
808 | + $schema = $this->get_item_schema(); |
|
809 | + |
|
810 | + // Invoice owner. |
|
811 | + if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { |
|
812 | + $prepared_invoice->user_id = (int) $request['user_id']; |
|
813 | + } |
|
814 | + |
|
815 | + // Cart details. |
|
816 | + if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) { |
|
817 | + $prepared_invoice->cart_details = (array) $request['cart_details']; |
|
818 | + } |
|
819 | + |
|
820 | + // Invoice status. |
|
821 | + if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { |
|
822 | + |
|
823 | + if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) { |
|
824 | + $prepared_invoice->status = $request['status']; |
|
825 | + } |
|
826 | + |
|
827 | + } |
|
828 | + |
|
829 | + // User info |
|
830 | + if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) { |
|
831 | + $prepared_invoice->user_info = array(); |
|
832 | + $user_info = (array) $request['user_info']; |
|
833 | + |
|
834 | + foreach( $user_info as $prop => $value ) { |
|
835 | + |
|
836 | + if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) { |
|
837 | + |
|
838 | + $prepared_invoice->user_info[$prop] = $value; |
|
839 | 839 | |
840 | - } |
|
840 | + } |
|
841 | 841 | |
842 | - } |
|
842 | + } |
|
843 | 843 | |
844 | - } |
|
844 | + } |
|
845 | 845 | |
846 | - // IP |
|
847 | - if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) { |
|
848 | - $prepared_invoice->ip = $request['ip']; |
|
849 | - } |
|
846 | + // IP |
|
847 | + if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) { |
|
848 | + $prepared_invoice->ip = $request['ip']; |
|
849 | + } |
|
850 | 850 | |
851 | - // Payment details |
|
852 | - $prepared_invoice->payment_details = array(); |
|
851 | + // Payment details |
|
852 | + $prepared_invoice->payment_details = array(); |
|
853 | 853 | |
854 | - if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) { |
|
855 | - $prepared_invoice->payment_details['gateway'] = $request['gateway']; |
|
856 | - } |
|
854 | + if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) { |
|
855 | + $prepared_invoice->payment_details['gateway'] = $request['gateway']; |
|
856 | + } |
|
857 | 857 | |
858 | - if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) { |
|
859 | - $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title']; |
|
860 | - } |
|
858 | + if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) { |
|
859 | + $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title']; |
|
860 | + } |
|
861 | 861 | |
862 | - if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) { |
|
863 | - $prepared_invoice->payment_details['currency'] = $request['currency']; |
|
864 | - } |
|
862 | + if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) { |
|
863 | + $prepared_invoice->payment_details['currency'] = $request['currency']; |
|
864 | + } |
|
865 | 865 | |
866 | - if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) { |
|
867 | - $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id']; |
|
868 | - } |
|
866 | + if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) { |
|
867 | + $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id']; |
|
868 | + } |
|
869 | 869 | |
870 | - // Dates |
|
871 | - if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) { |
|
872 | - $post_date = rest_get_date_with_gmt( $request['date'] ); |
|
870 | + // Dates |
|
871 | + if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) { |
|
872 | + $post_date = rest_get_date_with_gmt( $request['date'] ); |
|
873 | 873 | |
874 | - if ( ! empty( $post_date ) ) { |
|
875 | - $prepared_invoice->post_date = $post_date[0]; |
|
876 | - } |
|
874 | + if ( ! empty( $post_date ) ) { |
|
875 | + $prepared_invoice->post_date = $post_date[0]; |
|
876 | + } |
|
877 | 877 | |
878 | - } |
|
878 | + } |
|
879 | 879 | |
880 | - if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) { |
|
881 | - $due_date = rest_get_date_with_gmt( $request['due_date'] ); |
|
880 | + if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) { |
|
881 | + $due_date = rest_get_date_with_gmt( $request['due_date'] ); |
|
882 | 882 | |
883 | - if ( ! empty( $due_date ) ) { |
|
884 | - $prepared_invoice->due_date = $due_date[0]; |
|
885 | - } |
|
883 | + if ( ! empty( $due_date ) ) { |
|
884 | + $prepared_invoice->due_date = $due_date[0]; |
|
885 | + } |
|
886 | 886 | |
887 | - } |
|
887 | + } |
|
888 | 888 | |
889 | - if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) { |
|
889 | + if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) { |
|
890 | 890 | |
891 | - if ( ! empty( $request['valid_until'] ) ) { |
|
892 | - $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) ); |
|
893 | - } else { |
|
894 | - $prepared_invoice->valid_until = ''; |
|
895 | - } |
|
891 | + if ( ! empty( $request['valid_until'] ) ) { |
|
892 | + $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) ); |
|
893 | + } else { |
|
894 | + $prepared_invoice->valid_until = ''; |
|
895 | + } |
|
896 | 896 | |
897 | - } |
|
897 | + } |
|
898 | 898 | |
899 | - $invoice_data = (array) wp_unslash( $prepared_invoice ); |
|
899 | + $invoice_data = (array) wp_unslash( $prepared_invoice ); |
|
900 | 900 | |
901 | - /** |
|
902 | - * Filters an invoice before it is inserted via the REST API. |
|
903 | - * |
|
904 | - * @since 1.0.13 |
|
905 | - * |
|
906 | - * @param array $invoice_data An array of invoice data |
|
907 | - * @param WP_REST_Request $request Request object. |
|
908 | - */ |
|
909 | - return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request ); |
|
901 | + /** |
|
902 | + * Filters an invoice before it is inserted via the REST API. |
|
903 | + * |
|
904 | + * @since 1.0.13 |
|
905 | + * |
|
906 | + * @param array $invoice_data An array of invoice data |
|
907 | + * @param WP_REST_Request $request Request object. |
|
908 | + */ |
|
909 | + return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request ); |
|
910 | 910 | |
911 | - } |
|
911 | + } |
|
912 | 912 | |
913 | - /** |
|
914 | - * Prepares a single invoice output for response. |
|
915 | - * |
|
916 | - * @since 1.0.13 |
|
917 | - * |
|
918 | - * @param WPInv_Invoice $invoice Invoice object. |
|
919 | - * @param WP_REST_Request $request Request object. |
|
920 | - * @return WP_REST_Response Response object. |
|
921 | - */ |
|
922 | - public function prepare_item_for_response( $invoice, $request ) { |
|
913 | + /** |
|
914 | + * Prepares a single invoice output for response. |
|
915 | + * |
|
916 | + * @since 1.0.13 |
|
917 | + * |
|
918 | + * @param WPInv_Invoice $invoice Invoice object. |
|
919 | + * @param WP_REST_Request $request Request object. |
|
920 | + * @return WP_REST_Response Response object. |
|
921 | + */ |
|
922 | + public function prepare_item_for_response( $invoice, $request ) { |
|
923 | 923 | |
924 | - $GLOBALS['post'] = get_post( $invoice->ID ); |
|
924 | + $GLOBALS['post'] = get_post( $invoice->ID ); |
|
925 | 925 | |
926 | - setup_postdata( $invoice->ID ); |
|
926 | + setup_postdata( $invoice->ID ); |
|
927 | 927 | |
928 | - // Fetch the fields to include in this response. |
|
929 | - $fields = $this->get_fields_for_response( $request ); |
|
928 | + // Fetch the fields to include in this response. |
|
929 | + $fields = $this->get_fields_for_response( $request ); |
|
930 | 930 | |
931 | - // Base fields for every invoice. |
|
932 | - $data = array(); |
|
931 | + // Base fields for every invoice. |
|
932 | + $data = array(); |
|
933 | 933 | |
934 | - // Set up ID |
|
935 | - if ( rest_is_field_included( 'id', $fields ) ) { |
|
936 | - $data['id'] = $invoice->ID; |
|
937 | - } |
|
934 | + // Set up ID |
|
935 | + if ( rest_is_field_included( 'id', $fields ) ) { |
|
936 | + $data['id'] = $invoice->ID; |
|
937 | + } |
|
938 | 938 | |
939 | 939 | |
940 | - // Basic properties |
|
941 | - $invoice_properties = array( |
|
942 | - 'title', 'email', 'ip', |
|
943 | - 'key', 'number', 'transaction_id', 'mode', |
|
944 | - 'gateway', 'gateway_title', |
|
945 | - 'total', 'discount', 'discount_code', |
|
946 | - 'tax', 'fees_total', 'subtotal', 'currency', |
|
947 | - 'status', 'status_nicename', 'post_type' |
|
948 | - ); |
|
949 | - |
|
950 | - foreach( $invoice_properties as $property ) { |
|
940 | + // Basic properties |
|
941 | + $invoice_properties = array( |
|
942 | + 'title', 'email', 'ip', |
|
943 | + 'key', 'number', 'transaction_id', 'mode', |
|
944 | + 'gateway', 'gateway_title', |
|
945 | + 'total', 'discount', 'discount_code', |
|
946 | + 'tax', 'fees_total', 'subtotal', 'currency', |
|
947 | + 'status', 'status_nicename', 'post_type' |
|
948 | + ); |
|
951 | 949 | |
952 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
953 | - $data[$property] = $invoice->get( $property ); |
|
954 | - } |
|
955 | - |
|
956 | - } |
|
957 | - |
|
958 | - // Valid until |
|
959 | - if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) { |
|
960 | - $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true ); |
|
961 | - } |
|
962 | - |
|
963 | - // Cart details |
|
964 | - if ( rest_is_field_included( 'cart_details', $fields ) ) { |
|
965 | - $data['cart_details'] = $invoice->get( 'cart_details' ); |
|
966 | - } |
|
967 | - |
|
968 | - //Dates |
|
969 | - $invoice_properties = array( 'date', 'due_date', 'completed_date' ); |
|
970 | - |
|
971 | - foreach( $invoice_properties as $property ) { |
|
972 | - |
|
973 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
974 | - $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) ); |
|
975 | - } |
|
976 | - |
|
977 | - } |
|
978 | - |
|
979 | - // User id |
|
980 | - if ( rest_is_field_included( 'user_id', $fields ) ) { |
|
981 | - $data['user_id'] = (int) $invoice->get( 'user_id' ); |
|
982 | - } |
|
983 | - |
|
984 | - // User info |
|
985 | - $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' ); |
|
986 | - |
|
987 | - foreach( $user_info as $property ) { |
|
988 | - |
|
989 | - if ( rest_is_field_included( "user_info.$property", $fields ) ) { |
|
990 | - $data['user_info'][$property] = $invoice->get( $property ); |
|
991 | - } |
|
992 | - |
|
993 | - } |
|
994 | - |
|
995 | - // Slug |
|
996 | - if ( rest_is_field_included( 'slug', $fields ) ) { |
|
997 | - $data['slug'] = $invoice->get( 'post_name' ); |
|
998 | - } |
|
999 | - |
|
1000 | - // View invoice link |
|
1001 | - if ( rest_is_field_included( 'link', $fields ) ) { |
|
1002 | - $data['link'] = esc_url( $invoice->get_view_url() ); |
|
1003 | - } |
|
1004 | - |
|
1005 | - |
|
1006 | - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
1007 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
1008 | - $data = $this->filter_response_by_context( $data, $context ); |
|
1009 | - |
|
1010 | - // Wrap the data in a response object. |
|
1011 | - $response = rest_ensure_response( $data ); |
|
1012 | - |
|
1013 | - $links = $this->prepare_links( $invoice ); |
|
1014 | - $response->add_links( $links ); |
|
1015 | - |
|
1016 | - if ( ! empty( $links['self']['href'] ) ) { |
|
1017 | - $actions = $this->get_available_actions( $invoice, $request ); |
|
1018 | - |
|
1019 | - $self = $links['self']['href']; |
|
1020 | - |
|
1021 | - foreach ( $actions as $rel ) { |
|
1022 | - $response->add_link( $rel, $self ); |
|
1023 | - } |
|
1024 | - } |
|
1025 | - |
|
1026 | - /** |
|
1027 | - * Filters the invoice data for a response. |
|
1028 | - * |
|
1029 | - * @since 1.0.13 |
|
1030 | - * |
|
1031 | - * @param WP_REST_Response $response The response object. |
|
1032 | - * @param WPInv_Invoice $invoice The invoice object. |
|
1033 | - * @param WP_REST_Request $request Request object. |
|
1034 | - */ |
|
1035 | - return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request ); |
|
1036 | - } |
|
1037 | - |
|
1038 | - /** |
|
1039 | - * Gets an array of fields to be included on the response. |
|
1040 | - * |
|
1041 | - * Included fields are based on item schema and `_fields=` request argument. |
|
1042 | - * |
|
1043 | - * @since 1.0.13 |
|
1044 | - * |
|
1045 | - * @param WP_REST_Request $request Full details about the request. |
|
1046 | - * @return array Fields to be included in the response. |
|
1047 | - */ |
|
1048 | - public function get_fields_for_response( $request ) { |
|
1049 | - $schema = $this->get_item_schema(); |
|
1050 | - $properties = isset( $schema['properties'] ) ? $schema['properties'] : array(); |
|
1051 | - |
|
1052 | - $additional_fields = $this->get_additional_fields(); |
|
1053 | - foreach ( $additional_fields as $field_name => $field_options ) { |
|
1054 | - // For back-compat, include any field with an empty schema |
|
1055 | - // because it won't be present in $this->get_item_schema(). |
|
1056 | - if ( is_null( $field_options['schema'] ) ) { |
|
1057 | - $properties[ $field_name ] = $field_options; |
|
1058 | - } |
|
1059 | - } |
|
1060 | - |
|
1061 | - // Exclude fields that specify a different context than the request context. |
|
1062 | - $context = $request['context']; |
|
1063 | - if ( $context ) { |
|
1064 | - foreach ( $properties as $name => $options ) { |
|
1065 | - if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) { |
|
1066 | - unset( $properties[ $name ] ); |
|
1067 | - } |
|
1068 | - } |
|
1069 | - } |
|
1070 | - |
|
1071 | - $fields = array_keys( $properties ); |
|
1072 | - |
|
1073 | - if ( ! isset( $request['_fields'] ) ) { |
|
1074 | - return $fields; |
|
1075 | - } |
|
1076 | - $requested_fields = wpinv_parse_list( $request['_fields'] ); |
|
1077 | - if ( 0 === count( $requested_fields ) ) { |
|
1078 | - return $fields; |
|
1079 | - } |
|
1080 | - // Trim off outside whitespace from the comma delimited list. |
|
1081 | - $requested_fields = array_map( 'trim', $requested_fields ); |
|
1082 | - // Always persist 'id', because it can be needed for add_additional_fields_to_object(). |
|
1083 | - if ( in_array( 'id', $fields, true ) ) { |
|
1084 | - $requested_fields[] = 'id'; |
|
1085 | - } |
|
1086 | - // Return the list of all requested fields which appear in the schema. |
|
1087 | - return array_reduce( |
|
1088 | - $requested_fields, |
|
1089 | - function( $response_fields, $field ) use ( $fields ) { |
|
1090 | - if ( in_array( $field, $fields, true ) ) { |
|
1091 | - $response_fields[] = $field; |
|
1092 | - return $response_fields; |
|
1093 | - } |
|
1094 | - // Check for nested fields if $field is not a direct match. |
|
1095 | - $nested_fields = explode( '.', $field ); |
|
1096 | - // A nested field is included so long as its top-level property is |
|
1097 | - // present in the schema. |
|
1098 | - if ( in_array( $nested_fields[0], $fields, true ) ) { |
|
1099 | - $response_fields[] = $field; |
|
1100 | - } |
|
1101 | - return $response_fields; |
|
1102 | - }, |
|
1103 | - array() |
|
1104 | - ); |
|
1105 | - } |
|
1106 | - |
|
1107 | - /** |
|
1108 | - * Retrieves the invoice's schema, conforming to JSON Schema. |
|
1109 | - * |
|
1110 | - * @since 1.0.13 |
|
1111 | - * |
|
1112 | - * @return array Invoice schema data. |
|
1113 | - */ |
|
1114 | - public function get_item_schema() { |
|
1115 | - |
|
1116 | - // Maybe retrieve the schema from cache. |
|
1117 | - if ( $this->schema ) { |
|
1118 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1119 | - } |
|
1120 | - |
|
1121 | - $schema = array( |
|
1122 | - '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
1123 | - 'title' => $this->post_type, |
|
1124 | - 'type' => 'object', |
|
1125 | - |
|
1126 | - // Base properties for every Invoice. |
|
1127 | - 'properties' => array( |
|
1128 | - |
|
1129 | - 'title' => array( |
|
1130 | - 'description' => __( 'The title for the invoice.', 'invoicing' ), |
|
1131 | - 'type' => 'string', |
|
1132 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1133 | - 'readonly' => true, |
|
1134 | - ), |
|
1135 | - |
|
1136 | - 'user_id' => array( |
|
1137 | - 'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ), |
|
1138 | - 'type' => 'integer', |
|
1139 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1140 | - ), |
|
1141 | - |
|
1142 | - 'email' => array( |
|
1143 | - 'description' => __( 'The email of the owner of the invoice.', 'invoicing' ), |
|
1144 | - 'type' => 'string', |
|
1145 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1146 | - 'readonly' => true, |
|
1147 | - ), |
|
1148 | - |
|
1149 | - 'ip' => array( |
|
1150 | - 'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ), |
|
1151 | - 'type' => 'string', |
|
1152 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1153 | - ), |
|
1154 | - |
|
1155 | - 'user_info' => array( |
|
1156 | - 'description' => __( 'Information about the owner of the invoice.', 'invoicing' ), |
|
1157 | - 'type' => 'object', |
|
1158 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1159 | - 'properties' => array( |
|
1160 | - |
|
1161 | - 'first_name' => array( |
|
1162 | - 'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ), |
|
1163 | - 'type' => 'string', |
|
1164 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1165 | - ), |
|
1166 | - |
|
1167 | - 'last_name' => array( |
|
1168 | - 'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ), |
|
1169 | - 'type' => 'string', |
|
1170 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1171 | - ), |
|
1172 | - |
|
1173 | - 'company' => array( |
|
1174 | - 'description' => __( 'The company of the owner of the invoice.', 'invoicing' ), |
|
1175 | - 'type' => 'string', |
|
1176 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1177 | - ), |
|
1178 | - |
|
1179 | - 'vat_number' => array( |
|
1180 | - 'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ), |
|
1181 | - 'type' => 'string', |
|
1182 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1183 | - ), |
|
1184 | - |
|
1185 | - 'vat_rate' => array( |
|
1186 | - 'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ), |
|
1187 | - 'type' => 'string', |
|
1188 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1189 | - ), |
|
1190 | - |
|
1191 | - 'address' => array( |
|
1192 | - 'description' => __( 'The address of the invoice owner.', 'invoicing' ), |
|
1193 | - 'type' => 'string', |
|
1194 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1195 | - ), |
|
1196 | - |
|
1197 | - 'city' => array( |
|
1198 | - 'description' => __( 'The city of the invoice owner.', 'invoicing' ), |
|
1199 | - 'type' => 'string', |
|
1200 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1201 | - ), |
|
1202 | - |
|
1203 | - 'country' => array( |
|
1204 | - 'description' => __( 'The country of the invoice owner.', 'invoicing' ), |
|
1205 | - 'type' => 'string', |
|
1206 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1207 | - ), |
|
1208 | - |
|
1209 | - 'state' => array( |
|
1210 | - 'description' => __( 'The state of the invoice owner.', 'invoicing' ), |
|
1211 | - 'type' => 'string', |
|
1212 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1213 | - ), |
|
1214 | - |
|
1215 | - 'zip' => array( |
|
1216 | - 'description' => __( 'The zip code of the invoice owner.', 'invoicing' ), |
|
1217 | - 'type' => 'string', |
|
1218 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1219 | - ), |
|
1220 | - |
|
1221 | - 'phone' => array( |
|
1222 | - 'description' => __( 'The phone number of the invoice owner.', 'invoicing' ), |
|
1223 | - 'type' => 'string', |
|
1224 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1225 | - ), |
|
1226 | - ), |
|
1227 | - ), |
|
1228 | - |
|
1229 | - 'id' => array( |
|
1230 | - 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
1231 | - 'type' => 'integer', |
|
1232 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1233 | - 'readonly' => true, |
|
1234 | - ), |
|
1235 | - |
|
1236 | - 'key' => array( |
|
1237 | - 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
1238 | - 'type' => 'string', |
|
1239 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1240 | - 'readonly' => true, |
|
1241 | - ), |
|
1242 | - |
|
1243 | - 'number' => array( |
|
1244 | - 'description' => __( 'The invoice number.', 'invoicing' ), |
|
1245 | - 'type' => 'string', |
|
1246 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1247 | - 'readonly' => true, |
|
1248 | - ), |
|
1249 | - |
|
1250 | - 'transaction_id' => array( |
|
1251 | - 'description' => __( 'The transaction id of the invoice.', 'invoicing' ), |
|
1252 | - 'type' => 'string', |
|
1253 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1254 | - ), |
|
1255 | - |
|
1256 | - 'gateway' => array( |
|
1257 | - 'description' => __( 'The gateway used to process the invoice.', 'invoicing' ), |
|
1258 | - 'type' => 'string', |
|
1259 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1260 | - ), |
|
1261 | - |
|
1262 | - 'gateway_title' => array( |
|
1263 | - 'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ), |
|
1264 | - 'type' => 'string', |
|
1265 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1266 | - ), |
|
1267 | - |
|
1268 | - 'total' => array( |
|
1269 | - 'description' => __( 'The total amount of the invoice.', 'invoicing' ), |
|
1270 | - 'type' => 'number', |
|
1271 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1272 | - 'readonly' => true, |
|
1273 | - ), |
|
1274 | - |
|
1275 | - 'discount' => array( |
|
1276 | - 'description' => __( 'The discount applied to the invoice.', 'invoicing' ), |
|
1277 | - 'type' => 'number', |
|
1278 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1279 | - 'readonly' => true, |
|
1280 | - ), |
|
1281 | - |
|
1282 | - 'discount_code' => array( |
|
1283 | - 'description' => __( 'The discount code applied to the invoice.', 'invoicing' ), |
|
1284 | - 'type' => 'string', |
|
1285 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1286 | - 'readonly' => true, |
|
1287 | - ), |
|
1288 | - |
|
1289 | - 'tax' => array( |
|
1290 | - 'description' => __( 'The tax applied to the invoice.', 'invoicing' ), |
|
1291 | - 'type' => 'number', |
|
1292 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1293 | - 'readonly' => true, |
|
1294 | - ), |
|
1295 | - |
|
1296 | - 'fees_total' => array( |
|
1297 | - 'description' => __( 'The total fees applied to the invoice.', 'invoicing' ), |
|
1298 | - 'type' => 'number', |
|
1299 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1300 | - 'readonly' => true, |
|
1301 | - ), |
|
1302 | - |
|
1303 | - 'subtotal' => array( |
|
1304 | - 'description' => __( 'The sub-total for the invoice.', 'invoicing' ), |
|
1305 | - 'type' => 'number', |
|
1306 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1307 | - 'readonly' => true, |
|
1308 | - ), |
|
1309 | - |
|
1310 | - 'currency' => array( |
|
1311 | - 'description' => __( 'The currency used to process the invoice.', 'invoicing' ), |
|
1312 | - 'type' => 'string', |
|
1313 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1314 | - ), |
|
1315 | - |
|
1316 | - 'cart_details' => array( |
|
1317 | - 'description' => __( 'The cart details for invoice.', 'invoicing' ), |
|
1318 | - 'type' => 'array', |
|
1319 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1320 | - 'required' => true, |
|
1321 | - ), |
|
1322 | - |
|
1323 | - 'date' => array( |
|
1324 | - 'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ), |
|
1325 | - 'type' => array( 'string', 'null' ), |
|
1326 | - 'format' => 'date-time', |
|
1327 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1328 | - ), |
|
1329 | - |
|
1330 | - 'due_date' => array( |
|
1331 | - 'description' => __( 'The due date for the invoice.', 'invoicing' ), |
|
1332 | - 'type' => array( 'string', 'null' ), |
|
1333 | - 'format' => 'date-time', |
|
1334 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1335 | - ), |
|
1336 | - |
|
1337 | - 'completed_date' => array( |
|
1338 | - 'description' => __( 'The completed date for the invoice.', 'invoicing' ), |
|
1339 | - 'type' => array( 'string', 'null' ), |
|
1340 | - 'format' => 'date-time', |
|
1341 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1342 | - 'readonly' => true, |
|
1343 | - ), |
|
950 | + foreach( $invoice_properties as $property ) { |
|
951 | + |
|
952 | + if ( rest_is_field_included( $property, $fields ) ) { |
|
953 | + $data[$property] = $invoice->get( $property ); |
|
954 | + } |
|
955 | + |
|
956 | + } |
|
957 | + |
|
958 | + // Valid until |
|
959 | + if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) { |
|
960 | + $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true ); |
|
961 | + } |
|
962 | + |
|
963 | + // Cart details |
|
964 | + if ( rest_is_field_included( 'cart_details', $fields ) ) { |
|
965 | + $data['cart_details'] = $invoice->get( 'cart_details' ); |
|
966 | + } |
|
967 | + |
|
968 | + //Dates |
|
969 | + $invoice_properties = array( 'date', 'due_date', 'completed_date' ); |
|
970 | + |
|
971 | + foreach( $invoice_properties as $property ) { |
|
972 | + |
|
973 | + if ( rest_is_field_included( $property, $fields ) ) { |
|
974 | + $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) ); |
|
975 | + } |
|
976 | + |
|
977 | + } |
|
978 | + |
|
979 | + // User id |
|
980 | + if ( rest_is_field_included( 'user_id', $fields ) ) { |
|
981 | + $data['user_id'] = (int) $invoice->get( 'user_id' ); |
|
982 | + } |
|
983 | + |
|
984 | + // User info |
|
985 | + $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' ); |
|
986 | + |
|
987 | + foreach( $user_info as $property ) { |
|
988 | + |
|
989 | + if ( rest_is_field_included( "user_info.$property", $fields ) ) { |
|
990 | + $data['user_info'][$property] = $invoice->get( $property ); |
|
991 | + } |
|
992 | + |
|
993 | + } |
|
994 | + |
|
995 | + // Slug |
|
996 | + if ( rest_is_field_included( 'slug', $fields ) ) { |
|
997 | + $data['slug'] = $invoice->get( 'post_name' ); |
|
998 | + } |
|
999 | + |
|
1000 | + // View invoice link |
|
1001 | + if ( rest_is_field_included( 'link', $fields ) ) { |
|
1002 | + $data['link'] = esc_url( $invoice->get_view_url() ); |
|
1003 | + } |
|
1004 | + |
|
1005 | + |
|
1006 | + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
1007 | + $data = $this->add_additional_fields_to_object( $data, $request ); |
|
1008 | + $data = $this->filter_response_by_context( $data, $context ); |
|
1009 | + |
|
1010 | + // Wrap the data in a response object. |
|
1011 | + $response = rest_ensure_response( $data ); |
|
1012 | + |
|
1013 | + $links = $this->prepare_links( $invoice ); |
|
1014 | + $response->add_links( $links ); |
|
1015 | + |
|
1016 | + if ( ! empty( $links['self']['href'] ) ) { |
|
1017 | + $actions = $this->get_available_actions( $invoice, $request ); |
|
1018 | + |
|
1019 | + $self = $links['self']['href']; |
|
1020 | + |
|
1021 | + foreach ( $actions as $rel ) { |
|
1022 | + $response->add_link( $rel, $self ); |
|
1023 | + } |
|
1024 | + } |
|
1025 | + |
|
1026 | + /** |
|
1027 | + * Filters the invoice data for a response. |
|
1028 | + * |
|
1029 | + * @since 1.0.13 |
|
1030 | + * |
|
1031 | + * @param WP_REST_Response $response The response object. |
|
1032 | + * @param WPInv_Invoice $invoice The invoice object. |
|
1033 | + * @param WP_REST_Request $request Request object. |
|
1034 | + */ |
|
1035 | + return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request ); |
|
1036 | + } |
|
1037 | + |
|
1038 | + /** |
|
1039 | + * Gets an array of fields to be included on the response. |
|
1040 | + * |
|
1041 | + * Included fields are based on item schema and `_fields=` request argument. |
|
1042 | + * |
|
1043 | + * @since 1.0.13 |
|
1044 | + * |
|
1045 | + * @param WP_REST_Request $request Full details about the request. |
|
1046 | + * @return array Fields to be included in the response. |
|
1047 | + */ |
|
1048 | + public function get_fields_for_response( $request ) { |
|
1049 | + $schema = $this->get_item_schema(); |
|
1050 | + $properties = isset( $schema['properties'] ) ? $schema['properties'] : array(); |
|
1051 | + |
|
1052 | + $additional_fields = $this->get_additional_fields(); |
|
1053 | + foreach ( $additional_fields as $field_name => $field_options ) { |
|
1054 | + // For back-compat, include any field with an empty schema |
|
1055 | + // because it won't be present in $this->get_item_schema(). |
|
1056 | + if ( is_null( $field_options['schema'] ) ) { |
|
1057 | + $properties[ $field_name ] = $field_options; |
|
1058 | + } |
|
1059 | + } |
|
1060 | + |
|
1061 | + // Exclude fields that specify a different context than the request context. |
|
1062 | + $context = $request['context']; |
|
1063 | + if ( $context ) { |
|
1064 | + foreach ( $properties as $name => $options ) { |
|
1065 | + if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) { |
|
1066 | + unset( $properties[ $name ] ); |
|
1067 | + } |
|
1068 | + } |
|
1069 | + } |
|
1070 | + |
|
1071 | + $fields = array_keys( $properties ); |
|
1072 | + |
|
1073 | + if ( ! isset( $request['_fields'] ) ) { |
|
1074 | + return $fields; |
|
1075 | + } |
|
1076 | + $requested_fields = wpinv_parse_list( $request['_fields'] ); |
|
1077 | + if ( 0 === count( $requested_fields ) ) { |
|
1078 | + return $fields; |
|
1079 | + } |
|
1080 | + // Trim off outside whitespace from the comma delimited list. |
|
1081 | + $requested_fields = array_map( 'trim', $requested_fields ); |
|
1082 | + // Always persist 'id', because it can be needed for add_additional_fields_to_object(). |
|
1083 | + if ( in_array( 'id', $fields, true ) ) { |
|
1084 | + $requested_fields[] = 'id'; |
|
1085 | + } |
|
1086 | + // Return the list of all requested fields which appear in the schema. |
|
1087 | + return array_reduce( |
|
1088 | + $requested_fields, |
|
1089 | + function( $response_fields, $field ) use ( $fields ) { |
|
1090 | + if ( in_array( $field, $fields, true ) ) { |
|
1091 | + $response_fields[] = $field; |
|
1092 | + return $response_fields; |
|
1093 | + } |
|
1094 | + // Check for nested fields if $field is not a direct match. |
|
1095 | + $nested_fields = explode( '.', $field ); |
|
1096 | + // A nested field is included so long as its top-level property is |
|
1097 | + // present in the schema. |
|
1098 | + if ( in_array( $nested_fields[0], $fields, true ) ) { |
|
1099 | + $response_fields[] = $field; |
|
1100 | + } |
|
1101 | + return $response_fields; |
|
1102 | + }, |
|
1103 | + array() |
|
1104 | + ); |
|
1105 | + } |
|
1106 | + |
|
1107 | + /** |
|
1108 | + * Retrieves the invoice's schema, conforming to JSON Schema. |
|
1109 | + * |
|
1110 | + * @since 1.0.13 |
|
1111 | + * |
|
1112 | + * @return array Invoice schema data. |
|
1113 | + */ |
|
1114 | + public function get_item_schema() { |
|
1115 | + |
|
1116 | + // Maybe retrieve the schema from cache. |
|
1117 | + if ( $this->schema ) { |
|
1118 | + return $this->add_additional_fields_schema( $this->schema ); |
|
1119 | + } |
|
1120 | + |
|
1121 | + $schema = array( |
|
1122 | + '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
1123 | + 'title' => $this->post_type, |
|
1124 | + 'type' => 'object', |
|
1125 | + |
|
1126 | + // Base properties for every Invoice. |
|
1127 | + 'properties' => array( |
|
1128 | + |
|
1129 | + 'title' => array( |
|
1130 | + 'description' => __( 'The title for the invoice.', 'invoicing' ), |
|
1131 | + 'type' => 'string', |
|
1132 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1133 | + 'readonly' => true, |
|
1134 | + ), |
|
1135 | + |
|
1136 | + 'user_id' => array( |
|
1137 | + 'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ), |
|
1138 | + 'type' => 'integer', |
|
1139 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1140 | + ), |
|
1141 | + |
|
1142 | + 'email' => array( |
|
1143 | + 'description' => __( 'The email of the owner of the invoice.', 'invoicing' ), |
|
1144 | + 'type' => 'string', |
|
1145 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1146 | + 'readonly' => true, |
|
1147 | + ), |
|
1148 | + |
|
1149 | + 'ip' => array( |
|
1150 | + 'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ), |
|
1151 | + 'type' => 'string', |
|
1152 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1153 | + ), |
|
1154 | + |
|
1155 | + 'user_info' => array( |
|
1156 | + 'description' => __( 'Information about the owner of the invoice.', 'invoicing' ), |
|
1157 | + 'type' => 'object', |
|
1158 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1159 | + 'properties' => array( |
|
1160 | + |
|
1161 | + 'first_name' => array( |
|
1162 | + 'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ), |
|
1163 | + 'type' => 'string', |
|
1164 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1165 | + ), |
|
1166 | + |
|
1167 | + 'last_name' => array( |
|
1168 | + 'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ), |
|
1169 | + 'type' => 'string', |
|
1170 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1171 | + ), |
|
1172 | + |
|
1173 | + 'company' => array( |
|
1174 | + 'description' => __( 'The company of the owner of the invoice.', 'invoicing' ), |
|
1175 | + 'type' => 'string', |
|
1176 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1177 | + ), |
|
1178 | + |
|
1179 | + 'vat_number' => array( |
|
1180 | + 'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ), |
|
1181 | + 'type' => 'string', |
|
1182 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1183 | + ), |
|
1184 | + |
|
1185 | + 'vat_rate' => array( |
|
1186 | + 'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ), |
|
1187 | + 'type' => 'string', |
|
1188 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1189 | + ), |
|
1190 | + |
|
1191 | + 'address' => array( |
|
1192 | + 'description' => __( 'The address of the invoice owner.', 'invoicing' ), |
|
1193 | + 'type' => 'string', |
|
1194 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1195 | + ), |
|
1196 | + |
|
1197 | + 'city' => array( |
|
1198 | + 'description' => __( 'The city of the invoice owner.', 'invoicing' ), |
|
1199 | + 'type' => 'string', |
|
1200 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1201 | + ), |
|
1202 | + |
|
1203 | + 'country' => array( |
|
1204 | + 'description' => __( 'The country of the invoice owner.', 'invoicing' ), |
|
1205 | + 'type' => 'string', |
|
1206 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1207 | + ), |
|
1208 | + |
|
1209 | + 'state' => array( |
|
1210 | + 'description' => __( 'The state of the invoice owner.', 'invoicing' ), |
|
1211 | + 'type' => 'string', |
|
1212 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1213 | + ), |
|
1214 | + |
|
1215 | + 'zip' => array( |
|
1216 | + 'description' => __( 'The zip code of the invoice owner.', 'invoicing' ), |
|
1217 | + 'type' => 'string', |
|
1218 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1219 | + ), |
|
1220 | + |
|
1221 | + 'phone' => array( |
|
1222 | + 'description' => __( 'The phone number of the invoice owner.', 'invoicing' ), |
|
1223 | + 'type' => 'string', |
|
1224 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1225 | + ), |
|
1226 | + ), |
|
1227 | + ), |
|
1228 | + |
|
1229 | + 'id' => array( |
|
1230 | + 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
1231 | + 'type' => 'integer', |
|
1232 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1233 | + 'readonly' => true, |
|
1234 | + ), |
|
1235 | + |
|
1236 | + 'key' => array( |
|
1237 | + 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
1238 | + 'type' => 'string', |
|
1239 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1240 | + 'readonly' => true, |
|
1241 | + ), |
|
1242 | + |
|
1243 | + 'number' => array( |
|
1244 | + 'description' => __( 'The invoice number.', 'invoicing' ), |
|
1245 | + 'type' => 'string', |
|
1246 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1247 | + 'readonly' => true, |
|
1248 | + ), |
|
1249 | + |
|
1250 | + 'transaction_id' => array( |
|
1251 | + 'description' => __( 'The transaction id of the invoice.', 'invoicing' ), |
|
1252 | + 'type' => 'string', |
|
1253 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1254 | + ), |
|
1255 | + |
|
1256 | + 'gateway' => array( |
|
1257 | + 'description' => __( 'The gateway used to process the invoice.', 'invoicing' ), |
|
1258 | + 'type' => 'string', |
|
1259 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1260 | + ), |
|
1261 | + |
|
1262 | + 'gateway_title' => array( |
|
1263 | + 'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ), |
|
1264 | + 'type' => 'string', |
|
1265 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1266 | + ), |
|
1267 | + |
|
1268 | + 'total' => array( |
|
1269 | + 'description' => __( 'The total amount of the invoice.', 'invoicing' ), |
|
1270 | + 'type' => 'number', |
|
1271 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1272 | + 'readonly' => true, |
|
1273 | + ), |
|
1274 | + |
|
1275 | + 'discount' => array( |
|
1276 | + 'description' => __( 'The discount applied to the invoice.', 'invoicing' ), |
|
1277 | + 'type' => 'number', |
|
1278 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1279 | + 'readonly' => true, |
|
1280 | + ), |
|
1281 | + |
|
1282 | + 'discount_code' => array( |
|
1283 | + 'description' => __( 'The discount code applied to the invoice.', 'invoicing' ), |
|
1284 | + 'type' => 'string', |
|
1285 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1286 | + 'readonly' => true, |
|
1287 | + ), |
|
1288 | + |
|
1289 | + 'tax' => array( |
|
1290 | + 'description' => __( 'The tax applied to the invoice.', 'invoicing' ), |
|
1291 | + 'type' => 'number', |
|
1292 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1293 | + 'readonly' => true, |
|
1294 | + ), |
|
1295 | + |
|
1296 | + 'fees_total' => array( |
|
1297 | + 'description' => __( 'The total fees applied to the invoice.', 'invoicing' ), |
|
1298 | + 'type' => 'number', |
|
1299 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1300 | + 'readonly' => true, |
|
1301 | + ), |
|
1302 | + |
|
1303 | + 'subtotal' => array( |
|
1304 | + 'description' => __( 'The sub-total for the invoice.', 'invoicing' ), |
|
1305 | + 'type' => 'number', |
|
1306 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1307 | + 'readonly' => true, |
|
1308 | + ), |
|
1309 | + |
|
1310 | + 'currency' => array( |
|
1311 | + 'description' => __( 'The currency used to process the invoice.', 'invoicing' ), |
|
1312 | + 'type' => 'string', |
|
1313 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1314 | + ), |
|
1315 | + |
|
1316 | + 'cart_details' => array( |
|
1317 | + 'description' => __( 'The cart details for invoice.', 'invoicing' ), |
|
1318 | + 'type' => 'array', |
|
1319 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1320 | + 'required' => true, |
|
1321 | + ), |
|
1322 | + |
|
1323 | + 'date' => array( |
|
1324 | + 'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ), |
|
1325 | + 'type' => array( 'string', 'null' ), |
|
1326 | + 'format' => 'date-time', |
|
1327 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1328 | + ), |
|
1329 | + |
|
1330 | + 'due_date' => array( |
|
1331 | + 'description' => __( 'The due date for the invoice.', 'invoicing' ), |
|
1332 | + 'type' => array( 'string', 'null' ), |
|
1333 | + 'format' => 'date-time', |
|
1334 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1335 | + ), |
|
1336 | + |
|
1337 | + 'completed_date' => array( |
|
1338 | + 'description' => __( 'The completed date for the invoice.', 'invoicing' ), |
|
1339 | + 'type' => array( 'string', 'null' ), |
|
1340 | + 'format' => 'date-time', |
|
1341 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1342 | + 'readonly' => true, |
|
1343 | + ), |
|
1344 | 1344 | |
1345 | - 'link' => array( |
|
1346 | - 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
1347 | - 'type' => 'string', |
|
1348 | - 'format' => 'uri', |
|
1349 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1350 | - 'readonly' => true, |
|
1351 | - ), |
|
1352 | - |
|
1353 | - 'mode' => array( |
|
1354 | - 'description' => __( 'The mode used to process the invoice.', 'invoicing' ), |
|
1355 | - 'type' => 'string', |
|
1356 | - 'enum' => array( 'live', 'test' ), |
|
1357 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1358 | - 'readonly' => true, |
|
1359 | - ), |
|
1360 | - |
|
1361 | - 'slug' => array( |
|
1362 | - 'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ), |
|
1363 | - 'type' => 'string', |
|
1364 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1365 | - 'arg_options' => array( |
|
1366 | - 'sanitize_callback' => array( $this, 'sanitize_slug' ), |
|
1367 | - ), |
|
1368 | - 'readonly' => true, |
|
1369 | - ), |
|
1370 | - |
|
1371 | - 'status' => array( |
|
1372 | - 'description' => __( 'A named status for the invoice.', 'invoicing' ), |
|
1373 | - 'type' => 'string', |
|
1374 | - 'enum' => $this->get_post_statuses(), |
|
1375 | - 'context' => array( 'view', 'edit' ), |
|
1376 | - 'default' => 'wpi-pending', |
|
1377 | - ), |
|
1378 | - |
|
1379 | - 'status_nicename' => array( |
|
1380 | - 'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ), |
|
1381 | - 'type' => 'string', |
|
1382 | - 'context' => array( 'view', 'embed' ), |
|
1383 | - 'readonly' => true, |
|
1384 | - ), |
|
1385 | - |
|
1386 | - 'post_type' => array( |
|
1387 | - 'description' => __( 'The post type for the invoice.', 'invoicing' ), |
|
1388 | - 'type' => 'string', |
|
1389 | - 'context' => array( 'view' ), |
|
1390 | - 'readonly' => true, |
|
1391 | - ), |
|
1392 | - ), |
|
1393 | - ); |
|
1394 | - |
|
1395 | - // Add helpful links to the invoice schem. |
|
1396 | - $schema['links'] = $this->get_schema_links(); |
|
1397 | - |
|
1398 | - /** |
|
1399 | - * Filters the invoice schema for the REST API. |
|
1400 | - * |
|
1401 | - * Enables adding extra properties to invoices. |
|
1402 | - * |
|
1403 | - * @since 1.0.13 |
|
1404 | - * |
|
1405 | - * @param array $schema The invoice schema. |
|
1406 | - */ |
|
1345 | + 'link' => array( |
|
1346 | + 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
1347 | + 'type' => 'string', |
|
1348 | + 'format' => 'uri', |
|
1349 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1350 | + 'readonly' => true, |
|
1351 | + ), |
|
1352 | + |
|
1353 | + 'mode' => array( |
|
1354 | + 'description' => __( 'The mode used to process the invoice.', 'invoicing' ), |
|
1355 | + 'type' => 'string', |
|
1356 | + 'enum' => array( 'live', 'test' ), |
|
1357 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1358 | + 'readonly' => true, |
|
1359 | + ), |
|
1360 | + |
|
1361 | + 'slug' => array( |
|
1362 | + 'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ), |
|
1363 | + 'type' => 'string', |
|
1364 | + 'context' => array( 'view', 'edit', 'embed' ), |
|
1365 | + 'arg_options' => array( |
|
1366 | + 'sanitize_callback' => array( $this, 'sanitize_slug' ), |
|
1367 | + ), |
|
1368 | + 'readonly' => true, |
|
1369 | + ), |
|
1370 | + |
|
1371 | + 'status' => array( |
|
1372 | + 'description' => __( 'A named status for the invoice.', 'invoicing' ), |
|
1373 | + 'type' => 'string', |
|
1374 | + 'enum' => $this->get_post_statuses(), |
|
1375 | + 'context' => array( 'view', 'edit' ), |
|
1376 | + 'default' => 'wpi-pending', |
|
1377 | + ), |
|
1378 | + |
|
1379 | + 'status_nicename' => array( |
|
1380 | + 'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ), |
|
1381 | + 'type' => 'string', |
|
1382 | + 'context' => array( 'view', 'embed' ), |
|
1383 | + 'readonly' => true, |
|
1384 | + ), |
|
1385 | + |
|
1386 | + 'post_type' => array( |
|
1387 | + 'description' => __( 'The post type for the invoice.', 'invoicing' ), |
|
1388 | + 'type' => 'string', |
|
1389 | + 'context' => array( 'view' ), |
|
1390 | + 'readonly' => true, |
|
1391 | + ), |
|
1392 | + ), |
|
1393 | + ); |
|
1394 | + |
|
1395 | + // Add helpful links to the invoice schem. |
|
1396 | + $schema['links'] = $this->get_schema_links(); |
|
1397 | + |
|
1398 | + /** |
|
1399 | + * Filters the invoice schema for the REST API. |
|
1400 | + * |
|
1401 | + * Enables adding extra properties to invoices. |
|
1402 | + * |
|
1403 | + * @since 1.0.13 |
|
1404 | + * |
|
1405 | + * @param array $schema The invoice schema. |
|
1406 | + */ |
|
1407 | 1407 | $schema = apply_filters( "wpinv_rest_invoice_schema", $schema ); |
1408 | 1408 | |
1409 | - // Cache the invoice schema. |
|
1410 | - $this->schema = $schema; |
|
1409 | + // Cache the invoice schema. |
|
1410 | + $this->schema = $schema; |
|
1411 | 1411 | |
1412 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1413 | - } |
|
1414 | - |
|
1415 | - /** |
|
1416 | - * Retrieve Link Description Objects that should be added to the Schema for the invoices collection. |
|
1417 | - * |
|
1418 | - * @since 1.0.13 |
|
1419 | - * |
|
1420 | - * @return array |
|
1421 | - */ |
|
1422 | - protected function get_schema_links() { |
|
1423 | - |
|
1424 | - $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" ); |
|
1425 | - |
|
1426 | - $links = array(); |
|
1427 | - |
|
1428 | - $links[] = array( |
|
1429 | - 'rel' => 'https://api.w.org/action-publish', |
|
1430 | - 'title' => __( 'The current user can mark this invoice as completed.', 'invoicing' ), |
|
1431 | - 'href' => $href, |
|
1432 | - 'targetSchema' => array( |
|
1433 | - 'type' => 'object', |
|
1434 | - 'properties' => array( |
|
1435 | - 'status' => array( |
|
1436 | - 'type' => 'string', |
|
1437 | - 'enum' => array( 'publish', 'wpi-renewal' ), |
|
1438 | - ), |
|
1439 | - ), |
|
1440 | - ), |
|
1441 | - ); |
|
1442 | - |
|
1443 | - $links[] = array( |
|
1444 | - 'rel' => 'https://api.w.org/action-assign-author', |
|
1445 | - 'title' => __( 'The current user can change the owner of this invoice.', 'invoicing' ), |
|
1446 | - 'href' => $href, |
|
1447 | - 'targetSchema' => array( |
|
1448 | - 'type' => 'object', |
|
1449 | - 'properties' => array( |
|
1450 | - 'user_id' => array( |
|
1451 | - 'type' => 'integer', |
|
1452 | - ), |
|
1453 | - ), |
|
1454 | - ), |
|
1455 | - ); |
|
1456 | - |
|
1457 | - return $links; |
|
1458 | - } |
|
1459 | - |
|
1460 | - /** |
|
1461 | - * Prepares links for the request. |
|
1462 | - * |
|
1463 | - * @since 1.0.13 |
|
1464 | - * |
|
1465 | - * @param WPInv_Invoice $invoice Invoice Object. |
|
1466 | - * @return array Links for the given invoice. |
|
1467 | - */ |
|
1468 | - protected function prepare_links( $invoice ) { |
|
1469 | - |
|
1470 | - // Prepare the base REST API endpoint for invoices. |
|
1471 | - $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); |
|
1472 | - |
|
1473 | - // Entity meta. |
|
1474 | - $links = array( |
|
1475 | - 'self' => array( |
|
1476 | - 'href' => rest_url( trailingslashit( $base ) . $invoice->ID ), |
|
1477 | - ), |
|
1478 | - 'collection' => array( |
|
1479 | - 'href' => rest_url( $base ), |
|
1480 | - ), |
|
1481 | - ); |
|
1482 | - |
|
1483 | - if ( ! empty( $invoice->user_id ) ) { |
|
1484 | - $links['user'] = array( |
|
1485 | - 'href' => rest_url( 'wp/v2/users/' . $invoice->user_id ), |
|
1486 | - 'embeddable' => true, |
|
1487 | - ); |
|
1488 | - } |
|
1489 | - |
|
1490 | - /** |
|
1491 | - * Filters the returned invoice links for the REST API. |
|
1492 | - * |
|
1493 | - * Enables adding extra links to invoice API responses. |
|
1494 | - * |
|
1495 | - * @since 1.0.13 |
|
1496 | - * |
|
1497 | - * @param array $links Rest links. |
|
1498 | - */ |
|
1499 | - return apply_filters( "wpinv_rest_invoice_links", $links ); |
|
1500 | - |
|
1501 | - } |
|
1502 | - |
|
1503 | - /** |
|
1504 | - * Get the link relations available for the post and current user. |
|
1505 | - * |
|
1506 | - * @since 1.0.13 |
|
1507 | - * |
|
1508 | - * @param WPInv_Invoice $invoice Invoice object. |
|
1509 | - * @param WP_REST_Request $request Request object. |
|
1510 | - * @return array List of link relations. |
|
1511 | - */ |
|
1512 | - protected function get_available_actions( $invoice, $request ) { |
|
1513 | - |
|
1514 | - if ( 'edit' !== $request['context'] ) { |
|
1515 | - return array(); |
|
1516 | - } |
|
1517 | - |
|
1518 | - $rels = array(); |
|
1519 | - |
|
1520 | - // Retrieve the post type object. |
|
1521 | - $post_type = get_post_type_object( $invoice->post_type ); |
|
1522 | - |
|
1523 | - // Mark invoice as completed. |
|
1524 | - if ( current_user_can( $post_type->cap->publish_posts ) ) { |
|
1525 | - $rels[] = 'https://api.w.org/action-publish'; |
|
1526 | - } |
|
1527 | - |
|
1528 | - // Change the owner of the invoice. |
|
1529 | - if ( current_user_can( $post_type->cap->edit_others_posts ) ) { |
|
1530 | - $rels[] = 'https://api.w.org/action-assign-author'; |
|
1531 | - } |
|
1532 | - |
|
1533 | - /** |
|
1534 | - * Filters the available invoice link relations for the REST API. |
|
1535 | - * |
|
1536 | - * Enables adding extra link relation for the current user and request to invoice responses. |
|
1537 | - * |
|
1538 | - * @since 1.0.13 |
|
1539 | - * |
|
1540 | - * @param array $rels Available link relations. |
|
1541 | - */ |
|
1542 | - return apply_filters( "wpinv_rest_invoice_link_relations", $rels ); |
|
1543 | - } |
|
1544 | - |
|
1545 | - /** |
|
1546 | - * Sanitizes and validates the list of post statuses. |
|
1547 | - * |
|
1548 | - * @since 1.0.13 |
|
1549 | - * |
|
1550 | - * @param string|array $statuses One or more post statuses. |
|
1551 | - * @param WP_REST_Request $request Full details about the request. |
|
1552 | - * @param string $parameter Additional parameter to pass to validation. |
|
1553 | - * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. |
|
1554 | - */ |
|
1555 | - public function sanitize_post_statuses( $statuses, $request, $parameter ) { |
|
1556 | - return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() ); |
|
1557 | - } |
|
1558 | - |
|
1559 | - /** |
|
1560 | - * Retrieves a valid list of post statuses. |
|
1561 | - * |
|
1562 | - * @since 1.0.15 |
|
1563 | - * |
|
1564 | - * @return array A list of registered item statuses. |
|
1565 | - */ |
|
1566 | - public function get_post_statuses() { |
|
1567 | - return array_keys( wpinv_get_invoice_statuses( true, true ) ); |
|
1568 | - } |
|
1412 | + return $this->add_additional_fields_schema( $this->schema ); |
|
1413 | + } |
|
1414 | + |
|
1415 | + /** |
|
1416 | + * Retrieve Link Description Objects that should be added to the Schema for the invoices collection. |
|
1417 | + * |
|
1418 | + * @since 1.0.13 |
|
1419 | + * |
|
1420 | + * @return array |
|
1421 | + */ |
|
1422 | + protected function get_schema_links() { |
|
1423 | + |
|
1424 | + $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" ); |
|
1425 | + |
|
1426 | + $links = array(); |
|
1427 | + |
|
1428 | + $links[] = array( |
|
1429 | + 'rel' => 'https://api.w.org/action-publish', |
|
1430 | + 'title' => __( 'The current user can mark this invoice as completed.', 'invoicing' ), |
|
1431 | + 'href' => $href, |
|
1432 | + 'targetSchema' => array( |
|
1433 | + 'type' => 'object', |
|
1434 | + 'properties' => array( |
|
1435 | + 'status' => array( |
|
1436 | + 'type' => 'string', |
|
1437 | + 'enum' => array( 'publish', 'wpi-renewal' ), |
|
1438 | + ), |
|
1439 | + ), |
|
1440 | + ), |
|
1441 | + ); |
|
1442 | + |
|
1443 | + $links[] = array( |
|
1444 | + 'rel' => 'https://api.w.org/action-assign-author', |
|
1445 | + 'title' => __( 'The current user can change the owner of this invoice.', 'invoicing' ), |
|
1446 | + 'href' => $href, |
|
1447 | + 'targetSchema' => array( |
|
1448 | + 'type' => 'object', |
|
1449 | + 'properties' => array( |
|
1450 | + 'user_id' => array( |
|
1451 | + 'type' => 'integer', |
|
1452 | + ), |
|
1453 | + ), |
|
1454 | + ), |
|
1455 | + ); |
|
1456 | + |
|
1457 | + return $links; |
|
1458 | + } |
|
1459 | + |
|
1460 | + /** |
|
1461 | + * Prepares links for the request. |
|
1462 | + * |
|
1463 | + * @since 1.0.13 |
|
1464 | + * |
|
1465 | + * @param WPInv_Invoice $invoice Invoice Object. |
|
1466 | + * @return array Links for the given invoice. |
|
1467 | + */ |
|
1468 | + protected function prepare_links( $invoice ) { |
|
1469 | + |
|
1470 | + // Prepare the base REST API endpoint for invoices. |
|
1471 | + $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); |
|
1472 | + |
|
1473 | + // Entity meta. |
|
1474 | + $links = array( |
|
1475 | + 'self' => array( |
|
1476 | + 'href' => rest_url( trailingslashit( $base ) . $invoice->ID ), |
|
1477 | + ), |
|
1478 | + 'collection' => array( |
|
1479 | + 'href' => rest_url( $base ), |
|
1480 | + ), |
|
1481 | + ); |
|
1482 | + |
|
1483 | + if ( ! empty( $invoice->user_id ) ) { |
|
1484 | + $links['user'] = array( |
|
1485 | + 'href' => rest_url( 'wp/v2/users/' . $invoice->user_id ), |
|
1486 | + 'embeddable' => true, |
|
1487 | + ); |
|
1488 | + } |
|
1489 | + |
|
1490 | + /** |
|
1491 | + * Filters the returned invoice links for the REST API. |
|
1492 | + * |
|
1493 | + * Enables adding extra links to invoice API responses. |
|
1494 | + * |
|
1495 | + * @since 1.0.13 |
|
1496 | + * |
|
1497 | + * @param array $links Rest links. |
|
1498 | + */ |
|
1499 | + return apply_filters( "wpinv_rest_invoice_links", $links ); |
|
1500 | + |
|
1501 | + } |
|
1502 | + |
|
1503 | + /** |
|
1504 | + * Get the link relations available for the post and current user. |
|
1505 | + * |
|
1506 | + * @since 1.0.13 |
|
1507 | + * |
|
1508 | + * @param WPInv_Invoice $invoice Invoice object. |
|
1509 | + * @param WP_REST_Request $request Request object. |
|
1510 | + * @return array List of link relations. |
|
1511 | + */ |
|
1512 | + protected function get_available_actions( $invoice, $request ) { |
|
1513 | + |
|
1514 | + if ( 'edit' !== $request['context'] ) { |
|
1515 | + return array(); |
|
1516 | + } |
|
1517 | + |
|
1518 | + $rels = array(); |
|
1519 | + |
|
1520 | + // Retrieve the post type object. |
|
1521 | + $post_type = get_post_type_object( $invoice->post_type ); |
|
1522 | + |
|
1523 | + // Mark invoice as completed. |
|
1524 | + if ( current_user_can( $post_type->cap->publish_posts ) ) { |
|
1525 | + $rels[] = 'https://api.w.org/action-publish'; |
|
1526 | + } |
|
1527 | + |
|
1528 | + // Change the owner of the invoice. |
|
1529 | + if ( current_user_can( $post_type->cap->edit_others_posts ) ) { |
|
1530 | + $rels[] = 'https://api.w.org/action-assign-author'; |
|
1531 | + } |
|
1532 | + |
|
1533 | + /** |
|
1534 | + * Filters the available invoice link relations for the REST API. |
|
1535 | + * |
|
1536 | + * Enables adding extra link relation for the current user and request to invoice responses. |
|
1537 | + * |
|
1538 | + * @since 1.0.13 |
|
1539 | + * |
|
1540 | + * @param array $rels Available link relations. |
|
1541 | + */ |
|
1542 | + return apply_filters( "wpinv_rest_invoice_link_relations", $rels ); |
|
1543 | + } |
|
1544 | + |
|
1545 | + /** |
|
1546 | + * Sanitizes and validates the list of post statuses. |
|
1547 | + * |
|
1548 | + * @since 1.0.13 |
|
1549 | + * |
|
1550 | + * @param string|array $statuses One or more post statuses. |
|
1551 | + * @param WP_REST_Request $request Full details about the request. |
|
1552 | + * @param string $parameter Additional parameter to pass to validation. |
|
1553 | + * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. |
|
1554 | + */ |
|
1555 | + public function sanitize_post_statuses( $statuses, $request, $parameter ) { |
|
1556 | + return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() ); |
|
1557 | + } |
|
1558 | + |
|
1559 | + /** |
|
1560 | + * Retrieves a valid list of post statuses. |
|
1561 | + * |
|
1562 | + * @since 1.0.15 |
|
1563 | + * |
|
1564 | + * @return array A list of registered item statuses. |
|
1565 | + */ |
|
1566 | + public function get_post_statuses() { |
|
1567 | + return array_keys( wpinv_get_invoice_statuses( true, true ) ); |
|
1568 | + } |
|
1569 | 1569 | |
1570 | 1570 | } |
1571 | 1571 | \ No newline at end of file |
@@ -8,7 +8,7 @@ discard block |
||
8 | 8 | * @since 1.0.13 |
9 | 9 | */ |
10 | 10 | |
11 | -if ( !defined( 'WPINC' ) ) { |
|
11 | +if (!defined('WPINC')) { |
|
12 | 12 | exit; |
13 | 13 | } |
14 | 14 | |
@@ -41,7 +41,7 @@ discard block |
||
41 | 41 | * |
42 | 42 | * @param string $namespace Api Namespace |
43 | 43 | */ |
44 | - public function __construct( $namespace ) { |
|
44 | + public function __construct($namespace) { |
|
45 | 45 | |
46 | 46 | // Set api namespace... |
47 | 47 | $this->namespace = $namespace; |
@@ -60,16 +60,16 @@ discard block |
||
60 | 60 | * @param WP_REST_Request $request Full details about the request. |
61 | 61 | * @return true|WP_Error True if the request has read access, WP_Error object otherwise. |
62 | 62 | */ |
63 | - public function get_items_permissions_check( $request ) { |
|
63 | + public function get_items_permissions_check($request) { |
|
64 | 64 | |
65 | - $post_type = get_post_type_object( $this->post_type ); |
|
65 | + $post_type = get_post_type_object($this->post_type); |
|
66 | 66 | |
67 | - if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) { |
|
68 | - return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
67 | + if ('edit' === $request['context'] && !current_user_can($post_type->cap->edit_posts)) { |
|
68 | + return new WP_Error('rest_forbidden_context', __('Sorry, you are not allowed to edit items.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
69 | 69 | } |
70 | 70 | |
71 | - if ( ! is_user_logged_in() ) { |
|
72 | - return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to view items.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
71 | + if (!is_user_logged_in()) { |
|
72 | + return new WP_Error('rest_forbidden', __('Sorry, you must be logged in to view items.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
73 | 73 | } |
74 | 74 | |
75 | 75 | // Read checks will be evaluated on a per invoice basis |
@@ -86,33 +86,33 @@ discard block |
||
86 | 86 | * @param WP_REST_Request $request Full details about the request. |
87 | 87 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
88 | 88 | */ |
89 | - public function get_items( $request ) { |
|
89 | + public function get_items($request) { |
|
90 | 90 | |
91 | 91 | // Retrieve request query parameters. |
92 | - $args = $this->get_request_collection_params( $request ); |
|
92 | + $args = $this->get_request_collection_params($request); |
|
93 | 93 | |
94 | 94 | // WP_Query Args. |
95 | - $wp_query_args = $this->get_collection_wp_query_params( $args, $request ); |
|
95 | + $wp_query_args = $this->get_collection_wp_query_params($args, $request); |
|
96 | 96 | |
97 | 97 | // Get invoice ids... |
98 | - $query = new WP_Query( $wp_query_args ); |
|
98 | + $query = new WP_Query($wp_query_args); |
|
99 | 99 | |
100 | 100 | // ... and map them into invoice objects. |
101 | - $_invoices = array_map( array( $this, 'get_post' ), $query->posts ); |
|
101 | + $_invoices = array_map(array($this, 'get_post'), $query->posts); |
|
102 | 102 | |
103 | 103 | // Prepare the retrieved invoices |
104 | 104 | $invoices = array(); |
105 | 105 | |
106 | - foreach( $_invoices as $invoice ) { |
|
107 | - if ( $this->check_read_permission( $invoice ) ) { |
|
108 | - $invoices[] = $this->prepare_response_for_collection( $this->prepare_item_for_response( $invoice, $request ) ); |
|
106 | + foreach ($_invoices as $invoice) { |
|
107 | + if ($this->check_read_permission($invoice)) { |
|
108 | + $invoices[] = $this->prepare_response_for_collection($this->prepare_item_for_response($invoice, $request)); |
|
109 | 109 | } |
110 | 110 | } |
111 | 111 | |
112 | 112 | // Prepare the response. |
113 | - $response = rest_ensure_response( $invoices ); |
|
114 | - $response->header( 'X-WP-Total', (int) $query->found_posts ); |
|
115 | - $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages ); |
|
113 | + $response = rest_ensure_response($invoices); |
|
114 | + $response->header('X-WP-Total', (int) $query->found_posts); |
|
115 | + $response->header('X-WP-TotalPages', (int) $query->max_num_pages); |
|
116 | 116 | |
117 | 117 | /** |
118 | 118 | * Filters the responses for invoices requests. |
@@ -125,9 +125,9 @@ discard block |
||
125 | 125 | * @param WP_REST_Request $request The request used. |
126 | 126 | * @param array $args Array of args used to retrieve the invoices |
127 | 127 | */ |
128 | - $response = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args ); |
|
128 | + $response = apply_filters("wpinv_rest_invoices_response", $response, $request, $args); |
|
129 | 129 | |
130 | - return rest_ensure_response( $response ); |
|
130 | + return rest_ensure_response($response); |
|
131 | 131 | |
132 | 132 | } |
133 | 133 | |
@@ -139,17 +139,17 @@ discard block |
||
139 | 139 | * @param int $invoice_id Supplied ID. |
140 | 140 | * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise. |
141 | 141 | */ |
142 | - protected function get_post( $invoice_id ) { |
|
142 | + protected function get_post($invoice_id) { |
|
143 | 143 | |
144 | - $error = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid item ID.', 'invoicing' ), array( 'status' => 404 ) ); |
|
144 | + $error = new WP_Error('rest_invoice_invalid_id', __('Invalid item ID.', 'invoicing'), array('status' => 404)); |
|
145 | 145 | |
146 | 146 | // Ids start from 1 |
147 | - if ( (int) $invoice_id <= 0 ) { |
|
147 | + if ((int) $invoice_id <= 0) { |
|
148 | 148 | return $error; |
149 | 149 | } |
150 | 150 | |
151 | - $invoice = wpinv_get_invoice( (int) $invoice_id ); |
|
152 | - if ( empty( $invoice ) || $this->post_type !== $invoice->post_type ) { |
|
151 | + $invoice = wpinv_get_invoice((int) $invoice_id); |
|
152 | + if (empty($invoice) || $this->post_type !== $invoice->post_type) { |
|
153 | 153 | return $error; |
154 | 154 | } |
155 | 155 | |
@@ -165,18 +165,18 @@ discard block |
||
165 | 165 | * @param WP_REST_Request $request Full details about the request. |
166 | 166 | * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise. |
167 | 167 | */ |
168 | - public function get_item_permissions_check( $request ) { |
|
168 | + public function get_item_permissions_check($request) { |
|
169 | 169 | |
170 | 170 | // Retrieve the invoice object. |
171 | - $invoice = $this->get_post( $request['id'] ); |
|
171 | + $invoice = $this->get_post($request['id']); |
|
172 | 172 | |
173 | 173 | // Ensure it is valid. |
174 | - if ( is_wp_error( $invoice ) ) { |
|
174 | + if (is_wp_error($invoice)) { |
|
175 | 175 | return $invoice; |
176 | 176 | } |
177 | 177 | |
178 | - if ( $invoice ) { |
|
179 | - return $this->check_read_permission( $invoice ); |
|
178 | + if ($invoice) { |
|
179 | + return $this->check_read_permission($invoice); |
|
180 | 180 | } |
181 | 181 | |
182 | 182 | return true; |
@@ -193,8 +193,8 @@ discard block |
||
193 | 193 | * @param WPInv_Invoice $invoice WPInv_Invoice object. |
194 | 194 | * @return bool Whether the post can be read. |
195 | 195 | */ |
196 | - public function check_read_permission( $invoice ) { |
|
197 | - return wpinv_user_can_view_invoice( $invoice->ID ); |
|
196 | + public function check_read_permission($invoice) { |
|
197 | + return wpinv_user_can_view_invoice($invoice->ID); |
|
198 | 198 | } |
199 | 199 | |
200 | 200 | /** |
@@ -205,19 +205,19 @@ discard block |
||
205 | 205 | * @param WP_REST_Request $request Full details about the request. |
206 | 206 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
207 | 207 | */ |
208 | - public function get_item( $request ) { |
|
208 | + public function get_item($request) { |
|
209 | 209 | |
210 | 210 | // Fetch the invoice. |
211 | - $invoice = $this->get_post( $request['id'] ); |
|
211 | + $invoice = $this->get_post($request['id']); |
|
212 | 212 | |
213 | 213 | // Abort early if it does not exist |
214 | - if ( is_wp_error( $invoice ) ) { |
|
214 | + if (is_wp_error($invoice)) { |
|
215 | 215 | return $invoice; |
216 | 216 | } |
217 | 217 | |
218 | 218 | // Prepare the response |
219 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
220 | - $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) ); |
|
219 | + $response = $this->prepare_item_for_response($invoice, $request); |
|
220 | + $response->link_header('alternate', esc_url($invoice->get_view_url()), array('type' => 'text/html')); |
|
221 | 221 | |
222 | 222 | /** |
223 | 223 | * Filters the responses for single invoice requests. |
@@ -229,9 +229,9 @@ discard block |
||
229 | 229 | * @param WP_HTTP_Response $response Response. |
230 | 230 | * @param WP_REST_Request $request The request used. |
231 | 231 | */ |
232 | - $response = apply_filters( "wpinv_rest_get_invoice_response", $response, $request ); |
|
232 | + $response = apply_filters("wpinv_rest_get_invoice_response", $response, $request); |
|
233 | 233 | |
234 | - return rest_ensure_response( $response ); |
|
234 | + return rest_ensure_response($response); |
|
235 | 235 | |
236 | 236 | } |
237 | 237 | |
@@ -243,18 +243,18 @@ discard block |
||
243 | 243 | * @param WP_REST_Request $request Full details about the request. |
244 | 244 | * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise. |
245 | 245 | */ |
246 | - public function create_item_permissions_check( $request ) { |
|
246 | + public function create_item_permissions_check($request) { |
|
247 | 247 | |
248 | - if ( ! empty( $request['id'] ) ) { |
|
249 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
248 | + if (!empty($request['id'])) { |
|
249 | + return new WP_Error('rest_invoice_exists', __('Cannot create existing item.', 'invoicing'), array('status' => 400)); |
|
250 | 250 | } |
251 | 251 | |
252 | - $post_type = get_post_type_object( $this->post_type ); |
|
252 | + $post_type = get_post_type_object($this->post_type); |
|
253 | 253 | |
254 | - if ( ! current_user_can( $post_type->cap->create_posts ) && ! wpinv_current_user_can_manage_invoicing() ) { |
|
254 | + if (!current_user_can($post_type->cap->create_posts) && !wpinv_current_user_can_manage_invoicing()) { |
|
255 | 255 | return new WP_Error( |
256 | 256 | 'rest_cannot_create', |
257 | - __( 'Sorry, you are not allowed to create items as this user.', 'invoicing' ), |
|
257 | + __('Sorry, you are not allowed to create items as this user.', 'invoicing'), |
|
258 | 258 | array( |
259 | 259 | 'status' => rest_authorization_required_code(), |
260 | 260 | ) |
@@ -272,32 +272,32 @@ discard block |
||
272 | 272 | * @param WP_REST_Request $request Full details about the request. |
273 | 273 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
274 | 274 | */ |
275 | - public function create_item( $request ) { |
|
275 | + public function create_item($request) { |
|
276 | 276 | |
277 | - if ( ! empty( $request['id'] ) ) { |
|
278 | - return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing item.', 'invoicing' ), array( 'status' => 400 ) ); |
|
277 | + if (!empty($request['id'])) { |
|
278 | + return new WP_Error('rest_invoice_exists', __('Cannot create existing item.', 'invoicing'), array('status' => 400)); |
|
279 | 279 | } |
280 | 280 | |
281 | - $request->set_param( 'context', 'edit' ); |
|
281 | + $request->set_param('context', 'edit'); |
|
282 | 282 | |
283 | 283 | // Prepare the updated data. |
284 | - $invoice_data = $this->prepare_item_for_database( $request ); |
|
284 | + $invoice_data = $this->prepare_item_for_database($request); |
|
285 | 285 | |
286 | - if ( is_wp_error( $invoice_data ) ) { |
|
286 | + if (is_wp_error($invoice_data)) { |
|
287 | 287 | return $invoice_data; |
288 | 288 | } |
289 | 289 | |
290 | 290 | // Try creating the invoice |
291 | 291 | $invoice_data['post_type'] = $this->post_type; |
292 | - $invoice_data['private_note'] = __( 'Created via API.', 'invoicing' ); |
|
293 | - $invoice = wpinv_insert_invoice( $invoice_data, true ); |
|
292 | + $invoice_data['private_note'] = __('Created via API.', 'invoicing'); |
|
293 | + $invoice = wpinv_insert_invoice($invoice_data, true); |
|
294 | 294 | |
295 | - if ( is_wp_error( $invoice ) ) { |
|
295 | + if (is_wp_error($invoice)) { |
|
296 | 296 | return $invoice; |
297 | 297 | } |
298 | 298 | |
299 | 299 | // Prepare the response |
300 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
300 | + $response = $this->prepare_item_for_response($invoice, $request); |
|
301 | 301 | |
302 | 302 | /** |
303 | 303 | * Fires after a single invoice is created or updated via the REST API. |
@@ -308,7 +308,7 @@ discard block |
||
308 | 308 | * @param WP_REST_Request $request Request object. |
309 | 309 | * @param bool $creating True when creating a post, false when updating. |
310 | 310 | */ |
311 | - do_action( "wpinv_rest_insert_invoice", $invoice, $request, true ); |
|
311 | + do_action("wpinv_rest_insert_invoice", $invoice, $request, true); |
|
312 | 312 | |
313 | 313 | /** |
314 | 314 | * Filters the responses for creating single invoice requests. |
@@ -320,9 +320,9 @@ discard block |
||
320 | 320 | * @param array $invoice_data Invoice properties. |
321 | 321 | * @param WP_REST_Request $request The request used. |
322 | 322 | */ |
323 | - $response = apply_filters( "wpinv_rest_create_invoice_response", $response, $request ); |
|
323 | + $response = apply_filters("wpinv_rest_create_invoice_response", $response, $request); |
|
324 | 324 | |
325 | - return rest_ensure_response( $response ); |
|
325 | + return rest_ensure_response($response); |
|
326 | 326 | } |
327 | 327 | |
328 | 328 | /** |
@@ -333,20 +333,20 @@ discard block |
||
333 | 333 | * @param WP_REST_Request $request Full details about the request. |
334 | 334 | * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise. |
335 | 335 | */ |
336 | - public function update_item_permissions_check( $request ) { |
|
336 | + public function update_item_permissions_check($request) { |
|
337 | 337 | |
338 | 338 | // Retrieve the invoice. |
339 | - $invoice = $this->get_post( $request['id'] ); |
|
340 | - if ( is_wp_error( $invoice ) ) { |
|
339 | + $invoice = $this->get_post($request['id']); |
|
340 | + if (is_wp_error($invoice)) { |
|
341 | 341 | return $invoice; |
342 | 342 | } |
343 | 343 | |
344 | - $post_type = get_post_type_object( $this->post_type ); |
|
344 | + $post_type = get_post_type_object($this->post_type); |
|
345 | 345 | |
346 | - if ( ! current_user_can( $post_type->cap->edit_post, $invoice->ID ) ) { |
|
346 | + if (!current_user_can($post_type->cap->edit_post, $invoice->ID)) { |
|
347 | 347 | return new WP_Error( |
348 | 348 | 'rest_cannot_edit', |
349 | - __( 'Sorry, you are not allowed to update this item.', 'invoicing' ), |
|
349 | + __('Sorry, you are not allowed to update this item.', 'invoicing'), |
|
350 | 350 | array( |
351 | 351 | 'status' => rest_authorization_required_code(), |
352 | 352 | ) |
@@ -364,46 +364,46 @@ discard block |
||
364 | 364 | * @param WP_REST_Request $request Full details about the request. |
365 | 365 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
366 | 366 | */ |
367 | - public function update_item( $request ) { |
|
367 | + public function update_item($request) { |
|
368 | 368 | |
369 | 369 | // Ensure the invoice exists. |
370 | - $valid_check = $this->get_post( $request['id'] ); |
|
370 | + $valid_check = $this->get_post($request['id']); |
|
371 | 371 | |
372 | 372 | // Abort early if it does not exist |
373 | - if ( is_wp_error( $valid_check ) ) { |
|
373 | + if (is_wp_error($valid_check)) { |
|
374 | 374 | return $valid_check; |
375 | 375 | } |
376 | 376 | |
377 | - $request->set_param( 'context', 'edit' ); |
|
377 | + $request->set_param('context', 'edit'); |
|
378 | 378 | |
379 | 379 | // Prepare the updated data. |
380 | - $data_to_update = $this->prepare_item_for_database( $request ); |
|
380 | + $data_to_update = $this->prepare_item_for_database($request); |
|
381 | 381 | |
382 | - if ( is_wp_error( $data_to_update ) ) { |
|
382 | + if (is_wp_error($data_to_update)) { |
|
383 | 383 | return $data_to_update; |
384 | 384 | } |
385 | 385 | |
386 | 386 | // Abort if no invoice data is provided |
387 | - if( empty( $data_to_update ) ) { |
|
388 | - return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) ); |
|
387 | + if (empty($data_to_update)) { |
|
388 | + return new WP_Error('missing_data', __('An update request cannot be empty.', 'invoicing')); |
|
389 | 389 | } |
390 | 390 | |
391 | 391 | // Include the invoice ID |
392 | 392 | $data_to_update['ID'] = $request['id']; |
393 | 393 | |
394 | 394 | // Update the invoice |
395 | - $updated_invoice = wpinv_update_invoice( $data_to_update, true ); |
|
395 | + $updated_invoice = wpinv_update_invoice($data_to_update, true); |
|
396 | 396 | |
397 | 397 | // Incase the update operation failed... |
398 | - if ( is_wp_error( $updated_invoice ) ) { |
|
398 | + if (is_wp_error($updated_invoice)) { |
|
399 | 399 | return $updated_invoice; |
400 | 400 | } |
401 | 401 | |
402 | 402 | // Prepare the response |
403 | - $response = $this->prepare_item_for_response( $updated_invoice, $request ); |
|
403 | + $response = $this->prepare_item_for_response($updated_invoice, $request); |
|
404 | 404 | |
405 | 405 | /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */ |
406 | - do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false ); |
|
406 | + do_action("wpinv_rest_insert_invoice", $updated_invoice, $request, false); |
|
407 | 407 | |
408 | 408 | /** |
409 | 409 | * Filters the responses for updating single invoice requests. |
@@ -415,9 +415,9 @@ discard block |
||
415 | 415 | * @param array $invoice_data Invoice properties. |
416 | 416 | * @param WP_REST_Request $request The request used. |
417 | 417 | */ |
418 | - $response = apply_filters( "wpinv_rest_update_invoice_response", $response, $request ); |
|
418 | + $response = apply_filters("wpinv_rest_update_invoice_response", $response, $request); |
|
419 | 419 | |
420 | - return rest_ensure_response( $response ); |
|
420 | + return rest_ensure_response($response); |
|
421 | 421 | } |
422 | 422 | |
423 | 423 | /** |
@@ -428,22 +428,22 @@ discard block |
||
428 | 428 | * @param WP_REST_Request $request Full details about the request. |
429 | 429 | * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise. |
430 | 430 | */ |
431 | - public function delete_item_permissions_check( $request ) { |
|
431 | + public function delete_item_permissions_check($request) { |
|
432 | 432 | |
433 | 433 | // Retrieve the invoice. |
434 | - $invoice = $this->get_post( $request['id'] ); |
|
435 | - if ( is_wp_error( $invoice ) ) { |
|
434 | + $invoice = $this->get_post($request['id']); |
|
435 | + if (is_wp_error($invoice)) { |
|
436 | 436 | return $invoice; |
437 | 437 | } |
438 | 438 | |
439 | 439 | // Ensure the current user can delete invoices |
440 | - if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'delete_invoices', $request['id'] ) ) { |
|
440 | + if (wpinv_current_user_can_manage_invoicing() || current_user_can('delete_invoices', $request['id'])) { |
|
441 | 441 | return true; |
442 | 442 | } |
443 | 443 | |
444 | 444 | return new WP_Error( |
445 | 445 | 'rest_cannot_delete', |
446 | - __( 'Sorry, you are not allowed to delete this item.', 'invoicing' ), |
|
446 | + __('Sorry, you are not allowed to delete this item.', 'invoicing'), |
|
447 | 447 | array( |
448 | 448 | 'status' => rest_authorization_required_code(), |
449 | 449 | ) |
@@ -458,31 +458,31 @@ discard block |
||
458 | 458 | * @param WP_REST_Request $request Full details about the request. |
459 | 459 | * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. |
460 | 460 | */ |
461 | - public function delete_item( $request ) { |
|
461 | + public function delete_item($request) { |
|
462 | 462 | |
463 | 463 | // Retrieve the invoice. |
464 | - $invoice = $this->get_post( $request['id'] ); |
|
465 | - if ( is_wp_error( $invoice ) ) { |
|
464 | + $invoice = $this->get_post($request['id']); |
|
465 | + if (is_wp_error($invoice)) { |
|
466 | 466 | return $invoice; |
467 | 467 | } |
468 | 468 | |
469 | - $request->set_param( 'context', 'edit' ); |
|
469 | + $request->set_param('context', 'edit'); |
|
470 | 470 | |
471 | 471 | // Prepare the invoice id |
472 | - $id = $invoice->ID; |
|
472 | + $id = $invoice->ID; |
|
473 | 473 | |
474 | 474 | // Prepare the response |
475 | - $response = $this->prepare_item_for_response( $invoice, $request ); |
|
475 | + $response = $this->prepare_item_for_response($invoice, $request); |
|
476 | 476 | |
477 | 477 | // Check if the user wants to bypass the trash... |
478 | 478 | $force_delete = (bool) $request['force']; |
479 | 479 | |
480 | 480 | // Try deleting the invoice. |
481 | - $deleted = wp_delete_post( $id, $force_delete ); |
|
481 | + $deleted = wp_delete_post($id, $force_delete); |
|
482 | 482 | |
483 | 483 | // Abort early if we can't delete the invoice. |
484 | - if ( ! $deleted ) { |
|
485 | - return new WP_Error( 'rest_cannot_delete', __( 'The item cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) ); |
|
484 | + if (!$deleted) { |
|
485 | + return new WP_Error('rest_cannot_delete', __('The item cannot be deleted.', 'invoicing'), array('status' => 500)); |
|
486 | 486 | } |
487 | 487 | |
488 | 488 | /** |
@@ -494,7 +494,7 @@ discard block |
||
494 | 494 | * @param WPInv_Invoice $invoice The deleted or trashed invoice. |
495 | 495 | * @param WP_REST_Request $request The request sent to the API. |
496 | 496 | */ |
497 | - do_action( "wpinv_rest_delete_invoice", $invoice, $request ); |
|
497 | + do_action("wpinv_rest_delete_invoice", $invoice, $request); |
|
498 | 498 | |
499 | 499 | return $response; |
500 | 500 | |
@@ -510,29 +510,29 @@ discard block |
||
510 | 510 | */ |
511 | 511 | public function get_collection_params() { |
512 | 512 | |
513 | - $query_params = array( |
|
513 | + $query_params = array( |
|
514 | 514 | |
515 | 515 | // item status. |
516 | 516 | 'status' => array( |
517 | 517 | 'default' => $this->get_post_statuses(), |
518 | - 'description' => __( 'Limit result set to items assigned one or more statuses.', 'invoicing' ), |
|
518 | + 'description' => __('Limit result set to items assigned one or more statuses.', 'invoicing'), |
|
519 | 519 | 'type' => 'array', |
520 | 520 | 'items' => array( |
521 | 521 | 'enum' => $this->get_post_statuses(), |
522 | 522 | 'type' => 'string', |
523 | 523 | ), |
524 | - 'sanitize_callback' => array( $this, 'sanitize_post_statuses' ), |
|
524 | + 'sanitize_callback' => array($this, 'sanitize_post_statuses'), |
|
525 | 525 | ), |
526 | 526 | |
527 | 527 | // User. |
528 | 528 | 'user' => array( |
529 | - 'description' => __( 'Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing' ), |
|
529 | + 'description' => __('Limit result set to items for a specif user. Accepts a user ID, or comma-separated list of IDs', 'invoicing'), |
|
530 | 530 | 'type' => 'string', |
531 | 531 | ), |
532 | 532 | |
533 | 533 | // Exclude certain users |
534 | 534 | 'exclude_users' => array( |
535 | - 'description' => __( 'Exclude items from specific users.', 'invoicing' ), |
|
535 | + 'description' => __('Exclude items from specific users.', 'invoicing'), |
|
536 | 536 | 'type' => 'array', |
537 | 537 | 'items' => array( |
538 | 538 | 'type' => 'integer', |
@@ -542,62 +542,62 @@ discard block |
||
542 | 542 | |
543 | 543 | // Items before. |
544 | 544 | 'before_date' => array( |
545 | - 'description' => __( 'Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
545 | + 'description' => __('Limit result set to items created before a specific date. Accepts strtotime()-compatible string.', 'invoicing'), |
|
546 | 546 | 'type' => 'string', |
547 | 547 | ), |
548 | 548 | |
549 | 549 | 'meta_key' => array( |
550 | - 'description' => __( 'Filter items by custom field key.', 'invoicing' ), |
|
550 | + 'description' => __('Filter items by custom field key.', 'invoicing'), |
|
551 | 551 | 'type' => 'string', |
552 | 552 | ), |
553 | 553 | |
554 | 554 | 'meta_compare_key' => array( |
555 | - 'description' => __( 'Comparison operator to test the `meta_key`.', 'invoicing' ), |
|
555 | + 'description' => __('Comparison operator to test the `meta_key`.', 'invoicing'), |
|
556 | 556 | 'type' => 'string', |
557 | 557 | 'default' => '=', |
558 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
558 | + 'enum' => array_map('trim', explode(',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE')), |
|
559 | 559 | ), |
560 | 560 | |
561 | 561 | 'meta_value' => array( |
562 | - 'description' => __( 'Filter items by custom field value.', 'invoicing' ), |
|
562 | + 'description' => __('Filter items by custom field value.', 'invoicing'), |
|
563 | 563 | 'type' => 'string', |
564 | 564 | ), |
565 | 565 | |
566 | 566 | 'meta_compare' => array( |
567 | - 'description' => __( 'Comparison operator to test the `meta_value`.', 'invoicing' ), |
|
567 | + 'description' => __('Comparison operator to test the `meta_value`.', 'invoicing'), |
|
568 | 568 | 'type' => 'string', |
569 | 569 | 'default' => '=', |
570 | - 'enum' => array_map( 'trim', explode( ',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE' ) ), |
|
570 | + 'enum' => array_map('trim', explode(',', '=, !=, >, >=, <, <=, LIKE NOT, LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, NOT EXISTS, REGEXP, NOT REGEXP, RLIKE')), |
|
571 | 571 | ), |
572 | 572 | |
573 | 573 | 'meta_value_num' => array( |
574 | - 'description' => __( 'Filter items by a numeric custom field value.', 'invoicing' ), |
|
574 | + 'description' => __('Filter items by a numeric custom field value.', 'invoicing'), |
|
575 | 575 | 'type' => 'integer', |
576 | 576 | ), |
577 | 577 | |
578 | 578 | // items after. |
579 | 579 | 'after_date' => array( |
580 | - 'description' => __( 'Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing' ), |
|
580 | + 'description' => __('Limit result set to items created after a specific date. Accepts strtotime()-compatible string.', 'invoicing'), |
|
581 | 581 | 'type' => 'string', |
582 | 582 | ), |
583 | 583 | |
584 | 584 | // Number of results per page |
585 | 585 | 'limit' => array( |
586 | - 'description' => __( 'Number of items to fetch.', 'invoicing' ), |
|
586 | + 'description' => __('Number of items to fetch.', 'invoicing'), |
|
587 | 587 | 'type' => 'integer', |
588 | - 'default' => (int) get_option( 'posts_per_page' ), |
|
588 | + 'default' => (int) get_option('posts_per_page'), |
|
589 | 589 | ), |
590 | 590 | |
591 | 591 | // Pagination |
592 | 592 | 'page' => array( |
593 | - 'description' => __( 'Current page to fetch.', 'invoicing' ), |
|
593 | + 'description' => __('Current page to fetch.', 'invoicing'), |
|
594 | 594 | 'type' => 'integer', |
595 | 595 | 'default' => 1, |
596 | 596 | ), |
597 | 597 | |
598 | 598 | // limit to certain items |
599 | 599 | 'include' => array( |
600 | - 'description' => __( 'Limit result set to specific IDs.', 'invoicing' ), |
|
600 | + 'description' => __('Limit result set to specific IDs.', 'invoicing'), |
|
601 | 601 | 'type' => 'array', |
602 | 602 | 'items' => array( |
603 | 603 | 'type' => 'integer', |
@@ -607,7 +607,7 @@ discard block |
||
607 | 607 | |
608 | 608 | // Exclude certain items |
609 | 609 | 'exclude' => array( |
610 | - 'description' => __( 'Ensure result set excludes specific IDs.', 'invoicing' ), |
|
610 | + 'description' => __('Ensure result set excludes specific IDs.', 'invoicing'), |
|
611 | 611 | 'type' => 'array', |
612 | 612 | 'items' => array( |
613 | 613 | 'type' => 'integer', |
@@ -617,7 +617,7 @@ discard block |
||
617 | 617 | |
618 | 618 | // Order items by |
619 | 619 | 'orderby' => array( |
620 | - 'description' => __( 'Sort retrieved items by parameter.', 'invoicing' ), |
|
620 | + 'description' => __('Sort retrieved items by parameter.', 'invoicing'), |
|
621 | 621 | 'type' => 'string', |
622 | 622 | 'default' => 'date', |
623 | 623 | 'enum' => array( |
@@ -632,10 +632,10 @@ discard block |
||
632 | 632 | |
633 | 633 | // How to order |
634 | 634 | 'order' => array( |
635 | - 'description' => __( 'Designates ascending or descending order of ítems.', 'invoicing' ), |
|
635 | + 'description' => __('Designates ascending or descending order of ítems.', 'invoicing'), |
|
636 | 636 | 'type' => 'string', |
637 | 637 | 'default' => 'DESC', |
638 | - 'enum' => array( 'ASC', 'DESC' ), |
|
638 | + 'enum' => array('ASC', 'DESC'), |
|
639 | 639 | ), |
640 | 640 | ); |
641 | 641 | |
@@ -647,7 +647,7 @@ discard block |
||
647 | 647 | * |
648 | 648 | * @param array $query_params JSON Schema-formatted collection parameters. |
649 | 649 | */ |
650 | - return apply_filters( "wpinv_rest_invoices_collection_params", $query_params ); |
|
650 | + return apply_filters("wpinv_rest_invoices_collection_params", $query_params); |
|
651 | 651 | } |
652 | 652 | |
653 | 653 | /** |
@@ -657,7 +657,7 @@ discard block |
||
657 | 657 | * @param WP_REST_Request $request Full details about the request. |
658 | 658 | * @return array Request collection parameters. |
659 | 659 | */ |
660 | - public function get_request_collection_params( $request ) { |
|
660 | + public function get_request_collection_params($request) { |
|
661 | 661 | |
662 | 662 | // Retrieve the list of registered invoice query parameters. |
663 | 663 | $registered = $this->get_collection_params(); |
@@ -674,7 +674,7 @@ discard block |
||
674 | 674 | 'meta_compare' => '=', |
675 | 675 | 'meta_value_num' => null, |
676 | 676 | 'after_date' => null, |
677 | - 'limit' => (int) get_option( 'posts_per_page' ), |
|
677 | + 'limit' => (int) get_option('posts_per_page'), |
|
678 | 678 | 'page' => 1, |
679 | 679 | 'include' => array(), |
680 | 680 | 'exclude' => array(), |
@@ -683,9 +683,9 @@ discard block |
||
683 | 683 | ); |
684 | 684 | |
685 | 685 | // Add any params from the requests. |
686 | - foreach ( array_keys( $registered ) as $key ) { |
|
687 | - if ( isset( $request[ $key] ) ) { |
|
688 | - $args[ $key ] = $request[ $key]; |
|
686 | + foreach (array_keys($registered) as $key) { |
|
687 | + if (isset($request[$key])) { |
|
688 | + $args[$key] = $request[$key]; |
|
689 | 689 | } |
690 | 690 | } |
691 | 691 | |
@@ -698,7 +698,7 @@ discard block |
||
698 | 698 | * @param array $args Request query args. |
699 | 699 | * @param WP_REST_Request $request Full details about the request. |
700 | 700 | */ |
701 | - return apply_filters( "wpinv_rest_invoices_collection_request_params", $args, $request ); |
|
701 | + return apply_filters("wpinv_rest_invoices_collection_request_params", $args, $request); |
|
702 | 702 | } |
703 | 703 | |
704 | 704 | /** |
@@ -709,7 +709,7 @@ discard block |
||
709 | 709 | * @param WP_REST_Request $request Full details about the request. |
710 | 710 | * @return array WP_Query parameters. |
711 | 711 | */ |
712 | - public function get_collection_wp_query_params( $args, $request ) { |
|
712 | + public function get_collection_wp_query_params($args, $request) { |
|
713 | 713 | |
714 | 714 | // Prepare the parameters. |
715 | 715 | $wp_query_args = array( |
@@ -726,35 +726,35 @@ discard block |
||
726 | 726 | 'meta_value_num' => $args['meta_value_num'], |
727 | 727 | 'post__in' => $args['include'], |
728 | 728 | 'post__in' => $args['exclude'], |
729 | - 'date_query' => array( array() ), |
|
729 | + 'date_query' => array(array()), |
|
730 | 730 | 'fields' => 'ids', |
731 | 731 | 'orderby' => $args['orderby'], |
732 | 732 | 'order' => $args['order'], |
733 | 733 | ); |
734 | 734 | |
735 | 735 | // Only admins can view other user's invoices. |
736 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
736 | + if (!wpinv_current_user_can_manage_invoicing()) { |
|
737 | 737 | $wp_query_args['author'] = get_current_user_id(); |
738 | 738 | } |
739 | 739 | |
740 | 740 | // No date specific params provided. |
741 | - if ( empty( $args['before_date'] ) && empty( $args['after_date'] ) ) { |
|
742 | - unset( $wp_query_args['date_query'] ); |
|
741 | + if (empty($args['before_date']) && empty($args['after_date'])) { |
|
742 | + unset($wp_query_args['date_query']); |
|
743 | 743 | } |
744 | 744 | |
745 | - if ( ! empty( $args['before_date'] ) ) { |
|
745 | + if (!empty($args['before_date'])) { |
|
746 | 746 | $wp_query_args['date_query'][0]['before'] = $args['before_date']; |
747 | 747 | } |
748 | 748 | |
749 | - if ( ! empty( $args['after_date'] ) ) { |
|
749 | + if (!empty($args['after_date'])) { |
|
750 | 750 | $wp_query_args['date_query'][0]['after'] = $args['after_date']; |
751 | 751 | } |
752 | 752 | |
753 | 753 | // Remove empty variables. |
754 | - $wp_query_args = array_filter( $wp_query_args ); |
|
754 | + $wp_query_args = array_filter($wp_query_args); |
|
755 | 755 | |
756 | 756 | // This can be zero. |
757 | - if ( ! is_null( $args['meta_value_num'] ) ) { |
|
757 | + if (!is_null($args['meta_value_num'])) { |
|
758 | 758 | $wp_query_args['meta_value_num'] = $args['meta_value_num']; |
759 | 759 | } |
760 | 760 | |
@@ -768,7 +768,7 @@ discard block |
||
768 | 768 | * @param array $wp_query_args Generated WP_Query args args. |
769 | 769 | * @param WP_REST_Request $request Full details about the request. |
770 | 770 | */ |
771 | - return apply_filters( "wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request ); |
|
771 | + return apply_filters("wpinv_rest_invoices_collection_wp_query_params", $wp_query_args, $args, $request); |
|
772 | 772 | } |
773 | 773 | |
774 | 774 | /** |
@@ -779,7 +779,7 @@ discard block |
||
779 | 779 | * @param object|string $post_type Post type name or object. |
780 | 780 | * @return bool Whether the post type is allowed in REST. |
781 | 781 | */ |
782 | - protected function check_is_post_type_allowed( $post_type ) { |
|
782 | + protected function check_is_post_type_allowed($post_type) { |
|
783 | 783 | return true; |
784 | 784 | } |
785 | 785 | |
@@ -791,49 +791,49 @@ discard block |
||
791 | 791 | * @param WP_REST_Request $request Request object. |
792 | 792 | * @return array|WP_Error Invoice Properties or WP_Error. |
793 | 793 | */ |
794 | - protected function prepare_item_for_database( $request ) { |
|
794 | + protected function prepare_item_for_database($request) { |
|
795 | 795 | $prepared_invoice = new stdClass(); |
796 | 796 | |
797 | 797 | // Post ID. |
798 | - if ( isset( $request['id'] ) ) { |
|
799 | - $existing_invoice = $this->get_post( $request['id'] ); |
|
800 | - if ( is_wp_error( $existing_invoice ) ) { |
|
798 | + if (isset($request['id'])) { |
|
799 | + $existing_invoice = $this->get_post($request['id']); |
|
800 | + if (is_wp_error($existing_invoice)) { |
|
801 | 801 | return $existing_invoice; |
802 | 802 | } |
803 | 803 | |
804 | - $prepared_invoice->ID = $existing_invoice->ID; |
|
804 | + $prepared_invoice->ID = $existing_invoice->ID; |
|
805 | 805 | $prepared_invoice->invoice_id = $existing_invoice->ID; |
806 | 806 | } |
807 | 807 | |
808 | 808 | $schema = $this->get_item_schema(); |
809 | 809 | |
810 | 810 | // Invoice owner. |
811 | - if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { |
|
811 | + if (!empty($schema['properties']['user_id']) && isset($request['user_id'])) { |
|
812 | 812 | $prepared_invoice->user_id = (int) $request['user_id']; |
813 | 813 | } |
814 | 814 | |
815 | 815 | // Cart details. |
816 | - if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) { |
|
816 | + if (!empty($schema['properties']['cart_details']) && isset($request['cart_details'])) { |
|
817 | 817 | $prepared_invoice->cart_details = (array) $request['cart_details']; |
818 | 818 | } |
819 | 819 | |
820 | 820 | // Invoice status. |
821 | - if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) { |
|
821 | + if (!empty($schema['properties']['status']) && isset($request['status'])) { |
|
822 | 822 | |
823 | - if ( in_array( $request['status'], $this->get_post_statuses(), true ) ) { |
|
823 | + if (in_array($request['status'], $this->get_post_statuses(), true)) { |
|
824 | 824 | $prepared_invoice->status = $request['status']; |
825 | 825 | } |
826 | 826 | |
827 | 827 | } |
828 | 828 | |
829 | 829 | // User info |
830 | - if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) { |
|
830 | + if (!empty($schema['properties']['user_info']) && isset($request['user_info'])) { |
|
831 | 831 | $prepared_invoice->user_info = array(); |
832 | 832 | $user_info = (array) $request['user_info']; |
833 | 833 | |
834 | - foreach( $user_info as $prop => $value ) { |
|
834 | + foreach ($user_info as $prop => $value) { |
|
835 | 835 | |
836 | - if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) { |
|
836 | + if (!empty($schema['properties']['user_info']['properties'][$prop])) { |
|
837 | 837 | |
838 | 838 | $prepared_invoice->user_info[$prop] = $value; |
839 | 839 | |
@@ -844,59 +844,59 @@ discard block |
||
844 | 844 | } |
845 | 845 | |
846 | 846 | // IP |
847 | - if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) { |
|
847 | + if (!empty($schema['properties']['ip']) && isset($request['ip'])) { |
|
848 | 848 | $prepared_invoice->ip = $request['ip']; |
849 | 849 | } |
850 | 850 | |
851 | 851 | // Payment details |
852 | 852 | $prepared_invoice->payment_details = array(); |
853 | 853 | |
854 | - if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) { |
|
854 | + if (!empty($schema['properties']['gateway']) && isset($request['gateway'])) { |
|
855 | 855 | $prepared_invoice->payment_details['gateway'] = $request['gateway']; |
856 | 856 | } |
857 | 857 | |
858 | - if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) { |
|
858 | + if (!empty($schema['properties']['gateway_title']) && isset($request['gateway_title'])) { |
|
859 | 859 | $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title']; |
860 | 860 | } |
861 | 861 | |
862 | - if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) { |
|
862 | + if (!empty($schema['properties']['currency']) && isset($request['currency'])) { |
|
863 | 863 | $prepared_invoice->payment_details['currency'] = $request['currency']; |
864 | 864 | } |
865 | 865 | |
866 | - if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) { |
|
866 | + if (!empty($schema['properties']['transaction_id']) && isset($request['transaction_id'])) { |
|
867 | 867 | $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id']; |
868 | 868 | } |
869 | 869 | |
870 | 870 | // Dates |
871 | - if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) { |
|
872 | - $post_date = rest_get_date_with_gmt( $request['date'] ); |
|
871 | + if (!empty($schema['properties']['date']) && isset($request['date'])) { |
|
872 | + $post_date = rest_get_date_with_gmt($request['date']); |
|
873 | 873 | |
874 | - if ( ! empty( $post_date ) ) { |
|
874 | + if (!empty($post_date)) { |
|
875 | 875 | $prepared_invoice->post_date = $post_date[0]; |
876 | 876 | } |
877 | 877 | |
878 | 878 | } |
879 | 879 | |
880 | - if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) { |
|
881 | - $due_date = rest_get_date_with_gmt( $request['due_date'] ); |
|
880 | + if (!empty($schema['properties']['due_date']) && isset($request['due_date'])) { |
|
881 | + $due_date = rest_get_date_with_gmt($request['due_date']); |
|
882 | 882 | |
883 | - if ( ! empty( $due_date ) ) { |
|
883 | + if (!empty($due_date)) { |
|
884 | 884 | $prepared_invoice->due_date = $due_date[0]; |
885 | 885 | } |
886 | 886 | |
887 | 887 | } |
888 | 888 | |
889 | - if ( ! empty( $schema['properties']['valid_until'] ) && isset( $request['valid_until'] ) ) { |
|
889 | + if (!empty($schema['properties']['valid_until']) && isset($request['valid_until'])) { |
|
890 | 890 | |
891 | - if ( ! empty( $request['valid_until'] ) ) { |
|
892 | - $prepared_invoice->valid_until = gmdate( 'Y-m-d', strtotime( $request['valid_until'] ) ); |
|
891 | + if (!empty($request['valid_until'])) { |
|
892 | + $prepared_invoice->valid_until = gmdate('Y-m-d', strtotime($request['valid_until'])); |
|
893 | 893 | } else { |
894 | 894 | $prepared_invoice->valid_until = ''; |
895 | 895 | } |
896 | 896 | |
897 | 897 | } |
898 | 898 | |
899 | - $invoice_data = (array) wp_unslash( $prepared_invoice ); |
|
899 | + $invoice_data = (array) wp_unslash($prepared_invoice); |
|
900 | 900 | |
901 | 901 | /** |
902 | 902 | * Filters an invoice before it is inserted via the REST API. |
@@ -906,7 +906,7 @@ discard block |
||
906 | 906 | * @param array $invoice_data An array of invoice data |
907 | 907 | * @param WP_REST_Request $request Request object. |
908 | 908 | */ |
909 | - return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request ); |
|
909 | + return apply_filters("wpinv_rest_pre_insert_invoice", $invoice_data, $request); |
|
910 | 910 | |
911 | 911 | } |
912 | 912 | |
@@ -919,20 +919,20 @@ discard block |
||
919 | 919 | * @param WP_REST_Request $request Request object. |
920 | 920 | * @return WP_REST_Response Response object. |
921 | 921 | */ |
922 | - public function prepare_item_for_response( $invoice, $request ) { |
|
922 | + public function prepare_item_for_response($invoice, $request) { |
|
923 | 923 | |
924 | - $GLOBALS['post'] = get_post( $invoice->ID ); |
|
924 | + $GLOBALS['post'] = get_post($invoice->ID); |
|
925 | 925 | |
926 | - setup_postdata( $invoice->ID ); |
|
926 | + setup_postdata($invoice->ID); |
|
927 | 927 | |
928 | 928 | // Fetch the fields to include in this response. |
929 | - $fields = $this->get_fields_for_response( $request ); |
|
929 | + $fields = $this->get_fields_for_response($request); |
|
930 | 930 | |
931 | 931 | // Base fields for every invoice. |
932 | 932 | $data = array(); |
933 | 933 | |
934 | 934 | // Set up ID |
935 | - if ( rest_is_field_included( 'id', $fields ) ) { |
|
935 | + if (rest_is_field_included('id', $fields)) { |
|
936 | 936 | $data['id'] = $invoice->ID; |
937 | 937 | } |
938 | 938 | |
@@ -947,79 +947,79 @@ discard block |
||
947 | 947 | 'status', 'status_nicename', 'post_type' |
948 | 948 | ); |
949 | 949 | |
950 | - foreach( $invoice_properties as $property ) { |
|
950 | + foreach ($invoice_properties as $property) { |
|
951 | 951 | |
952 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
953 | - $data[$property] = $invoice->get( $property ); |
|
952 | + if (rest_is_field_included($property, $fields)) { |
|
953 | + $data[$property] = $invoice->get($property); |
|
954 | 954 | } |
955 | 955 | |
956 | 956 | } |
957 | 957 | |
958 | 958 | // Valid until |
959 | - if ( rest_is_field_included( 'valid_until', $fields ) && $this->post_type === 'wpi_quote' ) { |
|
960 | - $data['valid_until'] = get_post_meta( $invoice->ID, 'wpinv_quote_valid_until', true ); |
|
959 | + if (rest_is_field_included('valid_until', $fields) && $this->post_type === 'wpi_quote') { |
|
960 | + $data['valid_until'] = get_post_meta($invoice->ID, 'wpinv_quote_valid_until', true); |
|
961 | 961 | } |
962 | 962 | |
963 | 963 | // Cart details |
964 | - if ( rest_is_field_included( 'cart_details', $fields ) ) { |
|
965 | - $data['cart_details'] = $invoice->get( 'cart_details' ); |
|
964 | + if (rest_is_field_included('cart_details', $fields)) { |
|
965 | + $data['cart_details'] = $invoice->get('cart_details'); |
|
966 | 966 | } |
967 | 967 | |
968 | 968 | //Dates |
969 | - $invoice_properties = array( 'date', 'due_date', 'completed_date' ); |
|
969 | + $invoice_properties = array('date', 'due_date', 'completed_date'); |
|
970 | 970 | |
971 | - foreach( $invoice_properties as $property ) { |
|
971 | + foreach ($invoice_properties as $property) { |
|
972 | 972 | |
973 | - if ( rest_is_field_included( $property, $fields ) ) { |
|
974 | - $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) ); |
|
973 | + if (rest_is_field_included($property, $fields)) { |
|
974 | + $data[$property] = $this->prepare_date_response('0000-00-00 00:00:00', $invoice->get($property)); |
|
975 | 975 | } |
976 | 976 | |
977 | 977 | } |
978 | 978 | |
979 | 979 | // User id |
980 | - if ( rest_is_field_included( 'user_id', $fields ) ) { |
|
981 | - $data['user_id'] = (int) $invoice->get( 'user_id' ); |
|
980 | + if (rest_is_field_included('user_id', $fields)) { |
|
981 | + $data['user_id'] = (int) $invoice->get('user_id'); |
|
982 | 982 | } |
983 | 983 | |
984 | 984 | // User info |
985 | - $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' ); |
|
985 | + $user_info = array('first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone'); |
|
986 | 986 | |
987 | - foreach( $user_info as $property ) { |
|
987 | + foreach ($user_info as $property) { |
|
988 | 988 | |
989 | - if ( rest_is_field_included( "user_info.$property", $fields ) ) { |
|
990 | - $data['user_info'][$property] = $invoice->get( $property ); |
|
989 | + if (rest_is_field_included("user_info.$property", $fields)) { |
|
990 | + $data['user_info'][$property] = $invoice->get($property); |
|
991 | 991 | } |
992 | 992 | |
993 | 993 | } |
994 | 994 | |
995 | 995 | // Slug |
996 | - if ( rest_is_field_included( 'slug', $fields ) ) { |
|
997 | - $data['slug'] = $invoice->get( 'post_name' ); |
|
996 | + if (rest_is_field_included('slug', $fields)) { |
|
997 | + $data['slug'] = $invoice->get('post_name'); |
|
998 | 998 | } |
999 | 999 | |
1000 | 1000 | // View invoice link |
1001 | - if ( rest_is_field_included( 'link', $fields ) ) { |
|
1002 | - $data['link'] = esc_url( $invoice->get_view_url() ); |
|
1001 | + if (rest_is_field_included('link', $fields)) { |
|
1002 | + $data['link'] = esc_url($invoice->get_view_url()); |
|
1003 | 1003 | } |
1004 | 1004 | |
1005 | 1005 | |
1006 | - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; |
|
1007 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
1008 | - $data = $this->filter_response_by_context( $data, $context ); |
|
1006 | + $context = !empty($request['context']) ? $request['context'] : 'view'; |
|
1007 | + $data = $this->add_additional_fields_to_object($data, $request); |
|
1008 | + $data = $this->filter_response_by_context($data, $context); |
|
1009 | 1009 | |
1010 | 1010 | // Wrap the data in a response object. |
1011 | - $response = rest_ensure_response( $data ); |
|
1011 | + $response = rest_ensure_response($data); |
|
1012 | 1012 | |
1013 | - $links = $this->prepare_links( $invoice ); |
|
1014 | - $response->add_links( $links ); |
|
1013 | + $links = $this->prepare_links($invoice); |
|
1014 | + $response->add_links($links); |
|
1015 | 1015 | |
1016 | - if ( ! empty( $links['self']['href'] ) ) { |
|
1017 | - $actions = $this->get_available_actions( $invoice, $request ); |
|
1016 | + if (!empty($links['self']['href'])) { |
|
1017 | + $actions = $this->get_available_actions($invoice, $request); |
|
1018 | 1018 | |
1019 | 1019 | $self = $links['self']['href']; |
1020 | 1020 | |
1021 | - foreach ( $actions as $rel ) { |
|
1022 | - $response->add_link( $rel, $self ); |
|
1021 | + foreach ($actions as $rel) { |
|
1022 | + $response->add_link($rel, $self); |
|
1023 | 1023 | } |
1024 | 1024 | } |
1025 | 1025 | |
@@ -1032,7 +1032,7 @@ discard block |
||
1032 | 1032 | * @param WPInv_Invoice $invoice The invoice object. |
1033 | 1033 | * @param WP_REST_Request $request Request object. |
1034 | 1034 | */ |
1035 | - return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request ); |
|
1035 | + return apply_filters("wpinv_rest_prepare_invoice", $response, $invoice, $request); |
|
1036 | 1036 | } |
1037 | 1037 | |
1038 | 1038 | /** |
@@ -1045,57 +1045,57 @@ discard block |
||
1045 | 1045 | * @param WP_REST_Request $request Full details about the request. |
1046 | 1046 | * @return array Fields to be included in the response. |
1047 | 1047 | */ |
1048 | - public function get_fields_for_response( $request ) { |
|
1048 | + public function get_fields_for_response($request) { |
|
1049 | 1049 | $schema = $this->get_item_schema(); |
1050 | - $properties = isset( $schema['properties'] ) ? $schema['properties'] : array(); |
|
1050 | + $properties = isset($schema['properties']) ? $schema['properties'] : array(); |
|
1051 | 1051 | |
1052 | 1052 | $additional_fields = $this->get_additional_fields(); |
1053 | - foreach ( $additional_fields as $field_name => $field_options ) { |
|
1053 | + foreach ($additional_fields as $field_name => $field_options) { |
|
1054 | 1054 | // For back-compat, include any field with an empty schema |
1055 | 1055 | // because it won't be present in $this->get_item_schema(). |
1056 | - if ( is_null( $field_options['schema'] ) ) { |
|
1057 | - $properties[ $field_name ] = $field_options; |
|
1056 | + if (is_null($field_options['schema'])) { |
|
1057 | + $properties[$field_name] = $field_options; |
|
1058 | 1058 | } |
1059 | 1059 | } |
1060 | 1060 | |
1061 | 1061 | // Exclude fields that specify a different context than the request context. |
1062 | 1062 | $context = $request['context']; |
1063 | - if ( $context ) { |
|
1064 | - foreach ( $properties as $name => $options ) { |
|
1065 | - if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) { |
|
1066 | - unset( $properties[ $name ] ); |
|
1063 | + if ($context) { |
|
1064 | + foreach ($properties as $name => $options) { |
|
1065 | + if (!empty($options['context']) && !in_array($context, $options['context'], true)) { |
|
1066 | + unset($properties[$name]); |
|
1067 | 1067 | } |
1068 | 1068 | } |
1069 | 1069 | } |
1070 | 1070 | |
1071 | - $fields = array_keys( $properties ); |
|
1071 | + $fields = array_keys($properties); |
|
1072 | 1072 | |
1073 | - if ( ! isset( $request['_fields'] ) ) { |
|
1073 | + if (!isset($request['_fields'])) { |
|
1074 | 1074 | return $fields; |
1075 | 1075 | } |
1076 | - $requested_fields = wpinv_parse_list( $request['_fields'] ); |
|
1077 | - if ( 0 === count( $requested_fields ) ) { |
|
1076 | + $requested_fields = wpinv_parse_list($request['_fields']); |
|
1077 | + if (0 === count($requested_fields)) { |
|
1078 | 1078 | return $fields; |
1079 | 1079 | } |
1080 | 1080 | // Trim off outside whitespace from the comma delimited list. |
1081 | - $requested_fields = array_map( 'trim', $requested_fields ); |
|
1081 | + $requested_fields = array_map('trim', $requested_fields); |
|
1082 | 1082 | // Always persist 'id', because it can be needed for add_additional_fields_to_object(). |
1083 | - if ( in_array( 'id', $fields, true ) ) { |
|
1083 | + if (in_array('id', $fields, true)) { |
|
1084 | 1084 | $requested_fields[] = 'id'; |
1085 | 1085 | } |
1086 | 1086 | // Return the list of all requested fields which appear in the schema. |
1087 | 1087 | return array_reduce( |
1088 | 1088 | $requested_fields, |
1089 | - function( $response_fields, $field ) use ( $fields ) { |
|
1090 | - if ( in_array( $field, $fields, true ) ) { |
|
1089 | + function($response_fields, $field) use ($fields) { |
|
1090 | + if (in_array($field, $fields, true)) { |
|
1091 | 1091 | $response_fields[] = $field; |
1092 | 1092 | return $response_fields; |
1093 | 1093 | } |
1094 | 1094 | // Check for nested fields if $field is not a direct match. |
1095 | - $nested_fields = explode( '.', $field ); |
|
1095 | + $nested_fields = explode('.', $field); |
|
1096 | 1096 | // A nested field is included so long as its top-level property is |
1097 | 1097 | // present in the schema. |
1098 | - if ( in_array( $nested_fields[0], $fields, true ) ) { |
|
1098 | + if (in_array($nested_fields[0], $fields, true)) { |
|
1099 | 1099 | $response_fields[] = $field; |
1100 | 1100 | } |
1101 | 1101 | return $response_fields; |
@@ -1114,8 +1114,8 @@ discard block |
||
1114 | 1114 | public function get_item_schema() { |
1115 | 1115 | |
1116 | 1116 | // Maybe retrieve the schema from cache. |
1117 | - if ( $this->schema ) { |
|
1118 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1117 | + if ($this->schema) { |
|
1118 | + return $this->add_additional_fields_schema($this->schema); |
|
1119 | 1119 | } |
1120 | 1120 | |
1121 | 1121 | $schema = array( |
@@ -1127,266 +1127,266 @@ discard block |
||
1127 | 1127 | 'properties' => array( |
1128 | 1128 | |
1129 | 1129 | 'title' => array( |
1130 | - 'description' => __( 'The title for the invoice.', 'invoicing' ), |
|
1130 | + 'description' => __('The title for the invoice.', 'invoicing'), |
|
1131 | 1131 | 'type' => 'string', |
1132 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1132 | + 'context' => array('view', 'edit', 'embed'), |
|
1133 | 1133 | 'readonly' => true, |
1134 | 1134 | ), |
1135 | 1135 | |
1136 | 1136 | 'user_id' => array( |
1137 | - 'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ), |
|
1137 | + 'description' => __('The ID of the owner of the invoice.', 'invoicing'), |
|
1138 | 1138 | 'type' => 'integer', |
1139 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1139 | + 'context' => array('view', 'edit', 'embed'), |
|
1140 | 1140 | ), |
1141 | 1141 | |
1142 | 1142 | 'email' => array( |
1143 | - 'description' => __( 'The email of the owner of the invoice.', 'invoicing' ), |
|
1143 | + 'description' => __('The email of the owner of the invoice.', 'invoicing'), |
|
1144 | 1144 | 'type' => 'string', |
1145 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1145 | + 'context' => array('view', 'edit', 'embed'), |
|
1146 | 1146 | 'readonly' => true, |
1147 | 1147 | ), |
1148 | 1148 | |
1149 | 1149 | 'ip' => array( |
1150 | - 'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ), |
|
1150 | + 'description' => __('The IP of the owner of the invoice.', 'invoicing'), |
|
1151 | 1151 | 'type' => 'string', |
1152 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1152 | + 'context' => array('view', 'edit', 'embed'), |
|
1153 | 1153 | ), |
1154 | 1154 | |
1155 | 1155 | 'user_info' => array( |
1156 | - 'description' => __( 'Information about the owner of the invoice.', 'invoicing' ), |
|
1156 | + 'description' => __('Information about the owner of the invoice.', 'invoicing'), |
|
1157 | 1157 | 'type' => 'object', |
1158 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1158 | + 'context' => array('view', 'edit', 'embed'), |
|
1159 | 1159 | 'properties' => array( |
1160 | 1160 | |
1161 | 1161 | 'first_name' => array( |
1162 | - 'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ), |
|
1162 | + 'description' => __('The first name of the owner of the invoice.', 'invoicing'), |
|
1163 | 1163 | 'type' => 'string', |
1164 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1164 | + 'context' => array('view', 'edit', 'embed'), |
|
1165 | 1165 | ), |
1166 | 1166 | |
1167 | 1167 | 'last_name' => array( |
1168 | - 'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ), |
|
1168 | + 'description' => __('The last name of the owner of the invoice.', 'invoicing'), |
|
1169 | 1169 | 'type' => 'string', |
1170 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1170 | + 'context' => array('view', 'edit', 'embed'), |
|
1171 | 1171 | ), |
1172 | 1172 | |
1173 | 1173 | 'company' => array( |
1174 | - 'description' => __( 'The company of the owner of the invoice.', 'invoicing' ), |
|
1174 | + 'description' => __('The company of the owner of the invoice.', 'invoicing'), |
|
1175 | 1175 | 'type' => 'string', |
1176 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1176 | + 'context' => array('view', 'edit', 'embed'), |
|
1177 | 1177 | ), |
1178 | 1178 | |
1179 | 1179 | 'vat_number' => array( |
1180 | - 'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ), |
|
1180 | + 'description' => __('The VAT number of the owner of the invoice.', 'invoicing'), |
|
1181 | 1181 | 'type' => 'string', |
1182 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1182 | + 'context' => array('view', 'edit', 'embed'), |
|
1183 | 1183 | ), |
1184 | 1184 | |
1185 | 1185 | 'vat_rate' => array( |
1186 | - 'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ), |
|
1186 | + 'description' => __('The VAT rate applied on the invoice.', 'invoicing'), |
|
1187 | 1187 | 'type' => 'string', |
1188 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1188 | + 'context' => array('view', 'edit', 'embed'), |
|
1189 | 1189 | ), |
1190 | 1190 | |
1191 | 1191 | 'address' => array( |
1192 | - 'description' => __( 'The address of the invoice owner.', 'invoicing' ), |
|
1192 | + 'description' => __('The address of the invoice owner.', 'invoicing'), |
|
1193 | 1193 | 'type' => 'string', |
1194 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1194 | + 'context' => array('view', 'edit', 'embed'), |
|
1195 | 1195 | ), |
1196 | 1196 | |
1197 | 1197 | 'city' => array( |
1198 | - 'description' => __( 'The city of the invoice owner.', 'invoicing' ), |
|
1198 | + 'description' => __('The city of the invoice owner.', 'invoicing'), |
|
1199 | 1199 | 'type' => 'string', |
1200 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1200 | + 'context' => array('view', 'edit', 'embed'), |
|
1201 | 1201 | ), |
1202 | 1202 | |
1203 | 1203 | 'country' => array( |
1204 | - 'description' => __( 'The country of the invoice owner.', 'invoicing' ), |
|
1204 | + 'description' => __('The country of the invoice owner.', 'invoicing'), |
|
1205 | 1205 | 'type' => 'string', |
1206 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1206 | + 'context' => array('view', 'edit', 'embed'), |
|
1207 | 1207 | ), |
1208 | 1208 | |
1209 | 1209 | 'state' => array( |
1210 | - 'description' => __( 'The state of the invoice owner.', 'invoicing' ), |
|
1210 | + 'description' => __('The state of the invoice owner.', 'invoicing'), |
|
1211 | 1211 | 'type' => 'string', |
1212 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1212 | + 'context' => array('view', 'edit', 'embed'), |
|
1213 | 1213 | ), |
1214 | 1214 | |
1215 | 1215 | 'zip' => array( |
1216 | - 'description' => __( 'The zip code of the invoice owner.', 'invoicing' ), |
|
1216 | + 'description' => __('The zip code of the invoice owner.', 'invoicing'), |
|
1217 | 1217 | 'type' => 'string', |
1218 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1218 | + 'context' => array('view', 'edit', 'embed'), |
|
1219 | 1219 | ), |
1220 | 1220 | |
1221 | 1221 | 'phone' => array( |
1222 | - 'description' => __( 'The phone number of the invoice owner.', 'invoicing' ), |
|
1222 | + 'description' => __('The phone number of the invoice owner.', 'invoicing'), |
|
1223 | 1223 | 'type' => 'string', |
1224 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1224 | + 'context' => array('view', 'edit', 'embed'), |
|
1225 | 1225 | ), |
1226 | 1226 | ), |
1227 | 1227 | ), |
1228 | 1228 | |
1229 | 1229 | 'id' => array( |
1230 | - 'description' => __( 'Unique identifier for the invoice.', 'invoicing' ), |
|
1230 | + 'description' => __('Unique identifier for the invoice.', 'invoicing'), |
|
1231 | 1231 | 'type' => 'integer', |
1232 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1232 | + 'context' => array('view', 'edit', 'embed'), |
|
1233 | 1233 | 'readonly' => true, |
1234 | 1234 | ), |
1235 | 1235 | |
1236 | 1236 | 'key' => array( |
1237 | - 'description' => __( 'A unique key for the invoice.', 'invoicing' ), |
|
1237 | + 'description' => __('A unique key for the invoice.', 'invoicing'), |
|
1238 | 1238 | 'type' => 'string', |
1239 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1239 | + 'context' => array('view', 'edit', 'embed'), |
|
1240 | 1240 | 'readonly' => true, |
1241 | 1241 | ), |
1242 | 1242 | |
1243 | 1243 | 'number' => array( |
1244 | - 'description' => __( 'The invoice number.', 'invoicing' ), |
|
1244 | + 'description' => __('The invoice number.', 'invoicing'), |
|
1245 | 1245 | 'type' => 'string', |
1246 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1246 | + 'context' => array('view', 'edit', 'embed'), |
|
1247 | 1247 | 'readonly' => true, |
1248 | 1248 | ), |
1249 | 1249 | |
1250 | 1250 | 'transaction_id' => array( |
1251 | - 'description' => __( 'The transaction id of the invoice.', 'invoicing' ), |
|
1251 | + 'description' => __('The transaction id of the invoice.', 'invoicing'), |
|
1252 | 1252 | 'type' => 'string', |
1253 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1253 | + 'context' => array('view', 'edit', 'embed'), |
|
1254 | 1254 | ), |
1255 | 1255 | |
1256 | 1256 | 'gateway' => array( |
1257 | - 'description' => __( 'The gateway used to process the invoice.', 'invoicing' ), |
|
1257 | + 'description' => __('The gateway used to process the invoice.', 'invoicing'), |
|
1258 | 1258 | 'type' => 'string', |
1259 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1259 | + 'context' => array('view', 'edit', 'embed'), |
|
1260 | 1260 | ), |
1261 | 1261 | |
1262 | 1262 | 'gateway_title' => array( |
1263 | - 'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ), |
|
1263 | + 'description' => __('The title of the gateway used to process the invoice.', 'invoicing'), |
|
1264 | 1264 | 'type' => 'string', |
1265 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1265 | + 'context' => array('view', 'edit', 'embed'), |
|
1266 | 1266 | ), |
1267 | 1267 | |
1268 | 1268 | 'total' => array( |
1269 | - 'description' => __( 'The total amount of the invoice.', 'invoicing' ), |
|
1269 | + 'description' => __('The total amount of the invoice.', 'invoicing'), |
|
1270 | 1270 | 'type' => 'number', |
1271 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1271 | + 'context' => array('view', 'edit', 'embed'), |
|
1272 | 1272 | 'readonly' => true, |
1273 | 1273 | ), |
1274 | 1274 | |
1275 | 1275 | 'discount' => array( |
1276 | - 'description' => __( 'The discount applied to the invoice.', 'invoicing' ), |
|
1276 | + 'description' => __('The discount applied to the invoice.', 'invoicing'), |
|
1277 | 1277 | 'type' => 'number', |
1278 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1278 | + 'context' => array('view', 'edit', 'embed'), |
|
1279 | 1279 | 'readonly' => true, |
1280 | 1280 | ), |
1281 | 1281 | |
1282 | 1282 | 'discount_code' => array( |
1283 | - 'description' => __( 'The discount code applied to the invoice.', 'invoicing' ), |
|
1283 | + 'description' => __('The discount code applied to the invoice.', 'invoicing'), |
|
1284 | 1284 | 'type' => 'string', |
1285 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1285 | + 'context' => array('view', 'edit', 'embed'), |
|
1286 | 1286 | 'readonly' => true, |
1287 | 1287 | ), |
1288 | 1288 | |
1289 | 1289 | 'tax' => array( |
1290 | - 'description' => __( 'The tax applied to the invoice.', 'invoicing' ), |
|
1290 | + 'description' => __('The tax applied to the invoice.', 'invoicing'), |
|
1291 | 1291 | 'type' => 'number', |
1292 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1292 | + 'context' => array('view', 'edit', 'embed'), |
|
1293 | 1293 | 'readonly' => true, |
1294 | 1294 | ), |
1295 | 1295 | |
1296 | 1296 | 'fees_total' => array( |
1297 | - 'description' => __( 'The total fees applied to the invoice.', 'invoicing' ), |
|
1297 | + 'description' => __('The total fees applied to the invoice.', 'invoicing'), |
|
1298 | 1298 | 'type' => 'number', |
1299 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1299 | + 'context' => array('view', 'edit', 'embed'), |
|
1300 | 1300 | 'readonly' => true, |
1301 | 1301 | ), |
1302 | 1302 | |
1303 | 1303 | 'subtotal' => array( |
1304 | - 'description' => __( 'The sub-total for the invoice.', 'invoicing' ), |
|
1304 | + 'description' => __('The sub-total for the invoice.', 'invoicing'), |
|
1305 | 1305 | 'type' => 'number', |
1306 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1306 | + 'context' => array('view', 'edit', 'embed'), |
|
1307 | 1307 | 'readonly' => true, |
1308 | 1308 | ), |
1309 | 1309 | |
1310 | 1310 | 'currency' => array( |
1311 | - 'description' => __( 'The currency used to process the invoice.', 'invoicing' ), |
|
1311 | + 'description' => __('The currency used to process the invoice.', 'invoicing'), |
|
1312 | 1312 | 'type' => 'string', |
1313 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1313 | + 'context' => array('view', 'edit', 'embed'), |
|
1314 | 1314 | ), |
1315 | 1315 | |
1316 | 1316 | 'cart_details' => array( |
1317 | - 'description' => __( 'The cart details for invoice.', 'invoicing' ), |
|
1317 | + 'description' => __('The cart details for invoice.', 'invoicing'), |
|
1318 | 1318 | 'type' => 'array', |
1319 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1319 | + 'context' => array('view', 'edit', 'embed'), |
|
1320 | 1320 | 'required' => true, |
1321 | 1321 | ), |
1322 | 1322 | |
1323 | 1323 | 'date' => array( |
1324 | - 'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ), |
|
1325 | - 'type' => array( 'string', 'null' ), |
|
1324 | + 'description' => __("The date the invoice was published, in the site's timezone.", 'invoicing'), |
|
1325 | + 'type' => array('string', 'null'), |
|
1326 | 1326 | 'format' => 'date-time', |
1327 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1327 | + 'context' => array('view', 'edit', 'embed'), |
|
1328 | 1328 | ), |
1329 | 1329 | |
1330 | 1330 | 'due_date' => array( |
1331 | - 'description' => __( 'The due date for the invoice.', 'invoicing' ), |
|
1332 | - 'type' => array( 'string', 'null' ), |
|
1331 | + 'description' => __('The due date for the invoice.', 'invoicing'), |
|
1332 | + 'type' => array('string', 'null'), |
|
1333 | 1333 | 'format' => 'date-time', |
1334 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1334 | + 'context' => array('view', 'edit', 'embed'), |
|
1335 | 1335 | ), |
1336 | 1336 | |
1337 | 1337 | 'completed_date' => array( |
1338 | - 'description' => __( 'The completed date for the invoice.', 'invoicing' ), |
|
1339 | - 'type' => array( 'string', 'null' ), |
|
1338 | + 'description' => __('The completed date for the invoice.', 'invoicing'), |
|
1339 | + 'type' => array('string', 'null'), |
|
1340 | 1340 | 'format' => 'date-time', |
1341 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1341 | + 'context' => array('view', 'edit', 'embed'), |
|
1342 | 1342 | 'readonly' => true, |
1343 | 1343 | ), |
1344 | 1344 | |
1345 | 1345 | 'link' => array( |
1346 | - 'description' => __( 'URL to the invoice.', 'invoicing' ), |
|
1346 | + 'description' => __('URL to the invoice.', 'invoicing'), |
|
1347 | 1347 | 'type' => 'string', |
1348 | 1348 | 'format' => 'uri', |
1349 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1349 | + 'context' => array('view', 'edit', 'embed'), |
|
1350 | 1350 | 'readonly' => true, |
1351 | 1351 | ), |
1352 | 1352 | |
1353 | 1353 | 'mode' => array( |
1354 | - 'description' => __( 'The mode used to process the invoice.', 'invoicing' ), |
|
1354 | + 'description' => __('The mode used to process the invoice.', 'invoicing'), |
|
1355 | 1355 | 'type' => 'string', |
1356 | - 'enum' => array( 'live', 'test' ), |
|
1357 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1356 | + 'enum' => array('live', 'test'), |
|
1357 | + 'context' => array('view', 'edit', 'embed'), |
|
1358 | 1358 | 'readonly' => true, |
1359 | 1359 | ), |
1360 | 1360 | |
1361 | 1361 | 'slug' => array( |
1362 | - 'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ), |
|
1362 | + 'description' => __('An alphanumeric identifier for the invoice.', 'invoicing'), |
|
1363 | 1363 | 'type' => 'string', |
1364 | - 'context' => array( 'view', 'edit', 'embed' ), |
|
1364 | + 'context' => array('view', 'edit', 'embed'), |
|
1365 | 1365 | 'arg_options' => array( |
1366 | - 'sanitize_callback' => array( $this, 'sanitize_slug' ), |
|
1366 | + 'sanitize_callback' => array($this, 'sanitize_slug'), |
|
1367 | 1367 | ), |
1368 | 1368 | 'readonly' => true, |
1369 | 1369 | ), |
1370 | 1370 | |
1371 | 1371 | 'status' => array( |
1372 | - 'description' => __( 'A named status for the invoice.', 'invoicing' ), |
|
1372 | + 'description' => __('A named status for the invoice.', 'invoicing'), |
|
1373 | 1373 | 'type' => 'string', |
1374 | 1374 | 'enum' => $this->get_post_statuses(), |
1375 | - 'context' => array( 'view', 'edit' ), |
|
1375 | + 'context' => array('view', 'edit'), |
|
1376 | 1376 | 'default' => 'wpi-pending', |
1377 | 1377 | ), |
1378 | 1378 | |
1379 | 1379 | 'status_nicename' => array( |
1380 | - 'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ), |
|
1380 | + 'description' => __('A human-readable status name for the invoice.', 'invoicing'), |
|
1381 | 1381 | 'type' => 'string', |
1382 | - 'context' => array( 'view', 'embed' ), |
|
1382 | + 'context' => array('view', 'embed'), |
|
1383 | 1383 | 'readonly' => true, |
1384 | 1384 | ), |
1385 | 1385 | |
1386 | 1386 | 'post_type' => array( |
1387 | - 'description' => __( 'The post type for the invoice.', 'invoicing' ), |
|
1387 | + 'description' => __('The post type for the invoice.', 'invoicing'), |
|
1388 | 1388 | 'type' => 'string', |
1389 | - 'context' => array( 'view' ), |
|
1389 | + 'context' => array('view'), |
|
1390 | 1390 | 'readonly' => true, |
1391 | 1391 | ), |
1392 | 1392 | ), |
@@ -1404,12 +1404,12 @@ discard block |
||
1404 | 1404 | * |
1405 | 1405 | * @param array $schema The invoice schema. |
1406 | 1406 | */ |
1407 | - $schema = apply_filters( "wpinv_rest_invoice_schema", $schema ); |
|
1407 | + $schema = apply_filters("wpinv_rest_invoice_schema", $schema); |
|
1408 | 1408 | |
1409 | 1409 | // Cache the invoice schema. |
1410 | 1410 | $this->schema = $schema; |
1411 | 1411 | |
1412 | - return $this->add_additional_fields_schema( $this->schema ); |
|
1412 | + return $this->add_additional_fields_schema($this->schema); |
|
1413 | 1413 | } |
1414 | 1414 | |
1415 | 1415 | /** |
@@ -1421,20 +1421,20 @@ discard block |
||
1421 | 1421 | */ |
1422 | 1422 | protected function get_schema_links() { |
1423 | 1423 | |
1424 | - $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" ); |
|
1424 | + $href = rest_url("{$this->namespace}/{$this->rest_base}/{id}"); |
|
1425 | 1425 | |
1426 | 1426 | $links = array(); |
1427 | 1427 | |
1428 | 1428 | $links[] = array( |
1429 | 1429 | 'rel' => 'https://api.w.org/action-publish', |
1430 | - 'title' => __( 'The current user can mark this invoice as completed.', 'invoicing' ), |
|
1430 | + 'title' => __('The current user can mark this invoice as completed.', 'invoicing'), |
|
1431 | 1431 | 'href' => $href, |
1432 | 1432 | 'targetSchema' => array( |
1433 | 1433 | 'type' => 'object', |
1434 | 1434 | 'properties' => array( |
1435 | 1435 | 'status' => array( |
1436 | 1436 | 'type' => 'string', |
1437 | - 'enum' => array( 'publish', 'wpi-renewal' ), |
|
1437 | + 'enum' => array('publish', 'wpi-renewal'), |
|
1438 | 1438 | ), |
1439 | 1439 | ), |
1440 | 1440 | ), |
@@ -1442,7 +1442,7 @@ discard block |
||
1442 | 1442 | |
1443 | 1443 | $links[] = array( |
1444 | 1444 | 'rel' => 'https://api.w.org/action-assign-author', |
1445 | - 'title' => __( 'The current user can change the owner of this invoice.', 'invoicing' ), |
|
1445 | + 'title' => __('The current user can change the owner of this invoice.', 'invoicing'), |
|
1446 | 1446 | 'href' => $href, |
1447 | 1447 | 'targetSchema' => array( |
1448 | 1448 | 'type' => 'object', |
@@ -1465,24 +1465,24 @@ discard block |
||
1465 | 1465 | * @param WPInv_Invoice $invoice Invoice Object. |
1466 | 1466 | * @return array Links for the given invoice. |
1467 | 1467 | */ |
1468 | - protected function prepare_links( $invoice ) { |
|
1468 | + protected function prepare_links($invoice) { |
|
1469 | 1469 | |
1470 | 1470 | // Prepare the base REST API endpoint for invoices. |
1471 | - $base = sprintf( '%s/%s', $this->namespace, $this->rest_base ); |
|
1471 | + $base = sprintf('%s/%s', $this->namespace, $this->rest_base); |
|
1472 | 1472 | |
1473 | 1473 | // Entity meta. |
1474 | 1474 | $links = array( |
1475 | 1475 | 'self' => array( |
1476 | - 'href' => rest_url( trailingslashit( $base ) . $invoice->ID ), |
|
1476 | + 'href' => rest_url(trailingslashit($base) . $invoice->ID), |
|
1477 | 1477 | ), |
1478 | 1478 | 'collection' => array( |
1479 | - 'href' => rest_url( $base ), |
|
1479 | + 'href' => rest_url($base), |
|
1480 | 1480 | ), |
1481 | 1481 | ); |
1482 | 1482 | |
1483 | - if ( ! empty( $invoice->user_id ) ) { |
|
1483 | + if (!empty($invoice->user_id)) { |
|
1484 | 1484 | $links['user'] = array( |
1485 | - 'href' => rest_url( 'wp/v2/users/' . $invoice->user_id ), |
|
1485 | + 'href' => rest_url('wp/v2/users/' . $invoice->user_id), |
|
1486 | 1486 | 'embeddable' => true, |
1487 | 1487 | ); |
1488 | 1488 | } |
@@ -1496,7 +1496,7 @@ discard block |
||
1496 | 1496 | * |
1497 | 1497 | * @param array $links Rest links. |
1498 | 1498 | */ |
1499 | - return apply_filters( "wpinv_rest_invoice_links", $links ); |
|
1499 | + return apply_filters("wpinv_rest_invoice_links", $links); |
|
1500 | 1500 | |
1501 | 1501 | } |
1502 | 1502 | |
@@ -1509,24 +1509,24 @@ discard block |
||
1509 | 1509 | * @param WP_REST_Request $request Request object. |
1510 | 1510 | * @return array List of link relations. |
1511 | 1511 | */ |
1512 | - protected function get_available_actions( $invoice, $request ) { |
|
1512 | + protected function get_available_actions($invoice, $request) { |
|
1513 | 1513 | |
1514 | - if ( 'edit' !== $request['context'] ) { |
|
1514 | + if ('edit' !== $request['context']) { |
|
1515 | 1515 | return array(); |
1516 | 1516 | } |
1517 | 1517 | |
1518 | 1518 | $rels = array(); |
1519 | 1519 | |
1520 | 1520 | // Retrieve the post type object. |
1521 | - $post_type = get_post_type_object( $invoice->post_type ); |
|
1521 | + $post_type = get_post_type_object($invoice->post_type); |
|
1522 | 1522 | |
1523 | 1523 | // Mark invoice as completed. |
1524 | - if ( current_user_can( $post_type->cap->publish_posts ) ) { |
|
1524 | + if (current_user_can($post_type->cap->publish_posts)) { |
|
1525 | 1525 | $rels[] = 'https://api.w.org/action-publish'; |
1526 | 1526 | } |
1527 | 1527 | |
1528 | 1528 | // Change the owner of the invoice. |
1529 | - if ( current_user_can( $post_type->cap->edit_others_posts ) ) { |
|
1529 | + if (current_user_can($post_type->cap->edit_others_posts)) { |
|
1530 | 1530 | $rels[] = 'https://api.w.org/action-assign-author'; |
1531 | 1531 | } |
1532 | 1532 | |
@@ -1539,7 +1539,7 @@ discard block |
||
1539 | 1539 | * |
1540 | 1540 | * @param array $rels Available link relations. |
1541 | 1541 | */ |
1542 | - return apply_filters( "wpinv_rest_invoice_link_relations", $rels ); |
|
1542 | + return apply_filters("wpinv_rest_invoice_link_relations", $rels); |
|
1543 | 1543 | } |
1544 | 1544 | |
1545 | 1545 | /** |
@@ -1552,8 +1552,8 @@ discard block |
||
1552 | 1552 | * @param string $parameter Additional parameter to pass to validation. |
1553 | 1553 | * @return array|WP_Error A list of valid statuses, otherwise WP_Error object. |
1554 | 1554 | */ |
1555 | - public function sanitize_post_statuses( $statuses, $request, $parameter ) { |
|
1556 | - return array_intersect( wp_parse_slug_list( $statuses ), $this->get_post_statuses() ); |
|
1555 | + public function sanitize_post_statuses($statuses, $request, $parameter) { |
|
1556 | + return array_intersect(wp_parse_slug_list($statuses), $this->get_post_statuses()); |
|
1557 | 1557 | } |
1558 | 1558 | |
1559 | 1559 | /** |
@@ -1564,7 +1564,7 @@ discard block |
||
1564 | 1564 | * @return array A list of registered item statuses. |
1565 | 1565 | */ |
1566 | 1566 | public function get_post_statuses() { |
1567 | - return array_keys( wpinv_get_invoice_statuses( true, true ) ); |
|
1567 | + return array_keys(wpinv_get_invoice_statuses(true, true)); |
|
1568 | 1568 | } |
1569 | 1569 | |
1570 | 1570 | } |
1571 | 1571 | \ No newline at end of file |
@@ -58,14 +58,14 @@ discard block |
||
58 | 58 | } |
59 | 59 | |
60 | 60 | |
61 | - /** |
|
62 | - * Registers routes |
|
63 | - * |
|
61 | + /** |
|
62 | + * Registers routes |
|
63 | + * |
|
64 | 64 | * @since 1.0.13 |
65 | - */ |
|
66 | - public function register_rest_routes() { |
|
65 | + */ |
|
66 | + public function register_rest_routes() { |
|
67 | 67 | |
68 | - // Invoices. |
|
68 | + // Invoices. |
|
69 | 69 | $this->invoices_controller->register_routes(); |
70 | 70 | |
71 | 71 | // Items. |
@@ -75,15 +75,15 @@ discard block |
||
75 | 75 | $this->discounts_controller->register_routes(); |
76 | 76 | |
77 | 77 | /** |
78 | - * Fires when registering Invoicing REST routes. |
|
79 | - * |
|
80 | - * |
|
81 | - * @since 1.0.15 |
|
82 | - * |
|
83 | - * |
|
84 | - * @param array $invoice_data Invoice properties. |
|
85 | - * @param WP_REST_Request $request The request used. |
|
86 | - */ |
|
78 | + * Fires when registering Invoicing REST routes. |
|
79 | + * |
|
80 | + * |
|
81 | + * @since 1.0.15 |
|
82 | + * |
|
83 | + * |
|
84 | + * @param array $invoice_data Invoice properties. |
|
85 | + * @param WP_REST_Request $request The request used. |
|
86 | + */ |
|
87 | 87 | do_action( "wpinv_register_rest_routes", $this ); |
88 | 88 | |
89 | 89 | } |
@@ -7,7 +7,7 @@ discard block |
||
7 | 7 | */ |
8 | 8 | |
9 | 9 | // MUST have WordPress. |
10 | -if ( !defined( 'WPINC' ) ) { |
|
10 | +if (!defined('WPINC')) { |
|
11 | 11 | exit; |
12 | 12 | } |
13 | 13 | |
@@ -19,7 +19,7 @@ discard block |
||
19 | 19 | /** |
20 | 20 | * @param string A prefix for our REST routes |
21 | 21 | */ |
22 | - public $api_namespace = ''; |
|
22 | + public $api_namespace = ''; |
|
23 | 23 | |
24 | 24 | /** |
25 | 25 | * @param WPInv_REST_Invoice_Controller Invoices controller |
@@ -42,19 +42,19 @@ discard block |
||
42 | 42 | * @since 1.0.13 |
43 | 43 | * Sets the API namespace and inits hooks |
44 | 44 | */ |
45 | - public function __construct( $api_namespace = 'invoicing/v1' ) { |
|
45 | + public function __construct($api_namespace = 'invoicing/v1') { |
|
46 | 46 | |
47 | 47 | // Include controllers and related files |
48 | 48 | $this->includes(); |
49 | 49 | |
50 | 50 | // Set up class variables |
51 | - $this->api_namespace = apply_filters( 'wpinv_rest_api_namespace', $api_namespace ); |
|
52 | - $this->invoices_controller = new WPInv_REST_Invoice_Controller( $this->api_namespace ); |
|
53 | - $this->items_controller = new WPInv_REST_Items_Controller( $this->api_namespace ); |
|
54 | - $this->discounts_controller= new WPInv_REST_Discounts_Controller( $this->api_namespace ); |
|
51 | + $this->api_namespace = apply_filters('wpinv_rest_api_namespace', $api_namespace); |
|
52 | + $this->invoices_controller = new WPInv_REST_Invoice_Controller($this->api_namespace); |
|
53 | + $this->items_controller = new WPInv_REST_Items_Controller($this->api_namespace); |
|
54 | + $this->discounts_controller = new WPInv_REST_Discounts_Controller($this->api_namespace); |
|
55 | 55 | |
56 | 56 | //Register REST routes |
57 | - add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) ); |
|
57 | + add_action('rest_api_init', array($this, 'register_rest_routes')); |
|
58 | 58 | } |
59 | 59 | |
60 | 60 | |
@@ -84,7 +84,7 @@ discard block |
||
84 | 84 | * @param array $invoice_data Invoice properties. |
85 | 85 | * @param WP_REST_Request $request The request used. |
86 | 86 | */ |
87 | - do_action( "wpinv_register_rest_routes", $this ); |
|
87 | + do_action("wpinv_register_rest_routes", $this); |
|
88 | 88 | |
89 | 89 | } |
90 | 90 | |
@@ -97,13 +97,13 @@ discard block |
||
97 | 97 | protected function includes() { |
98 | 98 | |
99 | 99 | // Invoices |
100 | - require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-invoice-controller.php' ); |
|
100 | + require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-invoice-controller.php'); |
|
101 | 101 | |
102 | 102 | // Items |
103 | - require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-items-controller.php' ); |
|
103 | + require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-items-controller.php'); |
|
104 | 104 | |
105 | 105 | // Discounts |
106 | - require_once( WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-discounts-controller.php' ); |
|
106 | + require_once(WPINV_PLUGIN_DIR . 'includes/api/class-wpinv-rest-discounts-controller.php'); |
|
107 | 107 | |
108 | 108 | } |
109 | 109 |