joomla-platform / libraries / joomla / plugin / plugin.php

<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Plugin
 *
 * @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;

jimport('joomla.event.event');

/**
 * JPlugin Class
 *
 * @abstract
 * @package     Joomla.Platform
 * @subpackage  Plugin
 * @since       11.1
 */
abstract class JPlugin extends JEvent
{
    /**
     * A JRegistry object holding the parameters for the plugin
     *
     * @var     A JRegistry object
     * @since   11.1
     */
    public $params = null;

    /**
     * The name of the plugin
     *
     * @var     sring
     */
    protected $_name = null;

    /**
     * The plugin type
     *
     * @var     string
     */
    protected $_type = null;

    /**
     * Constructor
     *
     * @param object $subject The object to observe
     * @param array  $config  An optional associative array of configuration settings.
     * Recognized key values include 'name', 'group', 'params', 'language'
     * (this list is not meant to be comprehensive).
     * @since   11.1
     */
    public function __construct(&$subject, $config = array())
    {
        // Get the parameters.
        if (isset($config['params']))
        {
            if ($config['params'] instanceof JRegistry) {
                $this->params = $config['params'];
            } else {
                $this->params = new JRegistry;
                $this->params->loadJSON($config['params']);
            }
        }

        // Get the plugin name.
        if (isset($config['name'])) {
            $this->_name = $config['name'];
        }

        // Get the plugin type.
        if (isset($config['type'])) {
            $this->_type = $config['type'];
        }

        parent::__construct($subject);
    }

    /**
     * Loads the plugin language file
     *
     * @param   string  $extension  The extension for which a language file should be loaded
     * @param   string  $basePath   The basepath to use
     * 
     * @return  boolean True, if the file has successfully loaded.
     * @since   11.1
     */
    public function loadLanguage($extension = '', $basePath = JPATH_ADMINISTRATOR)
    {
        if (empty($extension)) {
            $extension = 'plg_'.$this->_type.'_'.$this->_name;
        }

        $lang = JFactory::getLanguage();
        return
            $lang->load(strtolower($extension), $basePath, null, false, false)
        ||  $lang->load(strtolower($extension), JPATH_PLUGINS .DS.$this->_type.DS.$this->_name, null, false, false)
        ||  $lang->load(strtolower($extension), $basePath, $lang->getDefault(), false, false)
        ||  $lang->load(strtolower($extension), JPATH_PLUGINS .DS.$this->_type.DS.$this->_name, $lang->getDefault(), false, false);
    }
}
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.