Files
idpan.poznan.pl/administrator/components/com_jce/controller.php
2026-02-08 21:16:11 +01:00

136 lines
4.1 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2009-2022 Ryan Demmer. All rights reserved
* @license GNU/GPL 3 - 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
*/
// no direct access
defined('JPATH_PLATFORM') or die;
JLoader::import('joomla.application.component.controller');
/**
* JCE Component Controller.
*
* @since 1.5
*/
class JceController extends JControllerLegacy
{
/**
* @var string The extension for which the categories apply
*
* @since 1.6
*/
protected $extension;
/**
* Constructor.
*
* @param array $config An optional associative array of configuration settings
*
* @see JController
* @since 1.5
*/
public function __construct($config = array())
{
parent::__construct($config);
// Guess the JText message prefix. Defaults to the option.
if (empty($this->extension)) {
$this->extension = $this->input->get('extension', 'com_jce');
}
}
/**
* Method to display a view.
*
* @param bool $cachable If true, the view output will be cached
* @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}
*
* @return JController This object to support chaining
*
* @since 1.5
*/
public function display($cachable = false, $urlparams = false)
{
// Get the document object.
$document = JFactory::getDocument();
$app = JFactory::getApplication();
$user = JFactory::getUser();
JFactory::getLanguage()->load('com_jce', JPATH_ADMINISTRATOR);
// Set the default view name and format from the Request.
$vName = $app->input->get('view', 'cpanel');
$vFormat = $document->getType();
$lName = $app->input->get('layout', 'default');
// legacy front-end popup view
if ($vName === "popup") {
// add a view path
$this->addViewPath(JPATH_SITE . '/components/com_jce/views');
$view = $this->getView($vName, $vFormat);
if ($view) {
$view->display();
}
return $this;
}
$adminViews = array('config', 'profiles', 'profile', 'mediabox');
if (in_array($vName, $adminViews) && !$user->authorise('core.manage', 'com_jce')) {
throw new JAccessExceptionNotallowed(JText::_('JERROR_ALERTNOAUTHOR'), 403);
}
// create view
$view = $this->getView($vName, $vFormat);
// Get and render the view.
if ($view) {
if ($vName != "cpanel") {
// use "profiles" for validating "profile" view
if ($vName == "profile") {
$vName = "profiles";
}
if (!$user->authorise('jce.' . $vName, 'com_jce')) {
throw new JAccessExceptionNotallowed(JText::_('JERROR_ALERTNOAUTHOR'), 403);
}
}
// reset view name
$vName = $view->getName();
// Get the model for the view.
$model = $this->getModel($vName, 'JceModel', array('name' => $vName));
// Push the model into the view (as default).
$view->setModel($model, true);
$view->setLayout($lName);
// Push document object into the view.
$view->document = $document;
// only for Joomla 3.x
if (version_compare(JVERSION, '4', 'lt')) {
// Load the submenu.
require_once JPATH_ADMINISTRATOR . '/components/com_jce/helpers/admin.php';
JceHelperAdmin::addSubmenu($vName);
}
$document->addStyleSheet(JURI::root(true) . '/media/com_jce/css/global.min.css?' . md5(WF_VERSION));
$view->display();
}
return $this;
}
}