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\Factory;
class RsformControllerCalculations extends RsformController
{
public function __construct($config = array())
{
parent::__construct($config);
$this->registerTask('apply', 'save');
}
public function save()
{
$this->checkToken();
$app = Factory::getApplication();
$model = $this->getModel('calculation');
$data = $app->input->post->get('jform', array(), 'array');
$row = $model->save($data);
if ($this->getTask() == 'apply')
{
$this->setRedirect('index.php?option=com_rsform&view=calculation&cid=' . $row->id . '&formId=' . $row->formId . '&tmpl=component&update=1');
}
else
{
Factory::getDocument()->addScriptDeclaration("window.opener.showCalculations(); window.close();");
}
}
public function show()
{
$app = Factory::getApplication();
$formId = $app->input->getInt('formId');
$app->input->set('view', 'forms');
$app->input->set('layout', 'edit_calculations');
$app->input->set('formId', $formId);
parent::display();
$app->close();
}
public function remove()
{
$app = Factory::getApplication();
$formId = $app->input->getInt('formId');
$id = $app->input->getInt('id');
$model = $this->getModel('calculation');
$model->delete($id);
$app->input->set('view', 'forms');
$app->input->set('layout', 'edit_calculations');
$app->input->set('formId', $formId);
parent::display();
$app->close();
}
public function saveOrdering()
{
$db = Factory::getDbo();
$app = Factory::getApplication();
$cids = $app->input->get('cid', array(), 'array');
$formId = $app->input->getInt('formId',0);
foreach ($cids as $key => $order)
{
$query = $db->getQuery(true)
->update($db->qn('#__rsform_calculations'))
->set($db->qn('ordering') . ' = ' . $db->q($order))
->where($db->qn('id') . ' = ' . $db->q($key))
->where($db->qn('formId') . ' = ' . $db->q($formId));
$db->setQuery($query);
$db->execute();
}
echo 'Ok';
$app->close();
}
}