/home/coolpkct/www/websites/alylela.com/wp-content/plugins/dw-question-answer/inc/Posts/Comment.php
<?php
class DWQA_Posts_Comment {
public function __construct() {
add_filter( 'comment_post_redirect', array( $this, 'hook_redirect_comment_for_answer'), 10, 2 );
// Comment form template for DW Question Answer
remove_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' );
add_action( 'comment_form', array( $this, 'wp_comment_form_unfiltered_html_nonce' ) );
add_filter( 'comment_id_fields', array( $this, 'comment_form_id_fields_filter' ), 10, 3 );
add_filter( 'get_comment_text', array( $this, 'sanitizie_comment' ), 10, 2 );
//add_filter( 'get_comment', array( $this, 'comment_author_link_anonymous' ) );
add_action( 'wp_insert_comment', array( $this, 'reopen_question_have_new_comment' ) );
// Prepare comment content
add_filter( 'dwqa_pre_comment_content', 'wp_kses_data', 10 );
}
/**
* Change redirect link when comment for answer finished
* @param string $location Old redirect link
* @param object $comment Comment Object
* @return string New redirect link
*/
public function hook_redirect_comment_for_answer( $location, $comment ) {
if ( 'dwqa-answer' == get_post_type( $comment->comment_post_ID ) ) {
$question_id = dwqa_get_post_parent_id( $comment->comment_post_ID );
if ( $question_id ) {
return get_post_permalink( $question_id ).'#'.'answer-' . $comment->comment_post_ID . '&comment='.$comment->comment_ID;
}
}
return $location;
}
/**
* Displays form token for unfiltered comments. Override wp_comment_form_unfiltered_html_nonce custom for dwqa
*
* Backported to 2.0.10.
*
* @since 2.1.3
* @uses $post Gets the ID of the current post for the token
*/
public function wp_comment_form_unfiltered_html_nonce() {
$post = get_post();
$post_id = $post ? $post->ID : 0;
if ( current_user_can( 'unfiltered_html' )
&& 'dwqa-answer' != get_post_type( $post_id ) ) {
wp_nonce_field( 'unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment_disabled', false );
echo "<script>( function() {if ( window===window.parent ) {document.getElementById( '_wp_unfiltered_html_comment_disabled' ).name='_wp_unfiltered_html_comment';}} )();</script>\n";
} elseif ( current_user_can( 'unfiltered_html' )
&& 'dwqa-answer' == get_post_type( $post_id ) ) {
wp_nonce_field( 'unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment_answer_disabled', false );
echo "<script>( function() {if ( window===window.parent ) {document.getElementById( '_wp_unfiltered_html_comment_answer_disabled' ).name='_wp_unfiltered_html_comment';}} )();</script>\n";
}
}
// We have many comment fields on single question page, so each of them need to be unique in ID
public function comment_form_id_fields_filter( $result, $id, $replytoid ) {
if ( 'dwqa-answer' == get_post_type( $id ) ) {
$result = str_replace( "id='comment_post_ID'", "id='comment_post_".$id."_ID'", $result );
$result = str_replace( "id='comment_parent'", "id='comment_".$id."_parent'", $result );
}
return $result;
}
public function sanitizie_comment( $content, $comment ) {
$post_type = get_post_type( $comment->comment_post_ID );
if ( $post_type == 'dwqa-question' || $post_type == 'dwqa-answer' ) {
$content = str_replace( '<br>', '<br>', $content );
$content = make_clickable( $content );
$content = preg_replace( '/( <a[^>]* )( > )/', '$1 target="_blank" $2', $content );
}
return $content;
}
public function get_comments() {
if ( isset( $_GET['post'] ) ) {
$comments = get_comments( array(
'post_id' => intval( $_GET['post'] ),
'status' => 'approve',
) );
wp_list_comments( array(
'style' => 'ol',
'callback' => 'dwqa_question_comment_callback',
), $comments );
}
exit( 0 );
}
public function comment_author_link_anonymous( $comment ) {
// global $current_comment;
if ( $comment->user_id <= 0 && ( get_post_type( $comment->comment_post_ID ) == 'dwqa-question' || get_post_type( $comment->comment_post_ID ) == 'dwqa-answer' ) ) {
$comment->comment_author = __( 'Anonymous','dw-question-answer' );
}
return $comment;
}
//Update question status when have new comment
public function reopen_question_have_new_comment( $comment_ID ){
$comment = get_comment( $comment_ID );
$comment_post_type = get_post_type( $comment->comment_post_ID );
$question_id = false;
if ( 'dwqa-answer' == $comment_post_type ) {
$question_id = dwqa_get_post_parent_id( $comment->comment_post_ID );
} elseif ( 'dwqa-question' == $comment_post_type ) {
$question_id = $comment->comment_post_ID;
}
if ( $question_id ) {
$question_status = get_post_meta( $question_id, '_dwqa_status', true );
if ( ! user_can( $comment->user_id, 'edit_posts' ) ) {
if ( 'resolved' == $question_status ) {
update_post_meta( $question_id, '_dwqa_status', 're-open' );
}
}
}
if ( $comment->user_id ) {
add_post_meta( $question_id, '_dwqa_followers', $comment->user_id );
}
}
}
?>