/engine/start.php
PHP | 219 lines | 115 code | 49 blank | 55 comment | 40 complexity | 65145a485a8504125a7328df03b5e3fd MD5 | raw file
- <?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;
- }
- ?>