shell bypass 403
<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Plugin\PluginHelper;
class RsformViewDirectory extends HtmlView
{
public function display($tpl = null)
{
if (!Factory::getUser()->authorise('directory.manage', 'com_rsform'))
{
throw new Exception(Text::_('COM_RSFORM_NOT_AUTHORISED_TO_USE_THIS_SECTION'));
}
// set title
ToolbarHelper::title('RSForm! Pro', 'rsform');
$layout = strtolower($this->getLayout());
if ($layout == 'edit')
{
Factory::getApplication()->input->set('hidemainmenu', true);
ToolbarHelper::apply('directory.apply');
ToolbarHelper::save('directory.save');
ToolbarHelper::cancel('directory.cancel');
Text::script('RSFP_AUTOGENERATE_LAYOUT_WARNING_SURE');
$this->user = Factory::getUser();
if ($this->user->authorise('forms.manage', 'com_rsform'))
{
ToolbarHelper::spacer();
ToolbarHelper::custom('directory.cancelform', 'previous', 'previous', Text::_('RSFP_BACK_TO_FORM'), false);
}
$this->form = $this->get('Form');
$this->directory = $this->get('Directory');
$this->formId = Factory::getApplication()->input->getInt('formId',0);
$this->tab = Factory::getApplication()->input->getInt('tab', 0);
$this->emails = $this->get('emails');
$this->fields = RSFormProHelper::getDirectoryFields($this->formId);
$this->quickfields = $this->get('QuickFields');
$this->allowedDateFields = $this->get('AllowedDateFields');
$this->hasHttpHeadersPlugin = PluginHelper::isEnabled('system', 'httpheaders');
ToolbarHelper::title('RSForm! Pro <small>['.Text::sprintf('RSFP_EDITING_DIRECTORY', $this->get('formTitle')).']</small>','rsform');
}
elseif ($layout == 'edit_emails')
{
$this->emails = $this->get('emails');
}
else
{
$this->addToolbar();
ToolbarHelper::title(Text::_('RSFP_SUBM_DIR'),'rsform');
ToolbarHelper::deleteList('','directory.remove');
$this->items = $this->get('forms');
$this->pagination = $this->get('pagination');
$this->sortColumn = $this->get('sortColumn');
$this->sortOrder = $this->get('sortOrder');
$this->state = $this->get('State');
$this->filterForm = $this->get('FilterForm');
$this->activeFilters = $this->get('ActiveFilters');
}
parent::display($tpl);
}
protected function addToolbar()
{
static $called;
// this is a workaround so if called multiple times it will not duplicate the buttons
if (!$called) {
require_once JPATH_COMPONENT.'/helpers/toolbar.php';
RSFormProToolbarHelper::addToolbar('directory');
$called = true;
}
}
public function getHeaderLabel($field)
{
Factory::getApplication()->triggerEvent('onRsformBackendGetHeaderLabel', array(&$field->FieldName, $this->formId));
$staticHeaders = RSFormProHelper::getDirectoryStaticHeaders();
if ($field->componentId < 0 && isset($staticHeaders[$field->componentId]))
{
return Text::sprintf('RSFP_DIRECTORY_SUBMISSION_HEADER', $field->FieldName);
}
return $field->FieldName;
}
}