The extensions table is designed to hold all extensions installed into Joomla!. The extensions table also functions as the primary storage of information for plugins as of 1.6 as well as the library and package extensions added in to the 1.6 release. Additionally, modules now uses the table to gather its information for installation or uninstallation. The aim of the extensions table is to reduce the need to create a new table for each extension instead thus allowing specific tables to be created that store information that is unique to that extension instead of information that should be shared. This table is closely modelled off the plugins table with some slight additions and replaces the plugins table in the Joomla! 1.6 release.
|extension_id||int(11)||PRI||NULL||auto_increment||Unique extension ID|
|name||varchar(100)||Friendly name of the extension|
|type||varchar(20)||The extension type|
|element||varchar(100)||The unique name of the element|
|folder||varchar(100)||The folder of the element|
|client_id||tinyint(3)||0||The client ID of the extension|
|enabled||tinyint(3)||1||The enabled status of the extension|
|access||tinyint(3) unsigned||0||Primitive access control|
|manifest_cache||text||Cache of the XML manifest file|
|params||text||Parameters for the extensions|
|data||text||Unused excess data field|
|checked_out||int(10) unsigned||0||Checked Out (FKEY users.id)|
|checked_out_time||datetime||0000-00-00 00:00:00||Checked Out Time|
|state||int(11)||0||Extension State (discovered, installed, etc)|
Not all fields are used for all extension types. For example, plugins use the folder whilst most other extensions do not. Client ID is used by modules, templates and languages to specify which application (client) they should run in (e.g. administrator or site). The extensions table can be used to set defaults for extensions where there may exist instances of the extension (e.g. modules), however in 1.6 this does not occur. The table also features the standard checked out fields to support extension locking which is utilised by plugins. The protected field controls if an extension can be uninstalled through the administrator interface and the access is analagous to the access control field used in many other tables (typically public, registered or special). Again, extensions may wish to use this table as either the primary table (plugins) or as a 'defaults' table or 'global' table to control the behaviour of all instances of an extension.