PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.7.7
Shortcodes and extra features for Phlox theme v2.7.7
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / admin / includes / admin-ajax.php
auxin-elements / admin / includes Last commit date
classes 5 years ago compatibility 5 years ago metaboxes 5 years ago modules 9 years ago admin-ajax.php 5 years ago admin-hooks.php 5 years ago admin-the-functions.php 6 years ago index.php 5 years ago
admin-ajax.php
462 lines
1 <?php
2
3 function auxin_ajax_send_feedback(){
4
5 // skip if the form data is not receiced
6 if( empty( $_POST['form'] ) ){
7 wp_send_json_error( __( 'Data cannot be delivered, please try again.', 'auxin-elements' ) );
8 }
9
10 $form_data = $_POST['form'];
11
12 // extract the form data
13 $rate = ( ! empty( $form_data['theme_rate'] ) || $form_data['theme_rate'] === '0' ) ? $form_data['theme_rate'] : '';
14 $feedback = ! empty( $form_data['feedback'] ) ? $form_data['feedback'] : '';
15 $email = ! empty( $form_data['email'] ) ? $form_data['email'] : '';
16 $nonce = ! empty( $form_data['_wpnonce'] ) ? $form_data['_wpnonce'] : '';
17
18 if( ! wp_verify_nonce( $nonce, 'phlox_feedback' ) ){
19 wp_send_json_error( __( 'Authorization failed!', 'auxin-elements' ) );
20 }
21
22 if( $rate || $rate === '0' ){
23
24 global $wp_version;
25
26 $args = array(
27 'user-agent' => 'WordPress/'.$wp_version.'; '. get_home_url(),
28 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 5),
29 'body' => array(
30 'cat' => 'rating',
31 'action' => 'submit',
32 'item-slug' => 'phlox',
33 'rate' => $rate,
34 'client_key' => get_theme_mod( 'client_key', ''),
35 'item_version'=> THEME_VERSION,
36 'theme_slug' => THEME_ID,
37 'feedback' => $feedback
38 )
39 );
40 // send the rating through the api
41 $request = wp_remote_post( 'http://api.averta.net/envato/items/', $args );
42 update_option( 'auxin_show_rate_scale_notice', false );
43 // if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) {}
44
45 // store the user rating on the website
46 auxin_update_option( 'user_rating', $rate );
47
48 // send the feedback via email
49 $message = 'Rate: '. $rate . "\r\n" . 'Email: <' . $email . ">\r\n\r\n" . $feedback;
50 wp_mail( 'feedbacks'.'@'.'averta.net', 'Feedback from phlox dashboard:', $message );
51
52 wp_send_json_success( __( 'Sent Successfully. Thanks for your feedback!', 'auxin-elements' ) );
53
54 } else{
55 wp_send_json_error( __( 'An error occurred. Feedback could not be delivered, please try again.', 'auxin-elements' ) );
56 }
57
58 }
59
60 add_action( 'wp_ajax_send_feedback', 'auxin_ajax_send_feedback' );
61
62 /**
63 * Hide Feedback notice
64 */
65 function auxin_remove_feedback_notice() {
66 // skip if the form data is not receiced
67 if( empty( $_POST['form'] ) ){
68 wp_send_json_error( __( 'Data cannot be delivered, please try again.', 'auxin-elements' ) );
69 }
70
71 $form_data = $_POST['form'];
72
73 $nonce = ! empty( $form_data['_wpnonce'] ) ? $form_data['_wpnonce'] : '';
74
75 if( ! wp_verify_nonce( $nonce, 'phlox_feedback' ) ){
76 wp_send_json_error( __( 'Authorization failed!', 'auxin-elements' ) );
77 }
78
79 update_option( 'auxin_show_rate_scale_notice', false );
80 wp_send_json_success();
81 }
82
83 add_action( 'wp_ajax_aux-remove-feedback-notice', 'auxin_remove_feedback_notice' );
84
85
86 /**
87 * Remind feedback
88 */
89 function auxin_ajax_remind_feedback() {
90 // skip if the form data is not receiced
91 if( empty( $_POST['form'] ) ){
92 wp_send_json_error( __( 'Data cannot be delivered, please try again.', 'auxin-elements' ) );
93 }
94
95 $form_data = $_POST['form'];
96
97 $nonce = ! empty( $form_data['_wpnonce'] ) ? $form_data['_wpnonce'] : '';
98
99 if( ! wp_verify_nonce( $nonce, 'phlox_feedback' ) ){
100 wp_send_json_error( __( 'Authorization failed!', 'auxin-elements' ) );
101 }
102
103 // reset feedback notice viewer
104 update_option( 'auxin_show_rate_scale_notice', false );
105 set_theme_mod( 'rate_scale_notice_remind_later_date', time() + DAY_IN_SECONDS * 3 );
106
107 wp_send_json_success();
108 }
109
110 add_action( 'wp_ajax_remind_feedback', 'auxin_ajax_remind_feedback' );
111
112
113
114 function auxin_ajax_isotope_filter_group(){
115 // Check nonce
116 if ( ! isset( $_POST['group'] ) ||! isset( $_POST['key'] ) || ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'aux-iso-group' ) ) {
117 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
118 }
119
120 if( false !== update_option( 'aux_isotope_group_' . $_POST['key'] , $_POST['group'] ) ) {
121 wp_send_json_success( __( 'It\'s Done.', 'auxin-elements' ) );
122 }
123
124 wp_send_json_error( __( 'An error occurred.', 'auxin-elements' ) );
125 }
126 add_action( 'wp_ajax_aux_isotope_group', 'auxin_ajax_isotope_filter_group' );
127
128
129 function auxin_ajax_filter_get_content() {
130
131 // Check nonce
132 if ( ! isset( $_POST['n'] ) || ! wp_verify_nonce( $_POST['n'], 'aux_ajax_filter_request' ) ) {
133 wp_send_json_error( 'Nonce check failed!', 403 );
134 }
135
136 $num = $_POST['num'];
137 $post_type = 'product';
138 $tax = $_POST['taxonomy'];
139 $term = $_POST['term'];
140 $image_class = 'aux-img-dynamic-dropshadow';
141 $width = $_POST['width'];
142 $height = $_POST['height'];
143 $order = $_POST['order'];
144 $orderby = $_POST['orderby'];
145 $size = array( 'width' => $width, 'height' => $height );
146
147 /*
148 * The WordPress Query class.
149 *
150 * @link http://codex.wordpress.org/Function_Reference/WP_Query
151 */
152 $args = array(
153 // Type & Status Parameters
154 'post_type' => $post_type,
155 'post_status' => 'publish',
156 // Pagination Parameters
157 'posts_per_page' => $num,
158 'nopaging' => false,
159 'order' => $order,
160 'orderby' => $orderby,
161 );
162
163 if ( 'all' !== $term ) {
164 // Taxonomy Parameters
165 $args['tax_query'] = array(
166 array(
167 'taxonomy' => $tax,
168 'field' => 'slug',
169 'terms' => $term,
170 'include_children' => true,
171 'operator' => 'IN',
172 )
173 );
174 }
175
176 $posts = get_posts( $args );
177
178 foreach ( $posts as $post ) {
179
180 $image_id = get_post_thumbnail_id( $post );
181 $product = wc_get_product( $post->ID );
182
183 $post->thumb = auxin_get_the_responsive_attachment(
184 $image_id,
185 array(
186 'quality' => 100,
187 'upscale' => true,
188 'crop' => true,
189 'add_hw' => true, // whether add width and height attr or not
190 'attr' => array(
191 'class' => 'auxshp-product-image auxshp-attachment ' . $image_class,
192 'data-original-width' => $width,
193 'data-original-height' => $height,
194 'data-original-src' => wp_get_attachment_image_src( $image_id, 'full' )[0]
195 ),
196 'size' => $size,
197 'image_sizes' => 'auto',
198 'srcset_sizes' => 'auto',
199 'original_src' => true
200 )
201 );
202
203 $post->price = $product->get_price_html();
204 $post->meta = wc_get_product_category_list( $product->get_id(), ', ', '<em class="auxshp-meta-terms">', '</em>' );
205 $post->badge = $product->is_on_sale() ? true : false;
206
207 if( auxin_get_option( 'product_index_ajax_add_to_cart', '0' ) ) {
208 $class = 'button aux-ajax-add-to-cart add_to_cart_button';
209 }
210
211 $post->cart = apply_filters( 'woocommerce_loop_add_to_cart_link',
212 sprintf( '<a rel="nofollow" href="%s" data-quantity="1" data-product_id="%s" data-product_sku="%s" data-verify_nonce="%s" class="%s"><i class="aux-ico auxicon-handbag"></i><span>%s</span></a>',
213 esc_url( $product->add_to_cart_url() ),
214 esc_attr( $product->get_id() ),
215 esc_attr( $product->get_sku() ),
216 esc_attr( wp_create_nonce( 'aux_add_to_cart-' . $product->get_id() ) ),
217 esc_attr( isset( $class ) ? $class : 'button add_to_cart_button' ),
218 esc_html( $product->add_to_cart_text() )
219 ),
220 $product );
221 }
222
223 wp_send_json_success( $posts );
224
225 }
226
227 add_action( 'wp_ajax_filter_get_content', 'auxin_ajax_filter_get_content' );
228 add_action( 'wp_ajax_noprive_filter_get_content', 'auxin_ajax_filter_get_content' );
229
230 /**
231 * wordpress ajax for dismissed notice
232 *
233 * @return json
234 */
235 function auxin_dismissed_notice(){
236 // Store it in the options table
237 if ( ! isset( $_POST['id'] ) || ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], '_notice_nonce' ) ) {
238 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
239 } else {
240 auxin_set_transient( 'auxin-notice-' . $_POST['id'], 1, $_POST['expiration'] );
241 wp_send_json_success( __( 'It\'s OK.', 'auxin-elements' ) );
242 }
243 }
244 add_action( 'wp_ajax_auxin_dismissed_notice', 'auxin_dismissed_notice' );
245
246 /**
247 * WordPress ajax to display activation form
248 *
249 * @return html
250 */
251 function auxin_display_actvation_form(){
252 if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( $_GET['nonce'], 'aux-activation-form' ) ) {
253 // This nonce is not valid.
254 wp_die( esc_html__( 'Security Token Error!', 'auxin-elements' ) );
255 }
256 ob_start();
257 ?>
258 <div class="aux-license-popup">
259 <button class="featherlight-close-icon featherlight-close" aria-label="Close"></button>
260 <img class="aux-popup-image" src="<?php echo esc_url( AUXELS_ADMIN_URL . '/assets/images/welcome/activation.svg' ); ?>" />
261 <h2 class="aux-popup-title"><?php esc_html_e( 'License Activation', 'auxin-elements' ); ?></h2>
262 <p class="aux-popup-desc"><?php esc_html_e( 'Please activate your license to get automatic updates, premium support, and unlimited access to the template library and demo importer.', 'auxin-elements' ); printf('&nbsp;<a href="https://help.market.envato.com/hc/en-us/articles/202822600-Where-Is-My-Purchase-Code-" target="_blank">%s</a>', esc_html( 'how to find purchase code?', 'auxin-elements' ) ); ?></p>
263 <form class="auxin-form auxin-check-purchase" action="<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>" method="post">
264 <div class="form-group">
265 <label class="form-label" for="aux-usermail"><?php esc_html_e( 'E-mail address', 'auxin-elements' ); ?></label>
266 <input class="form-control" type="text" name="usermail" value="<?php echo esc_attr( get_option('admin_email') ); ?>" required>
267 </div>
268
269 <div class="form-group">
270 <label class="form-label" for="aux-purchase"><?php esc_html_e( 'Purchase code', 'auxin-elements' ); ?></label>
271 <input class="form-control" type="text" name="purchase" required>
272 </div>
273
274 <?php wp_nonce_field( 'auxin-purchase-activation', 'security' ); ?>
275 <input type="hidden" name="action" value="auxin_purchase_activation">
276 <div class="button-group">
277 <button type="submit" class="aux-button aux-primary aux-medium aux-activate-license" value="submit">
278 <span><?php esc_html_e( 'Activate', 'auxin-elements' ); ?></span>
279 </button>
280 </div>
281 </form>
282 </div>
283 <?php
284 wp_die( ob_get_clean() );
285 }
286 add_action( 'wp_ajax_auxin_display_actvation_form', 'auxin_display_actvation_form' );
287
288 /**
289 * wordpress ajax for auxin purchase activation
290 *
291 * @return json
292 */
293 function auxin_purchase_activation(){
294
295 if ( ! isset( $_POST['usermail'] ) || ! isset( $_POST['purchase'] ) || ! isset( $_POST['security'] ) || ! wp_verify_nonce( $_POST['security'], 'auxin-purchase-activation' ) ) {
296 wp_send_json_error( array(
297 'message' => __( 'Token Error.', 'auxin-elements' ),
298 'buttonText' => __( 'Retry', 'auxin-elements' ),
299 ) );
300 }
301
302 $usermail = $_POST['usermail'];
303 $purchase_code = $_POST['purchase'];
304 $action = 'activate';
305
306 $result = Auxin_License_Activation::get_instance()->license_action( $usermail, $purchase_code, $action );
307
308 if( isset( $result['success'] ) && $result['success'] ){
309 $result['buttonText'] = __( 'Close', 'auxin-elements' );
310 wp_send_json_success( $result );
311 }
312
313 $result['buttonText'] = __( 'Retry', 'auxin-elements' );
314 wp_send_json_error( $result );
315
316 }
317 add_action( 'wp_ajax_auxin_purchase_activation', 'auxin_purchase_activation' );
318
319 /**
320 * wordpress ajax for auxin upgrader
321 *
322 * @return json
323 */
324 function auxin_ajax_upgrader(){
325 // Check ajax nonce field
326 check_ajax_referer( 'auxin-start-upgrading', 'nonce' );
327
328 if ( ! isset( $_POST['key'] ) || ! isset( $_POST['type'] ) ) {
329 wp_send_json_error( array(
330 'slug' => '',
331 'errorCode' => 'no_token_specified',
332 'errorMessage' => __( 'Token Error.', 'auxin-elements' )
333 ) );
334 }
335
336 $handler = new Auxin_Upgrader_Ajax_Handlers;
337 $handler->run( $_POST['key'], $_POST['type'] );
338 }
339 add_action( 'wp_ajax_auxin_start_upgrading', 'auxin_ajax_upgrader' );
340
341
342 /**
343 * wordpress ajax for auxin customizer export
344 *
345 * @return json
346 */
347 function auxin_customizer_export(){
348
349 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'auxin-export-control' ) ) {
350 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
351 }
352
353 // Get theme options
354 $theme_options = auxin_options();
355
356 // Get theme mods
357 $theme_mods = get_theme_mods();
358 $filters = array( 0, 'nav_menu_locations', 'custom_css_post_id', 'last_checked_version' );
359 foreach ( $filters as $filter ) {
360 if ( isset( $theme_mods[ $filter ] ) ) {
361 unset( $theme_mods[ $filter ] );
362 }
363 }
364
365 if( empty( $theme_options ) && empty( $theme_mods ) ){
366 wp_send_json_error( __( 'No data found!', 'auxin-elements' ) );
367 }
368
369 $b64_content = base64_encode( maybe_serialize( array(
370 'theme_options' => $theme_options,
371 'theme_mods' => $theme_mods
372 ) ) );
373
374 wp_send_json_success( array(
375 'content' => $b64_content,
376 'fileName' => THEME_ID . '_export_' . current_time('timestamp') . '.txt'
377 ) );
378
379 }
380 add_action( 'wp_ajax_auxin_customizer_export', 'auxin_customizer_export' );
381
382
383 /**
384 * wordpress ajax for auxin customizer import
385 *
386 * @return json
387 */
388 function auxin_customizer_import(){
389 // Check security
390 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'auxin-import-control' ) ) {
391 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
392 }
393
394 // Check input file
395 if ( ! isset( $_FILES['file'] ) || 0 < $_FILES['file']['error'] ) {
396 wp_send_json_error( __( 'Please upload a valid file.', 'auxin-elements' ) );
397 }
398
399 // Get and decode file content
400 global $wp_filesystem;
401 if ( empty($wp_filesystem) ) {
402 require_once( ABSPATH . '/wp-admin/includes/file.php' );
403 WP_Filesystem();
404 }
405 $json_content = $wp_filesystem->get_contents( $_FILES['file']['tmp_name'] );
406 $array_content = maybe_unserialize( base64_decode( $json_content ) );
407
408 // Check array empty
409 if ( empty( $array_content ) || ! is_array( $array_content ) ) {
410 wp_send_json_error( __( 'Invalid or Empty Data.', 'auxin-elements' ) );
411 }
412
413 if( isset( $array_content['theme_options'] ) ){
414 // Get image options names
415 $get_options = auxin_get_defined_options();
416 $custom_images = array();
417 foreach ( $get_options['fields'] as $key => $value ) {
418 if ( ! array_search( 'image', $value ) ) {
419 continue;
420 }
421 $custom_images[] = $value['id'];
422 }
423 // Update options
424 foreach ( $array_content['theme_options'] as $auxin_key => $auxin_value ) {
425 if ( in_array( $auxin_key, $custom_images ) && ! empty( $auxin_value ) ) {
426 continue;
427 }
428 // Update exclusive auxin options
429 auxin_update_option( $auxin_key , $auxin_value );
430 }
431 }
432
433 if( isset( $array_content['theme_mods'] ) ){
434 foreach ( $array_content['theme_mods'] as $theme_mods_key => $theme_mods_value ) {
435 // Start theme mods loop:
436 if( $theme_mods_key === 'custom_logo' ) {
437 continue;
438 }
439 // Update theme mods
440 set_theme_mod( $theme_mods_key , $theme_mods_value );
441 }
442 }
443
444 // force to flush dynamic asset files
445 delete_transient( 'auxin_' . AUXELS_SLUG . '_version' );
446
447 wp_send_json_success( __( 'Successfully Imported.', 'auxin-elements' ) );
448
449 }
450 add_action( 'wp_ajax_auxin_customizer_import', 'auxin_customizer_import' );
451
452
453 /**
454 * Ajax handler for auxin_template_library control to import template
455 *
456 * @return json
457 */
458 function auxin_template_control_importer() {
459 wp_send_json( auxin_template_importer( $_POST['id'], $_POST['template_type'], 'update_menu' ) );
460 }
461 add_action( 'wp_ajax_auxin_template_control_importer', 'auxin_template_control_importer' );
462