<?php /** * Elgg engine bootstrapper * Loads the various elements of the Elgg engine * * @package Elgg * @subpackage Core * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 * @author Curverider Ltd * @copyright Curverider Ltd 2008-2009 * @link http://elgg.org/ */ /* * Basic profiling */ global $START_MICROTIME; $START_MICROTIME = microtime(true); /** * Load important prerequisites */ if (!include_once(dirname(__FILE__) . "/lib/exceptions.php")) { // Exceptions echo "Error in installation: could not load the Exceptions library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/elgglib.php")) { // Main Elgg library echo "Elgg could not load its main library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/access.php")) { // Access library echo "Error in installation: could not load the Access library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/system_log.php")) { // Logging library echo "Error in installation: could not load the System Log library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/export.php")) { // Export library echo "Error in installation: could not load the Export library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/sessions.php")) { echo ("Error in installation: Elgg could not load the Sessions library"); exit; } if (!include_once(dirname(__FILE__) . "/lib/languages.php")) { // Languages library echo "Error in installation: could not load the languages library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/input.php")) { // Input library echo "Error in installation: could not load the input library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/install.php")) { // Installation library echo "Error in installation: could not load the installation library."; exit; } if (!include_once(dirname(__FILE__) . "/lib/cache.php")) { // Installation library echo "Error in installation: could not load the cache library."; exit; } // Use fallback view until sanitised $oldview = get_input('view'); set_input('view', 'failsafe'); /** * Set light mode default */ $lightmode = false; /** * Establish handlers */ // Register the error handler set_error_handler('__elgg_php_error_handler'); set_exception_handler('__elgg_php_exception_handler'); /** * If there are basic issues with the way the installation is formed, don't bother trying * to load any more files */ if ($sanitised = sanitised()) { // Begin portion for sanitised installs only /** * Load the system settings */ if (!include_once(dirname(__FILE__) . "/settings.php")) // Global settings throw new InstallationException("Elgg could not load the settings file."); /** * Load and initialise the database */ if (!include_once(dirname(__FILE__) . "/lib/database.php")) // Database connection throw new InstallationException("Elgg could not load the main Elgg database library."); /** * Load the remaining libraries from /lib/ in alphabetical order, * except for a few exceptions */ if (!include_once(dirname(__FILE__) . "/lib/actions.php")) { throw new InstallationException("Elgg could not load the Actions library"); } // We don't want to load or reload these files $file_exceptions = array( '.','..', '.DS_Store', 'Thumbs.db', '.svn', 'CVS','cvs', 'settings.php','settings.example.php','languages.php','exceptions.php','elgglib.php','access.php','database.php','actions.php','sessions.php' ); // Get the list of files to include, and alphabetically sort them $files = get_library_files(dirname(__FILE__) . "/lib",$file_exceptions); asort($files); // Get config global $CONFIG; // Include them foreach($files as $file) { if (isset($CONFIG->debug) && $CONFIG->debug) error_log("Loading $file..."); if (!include_once($file)) throw new InstallationException("Could not load {$file}"); } } else { // End portion for sanitised installs only throw new InstallationException(elgg_echo('installation:error:configuration')); } // Autodetect some default configuration settings set_default_config(); // Trigger events trigger_elgg_event('boot', 'system'); // Load plugins $installed = is_installed(); $db_installed = is_db_installed(); // Determine light mode $lm = strtolower(get_input('lightmode')); if ($lm == 'true') $lightmode = true; // Load plugins, if we're not in light mode if (($installed) && ($db_installed) && ($sanitised) && (!$lightmode)) { load_plugins(); trigger_elgg_event('plugins_boot', 'system'); } // Forward if we haven't been installed if ((!$installed || !$db_installed) && !substr_count($_SERVER["PHP_SELF"],"install.php") && !substr_count($_SERVER["PHP_SELF"],"css.php") && !substr_count($_SERVER["PHP_SELF"],"action_handler.php")) { header("Location: install.php"); exit; } // Trigger events if (!substr_count($_SERVER["PHP_SELF"],"install.php") && !substr_count($_SERVER["PHP_SELF"],"setup.php") && !$lightmode && !(defined('upgrading') && upgrading == 'upgrading')) { // If default settings haven't been installed, forward to the default settings page trigger_elgg_event('init', 'system'); //if (!datalist_get('default_settings')) { //forward("setup.php"); //} } // System booted, return to normal view set_input('view', $oldview); if (empty($oldview)) { if (empty($CONFIG->view)) $oldview = 'default'; else $oldview = $CONFIG->view; } if (($installed) && ($db_installed)) { $lastupdate = datalist_get('simplecache_lastupdate'); $lastcached = datalist_get('simplecache_'.$oldview); if ($lastupdate == 0 || $lastcached < $lastupdate) { elgg_view_regenerate_simplecache(); $lastcached = time(); datalist_set('simplecache_lastupdate',$lastcached); datalist_set('simplecache_'.$oldview,$lastcached); } $CONFIG->lastcache = $lastcached; } ?>