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\Model\BaseDatabaseModel;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\Form\Form;
class RsformModelRichtext extends BaseDatabaseModel
{
public function getLang()
{
return RSFormProHelper::getCurrentLanguage($this->getFormId());
}
public function getEditor()
{
return RSFormProHelper::getEditor();
}
public function getTextarea()
{
$xml = new SimpleXMLElement('<field type="textarea" />');
$xml->addAttribute('name', $this->getEditorName());
$xml->addAttribute('rows', 20);
$xml->addAttribute('cols', 75);
$xml->addAttribute('class', 'rs_90');
$field = FormHelper::loadFieldType('textarea');
$form = new Form('rsformrichtextform');
$field->setForm($form);
$field->setup($xml, $this->getEditorText());
return $field;
}
public function getNoEditor()
{
return Factory::getApplication()->input->getInt('noEditor');
}
public function getEditorName()
{
return Factory::getApplication()->input->getCmd('opener');
}
public function getFormId()
{
return Factory::getApplication()->input->getInt('formId');
}
public function getEditorText()
{
$db = $this->getDbo();
$formId = $this->getFormId();
$opener = $this->getEditorName();
$query = $db->getQuery(true)
->select($db->qn($opener))
->from($db->qn('#__rsform_forms'))
->where($db->qn('FormId') . ' = ' . $db->q($formId));
$value = $db->setQuery($query)->loadResult();
$translations = RSFormProHelper::getTranslations('forms', $formId, $this->getLang());
if ($translations && isset($translations[$opener]))
{
$value = $translations[$opener];
}
return $value;
}
public function saveTranslation($value)
{
$formId = $this->getFormId();
$opener = $this->getEditorName();
$lang = $this->getLang();
$translations = RSFormProHelper::getTranslations('forms', $formId, $lang, 'id');
$translation = (object) array(
'form_id' => $formId,
'lang_code' => $lang,
'reference' => 'forms',
'reference_id' => $opener,
'value' => $value
);
if (!isset($translations[$opener]))
{
$this->getDbo()->insertObject('#__rsform_translations', $translation);
}
else
{
$translation->id = $translations[$opener];
$this->getDbo()->updateObject('#__rsform_translations', $translation, array('id'));
}
}
}