/home/arranoyd/magicraft/wp-content/plugins/imagify/inc/admin/ajax.php
<?php
defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
/**
* Process all thumbnails of a specific image with Imagify with the manual method.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_manual_upload' , '_do_admin_post_imagify_manual_upload' );
add_action( 'admin_post_imagify_manual_upload' , '_do_admin_post_imagify_manual_upload' );
function _do_admin_post_imagify_manual_upload() {
if ( defined( 'DOING_AJAX' ) ) {
check_ajax_referer( 'imagify-manual-upload' );
} else {
check_admin_referer( 'imagify-manual-upload' );
}
if ( ! isset( $_GET['attachment_id'], $_GET['context'] ) || ! current_user_can( 'upload_files' ) ) {
if ( defined( 'DOING_AJAX' ) ) {
wp_send_json_error();
} else {
wp_nonce_ays( '' );
}
}
$context = $_GET['context'];
$attachment_id = $_GET['attachment_id'];
$class_name = get_imagify_attachment_class_name( $_GET['context'] );
$attachment = new $class_name( $attachment_id );
// Optimize it!!!!!
$attachment->optimize();
if ( ! defined( 'DOING_AJAX' ) ) {
wp_safe_redirect( wp_get_referer() );
die();
}
// Return the optimization statistics
$output = get_imagify_attachment_optimization_text( $attachment, $context );
wp_send_json_success( $output );
}
/**
* Process a manual upload by overriding the optimization level.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_manual_override_upload', '_do_admin_post_imagify_manual_override_upload' );
add_action( 'admin_post_imagify_manual_override_upload', '_do_admin_post_imagify_manual_override_upload' );
function _do_admin_post_imagify_manual_override_upload() {
if ( defined( 'DOING_AJAX' ) ) {
check_ajax_referer( 'imagify-manual-override-upload' );
} else {
check_admin_referer( 'imagify-manual-override-upload' );
}
if ( ! isset( $_GET['attachment_id'], $_GET['context'] ) || ! current_user_can( 'upload_files' ) ) {
if ( defined( 'DOING_AJAX' ) ) {
wp_send_json_error();
} else {
wp_nonce_ays( '' );
}
}
$context = $_GET['context'];
$class_name = get_imagify_attachment_class_name( $context );
$attachment = new $class_name( $_GET['attachment_id'] );
// Restore the backup file
$attachment->restore();
// Optimize it!!!!!
$attachment->optimize( (int) $_GET['optimization_level'] );
if ( ! defined( 'DOING_AJAX' ) ) {
wp_safe_redirect( wp_get_referer() );
die();
}
// Return the optimization statistics
$output = get_imagify_attachment_optimization_text( $attachment, $context );
wp_send_json_success( $output );
}
/**
* Process a restoration to the original attachment.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_restore_upload', '_do_admin_post_imagify_restore_upload' );
add_action( 'admin_post_imagify_restore_upload', '_do_admin_post_imagify_restore_upload' );
function _do_admin_post_imagify_restore_upload() {
if ( defined( 'DOING_AJAX' ) ) {
check_ajax_referer( 'imagify-restore-upload' );
} else {
check_admin_referer( 'imagify-restore-upload' );
}
if ( ! isset( $_GET['attachment_id'], $_GET['context'] ) || ! current_user_can( 'upload_files' ) ) {
if ( defined( 'DOING_AJAX' ) ) {
wp_send_json_error();
} else {
wp_nonce_ays( '' );
}
}
$class_name = get_imagify_attachment_class_name( $_GET['context'] );
$attachment = new $class_name( $_GET['attachment_id'] );
// Restore the backup file
$attachment->restore();
if ( ! defined( 'DOING_AJAX' ) ) {
wp_safe_redirect( wp_get_referer() );
die();
}
// Return the optimization button
$output = '<a id="imagify-upload-' . $attachment->id . '" href="' . get_imagify_admin_url( 'manual-upload', array( 'attachment_id' => $attachment->id ) ) . '" class="button-primary button-imagify-manual-upload" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Optimize', 'imagify' ) . '</a>';
wp_send_json_success( $output );
}
/**
* Get all unoptimized attachment ids.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_get_unoptimized_attachment_ids', '_do_wp_ajax_imagify_get_unoptimized_attachment_ids' );
function _do_wp_ajax_imagify_get_unoptimized_attachment_ids() {
check_ajax_referer( 'imagify-bulk-upload', 'imagifybulkuploadnonce' );
if ( ! current_user_can( 'upload_files' ) ) {
wp_send_json_error();
}
if ( ! imagify_valid_key() ) {
wp_send_json_error( array( 'message' => 'invalid-api-key' ) );
}
$user = new Imagify_User();
if ( $user->is_over_quota() ) {
wp_send_json_error( array( 'message' => 'over-quota' ) );
}
@set_time_limit( 0 );
$optimization_level = $_GET['optimization_level'];
$optimization_level = ( -1 != $optimization_level ) ? $optimization_level : get_imagify_option( 'optimization_level', 1 );
$optimization_level = (int) $optimization_level;
$meta_query = array(
'relation' => 'OR',
array(
'key' => '_imagify_optimization_level',
'value' => $optimization_level,
'compare' => '!='
),
array(
'key' => '_imagify_optimization_level',
'compare' => 'NOT EXISTS'
),
array(
'key' => '_imagify_status',
'value' => 'error',
'compare' => '='
),
);
/**
* Filter the unoptimized attachments limit query
*
* @since 1.4.4
*
* @param int The limit (-1 for unlimited)
*/
$unoptimized_attachment_limit = apply_filters( 'imagify_unoptimized_attachment_limit', 10000 );
$args = array(
'fields' => 'ids',
'post_type' => 'attachment',
'post_status' => 'any',
'post_mime_type' => get_imagify_mime_type(),
'meta_query' => $meta_query,
'posts_per_page' => $unoptimized_attachment_limit,
'orderby' => 'ID',
'order' => 'DESC',
'no_found_rows' => true,
'update_post_term_cache' => false,
);
global $wpdb;
$data = array();
$attachments = new WP_Query( $args );
$ids = $attachments->posts;
$ids = array_filter( (array) $ids );
$sql_ids = implode( ',', $ids );
if ( empty( $sql_ids ) ) {
wp_send_json_error( array( 'message' => 'no-images' ) );
}
// Get attachments filename
$attachments_filename = $wpdb->get_results(
"SELECT pm.post_id as id, pm.meta_value as value
FROM $wpdb->postmeta as pm
WHERE pm.meta_key= '_wp_attached_file'
AND pm.post_id IN ($sql_ids)
ORDER BY pm.post_id DESC"
, ARRAY_A
);
$attachments_filename = imagify_query_results_combine( $ids, $attachments_filename );
// Get attachments data
$attachments_data = $wpdb->get_results(
"SELECT pm.post_id as id, pm.meta_value as value
FROM $wpdb->postmeta as pm
WHERE pm.meta_key= '_imagify_data'
AND pm.post_id IN ($sql_ids)
ORDER BY pm.post_id DESC"
, ARRAY_A
);
$attachments_data = imagify_query_results_combine( $ids, $attachments_data );
$attachments_data = array_map( 'maybe_unserialize', $attachments_data );
// Get attachments optimization level
$attachments_optimization_level = $wpdb->get_results(
"SELECT pm.post_id as id, pm.meta_value as value
FROM $wpdb->postmeta as pm
WHERE pm.meta_key= '_imagify_optimization_level'
AND pm.post_id IN ($sql_ids)
ORDER BY pm.post_id DESC"
, ARRAY_A
);
$attachments_optimization_level = imagify_query_results_combine( $ids, $attachments_optimization_level );
// Get attachments status
$attachments_status = $wpdb->get_results(
"SELECT pm.post_id as id, pm.meta_value as value
FROM $wpdb->postmeta as pm
WHERE pm.meta_key= '_imagify_status'
AND pm.post_id IN ($sql_ids)
ORDER BY pm.post_id DESC"
, ARRAY_A
);
$attachments_status = imagify_query_results_combine( $ids, $attachments_status );
// Save the optimization level in a transient to retrieve it later during the process
set_transient( 'imagify_bulk_optimization_level', $optimization_level );
foreach( $ids as $id ) {
/** This filter is documented in inc/functions/process.php */
$file_path = apply_filters( 'imagify_file_path', get_imagify_attached_file( $attachments_filename[ $id ] ) );
if ( file_exists( $file_path ) ) {
$attachment_data = ( isset( $attachments_data[ $id ] ) ) ? $attachments_data[ $id ] : false;
$attachment_error = '';
if ( isset( $attachment_data['sizes']['full']['error'] ) ) {
$attachment_error = $attachment_data['sizes']['full']['error'];
}
$attachment_error = trim( $attachment_error );
$attachment_status = ( isset( $attachments_status[ $id ] ) ) ? $attachments_status[ $id ] : false;
$attachment_optimization_level = ( isset( $attachments_optimization_level[ $id ] ) ) ? $attachments_optimization_level[ $id ] : false;
$attachment_backup_path = get_imagify_attachment_backup_path( $file_path );
// Don't try to re-optimize if the optimization level is still the same
if ( $optimization_level === $attachment_optimization_level && is_string( $attachment_error ) ) {
continue;
}
// Don't try to re-optimize if there is no backup file
if ( $optimization_level !== $attachment_optimization_level && ! file_exists( $attachment_backup_path ) && $attachment_status == 'success' ) {
continue;
}
// Don't try to re-optimize images already compressed
if ( $attachment_optimization_level >= $optimization_level && $attachment_status == 'already_optimized' ) {
continue;
}
// Don't try to re-optimize images with an empty error message
if ( $attachment_status == 'error' && empty( $attachment_error ) ) {
continue;
}
$data[ '_' . $id ] = get_imagify_attachment_url( $attachments_filename[ $id ] );
}
}
if ( (bool) $data ) {
wp_send_json_success( $data );
}
wp_send_json_error( array( 'message' => 'no-images' ) );
}
/**
* Process all thumbnails of a specific image with Imagify with the bulk method.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_bulk_upload', '_do_wp_ajax_imagify_bulk_upload' );
function _do_wp_ajax_imagify_bulk_upload() {
check_ajax_referer( 'imagify-bulk-upload', 'imagifybulkuploadnonce' );
if ( ! isset( $_POST['image'], $_POST['context'] ) || ! current_user_can( 'upload_files' ) ) {
wp_send_json_error();
}
$class_name = get_imagify_attachment_class_name( $_POST['context'] );
$attachment = new $class_name( $_POST['image'] );
$optimization_level = get_transient( 'imagify_bulk_optimization_level' );
// Restore it if the optimization level is updated
if ( $optimization_level !== $attachment->get_optimization_level() ) {
$attachment->restore();
}
// Optimize it!!!!!
$attachment->optimize( $optimization_level );
// Return the optimization statistics
$fullsize_data = $attachment->get_size_data();
$stats_data = $attachment->get_stats_data();
$user = new Imagify_User();
$data = array();
if ( ! $attachment->is_optimized() ) {
$data['success'] = false;
$data['error'] = $fullsize_data['error'];
wp_send_json_error( $data );
}
$data['success'] = true;
$data['original_size'] = $fullsize_data['original_size'];
$data['new_size'] = $fullsize_data['optimized_size'];
$data['percent'] = $fullsize_data['percent'];
$data['overall_saving'] = $stats_data['original_size'] - $stats_data['optimized_size'];
$data['original_overall_size'] = $stats_data['original_size'];
$data['new_overall_size'] = $stats_data['optimized_size'];
$data['thumbnails'] = $attachment->get_optimized_sizes_count();
wp_send_json_success( $data );
}
/**
* Create a new Imagify account.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_signup', '_do_wp_ajax_imagify_signup' );
function _do_wp_ajax_imagify_signup() {
check_ajax_referer( 'imagify-signup', 'imagifysignupnonce' );
if ( ! isset( $_GET['email'] ) ) {
wp_send_json_error();
}
$data = array(
'email' => $_GET['email'],
'password' => wp_generate_password( 12, false ),
'lang' => get_locale()
);
$response = add_imagify_user( $data );
if ( is_wp_error( $response ) ) {
wp_send_json_error( $response->get_error_message() );
}
wp_send_json_success();
}
/**
* Process an API key check validity.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_check_api_key_validity', '_do_wp_ajax_imagify_check_api_key_validity' );
function _do_wp_ajax_imagify_check_api_key_validity() {
check_ajax_referer( 'imagify-check-api-key', 'imagifycheckapikeynonce' );
if ( ! isset( $_GET['api_key'] ) ) {
wp_send_json_error();
}
$response = get_imagify_status( $_GET['api_key'] );
if ( is_wp_error( $response ) ) {
wp_send_json_error( $response->get_error_message() );
}
$options = get_site_option( IMAGIFY_SETTINGS_SLUG );
$options['api_key'] = sanitize_key( $_GET['api_key'] );
update_site_option( IMAGIFY_SETTINGS_SLUG, $options );
wp_send_json_success();
}
/**
* Process a dismissed notice.
*
* @since 1.0
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_dismiss_notice', '_do_admin_post_imagify_dismiss_notice' );
add_action( 'admin_post_imagify_dismiss_notice', '_do_admin_post_imagify_dismiss_notice' );
function _do_admin_post_imagify_dismiss_notice() {
if ( defined( 'DOING_AJAX' ) ) {
check_ajax_referer( 'imagify-dismiss-notice' );
} else {
check_admin_referer( 'imagify-dismiss-notice' );
}
if ( ! isset( $_GET['notice'] ) || ! current_user_can( 'manage_options' ) ) {
if ( defined( 'DOING_AJAX' ) ) {
wp_send_json_error();
} else {
wp_nonce_ays( '' );
}
}
$notice = $_GET['notice'];
imagify_dismiss_notice( $notice );
/**
* Fires when a notice is dismissed.
*
* @since 1.4.2
*
* @param int $notice The notice slug
*/
do_action( 'imagify_dismiss_notice', $notice );
if ( ! defined( 'DOING_AJAX' ) ) {
wp_safe_redirect( wp_get_referer() );
die();
}
wp_send_json_success();
}
/**
* Disable a plugin which can be in conflict with Imagify
*
* @since 1.2
* @author Jonathan Buttigieg
*/
add_action( 'admin_post_imagify_deactivate_plugin', '_imagify_deactivate_plugin' );
function _imagify_deactivate_plugin() {
if ( ! wp_verify_nonce( $_GET['_wpnonce'], 'imagifydeactivatepluginnonce' ) ) {
wp_nonce_ays( '' );
}
deactivate_plugins( $_GET['plugin'] );
wp_safe_redirect( wp_get_referer() );
die();
}
/**
* Get admin bar profile output
*
* @since 1.2.3
* @author Jonathan Buttigieg
*/
add_action( 'wp_ajax_imagify_get_admin_bar_profile', '_do_wp_ajax_imagify_get_admin_bar_profile' );
function _do_wp_ajax_imagify_get_admin_bar_profile() {
check_ajax_referer( 'imagify-get-admin-bar-profile', 'imagifygetadminbarprofilenonce' );
$user = new Imagify_User();
$unconsumed_quota = $user->get_percent_unconsumed_quota();
$meteo_icon = '<img src="' . IMAGIFY_ASSETS_IMG_URL . 'sun.svg" width="37" height="38" alt="" />';
$bar_class = 'positive';
$message = '';
if ( $unconsumed_quota >= 21 && $unconsumed_quota <= 50 ) {
$bar_class = 'neutral';
$meteo_icon = '<img src="' . IMAGIFY_ASSETS_IMG_URL . 'cloudy-sun.svg" width="37" height="38" alt="" />';
}
elseif ( $unconsumed_quota <= 20 ) {
$bar_class = 'negative';
$meteo_icon = '<img src="' . IMAGIFY_ASSETS_IMG_URL . 'stormy.svg" width="38" height="36" alt="" />';
}
if ( $unconsumed_quota <= 20 && $unconsumed_quota > 0 ) {
$message = '
<div class="imagify-error">
<p><i class="dashicons dashicons-warning" aria-hidden="true"></i><strong>' . __( 'Oops, It\'s almost over!', 'imagify' ) . '</strong></p>
<p>' . sprintf( __( 'You have almost used all your credit.%sDon\'t forget to upgrade your subscription to continue optimizing your images.', 'imagify' ), '<br/><br/>' ) . '</p>
<p class="center txt-center text-center"><a class="btn btn-ghost" href="' . IMAGIFY_APP_MAIN . '/#/subscription" target="_blank">' . __( 'View My Subscription', 'imagify' ) . '</a></p>
</div>
';
}
if ( $unconsumed_quota === 0 ) {
$message = '
<div class="imagify-error">
<p><i class="dashicons dashicons-warning" aria-hidden="true"></i><strong>' . __( 'Oops, It\'s Over!', 'imagify' ) . '</strong></p>
<p>' . sprintf( __( 'You have consumed all your credit for this month. You will have <strong>%s back on %s</strong>.', 'imagify' ), size_format( $user->quota * 1048576 ), date_i18n( get_option( 'date_format' ), strtotime( $user->next_date_update ) ) ) . '</p>
<p class="center txt-center text-center"><a class="btn btn-ghost" href="' . IMAGIFY_APP_MAIN . '/#/subscription" target="_blank">' . __( 'Upgrade My Subscription', 'imagify' ) . '</a></p>
</div>
';
}
// custom HTML
$quota_section = '
<div class="imagify-admin-bar-quota">
<div class="imagify-abq-row">';
if ( 1 === $user->plan_id ) {
$quota_section .= '
<div class="imagify-meteo-icon">
' . $meteo_icon . '
</div>';
}
$quota_section .= '
<div class="imagify-account">
<p class="imagify-meteo-title">' . __( 'Account status', 'imagify' ) . '</p>
<p class="imagify-meteo-subs">' . __( 'Your subscription:', 'imagify' ) . ' <strong class="imagify-user-plan">' . $user->plan_label . '</strong></p>
</div>
</div>';
if ( 1 === $user->plan_id ) {
$quota_section .= '
<div class="imagify-abq-row">
<div class="imagify-space-left">
<p>' . sprintf( __( 'You have %s space credit left', 'imagify'), '<span class="imagify-unconsumed-percent">' . $unconsumed_quota . '%</span>' ) . '</p>
<div class="imagify-bar-' . $bar_class . '">
<div style="width: ' . $unconsumed_quota . '%;" class="imagify-unconsumed-bar imagify-progress"></div>
</div>
</div>
</div>';
}
$quota_section .= '
<p class="imagify-abq-row">
<a class="imagify-account-link" href="' . IMAGIFY_APP_MAIN . '/#/subscription" target="_blank">
<span class="dashicons dashicons-admin-users"></span>
<span class="button-text">' . __( 'View my subscription', 'imagify' ) . '</span>
</a>
</p>
</div>
' . $message;
wp_send_json_success( $quota_section );
}
/**
* Optimize image on picture uploading with async request
*
* @since 1.5
* @author Julio Potier
**/
add_action( 'wp_ajax_imagify_async_optimize_upload_new_media', '_do_admin_post_async_optimize_upload_new_media' );
function _do_admin_post_async_optimize_upload_new_media() {
if ( isset( $_POST['_ajax_nonce'], $_POST['attachment_id'], $_POST['metadata'], $_POST['context'] )
&& check_ajax_referer( 'new_media-' . $_POST['attachment_id'] )
) {
$class_name = get_imagify_attachment_class_name( $_POST['context'] );
$attachment = new $class_name( $_POST['attachment_id'] );
// Optimize it!!!!!
$attachment->optimize( null, $_POST['metadata'] );
die( 1 );
}
}
/**
* Optimize image on picture editing with async request
*
* @since 1.4
* @author Julio Potier
**/
add_action( 'wp_ajax_imagify_async_optimize_save_image_editor_file', '_do_admin_post_async_optimize_save_image_editor_file' );
function _do_admin_post_async_optimize_save_image_editor_file() {
if ( isset( $_POST['do'], $_POST['postid'] )
&& check_ajax_referer( 'image_editor-' . $_POST['postid'] )
&& get_post_meta( $_POST['postid'], '_imagify_data', true )
) {
$attachment_id = $_POST['postid'];
$optimization_level = get_post_meta( $attachment_id, '_imagify_optimization_level', true );
$attachment = new Imagify_Attachment( $attachment_id );
$metadata = wp_get_attachment_metadata( $attachment_id );
// Remove old optimization data
delete_post_meta( $attachment_id, '_imagify_data' );
delete_post_meta( $attachment_id, '_imagify_status' );
delete_post_meta( $attachment_id, '_imagify_optimization_level' );
if ( 'restore' === $_POST['do'] ) {
// Restore the backup file
$attachment->restore();
// Get old metadata to regenerate all thumbnails
$metadata = array( 'sizes' => array() );
$backup_sizes = (array) get_post_meta( $attachment_id, '_wp_attachment_backup_sizes', true );
foreach ( $backup_sizes as $size_key => $size_data ) {
$size_key = str_replace( '-origin', '' , $size_key );
$metadata['sizes'][ $size_key ] = $size_data;
}
}
// Optimize it!!!!!
$attachment->optimize( $optimization_level, $metadata );
die( 1 );
}
}
/**
* Get pricings from API for Onetime and Plans at the same time
*
* @return JSON WP formatted answer
*
* @since 1.6
* @author Geoffrey Crofte
*/
add_action( 'wp_ajax_imagify_get_prices', '_imagify_get_prices_from_api' );
function _imagify_get_prices_from_api() {
if ( check_ajax_referer( 'imagify_get_pricing_' . get_current_user_id(), 'imagifynonce', false) ) {
$prices = array();
$prices_all = get_imagify_all_prices();
if ( is_object( $prices_all ) ) {
$prices['onetimes'] = $prices_all -> Packs;
$prices['monthlies'] = $prices_all -> Plans;
wp_send_json_success( $prices );
}
else {
wp_send_json_error( 'Prices variable is not an object' );
}
} else {
wp_send_json_error( 'check_ajax_referer for prices failed' );
}
}
/**
* Check Coupon code on modal popin
*
* @return JSON WP formatted answer
*
* @since 1.6
* @author Geoffrey Crofte
*/
add_action( 'wp_ajax_imagify_check_coupon', '_imagify_check_coupon_code' );
function _imagify_check_coupon_code() {
if ( check_ajax_referer( 'imagify_get_pricing_' . get_current_user_id(), 'imagifynonce', false) ) {
$coupon_response = check_imagify_coupon_code( $_POST[ 'coupon' ] );
wp_send_json_success( $coupon_response );
} else {
wp_send_json_error( 'check_ajax_referer for coupon code checking failed' );
}
}
/**
* Get estimated sizes from the WordPress library
*
* @return JSON WP formatted answer
*
* @since 1.6
* @author Geoffrey Crofte
*/
add_action( 'wp_ajax_imagify_get_images_counts', '_imagify_get_estimated_sizes' );
function _imagify_get_estimated_sizes() {
if ( check_ajax_referer( 'imagify_get_pricing_' . get_current_user_id(), 'imagifynonce', false) ) {
$raw_total_size_in_library = imagify_calculate_total_size_images_library();
$raw_average_per_month = imagify_calculate_average_size_images_per_month();
update_imagify_option( 'total_size_images_library', array( 'raw' => $raw_total_size_in_library, 'human' => size_format( $raw_total_size_in_library ) ) );
update_imagify_option( 'average_size_images_per_month', array( 'raw' => $raw_average_per_month, 'human' => size_format( $raw_average_per_month ) ) );
$images = array(
'total_library_size' => get_imagify_option( 'total_size_images_library', null ),
'average_month_size' => get_imagify_option( 'average_size_images_per_month', null )
);
wp_send_json_success( $images );
} else {
wp_send_json_error( 'check_ajax_referer for estimated image sizes failed' );
}
}
/**
* Get current discount promotion to display information on payment modal
*
* @return JSON WP formatted answer
*
* @since 1.6.3
* @author Geoffrey Crofte
*/
add_action( 'wp_ajax_imagify_get_discount', '_imagify_get_discount' );
function _imagify_get_discount() {
if ( check_ajax_referer( 'imagify_get_pricing_' . get_current_user_id(), 'imagifynonce', false) ) {
$discount = check_imagify_discount();
wp_send_json_success( $discount );
} else {
wp_send_json_error( 'check_ajax_referer for getting discount failed' );
}
}
/**
* Estimate sizes and update the options values for them
*
* @since 1.6
* @author Remy Perona
*/
add_action( 'wp_ajax_imagify_update_estimate_sizes', '_imagify_update_estimate_sizes' );
function _imagify_update_estimate_sizes() {
if ( ! isset( $_POST['_ajax_nonce'] ) ) {
die();
}
if ( ! check_ajax_referer( 'update_estimate_sizes' ) ) {
die();
}
$raw_total_size_in_library = imagify_calculate_total_size_images_library();
$raw_average_per_month = imagify_calculate_average_size_images_per_month();
update_imagify_option( 'total_size_images_library', array( 'raw' => $raw_total_size_in_library, 'human' => size_format( $raw_total_size_in_library ) ) );
update_imagify_option( 'average_size_images_per_month', array( 'raw' => $raw_average_per_month, 'human' => size_format( $raw_average_per_month ) ) );
die( 1 );
}