WordPress.org

Ready to get started?Download WordPress

Forums

bbPress
No required registration to reply, but moderation step (11 posts)

  1. mitch123
    Member
    Posted 2 years ago #

    I'd like visitors to be able to post replies to forum topics without having to create an account (= like when option "Allow guest users without accounts to create topics and replies" is active), BUT I'd like to be able to moderate replies before they show up on the website for real.

    Is this possible?

    Thnx!

    http://wordpress.org/extend/plugins/bbpress/

  2. John James Jacoby
    BuddyPress/bbPress Lead
    Plugin Author

    Posted 2 years ago #

    Not in bbPress core, but a plugin could fairly easily achieve this.

  3. ianhaycox
    Member
    Posted 2 years ago #

    I had a similar requirement, and wanted some form of moderation so just hacked up the following.

    Basically it changes the post status to 'pending' for new topics and replies. It would be nice if the Topics and Replies menu options showed a little count bubble for Pending items (like Comments), but I couldn't find a supported way to add that.

    As an admin just edit the pending topic/reply and publish for it to appear.

    If I have some time I see if I can make this a plugin to honour the Comment and BBPress comment and anon posting options etc.

    Comments and improvements welcome

    Add the following to your theme's functions.php file.

    class bbPressModeration {
    
    	function __construct() {
    		add_filter('bbp_new_topic_pre_insert', array($this, 'pre_insert'));
    		add_filter('bbp_new_reply_pre_insert', array($this, 'pre_insert'));
    
    		add_filter('bbp_has_topics_query', array($this, 'query'));
    		add_filter('bbp_has_replies_query', array($this, 'query'));
    
    		add_filter('bbp_get_topic_permalink', array($this, 'permalink'), 10, 2);
    		add_filter('bbp_get_reply_permalink', array($this, 'permalink'), 10, 2);
    
    		add_filter('bbp_get_topic_title', array($this, 'title'));
    
    		add_filter('bbp_get_reply_content', array($this, 'content'));
    
    		add_filter('bbp_current_user_can_publish_replies', array($this, 'can_reply'));
    	}
    
    	// Mark all new topics and replies as 'pending'
    	function pre_insert($data) {
    		global $wpdb;
    
    		// Check if user already published unless anonymous (post_author = 0)
    		$sql = $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author = %d AND post_author <> 0 AND post_type IN ('topic','reply') AND post_status = 'publish'", $data['post_author']);
    		$count = $wpdb->get_var($sql);
    		if (!$count) {
    			// Anon or User never published topic/reply so mark as pending.
    			// Maybe notify admin ?
    			$data['post_status'] = 'pending';
    		}
    		return $data;
    	}
    
    	// Include pending topics and replies in the query
    	function query($bbp) {
    		if (!bbp_is_query_name( 'bbp_widget' )) {
    			$bbp['post_status'] .= ',pending';
    		}
    		return $bbp;
    	}
    
    	// Trash the permalink for pending topics/replies
    	// Would be nice if there was no link at all.
    	function permalink($permalink, $topic_id) {
    		global $post;
    
    		if ($post && $post->post_status == 'pending') {
    			return '#';
    		}
    		return $permalink;
    	}
    
    	// Alter pending topic title
    	function title($title) {
    		global $post;
    
    		if ($post && $post->post_status == 'pending') return $title . ' ' . __('(Awaiting moderation)', 'bbpress');
    
    		return $title;
    	}
    
    	// Hide content for pending replies
    	function content($content) {
    		global $post;
    
    		if ($post && $post->post_status == 'pending') return __('(Awaiting moderation)', 'bbpress');
    
    		return $content;
    	}
    
    	// Check if newly created topic is published and
    	// disable replies until it is.
    	function can_reply($retval) {
    		if (!$retval) return $retval;
    
    		return ('publish' == bbp_get_topic_status());
    	}
    
    }
    
    $bbpressmoderation = new bbPressModeration();

    Ian

  4. Martin
    Member
    Posted 2 years ago #

    Oh wow, I'd love to see this as a plugin so I don't have to go hacking core theme files.

    Any chance you could make this happen?

  5. ianhaycox
    Member
    Posted 2 years ago #

    Fairly easy to make into a plugin,

    1. Create a directory /wp-content/plugins/bbmod

    2. Paste the following into bbmod.php

    <?php
    /*
    Plugin Name: BBPress moderation
    Description: BBPress moderation hack
    Author: Ian Haycox
    Version: 0.1
    Author URI: http://ianhaycox.com
    */

    3. Paste the code in my reply above in bbmod.php below the comment block

    4. Save, copy bbmod.php to your server wp-content/plugins/bbmod

    5. Visit Admin->plugins and activate.

    6. Visit ianhaycox.com/donate :-)

    Note - this is a temporary hack as I expect moderation is something bbpress will add later and do a much better job than I can.

    Ian.

  6. Martin
    Member
    Posted 2 years ago #

    Only new'ish to WP and bbPress, having migrated from a 2 year Drupal installation.

    Cool to see the relative ease in making plugins, though I'm no coder dude.

    Thank you so much for the snippet which works as expected so I'm a happy camper, for the moment.

    I do look forward to seeing more control and user mgmt and spam control plugins or built into bbPress such as WangGuard and Askismet (being my favorite 2 at the moment)

  7. ianhaycox
    Member
    Posted 2 years ago #

    I had a bit of free time and made this into a plugin.

    Added some plugin settings and the ability to email the admin when a topic or reply is held for moderation.

    See here,

    http://wordpress.org/extend/plugins/bbpressmoderation/

    Ian.

  8. Martin
    Member
    Posted 2 years ago #

    Yeah, I know. I installed it this morning :) Thank you.

    Is there any way to change the status from Pending to either Spam or Approved. Seems like the approved status requires me to edit the Reply and Publish. Is this right?

  9. ianhaycox
    Member
    Posted 2 years ago #

    Yes to 'Approve' it you need to edit the topic/reply and Publish.

    To mark as Spam, visit the Admin->Replies menu, hover over the item and click Spam

    It would be handy if in the list of topics/replies if there was an Approve link (like the Spam one). I guess it's possible via a filter on post_row_actions Maybe next version

    Ian.

  10. Martin
    Member
    Posted 2 years ago #

    It certinly would be really handy.
    Having to edit to approve also changes IP of poster - well, it does in my setup, anyway.

    I also don't think the Spam hover functions when browsing the Pending group. Maybe an ommission in bbPress at the core.

  11. Alain RONK
    Member
    Posted 1 year ago #

    Hello !

    Why any visitor can open a topic and write a response, while only REGISTERED users (username + password) will have access to the box for reply notification by mail?

    I would like the mail notification is ok for all users, registered and not registered users.
    To date, no response obtained in any forum, and no plugin found …

    If anyone can help me …

    Best regards
    Alain
    My Website : http://www.modelisme-racer.fr

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic

Tags