Source for file helper.php
Documentation is available at helper.php
* @package Joomla.Libraries
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* @package Joomla.Libraries
* A persistent cache of the loaded plugins.
protected static $plugins =
null;
* Get the path to a layout from a Plugin
* @param string $type Plugin type
* @param string $name Plugin name
* @param string $layout Layout name
* @return string Layout path
public static function getLayoutPath($type, $name, $layout =
'default')
$defaultLayout =
$layout;
if (strpos($layout, ':') !==
false)
// Get the template and file name from the string
$template =
($temp[0] ==
'_') ?
$template :
$temp[0];
$defaultLayout =
($temp[1]) ?
$temp[1] :
'default';
// Build the template and base path for the layout
$tPath =
JPATH_THEMES .
'/' .
$template .
'/html/plg_' .
$type .
'_' .
$name .
'/' .
$layout .
'.php';
$bPath =
JPATH_BASE .
'/plugins/' .
$type .
'/' .
$name .
'/tmpl/' .
$defaultLayout .
'.php';
$dPath =
JPATH_BASE .
'/plugins/' .
$type .
'/' .
$name .
'/tmpl/default.php';
// If the template has a layout override use it
* Get the plugin data of a specific type if no specific plugin is specified
* otherwise only the specific plugin data is returned.
* @param string $type The plugin type, relates to the sub-directory in the plugins directory.
* @param string $plugin The plugin name.
* @return mixed An array of plugin data objects, or a plugin data object.
public static function getPlugin($type, $plugin =
null)
$plugins =
static::load();
// Find the correct plugin(s) to return.
// Is this the right plugin?
// Is this plugin in the right group?
if ($p->type ==
$type &&
$p->name ==
$plugin)
* Checks if a plugin is enabled.
* @param string $type The plugin type, relates to the sub-directory in the plugins directory.
* @param string $plugin The plugin name.
public static function isEnabled($type, $plugin =
null)
$result =
static::getPlugin($type, $plugin);
return (!empty($result));
* Loads all the plugin files for a particular type if no specific plugin is specified
* otherwise only the specific plugin is loaded.
* @param string $type The plugin type, relates to the sub-directory in the plugins directory.
* @param string $plugin The plugin name.
* @param boolean $autocreate Autocreate the plugin.
* @param JEventDispatcher $dispatcher Optionally allows the plugin to use a different dispatcher.
* @return boolean True on success.
public static function importPlugin($type, $plugin =
null, $autocreate =
true, JEventDispatcher $dispatcher =
null)
static $loaded =
array();
// Check for the default args, if so we can optimise cheaply
if (is_null($plugin) &&
$autocreate ==
true &&
is_null($dispatcher))
if (!isset
($loaded[$type]) ||
!$defaults)
// Load the plugins from the database.
$plugins =
static::load();
// Get the specified plugin(s).
for ($i =
0, $t =
count($plugins); $i <
$t; $i++
)
if ($plugins[$i]->type ==
$type &&
($plugin ===
null ||
$plugins[$i]->name ==
$plugin))
static::import($plugins[$i], $autocreate, $dispatcher);
// Bail out early if we're not using default args
$loaded[$type] =
$results;
* @param object $plugin The plugin.
* @param boolean $autocreate True to autocreate.
* @param JEventDispatcher $dispatcher Optionally allows the plugin to use a different dispatcher.
* @deprecated 4.0 Use JPluginHelper::import() instead
protected static function _import($plugin, $autocreate =
true, JEventDispatcher $dispatcher =
null)
static::import($plugin, $autocreate, $dispatcher);
* @param object $plugin The plugin.
* @param boolean $autocreate True to autocreate.
* @param JEventDispatcher $dispatcher Optionally allows the plugin to use a different dispatcher.
protected static function import($plugin, $autocreate =
true, JEventDispatcher $dispatcher =
null)
$plugin->type =
preg_replace('/[^A-Z0-9_\.-]/i', '', $plugin->type);
$plugin->name =
preg_replace('/[^A-Z0-9_\.-]/i', '', $plugin->name);
$path =
JPATH_PLUGINS .
'/' .
$plugin->type .
'/' .
$plugin->name .
'/' .
$plugin->name .
'.php';
if (!isset
($paths[$path]))
if (!isset
($paths[$path]))
// Makes sure we have an event dispatcher
$className =
'Plg' .
$plugin->type .
$plugin->name;
// Load the plugin from the database.
if (!isset
($plugin->params))
// Seems like this could just go bye bye completely
$plugin =
static::getPlugin($plugin->type, $plugin->name);
// Instantiate and register the plugin.
new $className($dispatcher, (array)
($plugin));
* Loads the published plugins.
* @return array An array of published plugins
* @deprecated 4.0 Use JPluginHelper::load() instead
protected static function _load()
* Loads the published plugins.
* @return array An array of published plugins
protected static function load()
if (static::$plugins !==
null)
$levels =
implode(',', $user->getAuthorisedViewLevels());
if (!static::$plugins =
$cache->get($levels))
$query =
$db->getQuery(true)
->select('folder AS type, element AS name, params')
->where('type =' .
$db->quote('plugin'))
->where('access IN (' .
$levels .
')')
static::$plugins =
$db->setQuery($query)->loadObjectList();
$cache->store(static::$plugins, $levels);
Documentation generated on Tue, 19 Nov 2013 15:04:32 +0100 by phpDocumentor 1.4.3