/** * Load remaining engine libraries and complete bootstraping (see start.php) * * @param string $step Which step to boot strap for. Required because * boot strapping is different until the DB is populated. * * @return void */ protected function finishBootstraping($step) { $dbIndex = array_search('database', $this->getSteps()); $settingsIndex = array_search('settings', $this->getSteps()); $adminIndex = array_search('admin', $this->getSteps()); $completeIndex = array_search('complete', $this->getSteps()); $stepIndex = array_search($step, $this->getSteps()); // To log in the user, we need to use the Elgg core session handling. // Otherwise, use default php session handling $useElggSession = $stepIndex == $adminIndex && $this->isAction || $stepIndex == $completeIndex; if (!$useElggSession) { session_name('Elgg_install'); session_start(); elgg_unregister_event_handler('boot', 'system', 'session_init'); } if ($stepIndex > $dbIndex) { // once the database has been created, load rest of engine global $CONFIG; $lib_dir = $CONFIG->path . 'engine/lib/'; $this->loadSettingsFile(); $lib_files = array('database.php', 'actions.php', 'admin.php', 'annotations.php', 'cron.php', 'entities.php', 'extender.php', 'filestore.php', 'group.php', 'location.php', 'mb_wrapper.php', 'memcache.php', 'metadata.php', 'metastrings.php', 'navigation.php', 'notification.php', 'objects.php', 'opendd.php', 'pagehandler.php', 'pam.php', 'plugins.php', 'private_settings.php', 'relationships.php', 'river.php', 'sites.php', 'statistics.php', 'tags.php', 'user_settings.php', 'users.php', 'upgrade.php', 'web_services.php', 'widgets.php', 'xml.php', 'deprecated-1.7.php', 'deprecated-1.8.php', 'deprecated-1.9.php'); foreach ($lib_files as $file) { $path = $lib_dir . $file; if (!(include_once $path)) { $msg = elgg_echo('InstallationException:MissingLibrary', array($file)); throw new InstallationException($msg); } } setup_db_connections(); register_translations(dirname(dirname(__FILE__)) . "/languages/"); if ($stepIndex > $settingsIndex) { $CONFIG->site_guid = (int) datalist_get('default_site'); $CONFIG->site_id = $CONFIG->site_guid; $CONFIG->site = get_entity($CONFIG->site_guid); $CONFIG->dataroot = datalist_get('dataroot'); _elgg_session_boot(NULL, NULL, NULL); } elgg_trigger_event('init', 'system'); } }
/** * Load remaining engine libraries and complete bootstrapping * * @param string $step Which step to boot strap for. Required because * boot strapping is different until the DB is populated. * * @return void * @throws InstallationException */ protected function finishBootstraping($step) { $dbIndex = array_search('database', $this->getSteps()); $settingsIndex = array_search('settings', $this->getSteps()); $adminIndex = array_search('admin', $this->getSteps()); $completeIndex = array_search('complete', $this->getSteps()); $stepIndex = array_search($step, $this->getSteps()); // To log in the user, we need to use the Elgg core session handling. // Otherwise, use default php session handling $useElggSession = $stepIndex == $adminIndex && $this->isAction || $stepIndex == $completeIndex; if (!$useElggSession) { session_name('Elgg_install'); session_start(); _elgg_services()->events->unregisterHandler('boot', 'system', 'session_init'); } if ($stepIndex > $dbIndex) { // once the database has been created, load rest of engine $lib_dir = \Elgg\Application::elggDir()->chroot('/engine/lib/'); $this->loadSettingsFile(); $lib_files = array('autoloader.php', 'database.php', 'actions.php', 'admin.php', 'annotations.php', 'cron.php', 'entities.php', 'extender.php', 'filestore.php', 'group.php', 'mb_wrapper.php', 'memcache.php', 'metadata.php', 'metastrings.php', 'navigation.php', 'notification.php', 'objects.php', 'pagehandler.php', 'pam.php', 'plugins.php', 'private_settings.php', 'relationships.php', 'river.php', 'sites.php', 'statistics.php', 'tags.php', 'user_settings.php', 'users.php', 'upgrade.php', 'widgets.php'); foreach ($lib_files as $file) { if (!(include_once $lib_dir->getPath($file))) { throw new InstallationException('InstallationException:MissingLibrary', array($file)); } } _elgg_services()->db->setupConnections(); _elgg_services()->translator->registerTranslations(\Elgg\Application::elggDir()->getPath("/languages/")); $this->CONFIG->language = 'en'; if ($stepIndex > $settingsIndex) { $this->CONFIG->site_guid = (int) _elgg_services()->configTable->get('default_site'); $this->CONFIG->site = get_entity($this->CONFIG->site_guid); $this->CONFIG->dataroot = _elgg_services()->configTable->get('dataroot'); _elgg_services()->config->getCookieConfig(); _elgg_session_boot(); } _elgg_services()->events->trigger('init', 'system'); } }
/** * Boots the engine * * 1. sets error handlers * 2. connects to database * 3. verifies the installation succeeded * 4. loads application configuration * 5. loads i18n data * 6. loads cached autoloader state * 7. loads site configuration * * @access private */ function _elgg_engine_boot() { // Register the error handlers set_error_handler('_elgg_php_error_handler'); set_exception_handler('_elgg_php_exception_handler'); _elgg_services()->db->setupConnections(); _elgg_services()->db->assertInstalled(); _elgg_load_application_config(); _elgg_load_autoload_cache(); _elgg_load_site_config(); _elgg_session_boot(); _elgg_services()->systemCache->loadAll(); _elgg_services()->translator->loadTranslations(); }
/** * Boots the engine * * 1. sets error handlers * 2. connects to database * 3. verifies the installation succeeded * 4. loads application configuration * 5. loads i18n data * 6. loads cached autoloader state * 7. loads site configuration * * @access private */ function _elgg_engine_boot() { // Register the error handlers set_error_handler('_elgg_php_error_handler'); set_exception_handler('_elgg_php_exception_handler'); setup_db_connections(); verify_installation(); _elgg_load_application_config(); _elgg_load_autoload_cache(); _elgg_load_site_config(); _elgg_session_boot(); _elgg_load_cache(); _elgg_load_translations(); }
/** * Log the current user out * * @return bool */ function logout() { if (isset($_SESSION['user'])) { if (!elgg_trigger_event('logout', 'user', $_SESSION['user'])) { return false; } $_SESSION['user']->code = ""; $_SESSION['user']->save(); } unset($_SESSION['username']); unset($_SESSION['name']); unset($_SESSION['code']); unset($_SESSION['guid']); unset($_SESSION['id']); unset($_SESSION['user']); setcookie("elggperm", "", time() - 86400 * 30, "/"); // pass along any messages $old_msg = $_SESSION['msg']; session_destroy(); // starting a default session to store any post-logout messages. _elgg_session_boot(NULL, NULL, NULL); $_SESSION['msg'] = $old_msg; return TRUE; }
/** * Boots the engine * * 1. sets error handlers * 2. connects to database * 3. verifies the installation succeeded * 4. loads application configuration * 5. loads i18n data * 6. loads cached autoloader state * 7. loads site configuration * * @access private */ function _elgg_engine_boot() { // Register the error handlers set_error_handler('_elgg_php_error_handler'); set_exception_handler('_elgg_php_exception_handler'); $db = _elgg_services()->db; // we inject the logger here to allow use of DB without loading core $db->setLogger(_elgg_services()->logger); $db->setupConnections(); $db->assertInstalled(); _elgg_load_application_config(); _elgg_load_site_config(); _elgg_session_boot(); _elgg_services()->systemCache->loadAll(); _elgg_services()->translator->loadTranslations(); }
/** * Boots the engine * * @return void */ public function boot() { // Register the error handlers set_error_handler('_elgg_php_error_handler'); set_exception_handler('_elgg_php_exception_handler'); $db = _elgg_services()->db; // we inject the logger here to allow use of DB without loading core $db->setLogger(_elgg_services()->logger); $db->setupConnections(); $db->assertInstalled(); $CONFIG = _elgg_services()->config->getStorageObject(); $local_path = Local::root()->getPath(); // setup stuff available without any DB info $CONFIG->path = $local_path; $CONFIG->plugins_path = "{$local_path}mod/"; $CONFIG->pluginspath = "{$local_path}mod/"; $CONFIG->entity_types = ['group', 'object', 'site', 'user']; $CONFIG->language = 'en'; // set cookie values for session and remember me _elgg_services()->config->getCookieConfig(); // we need this stuff before cache $rows = $db->getData("\n\t\t\tSELECT *\n\t\t\tFROM {$db->prefix}config\n\t\t\tWHERE `name` IN ('__site_secret__', 'default_site', 'dataroot')\n\t\t"); $configs = []; foreach ($rows as $row) { $configs[$row->name] = unserialize($row->value); } // booting during installation if (empty($configs['dataroot'])) { $configs['dataroot'] = ''; // don't use cache $CONFIG->boot_cache_ttl = 0; } if (!$GLOBALS['_ELGG']->dataroot_in_settings) { $CONFIG->dataroot = rtrim($configs['dataroot'], '/\\') . DIRECTORY_SEPARATOR; } $CONFIG->site_guid = (int) $configs['default_site']; if (!isset($CONFIG->boot_cache_ttl)) { $CONFIG->boot_cache_ttl = self::DEFAULT_BOOT_CACHE_TTL; } if ($this->timer) { $this->timer->begin([__CLASS__ . '::getBootData']); } // early config is done, now get the core boot data $data = $this->getBootData($CONFIG, $db); if ($this->timer) { $this->timer->begin([__CLASS__ . '::getBootData']); } $configs_cache = $data->getConfigValues(); $CONFIG->site = $data->getSite(); $CONFIG->wwwroot = $CONFIG->site->url; $CONFIG->sitename = $CONFIG->site->name; $CONFIG->sitedescription = $CONFIG->site->description; $CONFIG->url = $CONFIG->wwwroot; _elgg_services()->subtypeTable->setCachedValues($data->getSubtypeData()); foreach ($data->getConfigValues() as $key => $value) { $CONFIG->{$key} = $value; } _elgg_services()->plugins->setBootPlugins($data->getActivePlugins()); _elgg_services()->pluginSettingsCache->setCachedValues($data->getPluginSettings()); if (!$GLOBALS['_ELGG']->simplecache_enabled_in_settings) { $simplecache_enabled = $configs_cache['simplecache_enabled']; $CONFIG->simplecache_enabled = $simplecache_enabled === false ? 1 : $simplecache_enabled; } $system_cache_enabled = $configs_cache['system_cache_enabled']; $CONFIG->system_cache_enabled = $system_cache_enabled === false ? 1 : $system_cache_enabled; // needs to be set before [init, system] for links in html head $CONFIG->lastcache = (int) $configs_cache['simplecache_lastupdate']; $GLOBALS['_ELGG']->i18n_loaded_from_cache = false; if (!empty($CONFIG->debug)) { _elgg_services()->logger->setLevel($CONFIG->debug); _elgg_services()->logger->setDisplay(true); } _elgg_services()->views->view_path = \Elgg\Application::elggDir()->getPath("/views/"); // finish boot sequence _elgg_session_boot(); if ($CONFIG->system_cache_enabled) { _elgg_services()->systemCache->loadAll(); } _elgg_services()->translator->loadTranslations(); // we always need site->email and user->icontime, so load them together $user_guid = _elgg_services()->session->getLoggedInUserGuid(); if ($user_guid) { _elgg_services()->metadataCache->populateFromEntities([$user_guid]); } // gives hint to get() how to approach missing values $CONFIG->site_config_loaded = true; // invalidate on some actions just in case other invalidation triggers miss something _elgg_services()->hooks->registerHandler('action', 'all', function ($action) { if (0 === strpos($action, 'admin/' || $action === 'plugins/settings/save')) { $this->invalidateCache(); } }, 1); }
/** * Log the current user out * * @return bool */ function logout() { global $CONFIG; if (isset($_SESSION['user'])) { if (!elgg_trigger_event('logout', 'user', $_SESSION['user'])) { return false; } $_SESSION['user']->code = ""; $_SESSION['user']->save(); } unset($_SESSION['username']); unset($_SESSION['name']); unset($_SESSION['code']); unset($_SESSION['guid']); unset($_SESSION['id']); unset($_SESSION['user']); $cookie = new ElggCookie("elggperm"); $cookie->setExpire("-30 days"); $cookie->domain = "/"; elgg_set_cookie($cookie); // pass along any messages $old_msg = $_SESSION['msg']; session_destroy(); // starting a default session to store any post-logout messages. _elgg_session_boot(NULL, NULL, NULL); $_SESSION['msg'] = $old_msg; return TRUE; }