Your premium source for custom modification services for phpBB


HomeForumsBlogMOD ManagerFAQSearchRegisterLogin

Comments January 18, 2007

Designing the Post Approval MOD – Part III

Filed under: Anti-spam, MOD Writing — Dave Rathbun @ 8:18 am CommentsComments (17) 

So far I have talked about a couple of design decisions (whether to use standard or extra tables, where to put the post_approved flag) and the impact on the development of my Post Approval MOD. I’m happy to say that I have the MOD 80% complete and installed on the main board where it’s needed. So far it appears to be working fine. The next step is to complete the moderator functionality for this MOD.

Here are a few screen shots showing the process. (And yes, my first test board for this MOD uses a green template, deal with it. :-P ) First, here’s what the topic listing on viewforum.php looks like:

Moderator logged in

Normal user or guest

Notice that the moderator gets to see the actual topic with the tag [Approval Required] while a regular user or guest doesn’t see the topic title at all. That’s to protect users from seeing even a hint of spam in a topic title until it’s approved.

Now, suppose that you’re a user and you’re brand new on the board. When you start posting you have not yet been approved as a “trusted” user. So notice the header that appears over the top of the posting screen:

This is designed so that users are aware of what is going to happen. I really don’t care what spammers think :-P but I want my regular users to be informed about what’s going on. Most users have probably experienced spam in one form or another, and so I hope they understand the reasons behind the restrictions. The last thing I want to do is lose users because of my anti-spam techniques.

It’s for that reason that I built in what I consider to be one of the most important features of this MOD: a user can see or even edit their post while it’s pending approval. After a user has entered their post, here’s what they see:

Notice that the Edit button is available. They can even reply to their own post, although other users cannot. Here’s what a normal user will see when trying to view this post:

And finally, here’s what a moderator sees when they view the post:

They have a new button next to the delete and IP buttons that allows them to approve the post. That part is completed; what’s left is to create an “approve all” link on the user profile so that a moderator can approve all of the posts for a specific user at once. I have been thinking about a “mass approval” option much like the “mass lock” or “mass delete” features of the moderator control panel, and so far I have decided not to offer that as a feature. I want the moderators to actually read / review each post prior to approving it. Since there is no “unapprove” option (and I don’t intend to create one) I want the moderators to review the posts individually.

The “approve all” link on the user profile is an exception. If a user has posted two or three times and they are obviously not a spammer, it should be okay to go ahead and approve the rest of their posts without reviewing them individually. But other than that, I don’t think I want to provide a “mass approve” function.


  1. Another effective way of spam fighting. Too bad those moderators have to check all the individual posts.

    Comment by Ganon_Master — January 18, 2007 @ 4:35 pm

  2. First, thanks for the comment! Nice to see a new name on the approval list. As to your question…

    Too bad those moderators have to check all the individual posts.

    Yes, and no. :-) After a certain number of posts (configured via the admin control panel) a user is updated to “trusted” status, and their posts are no longer moderated. If you get, for example, 10-12 new users a day, and about 30% of them post (that number is high, by the way, based on my experience with different boards) then you’re only looking at 3-4 posts a day that fall under this process. Even if you get 100+ new users a day (only an extremely large board like phpbb.com probably falls into this range) you still only have 30-35 posts a day to moderate.

    I am willing to pay that cost for the result of never having to be embarrassed by a porn spammer on my boards ever again. :-) I expect that most moderators hit that many topics in the normal course of their duties anyway.

    When I started this development process I was not aware of anything like this being available. I have since found that there is at least one very powerful full-featured MOD in the development queue. Writing my own gives me a feeling of satisfaction :-) and the ability to determine exactly what features are important to me, not to mention what “costs” I am willing to pay. In a zero-tolerance environment this solution will work well, as I see it. The cost is, as you comment, the moderators will have to check out a lot of individual posts.

    But we already do that anyway. :-)

    I’m curious… if you happen to see this response and can comment, were you aware of the “trusted” status that a user attains after a set number of posts? Does that change your opinion of this MOD? Let’s assume your board gets 400 new posts a day (one of my busier boards does that). How many of those posts are guaranteed to require attention? I think the percentages are in our favor.

    I will run some numbers and post back. :-)

    Comment by dave.rathbun — January 18, 2007 @ 7:36 pm

  3. I ran some numbers, and came up with the following: if you have what I consider an appropriate number of active moderators for your posting frequency, each moderator will approve – on average – about two “untrusted” posts per day. I posted the details in a later blog post if you are interested. 8)

    Comment by dave.rathbun — January 19, 2007 @ 8:42 am

  4. Although you’re doing great, I still don’t like this idea, and it looks like I’m not alone. ;-)

    Anyway, if I may suggest a way of quickly locating posts awaiting approval, it would be shadow topics in a special “Moderation Queue” forum (only visible to moderators).

    Comment by damnian — January 19, 2007 @ 11:05 am

  5. I already have the moderator queue designed. It’s going to be a special search option, since the approval is based on posts rather than topics it seems to make more sense that way. The output format for this search will automatically use the “posts” template with a large number of characters. The idea would be to show enough of the text that the moderator can make a judgement as to whether it’s spam or not right then and there.

    Another advantage of using search… it seems that I always have to remind folks that moderator is not a global setting. :-) Even if you are a moderator of forum A you are not automatically a moderator of forum B. So having a “moderator only” forum doesn’t really work. You need to see the posts in context, meaning within the scope of their current forum location. By hooking into the search, I have an opportunity to limit the display to those forums where $is_auth['auth_mod'] is true.

    Comment by dave.rathbun — January 19, 2007 @ 1:48 pm

  6. I am aware of the fact that moderator is not a global setting. What I meant was a Private [Hidden] forum with View and Read permissions set to ON for the Moderators closed group. ;-)

    I would prefer adding a few lines directly to the post approval code (i.e. queue insertion and removal) over significant modifications to an unrelated module (i.e. search).

    Comment by damnian — January 19, 2007 @ 2:39 pm

  7. The modifications are not significant. :-) I have made many modifications to the search process over the years, in fact I have a blog post queued up about that. All you have to do is add a new search_id and a query. That’s it. It takes care of the rest.

    And regarding moderators… you are assuming that there is a moderators group. :-) There does not have to be. Individual users can be moderators as well as groups. I agree that what you are describing is more common, but it can’t be a requirement for this MOD. It might seem extreme, but let’s say that there is a user that is a moderator of only one forum. If all of the “pending” topics were displayed as shadow topics in a special moderator forum, they might see topics they are not allowed to see, right?

    A moderator forum is often used for moderators to talk to each other about moderation tasks. But I don’t envision having it be a requirement or even an option for this MOD.

    Trust me, the search modifications are going to be very minimal. And what is the moderator approval queue other than a list of posts… which is hardly unrelated to the core function of search. :-P

    Comment by dave.rathbun — January 19, 2007 @ 3:31 pm

  8. Since there is no “unapprove” option (and I don’t intend to create one) I want the moderators to review the posts individually.

    “Unapprove” would allow you to put posts on moderated status and get in touch with the author to instruct them to tidy up the post. People on the road to “achieving” moderated status would need this. This would change the mod from just a spam fighting mod to a proper moderation mod, where you can keep certain people whose contributions you value, on moderated status because they misbehave too often.

    Comment by Merlin Sythove — January 26, 2007 @ 4:40 am

  9. Welcome to my blog, Merlin, and thanks for your input.

    I have to admit I am rethinking the “unapprove” option. I thought about an implementation that would be similar to a “report a post” feature. Some of my moderators and even some of my users have requested a feature like that. Since I already have the code in place to mask out the post content and put it into an “approval queue” it seems to me that it would not be hard to extend the MOD to do that. The worst part is coming up with a graphic for the button that makes sense… :-P

    I also think that there would have to be some sort of control in place, meaning Joe Anybody can’t register for the board and start putting each and every post in the moderator queue. So maybe there are additional levels of user: new and untrusted, trusted to post, and then semi-moderator status. Those on semi-moderator status would be trusted to not abuse the power of “report-a-post” and anything they mark would go into the moderator queue and the content would be masked from regular users. Anything a trusted user marks would go into a queue but the content would not be masked. And un-trusted users would not even see the option.

    But the main intent of this MOD – at least initially – was not really to create a moderator queue but to keep the obvious spammers at bay. You know the type; they swoop in, register with an inappropriate web site, and enter a post with about 40 or 50 links, and leave. They’re not going to stick around and try to post on-topic enough to obtain actual approved status.

    Another wrinkle that occurred to me as well. In reading about posting bots (you need to know your enemy to defeat him, right?) I see over and over the fact that some of the bots are smart enough to find an “off topic” or “general discussion” area to post in. Well, in my case the “Off Topic” area does not increment your post count. So it seems to me to make sense to also integrate that feature into this MOD. That means that if you need “X” posts to be approved to obtain “trusted user” status, that any posts in a non-post-count forum will not be counted towards attaining trusted status.

    As is often the case, what starts out simple becomes a major project,yes? Or as I’ve said before… YALMP. :lol:

    Comment by dave.rathbun — January 26, 2007 @ 9:10 am

  10. You could have a stop-sign or no-entry-sign mini-icon (visible to mods) to change a post to unapproved. This would have the same position as the “approve” mini-icon since you will have one or the other.
    A small paper sheet with red lettering springs to mind as well, but maybe that is too tiny to see. A big red exclamation mark may work too. And the green V checkmark for “approve” of course. As a side note, whenever I work on the interface I make it a habit to put tooltip notes on buttons with a decent explanation.

    I have an “admin” link on all my pages (in the header and footer templates). For the admin it goes to the admin panel. For anyone else it opens the email page to mail the mods or admin about something – usually that a discussion goes out of control, or something on the forum is broken or whatever. The threshold is of coure that a user has to SAY what is wrong and why, this prevents fooling around with the system – a button to automatically report a post, without knowing who did it and why, I would feel is useless.

    The “moderator que” I presume is a special search page with all posts with the moderated flag set? Or a page with a series of links only so you will see the post in its context after you click?

    Comment by Merlin Sythove — January 27, 2007 @ 4:03 am

  11. You could have a stop-sign or no-entry-sign mini-icon (visible to mods) to change a post to unapproved. … A big red exclamation mark may work too.

    Either of those ideas would work. I think the exclamation point would work best, as it’s fairly universal but also distinct enough to be visible if it is small.

    This would have the same position as the “approve” mini-icon since you will have one or the other.

    Sure, that makes sense.

    I make it a habit to put tooltip notes on buttons with a decent explanation.

    I do that as well. It’s not visible in the screen shots, but the $lang string used to describe the button is listed both as the “alt” and the “title” text for the button.

    The “moderator que” I presume is a special search page with all posts with the moderated flag set? Or a page with a series of links only so you will see the post in its context after you click?

    The moderator queue is not as yet completed. :-) It will be a modification to the search.php code. There will be a specific search_id (like “egosearch” or “unanswered”) that will be passed in. The output will use the “Posts” rather than “Topics” output template. That way a moderator can easily view the posts that are marked “pending approval” for all of the forums where they have moderator status. The “quick-and-dirty” version will just be a list of posts; the moderator will still have to click the link to view the post and approve it. A more formal version (if it’s ever created) might allow the moderator to click checkboxes on teh search output and mass approve posts right from that screen. That requires more surgery to be done to search.php, but I have already done that for other MODs. I have written code that allows you to use search.php to view all of your “watched” topics. When you do, there is a checkbox by each topic. You can “mass remove” topics from your watched list by clicking checkboxes and submitting the form. evil&lt3 (another frequent commenter on my blog) has started to release a MOD for that at phpbb.com. I use the same output for “Favorite Topics” as well. So adding another function with checkboxes would be simple, as I would just tie into code that I’ve already written.

    I like your comments on the “report a post” concept as well. I have some thoughts on how to design that which I will save for another day. :-)

    Comment by dave.rathbun — January 27, 2007 @ 11:54 am

  12. Hi there Mr. Rathburn. Would you please contact me with some facts on how to get able to test this mod. I have a big problem: i need an approval-system for phpbb, which will make it possible to set general approval to a new registered user until he has a valid amount of postings. Your mod seems to be able to release this function. So i try to contact you via this comment, cause i did not find any email adress.

    Regards… Marc from Germany

    Comment by Marc Doehler — June 5, 2007 @ 4:06 pm

  13. Marc, at this time I don’t have this MOD written up for release. It is in use on several of my boards but in an “unfinished” form. There is a Post Approval MOD at phpbb.com that seems to have quite a few more features than mine does, and it is probably either released or very near that status by now. I will try to find a link and post it here. I have your email address from your comment as well.

    Thanks for your interest, I will see what I can do for you. :-)

    Comment by dave.rathbun — June 5, 2007 @ 8:56 pm

  14. hiii run an MBA forum with projects etc which members with only 3 posts or above can dowload. now this as xpected is leading to lot of irrelevant posts just for sake of crossing 3 posts barrier

    is thr an way i can put the first three posts under moderation/approval queue….i searched but found an approval mod(that too abondend with no support). also it didnt have any feature to do this only for first 3 posts or so.

    if such a mod doesnt exisit , i am open to custom development offer, though we are a not for profit students forum :) please lemme know

    Comment by abhishek — August 5, 2007 @ 3:54 am

  15. Is there a way? Most certainly. :-D One of the best parts about phpBB is how easy it is to extend. Is there a way already written that you can download and install? That, unfortunately, I don’t know.

    The challenge for you – as I see it – is that you don’t just want to require a minimum amount of posts, you want a minimum amount of approved posts. That’s a bit trickier, but certainly is not impossible.

    I am not currently taking on new requests as I am trying to clear my project backlog. I would suggest that you post your project request with as much detail as you can on the MOD Requests forum at phpbb.com and see what happens.

    Good luck with your project. 8)

    Comment by dave.rathbun — August 5, 2007 @ 12:31 pm

  16. Where can I download this MOD?

    Comment by Marcx — March 17, 2008 @ 9:38 pm

  17. Hi, Marcx, and thank you for visiting. Unfortunately this MOD has never been written up and released. There is a MOD that is released at phpbb.com which seems to be quite popular for phpbb2 so you might take a look at it. I wanted something that worked differently, so I wrote my own. The series of blog posts was more about the design process.

    Approval MOD

    Hope this helps.

    Comment by Dave Rathbun — March 18, 2008 @ 8:18 am

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress