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

<?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.