AP_Form_Hooks::submit_comment_form()
Description #
Process comment form.
Source #
File: includes/class-form-hooks.php
public static function submit_comment_form() { global $comment; $editing = false; $form = anspress()->get_form( 'comment' ); /** * Action triggered before processing comment form. * * @since 4.1.0 */ do_action( 'ap_submit_comment_form' ); $values = $form->get_values(); $post_id = ap_sanitize_unslash( 'post_id', 'r' ); // Check nonce and is valid form. if ( ! $form->is_submitted() || ! ap_user_can_comment( $post_id ) ) { ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => __( 'Trying to cheat?!', 'anspress-question-answer' ) ), ) ); } if ( $form->have_errors() ) { ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => __( 'Unable to post comment.', 'anspress-question-answer' ) ), 'form_errors' => $form->errors, 'fields_errors' => $form->get_fields_errors(), ) ); } $comment_id = ap_sanitize_unslash( 'comment_id', 'r' ); if ( ! empty( $comment_id ) ) { $comment = get_comment( $comment_id ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited if ( 'anspress' !== $comment->comment_type || ! ap_user_can_edit_comment( $comment_id ) ) { ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => __( 'You cannot edit this comment.', 'anspress-question-answer' ) ), ) ); } // Check if content is changed. if ( $values['content']['value'] === $comment->comment_content ) { ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => __( 'There is no change in your comment.', 'anspress-question-answer' ) ), ) ); } $updated = wp_update_comment( array( 'comment_ID' => $comment_id, 'comment_content' => $values['content']['value'], ) ); if ( ! is_wp_error( $updated ) ) { /** * Fires immediately after a comment is updated in the database. * * @since 4.1.2 * * @param int $comment_id The comment ID. */ do_action( 'ap_edit_comment', $comment_id ); $c = get_comment( $comment_id ); $count = get_comment_count( $c->comment_post_ID ); ob_start(); $comment = $c; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited ap_get_template_part( 'comment' ); $html = ob_get_clean(); $result = array( 'success' => true, 'action' => 'edit-comment', 'commentsCount' => array( // translators: %d is count of comments. 'text' => sprintf( _n( '%d Comment', '%d Comments', $count['all'], 'anspress-question-answer' ), $count['all'] ), 'number' => $count['all'], 'unapproved' => $count['awaiting_moderation'], ), 'snackbar' => array( 'message' => __( 'Comment updated successfully', 'anspress-question-answer' ) ), 'html' => $html, 'post_id' => $c->comment_post_ID, 'comment_id' => $c->comment_ID, 'hide_modal' => 'comment', ); ap_ajax_json( $result ); } ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => $updated->get_error_message() ), ) ); } $_post = ap_get_post( $post_id ); $type = 'question' === $_post->post_type ? __( 'question', 'anspress-question-answer' ) : __( 'answer', 'anspress-question-answer' ); // Check if not restricted post type. if ( in_array( $_post->post_status, array( 'draft', 'pending', 'trash' ), true ) ) { ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => sprintf( // Translators: %s contain post type name. __( 'Commenting is not allowed on draft, pending or deleted %s', 'anspress-question-answer' ), $type ), ), ) ); } if ( is_user_logged_in() ) { $user = wp_get_current_user(); $user_id = $user->ID; $author = wp_slash( $user->display_name ); $email = wp_slash( $user->user_email ); $url = wp_slash( $user->user_url ); } else { $user_id = 0; $author = $values['author']['value']; $email = $values['email']['value']; $url = $values['url']['value']; } $commentdata = array( 'comment_post_ID' => $_post->ID, 'comment_author' => wp_slash( $author ), 'comment_author_email' => wp_slash( $email ), 'comment_author_url' => wp_slash( $url ), 'comment_content' => trim( $values['content']['value'] ), 'comment_type' => 'anspress', 'comment_parent' => 0, 'user_id' => $user_id, ); /** * Filter comment content before inserting to DB. * * @param bool $apply_filter Apply this filter. * @param string $content Un-filtered comment content. * @since 3.0.0 */ $commentdata = apply_filters( 'ap_pre_insert_comment', $commentdata ); // Insert new comment and get the comment ID. $comment_id = wp_new_comment( $commentdata, true ); if ( ! is_wp_error( $comment_id ) && false !== $comment_id ) { $c = get_comment( $comment_id ); do_action( 'ap_after_new_comment', $c ); $count = get_comment_count( $c->comment_post_ID ); ob_start(); ap_the_comments( $c->comment_post_ID ); $html = ob_get_clean(); $result = array( 'success' => true, 'action' => 'new-comment', 'commentsCount' => array( 'text' => sprintf( // Translators: %d contains count of comments. _n( '%d Comment', '%d Comments', $count['all'], 'anspress-question-answer' ), $count['all'] ), 'number' => $count['all'], 'unapproved' => $count['awaiting_moderation'], ), 'snackbar' => array( 'message' => __( 'Comment successfully posted', 'anspress-question-answer' ) ), 'html' => $html, 'post_id' => $c->comment_post_ID, 'comment_id' => $c->comment_ID, 'hide_modal' => 'comment', ); ap_ajax_json( $result ); } // Lastly output error message. ap_ajax_json( array( 'success' => false, 'snackbar' => array( 'message' => $comment_id->get_error_message() ), ) ); }
Expand full source code Collapse full source code View on GitHub: includes/class-form-hooks.php:758
Add your comment