Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/Plugin.tar
Назад
PluginHelper.php 0000604 00000021300 15245603130 0007642 0 ustar 00 <?php /** * Joomla! Content Management System * * @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\CMS\Plugin; defined('JPATH_PLATFORM') or die; /** * Plugin helper class * * @since 1.5 */ abstract class PluginHelper { /** * A persistent cache of the loaded plugins. * * @var array * @since 1.7 */ 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 * * @since 3.0 */ public static function getLayoutPath($type, $name, $layout = 'default') { $template = \JFactory::getApplication()->getTemplate(); $defaultLayout = $layout; if (strpos($layout, ':') !== false) { // Get the template and file name from the string $temp = explode(':', $layout); $template = $temp[0] === '_' ? $template : $temp[0]; $layout = $temp[1]; $defaultLayout = $temp[1] ?: 'default'; } // Build the template and base path for the layout $tPath = JPATH_THEMES . '/' . $template . '/html/plg_' . $type . '_' . $name . '/' . $layout . '.php'; $bPath = JPATH_PLUGINS . '/' . $type . '/' . $name . '/tmpl/' . $defaultLayout . '.php'; $dPath = JPATH_PLUGINS . '/' . $type . '/' . $name . '/tmpl/default.php'; // If the template has a layout override use it if (file_exists($tPath)) { return $tPath; } elseif (file_exists($bPath)) { return $bPath; } else { return $dPath; } } /** * 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 subdirectory in the plugins directory. * @param string $plugin The plugin name. * * @return mixed An array of plugin data objects, or a plugin data object. * * @since 1.5 */ public static function getPlugin($type, $plugin = null) { $result = array(); $plugins = static::load(); // Find the correct plugin(s) to return. if (!$plugin) { foreach ($plugins as $p) { // Is this the right plugin? if ($p->type === $type) { $result[] = $p; } } } else { foreach ($plugins as $p) { // Is this plugin in the right group? if ($p->type === $type && $p->name === $plugin) { $result = $p; break; } } } return $result; } /** * Checks if a plugin is enabled. * * @param string $type The plugin type, relates to the subdirectory in the plugins directory. * @param string $plugin The plugin name. * * @return boolean * * @since 1.5 */ 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 subdirectory 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. * * @since 1.5 */ 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 $defaults = false; if ($plugin === null && $autocreate === true && $dispatcher === null) { $defaults = true; } // Ensure we have a dispatcher now so we can correctly track the loaded plugins $dispatcher = $dispatcher ?: \JEventDispatcher::getInstance(); // Get the dispatcher's hash to allow plugins to be registered to unique dispatchers $dispatcherHash = spl_object_hash($dispatcher); if (!isset($loaded[$dispatcherHash])) { $loaded[$dispatcherHash] = array(); } if (!$defaults || !isset($loaded[$dispatcherHash][$type])) { $results = null; // 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); $results = true; } } // Bail out early if we're not using default args if (!$defaults) { return $results; } $loaded[$dispatcherHash][$type] = $results; } return $loaded[$dispatcherHash][$type]; } /** * Loads the plugin file. * * @param object $plugin The plugin. * @param boolean $autocreate True to autocreate. * @param \JEventDispatcher $dispatcher Optionally allows the plugin to use a different dispatcher. * * @return void * * @since 1.5 * @deprecated 4.0 Use PluginHelper::import() instead */ protected static function _import($plugin, $autocreate = true, \JEventDispatcher $dispatcher = null) { static::import($plugin, $autocreate, $dispatcher); } /** * Loads the plugin file. * * @param object $plugin The plugin. * @param boolean $autocreate True to autocreate. * @param \JEventDispatcher $dispatcher Optionally allows the plugin to use a different dispatcher. * * @return void * * @since 3.2 */ protected static function import($plugin, $autocreate = true, \JEventDispatcher $dispatcher = null) { static $paths = array(); // Ensure we have a dispatcher now so we can correctly track the loaded paths $dispatcher = $dispatcher ?: \JEventDispatcher::getInstance(); // Get the dispatcher's hash to allow paths to be tracked against unique dispatchers $dispatcherHash = spl_object_hash($dispatcher); if (!isset($paths[$dispatcherHash])) { $paths[$dispatcherHash] = array(); } $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[$dispatcherHash][$path])) { if (file_exists($path)) { require_once $path; $paths[$dispatcherHash][$path] = true; if ($autocreate) { $className = 'Plg' . str_replace('-', '', $plugin->type) . $plugin->name; if ($plugin->type == 'editors-xtd') { // This type doesn't follow the convention $className = 'PlgEditorsXtd' . $plugin->name; if (!class_exists($className)) { $className = 'PlgButton' . $plugin->name; } } if (class_exists($className)) { // 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); } } } else { $paths[$dispatcherHash][$path] = false; } } } /** * Loads the published plugins. * * @return array An array of published plugins * * @since 1.5 * @deprecated 4.0 Use PluginHelper::load() instead */ protected static function _load() { return static::load(); } /** * Loads the published plugins. * * @return array An array of published plugins * * @since 3.2 */ protected static function load() { if (static::$plugins !== null) { return static::$plugins; } $levels = implode(',', \JFactory::getUser()->getAuthorisedViewLevels()); /** @var \JCacheControllerCallback $cache */ $cache = \JFactory::getCache('com_plugins', 'callback'); $loader = function () use ($levels) { $db = \JFactory::getDbo(); $query = $db->getQuery(true) ->select( $db->quoteName( array( 'folder', 'element', 'params', 'extension_id' ), array( 'type', 'name', 'params', 'id' ) ) ) ->from('#__extensions') ->where('enabled = 1') ->where('type = ' . $db->quote('plugin')) ->where('state IN (0,1)') ->where('access IN (' . $levels . ')') ->order('ordering'); $db->setQuery($query); return $db->loadObjectList(); }; try { static::$plugins = $cache->get($loader, array(), md5($levels), false); } catch (\JCacheException $cacheException) { static::$plugins = $loader(); } return static::$plugins; } } CMSPlugin.php 0000604 00000006175 15245603130 0007062 0 ustar 00 <?php /** * Joomla! Content Management System * * @copyright (C) 2007 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\CMS\Plugin; defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Plugin Class * * @since 1.5 */ abstract class CMSPlugin extends \JEvent { /** * A Registry object holding the parameters for the plugin * * @var Registry * @since 1.5 */ public $params = null; /** * The name of the plugin * * @var string * @since 1.5 */ protected $_name = null; /** * The plugin type * * @var string * @since 1.5 */ protected $_type = null; /** * Affects constructor behavior. If true, language files will be loaded automatically. * * @var boolean * @since 3.1 */ protected $autoloadLanguage = false; /** * 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 1.5 */ public function __construct(&$subject, $config = array()) { // Get the parameters. if (isset($config['params'])) { if ($config['params'] instanceof Registry) { $this->params = $config['params']; } else { $this->params = new Registry($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']; } // Load the language files if needed. if ($this->autoloadLanguage) { $this->loadLanguage(); } if (property_exists($this, 'app')) { $reflection = new \ReflectionClass($this); if ($reflection->getProperty('app')->isPrivate() === false && $this->app === null) { $this->app = \JFactory::getApplication(); } } if (property_exists($this, 'db')) { $reflection = new \ReflectionClass($this); if ($reflection->getProperty('db')->isPrivate() === false && $this->db === null) { $this->db = \JFactory::getDbo(); } } 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 1.5 */ public function loadLanguage($extension = '', $basePath = JPATH_ADMINISTRATOR) { if (empty($extension)) { $extension = 'Plg_' . $this->_type . '_' . $this->_name; } $extension = strtolower($extension); $lang = \JFactory::getLanguage(); // If language already loaded, don't load it again. if ($lang->getPaths($extension)) { return true; } return $lang->load($extension, $basePath, null, false, true) || $lang->load($extension, JPATH_PLUGINS . '/' . $this->_type . '/' . $this->_name, null, false, true); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка