<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonasfh</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonasfh"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Jonasfh"/>
	<updated>2026-08-08T12:40:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_Joomla_Ajax_Interface&amp;diff=118206</id>
		<title>Using Joomla Ajax Interface</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_Joomla_Ajax_Interface&amp;diff=118206"/>
		<updated>2014-05-16T13:19:41Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: Format is required in 3.3 as far as I can see&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{version/tutor|3.2}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
==What is The Joomla Ajax Interface (com_ajax)==&lt;br /&gt;
A slim, extensible component to act as an entry point for HTTP requests for stand alone modules and plugins, thus allowing for the potential of Ajax functionality in them. Com_ajax is generally used when you are not the developer of the component that the module or plugin is interacting with.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If you are a component developer, you do not need to use com_ajax to implement Ajax functionality in it. You can do so directly in your component.&lt;br /&gt;
&lt;br /&gt;
Examples of use cases include, but are not limited to:&lt;br /&gt;
*A module that retrieves data from an external API&lt;br /&gt;
*A module that interacts with a component that you did not develop&lt;br /&gt;
*A plugin that implement API like functionality to allow consumption of data from your site&lt;br /&gt;
&lt;br /&gt;
==Anatomy of an Ajax Request==&lt;br /&gt;
&lt;br /&gt;
===Required===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;option=com_ajax&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;[module|plugin]=name&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;format=[json|debug|raw]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional===&lt;br /&gt;
*&amp;lt;code&amp;gt;method=[custom fragment]&amp;lt;/code&amp;gt; defaults to &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt; if omitted.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
All requests begin with &amp;lt;code&amp;gt;?option=com_ajax&amp;lt;/code&amp;gt;, which calls this extension, and must indicate the type of extension to call, and the data format to be returned.&lt;br /&gt;
&lt;br /&gt;
Additional variables and values used by your extension may also be included in the URL.&lt;br /&gt;
&lt;br /&gt;
For example, a request to &amp;lt;code&amp;gt;?option=com_ajax&amp;amp;amp;module=session&amp;lt;/code&amp;gt; would call &amp;lt;code&amp;gt;mod_session&amp;lt;/code&amp;gt; with results returned in the default format. In contrast,&amp;lt;code&amp;gt;?option=com_ajax&amp;amp;amp;plugin=session&amp;amp;amp;format=json&amp;lt;/code&amp;gt; would trigger the &amp;lt;code&amp;gt;onAjaxSession&amp;lt;/code&amp;gt; plugin group with results returned in JSON.&lt;br /&gt;
&lt;br /&gt;
==Module Support==&lt;br /&gt;
&lt;br /&gt;
===Summary===&lt;br /&gt;
&lt;br /&gt;
Module support is accomplished by calling a method in the module&#039;s &amp;lt;code&amp;gt;helper.php&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===Details===&lt;br /&gt;
&lt;br /&gt;
Module requests must include the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; variable in the URL, paired with the name of the module (i.e. &amp;lt;code&amp;gt;module=session&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;mod_session&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This value is also used for:&lt;br /&gt;
&lt;br /&gt;
*The name of the directory to check for the helper file, e.g. &amp;lt;code&amp;gt;/modules/mod_session/helper.php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The class name to call, e.g. &amp;lt;code&amp;gt;modSessionHelper&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optionally, the &amp;lt;code&amp;gt;method&amp;lt;/code&amp;gt; variable may be included to override the default method prefix of &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;NOTE&#039;&#039;&#039;: All methods must end in &amp;lt;code&amp;gt;Ajax&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
:&amp;lt;code&amp;gt;method=mySuperAwesomeMethodToTrigger&amp;lt;/code&amp;gt; will call &amp;lt;code&amp;gt;mySuperAwesomeMethodToTriggerAjax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module Ajax Session Module] is an example module that demonstrates this functionality.&lt;br /&gt;
&lt;br /&gt;
==Plugin Response==&lt;br /&gt;
&lt;br /&gt;
===Summary===&lt;br /&gt;
&lt;br /&gt;
Plugin support is accomplished by triggering the &amp;lt;code&amp;gt;onAjax[Name]&amp;lt;/code&amp;gt; plugin event.&lt;br /&gt;
&lt;br /&gt;
===Details===&lt;br /&gt;
&lt;br /&gt;
Plugin requests must include the &amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt; variable in the URL, paired with the name of the plugin event, e.g. &amp;lt;code&amp;gt;plugin=session&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;onAjaxSession&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This value is also used for:&lt;br /&gt;
&lt;br /&gt;
*The plugin class name following the &amp;lt;code&amp;gt;plgAjax[Name]&amp;lt;/code&amp;gt; convention.&lt;br /&gt;
*The plugin function name following the &amp;lt;code&amp;gt;onAjax[Name]&amp;lt;/code&amp;gt; convention.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Joomla-Ajax-Interface/Ajax-Latest-Articles Ajax Latest Articles plugin] is an example plugin that demonstrates this functionality.&lt;br /&gt;
&lt;br /&gt;
==Response Format==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;format=[json|debug]&amp;lt;/code&amp;gt; is an optional argument for the results format:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;json&amp;lt;/code&amp;gt; for JSON format&lt;br /&gt;
*&amp;lt;code&amp;gt;debug&amp;lt;/code&amp;gt; for human-readable output of the results.&lt;br /&gt;
&lt;br /&gt;
[[Category:AJAX]]&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_Joomla_Ajax_Interface&amp;diff=118205</id>
		<title>Using Joomla Ajax Interface</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_Joomla_Ajax_Interface&amp;diff=118205"/>
		<updated>2014-05-16T13:17:36Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{version/tutor|3.2}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
==What is The Joomla Ajax Interface (com_ajax)==&lt;br /&gt;
A slim, extensible component to act as an entry point for HTTP requests for stand alone modules and plugins, thus allowing for the potential of Ajax functionality in them. Com_ajax is generally used when you are not the developer of the component that the module or plugin is interacting with.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If you are a component developer, you do not need to use com_ajax to implement Ajax functionality in it. You can do so directly in your component.&lt;br /&gt;
&lt;br /&gt;
Examples of use cases include, but are not limited to:&lt;br /&gt;
*A module that retrieves data from an external API&lt;br /&gt;
*A module that interacts with a component that you did not develop&lt;br /&gt;
*A plugin that implement API like functionality to allow consumption of data from your site&lt;br /&gt;
&lt;br /&gt;
==Anatomy of an Ajax Request==&lt;br /&gt;
&lt;br /&gt;
===Required===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;option=com_ajax&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;[module|plugin]=name&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;format=[json|debug]&amp;lt;/code&amp;gt; defaults to raw if omitted.&lt;br /&gt;
&lt;br /&gt;
===Optional===&lt;br /&gt;
*&amp;lt;code&amp;gt;method=[custom fragment]&amp;lt;/code&amp;gt; defaults to &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt; if omitted.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
All requests begin with &amp;lt;code&amp;gt;?option=com_ajax&amp;lt;/code&amp;gt;, which calls this extension, and must indicate the type of extension to call, and the data format to be returned.&lt;br /&gt;
&lt;br /&gt;
Additional variables and values used by your extension may also be included in the URL.&lt;br /&gt;
&lt;br /&gt;
For example, a request to &amp;lt;code&amp;gt;?option=com_ajax&amp;amp;amp;module=session&amp;lt;/code&amp;gt; would call &amp;lt;code&amp;gt;mod_session&amp;lt;/code&amp;gt; with results returned in the default format. In contrast,&amp;lt;code&amp;gt;?option=com_ajax&amp;amp;amp;plugin=session&amp;amp;amp;format=json&amp;lt;/code&amp;gt; would trigger the &amp;lt;code&amp;gt;onAjaxSession&amp;lt;/code&amp;gt; plugin group with results returned in JSON.&lt;br /&gt;
&lt;br /&gt;
==Module Support==&lt;br /&gt;
&lt;br /&gt;
===Summary===&lt;br /&gt;
&lt;br /&gt;
Module support is accomplished by calling a method in the module&#039;s &amp;lt;code&amp;gt;helper.php&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===Details===&lt;br /&gt;
&lt;br /&gt;
Module requests must include the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; variable in the URL, paired with the name of the module (i.e. &amp;lt;code&amp;gt;module=session&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;mod_session&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This value is also used for:&lt;br /&gt;
&lt;br /&gt;
*The name of the directory to check for the helper file, e.g. &amp;lt;code&amp;gt;/modules/mod_session/helper.php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The class name to call, e.g. &amp;lt;code&amp;gt;modSessionHelper&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optionally, the &amp;lt;code&amp;gt;method&amp;lt;/code&amp;gt; variable may be included to override the default method prefix of &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;NOTE&#039;&#039;&#039;: All methods must end in &amp;lt;code&amp;gt;Ajax&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
:&amp;lt;code&amp;gt;method=mySuperAwesomeMethodToTrigger&amp;lt;/code&amp;gt; will call &amp;lt;code&amp;gt;mySuperAwesomeMethodToTriggerAjax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module Ajax Session Module] is an example module that demonstrates this functionality.&lt;br /&gt;
&lt;br /&gt;
==Plugin Response==&lt;br /&gt;
&lt;br /&gt;
===Summary===&lt;br /&gt;
&lt;br /&gt;
Plugin support is accomplished by triggering the &amp;lt;code&amp;gt;onAjax[Name]&amp;lt;/code&amp;gt; plugin event.&lt;br /&gt;
&lt;br /&gt;
===Details===&lt;br /&gt;
&lt;br /&gt;
Plugin requests must include the &amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt; variable in the URL, paired with the name of the plugin event, e.g. &amp;lt;code&amp;gt;plugin=session&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;onAjaxSession&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This value is also used for:&lt;br /&gt;
&lt;br /&gt;
*The plugin class name following the &amp;lt;code&amp;gt;plgAjax[Name]&amp;lt;/code&amp;gt; convention.&lt;br /&gt;
*The plugin function name following the &amp;lt;code&amp;gt;onAjax[Name]&amp;lt;/code&amp;gt; convention.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Joomla-Ajax-Interface/Ajax-Latest-Articles Ajax Latest Articles plugin] is an example plugin that demonstrates this functionality.&lt;br /&gt;
&lt;br /&gt;
==Response Format==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;format=[json|debug]&amp;lt;/code&amp;gt; is an optional argument for the results format:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;json&amp;lt;/code&amp;gt; for JSON format&lt;br /&gt;
*&amp;lt;code&amp;gt;debug&amp;lt;/code&amp;gt; for human-readable output of the results.&lt;br /&gt;
&lt;br /&gt;
[[Category:AJAX]]&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Constants&amp;diff=116000</id>
		<title>Constants</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Constants&amp;diff=116000"/>
		<updated>2014-03-20T12:47:38Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These constants are defined for use in Joomla and [[extensions|extensions]]:-&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_ADMINISTRATOR&lt;br /&gt;
|The path to the administrator folder.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_BASE&lt;br /&gt;
|The path to the installed Joomla! site, or JPATH_ROOT/administrator if executed from the backend. &lt;br /&gt;
|-&lt;br /&gt;
|JPATH_CACHE&lt;br /&gt;
|The path to the cache folder.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_COMPONENT&lt;br /&gt;
|The path to the current component being executed.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_COMPONENT_ADMINISTRATOR&lt;br /&gt;
|The path to the administration folder of the current component being executed.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_COMPONENT_SITE&lt;br /&gt;
|The path to the site folder of the current component being executed.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_CONFIGURATION&lt;br /&gt;
|The path to folder containing the configuration.php file.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_INSTALLATION&lt;br /&gt;
|The path to the installation folder.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_LIBRARIES&lt;br /&gt;
|The path to the libraries folder.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_PLUGINS&lt;br /&gt;
|The path to the plugins folder.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_ROOT&lt;br /&gt;
|The path to the installed Joomla! site.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_SITE&lt;br /&gt;
|The path to the installed Joomla! site.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_THEMES&lt;br /&gt;
|The path to the templates folder.&lt;br /&gt;
|-&lt;br /&gt;
|JPATH_XMLRPC&lt;br /&gt;
|The path to the XML-RPC Web service folder.(1.5 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These constants are defined in &amp;lt;code&amp;gt;_path_/includes/defines.php&amp;lt;/code&amp;gt; except JPATH_BASE which is defined in &amp;lt;code&amp;gt;_path_/index.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note: These paths are the absolute paths of these locations within the file system, NOT the path you&#039;d use in a URL.&lt;br /&gt;
&lt;br /&gt;
For URL paths, try using [[JURI/base|JURI::base()]].&lt;br /&gt;
&lt;br /&gt;
== Difference between JPATH_SITE, JPATH_ROOT, and JPATH_BASE ==&lt;br /&gt;
&#039;&#039;JPATH_SITE&#039;&#039; is meant to represent the root path of the JSite application, just as &#039;&#039;JPATH_ADMINISTRATOR&#039;&#039; is mean to represent the root path of the JAdministrator application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JPATH_BASE&#039;&#039; is the root path for the current requested application.... so if you are in the administrator application:&lt;br /&gt;
:JPATH_BASE == JPATH_ADMINISTRATOR&lt;br /&gt;
&lt;br /&gt;
If you are in the site application: &lt;br /&gt;
:JPATH_BASE == JPATH_SITE&lt;br /&gt;
&lt;br /&gt;
If you are in the installation application:&lt;br /&gt;
:JPATH_BASE == JPATH_INSTALLATION.&lt;br /&gt;
&lt;br /&gt;
JPATH_ROOT is the root path for the Joomla install and does not depend upon any application.&lt;br /&gt;
&lt;br /&gt;
== Consideration == &lt;br /&gt;
&lt;br /&gt;
Whilst using JPATH_COMPONENT and JPATH_COMPONENT_ADMINISTRATOR is highly useful in some cases, it has one big disadvantage: it immediately breaks all attempts to reuse the model from another component. That&#039;s something to keep in mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:References]][[Category:Module Development]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Retrieving_request_data_using_JInput&amp;diff=104114</id>
		<title>Retrieving request data using JInput</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Retrieving_request_data_using_JInput&amp;diff=104114"/>
		<updated>2013-10-02T13:24:19Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version|2.5,3.1|platform=11.1,12.1}}&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
To be able to use JInput as described here, you must be using Joomla 2.5.0 or above.&lt;br /&gt;
&lt;br /&gt;
Please note there are known issues with JInput and Magic Quotes (Deprecated in PHP 5.3.0 and removed in PHP 5.4.0). Most servers have these turned off - however it is important to bear this in mind whilst developing a component. For this reason all core components in Joomla 2.5.x still use JRequest. As of Joomla 3.0+ magic quotes is required to be disabled and thus this is no longer an issue.&lt;br /&gt;
&lt;br /&gt;
==Using JInput==&lt;br /&gt;
To use JInput you must first create the object by using this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$jinput = JFactory::getApplication()-&amp;gt;input;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Getting Values===&lt;br /&gt;
To get a value from JInput, you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$foo = $jinput-&amp;gt;get(&#039;varname&#039;, &#039;default_value&#039;, &#039;filter&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The filter defaults to &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Available filters are:&lt;br /&gt;
&lt;br /&gt;
*INT&lt;br /&gt;
*INTEGER&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Only use the first integer value&lt;br /&gt;
preg_match(&#039;/-?[0-9]+/&#039;, (string) $source, $matches);&lt;br /&gt;
$result = @ (int) $matches[0];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*UINT&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Only use the first integer value&lt;br /&gt;
preg_match(&#039;/-?[0-9]+/&#039;, (string) $source, $matches);&lt;br /&gt;
$result = @ abs((int) $matches[0]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*FLOAT&lt;br /&gt;
*DOUBLE&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Only use the first floating point value&lt;br /&gt;
preg_match(&#039;/-?[0-9]+(\.[0-9]+)?/&#039;, (string) $source, $matches);&lt;br /&gt;
$result = @ (float) $matches[0];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*BOOL&lt;br /&gt;
*BOOLEAN&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$result = (bool) $source;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*WORD&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Only allow characters a-z, and underscores&lt;br /&gt;
$result = (string) preg_replace(&#039;/[^A-Z_]/i&#039;, &#039;&#039;, $source);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*ALNUM&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Allow a-z and 0-9 only&lt;br /&gt;
$result = (string) preg_replace(&#039;/[^A-Z0-9]/i&#039;, &#039;&#039;, $source);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*CMD&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Allow a-z, 0-9, underscore, dot, dash. Also remove leading dots from result. &lt;br /&gt;
$result = (string) preg_replace(&#039;/[^A-Z0-9_\.-]/i&#039;, &#039;&#039;, $source);&lt;br /&gt;
$result = ltrim($result, &#039;.&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*BASE64&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Allow a-z, 0-9, slash, plus, equals.&lt;br /&gt;
$result = (string) preg_replace(&#039;/[^A-Z0-9\/+=]/i&#039;, &#039;&#039;, $source);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*STRING&lt;br /&gt;
&lt;br /&gt;
*HTML&lt;br /&gt;
*SAFE_HTML&lt;br /&gt;
*ARRAY&lt;br /&gt;
*PATH&lt;br /&gt;
*RAW&lt;br /&gt;
*USERNAME&lt;br /&gt;
&lt;br /&gt;
===Getting Multiple Values===&lt;br /&gt;
&lt;br /&gt;
To retrieve a number of values you can use the &amp;lt;code&amp;gt;getArray()&amp;lt;/code&amp;gt; method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fooValues = $jinput-&amp;gt;getArray(array(&#039;var1&#039; =&amp;gt; &#039;&#039;, &#039;var2&#039; =&amp;gt; &#039;&#039;, &#039;var3&#039; =&amp;gt; &#039;&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, if you want to determine the data to get step by step:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fooArray = array();&lt;br /&gt;
$fooArray[&#039;var1&#039;] = &#039;&#039;;&lt;br /&gt;
$fooArray[&#039;var2&#039;] = &#039;&#039;;&lt;br /&gt;
$fooArray[&#039;var3&#039;] = &#039;&#039;;&lt;br /&gt;
$fooValues = $jinput-&amp;gt;getArray($fooArray);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;$fooValues&amp;lt;/code&amp;gt; will be an array that consists of the same keys as used in &amp;lt;code&amp;gt;$fooArray&amp;lt;/code&amp;gt;, but with values attached.&lt;br /&gt;
&lt;br /&gt;
You can also specify different filters for each of the inputs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;gt;&lt;br /&gt;
$fooValues = $jinput-&amp;gt;getArray(array(&lt;br /&gt;
    &#039;var1&#039; =&amp;gt; &#039;int&#039;,&lt;br /&gt;
    &#039;var2&#039; =&amp;gt; &#039;float&#039;,&lt;br /&gt;
    &#039;var3&#039; =&amp;gt; &#039;word&#039;&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also nest arrays to get more complicated hierarchies of values:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fooValues = $jinput-&amp;gt;getArray(array(&lt;br /&gt;
    &#039;jform&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;title&#039; =&amp;gt; &#039;string&#039;,&lt;br /&gt;
        &#039;quantity&#039; =&amp;gt; &#039;int&#039;,&lt;br /&gt;
        &#039;state&#039; =&amp;gt; &#039;int&#039;&lt;br /&gt;
    )&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Getting Values from a Specific Super Global===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$foo = $jinput-&amp;gt;get-&amp;gt;get(&#039;varname&#039;, &#039;default_value&#039;, &#039;filter&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$foo = $jinput-&amp;gt;post-&amp;gt;get(&#039;varname&#039;, &#039;default_value&#039;, &#039;filter&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$foo = $jinput-&amp;gt;server-&amp;gt;get(&#039;varname&#039;, &#039;default_value&#039;, &#039;filter&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To retrieve an entire object, you can use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$foo = $jinput-&amp;gt;get(&#039;varname&#039;, null, null);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Setting Values===&lt;br /&gt;
&lt;br /&gt;
To set a value via JInput, you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$jinput-&amp;gt;set(&#039;varname&#039;, $foo);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Retrieving File Data===&lt;br /&gt;
&lt;br /&gt;
The format that PHP returns file data in for arrays can at times be awkward, especially when dealing with arrays of files. JInputFiles provides a convenient interface for making life a little easier, grouping the data by file.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a form like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_example&amp;amp;task=file.submit&#039;); ?&amp;gt;&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;jform1[test][]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;jform1[test][]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;submit&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally, PHP would put these in an array called &amp;lt;code&amp;gt;$_FILES&amp;lt;/code&amp;gt; that looked like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
    [jform1] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [name] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [test] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [0] =&amp;gt; youtube_icon.png&lt;br /&gt;
                            [1] =&amp;gt; Younger_Son_2.jpg&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            [type] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [test] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [0] =&amp;gt; image/png&lt;br /&gt;
                            [1] =&amp;gt; image/jpeg&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            [tmp_name] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [test] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [0] =&amp;gt; /tmp/phpXoIpSD&lt;br /&gt;
                            [1] =&amp;gt; /tmp/phpWDE7ye&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            [error] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [test] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [0] =&amp;gt; 0&lt;br /&gt;
                            [1] =&amp;gt; 0&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            [size] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [test] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [0] =&amp;gt; 34409&lt;br /&gt;
                            [1] =&amp;gt; 99529&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JInputFiles produces a result that is cleaner and easier to work with:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$files = $input-&amp;gt;files-&amp;gt;get(&#039;jform1&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$files&amp;lt;/code&amp;gt; then becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
    [test] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [0] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [name] =&amp;gt; youtube_icon.png&lt;br /&gt;
                    [type] =&amp;gt; image/png&lt;br /&gt;
                    [tmp_name] =&amp;gt; /tmp/phpXoIpSD&lt;br /&gt;
                    [error] =&amp;gt; 0&lt;br /&gt;
                    [size] =&amp;gt; 34409&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            [1] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [name] =&amp;gt; Younger_Son_2.jpg&lt;br /&gt;
                    [type] =&amp;gt; image/jpeg&lt;br /&gt;
                    [tmp_name] =&amp;gt; /tmp/phpWDE7ye&lt;br /&gt;
                    [error] =&amp;gt; 0&lt;br /&gt;
                    [size] =&amp;gt; 99529&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this way, the data from each file element is consolidated into a single array and can be indexed in a more straightforward manner.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
This is based on an email discussion: [https://groups.google.com/d/msg/joomla-dev-framework/LbALkK1ifMo/5waSiIlb21gJ Framework List 23 July 2011]&lt;br /&gt;
&lt;br /&gt;
The idea behind JInput is to abstract out the input source to allow code to be reused in different applications and in different contexts.  What I mean by this is that you could have a controller that grabs data from an input source.  Instead of always getting it from the request (i.e. get and post variables), you get it from JInput.  So say for instance you have a MVC triad in your component that is meant to get data from the browser as a client (a typical web application).  Now suppose you want to reuse that same code but interface with it using JSON.  Instead of rewriting your triad, you just extend JInput and have it grab it data from a parsed json object and perform any translation that you need to perform.&lt;br /&gt;
&lt;br /&gt;
The plan is to have JApplication instantiate JInput in its constructor.  Then in your code you get the input object from the application and get your input from there.  It will be a public property in Japplication so that it can be swapped out of that is appropriate.&lt;br /&gt;
&lt;br /&gt;
We get the added benefit that we get rid of the static JRequest which makes a whole bunch the code a whole lot easier to test because you can inject mock inputs directly instead of trying to fudge with hackish dependencies.&lt;br /&gt;
&lt;br /&gt;
The end result will be that your code will get the input object from the application (we will probably add something to JController at some point to make it more convenient to use there as well).&lt;br /&gt;
&lt;br /&gt;
Once you have your JInput object, you use it fairly in a fairly similar manner to how JRequest is used:&lt;br /&gt;
$input-&amp;gt;get(&#039;varname&#039;, &#039;default_value&#039;, &#039;filter&#039;);&lt;br /&gt;
&lt;br /&gt;
Where filter is a filter that is supported by JFilterInput.  JInput::clean proxies to JFilter.  We&#039;ll have to tweak JFilter a little bit so that it is more extensible.  It defaults to cmd so that developers have to be intentional about things if they want to have more lenient filtering.&lt;br /&gt;
&lt;br /&gt;
There is also a getArray method that allows you to specify an array of key and filter pairs so that you can get a whole array of filtered input.&lt;br /&gt;
&lt;br /&gt;
If you want to get data from a specific super global array, you can do $input-&amp;gt;get-&amp;gt;get(...) or $input-&amp;gt;post-&amp;gt;get(...).&lt;br /&gt;
&lt;br /&gt;
So that&#039;s the basic idea.  Feel free to post more questions if you have any.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll be adding input as a public property to JApplication in the near future.  It might be an idea if the CMS folks so chose to release a 1.7.1 that included this so developers can use it now.  Otherwise, at this point in time, it is best to still use JRequest.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79284</id>
		<title>Archived:Developing a MVC Component/Filter input from users</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79284"/>
		<updated>2012-12-21T13:06:13Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields in the xmlfiles can have filter-options to reduce the risk of injecting erroneous or malicious data in the forms in your component. From what I have found, the following filters are available by default, defined on line 162 in [http://api.joomla.org/__filesource/fsource_Joomla-Platform_Filter_librariesjoomlafilterinput.php.html filterinput.php]&lt;br /&gt;
&lt;br /&gt;
INT / INTEGER: Forces Integer value&lt;br /&gt;
UINT: Forces absolute Integer value&lt;br /&gt;
FLOAT / DOUBLE: Forces floating point value&lt;br /&gt;
BOOL / BOOLEAN: Forces the value to be true or false&lt;br /&gt;
WORD: Allows only a-z (not case sensitive) and underscores  &lt;br /&gt;
ALNUM: Allow a-z and numbers&lt;br /&gt;
CMD: allows ALNUM plus the characters _ (underscore) . (dot) - (dash)&lt;br /&gt;
BASE64: Allows only a base64-encoded string (ALNUM and the characters + / = )&lt;br /&gt;
STRING: Removes HTML&lt;br /&gt;
HTML: Allows basic HTML&lt;br /&gt;
ARRAY: Forces value to be an array&lt;br /&gt;
PATH: Forces value to be a file path&lt;br /&gt;
USERNAME: Only characters allowed in a Joomla username&lt;br /&gt;
RAW: Allow any content&lt;br /&gt;
&lt;br /&gt;
There are probably more available by default, please edit this doc...&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79283</id>
		<title>Archived:Developing a MVC Component/Filter input from users</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79283"/>
		<updated>2012-12-21T13:05:43Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Filter_input_from_users}}&lt;br /&gt;
Fields in the xmlfiles can have filter-options to reduce the risk of injecting erroneous or malicious data in the forms in your component. From what I have found, the following filters are available by default, defined on line 162 in [http://api.joomla.org/__filesource/fsource_Joomla-Platform_Filter_librariesjoomlafilterinput.php.html filterinput.php]&lt;br /&gt;
&lt;br /&gt;
INT / INTEGER: Forces Integer value&lt;br /&gt;
UINT: Forces absolute Integer value&lt;br /&gt;
FLOAT / DOUBLE: Forces floating point value&lt;br /&gt;
BOOL / BOOLEAN: Forces the value to be true or false&lt;br /&gt;
WORD: Allows only a-z (not case sensitive) and underscores  &lt;br /&gt;
ALNUM: Allow a-z and numbers&lt;br /&gt;
CMD: allows ALNUM plus the characters _ (underscore) . (dot) - (dash)&lt;br /&gt;
BASE64: Allows only a base64-encoded string (ALNUM and the characters + / = )&lt;br /&gt;
STRING: Removes HTML&lt;br /&gt;
HTML: Allows basic HTML&lt;br /&gt;
ARRAY: Forces value to be an array&lt;br /&gt;
PATH: Forces value to be a file path&lt;br /&gt;
USERNAME: Only characters allowed in a Joomla username&lt;br /&gt;
RAW: Allow any content&lt;br /&gt;
&lt;br /&gt;
There are probably more available by default, please edit this doc...&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79282</id>
		<title>Archived:Developing a MVC Component/Filter input from users</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79282"/>
		<updated>2012-12-21T13:03:11Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields in the xmlfiles can have filter-options to reduce the risk of injecting erroneous or malicious data in the forms in your component. From what I have found, the following filters are available by default, defined on line 162 in [http://api.joomla.org/__filesource/fsource_Joomla-Platform_Filter_librariesjoomlafilterinput.php.html filterinput.php]&lt;br /&gt;
&lt;br /&gt;
INT / INTEGER: Forces Integer value&lt;br /&gt;
UINT: Forces absolute Integer value&lt;br /&gt;
FLOAT / DOUBLE: Forces floating point value&lt;br /&gt;
BOOL / BOOLEAN: Forces the value to be true or false&lt;br /&gt;
WORD: Allows only a-z (not case sensitive) and underscores  &lt;br /&gt;
ALNUM: Allow a-z and numbers&lt;br /&gt;
CMD: allows ALNUM plus the characters _ (underscore) . (dot) - (dash)&lt;br /&gt;
BASE64: Allows only a base64-encoded string (ALNUM and the characters + / = )&lt;br /&gt;
STRING: Removes HTML&lt;br /&gt;
HTML: Allows basic HTML&lt;br /&gt;
ARRAY: Forces value to be an array&lt;br /&gt;
PATH: Forces value to be a file path&lt;br /&gt;
USERNAME: Only characters allowed in a Joomla username&lt;br /&gt;
RAW: Allow any content&lt;br /&gt;
&lt;br /&gt;
There are probably more available by default, please edit this doc...&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79281</id>
		<title>Archived:Developing a MVC Component/Filter input from users</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79281"/>
		<updated>2012-12-21T13:02:41Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields in the xmlfiles can have filter-options to reduce the risk of injecting erroneous or malicious data in the forms in your component. From what I have found, the following filters are available by default, defined on line 162 in [ http://api.joomla.org/__filesource/fsource_Joomla-Platform_Filter_librariesjoomlafilterinput.php.html filterinput.php]&lt;br /&gt;
&lt;br /&gt;
INT / INTEGER: Forces Integer value&lt;br /&gt;
UINT: Forces absolute Integer value&lt;br /&gt;
FLOAT / DOUBLE: Forces floating point value&lt;br /&gt;
BOOL / BOOLEAN: Forces the value to be true or false&lt;br /&gt;
WORD: Allows only a-z (not case sensitive) and underscores  &lt;br /&gt;
ALNUM: Allow a-z and numbers&lt;br /&gt;
CMD: allows ALNUM plus the characters _ (underscore) . (dot) - (dash)&lt;br /&gt;
BASE64: Allows only a base64-encoded string (ALNUM and the characters + / = )&lt;br /&gt;
STRING: Removes HTML&lt;br /&gt;
HTML: Allows basic HTML&lt;br /&gt;
ARRAY: Forces value to be an array&lt;br /&gt;
PATH: Forces value to be a file path&lt;br /&gt;
USERNAME: Only characters allowed in a Joomla username&lt;br /&gt;
RAW: Allow any content&lt;br /&gt;
&lt;br /&gt;
There are probably more available by default, please edit this doc...&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79280</id>
		<title>Archived:Developing a MVC Component/Filter input from users</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Archived:Developing_a_MVC_Component/Filter_input_from_users&amp;diff=79280"/>
		<updated>2012-12-21T13:00:43Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: Filter options for text in joomla, to be used for f.ex. input fields in the config xml files for components, modules, plugins etc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields in the xmlfiles can have filter-options to reduce the risk of injecting erroneous or malicious data in the forms in your component. From what I have found, the following filters are available by default, defined on line 162 in [http://api.joomla.org/__filesource/fsource_Joomla-Platform_Filter_librariesjoomlafilterinput.php.html]&lt;br /&gt;
&lt;br /&gt;
INT / INTEGER: Forces Integer value&lt;br /&gt;
UINT: Forces absolute Integer value&lt;br /&gt;
FLOAT / DOUBLE: Forces floating point value&lt;br /&gt;
BOOL / BOOLEAN: Forces the value to be true or false&lt;br /&gt;
WORD: Allows only a-z (not case sensitive) and underscores  &lt;br /&gt;
ALNUM: Allow a-z and numbers&lt;br /&gt;
CMD: allows ALNUM plus the characters _ (underscore) . (dot) - (dash)&lt;br /&gt;
BASE64: Allows only a base64-encoded string (ALNUM and the characters + / = )&lt;br /&gt;
STRING: Removes HTML&lt;br /&gt;
HTML: Allows basic HTML&lt;br /&gt;
ARRAY: Forces value to be an array&lt;br /&gt;
PATH: Forces value to be a file path&lt;br /&gt;
USERNAME: Only characters allowed in a Joomla username&lt;br /&gt;
RAW: Allow any content&lt;br /&gt;
&lt;br /&gt;
There are probably more available by default, please edit this doc...&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=61537</id>
		<title>How to debug your code</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=61537"/>
		<updated>2011-08-25T11:24:25Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;The Easy Way:&#039;&#039;&#039;&lt;br /&gt;
The simplest way to see what is going on inside your code is to temporarily add echo statements for variables to show their values on the screen. For example, say you want to know what the value of some variables are when $i is &amp;quot;5&amp;quot;. You could use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;for ( $i = 0; $i &amp;lt; 10; $i++ ) {&lt;br /&gt;
	if ( $i == 5 ) {&lt;br /&gt;
		echo &#039;$i=&#039; . $i; &lt;br /&gt;
                // other echo statements &lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This works for simple situations. However, if you are planning on doing a lot of Joomla! development, it is worth the effort to install and learn an integrated development environment (IDE) that includes a real PHP debugger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using an IDE:&#039;&#039;&#039;&lt;br /&gt;
Many Joomla! developers use the Eclipse IDE. This is free and includes a debugger. Instructions for installing it are available at [[Setting_up_your_workstation_for_Joomla!_development]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using the PHP Expert editor:&#039;&#039;&#039;&lt;br /&gt;
Another option is the PHP Expert editor with an installed extension for debugging. Add the following lines to the php.ini file:&lt;br /&gt;
&lt;br /&gt;
 extension=php_dbg.dll&lt;br /&gt;
 [Debugger]&lt;br /&gt;
 debugger.enabled=on&lt;br /&gt;
 debugger.profiler_enabled=off&lt;br /&gt;
&lt;br /&gt;
It is best to set profiler_enable to &amp;quot;off&amp;quot;. Then you need set options in the menu Run/Options menu to use HTTP-server and the directory to where your script is located.&lt;br /&gt;
&lt;br /&gt;
If all options are correct you may run your script in debug mode by clicking on the Debug button (F8).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;J!Dump:&#039;&#039;&#039;&lt;br /&gt;
An often handy extension that can be found in the JED is the J!Dump extension that will allow you to dump variable, stack traces, and system information into a popup window at run time. This extension works similarly to the php command `var_dump` but formats the output in a much more readable fashion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JDEBUG&#039;&#039;&#039;&lt;br /&gt;
To check if the website is in debug-mode, you test the JDEBUG - variable: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if(JDEBUG){&lt;br /&gt;
//whatever debugging code you want to run&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=61536</id>
		<title>How to debug your code</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=61536"/>
		<updated>2011-08-25T11:23:36Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;The Easy Way:&#039;&#039;&#039;&lt;br /&gt;
The simplest way to see what is going on inside your code is to temporarily add echo statements for variables to show their values on the screen. For example, say you want to know what the value of some variables are when $i is &amp;quot;5&amp;quot;. You could use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;for ( $i = 0; $i &amp;lt; 10; $i++ ) {&lt;br /&gt;
	if ( $i == 5 ) {&lt;br /&gt;
		echo &#039;$i=&#039; . $i; &lt;br /&gt;
                // other echo statements &lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This works for simple situations. However, if you are planning on doing a lot of Joomla! development, it is worth the effort to install and learn an integrated development environment (IDE) that includes a real PHP debugger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using an IDE:&#039;&#039;&#039;&lt;br /&gt;
Many Joomla! developers use the Eclipse IDE. This is free and includes a debugger. Instructions for installing it are available at [[Setting_up_your_workstation_for_Joomla!_development]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using the PHP Expert editor:&#039;&#039;&#039;&lt;br /&gt;
Another option is the PHP Expert editor with an installed extension for debugging. Add the following lines to the php.ini file:&lt;br /&gt;
&lt;br /&gt;
 extension=php_dbg.dll&lt;br /&gt;
 [Debugger]&lt;br /&gt;
 debugger.enabled=on&lt;br /&gt;
 debugger.profiler_enabled=off&lt;br /&gt;
&lt;br /&gt;
It is best to set profiler_enable to &amp;quot;off&amp;quot;. Then you need set options in the menu Run/Options menu to use HTTP-server and the directory to where your script is located.&lt;br /&gt;
&lt;br /&gt;
If all options are correct you may run your script in debug mode by clicking on the Debug button (F8).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;J!Dump:&#039;&#039;&#039;&lt;br /&gt;
An often handy extension that can be found in the JED is the J!Dump extension that will allow you to dump variable, stack traces, and system information into a popup window at run time. This extension works similarly to the php command `var_dump` but formats the output in a much more readable fashion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JDEBUG&#039;&#039;&#039;&lt;br /&gt;
To check if the website is beeing debugged, you test the JDEBUG - variable: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if(JDEBUG){&lt;br /&gt;
//whatever debugging code you want to run&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=61535</id>
		<title>How to debug your code</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=61535"/>
		<updated>2011-08-25T11:22:59Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;The Easy Way:&#039;&#039;&#039;&lt;br /&gt;
The simplest way to see what is going on inside your code is to temporarily add echo statements for variables to show their values on the screen. For example, say you want to know what the value of some variables are when $i is &amp;quot;5&amp;quot;. You could use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;for ( $i = 0; $i &amp;lt; 10; $i++ ) {&lt;br /&gt;
	if ( $i == 5 ) {&lt;br /&gt;
		echo &#039;$i=&#039; . $i; &lt;br /&gt;
                // other echo statements &lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This works for simple situations. However, if you are planning on doing a lot of Joomla! development, it is worth the effort to install and learn an integrated development environment (IDE) that includes a real PHP debugger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using an IDE:&#039;&#039;&#039;&lt;br /&gt;
Many Joomla! developers use the Eclipse IDE. This is free and includes a debugger. Instructions for installing it are available at [[Setting_up_your_workstation_for_Joomla!_development]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using the PHP Expert editor:&#039;&#039;&#039;&lt;br /&gt;
Another option is the PHP Expert editor with an installed extension for debugging. Add the following lines to the php.ini file:&lt;br /&gt;
&lt;br /&gt;
 extension=php_dbg.dll&lt;br /&gt;
 [Debugger]&lt;br /&gt;
 debugger.enabled=on&lt;br /&gt;
 debugger.profiler_enabled=off&lt;br /&gt;
&lt;br /&gt;
It is best to set profiler_enable to &amp;quot;off&amp;quot;. Then you need set options in the menu Run/Options menu to use HTTP-server and the directory to where your script is located.&lt;br /&gt;
&lt;br /&gt;
If all options are correct you may run your script in debug mode by clicking on the Debug button (F8).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;J!Dump:&#039;&#039;&#039;&lt;br /&gt;
An often handy extension that can be found in the JED is the J!Dump extension that will allow you to dump variable, stack traces, and system information into a popup window at run time. This extension works similarly to the php command `var_dump` but formats the output in a much more readable fashion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JDEBUG&#039;&#039;&#039;&lt;br /&gt;
To check if the website is beeing debugged, you test the JDEBUG - variable: &lt;br /&gt;
if(JDEBUG){&lt;br /&gt;
//whatever debugging code you want to run&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Plugin/Events/System&amp;diff=29725</id>
		<title>J1.5:Plugin/Events/System</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Plugin/Events/System&amp;diff=29725"/>
		<updated>2010-08-09T15:09:35Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
===Overview===&lt;br /&gt;
In a standard installation of Joomla! 1.5 we have several predefined events which, when triggered, call functions in the associated plugins.  For more information on plugins, check [[Tutorial:Plugins|Tutorial:Plugins]], [[Tutorial:Creating_a_Plugin_for_Joomla_1.5|Tutorial:Creating a Plugin for Joomla 1.5]], [[How_to_create_a_content_plugin|How to create a content plugin]] etc.&lt;br /&gt;
&lt;br /&gt;
This topic is aimed at &amp;quot;global&amp;quot; system events, including those triggered on every page load (onAfterInitialise, onAfterRoute, onAfterDispatch, onAfterRender), those supporting search within multiple plugins (onSearch, onSearchArea) and those supporting the presentation of web services (onGetWebServices). Visit [[Tutorial:Plugins|the plugins tutorial]] for a complete list over available core events.&lt;br /&gt;
&lt;br /&gt;
=== onAfterInitialise ===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered after the framework has loaded and the applicaiton initialise method has been called.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Called in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*index.php&lt;br /&gt;
*administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterRoute===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered after the framework has loaded and initialised and the router has route the client request.&lt;br /&gt;
&lt;br /&gt;
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 dispatched.&lt;br /&gt;
&lt;br /&gt;
When this event triggers the router has parsed the route and pushed the request parameters into JRequest for retrieval by the application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterDispatch===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
This event is triggered after the framework has dispatched the application.&lt;br /&gt;
&lt;br /&gt;
Dispatching is the process of pulling the option from the request object and mapping them to a component. If the component do not exist, it handles determining a default component to dispatch.&lt;br /&gt;
&lt;br /&gt;
When this event is triggered the output of the component is available in the document buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterRender===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
This event is triggered after the framework has rendered the application.&lt;br /&gt;
&lt;br /&gt;
Rendering is the process of pushing the document buffers into the template placeholders, retrieving data from the document and pushing it into the into the JResponse buffer.&lt;br /&gt;
&lt;br /&gt;
When this event is triggered the output of the application is available in the response buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onSearch===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered by a variety of search related operations. It is a request for a&lt;br /&gt;
plugin to return the result of a search request. The rows must return the following fields, which are used in a common display routine:&lt;br /&gt;
&lt;br /&gt;
* href&lt;br /&gt;
* title&lt;br /&gt;
* section&lt;br /&gt;
* created&lt;br /&gt;
* text&lt;br /&gt;
* browsernav&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The target search string.&lt;br /&gt;
* A string matching option (exact|any|all).&lt;br /&gt;
* A string ordering option (newest|oldest|popular|alpha|category)&lt;br /&gt;
* An array if restricted to areas, null if search all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Array of stdClass objects with members as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* administrator/components/com_statistics/admin.statistics.php&lt;br /&gt;
* components/com_search/search.php&lt;br /&gt;
* plugins/search/categories.php&lt;br /&gt;
* plugins/search/contacts.php&lt;br /&gt;
* plugins/search/content.php&lt;br /&gt;
* plugins/search/newsfeeds.php&lt;br /&gt;
* plugins/search/sections.php&lt;br /&gt;
* plugins/search/weblinks.php&lt;br /&gt;
* plugins/xmlrpc/joomla.php&lt;br /&gt;
&lt;br /&gt;
===onSearchAreas===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This appears to be a request for plugins to identify which &amp;quot;areas&amp;quot; they provide&lt;br /&gt;
search facilities for.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An associative array of area names, indexed by the area identifier. For example, array( &#039;categories&#039; =&amp;gt; &#039;Categories&#039; ).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* components/com_search/search.php&lt;br /&gt;
* plugins/search/categories.php&lt;br /&gt;
* plugins/search/contacts.php&lt;br /&gt;
* plugins/search/content.php&lt;br /&gt;
* plugins/search/newsfeeds.php&lt;br /&gt;
* plugins/search/sections.php&lt;br /&gt;
* plugins/search/weblinks.php&lt;br /&gt;
&lt;br /&gt;
===onGetWebServices===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is an introspection request for plugins that provide web services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An array of associative arrays. The outer array is indexed by the service method name and&lt;br /&gt;
contains an array with the following elements:&lt;br /&gt;
&lt;br /&gt;
* [&#039;function&#039;] The method to be invoked, typically a string like &#039;ClassName::staticMethod&#039;&lt;br /&gt;
* [&#039;docstring&#039;] A human-readable definition of the method&#039;s purpose.&lt;br /&gt;
* [&#039;signature&#039;] An array identifying the types of the method&#039;s parameters. See the global variables $xmlrpc* for more information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* plugins/xmlrpc/blogger.php&lt;br /&gt;
* plugins/xmlrpc/joomla.php&lt;br /&gt;
* xmlrpc/index.php&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
This is an example system plugin.  Please note that because system plugins are loaded before any other event group, they may also contain any other event.&lt;br /&gt;
&lt;br /&gt;
The following class would be located in the file &amp;lt;code&amp;gt;/plugins/system/example.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&lt;br /&gt;
&lt;br /&gt;
jimport( &#039;joomla.plugin.plugin&#039; );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Example system plugin&lt;br /&gt;
 */&lt;br /&gt;
class plgSystemExample extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * For php4 compatability we must not use the __constructor as a constructor for plugins&lt;br /&gt;
	 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.&lt;br /&gt;
	 * This causes problems with cross-referencing necessary for the observer design pattern.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @access	protected&lt;br /&gt;
	 * @param	object	$subject The object to observe&lt;br /&gt;
	 * @param 	array   $config  An array that holds the plugin configuration&lt;br /&gt;
	 * @since	1.0&lt;br /&gt;
	 */&lt;br /&gt;
	function plgSystemCache( &amp;amp;$subject, $config )&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( $subject, $config );&lt;br /&gt;
&lt;br /&gt;
		// Do some extra initialisation in this constructor if required&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterInitialise &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterInitialise()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterRoute &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterRoute()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterDispatch &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterDispatch()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterRender &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterRender()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following XML document would be located in the file &amp;lt;code&amp;gt;/plugins/system/example.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;system&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;System - Example&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Author&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;Month 2008&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2008 Holder. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;email&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;url&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;An example system plugin&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;example&amp;quot;&amp;gt;example.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;params&amp;gt;&lt;br /&gt;
  		&amp;lt;param name=&amp;quot;example&amp;quot;&lt;br /&gt;
  		type=&amp;quot;text&amp;quot;&lt;br /&gt;
  		default=&amp;quot;&amp;quot;&lt;br /&gt;
  		label=&amp;quot;Example&amp;quot;&lt;br /&gt;
  		description=&amp;quot;An example text parameter&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/params&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Plugin/Events/System&amp;diff=29724</id>
		<title>J1.5:Plugin/Events/System</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Plugin/Events/System&amp;diff=29724"/>
		<updated>2010-08-09T15:08:51Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
===Overview===&lt;br /&gt;
In a standard installation of Joomla! 1.5 we have several predefined events which, when triggered, call functions in the associated plugins.  For more information on plugins, check [Tutorial:Plugins[Tutorial:Plugins]], [Tutorial:Creating_a_Plugin_for_Joomla_1.5[Tutorial:Creating a Plugin for Joomla 1.5]], [[How_to_create_a_content_plugin|How to create a content plugin]] etc.&lt;br /&gt;
&lt;br /&gt;
This topic is aimed at &amp;quot;global&amp;quot; system events, including those triggered on every page load (onAfterInitialise, onAfterRoute, onAfterDispatch, onAfterRender), those supporting search within multiple plugins (onSearch, onSearchArea) and those supporting the presentation of web services (onGetWebServices). Visit [[Tutorial:Plugins|the plugins tutorial]] for a complete list over available core events.&lt;br /&gt;
&lt;br /&gt;
=== onAfterInitialise ===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered after the framework has loaded and the applicaiton initialise method has been called.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Called in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*index.php&lt;br /&gt;
*administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterRoute===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered after the framework has loaded and initialised and the router has route the client request.&lt;br /&gt;
&lt;br /&gt;
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 dispatched.&lt;br /&gt;
&lt;br /&gt;
When this event triggers the router has parsed the route and pushed the request parameters into JRequest for retrieval by the application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterDispatch===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
This event is triggered after the framework has dispatched the application.&lt;br /&gt;
&lt;br /&gt;
Dispatching is the process of pulling the option from the request object and mapping them to a component. If the component do not exist, it handles determining a default component to dispatch.&lt;br /&gt;
&lt;br /&gt;
When this event is triggered the output of the component is available in the document buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterRender===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
This event is triggered after the framework has rendered the application.&lt;br /&gt;
&lt;br /&gt;
Rendering is the process of pushing the document buffers into the template placeholders, retrieving data from the document and pushing it into the into the JResponse buffer.&lt;br /&gt;
&lt;br /&gt;
When this event is triggered the output of the application is available in the response buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onSearch===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered by a variety of search related operations. It is a request for a&lt;br /&gt;
plugin to return the result of a search request. The rows must return the following fields, which are used in a common display routine:&lt;br /&gt;
&lt;br /&gt;
* href&lt;br /&gt;
* title&lt;br /&gt;
* section&lt;br /&gt;
* created&lt;br /&gt;
* text&lt;br /&gt;
* browsernav&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The target search string.&lt;br /&gt;
* A string matching option (exact|any|all).&lt;br /&gt;
* A string ordering option (newest|oldest|popular|alpha|category)&lt;br /&gt;
* An array if restricted to areas, null if search all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Array of stdClass objects with members as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* administrator/components/com_statistics/admin.statistics.php&lt;br /&gt;
* components/com_search/search.php&lt;br /&gt;
* plugins/search/categories.php&lt;br /&gt;
* plugins/search/contacts.php&lt;br /&gt;
* plugins/search/content.php&lt;br /&gt;
* plugins/search/newsfeeds.php&lt;br /&gt;
* plugins/search/sections.php&lt;br /&gt;
* plugins/search/weblinks.php&lt;br /&gt;
* plugins/xmlrpc/joomla.php&lt;br /&gt;
&lt;br /&gt;
===onSearchAreas===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This appears to be a request for plugins to identify which &amp;quot;areas&amp;quot; they provide&lt;br /&gt;
search facilities for.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An associative array of area names, indexed by the area identifier. For example, array( &#039;categories&#039; =&amp;gt; &#039;Categories&#039; ).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* components/com_search/search.php&lt;br /&gt;
* plugins/search/categories.php&lt;br /&gt;
* plugins/search/contacts.php&lt;br /&gt;
* plugins/search/content.php&lt;br /&gt;
* plugins/search/newsfeeds.php&lt;br /&gt;
* plugins/search/sections.php&lt;br /&gt;
* plugins/search/weblinks.php&lt;br /&gt;
&lt;br /&gt;
===onGetWebServices===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is an introspection request for plugins that provide web services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An array of associative arrays. The outer array is indexed by the service method name and&lt;br /&gt;
contains an array with the following elements:&lt;br /&gt;
&lt;br /&gt;
* [&#039;function&#039;] The method to be invoked, typically a string like &#039;ClassName::staticMethod&#039;&lt;br /&gt;
* [&#039;docstring&#039;] A human-readable definition of the method&#039;s purpose.&lt;br /&gt;
* [&#039;signature&#039;] An array identifying the types of the method&#039;s parameters. See the global variables $xmlrpc* for more information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* plugins/xmlrpc/blogger.php&lt;br /&gt;
* plugins/xmlrpc/joomla.php&lt;br /&gt;
* xmlrpc/index.php&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
This is an example system plugin.  Please note that because system plugins are loaded before any other event group, they may also contain any other event.&lt;br /&gt;
&lt;br /&gt;
The following class would be located in the file &amp;lt;code&amp;gt;/plugins/system/example.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&lt;br /&gt;
&lt;br /&gt;
jimport( &#039;joomla.plugin.plugin&#039; );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Example system plugin&lt;br /&gt;
 */&lt;br /&gt;
class plgSystemExample extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * For php4 compatability we must not use the __constructor as a constructor for plugins&lt;br /&gt;
	 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.&lt;br /&gt;
	 * This causes problems with cross-referencing necessary for the observer design pattern.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @access	protected&lt;br /&gt;
	 * @param	object	$subject The object to observe&lt;br /&gt;
	 * @param 	array   $config  An array that holds the plugin configuration&lt;br /&gt;
	 * @since	1.0&lt;br /&gt;
	 */&lt;br /&gt;
	function plgSystemCache( &amp;amp;$subject, $config )&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( $subject, $config );&lt;br /&gt;
&lt;br /&gt;
		// Do some extra initialisation in this constructor if required&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterInitialise &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterInitialise()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterRoute &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterRoute()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterDispatch &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterDispatch()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterRender &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterRender()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following XML document would be located in the file &amp;lt;code&amp;gt;/plugins/system/example.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;system&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;System - Example&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Author&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;Month 2008&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2008 Holder. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;email&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;url&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;An example system plugin&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;example&amp;quot;&amp;gt;example.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;params&amp;gt;&lt;br /&gt;
  		&amp;lt;param name=&amp;quot;example&amp;quot;&lt;br /&gt;
  		type=&amp;quot;text&amp;quot;&lt;br /&gt;
  		default=&amp;quot;&amp;quot;&lt;br /&gt;
  		label=&amp;quot;Example&amp;quot;&lt;br /&gt;
  		description=&amp;quot;An example text parameter&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/params&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Plugin/Events/System&amp;diff=29723</id>
		<title>J1.5:Plugin/Events/System</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Plugin/Events/System&amp;diff=29723"/>
		<updated>2010-08-09T15:05:01Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
===Overview===&lt;br /&gt;
In a standard installation of Joomla! 1.5 we have several predefined events which, when triggered, call functions in the associated plugins.  For more information on plugins, check [[How_to_create_a_content_plugin|How to create a content plugin]].&lt;br /&gt;
&lt;br /&gt;
This topic is aimed at &amp;quot;global&amp;quot; system events, including those triggered on every page load (onAfterInitialise, onAfterRoute, onAfterDispatch, onAfterRender), those supporting search within multiple plugins (onSearch, onSearchArea) and those supporting the presentation of web services (onGetWebServices). Visit [[Tutorial:Plugins|the plugins tutorial]] for a complete list over available core events.&lt;br /&gt;
&lt;br /&gt;
=== onAfterInitialise ===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered after the framework has loaded and the applicaiton initialise method has been called.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Called in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*index.php&lt;br /&gt;
*administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterRoute===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered after the framework has loaded and initialised and the router has route the client request.&lt;br /&gt;
&lt;br /&gt;
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 dispatched.&lt;br /&gt;
&lt;br /&gt;
When this event triggers the router has parsed the route and pushed the request parameters into JRequest for retrieval by the application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterDispatch===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
This event is triggered after the framework has dispatched the application.&lt;br /&gt;
&lt;br /&gt;
Dispatching is the process of pulling the option from the request object and mapping them to a component. If the component do not exist, it handles determining a default component to dispatch.&lt;br /&gt;
&lt;br /&gt;
When this event is triggered the output of the component is available in the document buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onAfterRender===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
This event is triggered after the framework has rendered the application.&lt;br /&gt;
&lt;br /&gt;
Rendering is the process of pushing the document buffers into the template placeholders, retrieving data from the document and pushing it into the into the JResponse buffer.&lt;br /&gt;
&lt;br /&gt;
When this event is triggered the output of the application is available in the response buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* index.php&lt;br /&gt;
* administrator/index.php&lt;br /&gt;
&lt;br /&gt;
===onSearch===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This event is triggered by a variety of search related operations. It is a request for a&lt;br /&gt;
plugin to return the result of a search request. The rows must return the following fields, which are used in a common display routine:&lt;br /&gt;
&lt;br /&gt;
* href&lt;br /&gt;
* title&lt;br /&gt;
* section&lt;br /&gt;
* created&lt;br /&gt;
* text&lt;br /&gt;
* browsernav&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The target search string.&lt;br /&gt;
* A string matching option (exact|any|all).&lt;br /&gt;
* A string ordering option (newest|oldest|popular|alpha|category)&lt;br /&gt;
* An array if restricted to areas, null if search all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Array of stdClass objects with members as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* administrator/components/com_statistics/admin.statistics.php&lt;br /&gt;
* components/com_search/search.php&lt;br /&gt;
* plugins/search/categories.php&lt;br /&gt;
* plugins/search/contacts.php&lt;br /&gt;
* plugins/search/content.php&lt;br /&gt;
* plugins/search/newsfeeds.php&lt;br /&gt;
* plugins/search/sections.php&lt;br /&gt;
* plugins/search/weblinks.php&lt;br /&gt;
* plugins/xmlrpc/joomla.php&lt;br /&gt;
&lt;br /&gt;
===onSearchAreas===&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This appears to be a request for plugins to identify which &amp;quot;areas&amp;quot; they provide&lt;br /&gt;
search facilities for.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An associative array of area names, indexed by the area identifier. For example, array( &#039;categories&#039; =&amp;gt; &#039;Categories&#039; ).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* components/com_search/search.php&lt;br /&gt;
* plugins/search/categories.php&lt;br /&gt;
* plugins/search/contacts.php&lt;br /&gt;
* plugins/search/content.php&lt;br /&gt;
* plugins/search/newsfeeds.php&lt;br /&gt;
* plugins/search/sections.php&lt;br /&gt;
* plugins/search/weblinks.php&lt;br /&gt;
&lt;br /&gt;
===onGetWebServices===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is an introspection request for plugins that provide web services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return Value&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An array of associative arrays. The outer array is indexed by the service method name and&lt;br /&gt;
contains an array with the following elements:&lt;br /&gt;
&lt;br /&gt;
* [&#039;function&#039;] The method to be invoked, typically a string like &#039;ClassName::staticMethod&#039;&lt;br /&gt;
* [&#039;docstring&#039;] A human-readable definition of the method&#039;s purpose.&lt;br /&gt;
* [&#039;signature&#039;] An array identifying the types of the method&#039;s parameters. See the global variables $xmlrpc* for more information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Used in files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* plugins/xmlrpc/blogger.php&lt;br /&gt;
* plugins/xmlrpc/joomla.php&lt;br /&gt;
* xmlrpc/index.php&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
This is an example system plugin.  Please note that because system plugins are loaded before any other event group, they may also contain any other event.&lt;br /&gt;
&lt;br /&gt;
The following class would be located in the file &amp;lt;code&amp;gt;/plugins/system/example.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&lt;br /&gt;
&lt;br /&gt;
jimport( &#039;joomla.plugin.plugin&#039; );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Example system plugin&lt;br /&gt;
 */&lt;br /&gt;
class plgSystemExample extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * For php4 compatability we must not use the __constructor as a constructor for plugins&lt;br /&gt;
	 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.&lt;br /&gt;
	 * This causes problems with cross-referencing necessary for the observer design pattern.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @access	protected&lt;br /&gt;
	 * @param	object	$subject The object to observe&lt;br /&gt;
	 * @param 	array   $config  An array that holds the plugin configuration&lt;br /&gt;
	 * @since	1.0&lt;br /&gt;
	 */&lt;br /&gt;
	function plgSystemCache( &amp;amp;$subject, $config )&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( $subject, $config );&lt;br /&gt;
&lt;br /&gt;
		// Do some extra initialisation in this constructor if required&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterInitialise &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterInitialise()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterRoute &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterRoute()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterDispatch &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterDispatch()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Do something onAfterRender &lt;br /&gt;
	 */&lt;br /&gt;
	function onAfterRender()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following XML document would be located in the file &amp;lt;code&amp;gt;/plugins/system/example.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;system&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;System - Example&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Author&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;Month 2008&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2008 Holder. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;email&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;url&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;1.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;An example system plugin&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;example&amp;quot;&amp;gt;example.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;params&amp;gt;&lt;br /&gt;
  		&amp;lt;param name=&amp;quot;example&amp;quot;&lt;br /&gt;
  		type=&amp;quot;text&amp;quot;&lt;br /&gt;
  		default=&amp;quot;&amp;quot;&lt;br /&gt;
  		label=&amp;quot;Example&amp;quot;&lt;br /&gt;
  		description=&amp;quot;An example text parameter&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/params&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16056</id>
		<title>Display error messages and notices</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16056"/>
		<updated>2009-10-24T19:57:46Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Errors, warnings and notices can be displayed from any component, module, plugin or template using the method outlined below (took me some time to figure this out, might help someone else): &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get a handle to the Joomla!-application object&lt;br /&gt;
$app =&amp;amp; JFactory::getApplication(); &lt;br /&gt;
//add a message to the message queue&lt;br /&gt;
$app-&amp;gt;enqueueMessage(JText::_(&#039;Random error occured&#039;), &#039;error&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second argument to the enqueueMessage()-function is the type of message. Default is &#039;message&#039;, but &#039;error&#039; gives a different style message. Try other types as well, to see how that works. The api for the JApplication-object can be found at: &lt;br /&gt;
[http://api.joomla.org/Joomla-Framework/Application/JApplication.html JApplication API]&lt;br /&gt;
The error message will now be displayed if the message-tag is present in your template. The message-field is added with the following statement in your template: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;message&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16055</id>
		<title>Display error messages and notices</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16055"/>
		<updated>2009-10-24T19:51:29Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Errors, warnings and notices can be displayed from any component, module, plugin or template using the method outlined below (took me some time to figure this out, might help someone else): &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get a handle to the Joomla!-application object&lt;br /&gt;
$app =&amp;amp; JFactory::getApplication(); &lt;br /&gt;
//add a message to the message queue&lt;br /&gt;
$app-&amp;gt;enqueueMessage(JText::_(&#039;Random error occured&#039;), &#039;error&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second argument to the enqueueMessage()-function is the type of message. Default is &#039;message&#039;, but both error, and I believe also &#039;warning&#039; will work. The api for the JApplication-object can be found at: &lt;br /&gt;
[http://api.joomla.org/Joomla-Framework/Application/JApplication.html JApplication API]&lt;br /&gt;
The error message will now be displayed if the message-tag is present in your template. The message-field is added with the following statement in your template: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;message&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16054</id>
		<title>Display error messages and notices</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16054"/>
		<updated>2009-10-24T19:49:59Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Errors, warnings and notices can be displayed from any component, module, plugin or template using the method outlined below (took me some time to figure this out, might help someone else): &lt;br /&gt;
&lt;br /&gt;
//Get a handle to the Joomla!-application object&lt;br /&gt;
$app =&amp;amp; JFactory::getApplication(); &lt;br /&gt;
//add a message to the message queue&lt;br /&gt;
$app-&amp;gt;enqueueMessage(JText::_(&#039;Random error occured&#039;), &#039;error&#039;);&lt;br /&gt;
&lt;br /&gt;
The second argument to the enqueueMessage()-function is the type of message. Default is &#039;message&#039;, but both error, and I believe also &#039;warning&#039; will work. The api for the JApplication-object can be found at: &lt;br /&gt;
[[http://api.joomla.org/Joomla-Framework/Application/JApplication.html JApplication API]]&lt;br /&gt;
The error message will now be displayed if the message-tag is present in your template. The message-field is added with the following statement in your template: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;message&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16053</id>
		<title>Display error messages and notices</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Display_error_messages_and_notices&amp;diff=16053"/>
		<updated>2009-10-24T19:49:30Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: New page: Errors, warnings and notices can be displayed from any component, module, plugin or template using the method outlined below (took me some time to figure this out, might help someone else)...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Errors, warnings and notices can be displayed from any component, module, plugin or template using the method outlined below (took me some time to figure this out, might help someone else): &lt;br /&gt;
&lt;br /&gt;
//Get a handle to the Joomla!-application object&lt;br /&gt;
$app =&amp;amp; JFactory::getApplication(); &lt;br /&gt;
//add a message to the message queue&lt;br /&gt;
$app-&amp;gt;enqueueMessage(JText::_(&#039;Random error occured&#039;), &#039;error&#039;);&lt;br /&gt;
&lt;br /&gt;
The second argument to the enqueueMessage()-function is the type of message. Default is &#039;message&#039;, but both error, and I believe also &#039;warning&#039; will work. The api for the JApplication-object can be found at: &lt;br /&gt;
[[http://api.joomla.org/Joomla-Framework/Application/JApplication.html]]&lt;br /&gt;
The error message will now be displayed if the message-tag is present in your template. The message-field is added with the following statement in your template: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;message&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers&amp;diff=16051</id>
		<title>Portal:Developers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers&amp;diff=16051"/>
		<updated>2009-10-24T19:36:57Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Developer profile}}&lt;br /&gt;
&lt;br /&gt;
A complete contents list of all pages of interest to developers can be found in the [[:Category:Development|development category]].&lt;br /&gt;
&lt;br /&gt;
== Reference Material ==&lt;br /&gt;
&lt;br /&gt;
* [[Framework|Joomla Framework]].&lt;br /&gt;
* [http://api.joomla.org API documentation] automatically generated using phpDocumentor.&lt;br /&gt;
&lt;br /&gt;
== Articles and Tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[Setting up your workstation for Joomla! development]].  A step-by-step guide to installing the Eclipse IDE on your local workstation for Joomla! development.&lt;br /&gt;
* [[Setting up your workstation for extension development]] A guide to Joomla Extension development&lt;br /&gt;
* [http://community.joomla.org/blogs/community/828-webinar-using-eclipse-for-joomla-development.html Using Eclipse for Joomla! Development] Video webinar demonstrating overview of Eclipse features for Joomla! development&lt;br /&gt;
* [[Do not use die to debug]]&lt;br /&gt;
* [[How to debug your code]]&lt;br /&gt;
* [[Tutorial:Adapting Joomla 1.0 extensions to Joomla 1.5]]&lt;br /&gt;
* [[Version 1.6 Developer Notes]]&lt;br /&gt;
* [[Tutorial:Joomla Beginning Developer Course]]&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* Developing a Model-View-Controller (MVC) Component&lt;br /&gt;
** [[Developing a Model-View-Controller Component - Part 1]]&lt;br /&gt;
** [[Developing a Model-View-Controller Component - Part 2 - Adding a Model]]&lt;br /&gt;
** [[Developing a Model-View-Controller Component - Part 3 - Using the Database]]&lt;br /&gt;
** [[Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface]]&lt;br /&gt;
** [[Developing a Model-View-Controller Component - Part 5 - Basic Backend Framework]]&lt;br /&gt;
** [[Developing a Model-View-Controller Component - Part 6 - Adding Backend Actions]]&lt;br /&gt;
* [[File Structure and Naming Conventions]]&lt;br /&gt;
* [[Component parameters]]&lt;br /&gt;
* [[Components:xml installfile]].  An example component XML installation file.&lt;br /&gt;
* [[How to use the JPane classes in a component]]&lt;br /&gt;
* [[How to use the editor in a component]]&lt;br /&gt;
* [[Supporting plugins in your component]]&lt;br /&gt;
* [[Tutorial:Adding Javascript moo.fx to your component WIP]]&lt;br /&gt;
* [[Creating a toolbar for your component]]&lt;br /&gt;
* [[Adding view layout configuration parameters]]&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
* [[Using JPagination in your component]]&lt;br /&gt;
* [[Adding sortable columns to a table in a component]]&lt;br /&gt;
* [[Using multiple models in an MVC component]]&lt;br /&gt;
* [[Ajax using MooTools]]&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
* [[Tutorial:Creating a Hello World Module for Joomla_1.5]]&lt;br /&gt;
* [[How to create a module]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
* [[Plugin Developer Overview]]&lt;br /&gt;
* [[Tutorial:Plugins]]&lt;br /&gt;
* [http://developer.joomla.org/tutorials/184-how-to-create-a-joomla-plugin.html How to create a Joomla! Plugin]&lt;br /&gt;
* [[How to create a content plugin]]&lt;br /&gt;
* [[How to create a search plugin]]&lt;br /&gt;
* [[Supporting plugins in your component]]&lt;br /&gt;
* [[Tutorial:Creating an Authentication Plugin for Joomla 1.5]]&lt;br /&gt;
* [[Tutorial:Using plugins in your own extension]]&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
* [[Understanding Output Overrides]]&lt;br /&gt;
* [http://developer.joomla.org/tutorials/165-understanding-output-overrides-in-joomla.html Understanding Output Overrides in Joomla! 1.5]&lt;br /&gt;
* [[Creating custom template parameter types]]&lt;br /&gt;
* [[How are templates executed?]]&lt;br /&gt;
* [[How to determine if the user is viewing the front page]]&lt;br /&gt;
* [[Tutorial:Template parameters]]&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
* [[Standard parameter types]]&lt;br /&gt;
* [[Custom parameter types]]&lt;br /&gt;
* [[Component parameters]]&lt;br /&gt;
* [[Creating custom template parameter types]]&lt;br /&gt;
See also: [[:Category:Parameters]]&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
* [[How to add CSRF anti-spoofing to forms]]&lt;br /&gt;
* [http://developer.joomla.org/tutorials/181-preventing-sql-injections.html Preventing SQL Injections]&lt;br /&gt;
* [[Tutorial:How_to_make_your_Joomla_addon_more_secure_WIP]]&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
* [[How to use the database classes in your script]]&lt;br /&gt;
* [[How to use the JTable class]]&lt;br /&gt;
* [[How to connect to an external database]]&lt;br /&gt;
&lt;br /&gt;
=== Localisation ===&lt;br /&gt;
* [http://community.joomla.org/magazine/article/508-developer-localization-advancements-in-joomla-15.html Localization Advancements in Joomla! 1.5]&lt;br /&gt;
* [[Adding multi-language support]]&lt;br /&gt;
* [[Adding Joomfish functionality to custom components]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[How to use the filesystem package]]&lt;br /&gt;
* [[How to use the editor in a component]]&lt;br /&gt;
* [[Adding AJAX to your component]].&lt;br /&gt;
* [[How to send email from components]]&lt;br /&gt;
* [[How to use the JToolBar class in the frontend]]&lt;br /&gt;
* [[Routing]]&lt;br /&gt;
* [[Joomla Routes and SEF]]&lt;br /&gt;
* [[API Execution Order]]&lt;br /&gt;
* [[Accessing the current user object]]&lt;br /&gt;
* [[Adding JavaScript and CSS to the page]]&lt;br /&gt;
* [[Constants]] used in the Joomla [[Framework]].&lt;br /&gt;
* [[Form validation]]&lt;br /&gt;
* [[How to create a custom button]]&lt;br /&gt;
* [[How to create a stand-alone application using the Joomla! Framework]]&lt;br /&gt;
* [[How to use user state variables]]&lt;br /&gt;
* [[Adding template overridable images in your extension]]&lt;br /&gt;
* [[Retrieving data from GET and POST requests]]&lt;br /&gt;
* [[Using caching to speed up your code]]&lt;br /&gt;
* [[Using a custom image in the menu bar title]]&lt;br /&gt;
* [[Using the installer API to support package installation]]&lt;br /&gt;
* [[Tutorial:How to add tooltips to your Joomla! website]]&lt;br /&gt;
* [[Xml-rpc|XML-RPC]]&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[Creating a file uploader in your component]].&lt;br /&gt;
* [[Display error messages and notices]].&lt;br /&gt;
&lt;br /&gt;
== Contributing to Joomla Development ==&lt;br /&gt;
The development of Joomla itself is carried out by the [[Development Working Group]] and third party developers.&lt;br /&gt;
&lt;br /&gt;
* [[Participating in the community]]: a brief description of how people can get involved.&lt;br /&gt;
* [[Developer Email lists]]: a list of email lists for developers, including third party developers.&lt;br /&gt;
* [[Coding style and standards]] (To be reviewed).&lt;br /&gt;
* [[Setting up your workstation for Joomla! development]].  A step-by-step guide to installing the Eclipse IDE on your local workstation for Joomla! development.&lt;br /&gt;
* [http://docs.joomla.org/Setting_up_your_workstation_for_Joomla!_development_--_Part_2#Check_Out_Joomla.21_Source_Code How to check out SVN Code]&lt;br /&gt;
* [[Patch submission guidelines]].&lt;br /&gt;
* [[Filing bugs and issues]].&lt;br /&gt;
* [[How to release a distribution tarball]].&lt;br /&gt;
&lt;br /&gt;
== Contributing to Joomla Developer Documentation ==&lt;br /&gt;
The development of Joomla developer documentation is carried out primarily by the [[Documentation Working Group]].  There are currently two sub-projects of interest to developers:&lt;br /&gt;
* [[Joomla! 1.5 Template Tutorials Project]]&lt;br /&gt;
* [[API Reference Project]]&lt;br /&gt;
&lt;br /&gt;
When creating a new page, ensure you place the following marker at the bottom of the page so it is included in the category list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you locate other articles you think are relevant to developers, please add this marker to those pages.&lt;br /&gt;
&lt;br /&gt;
=== Suggested topics ===&lt;br /&gt;
This is a short list of articles that might be written to support developers.  Please feel free to add further topic ideas.&lt;br /&gt;
&lt;br /&gt;
* [[Adding configuration objects to modules and plugins]].&lt;br /&gt;
* [[Storing data in the session between page loads]].&lt;br /&gt;
* [[Suppressing output of extra HTML]].&lt;br /&gt;
* [[How to use the filter package]].&lt;br /&gt;
*: Describe how and when to use the Filter package and explain what needs to be filtered for various situations (for queries, for URLs, etc)&lt;br /&gt;
* [[How to use the registry package]]&lt;br /&gt;
* [[How to use JSimpleXML]].&lt;br /&gt;
*: How to load and store XML files and how to work with them&lt;br /&gt;
* [[How to create component feeds]] (RSS/ATOM)&lt;br /&gt;
* [[How to create PDF views]]&lt;br /&gt;
* [[How to generate paths for client side and server side]]&lt;br /&gt;
* [[How to access information from the request]]&lt;br /&gt;
*: This focuses on using the JBrowser class to retrieve information about the features available in the user&#039;s browser.&lt;br /&gt;
* [[How to create an editor plugin]]&lt;br /&gt;
* [[What can be done with a user plugin]]&lt;br /&gt;
* [[How to work with parameters]]&lt;br /&gt;
* [[How to cloak email addresses]]&lt;br /&gt;
* [[Using the caching system in your component]].&lt;br /&gt;
&lt;br /&gt;
==Joomla Security Guide==&lt;br /&gt;
Developers should also be aware of security issues.&lt;br /&gt;
{{Security Guide}}&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Finding_and_installing_extensions&amp;diff=12257</id>
		<title>J1.5 talk:Finding and installing extensions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Finding_and_installing_extensions&amp;diff=12257"/>
		<updated>2008-12-18T14:40:11Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I see that in Joomla 1.5 the function where you could see if the nessesary directories where writable, is removed. I always get into trouble when trying to install components/modules/plugins because of permission problems. In addition the errors from Joomla seem pretty random depending on where there is a permission problem. The current information in this guide is quite poor (see [[Installing_an_extension#Installation]] ) Could someone here please say which directories commonly need to be writable for a successful installation? this would certainly be very helpful...&lt;br /&gt;
&lt;br /&gt;
Jonas:))&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Finding_and_installing_extensions&amp;diff=12256</id>
		<title>J1.5 talk:Finding and installing extensions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Finding_and_installing_extensions&amp;diff=12256"/>
		<updated>2008-12-18T14:37:01Z</updated>

		<summary type="html">&lt;p&gt;Jonasfh: Regarding permissions problems when installing modules etc...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I see that in Joomla 1.5 the function where you could see if the nessesary directories where writable, is removed. I always get into trouble when trying to install components/modules/plugins because of permission problems. In addition the errors from Joomla seem pretty random depending on where there is a permission problem. Could someone here please say which directories commonly need to be writable for a successful installation? this would certainly be very helpful...&lt;br /&gt;
&lt;br /&gt;
Jonas:))&lt;/div&gt;</summary>
		<author><name>Jonasfh</name></author>
	</entry>
</feed>