Source code for file /joomla/application/application.php
Documentation is available at application.php
* @version $Id: application.php 9910 2008-01-08 00:10:44Z jinx $
* @package Joomla.Framework
* @subpackage Application
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
// Check to ensure this file is within the rest of the framework
* Base class for a Joomla! application.
* Acts as a Factory class for application specific objects and provides many
* supporting API functions. Derived clases should supply the route(), dispatch()
* and render() functions.
* @package Joomla.Framework
* @subpackage Application
* The application message queue.
* The name of the application
* The scope of the application
* @param integer A client identifier.
jimport('joomla.utilities.utility');
//Enable sessions by default
if(!isset
($config['session'])) {
$config['session'] =
true;
//Set the session default name
if(!isset
($config['session_name'])) {
$config['session_name'] =
$this->_name;
//Set the default configuration file
if(!isset
($config['config_file'])) {
$config['config_file'] =
'configuration.php';
//create the configuration object
$this->_createConfiguration(JPATH_CONFIGURATION.
DS.
$config['config_file']);
//create the session if a session name is passed
if($config['session'] !==
false) {
$this->set( 'requestTime', gmdate('Y-m-d H:i') );
* Returns a reference to the global JApplication object, only creating it if it
* This method must be invoked as:
* <pre> $menu = &JApplication::getInstance();</pre>
* @param mixed $id A client identifier or name.
* @param array $config An optional associative array of configuration settings.
* @return JApplication The appliction object.
function &getInstance($client, $config =
array(), $prefix =
'J')
if (!isset
( $instances )) {
if (empty($instances[$client]))
jimport('joomla.application.helper');
$path =
$info->path.
DS.
'includes'.
DS.
'application.php';
// Create a JRouter object
$classname =
$prefix.
ucfirst($client);
$instance =
new $classname($config);
$instances[$client] =
& $instance;
return $instances[$client];
* Initialise the application.
* @param array An optional associative array of configuration settings.
//Set the language in the class
// Check that we were given a language in the array (since by default may be blank)
if(isset
($options['language'])) {
$config->setValue('config.language', $options['language']);
// Set user specific editor
$editor =
$user->getParam('editor', $this->getCfg('editor'));
$config->setValue('config.editor', $editor);
* Routing is the process of examining the request environment to determine which
* component should receive the request. The component optional parameters
* are then set in the request object to be processed when the application is being
// get the full request URI
$result =
$router->parse($uri);
* Dispatch the applicaiton.
* Dispatching is the process of pulling the option from the request object and
* mapping them to a component. If the component does not exist, it handles
* determining a default component to dispatch.
$document->setTitle( $this->getCfg('sitename' ).
' - ' .
JText::_( 'Administration' ));
$document->setDescription( $this->getCfg('MetaDesc') );
$document->setBuffer($contents, 'component');
* Render the application.
* Rendering is the process of pushing the document buffers into the template
* placeholders, retrieving data from the document and pushing it into
'directory' =>
JPATH_THEMES
$data =
$document->render($this->getCfg('caching'), $params );
function close( $code =
0 ) {
* Redirect to another URL.
* Optionally enqueues a message in the system message queue (which will be displayed
* the next time a page is loaded) using the enqueueMessage method. If the headers have
* not been sent the redirect will be accomplished using a "301 Moved Permanently"
* code in the header pointing to the new location. If the headers have already been
* sent this will be accomplished using a JavaScript statement.
* @param string $url The URL to redirect to.
* @param string $msg An optional message to display on redirect.
* @param string $msgType An optional message type.
* @return none; calls exit().
* @see JApplication::enqueueMessage()
function redirect( $url, $msg=
'', $msgType=
'message' )
// check for relative internal links
// Strip out any line breaks
// If the message exists, enqueue it
// Persist messages if they exist
* If the headers have been sent, then we cannot send an additional location header
* so we will output a javascript redirect statement.
echo
"<script>document.location.href='$url';</script>\n";
//@ob_end_clean(); // clear output buffer
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' .
$url );
* Enqueue a system message.
* @param string $msg The message to enqueue.
* @param string $type The message type.
// For empty queue, if messages exists in the session, enqueue them first
$sessionQueue =
$session->get('application.queue');
if (count($sessionQueue)) {
$session->set('application.queue', null);
* Get the system message queue.
* @return The system message queue.
// For empty queue, if messages exists in the session, enqueue them
$sessionQueue =
$session->get('application.queue');
if (count($sessionQueue)) {
$session->set('application.queue', null);
* Gets a configuration value.
* @param string The name of the value to get.
* @return mixed The user state.
* @example application/japplication-getcfg.php Getting a configuration value
return $config->getValue('config.' .
$varname);
* Method to get the application name
* The dispatcher name by default parsed using the classname, or it can be set
* by passing a $config['name'] in the class constructor
* @return string The name of the dispatcher
JError::raiseError(500, "JApplication::getName() : Can\'t get or parse class name.");
* @param string The path of the state.
* @return mixed The user state.
$registry =
& $session->get('registry');
return $registry->getValue($key);
* Sets the value of a user state variable.
* @param string The path of the state.
* @param string The value of the variable.
* @return mixed The previous state, if one existed.
$registry =
& $session->get('registry');
return $registry->setValue($key, $value);
* Gets the value of a user state variable.
* @param string The key of the user state variable.
* @param string The name of the variable passed in a request.
* @param string The default value for the variable if not found. Optional.
* @param string Filter for the variable, for valid values see {@link JFilterInput::clean()}. Optional.
* @return The request user state.
$cur_state =
(!is_null($old_state)) ?
$old_state :
$default;
// Save the new value only if it was set in this request
if ($new_state !==
null) {
* Registers a handler to a particular event group.
* @param string The event name.
* @param mixed The handler, a function or an instance of a event object.
$dispatcher->register($event, $handler);
* Calls all handlers associated with an event group.
* @param string The event name.
* @param array An array of arguments.
* @return array An array of results from each function call.