web/wp-admin/includes/comment.php
author ymh
Fri, 12 Mar 2010 13:29:04 +0000
changeset 1 0d28b7c10758
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
 * WordPress Comment Administration API.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
 * @subpackage Administration
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
 * {@internal Missing Short Description}}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
 * @since unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
 * @uses $wpdb
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
 * @param string $comment_author
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
 * @param string $comment_date
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
 * @return mixed Comment ID on success.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
function comment_exists($comment_author, $comment_date) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
	global $wpdb;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
	$comment_author = stripslashes($comment_author);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
	$comment_date = stripslashes($comment_date);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
	return $wpdb->get_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
			WHERE comment_author = %s AND comment_date = %s", $comment_author, $comment_date) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
 * {@internal Missing Short Description}}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
 * @since unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
function edit_comment() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
	$comment_post_ID = (int) $_POST['comment_post_ID'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
	if (!current_user_can( 'edit_post', $comment_post_ID ))
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
		wp_die( __('You are not allowed to edit comments on this post, so you cannot edit this comment.' ));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
	$_POST['comment_author'] = $_POST['newcomment_author'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
	$_POST['comment_author_email'] = $_POST['newcomment_author_email'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
	$_POST['comment_author_url'] = $_POST['newcomment_author_url'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
	$_POST['comment_approved'] = $_POST['comment_status'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
	$_POST['comment_content'] = $_POST['content'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
	$_POST['comment_ID'] = (int) $_POST['comment_ID'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
	foreach ( array ('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
		if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
			$_POST['edit_date'] = '1';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
			break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
	if (!empty ( $_POST['edit_date'] ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
		$aa = $_POST['aa'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
		$mm = $_POST['mm'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
		$jj = $_POST['jj'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
		$hh = $_POST['hh'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
		$mn = $_POST['mn'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
		$ss = $_POST['ss'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
		$jj = ($jj > 31 ) ? 31 : $jj;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
		$hh = ($hh > 23 ) ? $hh -24 : $hh;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
		$mn = ($mn > 59 ) ? $mn -60 : $mn;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
		$ss = ($ss > 59 ) ? $ss -60 : $ss;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
		$_POST['comment_date'] = "$aa-$mm-$jj $hh:$mn:$ss";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
	wp_update_comment( $_POST);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
 * {@internal Missing Short Description}}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
 * @since unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
 * @param unknown_type $id
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
 * @return unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
function get_comment_to_edit( $id ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
	if ( !$comment = get_comment($id) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
	$comment->comment_ID = (int) $comment->comment_ID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
	$comment->comment_post_ID = (int) $comment->comment_post_ID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
	$comment->comment_content = format_to_edit( $comment->comment_content );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
	$comment->comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
	$comment->comment_author = format_to_edit( $comment->comment_author );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
	$comment->comment_author_email = format_to_edit( $comment->comment_author_email );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
	$comment->comment_author_url = format_to_edit( $comment->comment_author_url );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
	$comment->comment_author_url = esc_url($comment->comment_author_url);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
	return $comment;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
 * {@internal Missing Short Description}}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
 * @since unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
 * @uses $wpdb
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
 * @param int $post_id Post ID
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
 * @return unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
function get_pending_comments_num( $post_id ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
	global $wpdb;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
	$single = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
	if ( !is_array($post_id) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
		$post_id = (array) $post_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
		$single = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
	$post_id = array_map('intval', $post_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
	$post_id = "'" . implode("', '", $post_id) . "'";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
	$pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_N );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
	if ( empty($pending) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
		return 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
	if ( $single )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
		return $pending[0][1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
	$pending_keyed = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
	foreach ( $pending as $pend )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
		$pending_keyed[$pend[0]] = $pend[1];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
	return $pending_keyed;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
 * Add avatars to relevant places in admin, or try to.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
 * @since unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
 * @uses $comment
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
 * @param string $name User name.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
 * @return string Avatar with Admin name.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
function floated_admin_avatar( $name ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
	global $comment;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
	$id = $avatar = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
	if ( $comment->comment_author_email )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
		$id = $comment->comment_author_email;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
	if ( $comment->user_id )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
		$id = $comment->user_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
	if ( $id )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
		$avatar = get_avatar( $id, 32 );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
	return "$avatar $name";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
function enqueue_comment_hotkeys_js() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
	if ( 'true' == get_user_option( 'comment_shortcuts' ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
		wp_enqueue_script( 'jquery-table-hotkeys' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
if ( is_admin() && isset($pagenow) && ('edit-comments.php' == $pagenow || 'edit.php' == $pagenow) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
	if ( get_option('show_avatars') )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
		add_filter( 'comment_author', 'floated_admin_avatar' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
?>