'', 'license_code' => '' ); $use_for = isset($_POST['use_for']) ? $_POST['use_for'] : ''; if(!empty($use_for)) { $use_for_key = md5($use_for); $option = get_option('fansub_plugin_licenses'); $customer_email = fansub_get_value_by_key($option, array($use_for_key, 'customer_email')); if(is_array($customer_email) || !is_email($customer_email)) { $customer_email = ''; } $license_code = fansub_get_value_by_key($option, array($use_for_key, 'license_code')); if(is_array($license_code) || strlen($license_code) < 5) { $license_code = ''; } $result['customer_email'] = $customer_email; $result['license_code'] = $license_code; update_option('test', $result); } echo json_encode($result); die(); } add_action('wp_ajax_fansub_fetch_plugin_license', 'fansub_fetch_plugin_license_ajax_callback'); function fansub_change_captcha_image_ajax_callback() { $result = array( 'success' => false ); $captcha = new FANSUB_Captcha(); $url = $captcha->generate_image(); if(!empty($url)) { $result['success'] = true; $result['captcha_image_url'] = $url; } else { $result['message'] = __('Sorry, cannot generate captcha image, please try again or contact administrator!', 'fansub'); } echo json_encode($result); die(); } add_action('wp_ajax_fansub_change_captcha_image', 'fansub_change_captcha_image_ajax_callback'); add_action('wp_ajax_nopriv_fansub_change_captcha_image', 'fansub_change_captcha_image_ajax_callback'); function fansub_vote_post_ajax_callback() { $result = array( 'success' => false ); $post_id = isset($_POST['post_id']) ? $_POST['post_id'] : ''; $post_id = absint($post_id); if($post_id > 0) { $type = isset($_POST['type']) ? $_POST['type'] : fansub_get_method_value('vote_type'); $session_name = 'fansub_vote_' . $type . '_post_' . $post_id; if(!isset($_SESSION[$session_name]) || 1 != $_SESSION[$session_name]) { $value = isset($_POST['value']) ? $_POST['value'] : ''; $value = absint($value); $value++; if('up' == $type || 'like' == $type) { update_post_meta($post_id, 'likes', $value); } elseif('down' == $type || 'dislike' == $type) { update_post_meta($post_id, 'dislikes', $value); } $result['value'] = $value; $result['type'] = $type; $result['post_id'] = $post_id; $result['value_html'] = number_format($value); $_SESSION[$session_name] = 1; $result['success'] = true; } } echo json_encode($result); die(); } add_action('wp_ajax_fansub_vote_post', 'fansub_vote_post_ajax_callback'); add_action('wp_ajax_nopriv_fansub_vote_post', 'fansub_vote_post_ajax_callback'); function fansub_favorite_post_ajax_callback() { $result = array( 'html_data' => '', 'success' => false, 'remove' => false ); $post_id = fansub_get_method_value('post_id'); if(fansub_id_number_valid($post_id) && is_user_logged_in()) { $user = wp_get_current_user(); $favorites = get_user_meta($user->ID, 'favorite_posts', true); if(!is_array($favorites)) { $favorites = array(); } if(!in_array($post_id, $favorites)) { $favorites[] = $post_id; } else { unset($favorites[array_search($post_id, $favorites)]); $result['remove'] = true; } $updated = update_user_meta($user->ID, 'favorite_posts', $favorites); if($updated) { $result['success'] = true; if($result['remove']) { $result['html_data'] = ' Lưu tin'; } else { $result['html_data'] = ' Bỏ lưu'; } } } wp_send_json($result); } add_action('wp_ajax_fansub_favorite_post', 'fansub_favorite_post_ajax_callback'); add_action('wp_ajax_nopriv_fansub_favorite_post', 'fansub_favorite_post_ajax_callback'); function fansub_sanitize_media_value_ajax_callback() { $id = isset($_POST['id']) ? $_POST['id'] : 0; $url = isset($_POST['url']) ? $_POST['url'] : ''; $result = array('id' => $id, 'url' => $url); $result = fansub_sanitize_media_value($result); echo json_encode($result); exit; } add_action('wp_ajax_fansub_sanitize_media_value', 'fansub_sanitize_media_value_ajax_callback'); add_action('wp_ajax_nopriv_fansub_sanitize_media_value', 'fansub_sanitize_media_value_ajax_callback'); function fansub_fetch_administrative_boundaries_ajax_callback() { $result = array(); $default = fansub_get_method_value('default'); $default = str_replace('\\', '', $default); //$type = fansub_get_method_value('type'); if(empty($default)) { } $html_data = $default; $parent = fansub_get_method_value('parent'); if(fansub_id_number_valid($parent)) { $taxonomy = fansub_get_method_value('taxonomy'); if(!empty($taxonomy)) { $terms = fansub_get_terms($taxonomy, array('parent' => $parent, 'orderby' => 'NAME')); if(fansub_array_has_value($terms)) { foreach($terms as $term) { $option = fansub_field_get_option(array('value' => $term->term_id, 'text' => $term->name)); $html_data .= $option; } } } } $result['html_data'] = $html_data; wp_send_json($result); } add_action('wp_ajax_fansub_fetch_administrative_boundaries', 'fansub_fetch_administrative_boundaries_ajax_callback'); add_action('wp_ajax_nopriv_fansub_fetch_administrative_boundaries', 'fansub_fetch_administrative_boundaries_ajax_callback'); function fansub_get_term_ajax_callback() { $term_id = fansub_get_method_value('term_id'); $result = array( 'term' => new WP_Error() ); if(fansub_id_number_valid($term_id)) { $taxonomy = fansub_get_method_value('taxonomy'); if(!empty($taxonomy)) { $result['term'] = get_term($term_id, $taxonomy); } } wp_send_json($result); } add_action('wp_ajax_fansub_get_term', 'fansub_get_term_ajax_callback'); add_action('wp_ajax_nopriv_fansub_get_term', 'fansub_get_term_ajax_callback'); function fansub_get_term_administrative_boundaries_address_ajax_callback() { $result = array( 'address' => '' ); $term_id = fansub_get_method_value('term_id'); if(fansub_id_number_valid($term_id)) { $taxonomy = fansub_get_method_value('taxonomy'); if(!empty($taxonomy)) { $term = get_term($term_id, $taxonomy); $address = $term->name; while($term->parent > 0) { $address .= ', '; $term = get_term($term->parent, $taxonomy); $address .= $term->name; } $address = rtrim($address, ', '); $result['address'] = $address; } } wp_send_json($result); } add_action('wp_ajax_fansub_get_term_administrative_boundaries_address', 'fansub_get_term_administrative_boundaries_address_ajax_callback'); add_action('wp_ajax_nopriv_fansub_get_term_administrative_boundaries_address', 'fansub_get_term_administrative_boundaries_address_ajax_callback'); function fansub_dashboard_widget_ajax_callback() { $result = array( 'html_data' => '' ); $widget = fansub_get_method_value('widget'); if(!empty($widget)) { $widgets = explode('_', $widget); array_shift($widgets); $widget = implode('_', $widgets); $callback = 'fansub_theme_dashboard_widget_' . $widget; if(fansub_callback_exists($callback)) { ob_start(); call_user_func($callback); $result['html_data'] = ob_get_clean(); } } wp_send_json($result); } add_action('wp_ajax_fansub_dashboard_widget', 'fansub_dashboard_widget_ajax_callback'); function fansub_social_login_facebook_ajax_callback() { $result = array( 'redirect_to' => '', 'logged_in' => false ); $data = fansub_get_method_value('data'); $data = fansub_json_string_to_array($data); $connect = (bool)fansub_get_method_value('connect'); if(fansub_array_has_value($data)) { $verified = (bool)fansub_get_value_by_key($data, 'verified'); $allow_not_verified = apply_filters('fansub_allow_social_user_signup_not_verified', true); if($verified || $allow_not_verified) { $id = fansub_get_value_by_key($data, 'id'); $requested_redirect_to = fansub_get_method_value('redirect_to'); $redirect_to = home_url('/'); $transient_name = 'fansub_social_login_facebook_' . md5($id); $user_id = get_transient($transient_name); $user = get_user_by('ID', $user_id); if($connect && is_user_logged_in()) { $user = wp_get_current_user(); $user_id = $user->ID; } $find_users = get_users(array('meta_key' => 'facebook', 'meta_value' => $id)); if(fansub_array_has_value($find_users)) { $user = $find_users[0]; $user_id = $user->ID; } if(false === $user_id || !fansub_id_number_valid($user_id) || !is_a($user, 'WP_User') || $connect) { $avatar = fansub_get_value_by_key($data, array('picture', 'data', 'url')); if($connect) { update_user_meta($user_id, 'facebook', $id); update_user_meta($user_id, 'facebook_data', $data); update_user_meta($user_id, 'avatar', $avatar); $result['redirect_to'] = get_edit_profile_url($user_id); $result['logged_in'] = true; } else { $email = fansub_get_value_by_key($data, 'email'); if(is_email($email)) { $name = fansub_get_value_by_key($data, 'name'); $first_name = fansub_get_value_by_key($data, 'first_name'); $last_name = fansub_get_value_by_key($data, 'last_name'); $password = wp_generate_password(); $user_id = null; if(username_exists($email)) { $user = get_user_by('login', $email); $user_id = $user->ID; } elseif(email_exists($email)) { $user = get_user_by('email', $email); $user_id = $user->ID; } $old_user = true; if(!fansub_id_number_valid($user_id)) { $user_data = array( 'username' => $email, 'email' => $email, 'password' => $password ); $user_id = fansub_add_user($user_data); if(fansub_id_number_valid($user_id)) { $old_user = false; } } if(fansub_id_number_valid($user_id)) { $user = get_user_by('id', $user_id); $redirect_to = apply_filters('login_redirect', $redirect_to, $requested_redirect_to, $user); if(!$old_user) { update_user_meta($user_id, 'facebook', $id); $user_data = array( 'ID' => $user_id, 'display_name' => $name, 'first_name' => $first_name, 'last_name' => $last_name ); wp_update_user($user_data); update_user_meta($user_id, 'avatar', $avatar); update_user_meta($user_id, 'facebook_data', $data); } fansub_user_force_login($user_id); $result['redirect_to'] = $redirect_to; $result['logged_in'] = true; set_transient($transient_name, $user_id, DAY_IN_SECONDS); } } } } else { update_user_meta($user_id, 'facebook_data', $data); $user = get_user_by('id', $user_id); $redirect_to = apply_filters('login_redirect', $redirect_to, $requested_redirect_to, $user); fansub_user_force_login($user_id); $result['redirect_to'] = $redirect_to; $result['logged_in'] = true; } } } wp_send_json($result); } add_action('wp_ajax_fansub_social_login_facebook', 'fansub_social_login_facebook_ajax_callback'); add_action('wp_ajax_nopriv_fansub_social_login_facebook', 'fansub_social_login_facebook_ajax_callback'); function fansub_social_login_google_ajax_callback() { $result = array( 'redirect_to' => '', 'logged_in' => false ); $data = fansub_get_method_value('data'); $data = fansub_json_string_to_array($data); $connect = fansub_get_method_value('connect'); if(fansub_array_has_value($data)) { $verified = (bool)fansub_get_value_by_key($data, 'verified'); $allow_not_verified = apply_filters('fansub_allow_social_user_signup_not_verified', true); if($verified || $allow_not_verified) { $id = fansub_get_value_by_key($data, 'id'); $requested_redirect_to = fansub_get_method_value('redirect_to'); $redirect_to = home_url('/'); $transient_name = 'fansub_social_login_google_' . md5($id); $user_id = get_transient($transient_name); $user = get_user_by('id', $user_id); if($connect && is_user_logged_in()) { $user = wp_get_current_user(); $user_id = $user->ID; } $find_users = get_users(array('meta_key' => 'google', 'meta_value' => $id)); if(fansub_array_has_value($find_users)) { $user = $find_users[0]; $user_id = $user->ID; } if(false === $user_id || !fansub_id_number_valid($user_id) || !is_a($user, 'WP_User') || $connect) { $avatar = fansub_get_value_by_key($data, array('image', 'url')); if($connect) { update_user_meta($user_id, 'google', $id); update_user_meta($user_id, 'avatar', $avatar); update_user_meta($user_id, 'google_data', $data); $result['redirect_to'] = get_edit_profile_url($user_id); $result['logged_in'] = true; } else { $email = fansub_get_value_by_key($data, array('emails', 0, 'value')); if(is_email($email)) { $name = fansub_get_value_by_key($data, 'displayName'); $first_name = fansub_get_value_by_key($data, array('name', 'givenName')); $last_name = fansub_get_value_by_key($data, array('name', 'familyName')); $password = wp_generate_password(); $user_id = null; if(username_exists($email)) { $user = get_user_by('login', $email); $user_id = $user->ID; } elseif(email_exists($email)) { $user = get_user_by('email', $email); $user_id = $user->ID; } $old_user = true; if(!fansub_id_number_valid($user_id)) { $user_data = array( 'username' => $email, 'email' => $email, 'password' => $password ); $user_id = fansub_add_user($user_data); if(fansub_id_number_valid($user_id)) { $old_user = false; } } if(fansub_id_number_valid($user_id)) { $user = get_user_by('id', $user_id); $redirect_to = apply_filters('login_redirect', $redirect_to, $requested_redirect_to, $user); if(!$old_user) { update_user_meta($user_id, 'google', $id); $user_data = array( 'ID' => $user_id, 'display_name' => $name, 'first_name' => $first_name, 'last_name' => $last_name ); wp_update_user($user_data); update_user_meta($user_id, 'avatar', $avatar); update_user_meta($user_id, 'google_data', $data); } fansub_user_force_login($user_id); $result['redirect_to'] = $redirect_to; $result['logged_in'] = true; set_transient($transient_name, $user_id, DAY_IN_SECONDS); } } } } else { update_user_meta($user_id, 'google_data', $data); $user = get_user_by('id', $user_id); $redirect_to = apply_filters('login_redirect', $redirect_to, $requested_redirect_to, $user); fansub_user_force_login($user_id); $result['redirect_to'] = $redirect_to; $result['logged_in'] = true; } } } wp_send_json($result); } add_action('wp_ajax_fansub_social_login_google', 'fansub_social_login_google_ajax_callback'); add_action('wp_ajax_nopriv_fansub_social_login_google', 'fansub_social_login_google_ajax_callback'); function fansub_disconnect_social_account_ajax_callback() { $social = fansub_get_method_value('social'); $user_id = fansub_get_method_value('user_id'); if(fansub_id_number_valid($user_id)) { switch($social) { case 'facebook': delete_user_meta($user_id, 'facebook'); delete_user_meta($user_id, 'facebook_data'); break; case 'google': delete_user_meta($user_id, 'google'); delete_user_meta($user_id, 'google_data'); break; } } exit; } add_action('wp_ajax_fansub_disconnect_social_account', 'fansub_disconnect_social_account_ajax_callback'); function fansub_compress_style_and_script_ajax_callback() { $result = array(); $type = fansub_get_method_value('type'); $type = fansub_json_string_to_array($type); $force_compress = fansub_get_method_value('force_compress'); $args = array( 'type' => $type, 'force_compress' => $force_compress ); fansub_compress_style_and_script($args); wp_send_json($result); } add_action('wp_ajax_fansub_compress_style_and_script', 'fansub_compress_style_and_script_ajax_callback');