-
-
Save leevigraham/448166 to your computer and use it in GitHub Desktop.
<?php | |
/** | |
* Custom configuration bootstrap file for ExpressionEngine | |
* | |
* Place config.php in your site root | |
* Add require(realpath(dirname(__FILE__) . '/../../config_bootstrap.php')); to the bottom of system/expressionengine/config/config.php | |
* Add require(realpath(dirname(__FILE__) . '/../../config_bootstrap.php')); to the bottom of system/expressionengine/config/database.php | |
* If you have moved your site root you'll need to update the require_once path | |
* | |
* Also includes custom DB configuration file based on your environment | |
* | |
* Posiible DB configuration options | |
* | |
* $env_db_config['hostname'] = ""; | |
* $env_db_config['username'] = ""; | |
* $env_db_config['password'] = ""; | |
* $env_db_config['database'] = ""; | |
* | |
* @author Leevi Graham <http://leevigraham.com> | |
* @link http://expressionengine.com/index.php?affiliate=leevigraham&page=wiki/EE_2_Config_Overrides/ | |
* @link http://eeinsider.com/blog/eeci-2010-how-erskine-rolls-with-ee/ - Hat tip to: Erskine from EECI2010 Preso | |
* @version 1.10 | |
* | |
* == Changelog == | |
* | |
* Version 1.1 | |
* - Changed 'gv_' to 'global:' | |
* - Added {global:cm_subscriber_list_slug} for campaignmonitor.com integration | |
* - Added {global:google_analytics_key} for Google Analytics integration | |
* - Make $_POST array available as global vars with 'post:' prefix | |
* - Make $_GET array available as global vars with 'get:' prefix | |
* - Added more inline commenting | |
* - Swapped order of system config and global vars | |
* | |
* Version 1.2 | |
* - Removed $_GET and $_POST parsing. You should use Mo Variables instead. https://github.com/rsanchez/mo_variables | |
* | |
* Version 1.3 | |
* - Added encryption key | |
* | |
* Version 1.4 | |
* - Updated NSM .htaccess path. v1.1.0 of the addon requires the config setting to be an array | |
* | |
* Version 1.5 | |
* - Added global:404_entry_id | |
* | |
* Version 1.6 | |
* - Added SSL support for site url | |
* | |
* Version 1.7 | |
* - Added placeholder config for upload directories | |
* | |
* Version 1.8 | |
* - Added $_GET['debug'] param to help with support | |
* | |
* Version 1.9 | |
* - Added $config['third_party'] param to ease updating | |
* - Added $config['base_url'] | |
* - Moved webmaster_email config into dev environment | |
* | |
* Version 1.10 | |
* - Added changed $config['third_party'] to $config['third_party_path'] | |
* - Added $config['path_third_themes'] | |
* - Added $config['url_third_themes'] | |
*/ | |
/** | |
* config_bootstrap.php is included multiple times during the request | |
* PHP Only allows constants to be defined once so we check first | |
*/ | |
if(!defined('NSM_ENV')) { | |
// Set your system folder | |
define('NSM_SYSTEM_FOLDER', 'ee-admin'); | |
// Define the server name, basepath and site_url | |
// These can all be defined using the server request and filepath | |
define('NSM_SERVER_NAME', $_SERVER['SERVER_NAME']); | |
define('NSM_BASEPATH', dirname(__FILE__)); | |
define('NSM_SITE_URL', "//".NSM_SERVER_NAME); | |
/** | |
* Based on the requested server we can determine the environment | |
* The following conditionals check the server name for specific strings | |
* We use NSM_ENV to define variables latter on in the bootstrap process | |
* | |
* Examples: | |
* http://local.my-site.com defines NSM_ENV as local | |
* http://dev.my-site.com defines NSM_ENV as development | |
* | |
* strstr() — Find the first occurrence of a string | |
* @see http://php.net/manual/en/function.strstr.php | |
*/ | |
if ( strstr( NSM_SERVER_NAME, 'local.' ) ) define('NSM_ENV', 'local'); | |
elseif( strstr( NSM_SERVER_NAME, 'dev.' ) ) define('NSM_ENV', 'development'); | |
elseif( strstr( NSM_SERVER_NAME, 'stage.' ) ) define('NSM_ENV', 'staging'); | |
elseif( strstr( NSM_SERVER_NAME, 'mobi.' ) ) define('NSM_ENV', 'mobile'); | |
// Fallback to production settings | |
else define('NSM_ENV', 'production'); | |
// Not sure what environment the request is? | |
// Add ?debug_config_bootstrap to the end of the URL | |
if(isset($_GET['debug_config_bootstrap'])) { | |
die('The current environment is: '.NSM_ENV); | |
} | |
} | |
/* | |
* Create placeholder arrays for environment settings | |
* Environment settings override the global settings (also defined in config_bootstrap.php) and | |
* the standard config.php settings | |
*/ | |
$env_config = array(); | |
$env_db_config = array(); | |
$env_global_vars = array(); | |
// Comparing NSM_ENV which environment specific configuration will we load? | |
// Local configuration: | |
if ('local' === NSM_ENV) { | |
// Environment DB configuration | |
$env_db_config = array( | |
'hostname' => '', | |
'username' => '', | |
'password' => '', | |
'database' => '', | |
); | |
// Environment config variables | |
// Overrides anything in $env_config | |
$env_config = array(); | |
// Environment global vars | |
// These will be available in youre templates | |
// 'global:' is not required, it's just a naming convention we use @Newism | |
// Example: 'global:cm_subscriber_list_slug' will be available in templates as {global:cm_subscriber_list_slug} | |
// Overrides anything in $default_global_vars | |
$env_global_vars = array( | |
'global:cm_subscriber_list_slug' => '' | |
); | |
} | |
elseif('development' === NSM_ENV) { | |
$env_db_config = array( | |
'hostname' => '', | |
'username' => '', | |
'password' => '', | |
'database' => '', | |
); | |
$env_config = array(); | |
$env_global_vars = array(); | |
} | |
elseif('staging' === NSM_ENV) { | |
$env_db_config = array( | |
'hostname' => '', | |
'username' => '', | |
'password' => '', | |
'database' => '', | |
); | |
$env_config = array(); | |
$env_global_vars = array(); | |
} | |
elseif('mobile' === NSM_ENV) { | |
$env_db_config = array( | |
'hostname' => '', | |
'username' => '', | |
'password' => '', | |
'database' => '', | |
); | |
$env_config = array( | |
// Custom mobile templates? | |
'tmpl_file_basepath' => NSM_BASEPATH . '/templates_mobile/' | |
); | |
$env_global_vars = array(); | |
} | |
elseif('production' === NSM_ENV) { | |
$env_db_config = array( | |
'hostname' => '', | |
'username' => '', | |
'password' => '', | |
'database' => '', | |
); | |
$env_config = array(); | |
$env_global_vars = array(); | |
} | |
// Config bootsrap... GO! | |
if(isset($config)) { | |
/** | |
* Custom global variables | |
* | |
* This is a bit sucky as they are pulled straight from the $assign_to_config array. | |
* See EE_Config.php around line 90 or search for: 'global $assign_to_config;' | |
* Output the global vars in your template with: | |
* <?php $EE = get_instance(); print('<pre><code>'.print_r($EE->config->_global_vars, TRUE) . '</code></pre>'); ?> | |
*/ | |
$default_global_vars = array( | |
// General - Set the production environment so we can test / show / hide components | |
'global:env' => NSM_ENV, | |
// Tag parameters - Short hand tag params | |
'global:param_disable_default' => 'disable="categories|pagination|member_data"', | |
'global:param_disable_all' => 'disable="categories|custom_fields|member_data|pagination"', | |
'global:param_cache_param' => 'cache="yes" refresh="10"', | |
'-global:param_cache_param' => '-cache="yes" refresh="10"', // disable by adding a '-' to the front of the global | |
// Date and time - Short hand date and time | |
'global:date_time' => '%g:%i %a', | |
'global:date_short' => '%F %d, %Y', | |
'global:date_full' => '%F %d %Y, %g:%i %a', | |
/** | |
* Theme - URL to theme assets | |
* Example: <script src="{global:theme_url}/js/libs/modernizr-1.6.min.js"></script> | |
*/ | |
'global:theme_url' => NSM_SITE_URL . '/themes/site_themes/default', | |
/** | |
* CampaignMonitor - Slug for CM signup forms | |
* Example: <form action="http://newism.createsend.com/t/y/s/{global:cm_subscriber_list_slug}/" method="post">...</form> | |
*/ | |
'global:cm_subscriber_list_slug' => false, | |
/** | |
* Google Analytics Key | |
* Example: | |
* <script type="text/javascript"> | |
* var _gaq = _gaq || []; | |
* _gaq.push(['_setAccount', 'UA-{global:google_analytics_key}']); | |
* _gaq.push(['_trackPageview']); | |
* </script> | |
*/ | |
'global:google_analytics_key' => false, | |
// Store the entry_id for the 404 page | |
'global:404_entry_id' => '2', | |
); | |
// Make this global so we can add some of the config variables here | |
global $assign_to_config; | |
if(!isset($assign_to_config['global_vars'])) { | |
$assign_to_config['global_vars'] = array(); | |
} | |
$assign_to_config['global_vars'] = array_merge($assign_to_config['global_vars'], $default_global_vars, $env_global_vars); | |
/** | |
* Config. This shouldn't have to be changed if you're using the Newism EE2 template. | |
* | |
* All the values below override the default config.php configuration. | |
* Setting a value below will also restrict users from changing it in the CP | |
* If a user does save a configuration value in the CP: | |
* - it will be written to config.php | |
* - the user will see the value below in the CP | |
*/ | |
$default_config = array( | |
// General preferences | |
'is_system_on' => 'y', | |
'license_number' => '', | |
'site_index' => '', | |
'admin_session_type' => 'cs', | |
'new_version_check' => 'y', | |
'doc_url' => 'http://expressionengine.com/user_guide/', | |
'site_url' => NSM_SITE_URL, | |
'base_url' => NSM_SITE_URL, | |
'cp_url' => NSM_SITE_URL.'/'.NSM_SYSTEM_FOLDER.'/index.php', | |
// Set this so we can use query strings | |
// 'uri_protocol' => 'PATH_INFO', | |
// http://ellislab.com/expressionengine/user-guide/general/hidden_configuration_variables.html#third-party-path | |
'third_party_path' => NSM_BASEPATH . '/third_party/', | |
// http://ellislab.com/expressionengine/user-guide/general/hidden_configuration_variables.html#path-third-themes | |
'path_third_themes' => NSM_BASEPATH . '/content/themes/third_party/', | |
// http://ellislab.com/expressionengine/user-guide/general/hidden_configuration_variables.html#url-third-themes | |
'url_third_themes' => NSM_SITE_URL . '/themes/third_party/', | |
// Datbase preferences | |
'db_debug' => 'n', | |
'pconnect' => 'n', | |
'enable_db_caching' => 'n', | |
// Site preferences | |
// Some of these preferences might actually need to be set in the index.php files. | |
// Not sure which ones yet, I'll figure that out when I have my first MSM site. | |
'is_site_on' => 'y', | |
'site_404' => 'site/four04', | |
// Localization preferences | |
'server_timezone' => 'UP10', | |
'server_offset' => FALSE, | |
'time_format' => 'eu', | |
'daylight_savings' => 'n', | |
'honor_entry_dst' => 'y', | |
// Channel preferences | |
'use_category_name' => 'y', | |
'word_separator' => 'dash', | |
'reserved_category_word' => 'category', | |
// Template preferences | |
'strict_urls' => 'y', | |
'save_tmpl_files' => 'y', | |
'save_tmpl_revisions' => 'y', | |
'tmpl_file_basepath' => NSM_BASEPATH . '/templates/', | |
// Theme preferences | |
'theme_folder_path' => NSM_BASEPATH . '/content/themes/', | |
'theme_folder_url' => NSM_SITE_URL . '/themes/', | |
// Tracking preferences | |
'enable_online_user_tracking' => 'n', | |
'dynamic_tracking_disabling' => '500', | |
'enable_hit_tracking' => 'n', | |
'enable_entry_view_tracking' => 'n', | |
'log_referrers' => 'n', | |
// Messaging preferences | |
'prv_msg_upload_path' => NSM_BASEPATH . '/content/uploads/member/pm_attachments', | |
'enable_emoticons' => 'n', | |
// Member preferences | |
'allow_registration' => 'n', | |
// Create a random string for the member profile trigger | |
'profile_trigger' => '--sdjhkj2lffgrerfvmdkndkfisolmfmsd' . time(), | |
// Member avatar confiuration | |
'enable_avatars' => 'n', | |
'avatar_path' => NSM_BASEPATH . '/content/uploads/member/avatars/', | |
'avatar_url' => NSM_SITE_URL . '/uploads/member/avatars/', | |
'avatar_max_height' => 100, | |
'avatar_max_width' => 100, | |
'avatar_max_kb' => 100, | |
// Member photo configuration | |
'enable_photos' => 'n', | |
'photo_path' => NSM_BASEPATH . '/content/uploads/member/photos/', | |
'photo_url' => NSM_SITE_URL . '/uploads/member/photos/', | |
'photo_max_height' => 200, | |
'photo_max_width' => 200, | |
'photo_max_kb' => 200, | |
// Member signature confiuration | |
'sig_allow_img_upload' => 'n', | |
'sig_img_path' => NSM_BASEPATH . '/content/uploads/member/signature_attachments/', | |
'sig_img_url' => NSM_SITE_URL . '/uploads/member/signature_attachments/', | |
'sig_img_max_height' => 80, | |
'sig_img_max_width' => 480, | |
'sig_img_max_kb' => 30, | |
'sig_maxlength' => 500, | |
// Captcha settings | |
'captcha_font' => 'y', | |
'captcha_rand' => 'y', | |
'captcha_require_members' => 'n', | |
'captcha_path' => NSM_BASEPATH . '/content/'.NSM_SYSTEM_FOLDER.'/images/captchas/', | |
'captcha_url' => NSM_SITE_URL.'/'.NSM_SYSTEM_FOLDER.'/images/captchas/', | |
// Encryption / Session key | |
'encryption_key' => '', | |
// File Upload config. | |
// @see: http://expressionengine.com/user_guide/general/hidden_configuration_variables.html#upload-preferences | |
//'upload_preferences' => array( | |
// 1 => array( // ID of upload destination | |
// 'name' => 'Staging Image Uploads', // Display name in control panel | |
// 'server_path' => '/home/user/example.com/staging/images/uploads/', // Server path to upload directory | |
// 'url' => 'http://staging.example.com/images/uploads/' // URL of upload directory | |
// ) | |
// ), | |
// NSM htaccess Generator Configuration | |
// @see: http://ee-garage.com/nsm-htaccess-generator | |
// 'nsm_htaccess_generator_path' => array(NSM_BASEPATH . "/content/.htaccess"), | |
// NSM Gravatar Configuration | |
// @see: https://github.com/newism/nsm.gravatar.ee_addon | |
// 'nsm_htaccess_generator_path' => array( | |
// 'size' => '200', | |
// 'default' => NSM_SITE_URL . '/uploads/member/avatars/default.png', | |
// 'force_default' => 'n', | |
// 'rating' => 'pg', | |
// 'secure' => 'n' | |
// ) | |
); | |
// Build the new config object | |
$config = array_merge($config, $default_config, $env_config); | |
} | |
// DB bootsrap... GO! | |
if(isset($db['expressionengine'])) | |
{ | |
$default_db_config = array("cachedir" => APPPATH . "cache/db_cache/"); | |
$db['expressionengine'] = array_merge($db['expressionengine'], $default_db_config, $env_db_config); | |
} |
I think an important config is missing (excellent bootstrap btw).
http://expressionengine.com/wiki/EE_2_Config_Overrides
[base_url] => http://local.ee2.template/
site_url($uri = '') from ->helper('url') in Config.php as part of CI uses base_url to define paths.
This caught me out when developing a module using site_url() for the 'action' part of a form_declaration. I'm not sure why site_url doesn't use 'site_url' from the config array, maybe it's a hangover from CI and EE uses 'site_url'.
Easy fix, I've included after
'site_url' => NSM_SITE_URL,
'base_url' => NSM_SITE_URL
- Version 1.9
-
- Added $config['third_party'] param to ease updating
-
- Added $config['base_url']
-
- Moved webmaster_email config into dev environment
missing a comma after:
'base_url' => NSM_SITE_URL
@alexroper wish I would've see your comment an hour ago. I was tearing my hair out!
@alexroper Just found out about the comma
@leevigraham EE v2.5.3 adds a couple other hidden config variables for third-party themes:
'path_third_themes' => NSM_BASEPATH . '/content/themes/third_party/',
'url_third_themes' => NSM_SITE_URL . '/themes/third_party/',
@leevigraham Also, the 'third_party' variable should be changed to 'third_party_path':
'third_party_path' => NSM_BASEPATH . '/third_party/',
@alexroper took me a while but I've updated based on your comments
@leevigraham you've got syntax errors now on Line 154 and 177 (double braces)
line 369 should be:
$env_config['upload_preferences'] = array(
@leevigraham Line 7,8 should be:
- require_once instead of require (see line 9)
@ginkelb I'll update the NSM_SITE_URL now.