Admin Guide: Reference For Administrators
Admin Guide: Reference For Administrators
Abstract
This book is targeted at MantisBT administrators, and documents the installation, upgrade, configuration,
customization and administration tasks required to operate the software.
Copyright © 2016 MantisBT team. This material may only be distributed subject to the terms and conditions set forth in the GNU Free
Documentation License (GFDL), V1.2 or later (the latest version is presently available at http://www.gnu.org/licenses/fdl.txt).
Table of Contents
1. About MantisBT ............................................................................................................. 1
What is MantisBT? ..................................................................................................... 1
Who should read this manual? ...................................................................................... 1
License ..................................................................................................................... 1
How to get it? ............................................................................................................ 1
About the Name ......................................................................................................... 1
History ...................................................................................................................... 2
Support ..................................................................................................................... 2
MantisBT News .......................................................................................................... 3
Versioning ................................................................................................................. 3
2. Installation ..................................................................................................................... 4
Overview ................................................................................................................... 4
System Requirements .................................................................................................. 4
Server Hardware Requirements ............................................................................. 4
Server Software Requirements .............................................................................. 4
Client Requirements ............................................................................................ 6
Pre-installation / upgrade tasks ...................................................................................... 7
New Installation ......................................................................................................... 7
Upgrading .................................................................................................................. 8
Configure your installation ......................................................................................... 10
Post-installation and upgrade tasks ............................................................................... 10
Post-installation tasks ................................................................................................. 11
Post-upgrade tasks ..................................................................................................... 11
Backups ................................................................................................................... 12
MySQL Backups ............................................................................................... 12
Uninstall .................................................................................................................. 12
3. User Management .......................................................................................................... 14
Creating User Accounts ............................................................................................. 14
Enabling/Disabling User Accounts ............................................................................... 14
Deleting User Accounts ............................................................................................. 15
User Signup ............................................................................................................. 15
Forgot Password and Reset Password ........................................................................... 15
Impersonating a user .................................................................................................. 16
Changing Password ................................................................................................... 16
Pruning User Accounts .............................................................................................. 16
Authorization and Access Levels ................................................................................. 16
Auto Creation of Accounts on Login ............................................................................ 17
User Preferences ....................................................................................................... 17
User Profiles ............................................................................................................ 18
4. Issue Lifecycle and Workflow ......................................................................................... 19
Issue Creation ........................................................................................................... 19
Issue Statuses ........................................................................................................... 19
Workflow ................................................................................................................ 20
Workflow Transitions ........................................................................................ 20
Workflow Thresholds ........................................................................................ 21
5. Configuration ................................................................................................................ 23
Introduction .............................................................................................................. 23
Database .................................................................................................................. 23
Path ........................................................................................................................ 24
Webserver ................................................................................................................ 25
Configuration Settings ................................................................................................ 26
iii
Admin Guide
iv
Admin Guide
Preferences ....................................................................................................... 70
Profiles ............................................................................................................ 70
Manage Columns .............................................................................................. 70
API Tokens ...................................................................................................... 70
System Management Pages ......................................................................................... 71
Manage Users ................................................................................................... 71
Manage Projects Page ........................................................................................ 71
Manage Custom Fields ....................................................................................... 71
Manage Global Profiles ...................................................................................... 72
Manage Configuration ........................................................................................ 72
Monitor Issue ........................................................................................................... 75
Reopen Issue ............................................................................................................ 75
Delete Issue ............................................................................................................. 75
Close Issue ............................................................................................................... 76
Assign to Me ........................................................................................................... 76
Resolve Issue ........................................................................................................... 76
News Syndication ..................................................................................................... 76
7. Customizing MantisBT ................................................................................................... 77
Strings / Translations ................................................................................................. 77
Custom Fields .......................................................................................................... 77
Overview ......................................................................................................... 77
Custom Field Definition ..................................................................................... 78
Adding/Editing Custom Fields ............................................................................. 80
Linking/Unlinking/Ordering Existing Custom Fields in Projects ................................ 80
Localizing Custom Field Names .......................................................................... 80
Dynamic default values ...................................................................................... 81
Dynamic values for Enumeration Custom Fields ..................................................... 81
Enumerations ............................................................................................................ 83
Email Notifications .................................................................................................... 85
Customizing Status Values ......................................................................................... 86
Custom Functions ..................................................................................................... 88
Default Custom Functions .................................................................................. 88
Example Custom Function Override ..................................................................... 89
8. Authentication ............................................................................................................... 91
Standard Authentication ............................................................................................. 91
LDAP and Microsoft Active Directory .......................................................................... 91
Basic Authentication .................................................................................................. 91
HTTP Authentication ................................................................................................. 92
Deprecated authentication methods ............................................................................... 92
9. Troubleshooting ............................................................................................................ 93
Application Errors ..................................................................................................... 93
Error 2800 - Invalid form security token ............................................................... 93
10. Project Management ..................................................................................................... 95
Change Log ............................................................................................................. 95
Roadmap ................................................................................................................. 97
Time Tracking .......................................................................................................... 99
Graphs ..................................................................................................................... 99
Summary Page .......................................................................................................... 99
11. Contributing to MantisBT ............................................................................................ 101
Talent and Time ...................................................................................................... 101
Recommend MantisBT to Others ............................................................................... 101
Blog about MantisBT ............................................................................................... 101
Integrate with MantisBT ........................................................................................... 101
A. Revision History ......................................................................................................... 102
v
List of Tables
6.1. Issues ........................................................................................................................ 74
vi
Chapter 1. About MantisBT
What is MantisBT?
MantisBT is a web based bug tracking system that was first made available to the public in November
2000. Over time it has matured and gained a lot of popularity, and now it has become one of the most
popular open source bug/issue tracking systems. MantisBT is developed in PHP, with support to multiple
database backends including MySQL, MS SQL and PostgreSQL.
MantisBT, as a PHP script, can run on any operating system that is supported by PHP and has support
for one of the DBMSes that are supported. MantisBT is known to run fine on Windows, Linux, macOS
and a variety of Unix operating systems.
License
MantisBT is released under the terms of GNU General Public License (GPL) [https://www.gnu.org/
copyleft/gpl.html]. MantisBT is free to use and modify. It is free to redistribute as long as you abide by
the distribution terms of the GPL [https://www.gnu.org/copyleft/gpl.html].
For Windows, macOS and other operating systems, use the link provided above to download MantisBT.
The download is compressed in tar.gz or zip format. Both formats can be unpacked using tools like 7-Zip
[https://www.7-zip.org/] (in case of Windows).
Note that at any point in time there are typically two "latest" MantisBT releases that are available for
download. The latest production release (stable), and the latest development release which can be an alpha
or a release candidate. It is not recommended to use development releases in production specially if it is
still in the alpha stage unless the administrator is familiar with PHP and is able to troubleshoot and fix
any issues that may arise.
1
About MantisBT
Praying Mantis are insects that feed primarily on other insects and bugs. They are extremely desirable in
agriculture as they devour insects that feed on crops. They are also extremely elegant looking creatures.
So, we have a name that is fairly distinctive and descriptive in multiple ways. The BT suffix stands for
"Bug Tracker" and distinguishes this project from general usage of the word Mantis. However, over time
the project was typically referred to as Mantis.
History
Kenzaburo Ito and a friend originally created a bug tracker as an internal tool for their pet project. A search
for good, free packages came up with nothing suitable so they wrote their own. After a rewrite and cleanup
it was made available to the public via the GNU General Public License (GPL). The GPL was chosen
partly because of his belief that development tools should be cheap or free. In 2002, Ken was joined by
Jeroen Latour, Victor Boctor and Julian Fitzell to be the administrators and the core development team of
MantisBT. This marks a new era in MantisBT lifetime where it is now a team project.
Support
There are plenty of resources to help answer support queries. Following are the main ones:
• Forums [https://mantisbt.org/forums/] - The forums are one of the most popular destinations for getting
MantisBT support. Start off by searching the forums for your questions, if not found, then go ahead
and submit a question.
• Mailing lists [http://www.mantisbt.org/mailinglists.php] - Several lists are available, each of them with
its own, specific purpose. Note that posting messages is restricted to subscribers so you will have to
register before you can send messages; however, there are public archives available if you're only
interested in reading.
• Gitter [https://gitter.im/mantisbt/mantisbt] is a browser-based, on-line chat that has mainly replaced the
team's use of IRC. In the main chat room, you can have a live discussion with the developers and other
MantisBT users. Gitter supports all modern browsers and also offers Android and iOS-based clients, as
well as an IRC bridge [https://irc.gitter.im/].
• IRC [http://www.mantisbt.org/irc.php] - The IRC channel not very active anymore, as the developers
have moved on to using Gitter for live discussions; nevertheless, the channel is still open. There
are many free IRC clients: XChat (for Linux), HexChat [http://hexchat.github.io/], IceChat [http://
www.icechat.net/] amongst others. You can also use Web Chat [http://webchat.freenode.net/] to connect
to IRC via your web browser, which may also be useful when you're behind a firewall that blocks the
IRC port. The IRC channel logs are archived and made available on the MantisBT web site [http://
www.mantisbt.org/irclogs.php].
• Search - A good way for locating an answer to your question or finding more information about a topic
is to search across all MantisBT website and the Internet via your favorite search engine, e.g. Google
[https://www.google.com] or Bing [https://www.bing.com].
Note
Support questions should not be sent directly to MantisBT developers or through the MantisBT
website's contact pages.
Also, our bug tracker [https://mantisbt.org/bugs/] is reserved for reporting issues with the
software, and must not be used for support requests.
2
About MantisBT
MantisBT News
There are several ways to keep up to date with MantisBT news. These include:
• We send release announcements and important updates to users registered on our official bugtracker
[https://mantisbt.org/bugs]. To get onto our mailing list, users will have to signup there and verify their
email address. This same account can also be used to report, monitor, and comment on issues relating
to MantisBT.
• Twitter [https://twitter.com/mantisbt] is used to notify users about up-to-date details about what is
happening with MantisBT development. Twitter users are encouraged to follow "@mantisbt".
Versioning
Our release numbering convention follows the guidelines of Semantic Versioning [https://semver.org/].
Given a version number Major.Minor.Patch and an optional Suffix (eg. 1.3.0-rc.1):
• Major - Indicates a very large change in the core package. Rewrites or major milestones. API changes
which are not backwards-compatible.
3
Chapter 2. Installation
This chapter explains how to install or upgrade MantisBT.
Overview
The table below contains a high-level overview of the processes. Refer to the corresponding sections for
details.
3. the section called “New Installation” 3. Put the site down for maintenance
4. the section called “Configure your installation” 4. the section called “Upgrading”
5. the section called “Post-installation and upgrade 5. the section called “Post-installation and upgrade
tasks” tasks”
6. the section called “Post-installation tasks” 6. the section called “Post-upgrade tasks”
System Requirements
Server Hardware Requirements
MantisBT has modest hardware requirements. It requires a computer that is able to run the server software
(see the section called “Server Software Requirements”).
• Server type
The server can be a shared public web server or a dedicated co-located box.
As for any web application, you should size your server based on the traffic on the site.
• Disk
The amount of disk space required for the database will vary depending on the RDBMS and the volume
of data, the main driving factor being the expected number and size of attachments.
4
Installation
• Operating System
MantisBT runs on Windows, macOS, Linux, Solaris, the BSDs, and just about anything that supports
the required server software.
• Web Server
File Extensions: MantisBT uses only .php files. If your webserver is configured for other extensions
(e.g. .PHP3, .PHTML) then you will have to request the administrator to add support for .PHP files.
This should be a trivial modification. Further details can be found in the PHP documentation [https://
www.php.net/manual/en/install.php]
• PHP [https://www.php.net/]
The web server must support PHP. It can be installed as CGI or any other integration technology.
• PHP extensions
MantisBT is designed to work in as many environments as possible. Hence the required extensions are
minimal and many of them are optional affecting only one feature.
Mandatory extensions • The extension for the RDBMS being used ( mysqli, pgsql, oci8,
sqlsrv )
• Database
MantisBT requires a database to store its data. The supported RDBMS are:
• PostgreSQL
• Oracle
5
Installation
Experimental support means that manual intervention by a skilled Database Administrator may be
required to complete the installation, and/or that there may be known issues or limitations when using
the software. Please refer to our Issue tracker [https://mantisbt.org/bugs/], filtering on categories db
mssql and db oracle to find out more about those.
Note
Please note that the MantisBT development team mainly works with MySQL, so testing for
other drivers is not as extensive as we mainly rely on community contributions to improve
support and fix issues with other RDBMS.
Our minimum requirements are generally based on availability of support for the underlying software by
their respective vendors. In some cases, we do require a specific version because we rely on a feature that
is not available in older releases.
Warning
Running MantisBT with versions of the software components lower than the minimum
requirements listed above is not supported.
Client Requirements
MantisBT should run on all recent browsers in the market, including but not limited to:
• Firefox
6
Installation
• Internet Explorer 11
• Edge
• Chrome
• Safari
• Opera
This can be done using whatever method you like best (ftp, scp, etc). You will need to telnet/ssh into
the server machine for the next steps.
It is highly recommended to maintain a separate directory for each release. This not only avoids
mismatch between versions, (files may have been added or removed) but also provides an easy path to
downgrade your installation, should you need to.
OR (2 steps):
gunzip filename.tar.gz
tar -xf filename.tar
Other file archiving tools such as 7-Zip [https://www.7-zip.org/] should also be able to handle
decompression of the archive.
For new installations, you may want to rename the directory just created to something simpler, e.g.
mantisbt
mv mantisbt-1.3.x mantisbt
New Installation
This chapter explains how to perform a new installation of MantisBT.
Start by checking the section called “System Requirements” and installing the appropriate version of
required software.
Once that is done, execute the installation script. From your web browser, access
7
Installation
http://yoursite/mantisbt/admin/install.php
• database type
The default Administrator user account is created at this stage, to allow the initial login and setup of
MantisBT.
5. The script attempts to write a basic config_inc.php file to define the database connection
parameters.
This operation may fail if the web server's user account does not have write permissions to the directory
(which is recommended for obvious security reasons). In this case, you will have to manually create
the file and copy/paste the contents from the page.
Upgrading
This chapter explains how to upgrade an existing MantisBT installation.
Start by Performing the steps described in the section called “Pre-installation / upgrade tasks” above.
cp mantis_offline.php.sample mantis_offline.php
This will prevent users from using the system while the upgrade is in progress.
2. Always Backup your code, data and config files before upgrading !
This includes your Mantis directory, your attachments, and your database. Refer to the section called
“Backups” for details.
8
Installation
To preserve your system settings, you should copy the files listed below to subdirectory config of
the new installation.
• config_inc.php,
• custom_strings_inc.php,
• custom_constants_inc.php and
• custom_functions_inc.php.
Note
The above list is not exhaustive. You might also have to copy other custom files specific to
your installation such as logo, favicon, css, etc.
To maintain system functionality, you should copy any additional plugins in the plugins
subdirectory.
For example on Unix, you could use the following command; it will copy all installed plugins (in local
subdirectories or symlinked), excluding bundled ones.
cd /path/to/mantisbt-OLD/plugins
find -maxdepth 1 ! -path . -type d -o -type l |
grep -Pv "(Gravatar|MantisCoreFormatting|MantisGraph|XmlImportExport)" |
xargs -Idirs cp -r dirs /path/to/mantisbt-NEW/plugins
Warning
Make sure that you do not overwrite any of the bundled plugins as per the list below, with
an older version.
http://yoursite/mantisbt-NEW/admin/install.php
where mantisbt-NEW is the name of the directory where the new release was extracted
9
Installation
8. At the end of the upgrade, review and correct any warnings or errors.
In this case, you should simply restart the upgrade process, which will resume where it left off.
Note that you may have to repeat this several times, until normal completion.
This step is normally only required for new installations, but when upgrading you may want to review and
possibly customize any new configuration options.
Open or create the file config_inc.php in subfolder config in an editor and add or modify any values
as required. These will override the default values.
You may want to use the provided config_inc.php.sample file as a starting point.
Warning
you should never edit the config_defaults_inc.php file directly, as it could cause issues
with future upgrades. Always store your custom configuration in your own config_inc.php
file.
Warning
The MantisBT configuration files (config_inc.php as well as
custom_strings_inc.php, custom_constants_inc.php,
custom_functions_inc.php, etc.) should always be saved as UTF-8 without BOM.
Failure to do so may lead to unexpected display issues.
Load up admin/check/index.php to validate whether everything is setup correctly, and take corrective
action as needed.
10
Installation
Once you have confirmed that the install or upgrade process was successful, you should delete this
directory
rm -r admin
For security reasons, the scripts within this directory should not be freely accessible on a live MantisBT
site, particularly one which is accessible via the Internet, as they can allow unauthorized people (e.g.
hackers) to gain technical knowledge about the system, as well as perform administrative tasks.
Warning
Omitting this important step will leave your MantisBT instance exposed to
several potentially severe attacks, e.g. issue #23173 [https://mantisbt.org/bugs/
view.php?id=23173] (if mysqli.allow_local_infile [https://www.php.net/manual/en/
mysqli.configuration.php#ini.mysqli.allow-local-infile] is enabled in php.ini).
Post-installation tasks
Instructions in this section should only be applied after a new installation
Use the default Administrator account. The id and password are administrator / root.
Go to Manage > Manage Users and create a new account with 'administrator' access level.
Post-upgrade tasks
Instructions in this section should only be applied after upgrading an existing installation.
Perform any additional testing as appropriate to ensure the new version does not introduce any
regressions.
The commands below should be executed from the web root (or wherever the mantisbt scripts are
installed) and assume that the "live" directory (old version) is named mantisbt and the new release
directory is mantisbt-1.3.x.
mv mantisbt mantisbt-old
mv mantisbt-1.3.x mantisbt
11
Installation
rm mantis_offline.php
This should be the final step in the upgrade process, as it will let users login again.
Backups
It is strongly recommended to backup your MantisBT database on a regular basis. The method to perform
this operation depends on which RDBMS you use.
Backups are a complex subject, and the specificities of implementing and handling them for each RDBMS
are beyond the scope of this document. For your convenience, the section below provides a simple method
to backup MySQL databases.
You should also consider implementing backups of your MantisBT code (which includes your configs and
possibly customization), as well as issue attachments (if stored on disk) and project documents.
Warning
You should always backup your system (code and database) before upgrading !
MySQL Backups
MySQL databases are easy to backup using the mysqldump command:
To restore a backup you will need to have a clean database. Then run:
You can also perform both of these tasks using phpMyAdmin [http://www.phpmyadmin.net/]
A good idea is to make a backup script and run it regularly through cron or a task scheduler (for Windows
see WinCron [http://www.wincron.com/] ). Using the current date in the filename can prevent overwriting
and make cataloguing easier.
Uninstall
It is recommended that you make a backup in case you wish to use your data in the future. See the section
called “Backups” for details.
To uninstall MantisBT:
• Drop all MantisBT tables from the database, these can be identified by the configured prefix for the
installation. The default prefix is 'mantis'.
12
Installation
If you have the permissions to create/drop databases and you have a specific database for MantisBT that
does not contain any other data, you can drop the whole database.
13
Chapter 3. User Management
Creating User Accounts
In MantisBT, there is no limit on the number of user accounts that can be created. Typically, installations
with thousands of users tend to have a limited number of users that have access level above REPORTER.
By default users with ADMINISTRATOR access level have access to create new user accounts. The steps
to do that are:
• Click "Create New Account" button just below the alphabet key.
• Enter user name, email address, global access level (more details about access levels later). Other fields
are optional.
• If email notifications ($g_enable_email_notification) is set to ON, then the user will receive an email
allowing them to activate their account and set their password. Otherwise, the account will be created
with a blank password.
When the 'Protected' flag is set on a user account, it indicates that the account is a shared account (e.g. demo
account) and hence users logged using such account will not be allowed to change account preferences
and profile information.
The anonymous user account specified with the $g_anonymous_account option will always be treated
as a protected user account. When you are creating the anonymous user account, the 'Protected' flag is
essentially ignored because the anonymous user is always treated as a protected user.
• All currently active sessions for the account will be invalidated (i.e. automatically logged out).
14
User Management
• The user account will not show anymore in lists like "assign to", "send reminder to", etc.
The disabling process is totally reversible. Hence, the account can be re-enabled and all the account
history will remain intact. For example, the user will still have issues reported by them, assigned to them,
monitored by them, etc.
As far as the underlying database, after the deletion of a user, records with the user id as a foreign key will
have a value that no longer exists in the users table. Hence, any tools that operate directly on the database
must take this into consideration.
By default administrators are the only users who can delete user accounts. They can delete accounts by
clicking Manage, Manage Users, locating the user to be deleted and opening it details page, then clicking
on the "Delete User" button which deletes the user.
Note that "Deleting Users" is not a reversible process. Hence, if it is required to re-add the user account,
it is not possible to recreate the user account so that it gets the same ID and hence retains its history.
However, manually creating a record in the users table with the same id, can possibly do that. However,
this approach is not recommended or supported.
User Signup
For open source and freeware projects, it is very common to setup MantisBT so that users
can signup for an account and get a REPORTER access by default (configurable by the
$g_default_new_account_access_level configuration option). The signup process can be enabled /
disabled using the $g_allow_signup configuration option, which is enabled by default.
If user signup is enabled, then it is required that $g_send_reset_password is ON as well, and the e-mail
settings properly configured (see the section called “Email”).
"Forgot Password" is a self service scenario where users go to the login page, figure out they don't
remember their password, and then click the "Lost your password?" link. Users are then asked for their
user name and email address. If correct, then they are sent an email with a link which allows them to login
to MantisBT and change their password.
"Reset Password" scenario is where a user reports to the administrator that they are not able to login into
MantisBT anymore. This can be due to forgetting their password and possibly user name or email address
that they used when signing up. The administrator then goes to Manage, Manage Users, locates the user
15
User Management
account and opens its details. Under the user account details, there is a "Reset Password" button which
the administrator can click to reset the password and trigger an email to the user to allow them to get into
MantisBT and set their password. In the case where email notifications are disabled, resetting password
will set the password to an empty string.
Impersonating a user
Administrators are able to impersonate users in order to reproduce an issue reported by a user, test their
access making sure they can access the expected projects/issues/fields, or to create API tokens for service
accounts that are used to grant other systems limited access to MantisBT.
Changing Password
Users are able to change their own passwords (unless their account is "protected"). This can be done by
clicking on "My Account", and then typing the new password in the "Password" and "Confirm Password"
fields, then clicking "Update User". Changing the password automatically invalidates all logged in sessions
and hence the user will be required to re-login. Invalidating existing sessions is very useful in the case
where a user going onto a computer, logs into MantisBT and leaves the computer without logging out.
By changing the password from another computer, the session on the original computer automatically
becomes invalidated.
The account pruning can be done by administrators by going to "Manage", "Manage Users", and clicking
the "Prune Accounts" button inside the "Never Logged In" box.
The default access levels shipped with MantisBT out of the box are VIEWER, REPORTER, UPDATER,
DEVELOPER, MANAGER and ADMINISTRATOR. Each features has several configuration options
associated with it and identifies the required access level to do certain actions. For example, viewing an
issue, reporting an issue, updating an issue, adding a note, etc.
For example, in the case of reporting issues, the required access level is configurable using the
$g_report_bug_threshold configuration option (which is defaulted to REPORTER). So for a user to be able
to report an issue against a public project, the user must have a project-specific or a global access level that
is greater than or equal to REPORTER. However, in the case of reporting an issue against a private project,
the user must have project specific access level (that is explicitly granted against the project) that is higher
than REPORTER or have a global access level that is higher than both $g_private_project_threshold and
$g_report_bug_threshold.
Note that project specific access levels override the global access levels. For example, a user may have
REPORTER as the global access level, but have a MANAGER access level to a specific project. Or a user
16
User Management
may have MANAGER as the global access level by VIEWER access to a specific project. Access levels
can be overridden for both public and private projects. However, overriding access level is not allowed
for users with global access ADMINISTRATOR.
Each feature typically has multiple access control configuration options to define what access level can
perform the operation. For example, adding a note may require REPORTER access level, updating it note
may require DEVELOPER access level, unless the note was added by the same user.
Such threshold configuration options can be set to a single access level, which means users with such
threshold and above are authorized to perform the action. The other option is to specify an array of access
levels which indicates that users with the explicitly specific thresholds are allowed to execute the actions.
It is also worth mentioning that the access levels are defined by the $g_access_levels_enum_string
configuration option, and it is possible to customize such list. The default value for the available access
levels is '10:viewer, 25:reporter, 40:updater, 55:developer, 70:manager, 90:administrator'. The instructions
about how to customize the list of access levels will be covered in the customization section.
For example, a company may setup their MantisBT installation in a way, where its staff members that are
already registered in their LDAP directory, should be allowed to login into MantisBT with the same user
name and password. Another option could be if MantisBT is integrated into some content management
system, where it is desired to have a single registration and single sign-on experience.
In such scenarios, once a user logs in for the first time, a user account is automatically created for them,
although the password verification is still done against LDAP or the main users repository.
User Preferences
Users can fine tune the way MantisBT interacts with them by modifying their user preferences to override
the defaults set by the administrator; If the administrator changes a default setting, it will not automatically
cascade in the users' preferences once they have been set, so it is the users' responsibility to manage their
own preferences.
• Default Project: A user can choose the default project that is selected when the user first logs in. This
can be a specific project or "All Projects". For users that only work on one project, it would make sense
to set such project as the default project (rather than "All Projects"). The active project is part of the
filter applied on the issues listed in the "View Issues" page. Also any newly reported issues will be
associated with the active project.
• Refresh Delay: The refresh delay is used to specify the number of seconds between auto-refreshes of
the View Issues page.
• Redirect Delay: The redirect delay is the number of seconds to wait after displaying flash messages like
"Issue created successfully", and before the user gets redirected to the next page.
• Notes Sort Order: The preference relating to how notes should be ordered when issue is viewed or in
email notifications. Ascending order means that older notes are displayed first
17
User Management
• Email on XXX: If unticked, then the notifications related to the corresponding event would be disabled.
User can also specify the minimum issue severity of for the email to be sent.
Note that the preference is only used to disable notifications that as per the administrator's configuration,
this user would have qualified to receive.
• Email Notes Limit: This preference can be used to limit the number of issue notes to be included in a
email notifications. Specifying N here will cause only the latest N to be included. The value 0 means
that all notes will be included.
• Language: The preferred language of the user. This language is used by the GUI and in email
notifications. Note that MantisBT uses UTF-8 for encoding the data, hence the user could for example
use MantisBT with a Chinese interface, while logging issue data in German.
User Profiles
A user profile describes an environment that used to run the software for which issues are being tracked.
When reporting issues, users can elect to enter information like platform, operating system and version
manually, or they can choose from a list of available profiles.
Each user has access to all the personal profiles they create, in addition to global ones; Profile data includes
"Platform", "Operating System", "OS Version", and "Additional Description".
Global profiles are typically used by the administrator to define a set of standard system settings
used in their environment, which saves users the trouble of having to define them individually. The
access level required to manage global profiles is configured by the $g_manage_global_profile_threshold
configuration option and defaults to MANAGER.
18
Chapter 4. Issue Lifecycle and
Workflow
Issue Creation
The life cycle of an issue starts with its creation. An issue can be created via one of the following channels:
• MantisBT Web Interface - This is where a user logs into MantisBT and reports a new issue.
• SOAP API - Where an application automatically reports an issue into MantisBT using the SOAP API
web services interfaces. For example, the nightly build script can automatically report an issue if the
build fails.
• Email - This is not supported out of the box, but there are existing MantisBT patches that would listen
to emails on pre-configured email addresses and adds them to the MantisBT database.
• Others - There can be several other ways to report issues. For example, applications / scripts that directly
injects issues into MantisBT database (not recommended, except for one-off migration scripts), or PHP
scripts that use the core MantisBT API to create new issues.
Issue Statuses
An important part of issue tracking is to classify issues as per their status. Each team may decide to have
a different set of categorization for the status of the issues, and hence, MantisBT provides the ability
to customize the list of statuses. MantisBT assumes that an issue can be in one of three stages: opened,
resolved and closed. Hence, the customized statuses list will be mapped to these three stages. For example,
MantisBT comes out of the box with the following statuses: new, feedback, acknowledged, confirmed,
assigned, resolved and closed. In this case "new" -> "assigned" map to opened, "resolved" means resolved
and "closed" means closed.
Following is the explanation of what the standard statuses that are shipped with MantisBT means.
• New - This is the landing status for new issues. Issues stay in this status until they are assigned,
acknowledged, confirmed or resolved. The next status can be "acknowledged", "confirmed", "assigned"
or "resolved".
• Acknowledged - This status is used by the development team to reflect their agreement to the suggested
feature request. Or to agree with what the reporter is suggesting in an issue report, although they didn't
yet attempt to reproduce what the reporter is referring to. The next status is typically "assigned" or
"confirmed".
• Confirmed - This status is typically used by the development team to mention that they agree with what
the reporter is suggesting in the issue and that they have confirmed and reproduced the issue. The next
status is typically "assigned".
• Assigned - This status is used to reflect that the issue has been assigned to one of the team members and
that such team member is actively working on the issue. The next status is typically "resolved".
• Resolved - This status is used to reflect that the issue has been resolved. An issue can be resolved with
one of many resolutions (customizable). For example, an issue can be resolved as "fixed", "duplicate",
19
Issue Lifecycle and Workflow
"won't fix", "no change required", etc. The next statuses are typically "closed" or in case of the issue
being re-opened, then it would be "feedback".
• Closed - This status reflects that the issue is completely closed and no further actions are required on it.
It also typically hides the issue from the View Issues page. Some teams use "closed" to reflect sign-off
by the reporter and others use it to reflect the fact that the fix has been released to customers.
Workflow
Now that we have covered how an issue gets created, and what are the different statuses during the life
cycle of such issues, the next step is to define the workflow. The workflow dictates the valid transitions
between statuses and the user access level required of the user who triggers such transitions; in other words,
how issues move from one status to another and who is authorized to trigger such transitions.
MantisBT provides the ability for teams to define their own custom workflow which works on top of their
custom status (see the section called “Customizing Status Values”).
Workflow Transitions
By default, there is no workflow defined, which means that all states are accessible from any other, by
anyone.
The "Manage > Manage Configuration > Workflow Transitions" page allows users with
ADMINISTRATOR access level to do the following tasks:
• Define the minimum access level required for a user to transition to each status.
• Define the status at which the issue is considered resolved. Any issues a status code greater than or equal
to the specified status will be considered resolved.
Note that the scope of the applied change is dependent on the selected project. If "All Projects" is selected,
then the configuration is to be used as the default for all projects, unless overridden by a specific project.
To configure for a specific project, switch to it via the combobox at the top right corner of the screen.
The Global ("All Projects") workflow can also be defined in the config_inc.php file, as per the following
example.
$g_status_enum_workflow[NEW_] ='30:acknowledged,20:feedback,40:confirmed,
$g_status_enum_workflow[FEEDBACK] ='30:acknowledged,40:confirmed,50:assigned,
$g_status_enum_workflow[ACKNOWLEDGED] ='40:confirmed,20:feedback,50:assigned,80:r
$g_status_enum_workflow[CONFIRMED] ='50:assigned,20:feedback,30:acknowledged,8
$g_status_enum_workflow[ASSIGNED] ='80:resolved,20:feedback,30:acknowledged,4
$g_status_enum_workflow[RESOLVED] ='90:closed,20:feedback,50:assigned';
$g_status_enum_workflow[CLOSED] ='20:feedback,50:assigned';
20
Issue Lifecycle and Workflow
Note
The workflow needs to have a path from the statuses greater than or equal to the 'resolved' state
back to the 'feedback' state (see $g_bug_resolved_status_threshold and $g_bug_feedback_status
under the section called “Status Settings”), otherwise, the re-open operation won't work.
Note
The first item in each list denotes the default value for this status, which will be pre-selected in
the Change Status combobox in the View Issues page.
Workflow Thresholds
The "Manage > Manage Configuration > Workflow Thresholds" page allows users with
ADMINISTRATOR access level to define the thresholds required to do certain actions. Following is a list
of such actions and what they mean:
• Report an issue - The access levels that are allowed to report an issue.
• Update an issue - The access levels that are allowed to update the header information of an issue.
• Allow issue to be closed on resolved - The access levels that are allow to resolve and close an issue
in one step.
• Allow reporter to close issue - Indicates if reporters should be allowed to close issues reported by them.
• Monitor an issue - The access levels required for a user to be able to monitor an issue. Once a user
monitors an issue, the user will be included in all future email notifications relating to changes in the
issue.
• Handle an issue - The access levels required for a user to be shown in the list of users that can handle
an issue.
• Assign an issue - The access levels required for a user to be able to change the handler (i.e. assign /
unassign) an issue.
• Move an issue - The access levels required for a user to be able to move an issue from one project to
another. (TODO: are these access levels evaluated against source or destination project?).
• Delete an issue - The access levels required for a user to be able to delete an issue.
• Reopen an issue - The access levels required for a user to be able to re-open a resolved or closed issue.
• Allow Reporter to re-open Issue - Whether the reporter of an issue can re-open a resolved or closed
issue, independent of their access level.
• Status to which a reopened issue is set - This is the status to which an issue is set after it is re-opened.
• Resolution to which a reopen issue is set - The resolution to set on issues that are reopened.
• Status where an issue is considered resolved - The status at which an issue is considered resolved.
• Status where an issue becomes readonly - Issues with such status and above are considered read-only.
Read-only issues can only be modified by users with a configured access level. Read-only applies to
the issue header information as well as other issue related information like relationships, attachments,
notes, etc.
21
Issue Lifecycle and Workflow
• Update readonly issues - The access levels required for a user to be able to modify a readonly issue.
• Update issue status - The access levels required for a user to be able to modify the status of an issue.
• View private issues - The access levels for a user to be able to view a private issue.
• Set view status (public vs. private) - The access level for a user to be able to set whether an issue is
private or public, when reporting the issue. If the user reporting the issues doesn't have the required
access, then the issue will be created with the default view state.
• Update view status (public vs private) - The access level required for a user to be able to update the
view status (i.e. public vs. private).
• Show list of users monitoring issue - The access level required for a user to be able to view the list of
users monitoring an issue.
• Set status on assignment of handler - The access levels required for a user to be able to re-assign an
issue when changing its status.
• Status to set auto-assigned issues to - The status - This is the status that is set on issues that are auto
assigned to users that are associated with the category that the issuer is reported under.
• Limit reporter's access to their own issues - When set, reporters are only allow to view issues that they
have reported.
• Add notes - The access levels required for users to be able to add notes.
• Update notes - The access levels required for users to be able to update issue notes.
• Allow user to edit their own issue notes - A flag that indicates the ability for users to edit issue notes
report by them.
• Delete note - The access levels required for a user to delete a note that they may or may not have reported
themselves.
• View private notes - The access levels required for a user to be able to view private notes associated
with an issue that they have access to view.
• View Change Log - The access levels required for a user to be able to view the change log.
• View Assigned To - The access levels required for a user to be able to know the handler of an issue
that they have access to.
• View Issue History - The access levels required for a user to be able to view the history of changes
of an issue.
• Send reminders - The access levels required for a user to be able to send reminders to other users relating
to an issue that they have access to.
22
Chapter 5. Configuration
Introduction
MantisBT is highly customizable through the web interface and configuration files. Configuration options
can be set globally as well as customized for a specific project or user (except for options listed in
$g_global_settings, see the section called “Configuration Settings”).
Configuration options can be set in config_inc.php and in the database (using the various manage pages).
Values stored in the database take precedence over values defined in config_inc.php. The former can
also be viewed and updated on the Configuration Report page (Manage > Manage Configuration >
Configuration Report).
To determine which value to use, MantisBT follows the list below, sequentially searching for the specified
configuration option until a match is found.
5. config_inc.php
6. config_defaults_inc.php
Database
The database settings must be set in order for the package to work properly. These settings should be
provided to you by your system administrator or your hosting company.
$g_hostname Host name or connection string for Database server. The default value
is localhost. For MySql, this should be hostname or hostname:port (e.g.
localhost:3306).
$g_db_username User name to use for connecting to the database. The user needs to have read/
write access to the MantisBT database. The default user name is "root".
$g_db_password Password for the specified user name. The default password is empty.
$g_database_name Name of database that contains MantisBT tables. The default name is
'bugtracker'.
$g_db_type The supported database types are listed in the table below.
The PHP extension corresponding to the selected type must be enabled (see also
the section called “Versions compatibility table”).
23
Configuration
MantisBT allows administrators to configure a prefix and a suffix for its tables. This is enables multiple
MantisBT installation in the same database or schema.
Warning
Use of long strings for these configuration options may cause issues on RDBMS
restricting the size of its identifiers, such as Oracle (which imposed a maximum size
of 30 characters until version 12.1; starting with 12cR2 this limit has been increased
to 128 [https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Database-Object-
Names-and-Qualifiers.html#GUID-75337742-67FD-4EC0-985F-741C93D918DA]).
$g_db_table_prefix Specifies the prefix to be used for all table names. The default value
is 'mantis'.
The prefix can be used to help make sure table names are unique.
This is useful for users who are limited to a single database or
schema.
$g_db_table_suffix Specifies the prefix to be appended to all table names. The default
value is 'table'.
The suffix can be used to help make sure table names are unique.
This is useful for users who are limited to one database.
Plugin table names are built using the plugin's basename, e.g.
for a table named 'foo' in the 'Example' plugin (with default
values for prefixes and suffix), the physical table name would be
mantis_plugin_Example_foo_table.
Path
These path settings are important for proper linking within MantisBT. In most scenarios the default values
should work fine, and you should not need to override them.
$g_path URL to your installation as seen from the web browser; this is what you type into
the URL field. Requires trailing '/' character. eg. 'https://www.example.com/
mantisbt/'. MantisBT will default this to the correct value. However, in some
cases it might be necessary to override the default. This is typically needed when
an installation can be accessed by multiple URLs (internal vs external).
$g_short_path Short web path without the domain name. This requires the trailing '/'.
$g_absolute_path This is the absolute file system path to the MantisBT installation, it is defaulted
to the directory where config_defaults_inc.php resides. Requires trailing '/'
character (eg. '/usr/apache/htdocs/mantisbt/').
24
Configuration
$g_core_path This is the path to the core directory of your installation. The default value is
usually OK but it is recommended that you move the 'core' directory out of your
webroot. Requires trailing DIRECTORY_SEPARATOR character.
$g_library_path This is the path to the library directory of your installation. The default value is
usually OK but it is recommended that you move the 'library' directory out of
your webroot. Requires trailing DIRECTORY_SEPARATOR character.
$g_language_path This is the path to the language directory of your installation. The default value
is usually OK but it is recommended that you move the 'language' directory out
of your webroot. Requires trailing DIRECTORY_SEPARATOR character.
$g_manual_url This is the url to the MantisBT online manual. Requires trailing '/' character.
Webserver
$g_session_save_path Location where session files are stored. The default is false,
meaning the session handler's default location will be used.
Warning
Disabling this could be a potential security risk !
Warning
Disabling this option is a security risk, it is strongly
recommended to leave it ON
Even though it is not recommended, you could also use this setting
to disable previously sent headers. For example, assuming you
25
Configuration
Warning
Disabling CSP is a security risk, it is strongly
recommended that you leave it as Mantis defines it.
Configuration Settings
$g_global_settings This option contains the list of configuration options that are used to
determine if it is allowed for a specific configuration option to be saved
to or loaded from the database. Configuration options that are in the
list are considered global only and hence are only configurable via the
config_inc.php file and defaulted by config_defaults_inc.php file.
$g_public_config_names This option contains a list of configuration options that can be queried
via SOAP API.
Note
CSP may cause issues in certain situations (e.g. during
development), or when using plugins relying on externally
hosted resources such as images or scripts.
Warning
Disabling Content Security Policy is a security risk !
26
Configuration
The value you select for this salt should be a long string generated
using a secure random number generator. An example for Linux
systems is:
Note that the number of bits of entropy per byte of output from /
dev/urandom is not 8. If you're particularly paranoid and don't mind
waiting a long time, you could use /dev/random to get much closer
to 8 bits of entropy per byte. Moving the mouse (if possible) while
generating entropy via /dev/random will greatly improve the speed
at which /dev/random produces entropy.
Warning
This configuration option has a profound impact on the
security of your MantisBT installation. Failure to set this
configuration option correctly could lead to your MantisBT
installation being compromised. Ensure that this value
remains secret. Treat it with the same security that you'd
treat the password to your MantisDB database.
$g_max_failed_login_count Maximum number of failed login attempts before the user's account
is locked. Once locked, it is required to reset the password (lost
password). The counter is reset to zero after each successful login.
$g_notify_new_user_created_threshold_min
The minimum global access level required to be notified when a
new user registers via the "signup form". To pick specific access
levels that are not necessarily at the higher end of access levels, use
an array of access levels. Default is ADMINISTRATOR.
$g_send_reset_password If ON (default), users will be sent their password when their account
is created or password reset (this requires mail settings to be
correctly configured).
27
Configuration
$g_signup_use_captcha TODO
$g_system_font_folder TODO
$g_lost_password_feature TODO
$g_max_lost_password_in_progress_count
TODO
Email
$g_webmaster_email The webmaster's e-mail address. This address is displayed in the
bottom of all MantisBT pages. [email protected]
$g_from_email The email address to be used as the source of all emails sent by
MantisBT. [email protected]
$g_from_name The sender name of all emails sent by MantisBT. Mantis Bug
Tracker
$g_email_notifications_verbose When enabled, the email notifications will include the full issue
with a hint about the change type at the top, rather than using
dedicated notifications that are focused on what changed. This
change can be overridden in the database per user. Default is OFF.
$g_default_notify_flags = array(
'reporter' => ON,
'handler' => ON,
'monitor' => ON,
'bugnotes' => ON,
'category' => ON,
'explicit' => ON,
'threshold_min' => NOBODY,
28
Configuration
$g_notify_flags Defines the specific notification flags when they are different from
the defaults defined in $g_default_notify_flags.
$g_notify_flags['new'] = array(
'bugnotes' => OFF,
'monitor' => OFF,
);
• sponsor: the sponsorship for the bug has changed (added, deleted
or updated)
$g_email_receive_own This defines whether users should receive emails for their own
actions. This option is defaulted to OFF, hence, users do not receive
29
Configuration
email notification for their own actions. This can be a source for
confusions for users upgrading from MantisBT 0.17.x versions,
since in these versions users used to get notified of their own
actions.
Note
Regardless of how this option is set, validation is
never performed when using LDAP email (i.e. when
$g_use_ldap_email = ON, see the section called “LDAP
authentication method parameters”), as we assume that it
is handled by the directory.
$g_allow_blank_email If ON, allows the user to omit an email address field. If you allow
users to create their own accounts, they must specify an email at
that point, no matter what the value of this option is. Otherwise they
wouldn't get their passwords.
$g_limit_email_domains Only allow and send email to addresses in the given domain(s).
This is useful as a security feature and it is also useful in
cases like Sourceforge where its servers are limited to only
sending emails to SourceForge email addresses in order to avoid
spam. $g_limit_email_domains = array( 'users.sourceforge.net',
'sourceforge.net' );
$g_show_user_email_threshold This specifies the access level that is needed to have user names
hyperlinked with mailto: links. The default value is NOBODY,
hence, even administrators won't have this feature enabled.
30
Configuration
$g_smtp_host This option specifies the SMTP server to submit messages to. The
SMTP server (MTA) then takes on the responsibility of delivering
messages to their final destinations.
To use the local SMTP (if available) set this to 'localhost', otherwise
use the fully qualified domain name of the remote SMTP server.
Note
This is only used with PHPMAILER_METHOD_SMTP
(see $g_phpmailer_method).
$g_smtp_port The default SMTP port to use. This can be overridden individually
for specific hosts. (see $g_smtp_host).
$g_smtp_connection_mode Allow secure connection to the SMTP server. Valid values are:
• ssl
• tls
Note
must be set to '' (empty string) if the SMTP host does not
require authentication.
Default is ''.
$g_smtp_password This is the password that is used in SMTP Authentication. Not used
when $g_smtp_username = ''
31
Configuration
Default is ''.
$g_email_retry_in_days Duration (in days) to retry failed emails before deleting them from
queue. Default 7 days.
MantisBT uses flags and a threshold system to generate emails on events. For each new event, email is
sent to:
• the handler (or Assigned to), qualified by the notify flag 'handler' below
• anyone monitoring the bug, qualified by the notify flag 'monitor' below
• anyone who has ever added a bugnote the bug, qualified by the notify flag 'bugnotes' below
• anyone assigned to the project whose access level is greater than or equal to the notify flag
'threshold_min' and less than or equal to the notify flag 'threshold_max' below
From this list, those recipients who meet the following criteria are eliminated:
DKIM signature
In order to setup DomainKeys Identified Mail (DKIM) Signatures [https://en.wikipedia.org/wiki/
DomainKeys_Identified_Mail] (as defined in RFC 6376 [https://tools.ietf.org/html/rfc6376]), you need to
enable the feature (see $g_email_dkim_enable), and provide at least:
32
Configuration
This string should contain private key for signing. Leave empty
string if you wish to load the key from the file defined with
$g_email_dkim_private_key_file_path.
Leave empty string if your private key does not have password
S/MIME signature
This sections describes the necessary settings to enable S/MIME [https://en.wikipedia.org/wiki/S/MIME]
signature for outgoing MantisBT e-mails.
Defaults to OFF.
33
Configuration
Note
MantisBT expects the S/MIME certificates and the private key files to be in PEM
[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail] format. If you have a PKCS12 [https://
en.wikipedia.org/wiki/PKCS_12] encrypted certificate (typically with a .pfx or .p12 extension),
you may use the following openssl commands to extract and convert the individual elements:
• Certificate
If the input file is protected, openssl will ask for the password; alternatively, you can specify it
on the command-line with the -passin option, e.g. -passin pass:PASSWORD
Version
$g_show_version Whether to show the MantisBT version at the bottom of each page or not. Default
is OFF.
Language
$g_default_language This is the language used by default in MantisBT. This may be set
to 'auto' where MantisBT will try to determine the language from the
browser.
$g_language_choices_arr This is to be set to an array of languages that are available for users
to choose from. The default value includes all languages supported
by MantisBT. The administrator can limit the languages available
34
Configuration
$g_fallback_language This is the language used if MantisBT cannot determine the language
from the browser. It defaults to 'english'.As of 0.19.0, this may be
set to 'auto' where MantisBT will try to determine the language from
the browser.
Note
If a string does not exist in the active language, the English string is used instead.
Display
$g_font_family Name of the google font family for the browser to use. For all
available fonts, see: fonts.google.com [https://fonts.google.com/].
$g_font_family_choices Google font family list offered to the user to chose from. Font files
are fetched from google servers.
$g_favicon_image Path to the favorites icon relative to MantisBT root folder This icon
should be of image/x-icon MIME type, and its size 16x16 pixels.
It is also used to decorate OpenSearch Browser search entries.
(default 'images/favicon.ico').
$g_logo_image Path to the logo image relative to MantisBT root folder (default
'images/mantis_logo.gif').
$g_logo_url The default URL to be associated with the logo. By default this is
set to $g_default_home_page (which defaults to My View page).
35
Configuration
Clicking on the logo from any page in the bug tracker will navigate
to the URL specified in this configuration option.
$g_show_project_menu_bar This option specifies whether to add menu at the top of the page
which includes links to all the projects. The default value is OFF.
$g_show_assigned_names When a bug is assigned then replace the word "assigned" with the
name of the developer in parenthesis. Default is ON.
36
Configuration
$g_show_bug_project_links Show project links when in All Projects mode. Default is ON.
$g_show_product_version This controls display of the product version in the report, view,
update and print issue pages. This flag also applies to other product
version related fields like product build, fixed in version, and target
version. Valid values are ON, OFF, and AUTO. ON for always
displayed, AUTO for displayed when project has versions defined,
and OFF for always OFF. The default value is AUTO.
$g_show_version_dates_threshold The access level threshold at which users will see the date of
release for product versions. Dates will be shown next to the product
version, target version and fixed in version fields. Set this threshold
to NOBODY to disable the feature. Default value is NOBODY.
$g_show_realname This control will replace the user's userid with their realname. If
it is set to ON, and the real name field has been populated, the
replacement will occur. It defaults to OFF.
$g_show_avatar_threshold The threshold of users for which MantisBT should show the avatar
(default DEVELOPER). Note that the threshold is related to the
user for whom the avatar is being shown, rather than the user who
is currently logged in.
Time
$g_cookie_time_length Time for long lived cookie to live in seconds. It is also used as
the default for permanent logins if $g_allow_permanent_cookie is
enabled and selected. Default is 1 year.
$g_allow_permanent_cookie Allow users to opt for a 'permanent' cookie when logging in.
Controls the display of the 'Remember my login in this browser'
checkbox on the login page. See $g_cookie_time_length.
37
Configuration
$g_wait_time Time to delay between page redirects (in seconds). Users can
override this setting in their user preferences. Default is 2 seconds.
Date
These variables control how the date is displayed. The default is ISO 8601 [https://en.wikipedia.org/wiki/
ISO_8601] formatting.
$g_short_date_format This format is used in the bug listing pages (eg: View Bugs). Default
is Y-m-d.
$g_normal_date_format This format is used in the view/update bug pages, bug notes,
manage section, and news section. Default is Y-m-d H:i.
$g_complete_date_format This format is used on the top of each page (current time) and the
emails that are sent out. Default is Y-m-d H:i T.
$g_datetime_picker_format This format is used with the datetime picker widget. Default is Y-
MM-DD HH:mm.
Note
The formatting convention for the DateTime picker is
different from the one used for the other date settings
described above; see Moment.js documentation [https://
momentjs.com/docs/#/displaying/format/] for details.
Warning
This format needs to match the one defined in
$g_normal_date_format. Inconsistencies between these
two settings, e.g. using different date ordering (DMY,
MDY or YMD) or displaying the month as a number
vs a word or abbreviation, may result in unexpected
behavior such as an invalid interpretation of the date by
the DateTime picker widget, or errors trying to save a
modified date.
Time Zone
$g_default_timezone Default timezone to use in MantisBT. This configuration is normally
initialized when installing Mantis. It should be set to one of the values
specified in the List of Supported Timezones [https://www.php.net/
timezones].
38
Configuration
News
These options are used to control the query that selects the news entries to be displayed.
$g_news_limit_method Limit the news entry that are displayed by number of entries
(BY_LIMIT) or by date (BY_DATE). The default is BY_LIMIT.
$g_news_view_limit The limit for the number of news entries to be displayed. This option
is only used if $g_news_limit_method is set to BY_LIMIT.
$g_news_view_limit_days Specifies the number of dates after which the news are not
displayed. This option is only used if $g_news_limit_method is set
to BY_DATE.
$g_private_news_threshold Specifies the access level required to view private news. The default
is DEVELOPER.
Default Preferences
$g_default_new_account_access_levelThis is the default access level users are given when their account
is created by email. The default access level is REPORTER. Look
in constant_inc.php for other values.
$g_default_bug_description Default value for bug description field used on bug report page.
Default is empty description.
$g_default_bug_additional_info Default value for bug additional info field used on bug report page.
Default is empty.
$g_default_bug_steps_to_reproduce Default value for bug steps to reproduce field used on bug report
page. Default is empty.
$g_default_bug_view_status The default viewing status for the new bug (VS_PUBLIC or
VS_PRIVATE). The default is VS_PUBLIC.
$g_default_bugnote_view_status The default viewing status for the new bugnote (VS_PUBLIC or
VS_PRIVATE). The default is VS_PUBLIC.
39
Configuration
$g_default_reminder_view_status The default viewing status for the new reminders (VS_PUBLIC or
VS_PRIVATE). The default is VS_PUBLIC.
$g_reminder_receive_threshold The minimum access level for a user to show up in the reminder user
picker. Note that this is the access level for the project for which
the issue belongs. The default is DEVELOPER.
$g_default_bug_resolution The resolution for a newly created issue. The default is OPEN. Look
in constant_inc.php for other values.
$g_default_bug_severity The severity for a newly created issue. The default is MINOR. Look
in constant_inc.php for other values.
$g_default_bug_priority The priority for a newly created issue. The default is NORMAL.
Look in constant_inc.php for other values.
$g_default_bug_eta The ETA for a newly created issue. The default is ETA_NONE.
Look in constant_inc.php for other values.
$g_default_limit_view Number of bugs to show in the View Bugs page. The default value
is 50.
$g_default_show_changed Highlight bugs that have changed during the last N hours. The
default value is 6.
$g_hide_status_default Controls which issues will be displayed in the View Issues page.
Default value is CLOSED, implying that all issues at "closed" or
higher state will not be shown.
$g_min_refresh_delay This is the delay between automatic refreshes of the View Issues
page in minutes. Make sure refresh delay in user preferences isn't
too short. If a users set their preferences to be lower then it is
bumped back up to this minimum value. The default value is 10
minutes.
These settings are used as the default values for preferences for new users. Each user can override
these settings through the user preferences form. Default language is set to default site language
($g_default_language).
$g_default_refresh_delay Default page refresh delay (in minutes). This is for the bug listing
pages. Default value is 30 minutes.
40
Configuration
$g_default_bugnote_order This controls the time order in which bug notes are displayed. It can
be either ASC (oldest first, the default) or DESC (newest first).
$g_default_email_on_reopened Default user preferences to enable receiving emails when bugs are
re-opened. Default value is ON.
$g_default_email_on_new_minimum_severity,
Default user preferences to enable filtering based on issue severity.
$g_default_email_on_assigned_minimum_severity,
These correspond to the email_on_<status> settings. Default is
$g_default_email_on_feedback_minimum_severity,
'any'.
$g_default_email_on_resolved_minimum_severity,
$g_default_email_on_closed_minimum_severity,
$g_default_email_on_reopened_minimum_severity,
$g_default_email_on_bugnote_minimum_severity
$g_default_email_on_bugnote_minimum_severity
Default user preference to enable filtering based on issue severity.
These corresponds to the email_on_bugnote setting. Default is
'any'.
$g_default_email_on_status_minimum_severity
Default user preference to enable filtering based on issue severity.
These corresponds to the email_on_status settings. Default is 'any'.
$g_default_email_on_priority_minimum_severity
Default user preferences to enable filtering based on issue severity.
These corresponds to the email_on_priority settings. Default is
'any'.
Summary
These are the settings that are used to configuration options related to the Summary page. This page
contains statistics about the bugs in MantisBT.
$g_reporter_summary_limit Limit how many reporters to show in the summary page. This is
useful when there are dozens or hundreds of reporters. The default
value is 10.
$g_date_partitions An array of date lengths to count bugs by (in days) for the summary
by date. The default is to count for 1, 2, 3, 7, 30, 60, 90, 180, and
365.
41
Configuration
$g_view_summary_threshold Specifies the access level required to view the summary page.
Default is MANAGER.
42
Configuration
Bugnote
$g_bugnote_order Order to use for sorting bugnotes by submit date. Possible values include ASC
for ascending and DESC for descending order. The default value is ASC.
File Upload
MantisBT allows users to upload file attachments and associate them with bugs as well as projects. Bug
attachments / project documents can be uploaded to the webserver or database. When bugs are uploaded to
the webserver they are uploaded to the path that is configured in the project properties. In case of problems
getting the file upload feature to work, check the following resources: PHP Manual [https://www.php.net/
manual/en/features.file-upload.php] .
Default: DATABASE
$g_max_file_size Maximum file size that can be uploaded. Default value is about
5 MiB. The maximum size is also affected by the PHP options
post_max_size (default 8 MiB), upload_max_filesize (default 2
MiB) and memory_limit (default 128 MiB) specified in php.ini.
$g_disallowed_files Files that are not allowed. Separate items by commas. eg.
"php,php3,phtml,html,class,java,exe,pl" $g_disallowed_files takes
precedence over $g_allowed_files. It is recommended to disable all
extensions that can be executed by your server.
$g_preview_attachments_inline_max_size
This limit applies to previewing of image / text attachments. If the
attachment size is smaller than the specified value, the attachment
is previewed with the issue details. The previewing can be disabled
by setting this configuration to 0. The default value is 256 * 1024
(256KB).
$g_preview_text_extensions An array of file extensions (not including dots) for text files that
can be previewed inline.
43
Configuration
$g_preview_image_extensions An array of file extensions (not including dots) for image files that
can be previewed inline.
$g_fileinfo_magic_db_file Specify the filename of the magic database file. This is used by PHP
to guess what the MIME type of a file is. Usually it is safe to leave
this setting as the default (blank) as PHP is usually able to find this
file by itself.
$g_file_download_xsendfile_header_name
The name of the X-Sendfile header to use. Each server tends to
implement this functionality in a slightly different way and thus
the naming conventions for the header differ between each server.
Lighttpd from v1.5, Apache with mod_xsendfile and Cherokee web
servers use X-Sendfile. nginx uses X-Accel-Redirect and Lighttpd
v1.4 uses X-LIGHTTPD-send-file.
HTML
$g_html_make_links This flag controls whether www URLs and email addresses are
automatically converted into clickable links as well as where the
www links open when clicked. The options are:
$g_html_valid_tags This is the list of HTML tags that are allowed.Do NOT include
href or img tags here.Do NOT include tags that have parameters
(eg. )The HTML code is allowed to enter the database as is. The
$g_allow_href_tags does not have to be enabled to make URL
links. The package will automatically hyperlink properly formatted
URLs eg. https://blah.blah/ or mailto://[email protected]/
$g_top_include_page Specifies a file to be included at the top of each page. It can be used
e.g. for company branding.
44
Configuration
Example top include PHP file with logo and centered page title:
<div class="center">
<span class="pagetitle">
<?php global $g_window_title; echo $g_window_title; ?>
</span>
</div>
$g_main_menu_custom_options This option will add custom options to the main menu. It is an array
of arrays listing the caption, access level required, and the link to
be executed. For example:
$g_main_menu_custom_options = array(
array(
'title' => 'My Link',
'access_level' => MANAGER,
'url' => 'my_link.php',
'icon' => 'fa-plug'
),
array(
'title' => 'My Link2',
'access_level' => ADMINISTRATOR,
'url' => 'my_link2.php',
'icon' => 'fa-plug'
)
);
Note that if the caption is found in custom_strings_inc.php
(see the section called “Strings / Translations”), it will be replaced
by the corresponding translated string. Options will only be added
to the menu if the current logged in user has the appropriate access
level.
45
Configuration
Authentication
Global authentication parameters
$g_login_method Specifies which method will be used to authenticate. It should be
one of the following values (defaults to MD5):
• BASIC_AUTH
• HTTP_AUTH
In addition, the following deprecated values are supported for
backwards-compatibility, and should no longer be used:
• CRYPT
• CRYPT_FULL_SALT
46
Configuration
ldap://ldap.example.com/
ldaps://ldap.example.com:3269/
Note
Multiple servers can be specified as a space-separated list.
Defaults to ON.
Warning
For security, a failure aborts the entire connection, so make
sure your server supports StartTLS if this setting is ON,
and use the ldap:// scheme (not ldaps://).
Note
Requires PHP 7.1 or later.
Warning
For security, a failure aborts the entire connection.
$g_ldap_root_dn The root distinguished name for LDAP searches. For example,
dc=example, dc=com.
47
Configuration
$g_ldap_protocol_version The LDAP Protocol Version to use (2, 3 or 0). This maps to the
LDAP_OPT_PROTOCOL_VERSION ldap library option.
Defaults to 3.
Note
If 0, then the protocol version is not set, and you get
whatever default the underlying LDAP library uses.
$g_ldap_network_timeout Duration of the timeout for TCP connection to the LDAP server (in
seconds). This maps to LDAP_OPT_NETWORK_TIMEOUT ldap
library option. Defaults to 0 (infinite).
For Active Directory, this should be set to OFF. If you have only
one LDAP server, setting to this to OFF is advisable to prevent any
man-in-the-middle attacks.
$g_ldap_bind_passwd The password for the service account used to establish the
connection to the LDAP server. For anonymous binding, leave
empty.
$g_ldap_realname_field The LDAP field for the user's real name (i.e. common name).
Defaults to cn.
$g_use_ldap_realname Use the realname specified in LDAP (ON) rather than the one stored
in the database (OFF). Defaults to OFF.
Note
MantisBT will update the database with the data retrieved
from LDAP when ON.
$g_use_ldap_email Use the email address specified in LDAP (ON) rather than the one
stored in the database (OFF). Defaults to OFF.
48
Configuration
Note
MantisBT will update the database with the data retrieved
from LDAP when ON.
$g_ldap_simulation_file_path This configuration option allows replacing the ldap server with a
comma-delimited text file for development or testing purposes.
• No headers
• username
• realname
• password
Warning
On production systems, this option should be set to ''
(This is the default).
Status Settings
$g_bug_submit_status Status to assign to the bug when submitted. Default value is NEW_.
$g_bug_feedback_status Status to assign to the bug when feedback is required from the issue
reporter. Once the reporter adds a note the status moves back from
feedback to $g_bug_assigned_status or $g_bug_submit_status
based on whether the bug assigned or not.
49
Configuration
$g_bug_resolution_not_fixed_threshold
Threshold resolution which denotes that a bug has been resolved
without being successfully fixed by developers. Resolutions above
this threshold are considered to be resolved in an unsuccessful way.
Default value is UNABLE_TO_REPRODUCE.
$g_report_bug_threshold This is the access level required to open a bug. The default is
REPORTER.
$g_update_bug_threshold This is the access level generally required to update the content of
a bug. The default is UPDATER.
50
Configuration
$g_update_bug_status_threshold These settings control the access level required to promote a bug
$g_set_status_threshold to a new status once the bug is opened.$g_set_status_threshold is
an array indexed by the status value that allows a distinct setting
for each status. It defaults to blank.If the appropriate status is not
defined above, $g_update_bug_status_threshold is used instead.
The default is DEVELOPER.
$g_bugnote_user_change_view_state_threshold
Threshold at which a user can change the view status of his/her own
bugnotes. The default value is equal to the configuration setting
$g_change_view_status_threshold.
$g_allow_reporter_close If set, the bug reporter is allowed to close their own bugs, regardless
of their access level. The default is OFF.
$g_allow_reporter_reopen If set, the bug reporter is allowed to reopen their own bugs once
resolved, regardless of their access level. This allows the reporter
to disagree with the resolution. The default is ON.
$g_allow_parent_of_unresolved_to_close
If set, no check is performed on the status of a bug's children, which
allows the parent to be closed whether or not the children have been
resolved. The default is OFF.
Filters
$g_filter_by_custom_fields Show custom fields in the filter dialog and use these in filtering.
Defaults to ON.
$g_filter_custom_fields_per_row The number of filter fields to display per row. The default is 8.
$g_view_filters = Controls the display of the filter pages. Possible values are:
SIMPLE_DEFAULT;
• SIMPLE_ONLY - only allow use of simple view
$g_use_dynamic_filters = ON; This switch enables the use of AJAX to dynamically load and
create filter form controls upon request. This method will reduce
51
Configuration
the amount of data that needs to be transferred upon each page load
dealing with filters and thus will result in speed improvements and
bandwidth reduction.
$g_create_short_url The service to use to create a short URL. The %s will be replaced
by the long URL. By default https://www.tinyurl service is used to
shorten URLs.
Misc
$g_user_login_valid_regex The regular expression to use when validating new user login
names. The default regular expression allows a-z, A-Z, 0-9, +, -, dot,
space and underscore. If you change this, you may want to update
the ERROR_USER_NAME_INVALID string in the language files
to explain the rules you are using on your site.
$g_show_monitor_list_threshold Access level needed to show the list of users monitoring an issue.
The default value is DEVELOPER.
$g_monitor_add_others_bug_thresholdAccess level needed to add other users to the list of users monitoring
an issue. The default value is DEVELOPER.
$g_monitor_delete_others_bug_threshold
Access level needed to delete other users from the list of users
monitoring an issue. The default value is DEVELOPER.
$g_delete_bug_threshold Allow the specified access level and above to delete bugs.
$g_bug_move_access_level Allow the specified access level and above to move bugs between
projects.
$g_anonymous_account Define the account which anonymous users will assume when
using Mantis. This account is considered by Mantis to be protected
52
Configuration
$g_bug_link_tag If a number follows this tag it will create a link to a bug. Default
is '#'.
$g_bugnote_link_tag If a number follows this tag it will create a link to a bug note. Default
is '~'.
Warning
This is a potentially dangerous configuration option. Users
at or above this threshold value will have permission to
all aspects of Mantis including the admin/ directory. With
this access level, users can damage your installation of
Mantis, destroy your database or have elevated access to
your server.
53
Configuration
$g_view_configuration_threshold Threshold for users to view the raw system configurations as stored
in the database. The default value is ADMINISTRATOR.
$g_set_configuration_threshold Threshold for users to set the system configurations generically via
MantisBT web interface. The default value is ADMINISTRATOR.
Warning
Users who have access to set configuration via the
interface MUST be trusted. This is due to the fact that these
users can leverage the interface to inject PHP code into
the system, which is a potential security risk.
Cookies
$g_cookie_path Specifies the path under which a cookie is visible.
All scripts in this directory and its sub-directories will be able to access
MantisBT cookies.
Default value is '/'. It is recommended to set this to the actual MantisBT path.
$g_cookie_domain The domain that the MantisBT cookies are available to.
This should be an identifier which does not include spaces or periods, and
should be unique per MantisBT installation, especially if $g_cookie_path is not
restricting the cookies' scope to the actual MantisBT directory.
It applies to the cookies listed below. Their actual names are calculated by
prepending the prefix, and it is not expected for the user to need to change these.
• $g_string_cookie
• $g_project_cookie
• $g_view_all_cookie
• $g_manage_users_cookie
• $g_manage_config_cookie
Stores the filter criteria for the Manage Config Report page
• $g_logout_cookie
• $g_bug_list_cookie
54
Configuration
Speed Optimisation
$g_compress_html This option is used to enable buffering/compression of HTML
output if the user's browser supports it. Default value is ON. This
option will be ignored in the following scenarios:
• If PHP does not include the zlib extension (PHP 4.3.0 and later
include zlib extension by default).
You can check the loaded modules in your PHP by running "php
-m" on the command line, or by using php_info() command in a
php script.
Reminders
Sending reminders is a feature where a user can notify / remind other users about a bug. In the past, only
selected users like the managers, or developers would get notified about bugs. However, these people can
not invite other people (through MantisBT) to look at or monitor these bugs.
This feature is useful if the Manager needs to get feedback from testers / requirements team about a certain
bug. It avoid needing this person to do this manual outside MantisBT. It also records the history of such
reminders.
Bug History
Bug history is a feature where MantisBT tracks all modifications that are made to bugs. These include
everything starting from its creation, till it is closed. For each change, the bug history will record the time
stamp, user who made the change, field that changed, old value, and new value.
55
Configuration
Independent of the these settings, MantisBT will always track the changes to a bug and add them to its
history.
$g_history_default_visible Make the bug history visible by default. If this option is not enabled,
then the user will have to click on the Bug History link to see the
bug history. Default is ON.
In this context, MantisBT records individual changes to text fields (Description, Steps to Reproduce,
Additional Information as well as Bug Notes). These revisions are controlled by the following settings.
Note
Users can always see revisions for the issues and bugnotes
they reported.
Sponsorship
$g_enable_sponsorship enable/disable the whole issue sponsorship feature. The default os
OFF.
$g_sponsorship_currency The currency string used for all sponsorships. The default is 'US$'.
$g_minimum_sponsorship_amount The minimum sponsorship amount that can be entered. If the user
enters a value less than this, an error will be flagged. The default
is 5.
$g_view_sponsorship_total_threshold The access level threshold needed to view the total sponsorship for
an issue by all users. The default is VIEWER.
$g_view_sponsorship_details_threshold
The access level threshold needed to view the details of the
sponsorship (i.e., who will donate what) for an issue by all users.
The default is VIEWER.
$g_sponsor_threshold The access level threshold needed to allow user to sponsor issues.
The default is REPORTER. Note that sponsoring user must have
their email set in their profile.
Custom Fields
$g_manage_custom_fields_threshold Access level needed to manage custom fields. The default is
ADMINISTRATOR.
56
Configuration
$g_custom_field_link_threshold Access level needed to link a custom field to a project. The default
is MANAGER.
My View Settings
$g_my_view_boxes This is an array of values defining the order that the boxes to be shown.
A box that is not to be shown can have its value set to 0. The default is:
$g_my_view_boxes = array(
'assigned' => '1',
'unassigned' => '2',
'reported' => '3',
'resolved' => '4',
'recent_mod' => '5',
'monitored' => '6',
'feedback' => '0',
'verify' => '0',
'my_comments' => '0'
);
If you want to change the definition, copy the default value and apply the
changes.
$g_default_home_page Default page to transfer to after Login or Set Project. The default is
'my_view_page.php'. An alternative would be 'view_all_bugs_page.php'
or 'main_page.php'.
Relationship Graphs
MantisBT can display a graphical representation of the relationships between issues. Two types of
interactive visualizations are available, dependencies and a full relationships graph.
Important
This feature relies on the external dot and neato tools from the GraphViz [https://
www.graphviz.org/] library, which must be installed separately.
Most Linux distributions have a GraphViz package available for easy download and install.
Under Windows, the software needs to be installed manually. The following post-installation
steps may be required [https://mantisbt.org/bugs/view.php?id=27584#c64693] for proper
operations:
• Initialize the graph engine by running dot -c from an Administrator command prompt.
57
Configuration
$g_relationship_graph_enable This enables the relationship graphs feature where issues are
represented by nodes and relationships as links between such nodes.
Possible values are ON or OFF. Default is OFF.
$g_relationship_graph_max_depth Max depth for relation graphs. This only affects relationship graphs,
dependency graphs are drawn to the full depth. The default value
is 2.
$g_dot_tool The full path for the dot tool. The webserver must have execute
permission to this program in order to generate relationship graphs.
This configuration option is not relevant for Windows. The default
value is '/usr/bin/dot'.
$g_neato_tool The full path for the neato tool. The webserver must have execute
permission to this program in order to generate relationship graphs.
This configuration option is not relevant for Windows. The default
value is '/usr/bin/neato'.
Wiki Integration
$g_wiki_enable Set to ON to enable Wiki integration. Defaults to OFF.
$g_wiki_root_namespace Wiki namespace to be used as root for all pages relating to this
MantisBT installation.
58
Configuration
If left empty (default), the URL is derived from the global MantisBT
path ($g_path, see the section called “Path”), replacing the URL's
path component by the wiki engine string (i.e. if $g_path = 'http://
example.com/mantis/' and $g_wiki_engine = 'dokuwiki', the wiki URL
will be 'http://example.com/dokuwiki/').
Sub-Projects
$g_subprojects_enabled Whether sub-projects feature should be enabled. Before turning this
flag OFF, make sure all sub-projects are moved to top level projects,
otherwise they won't be accessible. The default value is ON.
Field Visibility
$g_enable_eta Enable or disable usage of 'ETA' field. Default value is OFF.
The summary and description fields are always shown and do not
need to be listed in this option. Fields not listed above cannot be
shown on the bug report page. Visibility of custom fields is handled
via the Manage => Manage Custom Fields administrator page.
Note that monitors is not an actual field; adding it to the list will
let authorized reporters (see monitor_add_others_bug_threshold
in the section called “Misc”) select users to add to the issue's
monitoring list. Monitors will only be notified of the submission
if both their e-mail preferencess and the notify_flags configuration
(see the section called “Email”) allows it, i.e.
$g_notify_flags['new']['monitor'] = ON;
59
Configuration
$g_bug_view_page_fields An array of optional fields to show on the issue view page and other
pages that include issue details.
Fields not listed above cannot be shown on the bug view page.
Visibility of custom fields is handled via the Manage => Manage
Custom Fields administrator page.
Fields not listed above cannot be shown on the bug update page.
Visibility of custom fields is handled via the Manage => Manage
Custom Fields administrator page.
$g_show_timer Time page loads. The page execution timer shows at the bottom of
each page.
Default is OFF.
$g_show_memory_usage Show memory usage for each page load in the footer.
Default is OFF.
$g_debug_email Used for debugging e-mail notifications. When it is '', the emails are
sent normally. If set to an e-mail address, all messages are sent to
it, with the original recipients (To, Cc, Bcc) included in the message
body.
60
Configuration
Default is ''.
Default is OFF.
The default settings are recommended for use in production, and will
only display MantisBT fatal errors, suppressing output of all other
error types.
$g_display_errors = array(
E_WARNING => DISPLAY_ERROR_HALT,
E_ALL => DISPLAY_ERROR_INLINE,
);
Note
The system automatically sets $g_display_errors to the
above recommended development values when the server's
name is localhost.
$g_display_errors = array(
E_USER_WARNING => DISPLAY_ERROR_INLINE,
E_WARNING => DISPLAY_ERROR_INLINE,
);
Note
E_USER_ERROR, E_RECOVERABLE_ERROR and
E_ERROR will always be set to DISPLAY_ERROR_HALT
internally, regardless of the actual configured value.
This ensures that program execution stops, to prevent
61
Configuration
Default is OFF.
Warning
Setting this to ON is a potential security hazard, as it can
expose sensitive information. Only enable this setting for
debugging purposes when you really need it.
$g_stop_on_errors Debug messages. If this option is turned OFF, page redirects will
function if a non-fatal error occurs. For debugging purposes, you can
set this to ON so that any non-fatal error will prevent page redirection,
allowing you to see the errors.
Default is OFF.
Note
This should only be turned on when debugging.
Default is LOG_NONE.
Note
Multiple log channels can be combined using
PHP bitwise operators [https://www.php.net/
language.operators.bitwise], e.g.
or
$g_log_destination Specifies where the log data goes. The following five options are
available:
'' The empty string means default PHP error log settings
[https://www.php.net/error_log]
Note
This file must be writable by the web server
running MantisBT.
$g_show_log_threshold Indicates the access level required for a user to see the log output (if
$g_log_destination is 'page').
Default is ADMINISTRATOR.
Note
This threshold is compared against the user's global access
level rather than the one from the currently active project.
63
Configuration
Time Tracking
$g_time_tracking_enabled Turns Time Tracking features ON or OFF - Default is OFF
$g_time_tracking_without_note Allow time tracking to be recorded without writing some text in the
associated bugnote - Default is ON
$g_time_tracking_with_billing Adds calculation links to workout how much time has been spent
between a particular time frame. Currently it will allow you to enter
a cost/hour and will work out some billing information. This will
become more extensive in the future. Currently it is more of a proof
of concept.
API
MantisBT exposes a webservice API which allows remote clients to interact with MantisBT and perform
many of the usual tasks, such as reporting issues, running filtered searches and retrieving attachments.
The REST API is enabled by default. A Swagger sandbox and documentation for REST API is available
at /api/rest/swagger/ below the MantisBT root.
The following options are used to control the behaviour of the MantisBT SOAP API:
$g_webservice_readonly_access_level_threshold
Minimum global access level required to access webservice for
readonly operations.
$g_webservice_readwrite_access_level_threshold
Minimum global access level required to access webservice for
read/write operations.
$g_webservice_admin_access_level_threshold
Minimum global access level required to access the administrator
webservices.
$g_webservice_specify_reporter_on_add_access_level_threshold
Minimum project access level required for caller to be able to
specify reporter when adding issues or issue notes. Defaults to
DEVELOPER.
64
Configuration
$g_webservice_rest_enabled Whether the REST API is enabled or not. Note that this flag
only impacts API Token based auth. Hence, even if the API is
disabled, it can still be used from the Web UI using cookie based
authentication. Default ON.
$g_webservice_readonly_access_level_threshold =
$g_webservice_readwrite_access_level_threshold =
$g_webservice_admin_access_level_threshold = NOBODY;
While the SOAP API will still be accessible, it will not allow users to retrieve or modify data.
Anti-Spam Configuration
$g_antispam_max_event_count Max number of events to allow for users with default access
level (see $g_default_new_account_access_level) when signup is
enabled. Use 0 for no limit. Default is 10.
$g_antispam_time_window_in_seconds
Time window to enforce max events within. Default is 3600
seconds (1 hour).
Due Date
$g_due_date_update_threshold Threshold to update due date submitted. Default is NOBODY.
$g_due_date_default Default due date value for newly submitted issues: Empty string for
no due date set. Related date that is accepted by strtotime() [https://
www.php.net/manual/en/function.strtotime.php], e.g. 'today' or '+2
days'. Default is ''.
• Array keys 1 and 2 offer two levels of Due soon: orange and
green. By default, only the first one is set, to 7 days.
Out of the box, MantisBT allows for 3 warning levels. Additional
ones may be defined, but in that case new due-N CSS rules (where
N is the array's index) must be created otherwise the extra levels
will not be highlighted in the UI.
65
Configuration
User Management
$g_impersonate_user_threshold The threshold for a user to be able to impersonate another user, or
NOBODY to disable impersonation. Default ADMINISTRATOR.
Issues visibility
By default, all issues are visible to any user within a project. To limit the visibility of issues there are
several mechanisms.
Refer to the following configuration options related to issue view status configurations:
$g_default_bug_view_status The default viewing status for the new bug (VS_PUBLIC or
VS_PRIVATE). The default is VS_PUBLIC.
$g_private_bug_threshold The threshold for a user to be able to view any private issue within
a project.
$g_change_view_status_threshold The threshold for a user to be able to update the view status while
updating an issue.
• It is assigned to them,
This configuration option can be set individually for each project. It defaults to ANYBODY, effectively
disabling the limitation (i.e. users can see all issues).
66
Configuration
The value for this option is an access level threshold, so that those users that meet that threshold have an
unrestricted view of any issue in the project. A user that doesn't meet this threshold, will have a restricted
view of only those issues in the conditions previously described.
Note that this visibility does not override other restrictions as private issues or pivate projects user
assignments.
This option is only supported for ALL_PROJECTS, this means that it's a global setting that affects all
projects
Note that the definition of reporter in this context is the actual access level for which a user is able to
report issues, and is determined by $g_report_bug_threshold. Additionally, that threshold can
have different values in each project. Being dependant on that threshold, the behaviour of this option is
not well defined when the reporting threshold is configured as discrete values with gaps, instead of a
simple threshold. In that scenario, the visibilty is determined by the minimum access level contained in
the $g_report_bug_threshold access levels array.
Note
This option option is deprecated in favour of $g_limit_view_unless_threshold.
The new option will be available by default on new installations, or after disabling
$g_limit_reporters if enabled in an existing instance.
67
Chapter 6. Page descriptions
Login page
Just enter your username and password and hit the login button. There is also a Save Login checkbox
to have the package remember that you are logged in between browser sessions. You will have to have
cookies enabled to login.If the account doesn't exist, the account is disabled, or the password is incorrect
then you will remain at the login page. An error message will be displayed.The administrator may allow
users to sign up for their own accounts. If so, a link to Signup for your own account will be available.The
administrator may also have anonymous login allowed. Anonymous users will be logged in under a
common account.You will be allowed to select a project to work in after logging in. You can make a
project your default selection from the Select Project screen or from your Account Options.SignupHere
you can signup for a new account. You must supply a valid email address and select a unique username.
Your randomly generated password will be emailed to your email account. If MantisBT is setup so that
the email password is not to be emailed, newly generated accounts will have an empty password.
Main page
This is the first page you see upon logging in. It shows you the latest news updates for the bugtracker.
This is a simple news module (based off of work by Scott Roberts) and is to keep users abreast of changes
in the bugtracker or project. Some news postings are specific to projects and others are global across the
entire bugtracker. This is set at the time of posting in the Edit News section.The number of news posts is
controlled by a global variable. When the number of posts is more than the limit, a link to show "older
news" is displayed at the bottom. Similarly a "newer news" is displayed when you have clicked on "older
news".There is an Archives option at the bottom of the page to view all listings.ArchivesA title/date/poster
listing of ALL past news articles will be listed here. Clicking on the link will bring up the specified article.
This listing will also only display items that are either global or specific to the selected project.
68
Page descriptions
reporter, acknowledged - issue has been looked at but not confirmed or assigned, confirmed - confirmed
and reproducible (typically set by an Updater or other Developer), assigned - assigned to a Developer,
resolved - issue should be fixed, waiting on confirmation of fix, closed - issue is closed, Moving the mouse
over the status text will show the resolution as a title. This is rendered by some browsers as a bubble and
in others as a status line text.
• Assign to - in conjunction with the dropdown list next top the button, this is a shortcut to change the
assignment of an issue
• Change Status to - in conjunction with the dropdown list next top the button, this is a shortcut to change
the status of an issue. Another page (Change Status) will be presented to allow the user to add notes
or change relevant information
• Monitor / Unmonitor Issue - allows the user to monitor any additions to the issue by email
• Create Clone - create a copy of the current issue. This presents the user with a new issue reporting form
with all of the information in the current issue filled in. Upon submission, a new issue, related to the
current issue, will be created.
• Move Issue - allows the user to move the issue to another project
• Delete Issue - Allows the user to delete the issue permanently. It is recommended against deleting issues
unless the entry is frivolous. Instead issues should be set to resolved and an appropriate resolution
category chosen.
A panel is provided to view and update the sponsorship of an issue.Another panel is provided to view,
delete and add relationships for an issue. Issues can have a parent/child relationship, where the user is
warned about resolving a parent issue before all of the children are resolved. A peer relationship is also
possible.Below this, there may be a form for uploading file attachments. The Administrator needs to
configure the bugtracker to handle file uploads. If uploading to disk is selected, each project needs to set
its own upload path. Issue notes are shown at the bottom of the issue report. A panel to add issue notes
is also shown.
69
Page descriptions
My Account Page
This page changes user alterable parameters for the system. These selections are user specific. This allows
the user to change their password, username, real name and email address. It also reports the user's access
levels on the current project and default access level used for public projects.
Preferences
This sets the following information:
• Default project
• whether the pages used for reporting, viewing, and updating are the simple or advanced views
• the delay in minutes between refreshes of the view all issues page
• the delay in seconds when redirecting from a confirmation page to the display page
• the default language for the system. The additional setting of "auto" will use the browser's default
language for the system.
Profiles
Profiles are shortcuts to define the values for Platform, OS, and version. This page allows you to define
and edit personal shortcuts.
Manage Columns
Provides the ability to select the fields to be displayed in View Issues, Print Issues, CSV and Excel exports.
The changes apply to the currently selected projects or All Projects for setting the defaults. It is also
possible to copy such settings from/to other projects.
API Tokens
Provides the ability to generate and revoke tokens that can be used by applications and services to access
MantisBT via its APIs. This page also provides information about the creation and last used timestamps
for such tokens.
70
Page descriptions
Manage Users
This page allow an administrator to manage the users in the system.It essentially supplies a list of users
defined in the system. The user names are linked to a page where you can change the user's name, access
level, and projects to which they are assigned. You can also reset their passwords through this page.At the
top, there is also a list of new users (who have created an account in the last week), and accounts where the
user has yet to log in.New users are created using the "Create User" link above the list of existing users.
Note that the username must be unique in the system. Further, note that the user's real name (as displayed
on the screen) cannot match another user's user name.
• its status
• whether the project is public or private. Private projects are only visible to users who are assigned to it
or users who have the access level to automatically have access to private projects (eg: administrators).
• file directory used to store attachments for issues and documents associated with the project. This folder
is located on the webserver, it can be absolute path or path relative to the main MantisBT folder. Note
that this is only used if the files are stored on disk.
• common subprojects. These are other projects who can be considered a sub-project of this one. They can
be shared amongst multiple projects. For example, a "documentation" project may be shared amongst
several development projects.
• project categories. These are used to sub-divide the issues stored in the system.
• project versions. These are used to create ChangeLog reports and can be used to filter issues. They are
used for both the Found In and Fixed In versions.
• Users linked to this project. Here is the place where a user's access level may be upgraded or downgraded
depending on their particular role in the project.
The "Edit" links take you to a page where you can define the details of a custom field. These include
it's name, type, value, and display information. On the edit page, the following information is defined to
control the custom field:
71
Page descriptions
• name
• type
• Value constraints (Possible values, default value, regular expression, minimum length, maximum
length).
• Access (who can read and write the field based on their access level).
• Display control (where the field will show up and must be filled in
All fields are compared in length to be greater than or equal to the minimum length, and less than or equal
to the minimum length, unless these values are 0 in which case the check is skipped. All fields are also
compared against the regular expression; if the value matches, then it is valid. For example, the expression
^-?([0-9])*$ can be used to constrain an integer.
Please refer to the section called “Custom Fields” for further details about Custom Fields and all the above-
mentioned properties.
Manage Configuration
This set of pages control the configuration of the MantisBT system. Note that the configuration items
displayed may be on a project by project basis.These pages serve two purposes. First, they will display
the settings for the particular aspects of the system. If authorized, they will allow a user to change the
parameters. They also have settings for what access level is required to change these settings ON A
PROJECT basis. In general, this should be left alone, but administrators may want to delegate some of
these settings to managers.
Workflow Thresholds
This page covers the adjustment of the settings for many of the workflow related parameters. For most of
these, the fields are self explanatory and relate to a similarly named setting in the configuration file. At the
right of each row is a selector that allows the administrator to lower the access level required to change
the particular parameter.The values changeable on this page are:
Issues.
72
Page descriptions
Notes.
73
Page descriptions
Others.
Workflow Transitions
This page covers the status workflow. For most of these, the fields are self explanatory and relate to a
similarly named setting in the configuration file. At the right of each row is a selector that allows the
administrator to lower the access level required to change the particular parameter.The values changeable
on this page are:
The matrix that follows has checkmarks where the transitions are allowed from the status on the left edge to
the status listed across the top. This corresponds to the $g_enum_workflow array.At the bottom, there is a
74
Page descriptions
list of access levels that are required to change the status to the value listed across the top. This can be used,
for instance, to restrict those who can close an issue to a specific level, say a manager. This corresponds
to the $g_set_status_threshold array and the $g_report_bug_threshold setting.
Email Notifications
This page sets the system defaults for sending emails on issue related events. MantisBT uses flags and a
threshold system to generate emails on events. For each new event, email is sent to:
• the reporter
From this list, those recipients who meet the following criteria are eliminated:
The matrix on this page selects who will receive messages for each of the events listed down the left hand
side. The first four columns correspond to the first four points listed above. The next columns correspond to
the access levels defined. Note that because a minimum and maximum threshold are used, a discontinuous
selection is not allowed.
Monitor Issue
The monitor issues feature allows users to subscribe to certain issues and hence get copied on all
notification emails that are sent for these issues.Depending on the configuration, sending a reminder to a
user about an issue can add this issue to the user's list of monitored issues. Users who reported the issue
or are assigned the issue typically don't need to monitor the issue to get the notifications. This is because
by default they get notified on changes related to the issue anyway. However, administrators can change
the configuration to disable notifications to reporters or handlers in specific scenarios.
Reopen Issue
Re-open issue button is visible in the issue view pages if the user has the appropriate access level and the
issue is resolved/closed. Re-opening a issue will allow users to enter issue notes for the re-opening reason.
The issue will automatically be put into the Feedback status.
Delete Issue
The delete issues button appears on the issue view pages for the users who have the appropriate access
level. This allows you to delete an existing issue. This should only be used on frivolous or test issues. A
75
Page descriptions
confirmation screen will prompt you if you really want to delete the issue. Updaters, Developers, Managers,
and Administrators can remove issues (you can also configure this).
Close Issue
This is a button that appears on the issue view pages for users that are authorized to close issues. Depending
on the configuration, users may be able to close issues without having to resolve them first, or may be
able to only close resolved issues. After the button is clicked, the user is redirected to a page where an
issue note maybe added.
Assign to Me
This button appears in the issue view pages in case of users with access level that is equal to
handle_bug_threshold or higher. When this button is clicked the issue is assigned to the user.
Resolve Issue
This option on the View Issues page allows you to resolve the issue. It will lead you to a page where you
can set the resolution state and a duplicate id (if applicable). After choosing that the user can choose to
enter an issue note detailing the reason for the closure. The issue is then set to the Resolved state. The
reporter should check off on the issue by using the Close Issue button.
News Syndication
MantisBT supports news syndication using RSS v2.0 protocol. MantisBT also supports authenticated
news feeds for private projects or installations where anonymous access is not enabled. Authenticated
feeds takes a user name and a key token that are used to authenticate the user and generate the feed
results in the context of the user's access rights (i.e. the same as what the user would see if they were to
logged into MantisBT).To get access to the News RSS as anonymous user, visit the following page: http://
www.example.com/mantisbt/news_rss.php While a user is logged in, the RSS links provided in the UI will
always provide links to the authenticated feeds, if no user is logged in (i.e. anonymous), then anonymous
links will be provided.
76
Chapter 7. Customizing MantisBT
Strings / Translations
All strings used in MantisBT, including those defined in plugins, can be customized or
translated differently. This is achieved by overriding them in the Custom Strings File (config/
custom_strings_inc.php), which is automatically detected and included by MantisBT code.
Defining custom strings here provides a simple upgrade path, and avoids having to re-do the changes when
upgrading to the next release.
Note
The standard MantisBT language strings are sometimes reused in different contexts. If you are
planning to override some strings to meet your specific requirements, make sure to analyze where
they are used to avoids unexpected issues.
Format
$s_CODE = STRING;
Where
• CODE = string code, as called by lang_get() function. Search in lang/strings_english.txt for existing
codes.
Warning
NEVER call lang_get_current() from the custom_strings_inc.php, as doing so will reset
the active_language, causing the code to return incorrect translations if the default language is
different from English. Always use the $g_active_language global variable instead.
Custom Fields
Overview
Different teams typically like to capture different information as users report issues, in some cases, the data
required is even different from one project to another. Hence, MantisBT provides the ability for managers
and administrators to define custom fields as way to extend MantisBT to deal with information that is
specific to their teams or their projects. The aim is for this to keep MantisBT native fields to a minimum.
Following are some facts about the implementation of custom fields in MantisBT:
77
Customizing MantisBT
• Custom fields can be linked to projects by users with access level MANAGER or above (by default,
this can be configurable).
• Custom fields can be included in View Issues, Print Issues, and CSV exports.
• Enumeration custom fields can have a set of static values or values that are calculated dynamically based
on a custom function.
• Caption variable name. This value is supplied to the lang_get() API; it is therefore mandatory to set
this to a valid PHP identifier [https://www.php.net/manual/en/language.variables.basics.php] (i.e. only
letters, numbers and underscores; no spaces) if you intend to translate the field label (see the section
called “Localizing Custom Field Names”).
Note
If the specified variable is not found in the language files or in
custom_strings_inc.php, then it will be displayed as-is.
• enumeration is used when a user selects one entry from a list. The user interface for this type
is a combo-box.
• checkbox is like enumeration, but the options are shown as checkboxes and the user is allowed to
tick more than one item.
The default value and the possible value can contain multiple values like RED|YELLOW|BLUE.
• radio is like enumeration, but the list is shown as radio buttons and the user is only allowed to tick
a single option.
Note
The default value can't contain multiple values.
• list is like enumeration but the list is shown as a list box where the user is only allowed to select
one option.
78
Customizing MantisBT
Note
The default value can't contain multiple values.
• multi-selection list is like enumeration, but the list is shown as a list box where the user
is allowed to select multiple options.
Note
Multiple values are allowed as default.
The default value can be empty, a numeric UNIX timestamp, or a date in a valid format [https://
www.php.net/manual/en/datetime.formats.php], including relative indications such as tomorrow,
next week, last month, +3 days, last day of this month, etc.
Note
The legacy format where the dynamic date had to be wrapped in curly brackets (e.g.
{tomorrow}) is still supported for backwards-compatibility, but no longer necessary. This
is considered a deprecated feature, that will be removed in a future released of MantisBT.
• Possible values for the Custom Field (e.g. RED|YELLOW|BLUE). Use the pipe (|) character to separate
the enumeration's values. It is possible for one of the values to be empty (e.g. |RED|YELLOW|BLUE,
note the leading |).
The set of values can also be calculated at runtime. For example, =versions would automatically
resolve into all the versions defined for the current project. See the section called “Dynamic values for
Enumeration Custom Fields” for more information.
• Default value - see details above for a sample default value for each type.
• Minimum/maximum length for the custom field value (use 0 to disable). Note that these metrics are not
really relevant to custom fields that are based on an enumeration of possible values.
• Regular expression to use for validating user input (use PCRE syntax [https://www.php.net/manual/en/
reference.pcre.pattern.syntax.php]).
• Read Access level: Minimum access level for users to be able to see the value of the custom field.
• Write Access level: Minimum access level for users to be able to edit the value of the custom field.
• Display when reporting issues? - If this custom field should be shown on the Report Issue page.
• Display when updating issues? - If this custom field should be shown on the Update Issue page.
• Display when resolving issues? - If this custom field should be shown when resolving an issue. For
example, a "root cause" custom field would make sense to set when resolving the issue.
• Display when closing issues? - If this custom field should be shown when closing an issue.
• Required on Report - If this custom field is a mandatory field on the Report Issue page.
• Required on Update - If this custom field is a mandatory field on the Update Issue page.
79
Customizing MantisBT
• Required on Resolve - If this custom field is a mandatory field when resolving an issue.
• Required on Close - If this custom field is a mandatory field when closing an issue.
If the value of a custom field for a certain defect is not found, the default value is assumed.
• In case of edit, click on the name of an existing custom field to edit its information.
• In case of adding a new one, enter the name of the new custom field then click "New Custom Field".
Note
Added custom fields will not show up in any of the issues until the added custom field is linked
to the appropriate projects.
• Select the field to add from the list, then click "Add This Existing Custom Field".
• To change the order of the custom fields, edit the "Sequence" value and click update. Custom fields
with smaller values are displayed first.
• To unlink a custom field, click on "Remove" link next to the field. Unlinking a custom field will not
delete the values that are associated with the issues for this field. These values are only deleted if the
custom field definition is removed (not unlinked!) from the database. This is useful if you decide to
re-link the custom field. These values may also re-appear if issues are moved to another project which
has this field linked.
Moving Issues. When an issue is moved from one project to another, custom fields that are not defined
for the new project are not deleted. These fields will re-appear with their correct values if the issue is
moved back to the original project, or if these custom fields are linked to the new project.
1. Define the custom field (see the section called “Custom Field Definition”), keeping in mind that its
name must be a valid PHP identifier [https://www.php.net/manual/en/language.variables.basics.php].
80
Customizing MantisBT
As an example, we will use my_start_date for a custom field of type "Date", storing the date when
work on an issue was initiated.
• In the MantisBT config directory, locate and edit custom_strings_inc.php (see the section
called “Strings / Translations”), create it if it does not exist.
• Localize the custom field's label my_start_date by adding the following code
<?php
switch( $g_active_language ) {
case 'french':
$s_my_start_date = 'Date de début';
break;
default:
# Default language, as defined in config/config_inc.php
# ($g_default_language, English in this case)
$s_my_start_date = 'Start Date';
break;
}
Note
Had we decided to use start_date as the custom field's name, then it would not
have been necessary to modify custom_strings_inc.php (see the section called
“Strings / Translations”), since MantisBT would have used the existing, already localized
string from the standard language files. To check for standard strings, inspect lang/
strings_english.txt.
The format for specific dates is an integer which indicates the number of seconds since the Unix Epoch
[https://en.wikipedia.org/wiki/Unix_time] (January 1 1970 00:00:00 UTC), which is the format consumed
by the PHP date() [https://www.php.net/manual/en/function.date.php] method.
The relative scenario expects default values like {tomorrow}, {yesterday}, {+2 days}, {-3 days}, {next
week}, etc. The curly brackets indicate that this is a logical value which is then evaluated using the PHP
strtotime() [https://www.php.net/manual/en/function.strtotime.php] function.
81
Customizing MantisBT
• =categories a list of categories defined in the current project (or the project to which the issue
belongs).
• =versions a list of all versions defined in the current project (or the project to which the issue
belongs).
• =future_versions a list of all versions that belong to the current project with released flag set
to false.
• =released_versions a list of all versions that belong to the current project with released flag set
to true.
Note
The = before the list of options tells MantisBT that this is a dynamic list, rather than a static one
with a single option.
For example, you would not want the user to use custom_function_*_issue_delete_notify() which may be
overridden by the web master to delete associated data in other databases.
Following is a sample custom function that is used to populate a field with the categories belonging to
the currently selected project:
/**
* Construct an enumeration for all categories for the current project.
*
* The enumeration will be empty if current project is ALL PROJECTS.
* Enumerations format is: "abc|lmn|xyz"
* To use this in a custom field type "=categories" in the possible values field.
*/
function custom_function_override_enum_categories() {
$t_categories = category_get_all_rows( helper_get_current_project() );
$t_enum = array();
foreach( $t_categories as $t_category ) {
$t_enum[] = $t_category['category'];
}
return $t_possible_values;
}
82
Customizing MantisBT
Note
• The custom function doesn't take any parameters.
• The custom function returns the possible values in the format (A|B|C).
To define your own function mine, you will have to define it with the following signature:
/**
* Use this in a custom field type "=mine" in the possible values field.
*/
function custom_function_override_enum_mine() {
# Populate $t_enum values as appropriate here
$t_enum = array();
return $t_possible_values;
}
Note
Notice the override in the function name. This is because this method is defined by the MantisBT
administrator and not part of the MantisBT source. It is OK to override a method that doesn't exist.
As usual, when MantisBT is upgraded to future releases, the custom functions will not be overwritten. The
difference between the "default" implementation and the "override" implementation is explained in more
details in the section called “Custom Functions”.
Enumerations
Enumerations are used in MantisBT to represent a set of possible values for an attribute. Enumerations are
used for access levels, severities, priorities, project statuses, project view state, reproducibility, resolution,
ETA, and projection. MantisBT provides the administrator with the flexibility of altering the values in
these enumerations. The rest of this topic explains how enumerations work, and then how they can be
customised.
define( 'VIEWER', 10 );
define( 'REPORTER', 25 );
define( 'UPDATER', 40 );
define( 'DEVELOPER', 55 );
define( 'MANAGER', 70 );
define( 'ADMINISTRATOR', 90 );
config_defaults_inc.php includes the defaults for the enumerations. The configuration options
that are defaulted here are used in specifying which enumerations are active and should be used in
MantisBT.
83
Customizing MantisBT
$g_access_levels_enum_string =
'10:viewer,25:reporter,40:updater,55:developer,70:manager,90:administrator';
Note
The strings included in the enumerations here are just for documentation purposes, they are not
actually shown to the user (due to the need for localisation). Hence, if an entry in this enumeration
is not found in the corresponding localised string (i.e. 70:manager), then it will be printed to the
user as @70@.
The Language Files (e.g. lang/strings_german.txt) provide the localised strings (German in this
case) for enumerations. But again, the master list is the enumeration in the configs themselves, the ones in
the language files are just used for finding the localised equivalent for an entry. Hence, if a user changes
the config to have only two types of users developers and administrators, then only those will be prompted
to the users even if the enumerations in the language files still includes the full list.
$s_access_levels_enum_string =
'10:Betrachter,25:Reporter,40:Updater,55:Entwickler,70:Manager,90:Administrator';
How can they be customised? Let say we want to remove access level "Updater" and add access level
"Senior Developer".
define( 'SENIOR_DEVELOPER', 60 );
In config/config_inc.php
$s_access_levels_enum_string =
'10:Betrachter,25:Reporter,40:Updater,55:Entwickler,60:Senior Developer,70:Manager
Note
We don't need to remove the Updater entry from the localisation file if the current language is
'English'.
Conclusion. We have covered how enumerations work in general, and how to customise one of them.
If you are interested in customising other enumerations, a good starting point would be to go to MantisBT
84
Customizing MantisBT
Enum Strings section in config_defaults_inc.php. This section defines all enumerations that are
used by MantisBT.
Email Notifications
See the section called “Email” in the Configuration section.
Examples:
$g_notify_flags['new'] = array(
'threshold_min' => MANAGER,
'threshold_max' => MANAGER,
);
• Notify Developers and managers of all project events, except, exclude developers from the 'closed'
events.
$g_default_notify_flags = array(
'threshold_min' => DEVELOPER,
'threshold_max' => MANAGER,
);
$g_notify_flags['closed'] = array(
'threshold_min' => MANAGER,
'threshold_max' => MANAGER,
);
• Exclude those who contributed issue notes from getting messages about other changes in the issue.
$g_default_notify_flags['bugnotes'] = OFF;
$g_notify_flags['closed']['monitor'] = OFF;
$g_notify_flags['bugnote'] = array(
'threshold_min' => DEVELOPER,
'threshold_max' => DEVELOPER,
);
$g_notify_flags['sponsor'] = array(
'threshold_min' => MANAGER,
'threshold_max' => MANAGER,
);
85
Customizing MantisBT
$g_notify_flags['owner'] = array(
'threshold_min' => MANAGER,
'threshold_max' => MANAGER,
'reporter' => ON,
);
• I'm paranoid about mail. Only send information on issues to those involved in them. Don't send mail
people already know about. Also send new issue notifications to managers so they can screen them.
$g_email_receive_own = OFF;
$g_default_notify_flags = array(
'reporter' => ON,
'handler' => ON,
'monitor' => ON,
'bugnotes' => ON,
'category' => ON,
'threshold_min' => NOBODY,
'threshold_max' => NOBODY
);
$g_notify_flags['new'] = array(
'threshold_min' => MANAGER,
'threshold_max' => MANAGER,
);
You will need to create a dummy user with the appropriate access level for the notices you want to log.
Once this user is added to projects, they will receive mail using the appropriate rules.
In subfolder config, locate and edit file custom_constants_inc.php; (create it if it does not exist)
<?php
# Custom status code
define( 'TESTING', 60 );
2. Define the new status in the enumeration, as well as the corresponding color code.
86
Customizing MantisBT
$g_status_colors['testing'] = '#ACE7AE';
Note that the key in the $g_status_colors array must be equal to the value defined for the new status
code in $g_status_enum_string.
3. Define the required translation strings for the new status, for each language used in the installation.
• s_status_enum_string: status codes translation (refer to the original language strings for standard
values)
• s_XXXX_bug_button: label for the submit button in the change status page
In the config subfolder, locate and edit custom_strings_inc.php (see the section called
“Strings / Translations”), create it if it does not exist
<?php
# Translation for Custom Status Code: testing
switch( $g_active_language ) {
case 'french':
$s_status_enum_string = '10:nouveau,20:commentaire,30:accepté,40:confirmé,50:af
default: # english
$s_status_enum_string = '10:new,20:feedback,30:acknowledged,40:confirmed,50:ass
This can either be done from the Manage Workflow Transitions page (see the section called “Workflow
Transitions”) or by manually editing config_inc.php as per the example below:
$g_status_enum_workflow[NEW_] ='30:acknowledged,20:feedback,40:confirmed,
$g_status_enum_workflow[FEEDBACK] ='30:acknowledged,40:confirmed,50:assigned,
$g_status_enum_workflow[ACKNOWLEDGED] ='40:confirmed,20:feedback,50:assigned,80:r
$g_status_enum_workflow[CONFIRMED] ='50:assigned,20:feedback,30:acknowledged,8
87
Customizing MantisBT
$g_status_enum_workflow[ASSIGNED] ='60:testing,20:feedback,30:acknowledged,40
$g_status_enum_workflow[TESTING] ='80:resolved,20:feedback,50:assigned';
$g_status_enum_workflow[RESOLVED] ='90:closed,20:feedback,50:assigned';
$g_status_enum_workflow[CLOSED] ='20:feedback,50:assigned';
If you do not perform this step and have existing workflow definitions, it will not be possible to
transition to and from your new status.
Hint: to identify whether you have any workflows that should be updated, open the Manage
Configuration Report page (adm_config_report.php) and filter on 'All Users', [any] project and config
option = 'status_enum_workflow'. All of the listed projects should be reviewed to eventually include
transitions to and from the newly added states.
Custom Functions
Custom functions are used to extend the functionality of MantisBT by integrating user-written functions
into the issue processing at strategic places. This allows the system administrator to change the
functionality without touching MantisBT's core.
Default Custom Functions are defined in the API file core/custom_function_api.php , and
are named custom_function_default_descriptive_name, where descriptive_name describes the particular
function. See the section called “Default Custom Functions” for a description of the specific functions.
The simplest way to create a custom function is to copy the default one from the api to your override file
(custom_functions_inc.php), and rename it (i.e. replacing 'default' by 'override'). The specific
functionality you need can then be coded into the override function.
88
Customizing MantisBT
89
Customizing MantisBT
<?php
/**
* Hook to validate Validate field settings before resolving
* verify that the resolution is not set to OPEN
* verify that the fixed in version is set (if versions of the product exist)
*/
function custom_function_override_issue_update_validate( $p_issue_id, $p_bug_data, $p_bugno
if( $p_bug_data->status == RESOLVED ) {
if( $p_bug_data->resolution == OPEN ) {
error_parameters( 'the resolution cannot be open to resolve the issue' );
trigger_error( ERROR_VALIDATE_FAILURE, ERROR );
}
$t_version_count = count( version_get_all_rows( $p_bug_data->project_id ) );
if( ( $t_version_count > 0 ) && ( $p_bug_data->fixed_in_version == '' ) ) {
error_parameters( 'fixed in version must be set to resolve the issue' );
trigger_error( ERROR_VALIDATE_FAILURE, ERROR );
}
}
}
?>
The errors will also need to be defined, by modifying the following files
• custom_constants_inc.php
90
Chapter 8. Authentication
MantisBT supports several authentication methods out of the box. In addition, there is work in progress
relating to supporting authentication plug-ins. Once these are implemented, authentication against any
protocol or repository of user names and passwords will be possible without having to touch MantisBT
core code.
It is important to note that MantisBT does not yet support hybrid authentication scenarios. For example,
internal staff authenticating against LDAP while customers authenticate against the MantisBT database
with MD5 hash.
See $g_login_method in the section called “Global authentication parameters” for more details about how
to configure MantisBT to use one of these authentication techniques.
Standard Authentication
With Standard login method, MantisBT users are authenticated against records in the MantisBT database,
where the passwords are stored as a hash.
Note: while technically unlimited, the password's length is arbitrarily restricted to 1024 characters
(PASSWORD_MAX_SIZE_BEFORE_HASH constant).
The LDAP parameters should be setup as explained in the section called “LDAP authentication method
parameters”.
An MD5 hash of the user's password will be stored in the database upon successful login, allowing fall-
back to Standard Authentication when the LDAP server is not available.
The user's ID and password is checked against the Directory; if the credentials are valid, then the user is
allowed to login and their user account in MantisBT is created automatically.
Basic Authentication
Value for $g_login_method: BASIC_AUTH
When MantisBT is configured to use basic auth, it automatically detects the logged in user and checks
if they are already registered in MantisBT, if not, then a new account is automatically created for the
username.
91
Authentication
The password length is limited to the size of the underlying database field
(DB_FIELD_SIZE_PASSWORD constant), currently 32 characters.
HTTP Authentication
Value for $g_login_method: HTTP_AUTH
TODO
The password length is limited to the size of the underlying database field
(DB_FIELD_SIZE_PASSWORD constant), currently 32 characters.
• CRYPT
• CRYPT_FULL_SALT
• PLAIN
With CRYPT-based methods, the password's length is limited as per Standard Authentication. With
PLAIN, its size is restricted as for Basic Authentication.
92
Chapter 9. Troubleshooting
This chapter provides the Administrator with additional information related to Application Errors and
common problems in MantisBT.
Useful additional reference information and support may also be found on the MantisBT website [https://
mantisbt.org/], more specifically the Forums [https://mantisbt.org/forums/] and the Bugtracker [https://
mantisbt.org/bugs/].
Application Errors
Additional information about common MantisBT errors.
• Multiple submissions of a form by clicking on the submit button several times (user error)
• Invalid or unauthorized submission of a form, e.g. by hand-crafting the URL (CSRF attack)
In the first two instances, MantisBT's behavior is by design, and the response as expected. For expired
sessions however, the user is impacted by system behavior, which could not only cause confusion, but also
potential loss of submitted form data. What happens is driven by several php.ini configuration settings:
With PHP default values, sessions created more than 1440 seconds (24 minutes) ago have a 1% chance
to be invalidated each time a new session is initialized. This explains the seemingly random occurrence
of this error.
Unfortunately, this problem cannot be fixed without a major rework of the way sessions and form security
are handled in MantisBT.
• Set $g_form_security_validation = OFF. Note that for security reasons, it is strongly recommended not
to do this.
Users may also install local tools to avoid loss of form data, such as Typio Form Recovery [https://
chrome.google.com/webstore/detail/typio-form-recovery/djkbihbnjhkjahbhjaadbepppbpoedaa] Chrome
extension, or Form History Control [https://stephanmahieu.github.io/fhc-home/] add-on for Firefox and
Chrome.
93
Troubleshooting
94
Chapter 10. Project Management
This section covers the project management features of MantisBT. This includes features like change log,
roadmap, time tracking, reporting and others.
Change Log
MantisBT doesn't just track the status of issues, it also relates issues to versions. Each project can have
several versions, which are marked with attributes like released and obsolete. Users typically report issues
against released issues and developers typically fix issues in not released versions. With every new release
comes question like: what's new? what has been fixed? Customers wonder if the new release is of interest
to them and whether they should take an upgrade. Well, the change log is specifically tailored to answer
these kind of questions.
In order for an issue to show up in the change log, it has to satisfy certain criteria. The criteria is that the
issue has to be resolved with a 'fixed' resolution and has to have the 'fixed_in_version' field set. Users
sometimes wonder why resolved or closed issues don't show up in the change log, and the answer is that the
'fixed_in_version' field is not set. Without the 'fixed_in_version', it is not possible for MantisBT to include
the issues in the appropriate section of the changelog. Note that it is possible to set the 'fixed_in_version'
for multiple issues using the 'Update Fixed in Version' group action on the View Issues page (just below
the issues list). This option is only available when the selected project is not 'All Projects'. Once a version
is marked as obsolete, it is now longer included in the change log.
MantisBT also provides the ability to customize the criteria used for an issue to be included in the change
log. For example, for installations that use a custom set of resolutions, it is possible to select multiple
resolutions as valid candidates for the change log. This can be done using custom functions (see custom
functions documentation for more details). The custom function below overrides the MantisBT default
behavior to include issues with both FIXED and IMPLEMENTED (a custom resolution) resolutions in
the change log.
<?php
# --------------------
# Checks the provided bug and determines whether it should be included in the chang
# or not.
# returns true: to include, false: to exclude.
function custom_function_override_changelog_include_issue( $p_issue_id ) {
$t_issue = bug_get( $p_issue_id );
MantisBT also provides the ability to customize the details to include from the issue and in what format.
This can be done using the following custom function.
<?php
# --------------------
# Prints one entry in the changelog.
function custom_function_override_changelog_print_issue( $p_issue_id, $p_issue_leve
$t_bug = bug_get( $p_issue_id );
if( $t_bug->category_id ) {
95
Project Management
if( $t_bug->handler_id != 0 ) {
echo ' (', prepare_user_name( $t_bug->handler_id ), ')';
}
By combining both customization features, it is also possible to do more advanced customization scenarios.
For example, users can add a 'ChangelogSummary' custom field and include all issues that have such field
in the change log. Through customizing what information being included for a qualifying issue, users can
also include the 'ChangelogSummary' text rather than the native summary field.
In some cases, users know that they fixed an issue and that the fix will be included in the next release,
however, they don't know yet the name of the release. In such case, the recommended approach is to always
have a version defined that corresponds to the next release, which is typically called 'Next Release'. Once
the release is cut and has a concrete name, then 'Next Release' can be renamed to the appropriate name
and a new 'Next Release' can then be created. For teams that manage releases from multiple branches for
the same project, then more than one next release can be possible. For example, 'Next Dev Release' and
'Next Stable Release'.
Another common requirement is to be able to link to the change log of a specific project from the project's
main website. There is a variety of ways to do that:
http://www.example.com/mantisbt/changelog_page.php?project=myproject&version=ver1
http://www.example.com/mantisbt/changelog_page.php?project=myproject
• To link to the changelog of project with id 1. The project id can be figured out by going to the
management page for the project and getting the value of project_id field form the URL.
http://www.example.com/mantisbt/changelog_page.php?project_id=1
• To link to the changelog of version with id 1. The version id is unique across all projects and hence in
this case it is not necessary to include the project id/name. The version id can be figured out by going to
the manage project page and editing the required version. The version_id will be included in the URL.
http://www.example.com/mantisbt/changelog_page.php?version_id=1
Another approach is to go to the project page and from there users can get to multiple other locations
relating to the project include the change log. This can be done by a URL like the following:
96
Project Management
http://www.example.com/mantisbt/project_page.php?project_id=1
It is possible to customize the access level required for viewing the change log page. This can be done
using the $g_view_changelog_threshold configuration option.
Roadmap
One of the very important scenarios in project management is where the project managers (or team leads)
triage the issues to set their priorities, target version, and possibly assign the issues to specific developers or
take other actions on the issue. By setting the target version of an issue to a version that is not yet released,
the issue shows up on the project roadmap, providing user with information about when to expect the
issues to be resolved. The roadmap page has a section for each release showing information like planned
issues, issues done and percentage of issues completed. Issues that are fixed in a specific version, but didn't
have the target_version field set, will not show up in the roadmap. This allows the ability to control the
issues that are significant enough to show in the roadmap, while all resolved fields can be found in the
change log. Note that it is possible to set the 'target_version' for multiple issues using the 'Update Target
Version' group action that is available through the View Issues page (below the issues list). This option
is only available when the current project is not 'All Projects'. Although it is not a typical scenario, it is
worth mentioning that once a version is marked as obsolete, it is not included in the roadmap.
Note that the roadmap only includes future versions, once a version is marked as released, it no longer is
included in the roadmap. For information about such releases, the change log feature should be used. For an
issue to be shown on the roadmap, it has to have the target version set. It does not matter whether the feature
is resolved or not. Resolved features will be decorated with a strikethrough and will be counted as done.
MantisBT provides the ability to customize the criteria for issues to show up on the roadmap. The default
criteria is that the issue has to belong to a version that is not yet released and that the issues is not a
duplicate. However, such criteria can be customized by using custom functions as below.
<?php
# --------------------
# Checks the provided bug and determines whether it should be included in the roadm
# returns true: to include, false: to exclude.
function custom_function_override_roadmap_include_issue( $p_issue_id ) {
return ( true );
}
It is also possible to customize the details included about an issues and the presentation of such details.
This can be done through the following custom function:
<?php
# --------------------
# Prints one entry in the roadmap.
function custom_function_override_roadmap_print_issue( $p_issue_id, $p_issue_level
$t_bug = bug_get( $p_issue_id );
97
Project Management
if( $t_bug->category_id ) {
$t_category_name = category_get_name( $t_bug->category_id );
} else {
$t_category_name = '';
}
if( $t_bug->handler_id != 0 ) {
echo ' (', prepare_user_name( $t_bug->handler_id ), ')';
}
Some teams manage different branches for each of their projects (e.g. development and maintenance
branches). As part of triaging the issue, they may decide that an issue should be targeted to multiple
branches. Hence, frequently the request comes up to be able to target a single issue to multiple releases.
The current MantisBT approach is that an issues represents an implementation or a fix for an issue on a
specific branch. Since sometimes applying and verifying a fix to the two branches does not happen at the
same time and in some cases the approach for fixing an issue is different based on the branch. Hence, the
way to manage such scenario is to have the main issue for the initial fix and have related issues which
capture the work relating to applying the fix to other branches. The issues for porting the fix can contain any
discussions relating to progress, reflect the appropriate status and can go through the standard workflow
process independent of the original issues.
Another common requirement is to be able to link to the roadmap of a specific project from the project's
main website. There is a variety of ways to do that:
http://www.example.com/mantisbt/roadmap_page.php?project=myproject&version=ver1
http://www.example.com/mantisbt/roadmap_page.php?project=myproject
• To link to the roadmap of project with id 1. The project id can be figured out by going to the management
page for the project and getting the value of project_id field form the URL.
http://www.example.com/mantisbt/roadmap_page.php?project_id=1
• To link to the roadmap of version with id 1. The version id is unique across all projects and hence in
this case it is not necessary to include the project id/name. The version id can be figured out by going to
the manage project page and editing the required version. The version_id will be included in the URL.
http://www.example.com/mantisbt/roadmap_page.php?version_id=1
98
Project Management
Another approach is to go to the project page and from there users can get to multiple other locations
relating to the project include the roadmap. This can be done by a URL like the following:
http://www.example.com/mantisbt/project_page.php?project_id=1
The access level required to view and modify the roadmap can be configured through
$g_roadmap_view_threshold and $g_roadmap_update_threshold respectively. Modifying the roadmap is
the ability to set the target versions for issues. Users who have such access can set the target versions while
reporting new issues or by updating existing issues.
Time Tracking
To activate the Time Tracking feature you have to set the configuration option "time_tracking_enabled"
to ON. To activating the Time Tracking you can :
• Dynamic and "project by project" solution : Use the administration page "Manage Configuration" and
set the variable 'time_tracking_enabled' to '1' for which user and which project of you choice.
All Time Tracking configuration options are described in the configuration section off this guide.
Graphs
Assigned to me: TODO
Category: TODO
Severity: TODO
Summary Page
By Status: TODO
By Severity: TODO
By Category: TODO
99
Project Management
By Date: TODO
By Resolution: TODO
By Priority: TODO
100
Chapter 11. Contributing to MantisBT
Talent and Time
One of the greatest ways to contribute to MantisBT is to contribute your talent and time. For MantisBT
to keep growing we need such support in all areas related to the software development cycle. This
includes: business analysts, developers, web designers, graphics designers, technical writers, globalization
developers, translators, testers, super users, packagers and active users. If you would like to contribute in
any of these capacities please contact us through the "Contact Us" page.
A great example in this area are integrations with content management systems (e.g. *Nuke, Xoops),
project management (PHPProjekt), and TestLink for Test Management. MantisBT can easily be integrated
with projects in any programming language whether it is hosted on the same webserver or anywhere else in
the world. This can be achieved through its SOAP API and MantisConnect client libraries. MantisConnect
comes with client libraries and samples in languages like PHP, .NET, Java and Cocoa.
101
Appendix A. Revision History
Revision History
Revision 2.25-0 Mon Mar 8 2021 DamienRegad<[email protected]>
Release 2.25.0
Revision 2.24-1 Sun May 3 2020 VictorBoctor<[email protected]>
Release 2.24.1
Revision 2.24-0 Sun Mar 15 2020 VictorBoctor<[email protected]>
Release 2.24.0
Revision 2.23-0 Sun Dec 9 2019 VictorBoctor<[email protected]>
Release 2.23.0
Revision 2.22-1 Thu Sep 26 2019 VictorBoctor<[email protected]>
Release 2.22.1
Revision 2.22-0 Sun Aug 25 2019 VictorBoctor<[email protected]>
Release 2.22.0
Revision 2.21-2 Mon Aug 19 2019 VictorBoctor<[email protected]>
Release 2.21.2
Revision 2.21-1 Thu Jun 13 2019 VictorBoctor<[email protected]>
Release 2.21.1
Revision 2.21-0 Sat Apr 20 2019 VictorBoctor<[email protected]>
Release 2.21.0
Revision 2.20-0 Sat Mar 16 2019 VictorBoctor<[email protected]>
Release 2.20.0
Revision 2.19-0 Wed Jan 2 2019 VictorBoctor<[email protected]>
Release 2.19.0
Revision 2.18-0 Tue Oct 16 2018 VictorBoctor<[email protected]>
Release 2.18.0
Revision 2.17-1 Mon Sep 24 2018 VictorBoctor<[email protected]>
Release 2.17.1
Revision 2.17-0 Mon Sep 3 2018 VictorBoctor<[email protected]>
Release 2.17.0
Revision 2.16-0 Sun Jul 29 2018 VictorBoctor<[email protected]>
Release 2.16.0
Revision 2.15-0 Tue Jun 5 2018 VictorBoctor<[email protected]>
Release 2.15.0
Revision 2.14-0 Sun Apr 29 2018 VictorBoctor<[email protected]>
Release 2.14.0
Revision 2.13-1 Wed Apr 4 2018 VictorBoctor<[email protected]>
Release 2.13.1
Revision 2.13-0 Sun Apr 1 2018 VictorBoctor<[email protected]>
Release 2.13.0
Revision 2.12-0 Sat Mar 3 2018 VictorBoctor<[email protected]>
Release 2.12.0
Revision 2.11-0 Tue Feb 6 2018 VictorBoctor<[email protected]>
Release 2.11.0
Revision 2.10-0 Sat Dec 30 2017 VictorBoctor<[email protected]>
Release 2.10.0
Revision 2.9-0 Sun Dec 3 2017 VictorBoctor<[email protected]>
Release 2.9.0
Revision 2.8-0 Sat Oct 28 2017 VictorBoctor<[email protected]>
Release 2.8.0
Revision 2.7-0 Sun Oct 8 2017 VictorBoctor<[email protected]>
102
Revision History
Release 2.7.0
Revision 2.6-0 Sun Sep 3 2017 VictorBoctor<[email protected]>
Release 2.6.0
Revision 2.5-1 Sat Jun 17 2017 VictorBoctor<[email protected]>
Release 2.5.1
Revision 2.5-0 Sun Jun 4 2017 VictorBoctor<[email protected]>
Release 2.5.0
Revision 2.4-1 Sat May 20 2017 VictorBoctor<[email protected]>
Release 2.4.1
Revision 2.4-0 Sun Apr 30 2017 VictorBoctor<[email protected]>
Release 2.4.0
Revision 2.3-3 Sun Apr 30 2017 VictorBoctor<[email protected]>
Release 2.3.2
Revision 2.3-2 Sun Apr 17 2017 VictorBoctor<[email protected]>
Release 2.3.1
Revision 2.3-1 Fri Mar 31 2017 VictorBoctor<[email protected]>
Release 2.3.0
Revision 2.2-3 Wed Mar 22 2017 DamienRegad<[email protected]>
Release 2.2.2
Revision 2.2-2 Sun Mar 12 2017 VictorBoctor<[email protected]>
Release 2.2.1
Revision 2.2-1 Sun Feb 26 2017 VictorBoctor<[email protected]>
Release 2.2.0
Revision 2.1-2 Sun Feb 26 2017 VictorBoctor<[email protected]>
Release 2.1.1
Revision 2.1-1 Tue Jan 31 2017 VictorBoctor<[email protected]>
Release 2.1.0
Revision 2.0-2 Fri Dec 30 2016 VictorBoctor<[email protected]>
Release 2.0.0
Revision 2.0-1 Sat Nov 26 2016 DamienRegad<[email protected]>
Release 2.0.0-rc.2
103