@@ -13,17 +13,17 @@ discard block |
||
13 | 13 | class GetPaid_Notification_Email_Sender { |
14 | 14 | |
15 | 15 | /** |
16 | - * Whether or not we should inline CSS into the email. |
|
17 | - */ |
|
18 | - public $inline_css = true; |
|
16 | + * Whether or not we should inline CSS into the email. |
|
17 | + */ |
|
18 | + public $inline_css = true; |
|
19 | 19 | |
20 | 20 | /** |
21 | - * The wp_mail() data. |
|
22 | - */ |
|
21 | + * The wp_mail() data. |
|
22 | + */ |
|
23 | 23 | public $wp_mail_data = null; |
24 | 24 | |
25 | 25 | /** |
26 | - * Sends a new email. |
|
26 | + * Sends a new email. |
|
27 | 27 | * |
28 | 28 | * @param string|array $to The recipients email or an array of recipient emails. |
29 | 29 | * @param string $subject The email's subject. |
@@ -31,49 +31,49 @@ discard block |
||
31 | 31 | * @param array $attachments The email attachments. |
32 | 32 | * |
33 | 33 | * @return bool |
34 | - */ |
|
35 | - public function send( $to, $subject, $email, $attachments = array() ) { |
|
34 | + */ |
|
35 | + public function send( $to, $subject, $email, $attachments = array() ) { |
|
36 | 36 | |
37 | - /* |
|
37 | + /* |
|
38 | 38 | * Allow to filter data on per-email basis. |
39 | 39 | */ |
40 | - $data = apply_filters( |
|
41 | - 'getpaid_email_data', |
|
42 | - array( |
|
43 | - 'to' => array_filter( array_unique( wpinv_parse_list( $to ) ) ), |
|
44 | - 'subject' => $subject, |
|
45 | - 'email' => $email, |
|
46 | - 'headers' => $this->get_headers(), |
|
47 | - 'attachments' => $attachments, |
|
48 | - ), |
|
49 | - $this |
|
50 | - ); |
|
40 | + $data = apply_filters( |
|
41 | + 'getpaid_email_data', |
|
42 | + array( |
|
43 | + 'to' => array_filter( array_unique( wpinv_parse_list( $to ) ) ), |
|
44 | + 'subject' => $subject, |
|
45 | + 'email' => $email, |
|
46 | + 'headers' => $this->get_headers(), |
|
47 | + 'attachments' => $attachments, |
|
48 | + ), |
|
49 | + $this |
|
50 | + ); |
|
51 | 51 | |
52 | 52 | // Remove slashes. |
53 | 53 | $data = (array) wp_unslash( $data ); |
54 | 54 | |
55 | 55 | // Cache it. |
56 | - $this->wp_mail_data = $data; |
|
56 | + $this->wp_mail_data = $data; |
|
57 | 57 | |
58 | - // Attach our own hooks. |
|
59 | - $this->before_sending(); |
|
58 | + // Attach our own hooks. |
|
59 | + $this->before_sending(); |
|
60 | 60 | |
61 | 61 | $result = false; |
62 | 62 | |
63 | 63 | foreach ( $this->wp_mail_data['to'] as $to ) { |
64 | - $result = $this->_send( $to, $data ); |
|
64 | + $result = $this->_send( $to, $data ); |
|
65 | 65 | } |
66 | 66 | |
67 | - // Remove our hooks. |
|
68 | - $this->after_sending(); |
|
67 | + // Remove our hooks. |
|
68 | + $this->after_sending(); |
|
69 | 69 | |
70 | - $this->wp_mail_data = null; |
|
70 | + $this->wp_mail_data = null; |
|
71 | 71 | |
72 | - return $result; |
|
73 | - } |
|
72 | + return $result; |
|
73 | + } |
|
74 | 74 | |
75 | - /** |
|
76 | - * Does the actual sending. |
|
75 | + /** |
|
76 | + * Does the actual sending. |
|
77 | 77 | * |
78 | 78 | * @param string $to The recipient's email. |
79 | 79 | * @param array $data The email's data. |
@@ -81,81 +81,81 @@ discard block |
||
81 | 81 | * @param array $attachments The email attachments. |
82 | 82 | * |
83 | 83 | * @return bool |
84 | - */ |
|
85 | - protected function _send( $to, $data ) { |
|
86 | - |
|
87 | - // Prepare the sending function. |
|
88 | - $sending_function = apply_filters( 'getpaid_email_email_sending_function', 'wp_mail' ); |
|
89 | - |
|
90 | - // Send the actual email. |
|
91 | - $result = call_user_func( |
|
92 | - $sending_function, |
|
93 | - $to, |
|
94 | - html_entity_decode( $data['subject'], ENT_QUOTES, get_bloginfo( 'charset' ) ), |
|
95 | - $data['email'], |
|
96 | - $data['headers'], |
|
97 | - $data['attachments'] |
|
98 | - ); |
|
99 | - |
|
100 | - if ( ! $result ) { |
|
101 | - $log_message = wp_sprintf( __( "\nTime: %s\nTo: %s\nSubject: %s\n", 'invoicing' ), date_i18n( 'F j Y H:i:s', current_time( 'timestamp' ) ), $to, $data['subject'] ); |
|
102 | - wpinv_error_log( $log_message, __( 'Email from Invoicing plugin failed to send', 'invoicing' ), __FILE__, __LINE__ ); |
|
103 | - } |
|
104 | - |
|
105 | - return $result; |
|
106 | - } |
|
84 | + */ |
|
85 | + protected function _send( $to, $data ) { |
|
86 | + |
|
87 | + // Prepare the sending function. |
|
88 | + $sending_function = apply_filters( 'getpaid_email_email_sending_function', 'wp_mail' ); |
|
89 | + |
|
90 | + // Send the actual email. |
|
91 | + $result = call_user_func( |
|
92 | + $sending_function, |
|
93 | + $to, |
|
94 | + html_entity_decode( $data['subject'], ENT_QUOTES, get_bloginfo( 'charset' ) ), |
|
95 | + $data['email'], |
|
96 | + $data['headers'], |
|
97 | + $data['attachments'] |
|
98 | + ); |
|
99 | + |
|
100 | + if ( ! $result ) { |
|
101 | + $log_message = wp_sprintf( __( "\nTime: %s\nTo: %s\nSubject: %s\n", 'invoicing' ), date_i18n( 'F j Y H:i:s', current_time( 'timestamp' ) ), $to, $data['subject'] ); |
|
102 | + wpinv_error_log( $log_message, __( 'Email from Invoicing plugin failed to send', 'invoicing' ), __FILE__, __LINE__ ); |
|
103 | + } |
|
104 | + |
|
105 | + return $result; |
|
106 | + } |
|
107 | 107 | |
108 | 108 | /** |
109 | - * Retrieves email headers. |
|
110 | - */ |
|
111 | - public function get_headers() { |
|
109 | + * Retrieves email headers. |
|
110 | + */ |
|
111 | + public function get_headers() { |
|
112 | 112 | |
113 | - $name = $this->get_from_name(); |
|
114 | - $reply_to = $this->get_reply_to(); |
|
115 | - $headers = array( "Reply-To:$name <$reply_to>" ); |
|
113 | + $name = $this->get_from_name(); |
|
114 | + $reply_to = $this->get_reply_to(); |
|
115 | + $headers = array( "Reply-To:$name <$reply_to>" ); |
|
116 | 116 | |
117 | - return apply_filters( 'getpaid_email_headers', $headers, $this ); |
|
117 | + return apply_filters( 'getpaid_email_headers', $headers, $this ); |
|
118 | 118 | |
119 | - } |
|
119 | + } |
|
120 | 120 | |
121 | 121 | /** |
122 | - * Fires before an email is sent |
|
123 | - * |
|
124 | - * @since 1.0.0 |
|
125 | - */ |
|
126 | - public function before_sending() { |
|
122 | + * Fires before an email is sent |
|
123 | + * |
|
124 | + * @since 1.0.0 |
|
125 | + */ |
|
126 | + public function before_sending() { |
|
127 | 127 | |
128 | 128 | do_action( 'getpaid_before_send_email', $this ); |
129 | - add_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 ); |
|
130 | - add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 ); |
|
131 | - add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 ); |
|
132 | - add_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000000 ); |
|
129 | + add_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 ); |
|
130 | + add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 ); |
|
131 | + add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 ); |
|
132 | + add_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000000 ); |
|
133 | 133 | |
134 | - } |
|
134 | + } |
|
135 | 135 | |
136 | 136 | /** |
137 | - * Returns the from name. |
|
138 | - */ |
|
139 | - public function get_from_name() { |
|
137 | + * Returns the from name. |
|
138 | + */ |
|
139 | + public function get_from_name() { |
|
140 | 140 | |
141 | 141 | $from_name = wpinv_get_option( 'email_from_name', get_bloginfo( 'name' ) ); |
142 | 142 | |
143 | - if ( empty( $from_name ) ) { |
|
144 | - $from_name = get_bloginfo( 'name' ); |
|
143 | + if ( empty( $from_name ) ) { |
|
144 | + $from_name = get_bloginfo( 'name' ); |
|
145 | 145 | } |
146 | 146 | |
147 | - return wp_specialchars_decode( $from_name, ENT_QUOTES ); |
|
147 | + return wp_specialchars_decode( $from_name, ENT_QUOTES ); |
|
148 | 148 | } |
149 | 149 | |
150 | 150 | /** |
151 | - * Returns the from email. |
|
152 | - */ |
|
153 | - public function get_from_address() { |
|
151 | + * Returns the from email. |
|
152 | + */ |
|
153 | + public function get_from_address() { |
|
154 | 154 | |
155 | 155 | $from_address = wpinv_get_option( 'email_from', $this->default_from_address() ); |
156 | 156 | |
157 | - if ( ! is_email( $from_address ) ) { |
|
158 | - $from_address = $this->default_from_address(); |
|
157 | + if ( ! is_email( $from_address ) ) { |
|
158 | + $from_address = $this->default_from_address(); |
|
159 | 159 | } |
160 | 160 | |
161 | 161 | return $from_address; |
@@ -163,75 +163,75 @@ discard block |
||
163 | 163 | } |
164 | 164 | |
165 | 165 | /** |
166 | - * The default emails from address. |
|
167 | - * |
|
168 | - * Defaults to wordpress@$sitename |
|
169 | - * Some hosts will block outgoing mail from this address if it doesn't exist, |
|
170 | - * but there's no easy alternative. Defaulting to admin_email might appear to be |
|
171 | - * another option, but some hosts may refuse to relay mail from an unknown domain. |
|
172 | - * |
|
173 | - */ |
|
174 | - public function default_from_address() { |
|
175 | - |
|
176 | - // Get the site domain and get rid of www. |
|
177 | - $sitename = strtolower( $_SERVER['SERVER_NAME'] ); |
|
178 | - if ( substr( $sitename, 0, 4 ) == 'www.' ) { |
|
179 | - $sitename = substr( $sitename, 4 ); |
|
180 | - } |
|
181 | - |
|
182 | - $from_email = 'wordpress@' . $sitename; |
|
183 | - |
|
184 | - return apply_filters( 'getpaid_default_from_address', $from_email ); |
|
166 | + * The default emails from address. |
|
167 | + * |
|
168 | + * Defaults to wordpress@$sitename |
|
169 | + * Some hosts will block outgoing mail from this address if it doesn't exist, |
|
170 | + * but there's no easy alternative. Defaulting to admin_email might appear to be |
|
171 | + * another option, but some hosts may refuse to relay mail from an unknown domain. |
|
172 | + * |
|
173 | + */ |
|
174 | + public function default_from_address() { |
|
175 | + |
|
176 | + // Get the site domain and get rid of www. |
|
177 | + $sitename = strtolower( $_SERVER['SERVER_NAME'] ); |
|
178 | + if ( substr( $sitename, 0, 4 ) == 'www.' ) { |
|
179 | + $sitename = substr( $sitename, 4 ); |
|
180 | + } |
|
181 | + |
|
182 | + $from_email = 'wordpress@' . $sitename; |
|
183 | + |
|
184 | + return apply_filters( 'getpaid_default_from_address', $from_email ); |
|
185 | 185 | |
186 | 186 | } |
187 | 187 | |
188 | 188 | /** |
189 | - * Get the email reply-to. |
|
190 | - * |
|
191 | - * |
|
192 | - * @return string The email reply-to address. |
|
193 | - */ |
|
194 | - public function get_reply_to() { |
|
189 | + * Get the email reply-to. |
|
190 | + * |
|
191 | + * |
|
192 | + * @return string The email reply-to address. |
|
193 | + */ |
|
194 | + public function get_reply_to() { |
|
195 | 195 | |
196 | - $reply_to = wpinv_get_admin_email(); |
|
196 | + $reply_to = wpinv_get_admin_email(); |
|
197 | 197 | |
198 | - if ( ! is_email( $reply_to ) ) { |
|
199 | - $reply_to = get_option( 'admin_email' ); |
|
200 | - } |
|
198 | + if ( ! is_email( $reply_to ) ) { |
|
199 | + $reply_to = get_option( 'admin_email' ); |
|
200 | + } |
|
201 | 201 | |
202 | - return $reply_to; |
|
202 | + return $reply_to; |
|
203 | 203 | } |
204 | 204 | |
205 | 205 | /** |
206 | - * Get the email content type. |
|
207 | - * |
|
208 | - */ |
|
209 | - public function get_content_type() { |
|
210 | - return apply_filters( 'getpaid_email_content_type', 'text/html', $this ); |
|
206 | + * Get the email content type. |
|
207 | + * |
|
208 | + */ |
|
209 | + public function get_content_type() { |
|
210 | + return apply_filters( 'getpaid_email_content_type', 'text/html', $this ); |
|
211 | 211 | } |
212 | 212 | |
213 | 213 | /** |
214 | - * Ensures that our email messages are not messed up by template plugins. |
|
215 | - * |
|
216 | - * @return array wp_mail_data. |
|
217 | - */ |
|
218 | - public function ensure_email_content( $args ) { |
|
219 | - $args['message'] = $this->wp_mail_data['email']; |
|
220 | - return $args; |
|
214 | + * Ensures that our email messages are not messed up by template plugins. |
|
215 | + * |
|
216 | + * @return array wp_mail_data. |
|
217 | + */ |
|
218 | + public function ensure_email_content( $args ) { |
|
219 | + $args['message'] = $this->wp_mail_data['email']; |
|
220 | + return $args; |
|
221 | 221 | } |
222 | 222 | |
223 | 223 | /** |
224 | - * A little house keeping after an email is sent. |
|
225 | - * |
|
226 | - */ |
|
227 | - public function after_sending() { |
|
224 | + * A little house keeping after an email is sent. |
|
225 | + * |
|
226 | + */ |
|
227 | + public function after_sending() { |
|
228 | 228 | |
229 | 229 | do_action( 'getpaid_after_send_email', $this->wp_mail_data ); |
230 | - remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 ); |
|
231 | - remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 ); |
|
232 | - remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 ); |
|
233 | - remove_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000000 ); |
|
230 | + remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ), 1000 ); |
|
231 | + remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ), 1000 ); |
|
232 | + remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ), 1000 ); |
|
233 | + remove_filter( 'wp_mail', array( $this, 'ensure_email_content' ), 1000000 ); |
|
234 | 234 | |
235 | - } |
|
235 | + } |
|
236 | 236 | |
237 | 237 | } |
@@ -13,23 +13,23 @@ discard block |
||
13 | 13 | class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway { |
14 | 14 | |
15 | 15 | /** |
16 | - * Payment method id. |
|
17 | - * |
|
18 | - * @var string |
|
19 | - */ |
|
16 | + * Payment method id. |
|
17 | + * |
|
18 | + * @var string |
|
19 | + */ |
|
20 | 20 | public $id = 'bank_transfer'; |
21 | 21 | |
22 | 22 | /** |
23 | - * Payment method order. |
|
24 | - * |
|
25 | - * @var int |
|
26 | - */ |
|
27 | - public $order = 8; |
|
23 | + * Payment method order. |
|
24 | + * |
|
25 | + * @var int |
|
26 | + */ |
|
27 | + public $order = 8; |
|
28 | 28 | |
29 | 29 | /** |
30 | - * Class constructor. |
|
31 | - */ |
|
32 | - public function __construct() { |
|
30 | + * Class constructor. |
|
31 | + */ |
|
32 | + public function __construct() { |
|
33 | 33 | parent::__construct(); |
34 | 34 | |
35 | 35 | $this->title = __( 'Direct bank transfer', 'invoicing' ); |
@@ -37,22 +37,22 @@ discard block |
||
37 | 37 | $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
38 | 38 | $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
39 | 39 | |
40 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
41 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
42 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
40 | + add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
41 | + add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
42 | + add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
43 | 43 | |
44 | 44 | } |
45 | 45 | |
46 | 46 | /** |
47 | - * Process Payment. |
|
48 | - * |
|
49 | - * |
|
50 | - * @param WPInv_Invoice $invoice Invoice. |
|
51 | - * @param array $submission_data Posted checkout fields. |
|
52 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
53 | - * @return array |
|
54 | - */ |
|
55 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
47 | + * Process Payment. |
|
48 | + * |
|
49 | + * |
|
50 | + * @param WPInv_Invoice $invoice Invoice. |
|
51 | + * @param array $submission_data Posted checkout fields. |
|
52 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
53 | + * @return array |
|
54 | + */ |
|
55 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
56 | 56 | |
57 | 57 | // Add a transaction id. |
58 | 58 | $invoice->set_transaction_id( $invoice->generate_key('trans_') ); |
@@ -73,66 +73,66 @@ discard block |
||
73 | 73 | } |
74 | 74 | |
75 | 75 | /** |
76 | - * Output for the order received page. |
|
77 | - * |
|
78 | - * @param WPInv_Invoice $invoice Invoice. |
|
79 | - */ |
|
80 | - public function thankyou_page( $invoice ) { |
|
76 | + * Output for the order received page. |
|
77 | + * |
|
78 | + * @param WPInv_Invoice $invoice Invoice. |
|
79 | + */ |
|
80 | + public function thankyou_page( $invoice ) { |
|
81 | 81 | |
82 | 82 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
83 | 83 | |
84 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
84 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
85 | 85 | |
86 | 86 | if ( ! empty( $this->instructions ) ) { |
87 | 87 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
88 | - } |
|
88 | + } |
|
89 | 89 | |
90 | - $this->bank_details( $invoice ); |
|
90 | + $this->bank_details( $invoice ); |
|
91 | 91 | |
92 | - echo '</div>'; |
|
92 | + echo '</div>'; |
|
93 | 93 | |
94 | 94 | } |
95 | 95 | |
96 | - } |
|
96 | + } |
|
97 | 97 | |
98 | 98 | /** |
99 | - * Add content to the WPI emails. |
|
100 | - * |
|
101 | - * @param WPInv_Invoice $invoice Invoice. |
|
102 | - * @param string $email_type Email format: plain text or HTML. |
|
103 | - * @param bool $sent_to_admin Sent to admin. |
|
104 | - */ |
|
105 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
99 | + * Add content to the WPI emails. |
|
100 | + * |
|
101 | + * @param WPInv_Invoice $invoice Invoice. |
|
102 | + * @param string $email_type Email format: plain text or HTML. |
|
103 | + * @param bool $sent_to_admin Sent to admin. |
|
104 | + */ |
|
105 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
106 | 106 | |
107 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
107 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
108 | 108 | |
109 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
109 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
110 | 110 | |
111 | - if ( $this->instructions ) { |
|
112 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
111 | + if ( $this->instructions ) { |
|
112 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
113 | 113 | } |
114 | 114 | |
115 | - $this->bank_details( $invoice ); |
|
115 | + $this->bank_details( $invoice ); |
|
116 | 116 | |
117 | - echo '</div>'; |
|
117 | + echo '</div>'; |
|
118 | 118 | |
119 | - } |
|
119 | + } |
|
120 | 120 | |
121 | 121 | } |
122 | 122 | |
123 | 123 | /** |
124 | - * Get bank details and place into a list format. |
|
125 | - * |
|
126 | - * @param WPInv_Invoice $invoice Invoice. |
|
127 | - */ |
|
128 | - protected function bank_details( $invoice ) { |
|
124 | + * Get bank details and place into a list format. |
|
125 | + * |
|
126 | + * @param WPInv_Invoice $invoice Invoice. |
|
127 | + */ |
|
128 | + protected function bank_details( $invoice ) { |
|
129 | 129 | |
130 | - // Get the invoice country and country $locale. |
|
131 | - $country = $invoice->get_country(); |
|
132 | - $locale = $this->get_country_locale(); |
|
130 | + // Get the invoice country and country $locale. |
|
131 | + $country = $invoice->get_country(); |
|
132 | + $locale = $this->get_country_locale(); |
|
133 | 133 | |
134 | - // Get sortcode label in the $locale array and use appropriate one. |
|
135 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
134 | + // Get sortcode label in the $locale array and use appropriate one. |
|
135 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
136 | 136 | |
137 | 137 | $bank_fields = array( |
138 | 138 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -161,144 +161,144 @@ discard block |
||
161 | 161 | return; |
162 | 162 | } |
163 | 163 | |
164 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
164 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
165 | 165 | |
166 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
166 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
167 | 167 | |
168 | - foreach ( $bank_info as $key => $data ) { |
|
168 | + foreach ( $bank_info as $key => $data ) { |
|
169 | 169 | |
170 | - $key = sanitize_html_class( $key ); |
|
171 | - $label = wp_kses_post( $data['label'] ); |
|
172 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
170 | + $key = sanitize_html_class( $key ); |
|
171 | + $label = wp_kses_post( $data['label'] ); |
|
172 | + $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
173 | 173 | |
174 | - echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL; |
|
175 | - } |
|
174 | + echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL; |
|
175 | + } |
|
176 | 176 | |
177 | - echo '</table>'; |
|
177 | + echo '</table>'; |
|
178 | 178 | |
179 | 179 | } |
180 | 180 | |
181 | 181 | /** |
182 | - * Get country locale if localized. |
|
183 | - * |
|
184 | - * @return array |
|
185 | - */ |
|
186 | - public function get_country_locale() { |
|
187 | - |
|
188 | - if ( empty( $this->locale ) ) { |
|
189 | - |
|
190 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
191 | - $this->locale = apply_filters( |
|
192 | - 'getpaid_get_bank_transfer_locale', |
|
193 | - array( |
|
194 | - 'AU' => array( |
|
195 | - 'sortcode' => array( |
|
196 | - 'label' => __( 'BSB', 'invoicing' ), |
|
197 | - ), |
|
198 | - ), |
|
199 | - 'CA' => array( |
|
200 | - 'sortcode' => array( |
|
201 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
202 | - ), |
|
203 | - ), |
|
204 | - 'IN' => array( |
|
205 | - 'sortcode' => array( |
|
206 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
207 | - ), |
|
208 | - ), |
|
209 | - 'IT' => array( |
|
210 | - 'sortcode' => array( |
|
211 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
212 | - ), |
|
213 | - ), |
|
214 | - 'NZ' => array( |
|
215 | - 'sortcode' => array( |
|
216 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
217 | - ), |
|
218 | - ), |
|
219 | - 'SE' => array( |
|
220 | - 'sortcode' => array( |
|
221 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
222 | - ), |
|
223 | - ), |
|
224 | - 'US' => array( |
|
225 | - 'sortcode' => array( |
|
226 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
227 | - ), |
|
228 | - ), |
|
229 | - 'ZA' => array( |
|
230 | - 'sortcode' => array( |
|
231 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
232 | - ), |
|
233 | - ), |
|
234 | - ) |
|
235 | - ); |
|
236 | - |
|
237 | - } |
|
238 | - |
|
239 | - return $this->locale; |
|
240 | - |
|
241 | - } |
|
242 | - |
|
243 | - /** |
|
244 | - * Filters the gateway settings. |
|
245 | - * |
|
246 | - * @param array $admin_settings |
|
247 | - */ |
|
248 | - public function admin_settings( $admin_settings ) { |
|
182 | + * Get country locale if localized. |
|
183 | + * |
|
184 | + * @return array |
|
185 | + */ |
|
186 | + public function get_country_locale() { |
|
187 | + |
|
188 | + if ( empty( $this->locale ) ) { |
|
189 | + |
|
190 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
191 | + $this->locale = apply_filters( |
|
192 | + 'getpaid_get_bank_transfer_locale', |
|
193 | + array( |
|
194 | + 'AU' => array( |
|
195 | + 'sortcode' => array( |
|
196 | + 'label' => __( 'BSB', 'invoicing' ), |
|
197 | + ), |
|
198 | + ), |
|
199 | + 'CA' => array( |
|
200 | + 'sortcode' => array( |
|
201 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
202 | + ), |
|
203 | + ), |
|
204 | + 'IN' => array( |
|
205 | + 'sortcode' => array( |
|
206 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
207 | + ), |
|
208 | + ), |
|
209 | + 'IT' => array( |
|
210 | + 'sortcode' => array( |
|
211 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
212 | + ), |
|
213 | + ), |
|
214 | + 'NZ' => array( |
|
215 | + 'sortcode' => array( |
|
216 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
217 | + ), |
|
218 | + ), |
|
219 | + 'SE' => array( |
|
220 | + 'sortcode' => array( |
|
221 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
222 | + ), |
|
223 | + ), |
|
224 | + 'US' => array( |
|
225 | + 'sortcode' => array( |
|
226 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
227 | + ), |
|
228 | + ), |
|
229 | + 'ZA' => array( |
|
230 | + 'sortcode' => array( |
|
231 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
232 | + ), |
|
233 | + ), |
|
234 | + ) |
|
235 | + ); |
|
236 | + |
|
237 | + } |
|
238 | + |
|
239 | + return $this->locale; |
|
240 | + |
|
241 | + } |
|
242 | + |
|
243 | + /** |
|
244 | + * Filters the gateway settings. |
|
245 | + * |
|
246 | + * @param array $admin_settings |
|
247 | + */ |
|
248 | + public function admin_settings( $admin_settings ) { |
|
249 | 249 | |
250 | 250 | $admin_settings['worldpay_desc']['std'] = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ); |
251 | - $admin_settings['worldpay_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
251 | + $admin_settings['worldpay_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
252 | 252 | |
253 | - $locale = $this->get_country_locale(); |
|
253 | + $locale = $this->get_country_locale(); |
|
254 | 254 | |
255 | - // Get sortcode label in the $locale array and use appropriate one. |
|
256 | - $country = wpinv_default_billing_country(); |
|
257 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
255 | + // Get sortcode label in the $locale array and use appropriate one. |
|
256 | + $country = wpinv_default_billing_country(); |
|
257 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
258 | 258 | |
259 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
259 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
260 | 260 | 'type' => 'text', |
261 | 261 | 'id' => 'bank_transfer_ac_name', |
262 | 262 | 'name' => __( 'Account Name', 'invoicing' ), |
263 | - ); |
|
263 | + ); |
|
264 | 264 | |
265 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
265 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
266 | 266 | 'type' => 'text', |
267 | 267 | 'id' => 'bank_transfer_ac_no', |
268 | 268 | 'name' => __( 'Account Number', 'invoicing' ), |
269 | - ); |
|
269 | + ); |
|
270 | 270 | |
271 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
271 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
272 | 272 | 'type' => 'text', |
273 | 273 | 'id' => 'bank_transfer_bank_name', |
274 | 274 | 'name' => __( 'Bank Name', 'invoicing' ), |
275 | - ); |
|
275 | + ); |
|
276 | 276 | |
277 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
277 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
278 | 278 | 'type' => 'text', |
279 | 279 | 'id' => 'bank_transfer_ifsc', |
280 | 280 | 'name' => __( 'IFSC Code', 'invoicing' ), |
281 | - ); |
|
281 | + ); |
|
282 | 282 | |
283 | - $admin_settings['bank_transfer_iban'] = array( |
|
283 | + $admin_settings['bank_transfer_iban'] = array( |
|
284 | 284 | 'type' => 'text', |
285 | 285 | 'id' => 'bank_transfer_iban', |
286 | 286 | 'name' => __( 'IBAN', 'invoicing' ), |
287 | - ); |
|
287 | + ); |
|
288 | 288 | |
289 | - $admin_settings['bank_transfer_bic'] = array( |
|
289 | + $admin_settings['bank_transfer_bic'] = array( |
|
290 | 290 | 'type' => 'text', |
291 | 291 | 'id' => 'bank_transfer_bic', |
292 | 292 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
293 | - ); |
|
293 | + ); |
|
294 | 294 | |
295 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
296 | - 'type' => 'text', |
|
297 | - 'id' => 'bank_transfer_sort_code', |
|
298 | - 'name' => $sortcode, |
|
299 | - ); |
|
295 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
296 | + 'type' => 'text', |
|
297 | + 'id' => 'bank_transfer_sort_code', |
|
298 | + 'name' => $sortcode, |
|
299 | + ); |
|
300 | 300 | |
301 | - $admin_settings['bank_transfer_info'] = array( |
|
301 | + $admin_settings['bank_transfer_info'] = array( |
|
302 | 302 | 'id' => 'bank_transfer_info', |
303 | 303 | 'name' => __( 'Instructions', 'invoicing' ), |
304 | 304 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -308,7 +308,7 @@ discard block |
||
308 | 308 | 'rows' => 5 |
309 | 309 | ); |
310 | 310 | |
311 | - return $admin_settings; |
|
312 | - } |
|
311 | + return $admin_settings; |
|
312 | + } |
|
313 | 313 | |
314 | 314 | } |
@@ -116,7 +116,7 @@ discard block |
||
116 | 116 | $current = 'earnings'; |
117 | 117 | |
118 | 118 | if ( isset( $_GET['view'] ) && array_key_exists( $_GET['view'], $views ) ) |
119 | - $current = $_GET['view']; |
|
119 | + $current = $_GET['view']; |
|
120 | 120 | |
121 | 121 | ?> |
122 | 122 | <form id="wpinv-reports-filter" method="get" class="tablenav"> |
@@ -134,7 +134,7 @@ discard block |
||
134 | 134 | </form> |
135 | 135 | <?php |
136 | 136 | |
137 | - do_action( 'wpinv_reports_view_' . $current ); |
|
137 | + do_action( 'wpinv_reports_view_' . $current ); |
|
138 | 138 | |
139 | 139 | } |
140 | 140 | |
@@ -224,13 +224,13 @@ discard block |
||
224 | 224 | $is_writeable = $is_dir && is_writeable( $this->export_dir ); |
225 | 225 | |
226 | 226 | if ( $is_dir && $is_writeable ) { |
227 | - return true; |
|
227 | + return true; |
|
228 | 228 | } else if ( $is_dir && !$is_writeable ) { |
229 | - if ( !$this->wp_filesystem->chmod( $this->export_dir, FS_CHMOD_DIR ) ) { |
|
230 | - return wp_sprintf( __( 'Filesystem ERROR: Export location %s is not writable, check your file permissions.', 'invoicing' ), $this->export_dir ); |
|
231 | - } |
|
229 | + if ( !$this->wp_filesystem->chmod( $this->export_dir, FS_CHMOD_DIR ) ) { |
|
230 | + return wp_sprintf( __( 'Filesystem ERROR: Export location %s is not writable, check your file permissions.', 'invoicing' ), $this->export_dir ); |
|
231 | + } |
|
232 | 232 | |
233 | - return true; |
|
233 | + return true; |
|
234 | 234 | } else { |
235 | 235 | if ( !$this->wp_filesystem->mkdir( $this->export_dir, FS_CHMOD_DIR ) ) { |
236 | 236 | return wp_sprintf( __( 'Filesystem ERROR: Could not create directory %s. This is usually due to inconsistent file permissions.', 'invoicing' ), $this->export_dir ); |
@@ -325,12 +325,12 @@ discard block |
||
325 | 325 | $output = fopen( 'php://output', 'w' ) or die( 'Unsupported server' ); |
326 | 326 | |
327 | 327 | // Let the browser know what content we're streaming and how it should save the content. |
328 | - $name = time(); |
|
329 | - header( "Content-Type:application/csv" ); |
|
328 | + $name = time(); |
|
329 | + header( "Content-Type:application/csv" ); |
|
330 | 330 | header( "Content-Disposition:attachment;filename=getpaid-discounts-$name.csv" ); |
331 | 331 | |
332 | 332 | // Output the csv column headers. |
333 | - fputcsv( |
|
333 | + fputcsv( |
|
334 | 334 | $output, |
335 | 335 | array( |
336 | 336 | __( 'Discount Id', 'invoicing' ), |
@@ -698,12 +698,12 @@ discard block |
||
698 | 698 | $thirty_days_ago = date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) ); |
699 | 699 | $first_day_month = date( 'Y-m-1', current_time( 'timestamp' ) ); |
700 | 700 | $last_day_month = date( 'Y-m-t', current_time( 'timestamp' ) ); |
701 | - $first_day_last_month = date( 'Y-m-d', strtotime( 'first day of last month', current_time( 'timestamp' ) ) ); |
|
701 | + $first_day_last_month = date( 'Y-m-d', strtotime( 'first day of last month', current_time( 'timestamp' ) ) ); |
|
702 | 702 | $last_day_last_month = date( 'Y-m-d', strtotime( 'last day of last month', current_time( 'timestamp' ) ) ); |
703 | 703 | $first_day_year = date( 'Y-1-1', current_time( 'timestamp' ) ); |
704 | 704 | $last_day_year = date( 'Y-12-31', current_time( 'timestamp' ) ); |
705 | - $first_day_last_year = date( 'Y-m-d', strtotime( 'first day of last year', current_time( 'timestamp' ) ) ); |
|
706 | - $last_day_last_year = date( 'Y-m-d', strtotime( 'last day of last year', current_time( 'timestamp' ) ) ); |
|
705 | + $first_day_last_year = date( 'Y-m-d', strtotime( 'first day of last year', current_time( 'timestamp' ) ) ); |
|
706 | + $last_day_last_year = date( 'Y-m-d', strtotime( 'last day of last year', current_time( 'timestamp' ) ) ); |
|
707 | 707 | |
708 | 708 | $ranges = array( |
709 | 709 |
@@ -14,421 +14,421 @@ discard block |
||
14 | 14 | */ |
15 | 15 | class WPInv_Plugin { |
16 | 16 | |
17 | - /** |
|
18 | - * GetPaid version. |
|
19 | - * |
|
20 | - * @var string |
|
21 | - */ |
|
22 | - public $version; |
|
23 | - |
|
24 | - /** |
|
25 | - * Data container. |
|
26 | - * |
|
27 | - * @var array |
|
28 | - */ |
|
29 | - protected $data = array(); |
|
30 | - |
|
31 | - /** |
|
32 | - * Form elements instance. |
|
33 | - * |
|
34 | - * @var WPInv_Payment_Form_Elements |
|
35 | - */ |
|
36 | - public $form_elements; |
|
37 | - |
|
38 | - /** |
|
39 | - * Tax instance. |
|
40 | - * |
|
41 | - * @var WPInv_EUVat |
|
42 | - */ |
|
43 | - public $tax; |
|
44 | - |
|
45 | - /** |
|
46 | - * @param array An array of payment gateways. |
|
47 | - */ |
|
48 | - public $gateways; |
|
49 | - |
|
50 | - /** |
|
51 | - * Class constructor. |
|
52 | - */ |
|
53 | - public function __construct() { |
|
54 | - $this->define_constants(); |
|
55 | - $this->includes(); |
|
56 | - $this->init_hooks(); |
|
57 | - $this->set_properties(); |
|
58 | - } |
|
59 | - |
|
60 | - /** |
|
61 | - * Sets a custom data property. |
|
62 | - * |
|
63 | - * @param string $prop The prop to set. |
|
64 | - * @param mixed $value The value to retrieve. |
|
65 | - */ |
|
66 | - public function set( $prop, $value ) { |
|
67 | - $this->data[ $prop ] = $value; |
|
68 | - } |
|
69 | - |
|
70 | - /** |
|
71 | - * Gets a custom data property. |
|
72 | - * |
|
73 | - * @param string $prop The prop to set. |
|
74 | - * @return mixed The value. |
|
75 | - */ |
|
76 | - public function get( $prop ) { |
|
77 | - |
|
78 | - if ( isset( $this->data[ $prop ] ) ) { |
|
79 | - return $this->data[ $prop ]; |
|
80 | - } |
|
81 | - |
|
82 | - return null; |
|
83 | - } |
|
84 | - |
|
85 | - /** |
|
86 | - * Define class properties. |
|
87 | - */ |
|
88 | - public function set_properties() { |
|
89 | - |
|
90 | - // Sessions. |
|
91 | - $this->set( 'session', new WPInv_Session_Handler() ); |
|
92 | - $GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility. |
|
93 | - $this->form_elements = new WPInv_Payment_Form_Elements(); |
|
94 | - $this->tax = new WPInv_EUVat(); |
|
95 | - $this->tax->init(); |
|
96 | - $GLOBALS['wpinv_euvat'] = $this->tax; // Backwards compatibility. |
|
97 | - |
|
98 | - // Init other objects. |
|
99 | - $this->set( 'reports', new WPInv_Reports() ); // TODO: Refactor. |
|
100 | - $this->set( 'session', new WPInv_Session_Handler() ); |
|
101 | - $this->set( 'notes', new WPInv_Notes() ); |
|
102 | - $this->set( 'api', new WPInv_API() ); |
|
103 | - $this->set( 'post_types', new GetPaid_Post_Types() ); |
|
104 | - $this->set( 'template', new GetPaid_Template() ); |
|
105 | - $this->set( 'admin', new GetPaid_Admin() ); |
|
106 | - $this->set( 'subscriptions', new WPInv_Subscriptions() ); |
|
107 | - $this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() ); |
|
108 | - $this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() ); |
|
109 | - $this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() ); |
|
110 | - $this->set( 'payment_forms', new GetPaid_Payment_Forms() ); |
|
111 | - |
|
112 | - } |
|
113 | - |
|
114 | - /** |
|
115 | - * Define plugin constants. |
|
116 | - */ |
|
117 | - public function define_constants() { |
|
118 | - define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) ); |
|
119 | - define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) ); |
|
120 | - $this->version = WPINV_VERSION; |
|
121 | - } |
|
122 | - |
|
123 | - /** |
|
124 | - * Hook into actions and filters. |
|
125 | - * |
|
126 | - * @since 1.0.19 |
|
127 | - */ |
|
128 | - protected function init_hooks() { |
|
129 | - /* Internationalize the text strings used. */ |
|
130 | - add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) ); |
|
131 | - |
|
132 | - // Init the plugin after WordPress inits. |
|
133 | - add_action( 'init', array( $this, 'init' ), 1 ); |
|
134 | - add_action( 'getpaid_init', array( $this, 'maybe_process_ipn' ), 5 ); |
|
135 | - add_action( 'init', array( &$this, 'wpinv_actions' ) ); |
|
136 | - add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 ); |
|
137 | - |
|
138 | - if ( class_exists( 'BuddyPress' ) ) { |
|
139 | - add_action( 'bp_include', array( &$this, 'bp_invoicing_init' ) ); |
|
140 | - } |
|
141 | - |
|
142 | - add_action( 'wp_enqueue_scripts', array( &$this, 'enqueue_scripts' ) ); |
|
143 | - add_action( 'wp_footer', array( &$this, 'wp_footer' ) ); |
|
144 | - add_action( 'widgets_init', array( &$this, 'register_widgets' ) ); |
|
145 | - add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) ); |
|
146 | - add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) ); |
|
147 | - |
|
148 | - // Fires after registering actions. |
|
149 | - do_action( 'wpinv_actions', $this ); |
|
150 | - do_action( 'getpaid_actions', $this ); |
|
151 | - |
|
152 | - } |
|
153 | - |
|
154 | - public function plugins_loaded() { |
|
155 | - /* Internationalize the text strings used. */ |
|
156 | - $this->load_textdomain(); |
|
157 | - |
|
158 | - do_action( 'wpinv_loaded' ); |
|
159 | - |
|
160 | - // Fix oxygen page builder conflict |
|
161 | - if ( function_exists( 'ct_css_output' ) ) { |
|
162 | - wpinv_oxygen_fix_conflict(); |
|
163 | - } |
|
164 | - } |
|
165 | - |
|
166 | - /** |
|
167 | - * Load the translation of the plugin. |
|
168 | - * |
|
169 | - * @since 1.0 |
|
170 | - */ |
|
171 | - public function load_textdomain( $locale = NULL ) { |
|
172 | - if ( empty( $locale ) ) { |
|
173 | - $locale = is_admin() && function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale(); |
|
174 | - } |
|
175 | - |
|
176 | - $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' ); |
|
177 | - |
|
178 | - unload_textdomain( 'invoicing' ); |
|
179 | - load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' ); |
|
180 | - load_plugin_textdomain( 'invoicing', false, WPINV_PLUGIN_DIR . 'languages' ); |
|
181 | - |
|
182 | - /** |
|
183 | - * Define language constants. |
|
184 | - */ |
|
185 | - require_once( WPINV_PLUGIN_DIR . 'language.php' ); |
|
186 | - } |
|
187 | - |
|
188 | - /** |
|
189 | - * Include required core files used in admin and on the frontend. |
|
190 | - */ |
|
191 | - public function includes() { |
|
192 | - |
|
193 | - // Start with the settings. |
|
194 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php' ); |
|
195 | - |
|
196 | - // Packages/libraries. |
|
197 | - require_once( WPINV_PLUGIN_DIR . 'vendor/autoload.php' ); |
|
198 | - require_once( WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php' ); |
|
199 | - |
|
200 | - // Load functions. |
|
201 | - require_once( WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php' ); |
|
202 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php' ); |
|
203 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php' ); |
|
204 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php' ); |
|
205 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php' ); |
|
206 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php' ); |
|
207 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php' ); |
|
208 | - require_once( WPINV_PLUGIN_DIR . 'includes/invoice-functions.php' ); |
|
209 | - require_once( WPINV_PLUGIN_DIR . 'includes/subscription-functions.php' ); |
|
210 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php' ); |
|
211 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php' ); |
|
212 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php' ); |
|
213 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php' ); |
|
214 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-user-functions.php' ); |
|
215 | - require_once( WPINV_PLUGIN_DIR . 'includes/error-functions.php' ); |
|
216 | - |
|
217 | - // Register autoloader. |
|
218 | - try { |
|
219 | - spl_autoload_register( array( $this, 'autoload' ), true ); |
|
220 | - } catch ( Exception $e ) { |
|
221 | - wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true ); |
|
222 | - } |
|
223 | - |
|
224 | - require_once( WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php' ); |
|
225 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php' ); |
|
226 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php' ); |
|
227 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php' ); |
|
228 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-reports.php' ); |
|
229 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php' ); |
|
230 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php' ); |
|
231 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php' ); |
|
232 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php' ); |
|
233 | - require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php' ); |
|
234 | - require_once( WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php' ); |
|
235 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php' ); |
|
236 | - require_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php' ); |
|
237 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php' ); |
|
238 | - require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' ); |
|
239 | - require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' ); |
|
240 | - require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' ); |
|
241 | - require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' ); |
|
242 | - require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' ); |
|
243 | - require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' ); |
|
244 | - require_once( WPINV_PLUGIN_DIR . 'widgets/getpaid.php' ); |
|
245 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-payment-form-elements.php' ); |
|
246 | - |
|
247 | - /** |
|
248 | - * Load the tax class. |
|
249 | - */ |
|
250 | - if ( ! class_exists( 'WPInv_EUVat' ) ) { |
|
251 | - require_once( WPINV_PLUGIN_DIR . 'includes/libraries/wpinv-euvat/class-wpinv-euvat.php' ); |
|
252 | - } |
|
253 | - |
|
254 | - if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { |
|
255 | - GetPaid_Post_Types_Admin::init(); |
|
256 | - |
|
257 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-upgrade-functions.php' ); |
|
258 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php' ); |
|
259 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php' ); |
|
260 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php' ); |
|
261 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php' ); |
|
262 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php' ); |
|
263 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php' ); |
|
264 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php' ); |
|
265 | - // load the user class only on the users.php page |
|
266 | - global $pagenow; |
|
267 | - if($pagenow=='users.php'){ |
|
268 | - new WPInv_Admin_Users(); |
|
269 | - } |
|
270 | - } |
|
271 | - |
|
272 | - // Register cli commands |
|
273 | - if ( defined( 'WP_CLI' ) && WP_CLI ) { |
|
274 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php' ); |
|
275 | - WP_CLI::add_command( 'invoicing', 'WPInv_CLI' ); |
|
276 | - } |
|
277 | - |
|
278 | - require_once( WPINV_PLUGIN_DIR . 'includes/admin/install.php' ); |
|
279 | - } |
|
280 | - |
|
281 | - /** |
|
282 | - * Class autoloader |
|
283 | - * |
|
284 | - * @param string $class_name The name of the class to load. |
|
285 | - * @access public |
|
286 | - * @since 1.0.19 |
|
287 | - * @return void |
|
288 | - */ |
|
289 | - public function autoload( $class_name ) { |
|
290 | - |
|
291 | - // Normalize the class name... |
|
292 | - $class_name = strtolower( $class_name ); |
|
293 | - |
|
294 | - // ... and make sure it is our class. |
|
295 | - if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) { |
|
296 | - return; |
|
297 | - } |
|
298 | - |
|
299 | - // Next, prepare the file name from the class. |
|
300 | - $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php'; |
|
301 | - |
|
302 | - // Base path of the classes. |
|
303 | - $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR ); |
|
304 | - |
|
305 | - // And an array of possible locations in order of importance. |
|
306 | - $locations = array( |
|
307 | - "$plugin_path/includes", |
|
308 | - "$plugin_path/includes/data-stores", |
|
309 | - "$plugin_path/includes/gateways", |
|
310 | - "$plugin_path/includes/api", |
|
311 | - "$plugin_path/includes/admin", |
|
312 | - "$plugin_path/includes/admin/meta-boxes", |
|
313 | - ); |
|
314 | - |
|
315 | - foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) { |
|
316 | - |
|
317 | - if ( file_exists( trailingslashit( $location ) . $file_name ) ) { |
|
318 | - include trailingslashit( $location ) . $file_name; |
|
319 | - break; |
|
320 | - } |
|
321 | - |
|
322 | - } |
|
323 | - |
|
324 | - } |
|
325 | - |
|
326 | - /** |
|
327 | - * Inits hooks etc. |
|
328 | - */ |
|
329 | - public function init() { |
|
330 | - |
|
331 | - // Fires before getpaid inits. |
|
332 | - do_action( 'before_getpaid_init', $this ); |
|
333 | - |
|
334 | - // Load default gateways. |
|
335 | - $gateways = apply_filters( |
|
336 | - 'getpaid_default_gateways', |
|
337 | - array( |
|
338 | - 'manual' => 'GetPaid_Manual_Gateway', |
|
339 | - 'paypal' => 'GetPaid_Paypal_Gateway', |
|
340 | - 'worldpay' => 'GetPaid_Worldpay_Gateway', |
|
341 | - 'bank_transfer' => 'GetPaid_Bank_Transfer_Gateway', |
|
342 | - 'authorizenet' => 'GetPaid_Authorize_Net_Gateway', |
|
343 | - ) |
|
344 | - ); |
|
345 | - |
|
346 | - foreach ( $gateways as $id => $class ) { |
|
347 | - $this->gateways[ $id ] = new $class(); |
|
348 | - } |
|
349 | - |
|
350 | - // Fires after getpaid inits. |
|
351 | - do_action( 'getpaid_init', $this ); |
|
352 | - |
|
353 | - } |
|
354 | - |
|
355 | - /** |
|
356 | - * Checks if this is an IPN request and processes it. |
|
357 | - */ |
|
358 | - public function maybe_process_ipn() { |
|
359 | - |
|
360 | - // Ensure that this is an IPN request. |
|
361 | - if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) { |
|
362 | - return; |
|
363 | - } |
|
364 | - |
|
365 | - $gateway = wpinv_clean( $_GET['wpi-gateway'] ); |
|
366 | - |
|
367 | - do_action( 'wpinv_verify_payment_ipn', $gateway ); |
|
368 | - do_action( "wpinv_verify_{$gateway}_ipn" ); |
|
369 | - exit; |
|
370 | - |
|
371 | - } |
|
372 | - |
|
373 | - public function enqueue_scripts() { |
|
374 | - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; |
|
375 | - |
|
376 | - $version = filemtime( WPINV_PLUGIN_DIR . 'assets/css/invoice-front.css' ); |
|
377 | - wp_register_style( 'wpinv_front_style', WPINV_PLUGIN_URL . 'assets/css/invoice-front.css', array(), $version ); |
|
378 | - wp_enqueue_style( 'wpinv_front_style' ); |
|
379 | - |
|
380 | - // Register scripts |
|
381 | - wp_register_script( 'jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array( 'jquery' ), '2.70', true ); |
|
382 | - wp_register_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/invoice-front.js', array( 'jquery' ), filemtime( WPINV_PLUGIN_DIR . 'assets/js/invoice-front.js' ) ); |
|
383 | - |
|
384 | - $localize = array(); |
|
385 | - $localize['ajax_url'] = admin_url( 'admin-ajax.php' ); |
|
386 | - $localize['nonce'] = wp_create_nonce( 'wpinv-nonce' ); |
|
387 | - $localize['currency_symbol'] = wpinv_currency_symbol(); |
|
388 | - $localize['currency_pos'] = wpinv_currency_position(); |
|
389 | - $localize['thousand_sep'] = wpinv_thousands_separator(); |
|
390 | - $localize['decimal_sep'] = wpinv_decimal_separator(); |
|
391 | - $localize['decimals'] = wpinv_decimals(); |
|
392 | - $localize['txtComplete'] = __( 'Continue', 'invoicing' ); |
|
393 | - $localize['UseTaxes'] = wpinv_use_taxes(); |
|
394 | - $localize['checkoutNonce'] = wp_create_nonce( 'wpinv_checkout_nonce' ); |
|
395 | - $localize['formNonce'] = wp_create_nonce( 'getpaid_form_nonce' ); |
|
396 | - $localize['connectionError'] = __( 'Could not establish a connection to the server.', 'invoicing' ); |
|
397 | - |
|
398 | - $localize = apply_filters( 'wpinv_front_js_localize', $localize ); |
|
399 | - |
|
400 | - wp_enqueue_script( 'jquery-blockui' ); |
|
401 | - $autofill_api = wpinv_get_option('address_autofill_api'); |
|
402 | - $autofill_active = wpinv_get_option('address_autofill_active'); |
|
403 | - if ( isset( $autofill_active ) && 1 == $autofill_active && !empty( $autofill_api ) && wpinv_is_checkout() ) { |
|
404 | - if ( wp_script_is( 'google-maps-api', 'enqueued' ) ) { |
|
405 | - wp_dequeue_script( 'google-maps-api' ); |
|
406 | - } |
|
407 | - wp_enqueue_script( 'google-maps-api', 'https://maps.googleapis.com/maps/api/js?key=' . $autofill_api . '&libraries=places', array( 'jquery' ), '', false ); |
|
408 | - wp_enqueue_script( 'google-maps-init', WPINV_PLUGIN_URL . 'assets/js/gaaf.js', array( 'jquery', 'google-maps-api' ), '', true ); |
|
409 | - } |
|
410 | - |
|
411 | - wp_enqueue_style( "select2", WPINV_PLUGIN_URL . 'assets/css/select2/select2.css', array(), WPINV_VERSION, 'all' ); |
|
412 | - wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full' . $suffix . '.js', array( 'jquery' ), WPINV_VERSION ); |
|
413 | - |
|
414 | - wp_enqueue_script( 'wpinv-front-script' ); |
|
415 | - wp_localize_script( 'wpinv-front-script', 'WPInv', $localize ); |
|
416 | - |
|
417 | - $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js' ); |
|
418 | - wp_enqueue_script( 'wpinv-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array( 'wpinv-front-script', 'wp-hooks' ), $version, true ); |
|
419 | - } |
|
420 | - |
|
421 | - public function wpinv_actions() { |
|
422 | - if ( isset( $_REQUEST['wpi_action'] ) ) { |
|
423 | - do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST ); |
|
424 | - } |
|
425 | - } |
|
426 | - |
|
427 | - /** |
|
17 | + /** |
|
18 | + * GetPaid version. |
|
19 | + * |
|
20 | + * @var string |
|
21 | + */ |
|
22 | + public $version; |
|
23 | + |
|
24 | + /** |
|
25 | + * Data container. |
|
26 | + * |
|
27 | + * @var array |
|
28 | + */ |
|
29 | + protected $data = array(); |
|
30 | + |
|
31 | + /** |
|
32 | + * Form elements instance. |
|
33 | + * |
|
34 | + * @var WPInv_Payment_Form_Elements |
|
35 | + */ |
|
36 | + public $form_elements; |
|
37 | + |
|
38 | + /** |
|
39 | + * Tax instance. |
|
40 | + * |
|
41 | + * @var WPInv_EUVat |
|
42 | + */ |
|
43 | + public $tax; |
|
44 | + |
|
45 | + /** |
|
46 | + * @param array An array of payment gateways. |
|
47 | + */ |
|
48 | + public $gateways; |
|
49 | + |
|
50 | + /** |
|
51 | + * Class constructor. |
|
52 | + */ |
|
53 | + public function __construct() { |
|
54 | + $this->define_constants(); |
|
55 | + $this->includes(); |
|
56 | + $this->init_hooks(); |
|
57 | + $this->set_properties(); |
|
58 | + } |
|
59 | + |
|
60 | + /** |
|
61 | + * Sets a custom data property. |
|
62 | + * |
|
63 | + * @param string $prop The prop to set. |
|
64 | + * @param mixed $value The value to retrieve. |
|
65 | + */ |
|
66 | + public function set( $prop, $value ) { |
|
67 | + $this->data[ $prop ] = $value; |
|
68 | + } |
|
69 | + |
|
70 | + /** |
|
71 | + * Gets a custom data property. |
|
72 | + * |
|
73 | + * @param string $prop The prop to set. |
|
74 | + * @return mixed The value. |
|
75 | + */ |
|
76 | + public function get( $prop ) { |
|
77 | + |
|
78 | + if ( isset( $this->data[ $prop ] ) ) { |
|
79 | + return $this->data[ $prop ]; |
|
80 | + } |
|
81 | + |
|
82 | + return null; |
|
83 | + } |
|
84 | + |
|
85 | + /** |
|
86 | + * Define class properties. |
|
87 | + */ |
|
88 | + public function set_properties() { |
|
89 | + |
|
90 | + // Sessions. |
|
91 | + $this->set( 'session', new WPInv_Session_Handler() ); |
|
92 | + $GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility. |
|
93 | + $this->form_elements = new WPInv_Payment_Form_Elements(); |
|
94 | + $this->tax = new WPInv_EUVat(); |
|
95 | + $this->tax->init(); |
|
96 | + $GLOBALS['wpinv_euvat'] = $this->tax; // Backwards compatibility. |
|
97 | + |
|
98 | + // Init other objects. |
|
99 | + $this->set( 'reports', new WPInv_Reports() ); // TODO: Refactor. |
|
100 | + $this->set( 'session', new WPInv_Session_Handler() ); |
|
101 | + $this->set( 'notes', new WPInv_Notes() ); |
|
102 | + $this->set( 'api', new WPInv_API() ); |
|
103 | + $this->set( 'post_types', new GetPaid_Post_Types() ); |
|
104 | + $this->set( 'template', new GetPaid_Template() ); |
|
105 | + $this->set( 'admin', new GetPaid_Admin() ); |
|
106 | + $this->set( 'subscriptions', new WPInv_Subscriptions() ); |
|
107 | + $this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() ); |
|
108 | + $this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() ); |
|
109 | + $this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() ); |
|
110 | + $this->set( 'payment_forms', new GetPaid_Payment_Forms() ); |
|
111 | + |
|
112 | + } |
|
113 | + |
|
114 | + /** |
|
115 | + * Define plugin constants. |
|
116 | + */ |
|
117 | + public function define_constants() { |
|
118 | + define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) ); |
|
119 | + define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) ); |
|
120 | + $this->version = WPINV_VERSION; |
|
121 | + } |
|
122 | + |
|
123 | + /** |
|
124 | + * Hook into actions and filters. |
|
125 | + * |
|
126 | + * @since 1.0.19 |
|
127 | + */ |
|
128 | + protected function init_hooks() { |
|
129 | + /* Internationalize the text strings used. */ |
|
130 | + add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) ); |
|
131 | + |
|
132 | + // Init the plugin after WordPress inits. |
|
133 | + add_action( 'init', array( $this, 'init' ), 1 ); |
|
134 | + add_action( 'getpaid_init', array( $this, 'maybe_process_ipn' ), 5 ); |
|
135 | + add_action( 'init', array( &$this, 'wpinv_actions' ) ); |
|
136 | + add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 ); |
|
137 | + |
|
138 | + if ( class_exists( 'BuddyPress' ) ) { |
|
139 | + add_action( 'bp_include', array( &$this, 'bp_invoicing_init' ) ); |
|
140 | + } |
|
141 | + |
|
142 | + add_action( 'wp_enqueue_scripts', array( &$this, 'enqueue_scripts' ) ); |
|
143 | + add_action( 'wp_footer', array( &$this, 'wp_footer' ) ); |
|
144 | + add_action( 'widgets_init', array( &$this, 'register_widgets' ) ); |
|
145 | + add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) ); |
|
146 | + add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) ); |
|
147 | + |
|
148 | + // Fires after registering actions. |
|
149 | + do_action( 'wpinv_actions', $this ); |
|
150 | + do_action( 'getpaid_actions', $this ); |
|
151 | + |
|
152 | + } |
|
153 | + |
|
154 | + public function plugins_loaded() { |
|
155 | + /* Internationalize the text strings used. */ |
|
156 | + $this->load_textdomain(); |
|
157 | + |
|
158 | + do_action( 'wpinv_loaded' ); |
|
159 | + |
|
160 | + // Fix oxygen page builder conflict |
|
161 | + if ( function_exists( 'ct_css_output' ) ) { |
|
162 | + wpinv_oxygen_fix_conflict(); |
|
163 | + } |
|
164 | + } |
|
165 | + |
|
166 | + /** |
|
167 | + * Load the translation of the plugin. |
|
168 | + * |
|
169 | + * @since 1.0 |
|
170 | + */ |
|
171 | + public function load_textdomain( $locale = NULL ) { |
|
172 | + if ( empty( $locale ) ) { |
|
173 | + $locale = is_admin() && function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale(); |
|
174 | + } |
|
175 | + |
|
176 | + $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' ); |
|
177 | + |
|
178 | + unload_textdomain( 'invoicing' ); |
|
179 | + load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' ); |
|
180 | + load_plugin_textdomain( 'invoicing', false, WPINV_PLUGIN_DIR . 'languages' ); |
|
181 | + |
|
182 | + /** |
|
183 | + * Define language constants. |
|
184 | + */ |
|
185 | + require_once( WPINV_PLUGIN_DIR . 'language.php' ); |
|
186 | + } |
|
187 | + |
|
188 | + /** |
|
189 | + * Include required core files used in admin and on the frontend. |
|
190 | + */ |
|
191 | + public function includes() { |
|
192 | + |
|
193 | + // Start with the settings. |
|
194 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php' ); |
|
195 | + |
|
196 | + // Packages/libraries. |
|
197 | + require_once( WPINV_PLUGIN_DIR . 'vendor/autoload.php' ); |
|
198 | + require_once( WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php' ); |
|
199 | + |
|
200 | + // Load functions. |
|
201 | + require_once( WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php' ); |
|
202 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php' ); |
|
203 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php' ); |
|
204 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php' ); |
|
205 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php' ); |
|
206 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php' ); |
|
207 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php' ); |
|
208 | + require_once( WPINV_PLUGIN_DIR . 'includes/invoice-functions.php' ); |
|
209 | + require_once( WPINV_PLUGIN_DIR . 'includes/subscription-functions.php' ); |
|
210 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php' ); |
|
211 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php' ); |
|
212 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php' ); |
|
213 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php' ); |
|
214 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-user-functions.php' ); |
|
215 | + require_once( WPINV_PLUGIN_DIR . 'includes/error-functions.php' ); |
|
216 | + |
|
217 | + // Register autoloader. |
|
218 | + try { |
|
219 | + spl_autoload_register( array( $this, 'autoload' ), true ); |
|
220 | + } catch ( Exception $e ) { |
|
221 | + wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true ); |
|
222 | + } |
|
223 | + |
|
224 | + require_once( WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php' ); |
|
225 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php' ); |
|
226 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php' ); |
|
227 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php' ); |
|
228 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-reports.php' ); |
|
229 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php' ); |
|
230 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php' ); |
|
231 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php' ); |
|
232 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php' ); |
|
233 | + require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php' ); |
|
234 | + require_once( WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php' ); |
|
235 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php' ); |
|
236 | + require_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php' ); |
|
237 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php' ); |
|
238 | + require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' ); |
|
239 | + require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' ); |
|
240 | + require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' ); |
|
241 | + require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' ); |
|
242 | + require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' ); |
|
243 | + require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' ); |
|
244 | + require_once( WPINV_PLUGIN_DIR . 'widgets/getpaid.php' ); |
|
245 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-payment-form-elements.php' ); |
|
246 | + |
|
247 | + /** |
|
248 | + * Load the tax class. |
|
249 | + */ |
|
250 | + if ( ! class_exists( 'WPInv_EUVat' ) ) { |
|
251 | + require_once( WPINV_PLUGIN_DIR . 'includes/libraries/wpinv-euvat/class-wpinv-euvat.php' ); |
|
252 | + } |
|
253 | + |
|
254 | + if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { |
|
255 | + GetPaid_Post_Types_Admin::init(); |
|
256 | + |
|
257 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-upgrade-functions.php' ); |
|
258 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php' ); |
|
259 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php' ); |
|
260 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php' ); |
|
261 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php' ); |
|
262 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php' ); |
|
263 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php' ); |
|
264 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php' ); |
|
265 | + // load the user class only on the users.php page |
|
266 | + global $pagenow; |
|
267 | + if($pagenow=='users.php'){ |
|
268 | + new WPInv_Admin_Users(); |
|
269 | + } |
|
270 | + } |
|
271 | + |
|
272 | + // Register cli commands |
|
273 | + if ( defined( 'WP_CLI' ) && WP_CLI ) { |
|
274 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php' ); |
|
275 | + WP_CLI::add_command( 'invoicing', 'WPInv_CLI' ); |
|
276 | + } |
|
277 | + |
|
278 | + require_once( WPINV_PLUGIN_DIR . 'includes/admin/install.php' ); |
|
279 | + } |
|
280 | + |
|
281 | + /** |
|
282 | + * Class autoloader |
|
283 | + * |
|
284 | + * @param string $class_name The name of the class to load. |
|
285 | + * @access public |
|
286 | + * @since 1.0.19 |
|
287 | + * @return void |
|
288 | + */ |
|
289 | + public function autoload( $class_name ) { |
|
290 | + |
|
291 | + // Normalize the class name... |
|
292 | + $class_name = strtolower( $class_name ); |
|
293 | + |
|
294 | + // ... and make sure it is our class. |
|
295 | + if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) { |
|
296 | + return; |
|
297 | + } |
|
298 | + |
|
299 | + // Next, prepare the file name from the class. |
|
300 | + $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php'; |
|
301 | + |
|
302 | + // Base path of the classes. |
|
303 | + $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR ); |
|
304 | + |
|
305 | + // And an array of possible locations in order of importance. |
|
306 | + $locations = array( |
|
307 | + "$plugin_path/includes", |
|
308 | + "$plugin_path/includes/data-stores", |
|
309 | + "$plugin_path/includes/gateways", |
|
310 | + "$plugin_path/includes/api", |
|
311 | + "$plugin_path/includes/admin", |
|
312 | + "$plugin_path/includes/admin/meta-boxes", |
|
313 | + ); |
|
314 | + |
|
315 | + foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) { |
|
316 | + |
|
317 | + if ( file_exists( trailingslashit( $location ) . $file_name ) ) { |
|
318 | + include trailingslashit( $location ) . $file_name; |
|
319 | + break; |
|
320 | + } |
|
321 | + |
|
322 | + } |
|
323 | + |
|
324 | + } |
|
325 | + |
|
326 | + /** |
|
327 | + * Inits hooks etc. |
|
328 | + */ |
|
329 | + public function init() { |
|
330 | + |
|
331 | + // Fires before getpaid inits. |
|
332 | + do_action( 'before_getpaid_init', $this ); |
|
333 | + |
|
334 | + // Load default gateways. |
|
335 | + $gateways = apply_filters( |
|
336 | + 'getpaid_default_gateways', |
|
337 | + array( |
|
338 | + 'manual' => 'GetPaid_Manual_Gateway', |
|
339 | + 'paypal' => 'GetPaid_Paypal_Gateway', |
|
340 | + 'worldpay' => 'GetPaid_Worldpay_Gateway', |
|
341 | + 'bank_transfer' => 'GetPaid_Bank_Transfer_Gateway', |
|
342 | + 'authorizenet' => 'GetPaid_Authorize_Net_Gateway', |
|
343 | + ) |
|
344 | + ); |
|
345 | + |
|
346 | + foreach ( $gateways as $id => $class ) { |
|
347 | + $this->gateways[ $id ] = new $class(); |
|
348 | + } |
|
349 | + |
|
350 | + // Fires after getpaid inits. |
|
351 | + do_action( 'getpaid_init', $this ); |
|
352 | + |
|
353 | + } |
|
354 | + |
|
355 | + /** |
|
356 | + * Checks if this is an IPN request and processes it. |
|
357 | + */ |
|
358 | + public function maybe_process_ipn() { |
|
359 | + |
|
360 | + // Ensure that this is an IPN request. |
|
361 | + if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) { |
|
362 | + return; |
|
363 | + } |
|
364 | + |
|
365 | + $gateway = wpinv_clean( $_GET['wpi-gateway'] ); |
|
366 | + |
|
367 | + do_action( 'wpinv_verify_payment_ipn', $gateway ); |
|
368 | + do_action( "wpinv_verify_{$gateway}_ipn" ); |
|
369 | + exit; |
|
370 | + |
|
371 | + } |
|
372 | + |
|
373 | + public function enqueue_scripts() { |
|
374 | + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; |
|
375 | + |
|
376 | + $version = filemtime( WPINV_PLUGIN_DIR . 'assets/css/invoice-front.css' ); |
|
377 | + wp_register_style( 'wpinv_front_style', WPINV_PLUGIN_URL . 'assets/css/invoice-front.css', array(), $version ); |
|
378 | + wp_enqueue_style( 'wpinv_front_style' ); |
|
379 | + |
|
380 | + // Register scripts |
|
381 | + wp_register_script( 'jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array( 'jquery' ), '2.70', true ); |
|
382 | + wp_register_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/invoice-front.js', array( 'jquery' ), filemtime( WPINV_PLUGIN_DIR . 'assets/js/invoice-front.js' ) ); |
|
383 | + |
|
384 | + $localize = array(); |
|
385 | + $localize['ajax_url'] = admin_url( 'admin-ajax.php' ); |
|
386 | + $localize['nonce'] = wp_create_nonce( 'wpinv-nonce' ); |
|
387 | + $localize['currency_symbol'] = wpinv_currency_symbol(); |
|
388 | + $localize['currency_pos'] = wpinv_currency_position(); |
|
389 | + $localize['thousand_sep'] = wpinv_thousands_separator(); |
|
390 | + $localize['decimal_sep'] = wpinv_decimal_separator(); |
|
391 | + $localize['decimals'] = wpinv_decimals(); |
|
392 | + $localize['txtComplete'] = __( 'Continue', 'invoicing' ); |
|
393 | + $localize['UseTaxes'] = wpinv_use_taxes(); |
|
394 | + $localize['checkoutNonce'] = wp_create_nonce( 'wpinv_checkout_nonce' ); |
|
395 | + $localize['formNonce'] = wp_create_nonce( 'getpaid_form_nonce' ); |
|
396 | + $localize['connectionError'] = __( 'Could not establish a connection to the server.', 'invoicing' ); |
|
397 | + |
|
398 | + $localize = apply_filters( 'wpinv_front_js_localize', $localize ); |
|
399 | + |
|
400 | + wp_enqueue_script( 'jquery-blockui' ); |
|
401 | + $autofill_api = wpinv_get_option('address_autofill_api'); |
|
402 | + $autofill_active = wpinv_get_option('address_autofill_active'); |
|
403 | + if ( isset( $autofill_active ) && 1 == $autofill_active && !empty( $autofill_api ) && wpinv_is_checkout() ) { |
|
404 | + if ( wp_script_is( 'google-maps-api', 'enqueued' ) ) { |
|
405 | + wp_dequeue_script( 'google-maps-api' ); |
|
406 | + } |
|
407 | + wp_enqueue_script( 'google-maps-api', 'https://maps.googleapis.com/maps/api/js?key=' . $autofill_api . '&libraries=places', array( 'jquery' ), '', false ); |
|
408 | + wp_enqueue_script( 'google-maps-init', WPINV_PLUGIN_URL . 'assets/js/gaaf.js', array( 'jquery', 'google-maps-api' ), '', true ); |
|
409 | + } |
|
410 | + |
|
411 | + wp_enqueue_style( "select2", WPINV_PLUGIN_URL . 'assets/css/select2/select2.css', array(), WPINV_VERSION, 'all' ); |
|
412 | + wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full' . $suffix . '.js', array( 'jquery' ), WPINV_VERSION ); |
|
413 | + |
|
414 | + wp_enqueue_script( 'wpinv-front-script' ); |
|
415 | + wp_localize_script( 'wpinv-front-script', 'WPInv', $localize ); |
|
416 | + |
|
417 | + $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js' ); |
|
418 | + wp_enqueue_script( 'wpinv-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array( 'wpinv-front-script', 'wp-hooks' ), $version, true ); |
|
419 | + } |
|
420 | + |
|
421 | + public function wpinv_actions() { |
|
422 | + if ( isset( $_REQUEST['wpi_action'] ) ) { |
|
423 | + do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST ); |
|
424 | + } |
|
425 | + } |
|
426 | + |
|
427 | + /** |
|
428 | 428 | * Fires an action after verifying that a user can fire them. |
429 | - * |
|
430 | - * Note: If the action is on an invoice, subscription etc, esure that the |
|
431 | - * current user owns the invoice/subscription. |
|
429 | + * |
|
430 | + * Note: If the action is on an invoice, subscription etc, esure that the |
|
431 | + * current user owns the invoice/subscription. |
|
432 | 432 | */ |
433 | 433 | public function maybe_do_authenticated_action() { |
434 | 434 | |
@@ -439,82 +439,82 @@ discard block |
||
439 | 439 | |
440 | 440 | } |
441 | 441 | |
442 | - public function pre_get_posts( $wp_query ) { |
|
443 | - if ( ! is_admin() && !empty( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] == 'wpi_invoice' && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) { |
|
444 | - $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses() ); |
|
445 | - } |
|
446 | - |
|
447 | - return $wp_query; |
|
448 | - } |
|
449 | - |
|
450 | - public function bp_invoicing_init() { |
|
451 | - require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' ); |
|
452 | - } |
|
453 | - |
|
454 | - /** |
|
455 | - * Register widgets |
|
456 | - * |
|
457 | - */ |
|
458 | - public function register_widgets() { |
|
459 | - $widgets = apply_filters( |
|
460 | - 'getpaid_widget_classes', |
|
461 | - array( |
|
462 | - 'WPInv_Checkout_Widget', |
|
463 | - 'WPInv_History_Widget', |
|
464 | - 'WPInv_Receipt_Widget', |
|
465 | - 'WPInv_Subscriptions_Widget', |
|
466 | - 'WPInv_Buy_Item_Widget', |
|
467 | - 'WPInv_Messages_Widget', |
|
468 | - 'WPInv_GetPaid_Widget' |
|
469 | - ) |
|
470 | - ); |
|
471 | - |
|
472 | - foreach ( $widgets as $widget ) { |
|
473 | - register_widget( $widget ); |
|
474 | - } |
|
442 | + public function pre_get_posts( $wp_query ) { |
|
443 | + if ( ! is_admin() && !empty( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] == 'wpi_invoice' && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) { |
|
444 | + $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses() ); |
|
445 | + } |
|
446 | + |
|
447 | + return $wp_query; |
|
448 | + } |
|
449 | + |
|
450 | + public function bp_invoicing_init() { |
|
451 | + require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' ); |
|
452 | + } |
|
453 | + |
|
454 | + /** |
|
455 | + * Register widgets |
|
456 | + * |
|
457 | + */ |
|
458 | + public function register_widgets() { |
|
459 | + $widgets = apply_filters( |
|
460 | + 'getpaid_widget_classes', |
|
461 | + array( |
|
462 | + 'WPInv_Checkout_Widget', |
|
463 | + 'WPInv_History_Widget', |
|
464 | + 'WPInv_Receipt_Widget', |
|
465 | + 'WPInv_Subscriptions_Widget', |
|
466 | + 'WPInv_Buy_Item_Widget', |
|
467 | + 'WPInv_Messages_Widget', |
|
468 | + 'WPInv_GetPaid_Widget' |
|
469 | + ) |
|
470 | + ); |
|
471 | + |
|
472 | + foreach ( $widgets as $widget ) { |
|
473 | + register_widget( $widget ); |
|
474 | + } |
|
475 | 475 | |
476 | - } |
|
476 | + } |
|
477 | 477 | |
478 | - /** |
|
479 | - * Remove our pages from yoast sitemaps. |
|
480 | - * |
|
481 | - * @since 1.0.19 |
|
482 | - * @param int[] $excluded_posts_ids |
|
483 | - */ |
|
484 | - public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ){ |
|
478 | + /** |
|
479 | + * Remove our pages from yoast sitemaps. |
|
480 | + * |
|
481 | + * @since 1.0.19 |
|
482 | + * @param int[] $excluded_posts_ids |
|
483 | + */ |
|
484 | + public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ){ |
|
485 | 485 | |
486 | - // Ensure that we have an array. |
|
487 | - if ( ! is_array( $excluded_posts_ids ) ) { |
|
488 | - $excluded_posts_ids = array(); |
|
489 | - } |
|
486 | + // Ensure that we have an array. |
|
487 | + if ( ! is_array( $excluded_posts_ids ) ) { |
|
488 | + $excluded_posts_ids = array(); |
|
489 | + } |
|
490 | 490 | |
491 | - // Prepare our pages. |
|
492 | - $our_pages = array(); |
|
491 | + // Prepare our pages. |
|
492 | + $our_pages = array(); |
|
493 | 493 | |
494 | - // Checkout page. |
|
495 | - $our_pages[] = wpinv_get_option( 'checkout_page', false ); |
|
494 | + // Checkout page. |
|
495 | + $our_pages[] = wpinv_get_option( 'checkout_page', false ); |
|
496 | 496 | |
497 | - // Success page. |
|
498 | - $our_pages[] = wpinv_get_option( 'success_page', false ); |
|
497 | + // Success page. |
|
498 | + $our_pages[] = wpinv_get_option( 'success_page', false ); |
|
499 | 499 | |
500 | - // Failure page. |
|
501 | - $our_pages[] = wpinv_get_option( 'failure_page', false ); |
|
500 | + // Failure page. |
|
501 | + $our_pages[] = wpinv_get_option( 'failure_page', false ); |
|
502 | 502 | |
503 | - // History page. |
|
504 | - $our_pages[] = wpinv_get_option( 'invoice_history_page', false ); |
|
503 | + // History page. |
|
504 | + $our_pages[] = wpinv_get_option( 'invoice_history_page', false ); |
|
505 | 505 | |
506 | - // Subscriptions page. |
|
507 | - $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false ); |
|
506 | + // Subscriptions page. |
|
507 | + $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false ); |
|
508 | 508 | |
509 | - $our_pages = array_map( 'intval', array_filter( $our_pages ) ); |
|
509 | + $our_pages = array_map( 'intval', array_filter( $our_pages ) ); |
|
510 | 510 | |
511 | - $excluded_posts_ids = $excluded_posts_ids + $our_pages; |
|
512 | - return array_unique( $excluded_posts_ids ); |
|
511 | + $excluded_posts_ids = $excluded_posts_ids + $our_pages; |
|
512 | + return array_unique( $excluded_posts_ids ); |
|
513 | 513 | |
514 | - } |
|
514 | + } |
|
515 | 515 | |
516 | - public function wp_footer() { |
|
517 | - echo ' |
|
516 | + public function wp_footer() { |
|
517 | + echo ' |
|
518 | 518 | <div class="bsui"> |
519 | 519 | <div id="getpaid-payment-modal" class="modal" tabindex="-1" role="dialog"> |
520 | 520 | <div class="modal-dialog modal-dialog-centered modal-lg" role="checkout" style="max-width: 650px;"> |
@@ -525,6 +525,6 @@ discard block |
||
525 | 525 | </div> |
526 | 526 | </div> |
527 | 527 | '; |
528 | - } |
|
528 | + } |
|
529 | 529 | |
530 | 530 | } |
@@ -110,8 +110,8 @@ discard block |
||
110 | 110 | $css = getpaid_get_email_css(); |
111 | 111 | |
112 | 112 | // include css inliner |
113 | - if ( ! class_exists( 'Emogrifier' ) ) { |
|
114 | - include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' ); |
|
113 | + if ( ! class_exists( 'Emogrifier' ) ) { |
|
114 | + include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' ); |
|
115 | 115 | } |
116 | 116 | |
117 | 117 | // Inline the css. |
@@ -190,7 +190,7 @@ discard block |
||
190 | 190 | $message = wpinv_email_style_body( $message ); |
191 | 191 | $to = array_merge( wpinv_parse_list( $to ), wpinv_parse_list( $cc ) ); |
192 | 192 | |
193 | - return $mailer->send( |
|
193 | + return $mailer->send( |
|
194 | 194 | $to, |
195 | 195 | $subject, |
196 | 196 | $message, |