Source

joomla-platform / libraries / joomla / installer / extension.php

Full commit
<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Installer
 *
 * @copyright   Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * Extension object
 *
 * @package		Joomla.Platform
 * @subpackage	Installer
 * @since		11.1
 */
class JExtension extends JObject
{
	/** 
	 * @var string $filename Filename of the extension 
	 */
	var $filename = '';
	/** 
	 * @var string $type Type of the extension 
	 */
	var $type = '';
	/** 
	 * @var string $id Unique Identifier for the extension 
	 * */
	var $id = '';
	/**
	 *  @var boolean $published The status of the extension 
	 *  */
	var $published = false; 
	/** 
	 * @var string $client String representation of client. Valid for modules, templates and languages.
	 * 					set by default to site
	 */
	var $client = 'site';
	/** 
	 * @var string $group The group name of the plugin. Not used for other known extension types (only plugins) 
	 */
	var $group =  ''; 
	/**
	 *  @var Object $manifest_cache An object representation of the manifest file
	 *  							Stored metadata 
	 */
	var $manifest_cache = null; 
	/** 
	 * @var Object $params An object representation of the extension params 
	 */
	var $params = null;	

	/**
	 * Constructor
	 * @param JXMLElement $element a JXMLElement from which to load data from
	 */
	function __construct(JXMLElement $element = null)
	{
		if ($element && is_a($element, 'JXMLElement'))
		{
			$this->type = (string)$element->attributes()->type;
			$this->id = (string)$element->attributes()->id;

			switch($this->type)
			{
				case 'component':
					// By default a component doesn't have anything
					break;

				case 'module':
				case 'template':
				case 'language':
					$this->client = (string)$element->attributes()->client;
					$tmp_client_id = JApplicationHelper::getClientInfo($this->client, 1);
					if($tmp_client_id == null) {
						JError::raiseWarning(100, JText::_('JLIB_INSTALLER_ERROR_EXTENSION_INVALID_CLIENT_IDENTIFIER'));
					} else {
						$this->client_id = $tmp_client_id->id;
					}
					break;

				case 'plugin':
					$this->group = (string)$element->attributes()->group;
					break;

				default:
					// Catch all
					// Get and set client and group if we don't recognise the extension
					if ($client = (string)$element->attributes()->client)
					{
						$this->client_id = JApplicationHelper::getClientInfo($this->client, 1);
						$this->client_id = $this->client_id->id;
					}
					if ($group = (string)$element->attributes()->group) {
						$this->group = (string)$element->attributes()->group;
					}
					break;
			}
			$this->filename = (string)$element;
		}
	}
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.