Reorg comment functions. #2525
git-svn-id: http://svn.automattic.com/wordpress/trunk@3714 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
d650991531
commit
6027cfa946
|
@ -0,0 +1,370 @@
|
|||
<?php
|
||||
/*
|
||||
* Comment template functions.
|
||||
*/
|
||||
|
||||
function get_comment_author() {
|
||||
global $comment;
|
||||
if ( empty($comment->comment_author) )
|
||||
$author = __('Anonymous');
|
||||
else
|
||||
$author = $comment->comment_author;
|
||||
return apply_filters('get_comment_author', $author);
|
||||
}
|
||||
|
||||
function comment_author() {
|
||||
$author = apply_filters('comment_author', get_comment_author() );
|
||||
echo $author;
|
||||
}
|
||||
|
||||
function get_comment_author_email() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_author_email', $comment->comment_author_email);
|
||||
}
|
||||
|
||||
function comment_author_email() {
|
||||
echo apply_filters('author_email', get_comment_author_email() );
|
||||
}
|
||||
|
||||
function comment_author_email_link($linktext='', $before='', $after='') {
|
||||
global $comment;
|
||||
$email = apply_filters('comment_email', $comment->comment_author_email);
|
||||
if ((!empty($email)) && ($email != '@')) {
|
||||
$display = ($linktext != '') ? $linktext : $email;
|
||||
echo $before;
|
||||
echo "<a href='mailto:$email'>$display</a>";
|
||||
echo $after;
|
||||
}
|
||||
}
|
||||
|
||||
function get_comment_author_link() {
|
||||
global $comment;
|
||||
$url = get_comment_author_url();
|
||||
$author = get_comment_author();
|
||||
|
||||
if ( empty( $url ) || 'http://' == $url )
|
||||
$return = $author;
|
||||
else
|
||||
$return = "<a href='$url' rel='external nofollow'>$author</a>";
|
||||
return apply_filters('get_comment_author_link', $return);
|
||||
}
|
||||
|
||||
function comment_author_link() {
|
||||
echo get_comment_author_link();
|
||||
}
|
||||
|
||||
function get_comment_author_IP() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_author_IP', $comment->comment_author_IP);
|
||||
}
|
||||
|
||||
function comment_author_IP() {
|
||||
echo get_comment_author_IP();
|
||||
}
|
||||
|
||||
function get_comment_author_url() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_author_url', $comment->comment_author_url);
|
||||
}
|
||||
|
||||
function comment_author_url() {
|
||||
echo apply_filters('comment_url', get_comment_author_url());
|
||||
}
|
||||
|
||||
function get_comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
|
||||
global $comment;
|
||||
$url = get_comment_author_url();
|
||||
$display = ($linktext != '') ? $linktext : $url;
|
||||
$return = "$before<a href='$url' rel='external'>$display</a>$after";
|
||||
return apply_filters('get_comment_author_url_link', $return);
|
||||
}
|
||||
|
||||
function comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
|
||||
echo get_comment_author_url_link( $linktext, $before, $after );
|
||||
}
|
||||
|
||||
function get_comment_date( $d = '' ) {
|
||||
global $comment;
|
||||
if ( '' == $d )
|
||||
$date = mysql2date( get_settings('date_format'), $comment->comment_date);
|
||||
else
|
||||
$date = mysql2date($d, $comment->comment_date);
|
||||
return apply_filters('get_comment_date', $date);
|
||||
}
|
||||
|
||||
function comment_date( $d = '' ) {
|
||||
echo get_comment_date( $d );
|
||||
}
|
||||
|
||||
function get_comment_excerpt() {
|
||||
global $comment;
|
||||
$comment_text = strip_tags($comment->comment_content);
|
||||
$blah = explode(' ', $comment_text);
|
||||
if (count($blah) > 20) {
|
||||
$k = 20;
|
||||
$use_dotdotdot = 1;
|
||||
} else {
|
||||
$k = count($blah);
|
||||
$use_dotdotdot = 0;
|
||||
}
|
||||
$excerpt = '';
|
||||
for ($i=0; $i<$k; $i++) {
|
||||
$excerpt .= $blah[$i] . ' ';
|
||||
}
|
||||
$excerpt .= ($use_dotdotdot) ? '...' : '';
|
||||
return apply_filters('get_comment_excerpt', $excerpt);
|
||||
}
|
||||
|
||||
function comment_excerpt() {
|
||||
echo apply_filters('comment_excerpt', get_comment_excerpt() );
|
||||
}
|
||||
|
||||
function get_comment_ID() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_ID', $comment->comment_ID);
|
||||
}
|
||||
|
||||
function comment_ID() {
|
||||
echo get_comment_ID();
|
||||
}
|
||||
|
||||
function get_comment_link() {
|
||||
global $comment;
|
||||
return get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID;
|
||||
}
|
||||
|
||||
function get_comments_link() {
|
||||
return get_permalink() . '#comments';
|
||||
}
|
||||
|
||||
function comments_link( $file = '', $echo = true ) {
|
||||
echo get_comments_link();
|
||||
}
|
||||
|
||||
function get_comments_number( $post_id = 0 ) {
|
||||
global $wpdb, $comment_count_cache, $id;
|
||||
$post_id = (int) $post_id;
|
||||
|
||||
if ( !$post_id )
|
||||
$post_id = $id;
|
||||
|
||||
// TODO: Remove SELECT. Use get_post().
|
||||
if ( !isset($comment_count_cache[$post_id]) )
|
||||
$comment_count_cache[$id] = $wpdb->get_var("SELECT comment_count FROM $wpdb->posts WHERE ID = '$post_id'");
|
||||
|
||||
return apply_filters('get_comments_number', $comment_count_cache[$post_id]);
|
||||
}
|
||||
|
||||
function comments_number( $zero = 'No Comments', $one = '1 Comment', $more = '% Comments', $number = '' ) {
|
||||
global $id, $comment;
|
||||
$number = get_comments_number( $id );
|
||||
if ($number == 0) {
|
||||
$blah = $zero;
|
||||
} elseif ($number == 1) {
|
||||
$blah = $one;
|
||||
} elseif ($number > 1) {
|
||||
$blah = str_replace('%', $number, $more);
|
||||
}
|
||||
echo apply_filters('comments_number', $blah);
|
||||
}
|
||||
|
||||
function get_comment_text() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_text', $comment->comment_content);
|
||||
}
|
||||
|
||||
function comment_text() {
|
||||
echo apply_filters('comment_text', get_comment_text() );
|
||||
}
|
||||
|
||||
function get_comment_time( $d = '', $gmt = false ) {
|
||||
global $comment;
|
||||
$comment_date = $gmt? $comment->comment_date_gmt : $comment->comment_date;
|
||||
if ( '' == $d )
|
||||
$date = mysql2date(get_settings('time_format'), $comment_date);
|
||||
else
|
||||
$date = mysql2date($d, $comment_date);
|
||||
return apply_filters('get_comment_time', $date);
|
||||
}
|
||||
|
||||
function comment_time( $d = '' ) {
|
||||
echo get_comment_time($d);
|
||||
}
|
||||
|
||||
function get_comment_type() {
|
||||
global $comment;
|
||||
|
||||
if ( '' == $comment->comment_type )
|
||||
$comment->comment_type = 'comment';
|
||||
|
||||
return apply_filters('get_comment_type', $comment->comment_type);
|
||||
}
|
||||
|
||||
function comment_type($commenttxt = 'Comment', $trackbacktxt = 'Trackback', $pingbacktxt = 'Pingback') {
|
||||
$type = get_comment_type();
|
||||
switch( $type ) {
|
||||
case 'trackback' :
|
||||
echo $trackbacktxt;
|
||||
break;
|
||||
case 'pingback' :
|
||||
echo $pingbacktxt;
|
||||
break;
|
||||
default :
|
||||
echo $commenttxt;
|
||||
}
|
||||
}
|
||||
|
||||
function get_trackback_url() {
|
||||
global $id;
|
||||
$tb_url = get_settings('siteurl') . '/wp-trackback.php?p=' . $id;
|
||||
|
||||
if ( '' != get_settings('permalink_structure') )
|
||||
$tb_url = trailingslashit(get_permalink()) . 'trackback/';
|
||||
|
||||
return $tb_url;
|
||||
}
|
||||
function trackback_url( $display = true ) {
|
||||
if ( $display)
|
||||
echo get_trackback_url();
|
||||
else
|
||||
return get_trackback_url();
|
||||
}
|
||||
|
||||
function trackback_rdf($timezone = 0) {
|
||||
global $id;
|
||||
if (!stristr($_SERVER['HTTP_USER_AGENT'], 'W3C_Validator')) {
|
||||
echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
|
||||
<rdf:Description rdf:about="';
|
||||
the_permalink();
|
||||
echo '"'."\n";
|
||||
echo ' dc:identifier="';
|
||||
the_permalink();
|
||||
echo '"'."\n";
|
||||
echo ' dc:title="'.str_replace('--', '--', wptexturize(strip_tags(get_the_title()))).'"'."\n";
|
||||
echo ' trackback:ping="'.trackback_url(0).'"'." />\n";
|
||||
echo '</rdf:RDF>';
|
||||
}
|
||||
}
|
||||
|
||||
function comments_open() {
|
||||
global $post;
|
||||
if ( 'open' == $post->comment_status )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function pings_open() {
|
||||
global $post;
|
||||
if ( 'open' == $post->ping_status )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function comments_template( $file = '/comments.php' ) {
|
||||
global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity;
|
||||
|
||||
if ( is_single() || is_page() || $withcomments ) :
|
||||
$req = get_settings('require_name_email');
|
||||
$comment_author = '';
|
||||
if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) ) {
|
||||
$comment_author = apply_filters('pre_comment_author_name', $_COOKIE['comment_author_'.COOKIEHASH]);
|
||||
$comment_author = stripslashes($comment_author);
|
||||
$comment_author = wp_specialchars($comment_author, true);
|
||||
}
|
||||
$comment_author_email = '';
|
||||
if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ) {
|
||||
$comment_author_email = apply_filters('pre_comment_author_email', $_COOKIE['comment_author_email_'.COOKIEHASH]);
|
||||
$comment_author_email = stripslashes($comment_author_email);
|
||||
$comment_author_email = wp_specialchars($comment_author_email, true);
|
||||
}
|
||||
$comment_author_url = '';
|
||||
if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ) {
|
||||
$comment_author_url = apply_filters('pre_comment_author_url', $_COOKIE['comment_author_url_'.COOKIEHASH]);
|
||||
$comment_author_url = stripslashes($comment_author_url);
|
||||
$comment_author_url = wp_specialchars($comment_author_url, true);
|
||||
}
|
||||
|
||||
// TODO: Use API instead of SELECTs.
|
||||
if ( empty($comment_author) ) {
|
||||
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND comment_approved = '1' ORDER BY comment_date");
|
||||
} else {
|
||||
$author_db = $wpdb->escape($comment_author);
|
||||
$email_db = $wpdb->escape($comment_author_email);
|
||||
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND ( comment_approved = '1' OR ( comment_author = '$author_db' AND comment_author_email = '$email_db' AND comment_approved = '0' ) ) ORDER BY comment_date");
|
||||
}
|
||||
|
||||
define('COMMENTS_TEMPLATE', true);
|
||||
$include = apply_filters('comments_template', TEMPLATEPATH . $file );
|
||||
if ( file_exists( $include ) )
|
||||
require( $include );
|
||||
else
|
||||
require( ABSPATH . 'wp-content/themes/default/comments.php');
|
||||
|
||||
endif;
|
||||
}
|
||||
|
||||
function comments_popup_script($width=400, $height=400, $file='') {
|
||||
global $wpcommentspopupfile, $wptrackbackpopupfile, $wppingbackpopupfile, $wpcommentsjavascript;
|
||||
|
||||
if (empty ($file)) {
|
||||
$wpcommentspopupfile = ''; // Use the index.
|
||||
} else {
|
||||
$wpcommentspopupfile = $file;
|
||||
}
|
||||
|
||||
$wpcommentsjavascript = 1;
|
||||
$javascript = "<script type='text/javascript'>\nfunction wpopen (macagna) {\n window.open(macagna, '_blank', 'width=$width,height=$height,scrollbars=yes,status=yes');\n}\n</script>\n";
|
||||
echo $javascript;
|
||||
}
|
||||
|
||||
function comments_popup_link($zero='No Comments', $one='1 Comment', $more='% Comments', $CSSclass='', $none='Comments Off') {
|
||||
global $id, $wpcommentspopupfile, $wpcommentsjavascript, $post, $wpdb;
|
||||
global $comment_count_cache;
|
||||
|
||||
if (! is_single() && ! is_page()) {
|
||||
// TODO: Use API instead of SELECT
|
||||
if ( !isset($comment_count_cache[$id]) )
|
||||
$comment_count_cache[$id] = $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved = '1';");
|
||||
|
||||
$number = $comment_count_cache[$id];
|
||||
|
||||
if (0 == $number && 'closed' == $post->comment_status && 'closed' == $post->ping_status) {
|
||||
echo $none;
|
||||
return;
|
||||
} else {
|
||||
if (!empty($post->post_password)) { // if there's a password
|
||||
if ($_COOKIE['wp-postpass_'.COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
|
||||
echo(__('Enter your password to view comments'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
echo '<a href="';
|
||||
if ($wpcommentsjavascript) {
|
||||
if ( empty($wpcommentspopupfile) )
|
||||
$home = get_settings('home');
|
||||
else
|
||||
$home = get_settings('siteurl');
|
||||
echo $home . '/' . $wpcommentspopupfile.'?comments_popup='.$id;
|
||||
echo '" onclick="wpopen(this.href); return false"';
|
||||
} else { // if comments_popup_script() is not in the template, display simple comment link
|
||||
if ( 0 == $number )
|
||||
echo get_permalink() . '#respond';
|
||||
else
|
||||
comments_link();
|
||||
echo '"';
|
||||
}
|
||||
if (!empty($CSSclass)) {
|
||||
echo ' class="'.$CSSclass.'"';
|
||||
}
|
||||
echo ' title="' . sprintf( __('Comment on %s'), $post->post_title ) .'">';
|
||||
comments_number($zero, $one, $more, $number);
|
||||
echo '</a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,125 +1,147 @@
|
|||
<?php
|
||||
|
||||
// Template functions
|
||||
|
||||
function comments_template( $file = '/comments.php' ) {
|
||||
global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity;
|
||||
|
||||
if ( is_single() || is_page() || $withcomments ) :
|
||||
$req = get_settings('require_name_email');
|
||||
$comment_author = '';
|
||||
if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) ) {
|
||||
$comment_author = apply_filters('pre_comment_author_name', $_COOKIE['comment_author_'.COOKIEHASH]);
|
||||
$comment_author = stripslashes($comment_author);
|
||||
$comment_author = wp_specialchars($comment_author, true);
|
||||
}
|
||||
$comment_author_email = '';
|
||||
if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) ) {
|
||||
$comment_author_email = apply_filters('pre_comment_author_email', $_COOKIE['comment_author_email_'.COOKIEHASH]);
|
||||
$comment_author_email = stripslashes($comment_author_email);
|
||||
$comment_author_email = wp_specialchars($comment_author_email, true);
|
||||
}
|
||||
$comment_author_url = '';
|
||||
if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) ) {
|
||||
$comment_author_url = apply_filters('pre_comment_author_url', $_COOKIE['comment_author_url_'.COOKIEHASH]);
|
||||
$comment_author_url = stripslashes($comment_author_url);
|
||||
$comment_author_url = wp_specialchars($comment_author_url, true);
|
||||
}
|
||||
|
||||
if ( empty($comment_author) ) {
|
||||
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND comment_approved = '1' ORDER BY comment_date");
|
||||
} else {
|
||||
$author_db = $wpdb->escape($comment_author);
|
||||
$email_db = $wpdb->escape($comment_author_email);
|
||||
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND ( comment_approved = '1' OR ( comment_author = '$author_db' AND comment_author_email = '$email_db' AND comment_approved = '0' ) ) ORDER BY comment_date");
|
||||
}
|
||||
|
||||
define('COMMENTS_TEMPLATE', true);
|
||||
$include = apply_filters('comments_template', TEMPLATEPATH . $file );
|
||||
if ( file_exists( $include ) )
|
||||
require( $include );
|
||||
else
|
||||
require( ABSPATH . 'wp-content/themes/default/comments.php');
|
||||
|
||||
endif;
|
||||
}
|
||||
|
||||
function wp_new_comment( $commentdata ) {
|
||||
$commentdata = apply_filters('preprocess_comment', $commentdata);
|
||||
|
||||
$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
|
||||
$commentdata['user_ID'] = (int) $commentdata['user_ID'];
|
||||
|
||||
$commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR'];
|
||||
$commentdata['comment_agent'] = $_SERVER['HTTP_USER_AGENT'];
|
||||
|
||||
$commentdata['comment_date'] = current_time('mysql');
|
||||
$commentdata['comment_date_gmt'] = current_time('mysql', 1);
|
||||
|
||||
|
||||
$commentdata = wp_filter_comment($commentdata);
|
||||
|
||||
$commentdata['comment_approved'] = wp_allow_comment($commentdata);
|
||||
|
||||
$comment_ID = wp_insert_comment($commentdata);
|
||||
|
||||
do_action('comment_post', $comment_ID, $commentdata['comment_approved']);
|
||||
|
||||
if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
|
||||
if ( '0' == $commentdata['comment_approved'] )
|
||||
wp_notify_moderator($comment_ID);
|
||||
|
||||
$post = &get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
|
||||
|
||||
if ( get_settings('comments_notify') && $commentdata['comment_approved'] && $post->post_author != $commentdata['user_ID'] )
|
||||
wp_notify_postauthor($comment_ID, $commentdata['comment_type']);
|
||||
}
|
||||
|
||||
return $comment_ID;
|
||||
}
|
||||
|
||||
function wp_insert_comment($commentdata) {
|
||||
function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) {
|
||||
global $wpdb;
|
||||
extract($commentdata);
|
||||
|
||||
if ( ! isset($comment_author_IP) )
|
||||
$comment_author_IP = $_SERVER['REMOTE_ADDR'];
|
||||
if ( ! isset($comment_date) )
|
||||
$comment_date = current_time('mysql');
|
||||
if ( ! isset($comment_date_gmt) )
|
||||
$comment_date_gmt = gmdate('Y-m-d H:i:s', strtotime($comment_date) );
|
||||
if ( ! isset($comment_parent) )
|
||||
$comment_parent = 0;
|
||||
if ( ! isset($comment_approved) )
|
||||
$comment_approved = 1;
|
||||
if ( ! isset($user_id) )
|
||||
$user_id = 0;
|
||||
if (1 == get_settings('comment_moderation')) return false; // If moderation is set to manual
|
||||
|
||||
$result = $wpdb->query("INSERT INTO $wpdb->comments
|
||||
(comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved, comment_agent, comment_type, comment_parent, user_id)
|
||||
VALUES
|
||||
('$comment_post_ID', '$comment_author', '$comment_author_email', '$comment_author_url', '$comment_author_IP', '$comment_date', '$comment_date_gmt', '$comment_content', '$comment_approved', '$comment_agent', '$comment_type', '$comment_parent', '$user_id')
|
||||
");
|
||||
if ( (count(explode('http:', $comment)) - 1) >= get_settings('comment_max_links') )
|
||||
return false; // Check # of external links
|
||||
|
||||
$id = $wpdb->insert_id;
|
||||
$mod_keys = trim( get_settings('moderation_keys') );
|
||||
if ( !empty($mod_keys) ) {
|
||||
$words = explode("\n", $mod_keys );
|
||||
|
||||
if ( $comment_approved == 1) {
|
||||
$count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_approved = '1'");
|
||||
$wpdb->query( "UPDATE $wpdb->posts SET comment_count = $count WHERE ID = '$comment_post_ID'" );
|
||||
foreach ($words as $word) {
|
||||
$word = trim($word);
|
||||
|
||||
// Skip empty lines
|
||||
if (empty($word)) { continue; }
|
||||
|
||||
// Do some escaping magic so that '#' chars in the
|
||||
// spam words don't break things:
|
||||
$word = preg_quote($word, '#');
|
||||
|
||||
$pattern = "#$word#i";
|
||||
if ( preg_match($pattern, $author) ) return false;
|
||||
if ( preg_match($pattern, $email) ) return false;
|
||||
if ( preg_match($pattern, $url) ) return false;
|
||||
if ( preg_match($pattern, $comment) ) return false;
|
||||
if ( preg_match($pattern, $user_ip) ) return false;
|
||||
if ( preg_match($pattern, $user_agent) ) return false;
|
||||
}
|
||||
return $id;
|
||||
}
|
||||
|
||||
function wp_filter_comment($commentdata) {
|
||||
$commentdata['user_id'] = apply_filters('pre_user_id', $commentdata['user_ID']);
|
||||
$commentdata['comment_agent'] = apply_filters('pre_comment_user_agent', $commentdata['comment_agent']);
|
||||
$commentdata['comment_author'] = apply_filters('pre_comment_author_name', $commentdata['comment_author']);
|
||||
$commentdata['comment_content'] = apply_filters('pre_comment_content', $commentdata['comment_content']);
|
||||
$commentdata['comment_author_IP'] = apply_filters('pre_comment_user_ip', $commentdata['comment_author_IP']);
|
||||
$commentdata['comment_author_url'] = apply_filters('pre_comment_author_url', $commentdata['comment_author_url']);
|
||||
$commentdata['comment_author_email'] = apply_filters('pre_comment_author_email', $commentdata['comment_author_email']);
|
||||
$commentdata['filtered'] = true;
|
||||
return $commentdata;
|
||||
// Comment whitelisting:
|
||||
if ( 1 == get_settings('comment_whitelist')) {
|
||||
if ( 'trackback' == $comment_type || 'pingback' == $comment_type ) { // check if domain is in blogroll
|
||||
$uri = parse_url($url);
|
||||
$domain = $uri['host'];
|
||||
$uri = parse_url( get_option('home') );
|
||||
$home_domain = $uri['host'];
|
||||
if ( $wpdb->get_var("SELECT link_id FROM $wpdb->links WHERE link_url LIKE ('%$domain%') LIMIT 1") || $domain == $home_domain )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
} elseif( $author != '' && $email != '' ) {
|
||||
$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1");
|
||||
if ( ( 1 == $ok_to_comment ) &&
|
||||
( empty($mod_keys) || false === strpos( $email, $mod_keys) ) )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_approved_comments($post_id) {
|
||||
global $wpdb;
|
||||
return $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post_id AND comment_approved = '1' ORDER BY comment_date");
|
||||
}
|
||||
|
||||
// Retrieves comment data given a comment ID or comment object.
|
||||
// Handles comment caching.
|
||||
function &get_comment(&$comment, $output = OBJECT) {
|
||||
global $comment_cache, $wpdb;
|
||||
|
||||
if ( empty($comment) )
|
||||
return null;
|
||||
|
||||
if ( is_object($comment) ) {
|
||||
if ( !isset($comment_cache[$comment->comment_ID]) )
|
||||
$comment_cache[$comment->comment_ID] = &$comment;
|
||||
$_comment = & $comment_cache[$comment->comment_ID];
|
||||
} else {
|
||||
if ( !isset($comment_cache[$comment]) ) {
|
||||
$_comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment' LIMIT 1");
|
||||
$comment_cache[$comment->comment_ID] = & $_comment;
|
||||
} else {
|
||||
$_comment = & $comment_cache[$comment];
|
||||
}
|
||||
}
|
||||
|
||||
if ( $output == OBJECT ) {
|
||||
return $_comment;
|
||||
} elseif ( $output == ARRAY_A ) {
|
||||
return get_object_vars($_comment);
|
||||
} elseif ( $output == ARRAY_N ) {
|
||||
return array_values(get_object_vars($_comment));
|
||||
} else {
|
||||
return $_comment;
|
||||
}
|
||||
}
|
||||
|
||||
// Deprecate in favor of get_comment()?
|
||||
function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = false ) { // less flexible, but saves DB queries
|
||||
global $postc, $id, $commentdata, $wpdb;
|
||||
if ($no_cache) {
|
||||
$query = "SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_ID'";
|
||||
if (false == $include_unapproved) {
|
||||
$query .= " AND comment_approved = '1'";
|
||||
}
|
||||
$myrow = $wpdb->get_row($query, ARRAY_A);
|
||||
} else {
|
||||
$myrow['comment_ID'] = $postc->comment_ID;
|
||||
$myrow['comment_post_ID'] = $postc->comment_post_ID;
|
||||
$myrow['comment_author'] = $postc->comment_author;
|
||||
$myrow['comment_author_email'] = $postc->comment_author_email;
|
||||
$myrow['comment_author_url'] = $postc->comment_author_url;
|
||||
$myrow['comment_author_IP'] = $postc->comment_author_IP;
|
||||
$myrow['comment_date'] = $postc->comment_date;
|
||||
$myrow['comment_content'] = $postc->comment_content;
|
||||
$myrow['comment_karma'] = $postc->comment_karma;
|
||||
$myrow['comment_approved'] = $postc->comment_approved;
|
||||
$myrow['comment_type'] = $postc->comment_type;
|
||||
}
|
||||
return $myrow;
|
||||
}
|
||||
|
||||
function get_lastcommentmodified($timezone = 'server') {
|
||||
global $cache_lastcommentmodified, $pagenow, $wpdb;
|
||||
$add_seconds_blog = get_settings('gmt_offset') * 3600;
|
||||
$add_seconds_server = date('Z');
|
||||
$now = current_time('mysql', 1);
|
||||
if ( !isset($cache_lastcommentmodified[$timezone]) ) {
|
||||
switch(strtolower($timezone)) {
|
||||
case 'gmt':
|
||||
$lastcommentmodified = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
|
||||
break;
|
||||
case 'blog':
|
||||
$lastcommentmodified = $wpdb->get_var("SELECT comment_date FROM $wpdb->comments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
|
||||
break;
|
||||
case 'server':
|
||||
$lastcommentmodified = $wpdb->get_var("SELECT DATE_ADD(comment_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->comments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
|
||||
break;
|
||||
}
|
||||
$cache_lastcommentmodified[$timezone] = $lastcommentmodified;
|
||||
} else {
|
||||
$lastcommentmodified = $cache_lastcommentmodified[$timezone];
|
||||
}
|
||||
return $lastcommentmodified;
|
||||
}
|
||||
|
||||
function wp_allow_comment($commentdata) {
|
||||
|
@ -171,6 +193,151 @@ function wp_allow_comment($commentdata) {
|
|||
return $approved;
|
||||
}
|
||||
|
||||
function wp_delete_comment($comment_id) {
|
||||
global $wpdb;
|
||||
do_action('delete_comment', $comment_id);
|
||||
|
||||
$comment = get_comment($comment_id);
|
||||
|
||||
if ( ! $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1") )
|
||||
return false;
|
||||
|
||||
$post_id = $comment->comment_post_ID;
|
||||
if ( $post_id && $comment->comment_approved == 1 )
|
||||
$wpdb->query( "UPDATE $wpdb->posts SET comment_count = comment_count - 1 WHERE ID = '$post_id'" );
|
||||
|
||||
do_action('wp_set_comment_status', $comment_id, 'delete');
|
||||
return true;
|
||||
}
|
||||
|
||||
function wp_get_comment_status($comment_id) {
|
||||
global $wpdb;
|
||||
|
||||
$result = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1");
|
||||
if ($result == NULL) {
|
||||
return 'deleted';
|
||||
} else if ($result == '1') {
|
||||
return 'approved';
|
||||
} else if ($result == '0') {
|
||||
return 'unapproved';
|
||||
} else if ($result == 'spam') {
|
||||
return 'spam';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function wp_insert_comment($commentdata) {
|
||||
global $wpdb;
|
||||
extract($commentdata);
|
||||
|
||||
if ( ! isset($comment_author_IP) )
|
||||
$comment_author_IP = $_SERVER['REMOTE_ADDR'];
|
||||
if ( ! isset($comment_date) )
|
||||
$comment_date = current_time('mysql');
|
||||
if ( ! isset($comment_date_gmt) )
|
||||
$comment_date_gmt = gmdate('Y-m-d H:i:s', strtotime($comment_date) );
|
||||
if ( ! isset($comment_parent) )
|
||||
$comment_parent = 0;
|
||||
if ( ! isset($comment_approved) )
|
||||
$comment_approved = 1;
|
||||
if ( ! isset($user_id) )
|
||||
$user_id = 0;
|
||||
|
||||
$result = $wpdb->query("INSERT INTO $wpdb->comments
|
||||
(comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved, comment_agent, comment_type, comment_parent, user_id)
|
||||
VALUES
|
||||
('$comment_post_ID', '$comment_author', '$comment_author_email', '$comment_author_url', '$comment_author_IP', '$comment_date', '$comment_date_gmt', '$comment_content', '$comment_approved', '$comment_agent', '$comment_type', '$comment_parent', '$user_id')
|
||||
");
|
||||
|
||||
$id = $wpdb->insert_id;
|
||||
|
||||
if ( $comment_approved == 1) {
|
||||
$count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND comment_approved = '1'");
|
||||
$wpdb->query( "UPDATE $wpdb->posts SET comment_count = $count WHERE ID = '$comment_post_ID'" );
|
||||
}
|
||||
return $id;
|
||||
}
|
||||
|
||||
function wp_filter_comment($commentdata) {
|
||||
$commentdata['user_id'] = apply_filters('pre_user_id', $commentdata['user_ID']);
|
||||
$commentdata['comment_agent'] = apply_filters('pre_comment_user_agent', $commentdata['comment_agent']);
|
||||
$commentdata['comment_author'] = apply_filters('pre_comment_author_name', $commentdata['comment_author']);
|
||||
$commentdata['comment_content'] = apply_filters('pre_comment_content', $commentdata['comment_content']);
|
||||
$commentdata['comment_author_IP'] = apply_filters('pre_comment_user_ip', $commentdata['comment_author_IP']);
|
||||
$commentdata['comment_author_url'] = apply_filters('pre_comment_author_url', $commentdata['comment_author_url']);
|
||||
$commentdata['comment_author_email'] = apply_filters('pre_comment_author_email', $commentdata['comment_author_email']);
|
||||
$commentdata['filtered'] = true;
|
||||
return $commentdata;
|
||||
}
|
||||
|
||||
function wp_new_comment( $commentdata ) {
|
||||
$commentdata = apply_filters('preprocess_comment', $commentdata);
|
||||
|
||||
$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
|
||||
$commentdata['user_ID'] = (int) $commentdata['user_ID'];
|
||||
|
||||
$commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR'];
|
||||
$commentdata['comment_agent'] = $_SERVER['HTTP_USER_AGENT'];
|
||||
|
||||
$commentdata['comment_date'] = current_time('mysql');
|
||||
$commentdata['comment_date_gmt'] = current_time('mysql', 1);
|
||||
|
||||
|
||||
$commentdata = wp_filter_comment($commentdata);
|
||||
|
||||
$commentdata['comment_approved'] = wp_allow_comment($commentdata);
|
||||
|
||||
$comment_ID = wp_insert_comment($commentdata);
|
||||
|
||||
do_action('comment_post', $comment_ID, $commentdata['comment_approved']);
|
||||
|
||||
if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
|
||||
if ( '0' == $commentdata['comment_approved'] )
|
||||
wp_notify_moderator($comment_ID);
|
||||
|
||||
$post = &get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
|
||||
|
||||
if ( get_settings('comments_notify') && $commentdata['comment_approved'] && $post->post_author != $commentdata['user_ID'] )
|
||||
wp_notify_postauthor($comment_ID, $commentdata['comment_type']);
|
||||
}
|
||||
|
||||
return $comment_ID;
|
||||
}
|
||||
|
||||
function wp_set_comment_status($comment_id, $comment_status) {
|
||||
global $wpdb;
|
||||
|
||||
switch($comment_status) {
|
||||
case 'hold':
|
||||
$query = "UPDATE $wpdb->comments SET comment_approved='0' WHERE comment_ID='$comment_id' LIMIT 1";
|
||||
break;
|
||||
case 'approve':
|
||||
$query = "UPDATE $wpdb->comments SET comment_approved='1' WHERE comment_ID='$comment_id' LIMIT 1";
|
||||
break;
|
||||
case 'spam':
|
||||
$query = "UPDATE $wpdb->comments SET comment_approved='spam' WHERE comment_ID='$comment_id' LIMIT 1";
|
||||
break;
|
||||
case 'delete':
|
||||
return wp_delete_comment($comment_id);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($wpdb->query($query)) {
|
||||
do_action('wp_set_comment_status', $comment_id, $comment_status);
|
||||
|
||||
$comment = get_comment($comment_id);
|
||||
$comment_post_ID = $comment->comment_post_ID;
|
||||
$c = $wpdb->get_row( "SELECT count(*) as c FROM {$wpdb->comments} WHERE comment_post_ID = '$comment_post_ID' AND comment_approved = '1'" );
|
||||
if( is_object( $c ) )
|
||||
$wpdb->query( "UPDATE $wpdb->posts SET comment_count = '$c->c' WHERE ID = '$comment_post_ID'" );
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function wp_update_comment($commentarr) {
|
||||
global $wpdb;
|
||||
|
@ -213,392 +380,6 @@ function wp_update_comment($commentarr) {
|
|||
return $rval;
|
||||
}
|
||||
|
||||
function wp_delete_comment($comment_id) {
|
||||
global $wpdb;
|
||||
do_action('delete_comment', $comment_id);
|
||||
|
||||
$comment = get_comment($comment_id);
|
||||
|
||||
if ( ! $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1") )
|
||||
return false;
|
||||
|
||||
$post_id = $comment->comment_post_ID;
|
||||
if ( $post_id && $comment->comment_approved == 1 )
|
||||
$wpdb->query( "UPDATE $wpdb->posts SET comment_count = comment_count - 1 WHERE ID = '$post_id'" );
|
||||
|
||||
do_action('wp_set_comment_status', $comment_id, 'delete');
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_comments_number( $post_id = 0 ) {
|
||||
global $wpdb, $comment_count_cache, $id;
|
||||
$post_id = (int) $post_id;
|
||||
|
||||
if ( !$post_id )
|
||||
$post_id = $id;
|
||||
|
||||
if ( !isset($comment_count_cache[$post_id]) )
|
||||
$comment_count_cache[$id] = $wpdb->get_var("SELECT comment_count FROM $wpdb->posts WHERE ID = '$post_id'");
|
||||
|
||||
return apply_filters('get_comments_number', $comment_count_cache[$post_id]);
|
||||
}
|
||||
|
||||
function comments_number( $zero = 'No Comments', $one = '1 Comment', $more = '% Comments', $number = '' ) {
|
||||
global $id, $comment;
|
||||
$number = get_comments_number( $id );
|
||||
if ($number == 0) {
|
||||
$blah = $zero;
|
||||
} elseif ($number == 1) {
|
||||
$blah = $one;
|
||||
} elseif ($number > 1) {
|
||||
$blah = str_replace('%', $number, $more);
|
||||
}
|
||||
echo apply_filters('comments_number', $blah);
|
||||
}
|
||||
|
||||
function get_comments_link() {
|
||||
return get_permalink() . '#comments';
|
||||
}
|
||||
|
||||
function get_comment_link() {
|
||||
global $comment;
|
||||
return get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID;
|
||||
}
|
||||
|
||||
function comments_link( $file = '', $echo = true ) {
|
||||
echo get_comments_link();
|
||||
}
|
||||
|
||||
function comments_popup_script($width=400, $height=400, $file='') {
|
||||
global $wpcommentspopupfile, $wptrackbackpopupfile, $wppingbackpopupfile, $wpcommentsjavascript;
|
||||
|
||||
if (empty ($file)) {
|
||||
$wpcommentspopupfile = ''; // Use the index.
|
||||
} else {
|
||||
$wpcommentspopupfile = $file;
|
||||
}
|
||||
|
||||
$wpcommentsjavascript = 1;
|
||||
$javascript = "<script type='text/javascript'>\nfunction wpopen (macagna) {\n window.open(macagna, '_blank', 'width=$width,height=$height,scrollbars=yes,status=yes');\n}\n</script>\n";
|
||||
echo $javascript;
|
||||
}
|
||||
|
||||
function comments_popup_link($zero='No Comments', $one='1 Comment', $more='% Comments', $CSSclass='', $none='Comments Off') {
|
||||
global $id, $wpcommentspopupfile, $wpcommentsjavascript, $post, $wpdb;
|
||||
global $comment_count_cache;
|
||||
|
||||
if (! is_single() && ! is_page()) {
|
||||
if ( !isset($comment_count_cache[$id]) )
|
||||
$comment_count_cache[$id] = $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved = '1';");
|
||||
|
||||
$number = $comment_count_cache[$id];
|
||||
|
||||
if (0 == $number && 'closed' == $post->comment_status && 'closed' == $post->ping_status) {
|
||||
echo $none;
|
||||
return;
|
||||
} else {
|
||||
if (!empty($post->post_password)) { // if there's a password
|
||||
if ($_COOKIE['wp-postpass_'.COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
|
||||
echo(__('Enter your password to view comments'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
echo '<a href="';
|
||||
if ($wpcommentsjavascript) {
|
||||
if ( empty($wpcommentspopupfile) )
|
||||
$home = get_settings('home');
|
||||
else
|
||||
$home = get_settings('siteurl');
|
||||
echo $home . '/' . $wpcommentspopupfile.'?comments_popup='.$id;
|
||||
echo '" onclick="wpopen(this.href); return false"';
|
||||
} else { // if comments_popup_script() is not in the template, display simple comment link
|
||||
if ( 0 == $number )
|
||||
echo get_permalink() . '#respond';
|
||||
else
|
||||
comments_link();
|
||||
echo '"';
|
||||
}
|
||||
if (!empty($CSSclass)) {
|
||||
echo ' class="'.$CSSclass.'"';
|
||||
}
|
||||
echo ' title="' . sprintf( __('Comment on %s'), $post->post_title ) .'">';
|
||||
comments_number($zero, $one, $more, $number);
|
||||
echo '</a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_comment_ID() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_ID', $comment->comment_ID);
|
||||
}
|
||||
|
||||
function comment_ID() {
|
||||
echo get_comment_ID();
|
||||
}
|
||||
|
||||
function get_comment_author() {
|
||||
global $comment;
|
||||
if ( empty($comment->comment_author) )
|
||||
$author = __('Anonymous');
|
||||
else
|
||||
$author = $comment->comment_author;
|
||||
return apply_filters('get_comment_author', $author);
|
||||
}
|
||||
|
||||
function comment_author() {
|
||||
$author = apply_filters('comment_author', get_comment_author() );
|
||||
echo $author;
|
||||
}
|
||||
|
||||
function get_comment_author_email() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_author_email', $comment->comment_author_email);
|
||||
}
|
||||
|
||||
function comment_author_email() {
|
||||
echo apply_filters('author_email', get_comment_author_email() );
|
||||
}
|
||||
|
||||
function get_comment_author_link() {
|
||||
global $comment;
|
||||
$url = get_comment_author_url();
|
||||
$author = get_comment_author();
|
||||
|
||||
if ( empty( $url ) || 'http://' == $url )
|
||||
$return = $author;
|
||||
else
|
||||
$return = "<a href='$url' rel='external nofollow'>$author</a>";
|
||||
return apply_filters('get_comment_author_link', $return);
|
||||
}
|
||||
|
||||
function comment_author_link() {
|
||||
echo get_comment_author_link();
|
||||
}
|
||||
|
||||
function get_comment_type() {
|
||||
global $comment;
|
||||
|
||||
if ( '' == $comment->comment_type )
|
||||
$comment->comment_type = 'comment';
|
||||
|
||||
return apply_filters('get_comment_type', $comment->comment_type);
|
||||
}
|
||||
|
||||
function comment_type($commenttxt = 'Comment', $trackbacktxt = 'Trackback', $pingbacktxt = 'Pingback') {
|
||||
$type = get_comment_type();
|
||||
switch( $type ) {
|
||||
case 'trackback' :
|
||||
echo $trackbacktxt;
|
||||
break;
|
||||
case 'pingback' :
|
||||
echo $pingbacktxt;
|
||||
break;
|
||||
default :
|
||||
echo $commenttxt;
|
||||
}
|
||||
}
|
||||
|
||||
function get_comment_author_url() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_author_url', $comment->comment_author_url);
|
||||
}
|
||||
|
||||
function comment_author_url() {
|
||||
echo apply_filters('comment_url', get_comment_author_url());
|
||||
}
|
||||
|
||||
function comment_author_email_link($linktext='', $before='', $after='') {
|
||||
global $comment;
|
||||
$email = apply_filters('comment_email', $comment->comment_author_email);
|
||||
if ((!empty($email)) && ($email != '@')) {
|
||||
$display = ($linktext != '') ? $linktext : $email;
|
||||
echo $before;
|
||||
echo "<a href='mailto:$email'>$display</a>";
|
||||
echo $after;
|
||||
}
|
||||
}
|
||||
|
||||
function get_comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
|
||||
global $comment;
|
||||
$url = get_comment_author_url();
|
||||
$display = ($linktext != '') ? $linktext : $url;
|
||||
$return = "$before<a href='$url' rel='external'>$display</a>$after";
|
||||
return apply_filters('get_comment_author_url_link', $return);
|
||||
}
|
||||
|
||||
function comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
|
||||
echo get_comment_author_url_link( $linktext, $before, $after );
|
||||
}
|
||||
|
||||
function get_comment_author_IP() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_author_IP', $comment->comment_author_IP);
|
||||
}
|
||||
|
||||
function comment_author_IP() {
|
||||
echo get_comment_author_IP();
|
||||
}
|
||||
|
||||
function get_comment_text() {
|
||||
global $comment;
|
||||
return apply_filters('get_comment_text', $comment->comment_content);
|
||||
}
|
||||
|
||||
function comment_text() {
|
||||
echo apply_filters('comment_text', get_comment_text() );
|
||||
}
|
||||
|
||||
function get_comment_excerpt() {
|
||||
global $comment;
|
||||
$comment_text = strip_tags($comment->comment_content);
|
||||
$blah = explode(' ', $comment_text);
|
||||
if (count($blah) > 20) {
|
||||
$k = 20;
|
||||
$use_dotdotdot = 1;
|
||||
} else {
|
||||
$k = count($blah);
|
||||
$use_dotdotdot = 0;
|
||||
}
|
||||
$excerpt = '';
|
||||
for ($i=0; $i<$k; $i++) {
|
||||
$excerpt .= $blah[$i] . ' ';
|
||||
}
|
||||
$excerpt .= ($use_dotdotdot) ? '...' : '';
|
||||
return apply_filters('get_comment_excerpt', $excerpt);
|
||||
}
|
||||
|
||||
function comment_excerpt() {
|
||||
echo apply_filters('comment_excerpt', get_comment_excerpt() );
|
||||
}
|
||||
|
||||
function get_comment_date( $d = '' ) {
|
||||
global $comment;
|
||||
if ( '' == $d )
|
||||
$date = mysql2date( get_settings('date_format'), $comment->comment_date);
|
||||
else
|
||||
$date = mysql2date($d, $comment->comment_date);
|
||||
return apply_filters('get_comment_date', $date);
|
||||
}
|
||||
|
||||
function comment_date( $d = '' ) {
|
||||
echo get_comment_date( $d );
|
||||
}
|
||||
|
||||
function get_comment_time( $d = '', $gmt = false ) {
|
||||
global $comment;
|
||||
$comment_date = $gmt? $comment->comment_date_gmt : $comment->comment_date;
|
||||
if ( '' == $d )
|
||||
$date = mysql2date(get_settings('time_format'), $comment_date);
|
||||
else
|
||||
$date = mysql2date($d, $comment_date);
|
||||
return apply_filters('get_comment_time', $date);
|
||||
}
|
||||
|
||||
function comment_time( $d = '' ) {
|
||||
echo get_comment_time($d);
|
||||
}
|
||||
|
||||
function get_trackback_url() {
|
||||
global $id;
|
||||
$tb_url = get_settings('siteurl') . '/wp-trackback.php?p=' . $id;
|
||||
|
||||
if ( '' != get_settings('permalink_structure') )
|
||||
$tb_url = trailingslashit(get_permalink()) . 'trackback/';
|
||||
|
||||
return $tb_url;
|
||||
}
|
||||
function trackback_url( $display = true ) {
|
||||
if ( $display)
|
||||
echo get_trackback_url();
|
||||
else
|
||||
return get_trackback_url();
|
||||
}
|
||||
|
||||
function trackback_rdf($timezone = 0) {
|
||||
global $id;
|
||||
if (!stristr($_SERVER['HTTP_USER_AGENT'], 'W3C_Validator')) {
|
||||
echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
|
||||
<rdf:Description rdf:about="';
|
||||
the_permalink();
|
||||
echo '"'."\n";
|
||||
echo ' dc:identifier="';
|
||||
the_permalink();
|
||||
echo '"'."\n";
|
||||
echo ' dc:title="'.str_replace('--', '--', wptexturize(strip_tags(get_the_title()))).'"'."\n";
|
||||
echo ' trackback:ping="'.trackback_url(0).'"'." />\n";
|
||||
echo '</rdf:RDF>';
|
||||
}
|
||||
}
|
||||
|
||||
function comments_open() {
|
||||
global $post;
|
||||
if ( 'open' == $post->comment_status )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function pings_open() {
|
||||
global $post;
|
||||
if ( 'open' == $post->ping_status )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
// Non-template functions
|
||||
|
||||
function get_lastcommentmodified($timezone = 'server') {
|
||||
global $cache_lastcommentmodified, $pagenow, $wpdb;
|
||||
$add_seconds_blog = get_settings('gmt_offset') * 3600;
|
||||
$add_seconds_server = date('Z');
|
||||
$now = current_time('mysql', 1);
|
||||
if ( !isset($cache_lastcommentmodified[$timezone]) ) {
|
||||
switch(strtolower($timezone)) {
|
||||
case 'gmt':
|
||||
$lastcommentmodified = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
|
||||
break;
|
||||
case 'blog':
|
||||
$lastcommentmodified = $wpdb->get_var("SELECT comment_date FROM $wpdb->comments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
|
||||
break;
|
||||
case 'server':
|
||||
$lastcommentmodified = $wpdb->get_var("SELECT DATE_ADD(comment_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->comments WHERE comment_date_gmt <= '$now' ORDER BY comment_date_gmt DESC LIMIT 1");
|
||||
break;
|
||||
}
|
||||
$cache_lastcommentmodified[$timezone] = $lastcommentmodified;
|
||||
} else {
|
||||
$lastcommentmodified = $cache_lastcommentmodified[$timezone];
|
||||
}
|
||||
return $lastcommentmodified;
|
||||
}
|
||||
|
||||
function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = false ) { // less flexible, but saves DB queries
|
||||
global $postc, $id, $commentdata, $wpdb;
|
||||
if ($no_cache) {
|
||||
$query = "SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_ID'";
|
||||
if (false == $include_unapproved) {
|
||||
$query .= " AND comment_approved = '1'";
|
||||
}
|
||||
$myrow = $wpdb->get_row($query, ARRAY_A);
|
||||
} else {
|
||||
$myrow['comment_ID'] = $postc->comment_ID;
|
||||
$myrow['comment_post_ID'] = $postc->comment_post_ID;
|
||||
$myrow['comment_author'] = $postc->comment_author;
|
||||
$myrow['comment_author_email'] = $postc->comment_author_email;
|
||||
$myrow['comment_author_url'] = $postc->comment_author_url;
|
||||
$myrow['comment_author_IP'] = $postc->comment_author_IP;
|
||||
$myrow['comment_date'] = $postc->comment_date;
|
||||
$myrow['comment_content'] = $postc->comment_content;
|
||||
$myrow['comment_karma'] = $postc->comment_karma;
|
||||
$myrow['comment_approved'] = $postc->comment_approved;
|
||||
$myrow['comment_type'] = $postc->comment_type;
|
||||
}
|
||||
return $myrow;
|
||||
}
|
||||
|
||||
function pingback($content, $post_ID) {
|
||||
global $wp_version, $wpdb;
|
||||
include_once (ABSPATH . WPINC . '/class-IXR.php');
|
||||
|
@ -782,118 +563,4 @@ function is_local_attachment($url) {
|
|||
return false;
|
||||
}
|
||||
|
||||
function wp_set_comment_status($comment_id, $comment_status) {
|
||||
global $wpdb;
|
||||
|
||||
switch($comment_status) {
|
||||
case 'hold':
|
||||
$query = "UPDATE $wpdb->comments SET comment_approved='0' WHERE comment_ID='$comment_id' LIMIT 1";
|
||||
break;
|
||||
case 'approve':
|
||||
$query = "UPDATE $wpdb->comments SET comment_approved='1' WHERE comment_ID='$comment_id' LIMIT 1";
|
||||
break;
|
||||
case 'spam':
|
||||
$query = "UPDATE $wpdb->comments SET comment_approved='spam' WHERE comment_ID='$comment_id' LIMIT 1";
|
||||
break;
|
||||
case 'delete':
|
||||
return wp_delete_comment($comment_id);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($wpdb->query($query)) {
|
||||
do_action('wp_set_comment_status', $comment_id, $comment_status);
|
||||
|
||||
$comment = get_comment($comment_id);
|
||||
$comment_post_ID = $comment->comment_post_ID;
|
||||
$c = $wpdb->get_row( "SELECT count(*) as c FROM {$wpdb->comments} WHERE comment_post_ID = '$comment_post_ID' AND comment_approved = '1'" );
|
||||
if( is_object( $c ) )
|
||||
$wpdb->query( "UPDATE $wpdb->posts SET comment_count = '$c->c' WHERE ID = '$comment_post_ID'" );
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function wp_get_comment_status($comment_id) {
|
||||
global $wpdb;
|
||||
|
||||
$result = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_ID='$comment_id' LIMIT 1");
|
||||
if ($result == NULL) {
|
||||
return 'deleted';
|
||||
} else if ($result == '1') {
|
||||
return 'approved';
|
||||
} else if ($result == '0') {
|
||||
return 'unapproved';
|
||||
} else if ($result == 'spam') {
|
||||
return 'spam';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) {
|
||||
global $wpdb;
|
||||
|
||||
if (1 == get_settings('comment_moderation')) return false; // If moderation is set to manual
|
||||
|
||||
if ( (count(explode('http:', $comment)) - 1) >= get_settings('comment_max_links') )
|
||||
return false; // Check # of external links
|
||||
|
||||
$mod_keys = trim( get_settings('moderation_keys') );
|
||||
if ( !empty($mod_keys) ) {
|
||||
$words = explode("\n", $mod_keys );
|
||||
|
||||
foreach ($words as $word) {
|
||||
$word = trim($word);
|
||||
|
||||
// Skip empty lines
|
||||
if (empty($word)) { continue; }
|
||||
|
||||
// Do some escaping magic so that '#' chars in the
|
||||
// spam words don't break things:
|
||||
$word = preg_quote($word, '#');
|
||||
|
||||
$pattern = "#$word#i";
|
||||
if ( preg_match($pattern, $author) ) return false;
|
||||
if ( preg_match($pattern, $email) ) return false;
|
||||
if ( preg_match($pattern, $url) ) return false;
|
||||
if ( preg_match($pattern, $comment) ) return false;
|
||||
if ( preg_match($pattern, $user_ip) ) return false;
|
||||
if ( preg_match($pattern, $user_agent) ) return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Comment whitelisting:
|
||||
if ( 1 == get_settings('comment_whitelist')) {
|
||||
if ( 'trackback' == $comment_type || 'pingback' == $comment_type ) { // check if domain is in blogroll
|
||||
$uri = parse_url($url);
|
||||
$domain = $uri['host'];
|
||||
$uri = parse_url( get_option('home') );
|
||||
$home_domain = $uri['host'];
|
||||
if ( $wpdb->get_var("SELECT link_id FROM $wpdb->links WHERE link_url LIKE ('%$domain%') LIMIT 1") || $domain == $home_domain )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
} elseif( $author != '' && $email != '' ) {
|
||||
$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1");
|
||||
if ( ( 1 == $ok_to_comment ) &&
|
||||
( empty($mod_keys) || false === strpos( $email, $mod_keys) ) )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_approved_comments($post_id) {
|
||||
global $wpdb;
|
||||
return $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post_id AND comment_approved = '1' ORDER BY comment_date");
|
||||
}
|
||||
|
||||
?>
|
|
@ -690,38 +690,6 @@ function &get_category(&$category, $output = OBJECT) {
|
|||
}
|
||||
}
|
||||
|
||||
// Retrieves comment data given a comment ID or comment object.
|
||||
// Handles comment caching.
|
||||
function &get_comment(&$comment, $output = OBJECT) {
|
||||
global $comment_cache, $wpdb;
|
||||
|
||||
if ( empty($comment) )
|
||||
return null;
|
||||
|
||||
if ( is_object($comment) ) {
|
||||
if ( !isset($comment_cache[$comment->comment_ID]) )
|
||||
$comment_cache[$comment->comment_ID] = &$comment;
|
||||
$_comment = & $comment_cache[$comment->comment_ID];
|
||||
} else {
|
||||
if ( !isset($comment_cache[$comment]) ) {
|
||||
$_comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment' LIMIT 1");
|
||||
$comment_cache[$comment->comment_ID] = & $_comment;
|
||||
} else {
|
||||
$_comment = & $comment_cache[$comment];
|
||||
}
|
||||
}
|
||||
|
||||
if ( $output == OBJECT ) {
|
||||
return $_comment;
|
||||
} elseif ( $output == ARRAY_A ) {
|
||||
return get_object_vars($_comment);
|
||||
} elseif ( $output == ARRAY_N ) {
|
||||
return array_values(get_object_vars($_comment));
|
||||
} else {
|
||||
return $_comment;
|
||||
}
|
||||
}
|
||||
|
||||
function get_catname($cat_ID) {
|
||||
$category = &get_category($cat_ID);
|
||||
return $category->cat_name;
|
||||
|
|
|
@ -109,9 +109,6 @@ if ( file_exists(ABSPATH . 'wp-content/object-cache.php') )
|
|||
else
|
||||
require (ABSPATH . WPINC . '/cache.php');
|
||||
|
||||
// To disable persistant caching, add the below line to your wp-config.php file, uncommented of course.
|
||||
// define('DISABLE_CACHE', true);
|
||||
|
||||
wp_cache_init();
|
||||
|
||||
require (ABSPATH . WPINC . '/functions.php');
|
||||
|
@ -125,7 +122,6 @@ if ( !is_blog_installed() && (!strstr($_SERVER['PHP_SELF'], 'install.php') && !d
|
|||
$link = 'wp-admin/install.php';
|
||||
die(sprintf(__("It doesn't look like you've installed WP yet. Try running <a href='%s'>install.php</a>."), $link));
|
||||
}
|
||||
$wpdb->show_errors();
|
||||
|
||||
require (ABSPATH . WPINC . '/functions-formatting.php');
|
||||
require (ABSPATH . WPINC . '/functions-post.php');
|
||||
|
@ -138,7 +134,8 @@ require (ABSPATH . WPINC . '/template-functions-links.php');
|
|||
require (ABSPATH . WPINC . '/template-functions-author.php');
|
||||
require (ABSPATH . WPINC . '/template-functions-post.php');
|
||||
require (ABSPATH . WPINC . '/template-functions-category.php');
|
||||
require (ABSPATH . WPINC . '/comment-functions.php');
|
||||
require (ABSPATH . WPINC . '/comment.php');
|
||||
require (ABSPATH . WPINC . '/comment-template.php');
|
||||
require (ABSPATH . WPINC . '/rewrite.php');
|
||||
require (ABSPATH . WPINC . '/feed-functions.php');
|
||||
require (ABSPATH . WPINC . '/template-functions-bookmarks.php');
|
||||
|
|
Loading…
Reference in New Issue