187 lines
9.3 KiB
PHP
187 lines
9.3 KiB
PHP
|
<?php
|
||
|
if(!function_exists('add_filter')) exit;
|
||
|
function fansub_comment_wp_insert_comment($comment_id, $comment_object) {
|
||
|
|
||
|
}
|
||
|
add_action('wp_insert_comment', 'fansub_comment_wp_insert_comment', 10, 2);
|
||
|
|
||
|
function fansub_comment_transition_comment_status($new_status, $old_status, $comment) {
|
||
|
if($old_status != $new_status) {
|
||
|
if('approved' === $new_status) {
|
||
|
do_action('fansub_comment_approved', $comment);
|
||
|
$notify_me = get_comment_meta($comment->comment_ID, 'notify_me', true);
|
||
|
if(!empty($notify_me)) {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
fansub_delete_transient('fansub_top_commenters');
|
||
|
do_action('fansub_comment_status_changed', $comment);
|
||
|
}
|
||
|
}
|
||
|
add_action('transition_comment_status', 'fansub_comment_transition_comment_status', 10, 3);
|
||
|
|
||
|
function fansub_comment_form_default_fields($fields) {
|
||
|
$commenter = wp_get_current_commenter();
|
||
|
$user = wp_get_current_user();
|
||
|
$user_identity = $user->exists() ? $user->display_name : '';
|
||
|
$format = current_theme_supports('html5', 'comment-form') ? 'html5' : 'xhtml';
|
||
|
$format = apply_filters('fansub_comment_form_format', $format);
|
||
|
$req = get_option('require_name_email');
|
||
|
$aria_req = ($req ? "aria-required='true'" : '');
|
||
|
$html_req = ($req ? "required='required'" : '');
|
||
|
$required_html = '';
|
||
|
fansub_add_string_with_space_before($required_html, $aria_req);
|
||
|
fansub_add_string_with_space_before($required_html, $html_req);
|
||
|
$html5 = 'html5' === $format;
|
||
|
$fields = array(
|
||
|
'author' => '<p class="comment-form-author">' . '<label for="author">' . __('Name', 'fansub') . ($req ? ' <span class="required">*</span>' : '') . '</label> ' .
|
||
|
'<input id="author" name="author" type="text" value="' . esc_attr($commenter['comment_author']) . '" size="30" ' . $required_html . ' /></p>',
|
||
|
'email' => '<p class="comment-form-email"><label for="email">' . __('Email', 'fansub') . ($req ? ' <span class="required">*</span>' : '') . '</label> ' .
|
||
|
'<input id="email" name="email" ' . ($html5 ? 'type="email"' : 'type="text"') . ' value="' . esc_attr($commenter['comment_author_email']) . '" size="30" aria-describedby="email-notes" ' . $required_html . ' /></p>',
|
||
|
'url' => '<p class="comment-form-url"><label for="url">' . __('Website', 'fansub') . '</label> ' .
|
||
|
'<input id="url" name="url" ' . ($html5 ? 'type="url"' : 'type="text"') . ' value="' . esc_attr($commenter['comment_author_url']) . '" size="30" /></p>',
|
||
|
);
|
||
|
return $fields;
|
||
|
}
|
||
|
add_filter('comment_form_default_fields', 'fansub_comment_form_default_fields');
|
||
|
|
||
|
function fansub_comment_form_defaults($defaults) {
|
||
|
$commenter = wp_get_current_commenter();
|
||
|
$user = wp_get_current_user();
|
||
|
$user_identity = $user->exists() ? $user->display_name : '';
|
||
|
$format = current_theme_supports('html5', 'comment-form') ? 'html5' : 'xhtml';
|
||
|
$format = apply_filters('fansub_comment_form_format', $format);
|
||
|
$req = get_option('require_name_email');
|
||
|
$aria_req = ($req ? " aria-required='true'" : '');
|
||
|
$html_req = ($req ? " required='required'" : '');
|
||
|
$required_text = sprintf(' ' . __('Required fields are marked %s', 'fansub'), '<span class="required">*</span>');
|
||
|
$html5 = 'html5' === $format;
|
||
|
$defaults = array(
|
||
|
'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x('Comment', 'noun') . '</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true" required="required"></textarea></p>',
|
||
|
'must_log_in' => '<p class="must-log-in">' . sprintf(__('You must be <a href="%s">logged in</a> to post a comment.', 'fansub'), wp_login_url(apply_filters('the_permalink', get_permalink(get_the_ID())))) . '</p>',
|
||
|
'logged_in_as' => '<p class="logged-in-as">' . sprintf(__('Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>', 'fansub'), get_edit_user_link(), $user_identity, wp_logout_url(apply_filters('the_permalink', get_permalink(get_the_ID())))) . '</p>',
|
||
|
'comment_notes_before' => '<p class="comment-notes"><span id="email-notes">' . __('Your email address will not be published.', 'fansub') . '</span>'. ($req ? $required_text : '') . '</p>',
|
||
|
'comment_notes_after' => '',
|
||
|
'id_form' => 'commentform',
|
||
|
'id_submit' => 'submit',
|
||
|
'class_submit' => 'submit',
|
||
|
'name_submit' => 'submit',
|
||
|
'title_reply' => '<span class="title-text">' . __('Leave a Reply', 'fansub') . '</span>',
|
||
|
'title_reply_to' => __('Leave a Reply to %s', 'fansub'),
|
||
|
'cancel_reply_link' => __('Click here to cancel reply.', 'fansub'),
|
||
|
'label_submit' => __('Post Comment', 'fansub'),
|
||
|
'submit_button' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />',
|
||
|
'submit_field' => '<p class="form-submit">%1$s %2$s</p>',
|
||
|
'format' => 'html5'
|
||
|
);
|
||
|
return $defaults;
|
||
|
}
|
||
|
add_filter('comment_form_defaults', 'fansub_comment_form_defaults');
|
||
|
|
||
|
function fansub_wp_list_comments_args($args) {
|
||
|
$args['reply_text'] = '<i class="fa fa-reply"></i><span class="text">' . __('Reply', 'fansub') . '</span>';
|
||
|
return $args;
|
||
|
}
|
||
|
add_filter('wp_list_comments_args', 'fansub_wp_list_comments_args', 10);
|
||
|
|
||
|
function fansub_get_comment_likes($comment_id) {
|
||
|
$result = get_comment_meta($comment_id, 'likes', true);
|
||
|
$result = absint($result);
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
function fansub_facebook_comment($args = array()) {
|
||
|
$args = apply_filters('fansub_facebook_comment_args', $args);
|
||
|
$colorscheme = isset($args['colorscheme']) ? $args['colorscheme'] : 'light';
|
||
|
$colorscheme = apply_filters('fansub_facebook_comment_colorscheme', $colorscheme, $args);
|
||
|
$href = isset($args['href']) ? $args['href'] : '';
|
||
|
if(empty($href)) {
|
||
|
if(is_single() || is_page() || is_singular()) {
|
||
|
$href = get_the_permalink();
|
||
|
}
|
||
|
}
|
||
|
if(empty($href)) {
|
||
|
$href = $this->get_current_url();
|
||
|
}
|
||
|
$href = apply_filters('fansub_facebook_comment_href', $href, $args);
|
||
|
$mobile = isset($args['mobile']) ? $args['mobile'] : '';
|
||
|
$num_posts = isset($args['num_posts']) ? $args['num_posts'] : 10;
|
||
|
$num_posts = apply_filters('fansub_facebook_comment_num_posts', $num_posts, $args);
|
||
|
$order_by = isset($args['order_by']) ? $args['order_by'] : 'social';
|
||
|
$width = isset($args['width']) ? $args['width'] : '100%';
|
||
|
$width = apply_filters('fansub_facebook_comment_width', $width, $args);
|
||
|
$loading_text = fansub_get_value_by_key($args, 'loading_text', __('Loading...', 'fansub'));
|
||
|
$div = new FANSUB_HTML('div');
|
||
|
$div->set_class('fb-comments');
|
||
|
$atts = array(
|
||
|
'data-colorscheme' => $colorscheme,
|
||
|
'data-href' => $href,
|
||
|
'data-mobile' => $mobile,
|
||
|
'data-numposts' => $num_posts,
|
||
|
'data-order-by' => $order_by,
|
||
|
'data-width' => $width
|
||
|
);
|
||
|
$atts = apply_filters('fansub_facebook_comment_attributes', $atts, $args);
|
||
|
$div->set_attribute_array($atts);
|
||
|
$div->set_text($loading_text);
|
||
|
$div->output();
|
||
|
}
|
||
|
|
||
|
function fansub_google_comment() {
|
||
|
?>
|
||
|
<script src="https://apis.google.com/js/plusone.js"></script>
|
||
|
<div id="google_comments"><?php _e('Loading...', 'fansub'); ?></div>
|
||
|
<script>
|
||
|
gapi.comments.render('google_comments', {
|
||
|
href: window.location,
|
||
|
width: '624',
|
||
|
first_party_property: 'BLOGGER',
|
||
|
view_type: 'FILTERED_POSTMOD'
|
||
|
});
|
||
|
</script>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
function fansub_get_top_commenters($number = 5, $time = 'all', $condition = '') {
|
||
|
$transient_name = 'fansub_top_commenters_' . $time . '_' . $number;
|
||
|
$transient_name = fansub_sanitize_id($transient_name);
|
||
|
if(false === ($results = get_transient($transient_name))) {
|
||
|
global $wpdb;
|
||
|
$sql = 'SELECT COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url, user_id FROM ' . $wpdb->comments . '
|
||
|
WHERE comment_author_email != "" AND comment_type = "" AND comment_approved = 1';
|
||
|
$expires = HOUR_IN_SECONDS;
|
||
|
switch($time) {
|
||
|
case 'today':
|
||
|
$sql .= ' AND DAY(comment_date) = DAY(CURDATE()) AND MONTH(comment_date) = MONTH(CURDATE()) AND YEAR(comment_date) = YEAR(CURDATE())';
|
||
|
break;
|
||
|
case 'week':
|
||
|
case 'this_week':
|
||
|
$sql .= ' AND YEARWEEK(comment_date) = YEARWEEK(NOW())';
|
||
|
$expires = 12 * HOUR_IN_SECONDS;
|
||
|
break;
|
||
|
case 'month':
|
||
|
case 'this_month':
|
||
|
$sql .= ' AND MONTH(comment_date) = MONTH(CURDATE()) AND YEAR(comment_date) = YEAR(CURDATE())';
|
||
|
$expires = DAY_IN_SECONDS;
|
||
|
break;
|
||
|
case 'year':
|
||
|
case 'this_year':
|
||
|
$sql .= ' AND YEAR(comment_date) = YEAR(CURDATE())';
|
||
|
$expires = 2 * DAY_IN_SECONDS;
|
||
|
break;
|
||
|
}
|
||
|
$condition = trim($condition);
|
||
|
if(!empty($condition)) {
|
||
|
$sql .= ' ' . $condition;
|
||
|
}
|
||
|
$sql .= ' GROUP BY comment_author_email ORDER BY comments_count DESC, comment_author ASC LIMIT ' . $number;
|
||
|
$results = $wpdb->get_results($sql);
|
||
|
set_transient($transient_name, $results, $expires);
|
||
|
}
|
||
|
return $results;
|
||
|
}
|
||
|
|
||
|
function fansub_comment_inserted_hook($id, $comment) {
|
||
|
fansub_delete_transient('fansub_top_commenters');
|
||
|
}
|
||
|
add_action('wp_insert_comment', 'fansub_comment_inserted_hook', 10, 2);
|