Current File : /home/pacjaorg/.trash/administrator/components/com_privacy/controller.php |
<?php
/**
* @package Joomla.Administrator
* @subpackage com_privacy
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Response\JsonResponse;
use Joomla\CMS\Session\Session;
/**
* Privacy Controller
*
* @since 3.9.0
*/
class PrivacyController extends JControllerLegacy
{
/**
* The default view.
*
* @var string
* @since 3.9.0
*/
protected $default_view = 'dashboard';
/**
* Method to display a view.
*
* @param boolean $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 $this
*
* @since 3.9.0
*/
public function display($cachable = false, $urlparams = array())
{
JLoader::register('PrivacyHelper', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/privacy.php');
// Get the document object.
$document = JFactory::getDocument();
// Set the default view name and format from the Request.
$vName = $this->input->get('view', $this->default_view);
$vFormat = $document->getType();
$lName = $this->input->get('layout', 'default', 'string');
// Get and render the view.
if ($view = $this->getView($vName, $vFormat))
{
$model = $this->getModel($vName);
$view->setModel($model, true);
// For the dashboard view, we need to also push the requests model into the view
if ($vName === 'dashboard')
{
$requestsModel = $this->getModel('Requests');
$view->setModel($requestsModel, false);
}
if ($vName === 'request')
{
// For the default layout, we need to also push the action logs model into the view
if ($lName === 'default')
{
JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/helpers/actionlogs.php');
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_actionlogs/models', 'ActionlogsModel');
$logsModel = $this->getModel('Actionlogs', 'ActionlogsModel');
// Set default ordering for the context
$logsModel->setState('list.fullordering', 'a.log_date DESC');
// And push the model into the view
$view->setModel($logsModel, false);
}
// For the edit layout, if mail sending is disabled then redirect back to the list view as the form is unusable in this state
if ($lName === 'edit' && !JFactory::getConfig()->get('mailonline', 1))
{
$this->setRedirect(
JRoute::_('index.php?option=com_privacy&view=requests', false),
JText::_('COM_PRIVACY_WARNING_CANNOT_CREATE_REQUEST_WHEN_SENDMAIL_DISABLED'),
'warning'
);
return $this;
}
}
$view->setLayout($lName);
// Push document object into the view.
$view->document = $document;
// Load the submenu.
PrivacyHelper::addSubmenu($this->input->get('view', $this->default_view));
$view->display();
}
return $this;
}
/**
* Fetch and report number urgent privacy requests in JSON format, for AJAX requests
*
* @return void
*
* @since 3.9.0
*/
public function getNumberUrgentRequests()
{
$app = Factory::getApplication();
// Check for a valid token. If invalid, send a 403 with the error message.
if (!Session::checkToken('get'))
{
$app->setHeader('status', 403, true);
$app->sendHeaders();
echo new JsonResponse(new \Exception(Text::_('JINVALID_TOKEN'), 403));
$app->close();
}
/** @var PrivacyModelRequests $model */
$model = $this->getModel('requests');
$numberUrgentRequests = $model->getNumberUrgentRequests();
echo new JResponseJson(array('number_urgent_requests' => $numberUrgentRequests));
$app->close();
}
}