| Server IP : 195.130.67.5 / Your IP : 216.73.217.127 Web Server : Microsoft-IIS/10.0 System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586 User : IUSR ( 0) PHP Version : 7.4.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /inetpub/wwwroot/icd/components/com_jce/editor/libraries/classes/ |
Upload File : |
<?php
/**
* @package JCE
* @copyright Copyright (c) 2009-2012 Ryan Demmer. All rights reserved.
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
defined('_JEXEC') or die('RESTRICTED');
class WFExtension extends JObject {
/**
* Constructor activating the default information of the class
*
* @access public
*/
public function __construct($config = array()) {
parent::__construct();
// set extension properties
$this->setProperties($config);
}
/**
* Returns a reference to a WFExtension object
*
* This method must be invoked as:
* <pre> $extension = WFExtension::getInstance();</pre>
*
* @access public
* @return object WFExtension
*/
/* public static function getInstance()
{
static $instance;
if (!is_object($instance)) {
$instance = new WFExtension();
}
return $instance;
} */
/**
* Display the extension
* @access $public
*/
public function display() {
$document = WFDocument::getInstance();
// Load Extensions Object
$document->addScript(array(
'extensions'
));
}
/**
* Load a plugin extension
*
* @access public
* @return array
*/
private static function _load($types = array(), $extension = null, $config = array()) {
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$extensions = array();
if (!isset($config['base_path'])) {
$config['base_path'] = WF_EDITOR;
}
// core extensions path
$path = $config['base_path'] . '/extensions';
// cast as array
$types = (array) $types;
// get all types from core
if (empty($types)) {
$types = JFolder::folders(WF_EDITOR . '/extensions');
}
if (JFolder::exists($path)) {
foreach ($types as $type) {
if ($extension) {
if (JFile::exists($path . '/' . $type . '/' . $extension . '.xml') && JFile::exists($path . '/' . $type . '/' . $extension . '.php')) {
$object = new stdClass();
$object->folder = $type;
$object->path = $path . '/' . $type;
$object->extension = $extension;
$extensions[] = $object;
}
} else {
$files = JFolder::files($path . '/' . $type, '\.xml$', false, true);
foreach ($files as $file) {
$object = new stdClass();
$object->folder = $type;
$object->path = $path . '/' . $type;
$name = JFile::stripExt(basename($file));
if (JFile::exists(dirname($file) . '/' . $name . '.php')) {
$object->extension = $name;
}
$extensions[] = $object;
}
}
}
}
// set default prefix
/*if (!array_key_exists('prefix', $config)) {
$config['prefix'] = 'jce-';
}
// get external extensions
jimport('joomla.plugin.helper');
foreach ($types as $type) {
$installed = JPluginHelper::getPlugin($config['prefix'] . $type, $extension);
foreach ($installed as $item) {
$object = new stdClass();
$object->folder = $item->type;
$object->path = JPATH_PLUGINS . '/' . $item->type;
$name = $item->element;
if (JFile::exists(JPATH_PLUGINS . '/' . $item->type . '/' . $item->element . '.php')) {
$object->extension = $name;
}
$extensions[] = $object;
}
}*/
return $extensions;
}
/**
* Load & Call an extension
*
* @access public
* @param array $config
* @return mixed
*/
public static function loadExtensions($type, $extension = null, $config = array()) {
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$language = JFactory::getLanguage();
if (!isset($config['base_path'])) {
$config['base_path'] = WF_EDITOR;
}
// set default prefix
/*if (!array_key_exists('prefix', $config)) {
$config['prefix'] = 'jce-';
}*/
// sanitize $type
$type = preg_replace('#[^A-Z0-9\._-]#i', '', $type);
// sanitize $extension
if ($extension) {
$extension = preg_replace('#[^A-Z0-9\._-]#i', '', $extension);
}
// Create extensions path
$base = $config['base_path'] . '/extensions';
// Get all extensions
$extensions = self::_load((array) $type, $extension, $config);
$result = array();
if (!empty($extensions)) {
foreach ($extensions as $item) {
$name = $item->extension;
$folder = $item->folder;
$path = $item->path;
$root = $path . '/' . $name . '.php';
if (file_exists($root)) {
// Load root extension file
require_once($root);
// Load Extension language file
$language->load('com_jce_' . $type . '_' . $name, JPATH_SITE);
// remove prefix
//$folder = str_replace($config['prefix'], '', $folder);
// Return array of extension names
$result[$type][] = $name;
// if we only want a named extension
if ($extension && $extension == $name) {
return $name;
}
}
}
}
// only return extension types requested
if ($type) {
return $result[$type];
}
// Return array or extension name
return $result;
}
/**
* Return a parameter for the current plugin / group
* @param object $param Parameter name
* @param object $default Default value
* @return string Parameter value
*/
public function getParam($param, $default = '') {
$wf = WFEditorPlugin::getInstance();
return $wf->getParam($param, $default);
}
protected function getView($name, $layout) {
$view = new WFView(array(
'name' => $name,
'layout' => $layout
));
return $view;
}
}
?>