Current File : /home/pacjaorg/www/km/components/com_akeebabackup/src/Dispatcher/Dispatcher.php |
<?php
/**
* @package akeebabackup
* @copyright Copyright (c)2006-2024 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
namespace Akeeba\Component\AkeebaBackup\Site\Dispatcher;
defined('_JEXEC') || die;
use Akeeba\Component\AkeebaBackup\Administrator\Dispatcher\Dispatcher as BackendDispatcher;
use Exception;
use Joomla\CMS\Document\FactoryInterface;
use Joomla\CMS\Document\JsonDocument as JDocumentJSON;
use Joomla\CMS\Factory as JFactory;
class Dispatcher extends BackendDispatcher
{
protected $defaultController = 'backup';
protected function onAfterDispatch()
{
$view = $this->input->getCmd('view', $this->defaultController);
if (ucfirst(strtolower($view)) === 'Api')
{
$this->fixJsonApiOutput();
}
}
/**
* Make sure the JSON API always outputs a JSON document.
*
* This works even when you have enabled caching, Joomla's off-line mode or tried to use tmpl=component.
*
* @throws Exception
*/
private function fixJsonApiOutput()
{
$format = $this->input->getCmd('format', 'html');
if ($format == 'json')
{
return;
}
$app = JFactory::getApplication();
// Disable caching, disable offline, force use of index.php
$app->set('caching', 0);
$app->set('offline', 0);
$app->set('themeFile', 'index.php');
/** @var FactoryInterface $documentFactory */
$documentFactory = JFactory::getContainer()->get(FactoryInterface::class);
/** @var JDocumentJSON $doc */
$doc = $documentFactory->createDocument('json');
$app->loadDocument($doc);
if (property_exists(JFactory::class, 'document'))
{
JFactory::$document = $doc;
}
// Set a custom document name
/** @var JDocumentJSON $document */
$document = $this->app->getDocument();
$document->setName('akeeba_backup');
}
/**
* Load the language.
*
* Automatically loads en-GB and the site's fallback language (if different), then merges it with the language of
* the current user. First tries loading languages from the site's main folders before falling back to the ones
* shipped with the component itself.
*
* @return void
*
* @since 9.0.0
*/
protected function loadLanguage()
{
$jLang = $this->app->getLanguage();
$jLang->load($this->option, JPATH_SITE, 'en-GB', true, true) ||
$jLang->load($this->option, JPATH_COMPONENT, 'en-GB', true, true);
$jLang->load($this->option, JPATH_ADMINISTRATOR, 'en-GB', true, true) ||
$jLang->load($this->option, JPATH_COMPONENT, 'en-GB', true, true);
$jLang->load($this->option, JPATH_BASE, null, true) ||
$jLang->load($this->option, JPATH_COMPONENT, null, true);
$jLang->load($this->option, JPATH_ADMINISTRATOR, null, true) ||
$jLang->load($this->option, JPATH_COMPONENT, null, true);
}
}