@@ -358,9 +358,9 @@ |
||
358 | 358 | require_once GIVE_PLUGIN_DIR . 'includes/emails/template.php'; |
359 | 359 | require_once GIVE_PLUGIN_DIR . 'includes/emails/actions.php'; |
360 | 360 | |
361 | - if( defined( 'WP_CLI' ) && WP_CLI ) { |
|
362 | - require_once GIVE_PLUGIN_DIR . 'includes/class-give-cli-commands.php'; |
|
363 | - } |
|
361 | + if( defined( 'WP_CLI' ) && WP_CLI ) { |
|
362 | + require_once GIVE_PLUGIN_DIR . 'includes/class-give-cli-commands.php'; |
|
363 | + } |
|
364 | 364 | |
365 | 365 | if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { |
366 | 366 |
@@ -326,7 +326,7 @@ discard block |
||
326 | 326 | * @subcommand donors |
327 | 327 | */ |
328 | 328 | public function donors( $args, $assoc_args ) { |
329 | - global $wp_query; |
|
329 | + global $wp_query; |
|
330 | 330 | $donor_id = isset( $assoc_args ) && array_key_exists( 'id', $assoc_args ) ? absint( $assoc_args['id'] ) : false; |
331 | 331 | $email = isset( $assoc_args ) && array_key_exists( 'email', $assoc_args ) ? $assoc_args['email'] : false; |
332 | 332 | $name = isset( $assoc_args ) && array_key_exists( 'name', $assoc_args ) ? $assoc_args['name'] : ''; |
@@ -492,7 +492,7 @@ discard block |
||
492 | 492 | * @subcommand donations |
493 | 493 | */ |
494 | 494 | public function donations( $args, $assoc_args ) { |
495 | - global $wp_query; |
|
495 | + global $wp_query; |
|
496 | 496 | $number = isset( $assoc_args ) && array_key_exists( 'number', $assoc_args ) ? $assoc_args['number'] : 10; |
497 | 497 | |
498 | 498 | // Cache previous number query var. |
@@ -716,9 +716,9 @@ discard block |
||
716 | 716 | * @return mixed |
717 | 717 | */ |
718 | 718 | private function color_message( $heading, $message = '', $colon = true, $color = 'g' ) { |
719 | - // Add colon. |
|
720 | - if ( $colon ) { |
|
721 | - $heading = $heading . ': '; |
|
719 | + // Add colon. |
|
720 | + if ( $colon ) { |
|
721 | + $heading = $heading . ': '; |
|
722 | 722 | } |
723 | 723 | return WP_CLI::colorize( "%{$color}" . $heading . '%n' ) . $message; |
724 | 724 | } |
@@ -45,22 +45,22 @@ discard block |
||
45 | 45 | * @param string $default_path Default path. Default is empty. |
46 | 46 | */ |
47 | 47 | function give_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) { |
48 | - if ( ! empty( $args ) && is_array( $args ) ) { |
|
49 | - extract( $args ); |
|
50 | - } |
|
48 | + if ( ! empty( $args ) && is_array( $args ) ) { |
|
49 | + extract( $args ); |
|
50 | + } |
|
51 | 51 | |
52 | - $template_names = array( $template_name . '.php' ); |
|
52 | + $template_names = array( $template_name . '.php' ); |
|
53 | 53 | |
54 | - $located = give_locate_template( $template_names, $template_path, $default_path ); |
|
54 | + $located = give_locate_template( $template_names, $template_path, $default_path ); |
|
55 | 55 | |
56 | - if ( ! file_exists( $located ) ) { |
|
56 | + if ( ! file_exists( $located ) ) { |
|
57 | 57 | /* translators: %s: the template */ |
58 | - give_output_error( sprintf( __( 'The %s template was not found.', 'give' ), $located ), true ); |
|
59 | - return; |
|
60 | - } |
|
58 | + give_output_error( sprintf( __( 'The %s template was not found.', 'give' ), $located ), true ); |
|
59 | + return; |
|
60 | + } |
|
61 | 61 | |
62 | - // Allow 3rd party plugin filter template file from their plugin. |
|
63 | - $located = apply_filters( 'give_get_template', $located, $template_name, $args, $template_path, $default_path ); |
|
62 | + // Allow 3rd party plugin filter template file from their plugin. |
|
63 | + $located = apply_filters( 'give_get_template', $located, $template_name, $args, $template_path, $default_path ); |
|
64 | 64 | |
65 | 65 | /** |
66 | 66 | * Fires in give template, before the file is included. |
@@ -74,9 +74,9 @@ discard block |
||
74 | 74 | * @param string $located Template file filter by 3rd party plugin. |
75 | 75 | * @param array $args Passed arguments. |
76 | 76 | */ |
77 | - do_action( 'give_before_template_part', $template_name, $template_path, $located, $args ); |
|
77 | + do_action( 'give_before_template_part', $template_name, $template_path, $located, $args ); |
|
78 | 78 | |
79 | - include( $located ); |
|
79 | + include( $located ); |
|
80 | 80 | |
81 | 81 | /** |
82 | 82 | * Fires in give template, after the file is included. |
@@ -90,7 +90,7 @@ discard block |
||
90 | 90 | * @param string $located Template file filter by 3rd party plugin. |
91 | 91 | * @param array $args Passed arguments. |
92 | 92 | */ |
93 | - do_action( 'give_after_template_part', $template_name, $template_path, $located, $args ); |
|
93 | + do_action( 'give_after_template_part', $template_name, $template_path, $located, $args ); |
|
94 | 94 | } |
95 | 95 | |
96 | 96 | /** |
@@ -33,20 +33,20 @@ discard block |
||
33 | 33 | $login_redirect = add_query_arg('give-login-success', 'true', give_get_current_page_url()); |
34 | 34 | } |
35 | 35 | |
36 | - if ( empty( $logout_redirect ) ) { |
|
37 | - $logout_redirect = add_query_arg( 'give-logout-success', 'true', give_get_current_page_url() ); |
|
38 | - } |
|
36 | + if ( empty( $logout_redirect ) ) { |
|
37 | + $logout_redirect = add_query_arg( 'give-logout-success', 'true', give_get_current_page_url() ); |
|
38 | + } |
|
39 | 39 | |
40 | 40 | |
41 | - // Add user_logout action to logout url. |
|
42 | - $logout_redirect = add_query_arg( |
|
43 | - array( |
|
44 | - 'give_action' => 'user_logout', |
|
45 | - 'give_logout_nonce' => wp_create_nonce( 'give-logout-nonce' ), |
|
46 | - 'give_logout_redirect' => urlencode( $logout_redirect ) |
|
47 | - ), |
|
48 | - home_url('/') |
|
49 | - ); |
|
41 | + // Add user_logout action to logout url. |
|
42 | + $logout_redirect = add_query_arg( |
|
43 | + array( |
|
44 | + 'give_action' => 'user_logout', |
|
45 | + 'give_logout_nonce' => wp_create_nonce( 'give-logout-nonce' ), |
|
46 | + 'give_logout_redirect' => urlencode( $logout_redirect ) |
|
47 | + ), |
|
48 | + home_url('/') |
|
49 | + ); |
|
50 | 50 | |
51 | 51 | $give_login_redirect = $login_redirect; |
52 | 52 | $give_logout_redirect = $logout_redirect; |
@@ -136,31 +136,31 @@ discard block |
||
136 | 136 | * @return void |
137 | 137 | */ |
138 | 138 | function give_process_user_logout( $data ) { |
139 | - if ( wp_verify_nonce( $data['give_logout_nonce'], 'give-logout-nonce' ) && is_user_logged_in() ) { |
|
139 | + if ( wp_verify_nonce( $data['give_logout_nonce'], 'give-logout-nonce' ) && is_user_logged_in() ) { |
|
140 | 140 | |
141 | - // Prevent occurring of any custom action on wp_logout. |
|
142 | - remove_all_actions( 'wp_logout' ); |
|
141 | + // Prevent occurring of any custom action on wp_logout. |
|
142 | + remove_all_actions( 'wp_logout' ); |
|
143 | 143 | |
144 | 144 | /** |
145 | 145 | * Fires before processing user logout. |
146 | 146 | * |
147 | 147 | * @since 1.0 |
148 | 148 | */ |
149 | - do_action( 'give_before_user_logout' ); |
|
149 | + do_action( 'give_before_user_logout' ); |
|
150 | 150 | |
151 | - // Logout user. |
|
152 | - wp_logout(); |
|
151 | + // Logout user. |
|
152 | + wp_logout(); |
|
153 | 153 | |
154 | 154 | /** |
155 | 155 | * Fires after processing user logout. |
156 | 156 | * |
157 | 157 | * @since 1.0 |
158 | 158 | */ |
159 | - do_action( 'give_after_user_logout' ); |
|
159 | + do_action( 'give_after_user_logout' ); |
|
160 | 160 | |
161 | - wp_redirect( $data['give_logout_redirect'] ); |
|
162 | - give_die(); |
|
163 | - } |
|
161 | + wp_redirect( $data['give_logout_redirect'] ); |
|
162 | + give_die(); |
|
163 | + } |
|
164 | 164 | } |
165 | 165 | |
166 | 166 | add_action( 'give_user_logout', 'give_process_user_logout' ); |
@@ -37,7 +37,7 @@ discard block |
||
37 | 37 | // Retrieve the payment ID |
38 | 38 | $payment_id = absint( $data['give_payment_id'] ); |
39 | 39 | |
40 | - /* @var Give_Payment $payment */ |
|
40 | + /* @var Give_Payment $payment */ |
|
41 | 41 | $payment = new Give_Payment( $payment_id ); |
42 | 42 | |
43 | 43 | // Retrieve existing payment meta |
@@ -160,23 +160,23 @@ discard block |
||
160 | 160 | |
161 | 161 | if ( 'publish' == $status ) { |
162 | 162 | |
163 | - // Reduce previous user donation count and amount. |
|
164 | - $previous_customer->decrease_purchase_count(); |
|
165 | - $previous_customer->decrease_value( $curr_total ); |
|
163 | + // Reduce previous user donation count and amount. |
|
164 | + $previous_customer->decrease_purchase_count(); |
|
165 | + $previous_customer->decrease_value( $curr_total ); |
|
166 | 166 | |
167 | - // If donation was completed adjust stats of new customers. |
|
168 | - $customer->increase_purchase_count(); |
|
167 | + // If donation was completed adjust stats of new customers. |
|
168 | + $customer->increase_purchase_count(); |
|
169 | 169 | $customer->increase_value( $new_total ); |
170 | 170 | } |
171 | 171 | |
172 | 172 | $payment->customer_id = $customer->id; |
173 | 173 | } else{ |
174 | 174 | |
175 | - if( 'publish' === $status ){ |
|
176 | - // Update user donation stat. |
|
177 | - $customer->update_donation_value( $curr_total, $new_total ); |
|
178 | - } |
|
179 | - } |
|
175 | + if( 'publish' === $status ){ |
|
176 | + // Update user donation stat. |
|
177 | + $customer->update_donation_value( $curr_total, $new_total ); |
|
178 | + } |
|
179 | + } |
|
180 | 180 | |
181 | 181 | // Set new meta values |
182 | 182 | $payment->user_id = $customer->user_id; |
@@ -217,76 +217,76 @@ discard block |
||
217 | 217 | |
218 | 218 | $payment->save(); |
219 | 219 | |
220 | - // Get new give form ID. |
|
221 | - $new_form_id = absint( $data['forms'] ); |
|
222 | - $current_form_id = absint( $payment->get_meta( '_give_payment_form_id' ) ); |
|
220 | + // Get new give form ID. |
|
221 | + $new_form_id = absint( $data['forms'] ); |
|
222 | + $current_form_id = absint( $payment->get_meta( '_give_payment_form_id' ) ); |
|
223 | 223 | |
224 | - // We are adding payment transfer code in last to remove any conflict with above functionality. |
|
225 | - // For example: above code will automatically handle form stat (increase/decrease) when payment status changes. |
|
226 | - /* Check if user want to transfer current payment to new give form id. */ |
|
227 | - if( $new_form_id != $current_form_id ) { |
|
224 | + // We are adding payment transfer code in last to remove any conflict with above functionality. |
|
225 | + // For example: above code will automatically handle form stat (increase/decrease) when payment status changes. |
|
226 | + /* Check if user want to transfer current payment to new give form id. */ |
|
227 | + if( $new_form_id != $current_form_id ) { |
|
228 | 228 | |
229 | - // Get new give form title. |
|
230 | - $new_form_title = get_the_title( $new_form_id ); |
|
229 | + // Get new give form title. |
|
230 | + $new_form_title = get_the_title( $new_form_id ); |
|
231 | 231 | |
232 | - // Update new give form data in payment data. |
|
233 | - $payment_meta = $payment->get_meta(); |
|
234 | - $payment_meta['form_title'] = $new_form_title; |
|
235 | - $payment_meta['form_id'] = $new_form_id; |
|
232 | + // Update new give form data in payment data. |
|
233 | + $payment_meta = $payment->get_meta(); |
|
234 | + $payment_meta['form_title'] = $new_form_title; |
|
235 | + $payment_meta['form_id'] = $new_form_id; |
|
236 | 236 | |
237 | - // Update price id post meta data for set donation form. |
|
238 | - if( ! give_has_variable_prices( $new_form_id ) ) { |
|
239 | - $payment_meta['price_id'] = ''; |
|
240 | - } |
|
237 | + // Update price id post meta data for set donation form. |
|
238 | + if( ! give_has_variable_prices( $new_form_id ) ) { |
|
239 | + $payment_meta['price_id'] = ''; |
|
240 | + } |
|
241 | 241 | |
242 | - // Update payment give form meta data. |
|
243 | - $payment->update_meta( '_give_payment_form_id', $new_form_id ); |
|
244 | - $payment->update_meta( '_give_payment_form_title', $new_form_title ); |
|
245 | - $payment->update_meta( '_give_payment_meta', $payment_meta ); |
|
242 | + // Update payment give form meta data. |
|
243 | + $payment->update_meta( '_give_payment_form_id', $new_form_id ); |
|
244 | + $payment->update_meta( '_give_payment_form_title', $new_form_title ); |
|
245 | + $payment->update_meta( '_give_payment_meta', $payment_meta ); |
|
246 | 246 | |
247 | - // Update price id payment metadata. |
|
248 | - if( ! give_has_variable_prices( $new_form_id ) ) { |
|
249 | - $payment->update_meta( '_give_payment_price_id', '' ); |
|
250 | - } |
|
247 | + // Update price id payment metadata. |
|
248 | + if( ! give_has_variable_prices( $new_form_id ) ) { |
|
249 | + $payment->update_meta( '_give_payment_price_id', '' ); |
|
250 | + } |
|
251 | 251 | |
252 | 252 | |
253 | - // If donation was completed, adjust stats of forms |
|
254 | - if ( 'publish' == $status ) { |
|
253 | + // If donation was completed, adjust stats of forms |
|
254 | + if ( 'publish' == $status ) { |
|
255 | 255 | |
256 | - // Decrease sale of old give form. For other payment status |
|
257 | - $current_form = new Give_Donate_Form( $current_form_id ); |
|
258 | - $current_form->decrease_sales(); |
|
259 | - $current_form->decrease_earnings( $curr_total ); |
|
256 | + // Decrease sale of old give form. For other payment status |
|
257 | + $current_form = new Give_Donate_Form( $current_form_id ); |
|
258 | + $current_form->decrease_sales(); |
|
259 | + $current_form->decrease_earnings( $curr_total ); |
|
260 | 260 | |
261 | - // Increase sale of new give form. |
|
262 | - $new_form = new Give_Donate_Form($new_form_id); |
|
263 | - $new_form->increase_sales(); |
|
264 | - $new_form->increase_earnings($new_total); |
|
265 | - } |
|
261 | + // Increase sale of new give form. |
|
262 | + $new_form = new Give_Donate_Form($new_form_id); |
|
263 | + $new_form->increase_sales(); |
|
264 | + $new_form->increase_earnings($new_total); |
|
265 | + } |
|
266 | 266 | |
267 | - // Re setup payment to update new meta value in object. |
|
268 | - $payment->update_payment_setup( $payment->ID ); |
|
269 | - } |
|
267 | + // Re setup payment to update new meta value in object. |
|
268 | + $payment->update_payment_setup( $payment->ID ); |
|
269 | + } |
|
270 | 270 | |
271 | - // Update price id if current form is variable form. |
|
272 | - if( ! empty( $data['give-variable-price'] ) && give_has_variable_prices( $payment->form_id ) ) { |
|
271 | + // Update price id if current form is variable form. |
|
272 | + if( ! empty( $data['give-variable-price'] ) && give_has_variable_prices( $payment->form_id ) ) { |
|
273 | 273 | |
274 | - // Get payment meta data. |
|
275 | - $payment_meta = $payment->get_meta(); |
|
274 | + // Get payment meta data. |
|
275 | + $payment_meta = $payment->get_meta(); |
|
276 | 276 | |
277 | - // Set payment id to empty string if variable price id is negative ( i.e. custom amount feature enabled ). |
|
278 | - $data['give-variable-price'] = ( 'custom' === $data['give-variable-price'] ) ? 'custom' : ( 0 < $data['give-variable-price'] ) ? $data['give-variable-price'] : ''; |
|
277 | + // Set payment id to empty string if variable price id is negative ( i.e. custom amount feature enabled ). |
|
278 | + $data['give-variable-price'] = ( 'custom' === $data['give-variable-price'] ) ? 'custom' : ( 0 < $data['give-variable-price'] ) ? $data['give-variable-price'] : ''; |
|
279 | 279 | |
280 | - // Update payment meta data. |
|
281 | - $payment_meta['price_id'] = $data['give-variable-price']; |
|
280 | + // Update payment meta data. |
|
281 | + $payment_meta['price_id'] = $data['give-variable-price']; |
|
282 | 282 | |
283 | - // Update payment give form meta data. |
|
284 | - $payment->update_meta( '_give_payment_price_id', $data['give-variable-price'] ); |
|
285 | - $payment->update_meta( '_give_payment_meta', $payment_meta ); |
|
283 | + // Update payment give form meta data. |
|
284 | + $payment->update_meta( '_give_payment_price_id', $data['give-variable-price'] ); |
|
285 | + $payment->update_meta( '_give_payment_meta', $payment_meta ); |
|
286 | 286 | |
287 | - // Re setup payment to update new meta value in object. |
|
288 | - $payment->update_payment_setup( $payment->ID ); |
|
289 | - } |
|
287 | + // Re setup payment to update new meta value in object. |
|
288 | + $payment->update_payment_setup( $payment->ID ); |
|
289 | + } |
|
290 | 290 | |
291 | 291 | /** |
292 | 292 | * Fires after updating edited donation. |
@@ -1169,26 +1169,26 @@ discard block |
||
1169 | 1169 | * @return void |
1170 | 1170 | */ |
1171 | 1171 | function give_license_key_callback( $field_object, $escaped_value, $object_id, $object_type, $field_type_object ) { |
1172 | - /* @var CMB2_Types $field_type_object*/ |
|
1172 | + /* @var CMB2_Types $field_type_object*/ |
|
1173 | 1173 | |
1174 | - $id = $field_type_object->field->args['id']; |
|
1174 | + $id = $field_type_object->field->args['id']; |
|
1175 | 1175 | $field_description = $field_type_object->field->args['desc']; |
1176 | 1176 | $license = $field_type_object->field->args['options']['license']; |
1177 | - $license_key = $escaped_value; |
|
1178 | - $is_license_key = apply_filters( 'give_is_license_key', ( is_object( $license ) && ! empty( $license ) ) ); |
|
1179 | - $is_valid_license = apply_filters( 'give_is_valid_license', ( $is_license_key && property_exists( $license, 'license' ) && 'valid' === $license->license ) ); |
|
1180 | - $shortname = $field_type_object->field->args['options']['shortname']; |
|
1177 | + $license_key = $escaped_value; |
|
1178 | + $is_license_key = apply_filters( 'give_is_license_key', ( is_object( $license ) && ! empty( $license ) ) ); |
|
1179 | + $is_valid_license = apply_filters( 'give_is_valid_license', ( $is_license_key && property_exists( $license, 'license' ) && 'valid' === $license->license ) ); |
|
1180 | + $shortname = $field_type_object->field->args['options']['shortname']; |
|
1181 | 1181 | $field_classes = 'regular-text give-license-field'; |
1182 | 1182 | $type = empty( $escaped_value ) || ! $is_valid_license ? 'text' : 'password'; |
1183 | - $custom_html = ''; |
|
1184 | - $value = $escaped_value; |
|
1185 | - $messages = array(); |
|
1186 | - $class = ''; |
|
1187 | - $account_page_link = $field_type_object->field->args['options']['account_url']; |
|
1188 | - $checkout_page_link = $field_type_object->field->args['options']['checkout_url']; |
|
1189 | - $addon_name = $field_type_object->field->args['options']['item_name']; |
|
1190 | - $license_status = null; |
|
1191 | - $is_in_subscription = null; |
|
1183 | + $custom_html = ''; |
|
1184 | + $value = $escaped_value; |
|
1185 | + $messages = array(); |
|
1186 | + $class = ''; |
|
1187 | + $account_page_link = $field_type_object->field->args['options']['account_url']; |
|
1188 | + $checkout_page_link = $field_type_object->field->args['options']['checkout_url']; |
|
1189 | + $addon_name = $field_type_object->field->args['options']['item_name']; |
|
1190 | + $license_status = null; |
|
1191 | + $is_in_subscription = null; |
|
1192 | 1192 | |
1193 | 1193 | // By default query on edd api url will return license object which contain status and message property, this can break below functionality. |
1194 | 1194 | // To combat that check if status is set to error or not, if yes then set $is_license_key to false. |
@@ -1197,142 +1197,142 @@ discard block |
||
1197 | 1197 | } |
1198 | 1198 | |
1199 | 1199 | |
1200 | - // Check if current license is part of subscription or not. |
|
1201 | - $subscriptions = get_option( 'give_subscriptions' ); |
|
1202 | - |
|
1203 | - if( $is_license_key && $subscriptions ) { |
|
1204 | - foreach ( $subscriptions as $subscription ) { |
|
1205 | - if( in_array( $license_key, $subscription['licenses'] ) ) { |
|
1206 | - $is_in_subscription = $subscription['id']; |
|
1207 | - break; |
|
1208 | - } |
|
1209 | - } |
|
1210 | - } |
|
1211 | - |
|
1212 | - |
|
1213 | - if( $is_license_key ) { |
|
1214 | - if( $is_in_subscription ) { |
|
1215 | - $subscription_expires = strtotime( $subscriptions[$is_in_subscription]['expires'] ); |
|
1216 | - $subscription_status = __( 'renew', 'give' ); |
|
1217 | - |
|
1218 | - if( ( 'active' !== $subscriptions[$is_in_subscription]['status'] ) ){ |
|
1219 | - $subscription_status = __( 'expire', 'give' ); |
|
1220 | - } |
|
1221 | - |
|
1222 | - if( $subscription_expires < current_time( 'timestamp', 1 ) ) { |
|
1223 | - $messages[] = sprintf( |
|
1224 | - __( 'Your subscription (<a href="%s" target="_blank">#%d</a>) expired. Please <a href="%s" target="_blank" title="Renew your license key">renew your license key</a>', 'give' ), |
|
1225 | - urldecode( $subscriptions[$is_in_subscription]['invoice_url'] ), |
|
1226 | - $subscriptions[$is_in_subscription]['payment_id'], |
|
1227 | - $checkout_page_link . '?edd_license_key=' . $subscriptions[$is_in_subscription]['license_key'] . '&utm_campaign=admin&utm_source=licenses&utm_medium=expired' |
|
1228 | - ); |
|
1229 | - $license_status = 'license-expired'; |
|
1230 | - } elseif( strtotime( '- 7 days', $subscription_expires ) < current_time( 'timestamp', 1 ) ) { |
|
1231 | - $messages[] = sprintf( |
|
1232 | - __( 'Your subscription (<a href="%s" target="_blank">#%d</a>) will %s in %s.', 'give' ), |
|
1233 | - urldecode( $subscriptions[$is_in_subscription]['invoice_url'] ), |
|
1234 | - $subscriptions[$is_in_subscription]['payment_id'], |
|
1235 | - $subscription_status, |
|
1236 | - human_time_diff( current_time( 'timestamp', 1 ), strtotime( $subscriptions[$is_in_subscription]['expires'] ) ) |
|
1237 | - ); |
|
1238 | - $license_status = 'license-expires-soon'; |
|
1239 | - } else { |
|
1240 | - $messages[] = sprintf( |
|
1241 | - __( 'Your subscription (<a href="%s" target="_blank">#%d</a>) will %s on %s.', 'give' ), |
|
1242 | - urldecode( $subscriptions[$is_in_subscription]['invoice_url'] ), |
|
1243 | - $subscriptions[$is_in_subscription]['payment_id'], |
|
1244 | - $subscription_status, |
|
1245 | - date_i18n( get_option( 'date_format' ), strtotime( $subscriptions[$is_in_subscription]['expires'], current_time( 'timestamp' ) ) ) |
|
1246 | - ); |
|
1247 | - $license_status = 'license-expiration-date'; |
|
1248 | - } |
|
1249 | - |
|
1250 | - |
|
1251 | - } elseif ( empty( $license->success ) && property_exists( $license, 'error' ) ) { |
|
1252 | - |
|
1253 | - // activate_license 'invalid' on anything other than valid, so if there was an error capture it |
|
1254 | - switch( $license->error ) { |
|
1255 | - case 'expired' : |
|
1200 | + // Check if current license is part of subscription or not. |
|
1201 | + $subscriptions = get_option( 'give_subscriptions' ); |
|
1202 | + |
|
1203 | + if( $is_license_key && $subscriptions ) { |
|
1204 | + foreach ( $subscriptions as $subscription ) { |
|
1205 | + if( in_array( $license_key, $subscription['licenses'] ) ) { |
|
1206 | + $is_in_subscription = $subscription['id']; |
|
1207 | + break; |
|
1208 | + } |
|
1209 | + } |
|
1210 | + } |
|
1211 | + |
|
1212 | + |
|
1213 | + if( $is_license_key ) { |
|
1214 | + if( $is_in_subscription ) { |
|
1215 | + $subscription_expires = strtotime( $subscriptions[$is_in_subscription]['expires'] ); |
|
1216 | + $subscription_status = __( 'renew', 'give' ); |
|
1217 | + |
|
1218 | + if( ( 'active' !== $subscriptions[$is_in_subscription]['status'] ) ){ |
|
1219 | + $subscription_status = __( 'expire', 'give' ); |
|
1220 | + } |
|
1221 | + |
|
1222 | + if( $subscription_expires < current_time( 'timestamp', 1 ) ) { |
|
1223 | + $messages[] = sprintf( |
|
1224 | + __( 'Your subscription (<a href="%s" target="_blank">#%d</a>) expired. Please <a href="%s" target="_blank" title="Renew your license key">renew your license key</a>', 'give' ), |
|
1225 | + urldecode( $subscriptions[$is_in_subscription]['invoice_url'] ), |
|
1226 | + $subscriptions[$is_in_subscription]['payment_id'], |
|
1227 | + $checkout_page_link . '?edd_license_key=' . $subscriptions[$is_in_subscription]['license_key'] . '&utm_campaign=admin&utm_source=licenses&utm_medium=expired' |
|
1228 | + ); |
|
1229 | + $license_status = 'license-expired'; |
|
1230 | + } elseif( strtotime( '- 7 days', $subscription_expires ) < current_time( 'timestamp', 1 ) ) { |
|
1231 | + $messages[] = sprintf( |
|
1232 | + __( 'Your subscription (<a href="%s" target="_blank">#%d</a>) will %s in %s.', 'give' ), |
|
1233 | + urldecode( $subscriptions[$is_in_subscription]['invoice_url'] ), |
|
1234 | + $subscriptions[$is_in_subscription]['payment_id'], |
|
1235 | + $subscription_status, |
|
1236 | + human_time_diff( current_time( 'timestamp', 1 ), strtotime( $subscriptions[$is_in_subscription]['expires'] ) ) |
|
1237 | + ); |
|
1238 | + $license_status = 'license-expires-soon'; |
|
1239 | + } else { |
|
1240 | + $messages[] = sprintf( |
|
1241 | + __( 'Your subscription (<a href="%s" target="_blank">#%d</a>) will %s on %s.', 'give' ), |
|
1242 | + urldecode( $subscriptions[$is_in_subscription]['invoice_url'] ), |
|
1243 | + $subscriptions[$is_in_subscription]['payment_id'], |
|
1244 | + $subscription_status, |
|
1245 | + date_i18n( get_option( 'date_format' ), strtotime( $subscriptions[$is_in_subscription]['expires'], current_time( 'timestamp' ) ) ) |
|
1246 | + ); |
|
1247 | + $license_status = 'license-expiration-date'; |
|
1248 | + } |
|
1249 | + |
|
1250 | + |
|
1251 | + } elseif ( empty( $license->success ) && property_exists( $license, 'error' ) ) { |
|
1252 | + |
|
1253 | + // activate_license 'invalid' on anything other than valid, so if there was an error capture it |
|
1254 | + switch( $license->error ) { |
|
1255 | + case 'expired' : |
|
1256 | 1256 | error_log(print_r( $license->error, true) . "\n", 3, WP_CONTENT_DIR . '/debug_new.log'); |
1257 | - $class = $license->error; |
|
1258 | - $messages[] = sprintf( |
|
1259 | - __( 'Your license key expired on %s. Please <a href="%s" target="_blank" title="Renew your license key">renew your license key</a>.', 'give' ), |
|
1260 | - date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ), |
|
1261 | - $checkout_page_link . '?edd_license_key=' . $value . '&utm_campaign=admin&utm_source=licenses&utm_medium=expired' |
|
1262 | - ); |
|
1263 | - $license_status = 'license-' . $class; |
|
1264 | - break; |
|
1265 | - |
|
1266 | - case 'missing' : |
|
1267 | - $class = $license->error; |
|
1268 | - $messages[] = sprintf( |
|
1269 | - __( 'Invalid license. Please <a href="%s" target="_blank" title="Visit account page">visit your account page</a> and verify it.', 'give' ), |
|
1270 | - $account_page_link . '?utm_campaign=admin&utm_source=licenses&utm_medium=missing' |
|
1271 | - ); |
|
1272 | - $license_status = 'license-' . $class; |
|
1273 | - break; |
|
1274 | - |
|
1275 | - case 'invalid' : |
|
1276 | - $class = $license->error; |
|
1277 | - $messages[] = sprintf( |
|
1278 | - __( 'Your %s is not active for this URL. Please <a href="%s" target="_blank" title="Visit account page">visit your account page</a> to manage your license key URLs.', 'give' ), |
|
1279 | - $addon_name, |
|
1280 | - $account_page_link . '?utm_campaign=admin&utm_source=licenses&utm_medium=invalid' |
|
1281 | - ); |
|
1282 | - $license_status = 'license-' . $class; |
|
1283 | - break; |
|
1284 | - |
|
1285 | - case 'site_inactive' : |
|
1286 | - $class = $license->error; |
|
1287 | - $messages[] = sprintf( |
|
1288 | - __( 'Your %s is not active for this URL. Please <a href="%s" target="_blank" title="Visit account page">visit your account page</a> to manage your license key URLs.', 'give' ), |
|
1289 | - $addon_name, |
|
1290 | - $account_page_link . '?utm_campaign=admin&utm_source=licenses&utm_medium=invalid' |
|
1291 | - ); |
|
1292 | - $license_status = 'license-' . $class; |
|
1293 | - break; |
|
1294 | - |
|
1295 | - case 'item_name_mismatch' : |
|
1296 | - $class = $license->error; |
|
1297 | - $messages[] = sprintf( __( 'This license %s does not belong to %s.', 'give' ), $value, $addon_name ); |
|
1298 | - $license_status = 'license-' . $class; |
|
1299 | - break; |
|
1300 | - |
|
1301 | - case 'no_activations_left': |
|
1302 | - $class = $license->error; |
|
1303 | - $messages[] = sprintf( __( 'Your license key has reached it\'s activation limit. <a href="%s">View possible upgrades</a> now.', 'give' ), $account_page_link ); |
|
1304 | - $license_status = 'license-' . $class; |
|
1305 | - break; |
|
1306 | - } |
|
1307 | - } else { |
|
1308 | - switch( $license->license ) { |
|
1309 | - case 'valid' : |
|
1310 | - default: |
|
1311 | - $class = 'valid'; |
|
1312 | - $now = current_time( 'timestamp' ); |
|
1313 | - $expiration = strtotime( $license->expires, current_time( 'timestamp' ) ); |
|
1314 | - |
|
1315 | - if( 'lifetime' === $license->expires ) { |
|
1316 | - $messages[] = __( 'License key never expires.', 'give' ); |
|
1317 | - $license_status = 'license-lifetime-notice'; |
|
1318 | - } elseif( $expiration > $now && $expiration - $now < ( DAY_IN_SECONDS * 30 ) ) { |
|
1319 | - $messages[] = sprintf( |
|
1320 | - __( 'Your license key expires soon! It expires on %s. <a href="%s" target="_blank" title="Renew license">Renew your license key</a>.', 'give' ), |
|
1321 | - date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ), |
|
1322 | - $checkout_page_link . '?edd_license_key=' . $value . '&utm_campaign=admin&utm_source=licenses&utm_medium=renew' |
|
1323 | - ); |
|
1324 | - $license_status = 'license-expires-soon'; |
|
1325 | - } else { |
|
1326 | - $messages[] = sprintf( |
|
1327 | - __( 'Your license key expires on %s.', 'give' ), |
|
1328 | - date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ) |
|
1329 | - ); |
|
1330 | - $license_status = 'license-expiration-date'; |
|
1331 | - } |
|
1332 | - break; |
|
1333 | - } |
|
1334 | - } |
|
1335 | - } else{ |
|
1257 | + $class = $license->error; |
|
1258 | + $messages[] = sprintf( |
|
1259 | + __( 'Your license key expired on %s. Please <a href="%s" target="_blank" title="Renew your license key">renew your license key</a>.', 'give' ), |
|
1260 | + date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ), |
|
1261 | + $checkout_page_link . '?edd_license_key=' . $value . '&utm_campaign=admin&utm_source=licenses&utm_medium=expired' |
|
1262 | + ); |
|
1263 | + $license_status = 'license-' . $class; |
|
1264 | + break; |
|
1265 | + |
|
1266 | + case 'missing' : |
|
1267 | + $class = $license->error; |
|
1268 | + $messages[] = sprintf( |
|
1269 | + __( 'Invalid license. Please <a href="%s" target="_blank" title="Visit account page">visit your account page</a> and verify it.', 'give' ), |
|
1270 | + $account_page_link . '?utm_campaign=admin&utm_source=licenses&utm_medium=missing' |
|
1271 | + ); |
|
1272 | + $license_status = 'license-' . $class; |
|
1273 | + break; |
|
1274 | + |
|
1275 | + case 'invalid' : |
|
1276 | + $class = $license->error; |
|
1277 | + $messages[] = sprintf( |
|
1278 | + __( 'Your %s is not active for this URL. Please <a href="%s" target="_blank" title="Visit account page">visit your account page</a> to manage your license key URLs.', 'give' ), |
|
1279 | + $addon_name, |
|
1280 | + $account_page_link . '?utm_campaign=admin&utm_source=licenses&utm_medium=invalid' |
|
1281 | + ); |
|
1282 | + $license_status = 'license-' . $class; |
|
1283 | + break; |
|
1284 | + |
|
1285 | + case 'site_inactive' : |
|
1286 | + $class = $license->error; |
|
1287 | + $messages[] = sprintf( |
|
1288 | + __( 'Your %s is not active for this URL. Please <a href="%s" target="_blank" title="Visit account page">visit your account page</a> to manage your license key URLs.', 'give' ), |
|
1289 | + $addon_name, |
|
1290 | + $account_page_link . '?utm_campaign=admin&utm_source=licenses&utm_medium=invalid' |
|
1291 | + ); |
|
1292 | + $license_status = 'license-' . $class; |
|
1293 | + break; |
|
1294 | + |
|
1295 | + case 'item_name_mismatch' : |
|
1296 | + $class = $license->error; |
|
1297 | + $messages[] = sprintf( __( 'This license %s does not belong to %s.', 'give' ), $value, $addon_name ); |
|
1298 | + $license_status = 'license-' . $class; |
|
1299 | + break; |
|
1300 | + |
|
1301 | + case 'no_activations_left': |
|
1302 | + $class = $license->error; |
|
1303 | + $messages[] = sprintf( __( 'Your license key has reached it\'s activation limit. <a href="%s">View possible upgrades</a> now.', 'give' ), $account_page_link ); |
|
1304 | + $license_status = 'license-' . $class; |
|
1305 | + break; |
|
1306 | + } |
|
1307 | + } else { |
|
1308 | + switch( $license->license ) { |
|
1309 | + case 'valid' : |
|
1310 | + default: |
|
1311 | + $class = 'valid'; |
|
1312 | + $now = current_time( 'timestamp' ); |
|
1313 | + $expiration = strtotime( $license->expires, current_time( 'timestamp' ) ); |
|
1314 | + |
|
1315 | + if( 'lifetime' === $license->expires ) { |
|
1316 | + $messages[] = __( 'License key never expires.', 'give' ); |
|
1317 | + $license_status = 'license-lifetime-notice'; |
|
1318 | + } elseif( $expiration > $now && $expiration - $now < ( DAY_IN_SECONDS * 30 ) ) { |
|
1319 | + $messages[] = sprintf( |
|
1320 | + __( 'Your license key expires soon! It expires on %s. <a href="%s" target="_blank" title="Renew license">Renew your license key</a>.', 'give' ), |
|
1321 | + date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ), |
|
1322 | + $checkout_page_link . '?edd_license_key=' . $value . '&utm_campaign=admin&utm_source=licenses&utm_medium=renew' |
|
1323 | + ); |
|
1324 | + $license_status = 'license-expires-soon'; |
|
1325 | + } else { |
|
1326 | + $messages[] = sprintf( |
|
1327 | + __( 'Your license key expires on %s.', 'give' ), |
|
1328 | + date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ) |
|
1329 | + ); |
|
1330 | + $license_status = 'license-expiration-date'; |
|
1331 | + } |
|
1332 | + break; |
|
1333 | + } |
|
1334 | + } |
|
1335 | + } else{ |
|
1336 | 1336 | $class = 'empty'; |
1337 | 1337 | $messages[] = sprintf( |
1338 | 1338 | __( 'To receive updates, please enter your valid %s license key.', 'give' ), |
@@ -1342,7 +1342,7 @@ discard block |
||
1342 | 1342 | } |
1343 | 1343 | |
1344 | 1344 | |
1345 | - // Add class for input field if license is active. |
|
1345 | + // Add class for input field if license is active. |
|
1346 | 1346 | if ( $is_valid_license ) { |
1347 | 1347 | $field_classes .= ' give-license-active'; |
1348 | 1348 | } |
@@ -1355,12 +1355,12 @@ discard block |
||
1355 | 1355 | |
1356 | 1356 | // If license is active so show deactivate button |
1357 | 1357 | if ( $is_valid_license ) { |
1358 | - // Get input filed html. |
|
1359 | - $input_field_html = $field_type_object->input( array( |
|
1360 | - 'class' => $field_classes, |
|
1361 | - 'type' => $type, |
|
1362 | - 'readonly' => 'readonly', |
|
1363 | - ) ); |
|
1358 | + // Get input filed html. |
|
1359 | + $input_field_html = $field_type_object->input( array( |
|
1360 | + 'class' => $field_classes, |
|
1361 | + 'type' => $type, |
|
1362 | + 'readonly' => 'readonly', |
|
1363 | + ) ); |
|
1364 | 1364 | |
1365 | 1365 | $custom_html = '<input type="submit" class="button-secondary give-license-deactivate" name="' . $id . '_deactivate" value="' . esc_attr__( 'Deactivate License', 'give' ) . '"/>'; |
1366 | 1366 | } |
@@ -1368,27 +1368,27 @@ discard block |
||
1368 | 1368 | // Field description. |
1369 | 1369 | $custom_html .= '<label for="give_settings[' . $id . ']"> ' . $field_description . '</label>'; |
1370 | 1370 | |
1371 | - // If no messages found then inform user that to get updated in future register yourself. |
|
1372 | - if ( empty( $messages ) ) { |
|
1373 | - $messages[] = apply_filters( "{$shortname}_default_addon_notice", esc_html__( 'To receive updates, please enter your valid Software Licensing license key.', 'give' ) ); |
|
1374 | - } |
|
1371 | + // If no messages found then inform user that to get updated in future register yourself. |
|
1372 | + if ( empty( $messages ) ) { |
|
1373 | + $messages[] = apply_filters( "{$shortname}_default_addon_notice", esc_html__( 'To receive updates, please enter your valid Software Licensing license key.', 'give' ) ); |
|
1374 | + } |
|
1375 | 1375 | |
1376 | - foreach( $messages as $message ) { |
|
1377 | - $custom_html .= '<div class="give-license-notice give-' . $license_status . '">'; |
|
1378 | - $custom_html .= '<p>' . $message . '</p>'; |
|
1379 | - $custom_html .= '</div>'; |
|
1380 | - } |
|
1376 | + foreach( $messages as $message ) { |
|
1377 | + $custom_html .= '<div class="give-license-notice give-' . $license_status . '">'; |
|
1378 | + $custom_html .= '<p>' . $message . '</p>'; |
|
1379 | + $custom_html .= '</div>'; |
|
1380 | + } |
|
1381 | 1381 | |
1382 | 1382 | |
1383 | 1383 | |
1384 | - // Field html. |
|
1385 | - $custom_html = apply_filters('give_license_key_field_html', $input_field_html.$custom_html, $field_type_object ); |
|
1384 | + // Field html. |
|
1385 | + $custom_html = apply_filters('give_license_key_field_html', $input_field_html.$custom_html, $field_type_object ); |
|
1386 | 1386 | |
1387 | - // Nonce. |
|
1387 | + // Nonce. |
|
1388 | 1388 | wp_nonce_field( $id . '-nonce', $id . '-nonce' ); |
1389 | 1389 | |
1390 | - // Print field html. |
|
1391 | - echo '<div>' . $custom_html . '</div>'; |
|
1390 | + // Print field html. |
|
1391 | + echo '<div>' . $custom_html . '</div>'; |
|
1392 | 1392 | } |
1393 | 1393 | |
1394 | 1394 |
@@ -23,52 +23,52 @@ |
||
23 | 23 | */ |
24 | 24 | function give_hide_subscription_notices() { |
25 | 25 | |
26 | - // Hide subscription notices permanently. |
|
27 | - if ( ! empty( $_GET['_give_hide_license_notices_permanently'] ) ) { |
|
28 | - global $current_user; |
|
26 | + // Hide subscription notices permanently. |
|
27 | + if ( ! empty( $_GET['_give_hide_license_notices_permanently'] ) ) { |
|
28 | + global $current_user; |
|
29 | 29 | |
30 | - // check previously disabled notice ids. |
|
31 | - $already_dismiss_notices = ( $already_dismiss_notices = get_user_meta( $current_user->ID, '_give_hide_license_notices_permanently', true ) ) |
|
32 | - ? $already_dismiss_notices |
|
33 | - : array(); |
|
30 | + // check previously disabled notice ids. |
|
31 | + $already_dismiss_notices = ( $already_dismiss_notices = get_user_meta( $current_user->ID, '_give_hide_license_notices_permanently', true ) ) |
|
32 | + ? $already_dismiss_notices |
|
33 | + : array(); |
|
34 | 34 | |
35 | - // Get notice id. |
|
36 | - $notice_id = sanitize_text_field( $_GET['_give_hide_license_notices_permanently'] ); |
|
35 | + // Get notice id. |
|
36 | + $notice_id = sanitize_text_field( $_GET['_give_hide_license_notices_permanently'] ); |
|
37 | 37 | |
38 | - if( ! in_array( $notice_id, $already_dismiss_notices ) ) { |
|
39 | - $already_dismiss_notices[] = $notice_id; |
|
40 | - } |
|
38 | + if( ! in_array( $notice_id, $already_dismiss_notices ) ) { |
|
39 | + $already_dismiss_notices[] = $notice_id; |
|
40 | + } |
|
41 | 41 | |
42 | - // Store subscription ids. |
|
43 | - update_user_meta( $current_user->ID, '_give_hide_license_notices_permanently', $already_dismiss_notices ); |
|
42 | + // Store subscription ids. |
|
43 | + update_user_meta( $current_user->ID, '_give_hide_license_notices_permanently', $already_dismiss_notices ); |
|
44 | 44 | |
45 | - // Redirect user. |
|
46 | - wp_safe_redirect( remove_query_arg( '_give_hide_license_notices_permanently', $_SERVER['REQUEST_URI'] ) ); |
|
47 | - exit(); |
|
48 | - } |
|
45 | + // Redirect user. |
|
46 | + wp_safe_redirect( remove_query_arg( '_give_hide_license_notices_permanently', $_SERVER['REQUEST_URI'] ) ); |
|
47 | + exit(); |
|
48 | + } |
|
49 | 49 | |
50 | - // Hide subscription notices shortly. |
|
51 | - if ( ! empty( $_GET['_give_hide_license_notices_shortly'] ) ) { |
|
52 | - global $current_user; |
|
50 | + // Hide subscription notices shortly. |
|
51 | + if ( ! empty( $_GET['_give_hide_license_notices_shortly'] ) ) { |
|
52 | + global $current_user; |
|
53 | 53 | |
54 | - // Get notice id. |
|
55 | - $notice_id = sanitize_text_field( $_GET['_give_hide_license_notices_shortly'] ); |
|
54 | + // Get notice id. |
|
55 | + $notice_id = sanitize_text_field( $_GET['_give_hide_license_notices_shortly'] ); |
|
56 | 56 | |
57 | - // Transient key name. |
|
58 | - $transient_key = "_give_hide_license_notices_shortly_{$current_user->ID}_{$notice_id}"; |
|
57 | + // Transient key name. |
|
58 | + $transient_key = "_give_hide_license_notices_shortly_{$current_user->ID}_{$notice_id}"; |
|
59 | 59 | |
60 | - if( get_transient( $transient_key ) ) { |
|
61 | - return; |
|
62 | - } |
|
60 | + if( get_transient( $transient_key ) ) { |
|
61 | + return; |
|
62 | + } |
|
63 | 63 | |
64 | 64 | |
65 | - // Hide notice for 24 hours. |
|
66 | - set_transient( $transient_key, true, 24 * HOUR_IN_SECONDS ); |
|
65 | + // Hide notice for 24 hours. |
|
66 | + set_transient( $transient_key, true, 24 * HOUR_IN_SECONDS ); |
|
67 | 67 | |
68 | - // Redirect user. |
|
69 | - wp_safe_redirect( remove_query_arg( '_give_hide_license_notices_shortly', $_SERVER['REQUEST_URI'] ) ); |
|
70 | - exit(); |
|
71 | - } |
|
68 | + // Redirect user. |
|
69 | + wp_safe_redirect( remove_query_arg( '_give_hide_license_notices_shortly', $_SERVER['REQUEST_URI'] ) ); |
|
70 | + exit(); |
|
71 | + } |
|
72 | 72 | } |
73 | 73 | |
74 | 74 | add_action( 'admin_init', 'give_hide_subscription_notices' ); |
75 | 75 | \ No newline at end of file |
@@ -411,83 +411,83 @@ |
||
411 | 411 | * @since 1.7 |
412 | 412 | */ |
413 | 413 | function give_upgrade_addon_license_data(){ |
414 | - global $give_options; |
|
415 | - |
|
416 | - $api_url = 'https://givewp.com/give-sl-api/'; |
|
417 | - |
|
418 | - // Get addons license key. |
|
419 | - $addons = array(); |
|
420 | - foreach ( $give_options as $key => $value ) { |
|
421 | - if( false !== strpos( $key, '_license_key' ) ) { |
|
422 | - $addons[$key] = $value; |
|
423 | - } |
|
424 | - } |
|
425 | - |
|
426 | - // Bailout: We do not have any addon license data to upgrade. |
|
427 | - if( empty( $addons ) ) { |
|
428 | - return false; |
|
429 | - } |
|
414 | + global $give_options; |
|
415 | + |
|
416 | + $api_url = 'https://givewp.com/give-sl-api/'; |
|
417 | + |
|
418 | + // Get addons license key. |
|
419 | + $addons = array(); |
|
420 | + foreach ( $give_options as $key => $value ) { |
|
421 | + if( false !== strpos( $key, '_license_key' ) ) { |
|
422 | + $addons[$key] = $value; |
|
423 | + } |
|
424 | + } |
|
425 | + |
|
426 | + // Bailout: We do not have any addon license data to upgrade. |
|
427 | + if( empty( $addons ) ) { |
|
428 | + return false; |
|
429 | + } |
|
430 | 430 | |
431 | - foreach ( $addons as $key => $addon_license ) { |
|
432 | - |
|
433 | - // Get addon shortname. |
|
434 | - $shortname = str_replace( '_license_key', '', $key ); |
|
435 | - |
|
436 | - // Addon license option name. |
|
437 | - $addon_license_option_name = $shortname . '_license_active'; |
|
438 | - |
|
439 | - // bailout if license is empty. |
|
440 | - if( empty( $addon_license ) ) { |
|
441 | - delete_option( $addon_license_option_name ); |
|
442 | - continue; |
|
443 | - } |
|
444 | - |
|
445 | - // Get addon name. |
|
446 | - $addon_name = array(); |
|
447 | - $addon_name_parts = explode( '_', str_replace( 'give_', '', $shortname ) ); |
|
448 | - foreach ( $addon_name_parts as $name_part ) { |
|
449 | - |
|
450 | - // Fix addon name |
|
451 | - switch ( $name_part ) { |
|
452 | - case 'authorizenet' : |
|
453 | - $name_part = 'authorize.net'; |
|
454 | - break; |
|
455 | - } |
|
456 | - |
|
457 | - $addon_name[] = ucfirst( $name_part ); |
|
458 | - } |
|
459 | - |
|
460 | - $addon_name = implode( ' ', $addon_name ); |
|
461 | - |
|
462 | - // Data to send to the API |
|
463 | - $api_params = array( |
|
464 | - 'edd_action' => 'activate_license', //never change from "edd_" to "give_"! |
|
465 | - 'license' => $addon_license, |
|
466 | - 'item_name' => urlencode( $addon_name ), |
|
467 | - 'url' => home_url() |
|
468 | - ); |
|
469 | - |
|
470 | - // Call the API |
|
471 | - $response = wp_remote_post( |
|
472 | - $api_url, |
|
473 | - array( |
|
474 | - 'timeout' => 15, |
|
475 | - 'sslverify' => false, |
|
476 | - 'body' => $api_params |
|
477 | - ) |
|
478 | - ); |
|
479 | - |
|
480 | - // Make sure there are no errors |
|
481 | - if ( is_wp_error( $response ) ) { |
|
482 | - delete_option( $addon_license_option_name ); |
|
483 | - continue; |
|
484 | - } |
|
485 | - |
|
486 | - // Tell WordPress to look for updates |
|
487 | - set_site_transient( 'update_plugins', null ); |
|
488 | - |
|
489 | - // Decode license data |
|
490 | - $license_data = json_decode( wp_remote_retrieve_body( $response ) ); |
|
491 | - update_option( $addon_license_option_name, $license_data ); |
|
492 | - } |
|
431 | + foreach ( $addons as $key => $addon_license ) { |
|
432 | + |
|
433 | + // Get addon shortname. |
|
434 | + $shortname = str_replace( '_license_key', '', $key ); |
|
435 | + |
|
436 | + // Addon license option name. |
|
437 | + $addon_license_option_name = $shortname . '_license_active'; |
|
438 | + |
|
439 | + // bailout if license is empty. |
|
440 | + if( empty( $addon_license ) ) { |
|
441 | + delete_option( $addon_license_option_name ); |
|
442 | + continue; |
|
443 | + } |
|
444 | + |
|
445 | + // Get addon name. |
|
446 | + $addon_name = array(); |
|
447 | + $addon_name_parts = explode( '_', str_replace( 'give_', '', $shortname ) ); |
|
448 | + foreach ( $addon_name_parts as $name_part ) { |
|
449 | + |
|
450 | + // Fix addon name |
|
451 | + switch ( $name_part ) { |
|
452 | + case 'authorizenet' : |
|
453 | + $name_part = 'authorize.net'; |
|
454 | + break; |
|
455 | + } |
|
456 | + |
|
457 | + $addon_name[] = ucfirst( $name_part ); |
|
458 | + } |
|
459 | + |
|
460 | + $addon_name = implode( ' ', $addon_name ); |
|
461 | + |
|
462 | + // Data to send to the API |
|
463 | + $api_params = array( |
|
464 | + 'edd_action' => 'activate_license', //never change from "edd_" to "give_"! |
|
465 | + 'license' => $addon_license, |
|
466 | + 'item_name' => urlencode( $addon_name ), |
|
467 | + 'url' => home_url() |
|
468 | + ); |
|
469 | + |
|
470 | + // Call the API |
|
471 | + $response = wp_remote_post( |
|
472 | + $api_url, |
|
473 | + array( |
|
474 | + 'timeout' => 15, |
|
475 | + 'sslverify' => false, |
|
476 | + 'body' => $api_params |
|
477 | + ) |
|
478 | + ); |
|
479 | + |
|
480 | + // Make sure there are no errors |
|
481 | + if ( is_wp_error( $response ) ) { |
|
482 | + delete_option( $addon_license_option_name ); |
|
483 | + continue; |
|
484 | + } |
|
485 | + |
|
486 | + // Tell WordPress to look for updates |
|
487 | + set_site_transient( 'update_plugins', null ); |
|
488 | + |
|
489 | + // Decode license data |
|
490 | + $license_data = json_decode( wp_remote_retrieve_body( $response ) ); |
|
491 | + update_option( $addon_license_option_name, $license_data ); |
|
492 | + } |
|
493 | 493 | } |
494 | 494 | \ No newline at end of file |
@@ -13,330 +13,330 @@ |
||
13 | 13 | * @version 1.6 |
14 | 14 | */ |
15 | 15 | class EDD_SL_Plugin_Updater { |
16 | - private $api_url = ''; |
|
17 | - private $api_data = array(); |
|
18 | - private $name = ''; |
|
19 | - private $slug = ''; |
|
20 | - |
|
21 | - /** |
|
22 | - * Class constructor. |
|
23 | - * |
|
24 | - * @uses plugin_basename() |
|
25 | - * @uses hook() |
|
26 | - * |
|
27 | - * @param string $_api_url The URL pointing to the custom API endpoint. |
|
28 | - * @param string $_plugin_file Path to the plugin file. |
|
29 | - * @param array $_api_data Optional data to send with API calls. |
|
30 | - * @return void |
|
31 | - */ |
|
32 | - function __construct( $_api_url, $_plugin_file, $_api_data = null ) { |
|
33 | - $this->api_url = trailingslashit( $_api_url ); |
|
34 | - $this->api_data = $_api_data; |
|
35 | - $this->name = plugin_basename( $_plugin_file ); |
|
36 | - $this->slug = basename( $_plugin_file, '.php' ); |
|
37 | - $this->version = $_api_data['version']; |
|
38 | - |
|
39 | - // Set up hooks. |
|
40 | - $this->init(); |
|
41 | - add_action( 'admin_init', array( $this, 'show_changelog' ) ); |
|
42 | - } |
|
43 | - |
|
44 | - /** |
|
45 | - * Set up WordPress filters to hook into WP's update process. |
|
46 | - * |
|
47 | - * @uses add_filter() |
|
48 | - * |
|
49 | - * @return void |
|
50 | - */ |
|
51 | - public function init() { |
|
16 | + private $api_url = ''; |
|
17 | + private $api_data = array(); |
|
18 | + private $name = ''; |
|
19 | + private $slug = ''; |
|
20 | + |
|
21 | + /** |
|
22 | + * Class constructor. |
|
23 | + * |
|
24 | + * @uses plugin_basename() |
|
25 | + * @uses hook() |
|
26 | + * |
|
27 | + * @param string $_api_url The URL pointing to the custom API endpoint. |
|
28 | + * @param string $_plugin_file Path to the plugin file. |
|
29 | + * @param array $_api_data Optional data to send with API calls. |
|
30 | + * @return void |
|
31 | + */ |
|
32 | + function __construct( $_api_url, $_plugin_file, $_api_data = null ) { |
|
33 | + $this->api_url = trailingslashit( $_api_url ); |
|
34 | + $this->api_data = $_api_data; |
|
35 | + $this->name = plugin_basename( $_plugin_file ); |
|
36 | + $this->slug = basename( $_plugin_file, '.php' ); |
|
37 | + $this->version = $_api_data['version']; |
|
38 | + |
|
39 | + // Set up hooks. |
|
40 | + $this->init(); |
|
41 | + add_action( 'admin_init', array( $this, 'show_changelog' ) ); |
|
42 | + } |
|
43 | + |
|
44 | + /** |
|
45 | + * Set up WordPress filters to hook into WP's update process. |
|
46 | + * |
|
47 | + * @uses add_filter() |
|
48 | + * |
|
49 | + * @return void |
|
50 | + */ |
|
51 | + public function init() { |
|
52 | 52 | |
53 | - add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); |
|
54 | - add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 ); |
|
53 | + add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); |
|
54 | + add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 ); |
|
55 | 55 | |
56 | - add_action( 'after_plugin_row_' . $this->name, array( $this, 'show_update_notification' ), 10, 2 ); |
|
57 | - } |
|
56 | + add_action( 'after_plugin_row_' . $this->name, array( $this, 'show_update_notification' ), 10, 2 ); |
|
57 | + } |
|
58 | 58 | |
59 | - /** |
|
60 | - * Check for Updates at the defined API endpoint and modify the update array. |
|
61 | - * |
|
62 | - * This function dives into the update API just when WordPress creates its update array, |
|
63 | - * then adds a custom API call and injects the custom plugin data retrieved from the API. |
|
64 | - * It is reassembled from parts of the native WordPress plugin update code. |
|
65 | - * See wp-includes/update.php line 121 for the original wp_update_plugins() function. |
|
66 | - * |
|
67 | - * @uses api_request() |
|
68 | - * |
|
69 | - * @param array $_transient_data Update array build by WordPress. |
|
70 | - * @return array Modified update array with custom plugin data. |
|
71 | - */ |
|
72 | - function check_update( $_transient_data ) { |
|
59 | + /** |
|
60 | + * Check for Updates at the defined API endpoint and modify the update array. |
|
61 | + * |
|
62 | + * This function dives into the update API just when WordPress creates its update array, |
|
63 | + * then adds a custom API call and injects the custom plugin data retrieved from the API. |
|
64 | + * It is reassembled from parts of the native WordPress plugin update code. |
|
65 | + * See wp-includes/update.php line 121 for the original wp_update_plugins() function. |
|
66 | + * |
|
67 | + * @uses api_request() |
|
68 | + * |
|
69 | + * @param array $_transient_data Update array build by WordPress. |
|
70 | + * @return array Modified update array with custom plugin data. |
|
71 | + */ |
|
72 | + function check_update( $_transient_data ) { |
|
73 | 73 | |
74 | - global $pagenow; |
|
74 | + global $pagenow; |
|
75 | 75 | |
76 | - if( ! is_object( $_transient_data ) ) { |
|
77 | - $_transient_data = new stdClass; |
|
78 | - } |
|
76 | + if( ! is_object( $_transient_data ) ) { |
|
77 | + $_transient_data = new stdClass; |
|
78 | + } |
|
79 | 79 | |
80 | - if( 'plugins.php' == $pagenow && is_multisite() ) { |
|
81 | - return $_transient_data; |
|
82 | - } |
|
80 | + if( 'plugins.php' == $pagenow && is_multisite() ) { |
|
81 | + return $_transient_data; |
|
82 | + } |
|
83 | 83 | |
84 | - if ( empty( $_transient_data->response ) || empty( $_transient_data->response[ $this->name ] ) ) { |
|
84 | + if ( empty( $_transient_data->response ) || empty( $_transient_data->response[ $this->name ] ) ) { |
|
85 | 85 | |
86 | - $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug ) ); |
|
86 | + $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug ) ); |
|
87 | 87 | |
88 | - if ( false !== $version_info && is_object( $version_info ) && isset( $version_info->new_version ) ) { |
|
88 | + if ( false !== $version_info && is_object( $version_info ) && isset( $version_info->new_version ) ) { |
|
89 | 89 | |
90 | - $this->did_check = true; |
|
90 | + $this->did_check = true; |
|
91 | 91 | |
92 | - if( version_compare( $this->version, $version_info->new_version, '<' ) ) { |
|
92 | + if( version_compare( $this->version, $version_info->new_version, '<' ) ) { |
|
93 | 93 | |
94 | - $_transient_data->response[ $this->name ] = $version_info; |
|
94 | + $_transient_data->response[ $this->name ] = $version_info; |
|
95 | 95 | |
96 | - } |
|
96 | + } |
|
97 | 97 | |
98 | - $_transient_data->last_checked = time(); |
|
99 | - $_transient_data->checked[ $this->name ] = $this->version; |
|
98 | + $_transient_data->last_checked = time(); |
|
99 | + $_transient_data->checked[ $this->name ] = $this->version; |
|
100 | 100 | |
101 | - } |
|
101 | + } |
|
102 | 102 | |
103 | - } |
|
103 | + } |
|
104 | 104 | |
105 | - return $_transient_data; |
|
106 | - } |
|
105 | + return $_transient_data; |
|
106 | + } |
|
107 | 107 | |
108 | - /** |
|
109 | - * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! |
|
110 | - * |
|
111 | - * @param string $file |
|
112 | - * @param array $plugin |
|
113 | - */ |
|
114 | - public function show_update_notification( $file, $plugin ) { |
|
108 | + /** |
|
109 | + * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! |
|
110 | + * |
|
111 | + * @param string $file |
|
112 | + * @param array $plugin |
|
113 | + */ |
|
114 | + public function show_update_notification( $file, $plugin ) { |
|
115 | 115 | |
116 | - if( ! current_user_can( 'update_plugins' ) ) { |
|
117 | - return; |
|
118 | - } |
|
116 | + if( ! current_user_can( 'update_plugins' ) ) { |
|
117 | + return; |
|
118 | + } |
|
119 | 119 | |
120 | - if( ! is_multisite() ) { |
|
121 | - return; |
|
122 | - } |
|
120 | + if( ! is_multisite() ) { |
|
121 | + return; |
|
122 | + } |
|
123 | 123 | |
124 | - if ( $this->name != $file ) { |
|
125 | - return; |
|
126 | - } |
|
124 | + if ( $this->name != $file ) { |
|
125 | + return; |
|
126 | + } |
|
127 | 127 | |
128 | - // Remove our filter on the site transient |
|
129 | - remove_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ), 10 ); |
|
128 | + // Remove our filter on the site transient |
|
129 | + remove_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ), 10 ); |
|
130 | 130 | |
131 | - $update_cache = get_site_transient( 'update_plugins' ); |
|
131 | + $update_cache = get_site_transient( 'update_plugins' ); |
|
132 | 132 | |
133 | - if ( ! is_object( $update_cache ) || empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) { |
|
133 | + if ( ! is_object( $update_cache ) || empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) { |
|
134 | 134 | |
135 | - $cache_key = md5( 'edd_plugin_' .sanitize_key( $this->name ) . '_version_info' ); |
|
136 | - $version_info = get_transient( $cache_key ); |
|
135 | + $cache_key = md5( 'edd_plugin_' .sanitize_key( $this->name ) . '_version_info' ); |
|
136 | + $version_info = get_transient( $cache_key ); |
|
137 | 137 | |
138 | - if( false === $version_info ) { |
|
138 | + if( false === $version_info ) { |
|
139 | 139 | |
140 | - $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug ) ); |
|
140 | + $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug ) ); |
|
141 | 141 | |
142 | - set_transient( $cache_key, $version_info, 3600 ); |
|
143 | - } |
|
142 | + set_transient( $cache_key, $version_info, 3600 ); |
|
143 | + } |
|
144 | 144 | |
145 | 145 | |
146 | - if( ! is_object( $version_info ) ) { |
|
147 | - return; |
|
148 | - } |
|
146 | + if( ! is_object( $version_info ) ) { |
|
147 | + return; |
|
148 | + } |
|
149 | 149 | |
150 | - if( version_compare( $this->version, $version_info->new_version, '<' ) ) { |
|
150 | + if( version_compare( $this->version, $version_info->new_version, '<' ) ) { |
|
151 | 151 | |
152 | - $update_cache->response[ $this->name ] = $version_info; |
|
152 | + $update_cache->response[ $this->name ] = $version_info; |
|
153 | 153 | |
154 | - } |
|
154 | + } |
|
155 | 155 | |
156 | - $update_cache->last_checked = time(); |
|
157 | - $update_cache->checked[ $this->name ] = $this->version; |
|
156 | + $update_cache->last_checked = time(); |
|
157 | + $update_cache->checked[ $this->name ] = $this->version; |
|
158 | 158 | |
159 | - set_site_transient( 'update_plugins', $update_cache ); |
|
159 | + set_site_transient( 'update_plugins', $update_cache ); |
|
160 | 160 | |
161 | - } else { |
|
161 | + } else { |
|
162 | 162 | |
163 | - $version_info = $update_cache->response[ $this->name ]; |
|
163 | + $version_info = $update_cache->response[ $this->name ]; |
|
164 | 164 | |
165 | - } |
|
165 | + } |
|
166 | 166 | |
167 | - // Restore our filter |
|
168 | - add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); |
|
167 | + // Restore our filter |
|
168 | + add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); |
|
169 | 169 | |
170 | - if ( ! empty( $update_cache->response[ $this->name ] ) && version_compare( $this->version, $version_info->new_version, '<' ) ) { |
|
170 | + if ( ! empty( $update_cache->response[ $this->name ] ) && version_compare( $this->version, $version_info->new_version, '<' ) ) { |
|
171 | 171 | |
172 | - // build a plugin list row, with update notification |
|
173 | - $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); |
|
174 | - echo '<tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange"><div class="update-message">'; |
|
172 | + // build a plugin list row, with update notification |
|
173 | + $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); |
|
174 | + echo '<tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange"><div class="update-message">'; |
|
175 | 175 | |
176 | - $changelog_link = self_admin_url( 'index.php?edd_sl_action=view_plugin_changelog&plugin=' . $this->name . '&slug=' . $this->slug . '&TB_iframe=true&width=772&height=911' ); |
|
176 | + $changelog_link = self_admin_url( 'index.php?edd_sl_action=view_plugin_changelog&plugin=' . $this->name . '&slug=' . $this->slug . '&TB_iframe=true&width=772&height=911' ); |
|
177 | 177 | |
178 | - if ( empty( $version_info->download_link ) ) { |
|
179 | - printf( |
|
178 | + if ( empty( $version_info->download_link ) ) { |
|
179 | + printf( |
|
180 | 180 | /* translators: 1: name 2: changelog URL 3: version */ |
181 | - __( 'There is a new version of %1$s available. <a target="_blank" class="thickbox" href="%2$s">View version %3$s details</a>.', 'give' ), |
|
182 | - esc_html( $version_info->name ), |
|
183 | - esc_url( $changelog_link ), |
|
184 | - esc_html( $version_info->new_version ) |
|
185 | - ); |
|
186 | - } else { |
|
187 | - printf( |
|
181 | + __( 'There is a new version of %1$s available. <a target="_blank" class="thickbox" href="%2$s">View version %3$s details</a>.', 'give' ), |
|
182 | + esc_html( $version_info->name ), |
|
183 | + esc_url( $changelog_link ), |
|
184 | + esc_html( $version_info->new_version ) |
|
185 | + ); |
|
186 | + } else { |
|
187 | + printf( |
|
188 | 188 | /* translators: 1: name 2: changelog URL 3: version 4: update URL */ |
189 | - __( 'There is a new version of %1$s available. <a target="_blank" class="thickbox" href="%2$s">View version %3$s details</a> or <a href="%4$s">update now</a>.', 'give' ), |
|
190 | - esc_html( $version_info->name ), |
|
191 | - esc_url( $changelog_link ), |
|
192 | - esc_html( $version_info->new_version ), |
|
193 | - esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $this->name, 'upgrade-plugin_' . $this->name ) ) |
|
194 | - ); |
|
195 | - } |
|
196 | - |
|
197 | - echo '</div></td></tr>'; |
|
198 | - } |
|
199 | - } |
|
200 | - |
|
201 | - |
|
202 | - /** |
|
203 | - * Updates information on the "View version x.x details" page with custom data. |
|
204 | - * |
|
205 | - * @uses api_request() |
|
206 | - * |
|
207 | - * @param mixed $_data |
|
208 | - * @param string $_action |
|
209 | - * @param object $_args |
|
210 | - * @return object $_data |
|
211 | - */ |
|
212 | - function plugins_api_filter( $_data, $_action = '', $_args = null ) { |
|
213 | - |
|
214 | - |
|
215 | - if ( $_action != 'plugin_information' ) { |
|
216 | - |
|
217 | - return $_data; |
|
218 | - |
|
219 | - } |
|
220 | - |
|
221 | - if ( ! isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) { |
|
222 | - |
|
223 | - return $_data; |
|
224 | - |
|
225 | - } |
|
226 | - |
|
227 | - $to_send = array( |
|
228 | - 'slug' => $this->slug, |
|
229 | - 'is_ssl' => is_ssl(), |
|
230 | - 'fields' => array( |
|
231 | - 'banners' => false, // These will be supported soon hopefully |
|
232 | - 'reviews' => false |
|
233 | - ) |
|
234 | - ); |
|
235 | - |
|
236 | - $api_response = $this->api_request( 'plugin_information', $to_send ); |
|
237 | - |
|
238 | - if ( false !== $api_response ) { |
|
239 | - $_data = $api_response; |
|
240 | - } |
|
241 | - |
|
242 | - return $_data; |
|
243 | - } |
|
244 | - |
|
245 | - |
|
246 | - /** |
|
247 | - * Disable SSL verification in order to prevent download update failures |
|
248 | - * |
|
249 | - * @param array $args |
|
250 | - * @param string $url |
|
251 | - * @return object $array |
|
252 | - */ |
|
253 | - function http_request_args( $args, $url ) { |
|
254 | - // If it is an https request and we are performing a package download, disable ssl verification |
|
255 | - if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) { |
|
256 | - $args['sslverify'] = false; |
|
257 | - } |
|
258 | - return $args; |
|
259 | - } |
|
260 | - |
|
261 | - /** |
|
262 | - * Calls the API and, if successfull, returns the object delivered by the API. |
|
263 | - * |
|
264 | - * @uses get_bloginfo() |
|
265 | - * @uses wp_remote_post() |
|
266 | - * @uses is_wp_error() |
|
267 | - * |
|
268 | - * @param string $_action The requested action. |
|
269 | - * @param array $_data Parameters for the API action. |
|
270 | - * @return false||object |
|
271 | - */ |
|
272 | - private function api_request( $_action, $_data ) { |
|
273 | - |
|
274 | - global $wp_version; |
|
275 | - |
|
276 | - $data = array_merge( $this->api_data, $_data ); |
|
277 | - |
|
278 | - if ( $data['slug'] != $this->slug ) |
|
279 | - return; |
|
280 | - |
|
281 | - if ( empty( $data['license'] ) ) |
|
282 | - return; |
|
283 | - |
|
284 | - if( $this->api_url == home_url() ) { |
|
285 | - return false; // Don't allow a plugin to ping itself |
|
286 | - } |
|
287 | - |
|
288 | - $api_params = array( |
|
289 | - 'edd_action' => 'get_version', |
|
290 | - 'license' => $data['license'], |
|
291 | - 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false, |
|
292 | - 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false, |
|
293 | - 'slug' => $data['slug'], |
|
294 | - 'author' => $data['author'], |
|
295 | - 'url' => home_url() |
|
296 | - ); |
|
189 | + __( 'There is a new version of %1$s available. <a target="_blank" class="thickbox" href="%2$s">View version %3$s details</a> or <a href="%4$s">update now</a>.', 'give' ), |
|
190 | + esc_html( $version_info->name ), |
|
191 | + esc_url( $changelog_link ), |
|
192 | + esc_html( $version_info->new_version ), |
|
193 | + esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $this->name, 'upgrade-plugin_' . $this->name ) ) |
|
194 | + ); |
|
195 | + } |
|
196 | + |
|
197 | + echo '</div></td></tr>'; |
|
198 | + } |
|
199 | + } |
|
200 | + |
|
201 | + |
|
202 | + /** |
|
203 | + * Updates information on the "View version x.x details" page with custom data. |
|
204 | + * |
|
205 | + * @uses api_request() |
|
206 | + * |
|
207 | + * @param mixed $_data |
|
208 | + * @param string $_action |
|
209 | + * @param object $_args |
|
210 | + * @return object $_data |
|
211 | + */ |
|
212 | + function plugins_api_filter( $_data, $_action = '', $_args = null ) { |
|
213 | + |
|
214 | + |
|
215 | + if ( $_action != 'plugin_information' ) { |
|
216 | + |
|
217 | + return $_data; |
|
218 | + |
|
219 | + } |
|
220 | + |
|
221 | + if ( ! isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) { |
|
222 | + |
|
223 | + return $_data; |
|
224 | + |
|
225 | + } |
|
226 | + |
|
227 | + $to_send = array( |
|
228 | + 'slug' => $this->slug, |
|
229 | + 'is_ssl' => is_ssl(), |
|
230 | + 'fields' => array( |
|
231 | + 'banners' => false, // These will be supported soon hopefully |
|
232 | + 'reviews' => false |
|
233 | + ) |
|
234 | + ); |
|
235 | + |
|
236 | + $api_response = $this->api_request( 'plugin_information', $to_send ); |
|
237 | + |
|
238 | + if ( false !== $api_response ) { |
|
239 | + $_data = $api_response; |
|
240 | + } |
|
241 | + |
|
242 | + return $_data; |
|
243 | + } |
|
244 | + |
|
245 | + |
|
246 | + /** |
|
247 | + * Disable SSL verification in order to prevent download update failures |
|
248 | + * |
|
249 | + * @param array $args |
|
250 | + * @param string $url |
|
251 | + * @return object $array |
|
252 | + */ |
|
253 | + function http_request_args( $args, $url ) { |
|
254 | + // If it is an https request and we are performing a package download, disable ssl verification |
|
255 | + if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) { |
|
256 | + $args['sslverify'] = false; |
|
257 | + } |
|
258 | + return $args; |
|
259 | + } |
|
260 | + |
|
261 | + /** |
|
262 | + * Calls the API and, if successfull, returns the object delivered by the API. |
|
263 | + * |
|
264 | + * @uses get_bloginfo() |
|
265 | + * @uses wp_remote_post() |
|
266 | + * @uses is_wp_error() |
|
267 | + * |
|
268 | + * @param string $_action The requested action. |
|
269 | + * @param array $_data Parameters for the API action. |
|
270 | + * @return false||object |
|
271 | + */ |
|
272 | + private function api_request( $_action, $_data ) { |
|
273 | + |
|
274 | + global $wp_version; |
|
275 | + |
|
276 | + $data = array_merge( $this->api_data, $_data ); |
|
277 | + |
|
278 | + if ( $data['slug'] != $this->slug ) |
|
279 | + return; |
|
280 | + |
|
281 | + if ( empty( $data['license'] ) ) |
|
282 | + return; |
|
283 | + |
|
284 | + if( $this->api_url == home_url() ) { |
|
285 | + return false; // Don't allow a plugin to ping itself |
|
286 | + } |
|
287 | + |
|
288 | + $api_params = array( |
|
289 | + 'edd_action' => 'get_version', |
|
290 | + 'license' => $data['license'], |
|
291 | + 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false, |
|
292 | + 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false, |
|
293 | + 'slug' => $data['slug'], |
|
294 | + 'author' => $data['author'], |
|
295 | + 'url' => home_url() |
|
296 | + ); |
|
297 | 297 | |
298 | - $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); |
|
298 | + $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); |
|
299 | 299 | |
300 | - if ( ! is_wp_error( $request ) ) { |
|
301 | - $request = json_decode( wp_remote_retrieve_body( $request ) ); |
|
302 | - } |
|
300 | + if ( ! is_wp_error( $request ) ) { |
|
301 | + $request = json_decode( wp_remote_retrieve_body( $request ) ); |
|
302 | + } |
|
303 | 303 | |
304 | - if ( $request && isset( $request->sections ) ) { |
|
305 | - $request->sections = maybe_unserialize( $request->sections ); |
|
306 | - } else { |
|
307 | - $request = false; |
|
308 | - } |
|
304 | + if ( $request && isset( $request->sections ) ) { |
|
305 | + $request->sections = maybe_unserialize( $request->sections ); |
|
306 | + } else { |
|
307 | + $request = false; |
|
308 | + } |
|
309 | 309 | |
310 | - return $request; |
|
311 | - } |
|
310 | + return $request; |
|
311 | + } |
|
312 | 312 | |
313 | - public function show_changelog() { |
|
313 | + public function show_changelog() { |
|
314 | 314 | |
315 | 315 | |
316 | - if( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) { |
|
317 | - return; |
|
318 | - } |
|
316 | + if( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) { |
|
317 | + return; |
|
318 | + } |
|
319 | 319 | |
320 | - if( empty( $_REQUEST['plugin'] ) ) { |
|
321 | - return; |
|
322 | - } |
|
323 | - |
|
324 | - if( empty( $_REQUEST['slug'] ) ) { |
|
325 | - return; |
|
326 | - } |
|
327 | - |
|
328 | - if( ! current_user_can( 'update_plugins' ) ) { |
|
329 | - wp_die( esc_html__( 'You do not have permission to install plugin updates.', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 403 ) ); |
|
330 | - } |
|
331 | - |
|
332 | - $response = $this->api_request( 'plugin_latest_version', array( 'slug' => $_REQUEST['slug'] ) ); |
|
333 | - |
|
334 | - if( $response && isset( $response->sections['changelog'] ) ) { |
|
335 | - echo '<div style="background:#fff;padding:10px;">' . $response->sections['changelog'] . '</div>'; |
|
336 | - } |
|
337 | - |
|
338 | - |
|
339 | - exit; |
|
340 | - } |
|
320 | + if( empty( $_REQUEST['plugin'] ) ) { |
|
321 | + return; |
|
322 | + } |
|
323 | + |
|
324 | + if( empty( $_REQUEST['slug'] ) ) { |
|
325 | + return; |
|
326 | + } |
|
327 | + |
|
328 | + if( ! current_user_can( 'update_plugins' ) ) { |
|
329 | + wp_die( esc_html__( 'You do not have permission to install plugin updates.', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 403 ) ); |
|
330 | + } |
|
331 | + |
|
332 | + $response = $this->api_request( 'plugin_latest_version', array( 'slug' => $_REQUEST['slug'] ) ); |
|
333 | + |
|
334 | + if( $response && isset( $response->sections['changelog'] ) ) { |
|
335 | + echo '<div style="background:#fff;padding:10px;">' . $response->sections['changelog'] . '</div>'; |
|
336 | + } |
|
337 | + |
|
338 | + |
|
339 | + exit; |
|
340 | + } |
|
341 | 341 | |
342 | 342 | } |