MyBB 1.4 Admin CP – The Complete Overview (Part 3)

Welcome back for another overview of MyBB 1.4’s Administrator Control Panel – this time, we’ll be covering the “Users & Groups” as well as some of the technical decisions made.

A portion of code in the Users ACP page

Users & Groups


Like many other sections of the new Admin CP, the user management section is quite different from what you’ll be familiar with in MyBB 1.2. The focus of the new section is still very much to make it quick and easy to find and manage the users you need to. When you click on the new “Users & Groups” tab, you’ll automatically be taken to the Users page, from which you can quickly find, merge, and create new users. When you find the user you’re looking for, a number of options are available to you; including edit, delete or ban the user, show referred users, show IP addresses used by that user, and view the user’s attachments.

Find Users
Creating a User
Show IP Addresses
Merging Users

In the first screenshot above you’ll probably notice that the page begins listing all the registered users of the board in business card style. This is part of a new feature called “Views,” which is a great new way of quickly getting to the information you require regularly. Essentially, views are saved live searches. In the screenshot for example, the default “All Users” view is selected and is therefore starting to display all the registered users of the board, along with the user’s email address, registration date, the date on which they were last active, and the user’s post count. You can modify the view or create a new view which instead listed users with different information such as their primary user group, additional user groups, reputation, and so on. You can also specify search criteria and sorting options for any view you create, as well as view the results in either list or business card style.

Adding a View
Adding a View
Editing a View
Users List View

There’s a lot of information to store for each user, such as their details, profile information, and personal options. In the front-end these options have always been grouped into different sections of the User CP in order to make it easier for users to find exactly what they want to change. We’ve introduced a similar idea into the new Admin CP. When you select a user to edit you’ll be taken to a page with five tabs, on which only the relevant options are displayed. These tabs are labeled “Overview,” “Profile,” “Account Settings,” “Signature,” and “Avatar.”

Editing a User
Edit User Profile
Edit User Account Settings
Edit User Signature
Edit User Avatar
Edit User Avatar


When you head to the “Groups” section of the new Admin CP, you’ll be taken to a page that looks very similar to its 1.2 counterpart. You’ll see a list of the current user groups along with the group description, the number of users in the group, its order on the “Forum Team” page, and the relevant control options. There’s also a new icon next to each group which makes it more obvious which groups are custom groups and which are there by default. You’ll notice a significant difference when you click to edit a group. Rather than displaying all the group options at the same time, the options have been separated into four different tabs; namely, “General”, “Forums and Posts”, “Users and Permissions” and “Miscellaneous”.

Manage Groups
Adding a Group
Editing a Group
Editing a Group
Editing a Group
Editing a Group

User Titles

The user titles section hasn’t changed much from the Admin CP in 1.2. It allows you to manage the default user titles that members will automatically be assigned based on their post count. The interface is straightforward just like its MyBB 1.2 counterpart.

User Titles
Adding a User Title
Editing a User Title


One of the things we thought was messy in 1.2 was that banning options weren’t placed in the best of places in the Admin CP. You could ban a user in the banning section, but to disallow specific usernames, IPs or email addresses you would instead have to look through the settings area to find the appropriate options. In 1.4 all of these options are placed in the same place making it easier to find the specific banning options you require. We included screenshots of the “Banned IPs”, “Disallowed Usernames” and “Disallowed Email Addresses” pages in Part 1, as they are technically under the Configuration portion of the Admin CP, so here’s a screenshot of the “Banned Accounts” page which instead falls under the Users portion of the Admin CP.


Admin Permissions

The “Admin Permissions” section has received the same kind of tabbed layout used in the users and groups editing pages. The permissions are spread over five tabs which correspond to the main tabs of the Admin CP.

Admin Permissions
Default Admin Permissions
Editing Admin Permissions
Admin Group Permissions

Mass Mail

The Mass Mail section has changed a fair bit. The first thing you’ll see when you click the mass mail page is the current message queue, which contains mass emails which are still sending. Yes, this means mass emails are now sent using the task system, and you can also schedule mass emails to be sent at a later time. Aside from the obvious layout changes, many of the sending options remain the same but with one significant addition. It’s now possible to send mass emails in plain text, HTML format, or both. If sending in both formats, you can either enter a specific HTML and plain text version of the message, or have MyBB attempt to create the plain text version automatically based on the HTML version.

Mass Mail
Creating a New Email

Group Promotions

The group promotions system is a major new feature in MyBB 1.4. The system allows you to promote users of specific groups to another primary or secondary group when they meet the required criteria, such as post count, reputation and time registered. Promotions are then performed using the new task system in MyBB 1.4. This system solves many requests administrators have made to restrict forums or features to users with a specified number of posts or time registered.

Group Promotions
Adding a New Promotion
Adding a New Promotion
Editing a New Promotion
Viewing Promotion Logs

Technical Decisions

From the beginning of MyBB 1.4 development to this very day, MyBB 1.4 has nearly doubled in the amount of code compared to MyBB 1.2. Here are some figures:

MyBB 1.2:
Source code lines (not counting blank lines): 65,165 lines
Comment lines: 6,994

MyBB 1.4:
Source code lines (not counting blank lines): 113,503 lines
Comment lines: 13,722

Throughout all of MyBB 1.4’s development process, we’ve seen many new and exciting features. I’m going to talk a bit about some of the less known and more technical side of things in MyBB 1.4, so feel free to skip over this section if you lack interest when it comes to code.

PostgreSQL, SQLite 2, and SQLite 3 (via PDO) are all supported in MyBB 1.4. What’s more is we’ve implemented Slave/Master technologies allowing people to hook up multiple SQL servers. If I had two MySQL servers, the code in inc/config.php for databases would look something along the lines of this:

$config['database']['type'] = 'mysqli';
$config['database']['read']['database'] = 'mybb';
$config['database']['read']['table_prefix'] = 'mybb_';
$config['database']['read']['hostname'] = 'localhost_read_address';
$config['database']['read']['username'] = 'root';
$config['database']['read']['password'] = '';

$config['database']['write']['database'] = 'mybb';
$config['database']['write']['table_prefix'] = 'mybb_';
$config['database']['write']['hostname'] = 'localhost_write_address';
$config['database']['write']['username'] = 'root';
$config['database']['write']['password'] = '';

You could even have multiple read and write databases like:

$config['database']['type'] = 'mysqli';
$config['database']['read'][]['database'] = 'mybb';
$config['database']['read'][]['table_prefix'] = 'mybb_';
$config['database']['read'][]['hostname'] = 'localhost_read_address';
$config['database']['read'][]['username'] = 'root';
$config['database']['read'][]['password'] = '';

$config['database']['read'][]['database'] = 'mybb';
$config['database']['read'][]['table_prefix'] = 'mybb_';
$config['database']['read'][]['hostname'] = 'localhost_read_address2';
$config['database']['read'][]['username'] = 'root';
$config['database']['read'][]['password'] = '';

$config['database']['write'][]['database'] = 'mybb';
$config['database']['write'][]['table_prefix'] = 'mybb_';
$config['database']['write'][]['hostname'] = 'localhost_write_address';
$config['database']['write'][]['username'] = 'root';
$config['database']['write'][]['password'] = '';

$config['database']['write'][]['database'] = 'mybb';
$config['database']['write'][]['table_prefix'] = 'mybb_';
$config['database']['write'][]['hostname'] = 'localhost_write_address2';
$config['database']['write'][]['username'] = 'root';
$config['database']['write'][]['password'] = '';

Now, in the event that you do have multiple read / write servers setup in the config, MyBB would connect to all the write servers so it can update all of them, and select 1 read server at random. I wish we could easily detect the load of the read servers and pick the lowest one, but unfortunately that’s not very practical yet.

If you are going to have multiple read and write servers, you should put your read servers on a load balancer rather than in MyBB’s config file. The only difference is you would point the read array towards your load balancer.

On a different note, I’m sure you saw the picture at the top of this blog post depicting some code. This code is from MyBB 1.4 and it is of the new code in the ACP; specifically, the Users page in the ACP. I won’t go into detail about all the new code in the ACP but I’ll briefly cover what was shown in that picture.

The first thing you’ll notice is $form->output_row(…). What it does is fairly obvious but just in case, it outputs a row to your MyBB ACP page. The arguments for this function are as follows:

title - string The title of the row.
description - string The description of the row/field.
content - string The HTML content to show in the row.
label_for - string The ID of the control this row should be a label for.
options - array Array of options for the row cell.
row_options - array Array of options for the row container.

output_row(title, description="", content="", label_for="", options=array(), row_options=array())

Now you may be thinking we use pure HTML all the time in $form->output_row. As you look closer at the picture, however, you will also see $form->generate_select_box and $form->generate_check_box, the arguments of which are:

name - string The name of the select box.
option_list - array Array of options in key => val format.
selected - mixed Either a string containing the selected item or an array containing multiple selected items (options['multiple'] must be true)
options - array Array of options for the select box (multiple, class, id, size)

generate_select_box(name, option_list, selected=array(), options=array())


name - string The name of the check box.
value - string The value of the check box.
label - string The label of the check box if there is one.
options - array Array of options for the check box (id, class, checked)

64 thoughts on “MyBB 1.4 Admin CP – The Complete Overview (Part 3)

  1. The MYBBoard new theme is looking very nice, The best part in the review is that you talk a bit about the technical stuff just love it. Keep up the good work.

  2. Wow. Very nice ACP. I can’t wait until 1.4 is out. Once this is out, it will give other forums some competition indeed.

  3. @Sonict – It will be more like other forums will have to cook up some thing better of a on fire stove 😉

  4. Looking good indeed. I really like the way you guys develop. Setting mostly everything in functions and making it easier for development. Organization is always the key!
    Thanks for a wonderful post.

  5. QUOTE: Justin S.
    “Remember if you have any questions, please ask away! We’re looking for some questions to answer in the next post!”

    Does “When will it be released” count? 😛

  6. @Justin S.

    well okay it says “you should put your read servers on a load balancer ” well show would you do that is that a server thing or some that can be done by MYBBoard.

  7. Question: will you be posting ABSOLUTELY every information on 1.4?
    Too much spoilers. I still wanna be surprised when I download it 😀

  8. Simply fantastic. The market is facing some real competition on a major level with MyBB 1.4 coming about.

  9. Just a question for the staff, are there controls for administrators to regulate use of the moderator control panel (ie: how long mods can ban, who can edit profiles, etc…) or is the whole panel open season if one has access to it?

  10. Question: will we be able to disable (lol) the SEO system for the forum?
    Instead of thread-1-post-2.html to have showthread.php.blabla

  11. @Faby: Yes, there is an option in the AdminCP to disable the SEO URLs.
    Also, the SEO URLs require mod_rewrite + .htaccess enabled to work, so if you don’t have them enabled on your server, it won’t work anyway 😛

  12. Hi there, I’ve been trying out the beta – I noticed that Warning Types can only be given between 1 and 10 points. Could this be extended? In some cases with our current warning system, we require having to give out up to 25 points for more serious offences.

  13. OMG, a public beta (could just die and go to heaven already :D) – I loved it! I can’t tell you how much I love it! 😀 Am reading the news about WordPress’ new admin interface, and whilst I really shouldn’t compare apples with pears, it is far easier to be enthusiastic about MyBB’s new interface compared to WP’s redesign.

    To put it cheesily – if this was a soft toy, I’d hug it everyday! Am really impressed by the interface at the moment, it is light years ahead of the current design and so very well thought out.

    My question (probably already answered) is this multiple database thing. As a newbie, my understanding is that this means I can run my forum on multiple databases?

  14. Flick, it’s for redundancy and performance. No it doesn’t mean you can split up your forum into multiple databases (If that’s what your asking). And in fact, it will be useless to anyone underneath 3 million posts. It would be more of a burden than a performance post to have to connect to multiple SQL servers if in fact you have a small database

  15. Wow, this is looking so much better!
    i love the idea of being able to use multipul sql servers, not that i would need it! unless i have a separate off site sql database for backups lol!

    And i love the generation of code automatically, thats ausom.

    I recently changed my main forum to SMF (click my name) , as mybb was’nt looking too “community” held, so its a struggle to choose from the mybb 1.4 and the new SMF 2.0 when they both arrive.

    Who can turn the table for me?

    will there be some “converters” for v 1.4? to convert from other open source software?

    Very anticipated to try this out =]

  16. Franzll & David, you’ll need to clarify?

    GodsDead, “will there be some “converters” for v 1.4? to convert from other open source software?”

    – There are already converters called the MyBB Merge System and it would be stupid to stop supporting or releasing it just because of a new MyBB version.

    Jordan, no. It’s such a tiny and barely used feature + this release is (obviously) focused on the ACP.

  17. Thanks and i have a new question:

    i know you dont like these questions about the release date but do you know circa when you release the new version? this month? next month? this year? next year?

  18. @Tikitiki: thank you for the help reply. Actually that is what I meant, and it seems I must read up more about how all these backend database things work. ^^ We’re pretty far from 3 million posts (darn! :D)

  19. Hey, this looks great! I have tried out the beta and it looks great and is so much better!

    How will themes go on moving to this next version? I know the layout of the posting has changed a lot so will the theme have to be changed a long way to so that the user’s details are above the post? Or will the theme move it back to the side?

Comments are closed.