474 lines
21 KiB
PHP
474 lines
21 KiB
PHP
<?php
|
|
if(!function_exists('add_filter')) exit;
|
|
|
|
function fansub_debug_log_ajax_callback() {
|
|
$object = fansub_get_method_value('object');
|
|
$object = fansub_json_string_to_array($object);
|
|
fansub_debug_log($object);
|
|
exit;
|
|
}
|
|
add_action('wp_ajax_fansub_debug_log', 'fansub_debug_log_ajax_callback');
|
|
add_action('wp_ajax_nopriv_fansub_debug_log', 'fansub_debug_log_ajax_callback');
|
|
|
|
function fansub_comment_likes_ajax_callback() {
|
|
$result = array();
|
|
$likes = isset($_POST['likes']) ? absint($_POST['likes']) : 0;
|
|
$comment_id = isset($_POST['comment_id']) ? absint($_POST['comment_id']) : 0;
|
|
$likes++;
|
|
update_comment_meta($comment_id, 'likes', $likes);
|
|
$result['likes'] = fansub_number_format($likes);
|
|
$_SESSION['comment_' . $comment_id . '_likes'] = 1;
|
|
echo json_encode($result);
|
|
die();
|
|
}
|
|
add_action('wp_ajax_fansub_comment_likes', 'fansub_comment_likes_ajax_callback');
|
|
add_action('wp_ajax_nopriv_fansub_comment_likes', 'fansub_comment_likes_ajax_callback');
|
|
|
|
function fansub_comment_report_ajax_callback() {
|
|
$result = array();
|
|
echo json_encode($result);
|
|
die();
|
|
}
|
|
add_action('wp_ajax_fansub_comment_report', 'fansub_comment_report_ajax_callback');
|
|
add_action('wp_ajax_nopriv_fansub_comment_report', 'fansub_comment_report_ajax_callback');
|
|
|
|
function fansub_fetch_plugin_license_ajax_callback() {
|
|
$result = array(
|
|
'customer_email' => '',
|
|
'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'] = '<i class="fa fa-heart-o"></i> Lưu tin';
|
|
} else {
|
|
$result['html_data'] = '<i class="fa fa-heart"></i> 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'); |