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)

generate_check_box(name, value="", label="", options=array())

Those are just two of several functions that allow you to generate code automatically for the new ACP.

Questions? Comments? Anything else?

As with the rest of the Admin CP, the Users & Groups tab packs a huge number of features and functionality in an easy to use interface. Once you use 1.4's Admin CP, you'll be able to tell a lot of planning was put in to forming the best layout possible for all features.

Another overview covering the "Theme & Templates" tab and will be posted within the next few weeks as well as a few other things we haven't covered. We will also get into the questions you left us last week and this week. Leave a comment with your question and check to see if your question has been answered!

There is still some left to cover, but as always, we're happy to hear any questions or feedback you may have. We'll try to take advice on board, but understand it isn't always possible. There's still more exciting parts of the Admin CP left to share, so by no means is this all we'll be posting!

Multiple people contributed to the writing of this article, including MusicalMidget, DennisTT, Tikitiki, Chris Boulton, and Justin S.

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

  1. What about themes ?
    Will it be on(?) files – like folder “themes” or just like in 1.2 in DB ?

  2. Great posts! Can’t wait for some information about templates and themes, I’ve been waiting for 1.4 to start producing some unique themes.

  3. You guys are working hard double no of code line 😮 …… Love you guys!!

    Also currently you have finished the coding yet or are in pvt beta?

  4. In the next blog post will there be more talking about any new or improved code? or is it one of them things we will have to wait to see?

  5. MyBB Team deserves kudos from all the users. It is indeed a wonderful package, and that too being distributed without a penny by TikiTiki. Though I am a novice, I have been able to upload and install the Forum on our Website, today only. However, I have a couple of questions: (a) how to set the current time of the Forum to show it with GMT + 5:30 hrs. (b) I am getting a “Done, but with errors on page” message on a number of Forum Pages. Of course, I do understand that it must have been due to my own ignorance in the uploading process. However, if someone can take the trouble of checking the error on one or two pages and point it out, I shall only be too grateful.

Comments are closed.