141 lines
3.9 KiB
PHP
141 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* @package quantummanager
|
|
* @author Dmitry Tsymbal <cymbal@delo-design.ru>
|
|
* @copyright Copyright © 2019 Delo Design & NorrNext. All rights reserved.
|
|
* @license GNU General Public License version 3 or later; see license.txt
|
|
* @link https://www.norrnext.com
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Filter\InputFilter;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\MVC\Controller\BaseController;
|
|
|
|
|
|
/**
|
|
* Quantummanager Controller.
|
|
*
|
|
* @package quantummanager
|
|
* @since 1.0
|
|
*/
|
|
class QuantummanagerController extends BaseController
|
|
{
|
|
|
|
|
|
/**
|
|
* Method overridden to make bridges for the front
|
|
*
|
|
* @param $prefix
|
|
* @param $config
|
|
*
|
|
* @return JControllerLegacy|mixed
|
|
*
|
|
* @throws Exception
|
|
* @since versio
|
|
*
|
|
*/
|
|
public static function getInstance($prefix, $config = array())
|
|
{
|
|
if (is_object(self::$instance))
|
|
{
|
|
return self::$instance;
|
|
}
|
|
|
|
// проверяем на включенность параметра
|
|
JLoader::register('QuantummanagerHelper', JPATH_ADMINISTRATOR . '/components/com_quantummanager/helpers/quantummanager.php');
|
|
|
|
if (!(int) QuantummanagerHelper::getParamsComponentValue('front', 0))
|
|
{
|
|
throw new \InvalidArgumentException(Text::sprintf('JLIB_APPLICATION_ERROR_NOT_ACCESS'));
|
|
}
|
|
|
|
// проверяем что пользователь авторизован
|
|
if (Factory::getUser()->id === 0)
|
|
{
|
|
throw new \InvalidArgumentException(Text::sprintf('JLIB_APPLICATION_ERROR_NOT_ACCESS'));
|
|
}
|
|
|
|
// грузим языки
|
|
Factory::getLanguage()->load('com_quantummanager', JPATH_ADMINISTRATOR);
|
|
|
|
$input = Factory::getApplication()->input;
|
|
Factory::getApplication()->input->set('view', 'quantummanager');
|
|
|
|
// Get the environment configuration.
|
|
$format = $input->getWord('format');
|
|
$command = $input->get('task', 'display');
|
|
|
|
// Check for array format.
|
|
$filter = InputFilter::getInstance();
|
|
|
|
if (is_array($command))
|
|
{
|
|
$command = $filter->clean(array_pop(array_keys($command)), 'cmd');
|
|
}
|
|
else
|
|
{
|
|
$command = $filter->clean($command, 'cmd');
|
|
}
|
|
|
|
// Check for a controller.task command.
|
|
if (strpos($command, '.') !== false)
|
|
{
|
|
// Explode the controller.task command.
|
|
list ($type, $task) = explode('.', $command);
|
|
|
|
// Define the controller filename and path.
|
|
$file = self::createFileName('controller', array('name' => $type, 'format' => $format));
|
|
$path = JPATH_ROOT . '/administrator/components/com_quantummanager/controllers/' . $file;
|
|
$backuppath = JPATH_ROOT . '/administrator/components/com_quantummanager/controller/' . $file;
|
|
|
|
// Reset the task without the controller context.
|
|
$input->set('task', $task);
|
|
}
|
|
else
|
|
{
|
|
// Base controller.
|
|
$type = null;
|
|
|
|
// Define the controller filename and path.
|
|
$file = self::createFileName('controller', array('name' => 'controller', 'format' => $format));
|
|
$path = JPATH_ROOT . '/administrator/components/com_quantummanager/' . $file;
|
|
$backupfile = self::createFileName('controller', array('name' => 'controller'));
|
|
$backuppath = JPATH_ROOT . '/administrator/components/com_quantummanager/' . $backupfile;
|
|
}
|
|
|
|
// Get the controller class name.
|
|
$class = ucfirst($prefix) . 'Controller' . ucfirst($type);
|
|
|
|
// Include the class if not present.
|
|
if (!class_exists($class))
|
|
{
|
|
// If the controller file path exists, include it.
|
|
if (file_exists($path))
|
|
{
|
|
require_once $path;
|
|
}
|
|
elseif (isset($backuppath) && file_exists($backuppath))
|
|
{
|
|
require_once $backuppath;
|
|
}
|
|
else
|
|
{
|
|
throw new \InvalidArgumentException(Text::sprintf('JLIB_APPLICATION_ERROR_INVALID_CONTROLLER', $type, $format));
|
|
}
|
|
}
|
|
|
|
// Instantiate the class.
|
|
if (!class_exists($class))
|
|
{
|
|
throw new \InvalidArgumentException(Text::sprintf('JLIB_APPLICATION_ERROR_INVALID_CONTROLLER_CLASS', $class));
|
|
}
|
|
|
|
// Instantiate the class, store it to the static container, and return it
|
|
return self::$instance = new $class($config);
|
|
}
|
|
|
|
}
|