CodeIgniter provides a CI_Controller
that is meant to be used as the basis for all of your own controllers. It handles the behind-the-scenes work of assigning class vars and the Loader so that you can access them. Bonfire extends this concept and provides 4 additional Controllers that can be used as base classes throughout your project. This helps you to keep from repeating code any more than necessary by providing a central place for any site-wide code to sit. For example, it makes a user object available that can be accessed from any controller, library, or view to know details about the current user. You can use it to set a custom theme for all of your public pages. And much more.
Each controller is stored in its own file in the application/libraries
folder and the file is named the same as the class name. This allows the provided autoloader to easily find your base classes.
The MY_Controller
file is currently not used by Bonfire and is left alone so that you can use it for your own needs.
Each controller type is meant to serve a specific purpose, but they are all easily adaptable to fit your needs. This files are meant to be customized for your application! Don't be afraid to edit them. That said, however, please be sure to back the files up during any upgrades of Bonfire.
All of the custom controllers extend from the Base_Controller
. This class extends the MX_Controller which gives you all of the power of WireDesign’s HMVC available to all of your classes. That allows for a different way of working, but also a very powerful one, and one that is not necessary to use.
This controller is the place that you want to setup anything that should happen for every page of your site, like:
Some of the things that would normally be auto-loaded are handled here so that any AJAX controllers you may write don't need to process any of these other settings.
By default, Bonfire's Base_Controller provides the following features for any of your classes that extend it:
$previous_page
and $requested_page
class vars that help you know where you came from. These are auto-populated for you.$current_user
class var that, if logged in, will contain all of the information from the users table, as well as a link to the user's avatar. This same information is automatically made available to the view files that are rendered with the Template class.activity model
loaded and ready.application language
file.$requires_authentication
to TRUE, will ensure that the user is logged in, set the $current_user
variable, and ensure that the user's chosen language is set.The Front_Controller
is intended to be used as the base for any public-facing controllers. As such, anything that needs to be done for the front-end can be done here.
Currently, it simply ensures that the Assets and Template libraries are available. You could also set the active and default themes here, if you create a parent theme ‘framework’ to use with all of your sites that you extend with child themes.
This controller forms the base for the Admin Controller. It was broken into two parts in case you needed to create a front-end area that was only accessible to your users, but that was not part of the Admin area and didn’t share the same themes, etc. All changes you make here will affect your Admin Controller’s, though, so use with care. If you need to, reset the values in the Admin Controller.
This controller currently...
The final controller sets things up even more for use within the Admin area of your site. That is, the area that Bonfire has setup for you as a base of operations. It currently...
Creating controllers in Bonfire is nearly identical to creating controllers in straight CodeIgniter. The only difference is the naming of some of the classes when you're dealing with the Administration side of Bonfire and Contexts. It does provide some basic tools for you to use, though.
The following class variables are available to you from any controller that extends from Base_Controller
or one of it's child classes.
If a user is logged in, there basic information will be stored in the $current_user
class variable. This is also made available within views as $current_user
. If the user is not logged in, the value will be NULL
.
Will store the uri of the previous page, if that page was a page within your application. This is set during the post_controller
hook and will filter out any pages in the $ignore_pages
class variable of the App_hooks
file.
Hooks must be enabled for this variable to be populated.
The page that the web server thinks you were requesting. Set during the pre_controller
hook, it will attempt to determine the page that the user was requesting, while filtering out the $ignore_pages
uris so that we don't get things like images, etc.
This value is also saved to the $_SESSION if CodeIgniter's Session class has not been loaded.
Hooks must be enabled for this variable to be populated.
If set to TRUE, the Base_Controller will load up the authentication class, ensure that the user is logged in via $this->auth->restrict()
and handle setting up the current user for access in the controller.
If you are extending from Authenticated_Controller of Admin_Controller, this will have already been called.
This array provides a simple means of loading various libraries, helpers and models automatically within your application.
protected $autoload = array(
'libraries' => array('settings/settings_lib'),
'helpers' => array(),
'models' => array()
);
You will not, however, want to extend this directly since you will override parent class autoload needs. Instead, set the value in your class' constructor prior to calling the parent's constructor.
public function __construct()
{
$this->autoload['helpers'][] = 'my_new_helper';
parent::__construct();
}
1 ms | Loading Time: Base Classes |
8 ms | Controller Execution Time ( Docs / Index ) |
11 ms | Total Execution Time |
0.0003 | SELECT GET_LOCK('b4fc3a77adfa0a406770fb89ab035db6', 300) AS ci_session_lockSpeed: 0.0003 - Possible keys: - Key Used: - Type: - Rows: - Extra: No tables used |
0.0003 | SELECT `data` FROM `bf_ci_sessions` WHERE `id` = '4m3epfp3occa9nkjhs3u83olrbj820uo' and `ip_address` = '3.139.86.74'Speed: 0.0003 - Possible keys: - Key Used: - Type: - Rows: - Extra: Impossible WHERE noticed after reading const tables |
0.0004 | SHOW TABLES FROM `bonfire` |
0.0003 | SELECT * FROM `bf_settings`Speed: 0.0003 - Possible keys: - Key Used: - Type: ALL - Rows: 42 - Extra: |
0.0013 | Total Query Execution Time |
__ci_last_regenerate | 1734909236 |
requested_page | https://kampensonline.com/docs/developer/bonfire_controllers |
previous_page | https://kampensonline.com/docs/developer/bonfire_controllers |
No GET data exists |
No POST data exists |
docs/developer/bonfire_controllers |
docs/index |
HTTP_ACCEPT | */* |
HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
HTTP_CONNECTION | |
SERVER_PORT | 443 |
SERVER_NAME | kampensonline.com |
REMOTE_ADDR | 3.139.86.74 |
SERVER_SOFTWARE | Apache/2.4.62 (Ubuntu) |
HTTP_ACCEPT_LANGUAGE | |
SCRIPT_NAME | /index.php |
REQUEST_METHOD | GET |
HTTP_HOST | |
REMOTE_HOST | |
CONTENT_TYPE | |
SERVER_PROTOCOL | HTTP/1.1 |
QUERY_STRING | |
HTTP_ACCEPT_ENCODING | gzip, br, zstd, deflate |
HTTP_X_FORWARDED_FOR |
domain | kampensonline.com |
base_url | https://kampensonline.com |
index_page | |
uri_protocol | AUTO |
url_suffix | |
language | english |
charset | UTF-8 |
enable_hooks | true |
subclass_prefix | MY_ |
composer_autoload | false |
permitted_uri_chars | a-z 0-9~%.:_- |
allow_get_array | true |
enable_query_strings | false |
controller_trigger | c |
function_trigger | m |
directory_trigger | d |
log_threshold | 4 |
log_path | /var/www/htdocs/bonfire/application/logs/ |
log_file_extension | |
log_file_permissions | 436 |
log_date_format | Y-m-d H:i:s |
error_views_path | |
cache_path | /var/www/htdocs/bonfire/application/cache/ |
cache_query_string | false |
encryption_key | 92b35b02920621aedbed3b8b9a68c0f1 |
sess_cookie_name | bf_session |
sess_expiration | 7200 |
sess_time_to_update | 300 |
sess_match_ip | true |
sess_driver | database |
sess_regenerate_destroy | false |
sess_save_path | ci_sessions |
cookie_prefix | |
cookie_domain | kampensonline.com |
cookie_path | / |
cookie_secure | false |
cookie_httponly | true |
cookie_samesite | Strict |
standardize_newlines | false |
csrf_protection | true |
csrf_token_name | ci_csrf_token |
csrf_cookie_name | ci_csrf_token |
csrf_expire | 7200 |
csrf_regenerate | true |
csrf_exclude_uris | Array ( ) |
compress_output | false |
time_reference | local |
rewrite_short_tags | false |
proxy_ips | |
bonfire.installed | 1 |
site.default_user_timezone | UP12 |
modules_locations | Array ( [/var/www/htdocs/bonfire/application/modules/] => ../../application/modules/ [/var/www/htdocs/bonfire/bonfire/modules/] => ../../bonfire/modules/ ) |
site.backup_folder | archives/ |
contexts | Array ( [0] => content [1] => reports [2] => settings [3] => developer ) |
enable_activity_logging | true |
sparks_path | ../sparks/ |
template.site_path | /var/www/htdocs/bonfire/public/ |
template.theme_paths | Array ( [0] => themes ) |
template.default_layout | index |
template.ajax_layout | ajax |
template.use_mobile_themes | false |
template.default_theme | default/ |
template.admin_theme | admin |
template.message_template | <div class="alert alert-{type} alert-dismissable"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> <div>{message}</div> </div> |
template.breadcrumb_symbol | : |
template.parse_views | false |
assets.directories | Array ( [base] => assets [cache] => cache [css] => css [image] => images [js] => js [module] => module ) |
assets.js_opener | $(document).ready(function() { |
assets.js_closer | }); |
assets.css_combine | false |
assets.js_combine | false |
assets.css_minify | true |
assets.js_minify | true |
assets.encrypt_name | false |
assets.encode | false |
assets.base_folder | assets |
assets.asset_folders | Array ( [css] => css [js] => js [image] => images ) |
ui.current_shortcuts | Array ( [form_save] => Array ( [description] => Save any form in the admin area. [action] => $("input[name=save]").click();return false; ) [create_new] => Array ( [description] => Create a new record in the module. [action] => window.location.href=$("a#create_new").attr("href"); ) [select_all] => Array ( [description] => Select all records in an index page. [action] => $("table input[type=checkbox]").click();return false; ) [delete] => Array ( [description] => Delete the record(s). [action] => $("#delete-me.btn-danger").click(); ) [module_index] => Array ( [description] => Return to the index of the current module. [action] => window.location.href=$("a#list").attr("href"); ) [goto_content] => Array ( [description] => Jump to the Content context. [action] => window.location.href=$("#tb_content").attr("href") ) [goto_reports] => Array ( [description] => Jump to the Reports context. [action] => window.location.href=$("#tb_reports").attr("href") ) [goto_settings] => Array ( [description] => Jump to the Settings context. [action] => window.location.href=$("#tb_settings").attr("href") ) [goto_developer] => Array ( [description] => Jump to the Developer context. [action] => window.location.href=$("#tb_developer").attr("href") ) ) |
emailer.write_to_file | false |
migrate.auto_core | false |
migrate.auto_app | false |
commonmark.valid_drivers | Array ( [0] => Parsedown [1] => Markdown [2] => MarkdownExtra [3] => LeagueCommonMark ) |
commonmark.driver | MarkdownExtended |
docs.theme | docs |
docs.default_group | developer |
docs.show_dev_docs | true |
docs.show_app_docs | true |
docs.toc_file | _toc.ini |
docs.permitted_environments | Array ( [0] => development [1] => testing [2] => production ) |
application.php /var/www/htdocs/bonfire/application/config/application.php |
autoload.php /var/www/htdocs/bonfire/application/config/autoload.php |
config.php /var/www/htdocs/bonfire/application/config/config.php |
constants.php /var/www/htdocs/bonfire/application/config/constants.php |
database.php /var/www/htdocs/bonfire/application/config/database.php |
events.php /var/www/htdocs/bonfire/application/config/events.php |
hooks.php /var/www/htdocs/bonfire/application/config/hooks.php |
mimes.php /var/www/htdocs/bonfire/application/config/mimes.php |
profiler.php /var/www/htdocs/bonfire/application/config/profiler.php |
routes.php /var/www/htdocs/bonfire/application/config/routes.php |
Base_Controller.php /var/www/htdocs/bonfire/application/core/Base_Controller.php |
MY_Model.php /var/www/htdocs/bonfire/application/core/MY_Model.php |
App_hooks.php /var/www/htdocs/bonfire/application/hooks/App_hooks.php |
application_lang.php /var/www/htdocs/bonfire/application/language/english/application_lang.php |
Profiler.php /var/www/htdocs/bonfire/application/libraries/Profiler.php |
Base.php /var/www/htdocs/bonfire/application/third_party/MX/Base.php |
Config.php /var/www/htdocs/bonfire/application/third_party/MX/Config.php |
Controller.php /var/www/htdocs/bonfire/application/third_party/MX/Controller.php |
Lang.php /var/www/htdocs/bonfire/application/third_party/MX/Lang.php |
Loader.php /var/www/htdocs/bonfire/application/third_party/MX/Loader.php |
Benchmark.php /var/www/htdocs/bonfire/bonfire/ci3/core/Benchmark.php |
CodeIgniter.php /var/www/htdocs/bonfire/bonfire/ci3/core/CodeIgniter.php |
Common.php /var/www/htdocs/bonfire/bonfire/ci3/core/Common.php |
Config.php /var/www/htdocs/bonfire/bonfire/ci3/core/Config.php |
Controller.php /var/www/htdocs/bonfire/bonfire/ci3/core/Controller.php |
Hooks.php /var/www/htdocs/bonfire/bonfire/ci3/core/Hooks.php |
Input.php /var/www/htdocs/bonfire/bonfire/ci3/core/Input.php |
Lang.php /var/www/htdocs/bonfire/bonfire/ci3/core/Lang.php |
Loader.php /var/www/htdocs/bonfire/bonfire/ci3/core/Loader.php |
Log.php /var/www/htdocs/bonfire/bonfire/ci3/core/Log.php |
Model.php /var/www/htdocs/bonfire/bonfire/ci3/core/Model.php |
Output.php /var/www/htdocs/bonfire/bonfire/ci3/core/Output.php |
Router.php /var/www/htdocs/bonfire/bonfire/ci3/core/Router.php |
Security.php /var/www/htdocs/bonfire/bonfire/ci3/core/Security.php |
URI.php /var/www/htdocs/bonfire/bonfire/ci3/core/URI.php |
Utf8.php /var/www/htdocs/bonfire/bonfire/ci3/core/Utf8.php |
hash.php /var/www/htdocs/bonfire/bonfire/ci3/core/compat/hash.php |
mbstring.php /var/www/htdocs/bonfire/bonfire/ci3/core/compat/mbstring.php |
password.php /var/www/htdocs/bonfire/bonfire/ci3/core/compat/password.php |
standard.php /var/www/htdocs/bonfire/bonfire/ci3/core/compat/standard.php |
DB.php /var/www/htdocs/bonfire/bonfire/ci3/database/DB.php |
DB_driver.php /var/www/htdocs/bonfire/bonfire/ci3/database/DB_driver.php |
DB_query_builder.php /var/www/htdocs/bonfire/bonfire/ci3/database/DB_query_builder.php |
DB_result.php /var/www/htdocs/bonfire/bonfire/ci3/database/DB_result.php |
mysqli_driver.php /var/www/htdocs/bonfire/bonfire/ci3/database/drivers/mysqli/mysqli_driver.php |
mysqli_result.php /var/www/htdocs/bonfire/bonfire/ci3/database/drivers/mysqli/mysqli_result.php |
directory_helper.php /var/www/htdocs/bonfire/bonfire/ci3/helpers/directory_helper.php |
form_helper.php /var/www/htdocs/bonfire/bonfire/ci3/helpers/form_helper.php |
language_helper.php /var/www/htdocs/bonfire/bonfire/ci3/helpers/language_helper.php |
url_helper.php /var/www/htdocs/bonfire/bonfire/ci3/helpers/url_helper.php |
profiler_lang.php /var/www/htdocs/bonfire/bonfire/ci3/language/english/profiler_lang.php |
Cache.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Cache/Cache.php |
Cache_dummy.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Cache/drivers/Cache_dummy.php |
Driver.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Driver.php |
CI_Session_driver_interface.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Session/CI_Session_driver_interface.php |
PHP8SessionWrapper.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Session/PHP8SessionWrapper.php |
Session.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Session/Session.php |
Session_driver.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Session/Session_driver.php |
Session_database_driver.php /var/www/htdocs/bonfire/bonfire/ci3/libraries/Session/drivers/Session_database_driver.php |
BF_Loader.php /var/www/htdocs/bonfire/bonfire/core/BF_Loader.php |
BF_Router.php /var/www/htdocs/bonfire/bonfire/core/BF_Router.php |
BF_directory_helper.php /var/www/htdocs/bonfire/bonfire/helpers/BF_directory_helper.php |
BF_form_helper.php /var/www/htdocs/bonfire/bonfire/helpers/BF_form_helper.php |
application_helper.php /var/www/htdocs/bonfire/bonfire/helpers/application_helper.php |
config_file_helper.php /var/www/htdocs/bonfire/bonfire/helpers/config_file_helper.php |
markdown_extended_helper.php /var/www/htdocs/bonfire/bonfire/helpers/markdown_extended_helper.php |
markdown_helper.php /var/www/htdocs/bonfire/bonfire/helpers/markdown_helper.php |
Assets.php /var/www/htdocs/bonfire/bonfire/libraries/Assets.php |
BF_Model.php /var/www/htdocs/bonfire/bonfire/libraries/BF_Model.php |
CommonMark.php /var/www/htdocs/bonfire/bonfire/libraries/CommonMark.php |
CommonMarkDriver.php /var/www/htdocs/bonfire/bonfire/libraries/CommonMark/CommonMarkDriver.php |
CommonMark_MarkdownExtended.php /var/www/htdocs/bonfire/bonfire/libraries/CommonMark/drivers/CommonMark_MarkdownExtended.php |
Console.php /var/www/htdocs/bonfire/bonfire/libraries/Console.php |
Events.php /var/www/htdocs/bonfire/bonfire/libraries/Events.php |
Modules.php /var/www/htdocs/bonfire/bonfire/libraries/Modules.php |
Route.php /var/www/htdocs/bonfire/bonfire/libraries/Route.php |
Template.php /var/www/htdocs/bonfire/bonfire/libraries/Template.php |
docs.php /var/www/htdocs/bonfire/bonfire/modules/docs/config/docs.php |
routes.php /var/www/htdocs/bonfire/bonfire/modules/docs/config/routes.php |
Docs.php /var/www/htdocs/bonfire/bonfire/modules/docs/controllers/Docs.php |
docs_lang.php /var/www/htdocs/bonfire/bonfire/modules/docs/language/english/docs_lang.php |
_sidebar.php /var/www/htdocs/bonfire/bonfire/modules/docs/views/_sidebar.php |
index.php /var/www/htdocs/bonfire/bonfire/modules/docs/views/index.php |
Settings_lib.php /var/www/htdocs/bonfire/bonfire/modules/settings/libraries/Settings_lib.php |
Settings_model.php /var/www/htdocs/bonfire/bonfire/modules/settings/models/Settings_model.php |
index.php index.php |
index.php themes/docs/index.php |