web/wp-comments-post.php
changeset 194 32102edaa81b
parent 136 bde1974c263b
equal deleted inserted replaced
193:2f6f6f7551ca 194:32102edaa81b
    17 
    17 
    18 nocache_headers();
    18 nocache_headers();
    19 
    19 
    20 $comment_post_ID = isset($_POST['comment_post_ID']) ? (int) $_POST['comment_post_ID'] : 0;
    20 $comment_post_ID = isset($_POST['comment_post_ID']) ? (int) $_POST['comment_post_ID'] : 0;
    21 
    21 
    22 $status = $wpdb->get_row( $wpdb->prepare("SELECT post_status, comment_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
    22 $post = get_post($comment_post_ID);
    23 
    23 
    24 if ( empty($status->comment_status) ) {
    24 if ( empty($post->comment_status) ) {
    25 	do_action('comment_id_not_found', $comment_post_ID);
    25 	do_action('comment_id_not_found', $comment_post_ID);
    26 	exit;
    26 	exit;
    27 } elseif ( !comments_open($comment_post_ID) ) {
    27 }
       
    28 
       
    29 // get_post_status() will get the parent status for attachments.
       
    30 $status = get_post_status($post);
       
    31 
       
    32 $status_obj = get_post_status_object($status);
       
    33 
       
    34 if ( !comments_open($comment_post_ID) ) {
    28 	do_action('comment_closed', $comment_post_ID);
    35 	do_action('comment_closed', $comment_post_ID);
    29 	wp_die( __('Sorry, comments are closed for this item.') );
    36 	wp_die( __('Sorry, comments are closed for this item.') );
    30 } elseif ( in_array($status->post_status, array('draft', 'pending') ) ) {
    37 } elseif ( 'trash' == $status ) {
       
    38 	do_action('comment_on_trash', $comment_post_ID);
       
    39 	exit;
       
    40 } elseif ( !$status_obj->public && !$status_obj->private ) {
    31 	do_action('comment_on_draft', $comment_post_ID);
    41 	do_action('comment_on_draft', $comment_post_ID);
    32 	exit;
    42 	exit;
    33 } elseif ( 'trash' == $status->post_status ) {
    43 } elseif ( post_password_required($comment_post_ID) ) {
    34 	do_action('comment_on_trash', $comment_post_ID);
    44 	do_action('comment_on_password_protected', $comment_post_ID);
    35 	exit;
    45 	exit;
    36 } else {
    46 } else {
    37 	do_action('pre_comment_on_post', $comment_post_ID);
    47 	do_action('pre_comment_on_post', $comment_post_ID);
    38 }
    48 }
    39 
    49 
    42 $comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
    52 $comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
    43 $comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
    53 $comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
    44 
    54 
    45 // If the user is logged in
    55 // If the user is logged in
    46 $user = wp_get_current_user();
    56 $user = wp_get_current_user();
    47 if ( $user->ID ) {
    57 if ( $user->exists() ) {
    48 	if ( empty( $user->display_name ) )
    58 	if ( empty( $user->display_name ) )
    49 		$user->display_name=$user->user_login;
    59 		$user->display_name=$user->user_login;
    50 	$comment_author       = $wpdb->escape($user->display_name);
    60 	$comment_author       = $wpdb->escape($user->display_name);
    51 	$comment_author_email = $wpdb->escape($user->user_email);
    61 	$comment_author_email = $wpdb->escape($user->user_email);
    52 	$comment_author_url   = $wpdb->escape($user->user_url);
    62 	$comment_author_url   = $wpdb->escape($user->user_url);
    55 			kses_remove_filters(); // start with a clean slate
    65 			kses_remove_filters(); // start with a clean slate
    56 			kses_init_filters(); // set up the filters
    66 			kses_init_filters(); // set up the filters
    57 		}
    67 		}
    58 	}
    68 	}
    59 } else {
    69 } else {
    60 	if ( get_option('comment_registration') || 'private' == $status->post_status )
    70 	if ( get_option('comment_registration') || 'private' == $status )
    61 		wp_die( __('Sorry, you must be logged in to post a comment.') );
    71 		wp_die( __('Sorry, you must be logged in to post a comment.') );
    62 }
    72 }
    63 
    73 
    64 $comment_type = '';
    74 $comment_type = '';
    65 
    75 
    66 if ( get_option('require_name_email') && !$user->ID ) {
    76 if ( get_option('require_name_email') && !$user->exists() ) {
    67 	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
    77 	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
    68 		wp_die( __('Error: please fill the required fields (name, email).') );
    78 		wp_die( __('<strong>ERROR</strong>: please fill the required fields (name, email).') );
    69 	elseif ( !is_email($comment_author_email))
    79 	elseif ( !is_email($comment_author_email))
    70 		wp_die( __('Error: please enter a valid email address.') );
    80 		wp_die( __('<strong>ERROR</strong>: please enter a valid email address.') );
    71 }
    81 }
    72 
    82 
    73 if ( '' == $comment_content )
    83 if ( '' == $comment_content )
    74 	wp_die( __('Error: please type a comment.') );
    84 	wp_die( __('<strong>ERROR</strong>: please type a comment.') );
    75 
    85 
    76 $comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0;
    86 $comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0;
    77 
    87 
    78 $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
    88 $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
    79 
    89 
    80 $comment_id = wp_new_comment( $commentdata );
    90 $comment_id = wp_new_comment( $commentdata );
    81 
    91 
    82 $comment = get_comment($comment_id);
    92 $comment = get_comment($comment_id);
    83 if ( !$user->ID ) {
    93 do_action('set_comment_cookies', $comment, $user);
    84 	$comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000);
       
    85 	setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
       
    86 	setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
       
    87 	setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
       
    88 }
       
    89 
    94 
    90 $location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
    95 $location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
    91 $location = apply_filters('comment_post_redirect', $location, $comment);
    96 $location = apply_filters('comment_post_redirect', $location, $comment);
    92 
    97 
    93 wp_redirect($location);
    98 wp_safe_redirect( $location );
    94 
    99 exit;
    95 ?>