%PDF- %PDF-
| Direktori : /home1/lightco1/www/lightcolab.com/components/com_jce/editor/elements/ |
| Current File : //home1/lightco1/www/lightcolab.com/components/com_jce/editor/elements/filesystem.php |
<?php
/**
* @copyright Copyright (c) 2009-2017 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('JPATH_BASE') or die('RESTRICTED');
/**
* Renders a select element.
*/
class WFElementFilesystem extends WFElement
{
/*
* Element type
*
* @access protected
* @var string
*/
public $_name = 'Filesystem';
public function fetchElement($name, $value, &$node, $control_name)
{
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$parent = $this->getParent();
$language = JFactory::getLanguage();
// create a unique id
$id = preg_replace('#([^a-z0-9_-]+)#i', '', $control_name.'filesystem'.$name);
$attribs = array('class="parameter-nested-parent"');
// path to directory
$path = WF_EDITOR_EXTENSIONS.'/filesystem';
$files = JFolder::files($path, '\.xml$', false, true);
// get all installed plugins
$installed = self::getInstalledPlugins();
if (!empty($installed)) {
foreach ($installed as $p) {
$path = JPATH_PLUGINS.'/jce/'.$p->name;
// Joomla 1.5!!
if (!defined('JPATH_PLATFORM')) {
$path = JPATH_PLUGINS.'/jce';
}
$files[] = $path.'/'.$p->name.'.xml';
}
}
$options = array();
if ((bool) $node->attributes()->exclude_default === false) {
$options[] = JHTML::_('select.option', '', WFText::_('WF_OPTION_NOT_SET'));
}
$params = array();
foreach ($files as $file) {
$filename = basename($file, '.xml');
// get file name without extension type
$parts = explode('-', $filename);
$filename = array_pop($parts);
// legacy
$language->load('com_jce_filesystem_'.$filename, JPATH_SITE);
// new
$language->load('plg_jce_filesystem-'.$filename, JPATH_ADMINISTRATOR);
$instance = new WFParameter($parent->getData(), $file);
$params[$filename] = $instance;
$xml = WFXMLHelper::parseInstallManifest($file);
$options[] = JHTML::_('select.option', $filename, WFText::_($xml['name']));
}
// if a group is specified, setup to be an object
if ((string) $node->attributes()->group) {
$ctrl = $control_name.'[filesystem]['.$name.']';
} else {
$ctrl = $control_name.'[filesystem]';
}
$html = '';
$html .= JHTML::_('select.genericlist', $options, $ctrl, implode(' ', $attribs), 'value', 'text', $value, $id);
foreach ($params as $filesystem => $item) {
$ctrl = $control_name.'[filesystem]['.$filesystem.']';
$html .= '<div data-parameter-nested-item="'.$filesystem.'" class="well well-small">';
$html .= $item->render($ctrl, $filesystem);
$html .= '</div>';
}
return $html;
}
protected static function getInstalledPlugins()
{
$db = JFactory::getDBO();
$user = JFactory::getUser();
// Joomla! 2.5+
if (defined('JPATH_PLATFORM')) {
$levels = implode(',', $user->getAuthorisedViewLevels());
$query = $db->getQuery(true)
->select('element AS name')
->from('#__extensions')
->where('enabled = 1')
->where('type = '.$db->quote('plugin'))
->where('folder = '.$db->quote('jce'))
->where('element LIKE '.$db->quote('filesystem-%'))
->where('state IN (0,1)')
->where('access IN ('.$levels.')')
->order('ordering');
return $db->setQuery($query)->loadObjectList();
} else {
$aid = $user->get('aid', 0);
$query = 'SELECT element AS name'
.' FROM #__plugins'
.' WHERE published >= 1'
.' AND folder = '.$db->quote('jce')
.' AND element LIKE '.$db->quote('filesystem-%')
.' AND access <= '.(int) $aid
.' ORDER BY ordering';
$db->setQuery($query);
return $db->loadObjectList();
}
}
}