881 | | |
882 | | /** @todo Use API instead of SELECTs. */ |
883 | | if ( $user_ID) { |
884 | | $comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND (comment_approved = '1' OR ( user_id = %d AND comment_approved = '0' ) ) ORDER BY comment_date_gmt", $post->ID, $user_ID)); |
885 | | } else if ( empty($comment_author) ) { |
886 | | $comments = get_comments( array('post_id' => $post->ID, 'status' => 'approve', 'order' => 'ASC') ); |
887 | | } else { |
888 | | $comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND ( comment_approved = '1' OR ( comment_author = %s AND comment_author_email = %s AND comment_approved = '0' ) ) ORDER BY comment_date_gmt", $post->ID, wp_specialchars_decode($comment_author,ENT_QUOTES), $comment_author_email)); |
| 881 | |
| 882 | $comments = get_comments( array('post_id' => $post->ID, 'order' => 'ASC') ); |
| 883 | $comments_parents = array(); |
| 884 | foreach ( $comments as $k=>$comment ) { |
| 885 | if ( 1 == $comment->comment_approved ) |
| 886 | continue; |
| 887 | |
| 888 | if ( $user_ID ) { |
| 889 | if ( ( "0" == $comment->comment_approved ) && ( $user_ID == $comment->user_id ) ) |
| 890 | continue; |
| 891 | } |
| 892 | else { |
| 893 | if ( ( "0" == $comment->comment_approved ) && ( wp_specialchars_decode($comment_author,ENT_QUOTES) == $comment->comment_author ) && ( $comment_author_email == $comment->comment_author_email )) |
| 894 | continue; |
| 895 | } |
| 896 | $comments_parents[ $comment->comment_ID ] = $comment->comment_parent; |
| 897 | unset($comments[$k]); |
890 | | |
| 899 | |
| 900 | function find_parents_route( &$comments_parents, $node ) { |
| 901 | if ( !isset($comments_parents[$node]) ) |
| 902 | return $node; |
| 903 | if ( $comments_parents[$node] == 0 ) |
| 904 | $comments_parents[$node] = 0; |
| 905 | else if ( isset ( $comments_parents[$node] ) ) |
| 906 | $comments_parents[$node] = find_parents_route( &$comments_parents, $comments_parents[$node]); |
| 907 | return $comments_parents[$node]; |
| 908 | } |
| 909 | |
| 910 | foreach ( $comments_parents as $k=>$v ) { |
| 911 | find_parents_route( $comments_parents, $k ); |
| 912 | } |
| 913 | |
| 914 | foreach ( $comments as $comment ) { |
| 915 | if ( array_key_exists ( $comment->comment_parent , $comments_parents ) ) { |
| 916 | $comment->comment_parent = $comments_parents[$comment->comment_parent]; |
| 917 | } |
| 918 | } |
| 919 | |