| Current Path : /home/sunflowe/www2/j15/components/com_jce/editor/extensions/browser/ |
| Current File : /home/sunflowe/www2/j15/components/com_jce/editor/extensions/browser/link.php |
<?php
/**
* @package JCE
* @copyright Copyright © 2009-2011 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');
wfimport('editor.libraries.classes.extensions.browser');
class WFLinkBrowser extends WFBrowserExtension
{
/*
* @var varchar
*/
private $extensions = array();
/**
* Constructor activating the default information of the class
*
* @access protected
*/
public function __construct()
{
parent::__construct();
$extensions = self::loadExtensions(array(
'types' => array('links')
));
// Load all link extensions
foreach($extensions['links'] as $link) {
$this->extensions[] =$this->getLinkExtension($link);
}
$request = WFRequest::getInstance();
$request->setRequest(array($this, 'getLinks'));
}
public function display()
{
parent::display();
$document = WFDocument::getInstance();
$document->addScript(array('tree'), 'libraries');
$document->addScript(array('link'), 'extensions.browser.js');
$document->addStyleSheet(array('tree'), 'libraries');
foreach ($this->extensions as $extension) {
$extension->display();
}
}
private function &getLinkExtension($name)
{
static $links;
if (!isset( $links )) {
$links = array();
}
if (empty($links[$name])) {
$classname = 'WFLinkBrowser_' . ucfirst($name);
if (class_exists($classname)) {
$links[$name] = new $classname();
}
}
return $links[$name];
}
public function getLinkBrowser()
{
$list = array();
foreach ($this->extensions as $extension) {
if ($extension->isEnabled()) {
$list[] = $extension->getList();
}
}
if (count($list)) {
$view = $this->getView('links');
$view->assign('list', implode("\n", $list));
$view->display();
}
}
public function getLinks($args)
{
foreach ($this->extensions as $extension) {
if (in_array($args->option, $extension->getOption())) {
$items = $extension->getLinks($args);
}
}
$array = array();
$result = array();
if (isset($items)) {
foreach ($items as $item) {
$array[] = array(
'id' => isset($item['id']) ? WFEditor::xmlEncode($item['id']) : '',
'url' => isset($item['url']) ? WFEditor::xmlEncode($item['url']) : '',
'name' => WFEditor::xmlEncode($item['name']), 'class'=>$item['class']);
}
$result = array('folders'=>$array);
}
return $result;
}
/**
* Category function used by many extensions
*
* @access public
* @return Category list object.
* @since 1.5
*/
public function getCategory($section, $parent = 1)
{
$db = JFactory::getDBO();
$user = JFactory::getUser();
$wf = WFEditorPlugin::getInstance();
$query = 'SELECT id AS slug, id AS id, title, alias, access';
if ($wf->getParam('category_alias', 1) == 1) {
$query .= ', CASE WHEN CHAR_LENGTH(alias) THEN CONCAT_WS(":", id, alias) ELSE id END as slug';
}
if (method_exists('JUser', 'getAuthorisedViewLevels')) {
$where = ' WHERE parent_id = '.(int) $parent;
$where .= ' AND extension = '.$db->Quote($section);
$where .= ' AND access IN ('.implode(',', $user->authorisedLevels()).')';
if (!$wf->checkAccess('static', 1)) {
$where .= ' AND path != '.$db->Quote('uncategorised');
}
} else {
$where = ' WHERE section = '.$db->Quote($section);
$where .= ' AND access <= '.(int) $user->get('aid');
}
$query .= ' FROM #__categories'
. $where
. ' AND published = 1'
. ' ORDER BY title'
;
$db->setQuery($query);
return $db->loadObjectList();
}
/**
* (Attempt to) Get an Itemid
*
* @access public
* @param string $component
* @param array $needles
* @return Category list object.
*/
public function getItemId($component, $needles = array())
{
$match = null;
require_once(JPATH_SITE.DS.'includes'.DS.'application.php');
$tag = WF_JOOMLA15 ? 'componentid' : 'component_id';
$component = JComponentHelper::getComponent($component);
$menu = JSite::getMenu();
$items = $menu->getItems($tag, $component->id);
if ($items) {
foreach ($needles as $needle => $id) {
foreach ($items as $item) {
if ((@$item->query['view'] == $needle) && (@$item->query['id'] == $id)) {
$match = $item->id;
break;
}
}
if (isset($match)) {
break;
}
}
}
return $match ? '&Itemid='.$match : '';
}
}