Horriblesubs/custom/fansub-plugin-ajax.php

485 lines
20 KiB
PHP

<?php
if (!function_exists('add_filter')) exit;
if (!fansub_kntl_license_valid()) {
return;
}
function fansub_search_autocomplete_ajax_callback()
{
$term = isset($_REQUEST['term']) ? $_REQUEST['term'] : '';
$suggestions = array();
$args = array(
'post_type' => fansub_kntl_get_post_type(),
's' => $term,
'posts_per_page' => 10
);
$query = fansub_query($args);
$defaults = fansub_kntl_get_option_defaults();
$option_data = fansub_kntl_get_option();
$option_data = wp_parse_args($option_data, $defaults);
$single_page = fansub_get_value_by_key($option_data, 'single_page');
while ($query->have_posts()) {
$query->the_post();
$thumbnail_url = fansub_get_post_thumbnail_url();
$image_url = bfi_thumb($thumbnail_url, array('width' => 70, 'height' => 90, 'crop' => true));
$thumb_url = bfi_thumb($thumbnail_url, array('width' => 70, 'height' => 50, 'crop' => true));
$permalink = fansub_kntl_build_single_url($single_page, get_the_ID());
ob_start();
?>
<div data-url="<?php echo $permalink; ?>" class="list">
<a class="clearfix" href="<?php echo $permalink; ?>">
<span class="image"><img src="<?php echo $image_url; ?>"></span>
<span class="thumb"><img src="<?php echo $thumb_url; ?>"></span>
<div class="info">
<span class="text add-text"><?php the_title(); ?></span>
</div>
</a>
</div>
<?php
$post_html = ob_get_clean();
$suggestion = array(
'label' => get_the_title(),
'link' => get_permalink(),
'html' => $post_html
);
$suggestions[] = $suggestion;
}
wp_reset_postdata();
if ($query->have_posts()) {
$suggestion = array(
'label' => 'View more',
'link' => get_search_link($term)
);
$suggestions[] = $suggestion;
}
echo json_encode($suggestions);
exit;
}
add_action('wp_ajax_fansub_search_autocomplete', 'fansub_search_autocomplete_ajax_callback');
add_action('wp_ajax_nopriv_fansub_search_autocomplete', 'fansub_search_autocomplete_ajax_callback');
function fansub_kntl_video_list_ajax_callback()
{
$post_id = isset($_POST['post_id']) ? $_POST['post_id'] : 0;
$jwplayer = isset($_POST['jwplayer']) ? $_POST['jwplayer'] : false;
$result = array(
'have_posts' => false,
'has_data' => false
);
$html_data = '';
if (!(bool)$jwplayer) {
$video = fansub_query_post_by_meta('animation', $post_id, array('post_type' => 'video', 'posts_per_page' => -1), 'numeric');
$result['have_posts'] = $video->have_posts();
while ($video->have_posts()) {
$video->the_post();
$id = get_the_ID();
$fancy_id = 'videoBox' . $id;
$jwplayer_video_url = get_post_meta($id, '_jwppp-video-url-1', true);
ob_start();
$article = '<article ';
ob_start();
post_class('');
$article .= ob_get_clean();
$article .= ' data-id="' . get_the_ID() . '"';
if (current_theme_supports('fansub-schema')) {
ob_start();
fansub_html_tag_attributes('article', 'post');
$article .= ob_get_clean();
}
if (!empty($jwplayer_video_url)) {
$article .= ' data-jwplayer="1"';
} else {
$article .= ' data-jwplayer="0"';
}
$article .= '>';
$article = apply_filters('fansub_article_before', $article);
echo $article;
$custom_html = '<a href="#' . $fancy_id . '" class="fancy-link"><img class="icon-play" src="' . FANSUB_KNTL_URL . '/images/icon-play.png' . '"></a>';
fansub_post_thumbnail(array('width' => 260, 'height' => 146, 'crop' => true, 'custom_html' => $custom_html, 'permalink' => '#' . $fancy_id));
//fansub_post_title_link();
?>
<div id="<?php echo $fancy_id; ?>" class="video-fancy-box" style="display: none">
<?php
$only_member = get_post_meta($id, 'only_member', true);
if ((bool)$only_member) {
$actual_link = fansub_get_current_url();
if (is_user_logged_in()) {
the_content();
} else {
?>
<div class="center"
style="position: absolute; top: 40%; left: 50%; width: 220px; margin-left: -110px;">
<p>Bạn cần <a href="<?php echo wp_login_url($actual_link); ?>">login</a> để xem video này.
</p>
</div>
<?php
}
} else {
the_content();
}
?>
</div>
<?php
fansub_article_after();
$html_data .= ob_get_clean();
}
wp_reset_postdata();
} else {
$page = fansub_get_page_by_template('../jwplayer.php');
if (is_a($page, 'WP_Post')) {
$url = get_permalink($page);
$url = add_query_arg(array('post_id' => $post_id), $url);
$html_data = '<iframe src="' . $url . '" allowfullscreen webkitallowfullscreen mozallowfullscreen>';
$result['has_data'] = true;
}
}
$result['html_data'] = $html_data;
echo json_encode($result);
exit;
}
add_action('wp_ajax_fansub_kntl_video_list', 'fansub_kntl_video_list_ajax_callback');
add_action('wp_ajax_nopriv_fansub_kntl_video_list', 'fansub_kntl_video_list_ajax_callback');
function fansub_kntl_search_post_ajax_callback()
{
$refresh = isset($_POST['refresh']) ? $_POST['refresh'] : 0;
$default_query_vars = isset($_POST['default_query_vars']) ? $_POST['default_query_vars'] : array();
$default_query_vars = fansub_json_string_to_array($default_query_vars);
$box_type = isset($_POST['box_type']) ? $_POST['box_type'] : 'all';
$query_vars = isset($_POST['query_vars']) ? $_POST['query_vars'] : array();
$query_vars = fansub_json_string_to_array($query_vars);
$data = isset($_POST['options_data']) ? $_POST['options_data'] : array();
$data = fansub_json_string_to_array($data);
$load_more = isset($_POST['load_more']) ? $_POST['load_more'] : 0;
$search = isset($_POST['search']) ? $_POST['search'] : '';
$is_search = isset($_POST['is_search']) ? $_POST['is_search'] : 0;
$single = isset($_POST['single']) ? $_POST['single'] : 0;
if ((bool)$refresh) {
$query_vars = $default_query_vars;
}
$result = array(
'success' => false,
'more_post' => true
);
$data_post_not_in = fansub_get_value_by_key($query_vars, 'post__not_in');
if (!(bool)$load_more) {
if (!empty($search)) {
$query_vars['s'] = $search;
unset($query_vars['post__not_in']);
} else {
unset($query_vars['s']);
}
}
if ((bool)$is_search) {
$query_vars['s'] = $search;
}
$post_types = fansub_get_value_by_key($query_vars, 'post_type', 'episode');
$post_types = fansub_sanitize_array($post_types);
$date_format = isset($data['date_format']) ? $data['date_format'] : 'm/d';
$post_type = fansub_kntl_get_post_type();
$option_data = fansub_kntl_get_option();
$single_page = fansub_get_value_by_key($option_data, 'single_page');
if (fansub_array_has_value($default_query_vars)) {
$query_vars = $default_query_vars;
}
if ((bool)$refresh) {
//unset($query_vars['post__not_in']);
}
$query_args = $query_vars;
if ((bool)$is_search) {
$query_args['post_type'] = array('episode', 'batch');
if ('batch' == $box_type) {
$query_args['post_type'] = array('batch');
}
}
$query = fansub_query($query_args);
$post_count = $query->post_count;
$posts_per_page = $query->query_vars['posts_per_page'];
$html_items = '';
$post_not_in = $query->query_vars['post__not_in'];
$query_vars = $query->query_vars;
$result['have_posts'] = $query->have_posts();
$result['post_count'] = $post_count;
$result['posts_per_page'] = $posts_per_page;
if ($post_count < $posts_per_page) {
$result['more_post'] = false;
}
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
$post = get_post(get_the_ID());
$post_not_in[] = $post->ID;
$post_title = $post->post_title;
$post_link = '#';
$suffix = '';
$parts = array();
if ('episode' == $post->post_type) {
$parts = fansub_kntl_convert_post_title_to_parts($post->post_title);
array_shift($parts);
$parts = array_map('trim', $parts);
$animation_id = get_post_meta($post->ID, 'animation', true);
$animation = get_post($animation_id);
if (is_a($animation, 'WP_Post')) {
$post_title = $animation->post_title;
$post_link = fansub_kntl_build_single_url($single_page, $animation_id);
if (!fansub_array_has_value($parts)) {
}
$part = array_pop($parts);
if (!empty($part)) {
$suffix = '<span class="suffix">' . ' - ' . $part . '</span>';
}
}
// Giu nguyen episode title
if ((bool)$single) {
$post_title = $post->post_title;
$post_link = '#';
}
} elseif ('batch' == $post->post_type) {
$parts = fansub_kntl_convert_post_title_to_parts($post->post_title);
array_shift($parts);
$parts = array_map('trim', $parts);
$episode_id = get_post_meta($post->ID, 'episode', true);
if (is_numeric($episode_id) && $episode_id > 0) {
$animation_id = get_post_meta($episode_id, 'animation', true);
$animation = get_post($animation_id);
if (is_a($animation, 'WP_Post')) {
$post_title = $animation->post_title;
$post_link = fansub_kntl_build_single_url($single_page, $animation_id);
if (!fansub_array_has_value($parts)) {
}
$part = array_pop($parts);
if (!empty($part)) {
$tmp_part = array_pop($parts);
if (!empty($tmp_part)) {
$part = $tmp_part . '-' . $part;
}
$suffix = '<span class="suffix">' . ' - ' . $part . '</span>';
}
}
} else {
$animation_id = get_post_meta($post->ID, 'animation', true);
$animation = get_post($animation_id);
if (is_a($animation, 'WP_Post')) {
$post_title = $animation->post_title;
$post_link = fansub_kntl_build_single_url($single_page, $animation_id);
if (!fansub_array_has_value($parts)) {
}
$part = array_pop($parts);
if (!empty($part)) {
$tmp_part = array_pop($parts);
if (!empty($tmp_part)) {
$part = $tmp_part . '-' . $part;
}
$suffix = '<span class="suffix">' . ' - ' . $part . '</span>';
}
}
}
if ('batch' == $box_type || 'release' == $box_type) {
$post_title = $post->post_title;
}
} else {
$post_title = $post->post_title;
$post_link = fansub_kntl_build_single_url($single_page, $post->ID);
}
$link_html = new FANSUB_HTML('a');
if ((bool)$single) {
$link_html->use_only_text();
$post_title = '<span class="post-title-link">' . $post_title . '</span>';
}
$link_html->set_href($post_link);
$link_html->set_text($post_title);
$link_html->set_class('post-title-link');
$saved_suffix = get_post_meta($post->ID, 'suffix', true);
if ('batch' == $box_type || ('release' == $box_type && 'batch' == $post->post_type)) {
$suffix = '';
}
if (!empty($saved_suffix)) {
$suffix = '<span class="suffix">' . ' - ' . $saved_suffix . '</span>';
}
$post_title_text = $link_html->build();
if (!(bool)$single) {
$post_title_text .= $suffix;
}
$qs = fansub_ph_get_qualities_and_servers(get_the_ID());
$qualities = $qs['qualities'];
$servers = $qs['servers'];
ob_start();
?>
<li <?php post_class(sanitize_html_class($post->post_type)); ?>>
<ul class="list-cols">
<li class="col-date"><span class="post-date">(<?php echo get_the_date($date_format); ?>)</span></li>
<li class="col-title"><span class="post-title"><?php echo $post_title_text; ?></span></li>
<li class="col-download">
<ul class="list-qualities">
<?php foreach ($qualities as $quality) : ?>
<?php
$file_name_key = 'quality_' . $quality . '_file_name';
$file_name = get_post_meta($post->ID, $file_name_key, true);
if (empty($file_name)) {
if ('episode' == $post->post_type) {
$ep_am_id = get_post_meta($post->ID, 'animation', true);
if (fansub_id_number_valid($ep_am_id)) {
$ep_am = get_post($ep_am_id);
$file_name = $ep_am->post_title . ' [' . $quality . ']';
}
} elseif ('batch' == $post->post_type) {
$bt_ep_id = get_post_meta($post->ID, 'episode', true);
if (fansub_id_number_valid($bt_ep_id)) {
$ep_am_id = get_post_meta($bt_ep_id, 'animation', true);
if (fansub_id_number_valid($ep_am_id)) {
$ep_am = get_post($ep_am_id);
$file_name = $ep_am->post_title . ' [' . $quality . ']';
}
} else {
$ep_am_id = get_post_meta($post->ID, 'animation', true);
if (fansub_id_number_valid($ep_am_id)) {
$ep_am = get_post($ep_am_id);
$file_name = $ep_am->post_title . ' [' . $quality . ']';
}
}
}
} else {
if (!fansub_string_contain($file_name, $quality)) {
//$file_name .= ' [' . $quality . ']';
}
}
$quality_item_class = 'quality quality-' . $quality;
$server_items_html = '<li class="server-item file-name">' . $file_name . '</li>';
$server_items_html .= fansub_ph_servers_loop($servers, $quality, $post, $quality_item_class);
fansub_ph_quality_item_html($quality, $quality_item_class, $server_items_html);
?>
<?php endforeach; ?>
</ul>
</li>
</ul>
</li>
<?php
$html_items .= ob_get_clean();
}
wp_reset_postdata();
$result['html'] = $html_items;
if (!empty($html_items)) {
$result['success'] = true;
}
} else {
$result['no_post_msg'] = '<li>' . fansub_get_value_by_key($option_data, 'search_none_text') . '</li>';
}
if ((bool)$refresh) {
$query_vars['post__not_in'] = $data_post_not_in;
if ((bool)$single) {
$post_type = current($post_types);
if ('post' == $post_type) {
$query_vars['post_type'] = 'episode';
}
}
}
$query_vars['post__not_in'] = $post_not_in;
$result['query_vars'] = json_encode($query_vars);
echo json_encode($result);
die();
}
add_action('wp_ajax_fansub_kntl_search_post', 'fansub_kntl_search_post_ajax_callback');
add_action('wp_ajax_nopriv_fansub_kntl_search_post', 'fansub_kntl_search_post_ajax_callback');
function fansub_kntl_pagination_ajax_callback()
{
$result = array(
'success' => false,
'have_posts' => false,
'html' => ''
);
$query_vars = isset($_POST['query_vars']) ? $_POST['query_vars'] : array();
$query_vars = fansub_json_string_to_array($query_vars);
$paged = isset($_POST['paged']) ? $_POST['paged'] : 1;
$query_vars['paged'] = $paged;
$query = fansub_query($query_vars);
$defaults = fansub_kntl_get_option_defaults();
$option_data = fansub_kntl_get_option();
$option_data = wp_parse_args($option_data, $defaults);
$single_page = fansub_get_value_by_key($option_data, 'single_page');
if ($query->have_posts()) {
$result['have_posts'] = $query->have_posts();
$loop_html = '';
while ($query->have_posts()) {
$query->the_post();
$permalink = fansub_kntl_build_single_url($single_page, get_the_ID());
ob_start();
?>
<li <?php post_class(); ?>>
<?php
fansub_post_thumbnail(array('bfi_thumb' => false, 'lazyload' => true, 'before' => '<div class="anime-thumb">', 'after' => '</div>', 'permalink' => $permalink));
fansub_post_title_link(array('permalink' => $permalink));
fansub_entry_summary();
?>
</li>
<?php
$loop_html .= ob_get_clean();
}
wp_reset_postdata();
$result['html'] = $loop_html;
}
echo json_encode($result);
exit;
}
add_action('wp_ajax_fansub_kntl_pagination', 'fansub_kntl_pagination_ajax_callback');
add_action('wp_ajax_nopriv_fansub_kntl_pagination', 'fansub_kntl_pagination_ajax_callback');
function fansub_ph_check_post_password_ajax_callback()
{
$result = array(
'message' => 'Mật khẩu không đúng, xin vui lòng kiểm tra lại.',
'success' => false
);
$post_id = isset($_POST['post_id']) ? $_POST['post_id'] : '';
if (fansub_id_number_valid($post_id)) {
$post = get_post($post_id);
$password = isset($_POST['password']) ? $_POST['password'] : '';
if (post_password_required($post) && $post->post_password == $password) {
$result['success'] = true;
}
}
wp_send_json($result);
}
add_action('wp_ajax_fansub_ph_check_post_password', 'fansub_ph_check_post_password_ajax_callback');
add_action('wp_ajax_nopriv_fansub_ph_check_post_password', 'fansub_ph_check_post_password_ajax_callback');
function fansub_ph_get_shortlink_ajax_callback()
{
$result = array(
'success' => false,
'shortlink' => ''
);
$post_id = isset($_POST['post_id']) ? $_POST['post_id'] : '';
if (fansub_id_number_valid($post_id)) {
$shortlink = wp_get_shortlink($post_id);
$shortlink = md5($shortlink);
update_post_meta($post_id, 'shortlink', $shortlink);
$shortlink = home_url('/go/' . $shortlink);
$result['shortlink'] = $shortlink;
$result['success'] = true;
}
wp_send_json($result);
}
add_action('wp_ajax_fansub_ph_get_shortlink', 'fansub_ph_get_shortlink_ajax_callback');