/** * Bootstrap file for the Joomla Platform [with legacy libraries]. Including this file into your application * will make Joomla Platform libraries [including legacy libraries] available for use. * * @package Joomla.Platform * * @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // Set the platform root path as a constant if necessary. if (!defined('JPATH_PLATFORM')) { define('JPATH_PLATFORM', __DIR__); } // Detect the native operating system type. $os = strtoupper(substr(PHP_OS, 0, 3)); if (!defined('IS_WIN')) { define('IS_WIN', $os === 'WIN'); } if (!defined('IS_UNIX')) { define('IS_UNIX', $os !== 'MAC' && $os !== 'WIN'); } /** * @deprecated 13.3 Use IS_UNIX instead */ if (!defined('IS_MAC')) { define('IS_MAC', IS_UNIX === true && ($os === 'DAR' || $os === 'MAC')); } // Import the library loader if necessary. if (!class_exists('JLoader')) { require_once JPATH_PLATFORM . '/loader.php'; } // Make sure that the Joomla Loader has been successfully loaded. if (!class_exists('JLoader')) { throw new RuntimeException('Joomla Loader not loaded.'); } // Setup the autoloaders. JLoader::setup(); JLoader::registerPrefix('J', JPATH_PLATFORM . '/legacy'); // Check if the JsonSerializable interface exists already if (!interface_exists('JsonSerializable')) { JLoader::register('JsonSerializable', JPATH_PLATFORM . '/vendor/joomla/compat/src/JsonSerializable.php'); } // Add deprecated constants // @deprecated 4.0 define('JPATH_ISWIN', IS_WIN); define('JPATH_ISMAC', IS_MAC); /** * Mask for the raw routing mode * * @deprecated 4.0 */ const JROUTER_MODE_RAW = 0; /** * Mask for the SEF routing mode * * @deprecated 4.0 */ const JROUTER_MODE_SEF = 1; // Register the PasswordHash lib JLoader::register('PasswordHash', JPATH_PLATFORM . '/phpass/PasswordHash.php'); // Register classes where the names have been changed to fit the autoloader rules // @deprecated 4.0 JLoader::register('JSimpleCrypt', JPATH_PLATFORM . '/legacy/simplecrypt/simplecrypt.php'); JLoader::register('JTree', JPATH_PLATFORM . '/legacy/base/tree.php'); JLoader::register('JNode', JPATH_PLATFORM . '/legacy/base/node.php'); JLoader::register('JObserver', JPATH_PLATFORM . '/legacy/base/observer.php'); JLoader::register('JObservable', JPATH_PLATFORM . '/legacy/base/observable.php'); JLoader::register('LogException', JPATH_PLATFORM . '/legacy/log/logexception.php'); JLoader::register('JXMLElement', JPATH_PLATFORM . '/legacy/utilities/xmlelement.php'); JLoader::register('JCli', JPATH_PLATFORM . '/legacy/application/cli.php'); JLoader::register('JDaemon', JPATH_PLATFORM . '/legacy/application/daemon.php'); JLoader::register('JApplication', JPATH_LIBRARIES . '/legacy/application/application.php'); /** * @package Joomla.Libraries * * @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Set the platform root path as a constant if necessary. if (!defined('JPATH_PLATFORM')) { define('JPATH_PLATFORM', __DIR__); } // Import the library loader if necessary. if (!class_exists('JLoader')) { require_once JPATH_PLATFORM . '/loader.php'; } // Make sure that the Joomla Platform has been successfully loaded. if (!class_exists('JLoader')) { throw new RuntimeException('Joomla Platform not loaded.'); } // Register the library base path for CMS libraries. JLoader::registerPrefix('J', JPATH_PLATFORM . '/cms', false, true); /** @note This will be loaded through composer in Joomla 4 **/ JLoader::registerNamespace('Joomla\\CMS', JPATH_PLATFORM . '/src', false, false, 'psr4'); // Create the Composer autoloader $loader = require JPATH_LIBRARIES . '/vendor/autoload.php'; $loader->unregister(); // Decorate Composer autoloader spl_autoload_register(array(new JClassLoader($loader), 'loadClass'), true, true); // Register the class aliases for Framework classes that have replaced their Platform equivilents require_once JPATH_LIBRARIES . '/classmap.php'; // Ensure FOF autoloader included - needed for things like content versioning where we need to get an FOFTable Instance if (!class_exists('FOFAutoloaderFof')) { include_once JPATH_LIBRARIES . '/fof/include.php'; } // Register a handler for uncaught exceptions that shows a pretty error page when possible set_exception_handler(array('JErrorPage', 'render')); // Define the Joomla version if not already defined. if (!defined('JVERSION')) { $jversion = new JVersion; define('JVERSION', $jversion->getShortVersion()); } // Set up the message queue logger for web requests if (array_key_exists('REQUEST_METHOD', $_SERVER)) { JLog::addLogger(array('logger' => 'messagequeue'), JLog::ALL, array('jerror')); } // Register JArrayHelper due to JRegistry moved to composer's vendor folder JLoader::register('JArrayHelper', JPATH_PLATFORM . '/joomla/utilities/arrayhelper.php'); // Register the Crypto lib JLoader::register('Crypto', JPATH_PLATFORM . '/php-encryption/Crypto.php'); // Register classes where the names have been changed to fit the autoloader rules // @deprecated 4.0 JLoader::register('JInstallerComponent', JPATH_PLATFORM . '/cms/installer/adapter/component.php'); JLoader::register('JInstallerFile', JPATH_PLATFORM . '/cms/installer/adapter/file.php'); JLoader::register('JInstallerLanguage', JPATH_PLATFORM . '/cms/installer/adapter/language.php'); JLoader::register('JInstallerLibrary', JPATH_PLATFORM . '/cms/installer/adapter/library.php'); JLoader::register('JInstallerModule', JPATH_PLATFORM . '/cms/installer/adapter/module.php'); JLoader::register('JInstallerPackage', JPATH_PLATFORM . '/cms/installer/adapter/package.php'); JLoader::register('JInstallerPlugin', JPATH_PLATFORM . '/cms/installer/adapter/plugin.php'); JLoader::register('JInstallerTemplate', JPATH_PLATFORM . '/cms/installer/adapter/template.php'); JLoader::register('JExtension', JPATH_PLATFORM . '/cms/installer/extension.php'); JLoader::registerAlias('JAdministrator', 'JApplicationAdministrator'); JLoader::registerAlias('JSite', 'JApplicationSite'); // Can be removed when the move of all core fields to namespace is finished \Joomla\CMS\Form\FormHelper::addFieldPath(JPATH_LIBRARIES . '/joomla/form/fields'); \Joomla\CMS\Form\FormHelper::addRulePath(JPATH_LIBRARIES . '/joomla/form/rule'); \Joomla\CMS\Form\FormHelper::addRulePath(JPATH_LIBRARIES . '/joomla/form/rules'); \Joomla\CMS\Form\FormHelper::addFormPath(JPATH_LIBRARIES . '/joomla/form/forms'); \Joomla\CMS\Form\FormHelper::addFieldPath(JPATH_LIBRARIES . '/cms/form/field'); \Joomla\CMS\Form\FormHelper::addRulePath(JPATH_LIBRARIES . '/cms/form/rule');