PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.5.19
Shortcodes and extra features for Phlox theme v2.5.19
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 6 years ago compatibility 6 years ago metaboxes 6 years ago modules 9 years ago admin-ajax.php 6 years ago admin-hooks.php 6 years ago admin-the-functions.php 6 years ago index.php 6 years ago
admin-ajax.php
406 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'] : '';
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 ){
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 )
35 );
36 // send the rating through the api
37 $request = wp_remote_post( 'http://api.averta.net/envato/items/', $args );
38
39 // if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) {}
40
41 // store the user rating on the website
42 auxin_update_option( 'user_rating', $rate );
43
44 // send the feedback via email
45 $message = 'Rate: '. $rate . "\r\n" . 'Email: <' . $email . ">\r\n\r\n" . $feedback;
46 wp_mail( 'feedbacks'.'@'.'averta.net', 'Feedback from phlox dashboard:', $message );
47
48 wp_send_json_success( __( 'Sent Successfully. Thanks for your feedback!', 'auxin-elements' ) );
49
50 } else{
51 wp_send_json_error( __( 'An error occurred. Feedback could not be delivered, please try again.', 'auxin-elements' ) );
52 }
53
54 }
55
56 add_action( 'wp_ajax_send_feedback', 'auxin_ajax_send_feedback' );
57
58 function auxin_ajax_isotope_filter_group(){
59 // Check nonce
60 if ( ! isset( $_POST['group'] ) ||! isset( $_POST['key'] ) || ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'aux-iso-group' ) ) {
61 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
62 }
63
64 if( false !== update_option( 'aux_isotope_group_' . $_POST['key'] , $_POST['group'] ) ) {
65 wp_send_json_success( __( 'It\'s Done.', 'auxin-elements' ) );
66 }
67
68 wp_send_json_error( __( 'An error occurred.', 'auxin-elements' ) );
69 }
70 add_action( 'wp_ajax_aux_isotope_group', 'auxin_ajax_isotope_filter_group' );
71
72
73 function auxin_ajax_filter_get_content() {
74
75 // Check nonce
76 if ( ! isset( $_POST['n'] ) || ! wp_verify_nonce( $_POST['n'], 'aux_ajax_filter_request' ) ) {
77 wp_send_json_error( 'Nonce check failed!', 403 );
78 }
79
80 $num = $_POST['num'];
81 $post_type = 'product';
82 $tax = $_POST['taxonomy'];
83 $term = $_POST['term'];
84 $image_class = 'aux-img-dynamic-dropshadow';
85 $width = $_POST['width'];
86 $height = $_POST['height'];
87 $order = $_POST['order'];
88 $orderby = $_POST['orderby'];
89 $size = array( 'width' => $width, 'height' => $height );
90
91 /*
92 * The WordPress Query class.
93 *
94 * @link http://codex.wordpress.org/Function_Reference/WP_Query
95 */
96 $args = array(
97 // Type & Status Parameters
98 'post_type' => $post_type,
99 'post_status' => 'publish',
100 // Pagination Parameters
101 'posts_per_page' => $num,
102 'nopaging' => false,
103 'order' => $order,
104 'orderby' => $orderby,
105 );
106
107 if ( 'all' !== $term ) {
108 // Taxonomy Parameters
109 $args['tax_query'] = array(
110 array(
111 'taxonomy' => $tax,
112 'field' => 'slug',
113 'terms' => $term,
114 'include_children' => true,
115 'operator' => 'IN',
116 )
117 );
118 }
119
120 $posts = get_posts( $args );
121
122 foreach ( $posts as $post ) {
123
124 $image_id = get_post_thumbnail_id( $post );
125 $product = wc_get_product( $post->ID );
126
127 $post->thumb = auxin_get_the_responsive_attachment(
128 $image_id,
129 array(
130 'quality' => 100,
131 'upscale' => true,
132 'crop' => true,
133 'add_hw' => true, // whether add width and height attr or not
134 'attr' => array(
135 'class' => 'auxshp-product-image auxshp-attachment ' . $image_class,
136 'data-original-width' => $width,
137 'data-original-height' => $height,
138 'data-original-src' => wp_get_attachment_image_src( $image_id, 'full' )[0]
139 ),
140 'size' => $size,
141 'image_sizes' => 'auto',
142 'srcset_sizes' => 'auto',
143 'original_src' => true
144 )
145 );
146
147 $post->price = $product->get_price_html();
148 $post->meta = wc_get_product_category_list( $product->get_id(), ', ', '<em class="auxshp-meta-terms">', '</em>' );
149 $post->badge = $product->is_on_sale() ? true : false;
150
151 if( auxin_get_option( 'product_index_ajax_add_to_cart', '0' ) ) {
152 $class = 'button aux-ajax-add-to-cart add_to_cart_button';
153 }
154
155 $post->cart = apply_filters( 'woocommerce_loop_add_to_cart_link',
156 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>',
157 esc_url( $product->add_to_cart_url() ),
158 esc_attr( $product->get_id() ),
159 esc_attr( $product->get_sku() ),
160 esc_attr( wp_create_nonce( 'aux_add_to_cart-' . $product->get_id() ) ),
161 esc_attr( isset( $class ) ? $class : 'button add_to_cart_button' ),
162 esc_html( $product->add_to_cart_text() )
163 ),
164 $product );
165 }
166
167 wp_send_json_success( $posts );
168
169 }
170
171 add_action( 'wp_ajax_filter_get_content', 'auxin_ajax_filter_get_content' );
172 add_action( 'wp_ajax_noprive_filter_get_content', 'auxin_ajax_filter_get_content' );
173
174 /**
175 * wordpress ajax for dismissed notice
176 *
177 * @return json
178 */
179 function auxin_dismissed_notice(){
180 // Store it in the options table
181 if ( ! isset( $_POST['id'] ) || ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], '_notice_nonce' ) ) {
182 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
183 } else {
184 auxin_set_transient( 'auxin-notice-' . $_POST['id'], 1, $_POST['expiration'] );
185 wp_send_json_success( __( 'It\'s OK.', 'auxin-elements' ) );
186 }
187 }
188 add_action( 'wp_ajax_auxin_dismissed_notice', 'auxin_dismissed_notice' );
189
190 /**
191 * WordPress ajax to display activation form
192 *
193 * @return html
194 */
195 function auxin_display_actvation_form(){
196 if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( $_GET['nonce'], 'aux-activation-form' ) ) {
197 // This nonce is not valid.
198 wp_die( esc_html__( 'Security Token Error!', 'auxin-elements' ) );
199 }
200 ob_start();
201 ?>
202 <div class="aux-license-popup">
203 <button class="featherlight-close-icon featherlight-close" aria-label="Close"></button>
204 <img class="aux-popup-image" src="<?php echo esc_url( AUXELS_ADMIN_URL . '/assets/images/welcome/activation.svg' ); ?>" />
205 <h2 class="aux-popup-title"><?php esc_html_e( 'License Activation', 'auxin-elements' ); ?></h2>
206 <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>
207 <form class="auxin-form auxin-check-purchase" action="<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>" method="post">
208 <div class="form-group">
209 <label class="form-label" for="aux-usermail"><?php esc_html_e( 'E-mail address', 'auxin-elements' ); ?></label>
210 <input class="form-control" type="text" name="usermail" value="<?php echo esc_attr( get_option('admin_email') ); ?>" required>
211 </div>
212
213 <div class="form-group">
214 <label class="form-label" for="aux-purchase"><?php esc_html_e( 'Purchase code', 'auxin-elements' ); ?></label>
215 <input class="form-control" type="text" name="purchase" required>
216 </div>
217
218 <?php wp_nonce_field( 'auxin-purchase-activation', 'security' ); ?>
219 <input type="hidden" name="action" value="auxin_purchase_activation">
220 <div class="button-group">
221 <button type="submit" class="aux-button aux-primary aux-medium aux-activate-license" value="submit">
222 <span><?php esc_html_e( 'Activate', 'auxin-elements' ); ?></span>
223 </button>
224 </div>
225 </form>
226 </div>
227 <?php
228 wp_die( ob_get_clean() );
229 }
230 add_action( 'wp_ajax_auxin_display_actvation_form', 'auxin_display_actvation_form' );
231
232 /**
233 * wordpress ajax for auxin purchase activation
234 *
235 * @return json
236 */
237 function auxin_purchase_activation(){
238
239 if ( ! isset( $_POST['usermail'] ) || ! isset( $_POST['purchase'] ) || ! isset( $_POST['security'] ) || ! wp_verify_nonce( $_POST['security'], 'auxin-purchase-activation' ) ) {
240 wp_send_json_error( array(
241 'message' => __( 'Token Error.', 'auxin-elements' ),
242 'buttonText' => __( 'Retry', 'auxin-elements' ),
243 ) );
244 }
245
246 $usermail = $_POST['usermail'];
247 $purchase_code = $_POST['purchase'];
248 $action = 'activate';
249
250 $result = Auxin_License_Activation::get_instance()->license_action( $usermail, $purchase_code, $action );
251
252 if( isset( $result['success'] ) && $result['success'] ){
253 $result['buttonText'] = __( 'Close', 'auxin-elements' );
254 wp_send_json_success( $result );
255 }
256
257 $result['buttonText'] = __( 'Retry', 'auxin-elements' );
258 wp_send_json_error( $result );
259
260 }
261 add_action( 'wp_ajax_auxin_purchase_activation', 'auxin_purchase_activation' );
262
263 /**
264 * wordpress ajax for auxin upgrader
265 *
266 * @return json
267 */
268 function auxin_ajax_upgrader(){
269 // Check ajax nonce field
270 check_ajax_referer( 'auxin-start-upgrading', 'nonce' );
271
272 if ( ! isset( $_POST['key'] ) || ! isset( $_POST['type'] ) ) {
273 wp_send_json_error( array(
274 'slug' => '',
275 'errorCode' => 'no_token_specified',
276 'errorMessage' => __( 'Token Error.', 'auxin-elements' )
277 ) );
278 }
279
280 $handler = new Auxin_Upgrader_Ajax_Handlers;
281 $handler->run( $_POST['key'], $_POST['type'] );
282 }
283 add_action( 'wp_ajax_auxin_start_upgrading', 'auxin_ajax_upgrader' );
284
285
286 /**
287 * wordpress ajax for auxin customizer export
288 *
289 * @return json
290 */
291 function auxin_customizer_export(){
292
293 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'auxin-export-control' ) ) {
294 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
295 }
296
297 // Get theme options
298 $theme_options = auxin_options();
299
300 // Get theme mods
301 $theme_mods = get_theme_mods();
302 $filters = array( 0, 'nav_menu_locations', 'custom_css_post_id', 'last_checked_version' );
303 foreach ( $filters as $filter ) {
304 if ( isset( $theme_mods[ $filter ] ) ) {
305 unset( $theme_mods[ $filter ] );
306 }
307 }
308
309 if( empty( $theme_options ) && empty( $theme_mods ) ){
310 wp_send_json_error( __( 'No data found!', 'auxin-elements' ) );
311 }
312
313 $b64_content = base64_encode( maybe_serialize( array(
314 'theme_options' => $theme_options,
315 'theme_mods' => $theme_mods
316 ) ) );
317
318 wp_send_json_success( array(
319 'content' => $b64_content,
320 'fileName' => THEME_ID . '_export_' . current_time('timestamp') . '.txt'
321 ) );
322
323 }
324 add_action( 'wp_ajax_auxin_customizer_export', 'auxin_customizer_export' );
325
326
327 /**
328 * wordpress ajax for auxin customizer import
329 *
330 * @return json
331 */
332 function auxin_customizer_import(){
333 // Check security
334 if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'auxin-import-control' ) ) {
335 wp_send_json_error( __( 'Token Error.', 'auxin-elements' ) );
336 }
337
338 // Check input file
339 if ( ! isset( $_FILES['file'] ) || 0 < $_FILES['file']['error'] ) {
340 wp_send_json_error( __( 'Please upload a valid file.', 'auxin-elements' ) );
341 }
342
343 // Get and decode file content
344 global $wp_filesystem;
345 if ( empty($wp_filesystem) ) {
346 require_once( ABSPATH . '/wp-admin/includes/file.php' );
347 WP_Filesystem();
348 }
349 $json_content = $wp_filesystem->get_contents( $_FILES['file']['tmp_name'] );
350 $array_content = maybe_unserialize( base64_decode( $json_content ) );
351
352 // Check array empty
353 if ( empty( $array_content ) || ! is_array( $array_content ) ) {
354 wp_send_json_error( __( 'Invalid or Empty Data.', 'auxin-elements' ) );
355 }
356
357 if( isset( $array_content['theme_options'] ) ){
358 // Get image options names
359 $get_options = auxin_get_defined_options();
360 $custom_images = array();
361 foreach ( $get_options['fields'] as $key => $value ) {
362 if ( ! array_search( 'image', $value ) ) {
363 continue;
364 }
365 $custom_images[] = $value['id'];
366 }
367 // Update options
368 foreach ( $array_content['theme_options'] as $auxin_key => $auxin_value ) {
369 if ( in_array( $auxin_key, $custom_images ) && ! empty( $auxin_value ) ) {
370 continue;
371 }
372 // Update exclusive auxin options
373 auxin_update_option( $auxin_key , $auxin_value );
374 }
375 }
376
377 if( isset( $array_content['theme_mods'] ) ){
378 foreach ( $array_content['theme_mods'] as $theme_mods_key => $theme_mods_value ) {
379 // Start theme mods loop:
380 if( $theme_mods_key === 'custom_logo' ) {
381 continue;
382 }
383 // Update theme mods
384 set_theme_mod( $theme_mods_key , $theme_mods_value );
385 }
386 }
387
388 // force to flush dynamic asset files
389 delete_transient( 'auxin_' . AUXELS_SLUG . '_version' );
390
391 wp_send_json_success( __( 'Successfully Imported.', 'auxin-elements' ) );
392
393 }
394 add_action( 'wp_ajax_auxin_customizer_import', 'auxin_customizer_import' );
395
396
397 /**
398 * Ajax handler for auxin_template_library control to import template
399 *
400 * @return json
401 */
402 function auxin_template_control_importer() {
403 wp_send_json( auxin_template_importer( $_POST['id'], $_POST['template_type'], 'update_menu' ) );
404 }
405 add_action( 'wp_ajax_auxin_template_control_importer', 'auxin_template_control_importer' );
406