4

WordPress has a useful option for comment moderation in its Discussion Settings panel called "Before a comment appears: Comment author must have a previously approved comment".

screenshot

How can one configure Drupal to approve future comments if a user has a previously approved comment in the site?

This is a follow-up from an unresolved post on Drupal.org: Auto-publish comments after that anonymous user’s previous comments have been approved [X] number of times

3 Answers 3

3

You need to create a small custom module. In D6 you override hook_comment:

function MYMODULE_comment(&$comment, $op) {
    if ($op=='insert' && !$comment['uid'] && $comment['status']==COMMENT_NOT_PUBLISHED){ //only perform on operating  insert for new comments and if the user is anonymous
        // query database for a previously approved comment by this email
       $has_published=db_result(db_query("SELECT cid FROM {comments} WHERE status=%d AND mail='%s'", COMMENT_PUBLISHED, $comment['mail']));  
       if ($has_published){
          db_query("UPDATE {comments} SET status=%d WHERE cid=%d",COMMENT_PUBLISHED,$comment['cid']); //set the current comment to unpublished
          $comment['status']=COMMENT_PUBLISHED; //return with a status of not published so the user is notified that their comment is  awaiting approval
       }
    }
}

It should be easy to convert this to D7 using hook_comment_insert.

The solution was originally suggested here.

2
  • Looks great! This would be a good idea for a contributed module.
    – Mike Eng
    Commented Sep 30, 2011 at 16:00
  • 1
    Would it be possible to update the answer for current Drupal 7 ?
    – ttoine
    Commented Jun 14, 2013 at 16:16
4

If you don't have programming skills use the Rules module.

2
1

You can use the Comment Trust module (Drupal 7 only) in order to auto-approve comments from trusted visitors.

Comment Trust auto-approves comments by users with previously-approved comments. It rewards trusted commenters with immediate approvals, while requiring you to approve the comments by new visitors. Works for both anonymous and authenticated users.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.