shell bypass 403

Cubjrnet7 Shell


name : grid.php
<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

// no direct access
defined('_JEXEC') or die;

use Joomla\CMS\Factory;

class RSFormProGrid
{
    const FLOW_HORIZONTAL = 0;
    const FLOW_VERTICAL = 1;

	protected $components 	= array();
	protected $pages 		= array();
	protected $rows 		= array();
	protected $hidden 		= array();
	protected $formId;
	protected $formOptions;
	protected $requiredMarker;
	protected $showFormTitle;

	protected $hiddenComponents = array();
	protected $checkboxes = array();
	protected $radiogroups = array();

	public function __construct($data, $formId, $formOptions, $requiredMarker, $showFormTitle)
	{
		$this->formId 			= $formId;
		$this->formOptions 		= $formOptions;
		$this->requiredMarker 	= $requiredMarker;
		$this->showFormTitle 	= $showFormTitle;
		$this->components 		= $this->getComponents();
		$this->hiddenComponents = array(RSFORM_FIELD_HIDDEN, RSFORM_FIELD_TICKET);

		if ($componentIds = RSFormProHelper::componentExists($formId, RSFORM_FIELD_CAPTCHA))
		{
			$captchaData = RSFormProHelper::getComponentProperties($componentIds[0]);
			if ($captchaData['IMAGETYPE'] === 'INVISIBLE')
			{
				$this->hiddenComponents[] = RSFORM_FIELD_CAPTCHA;
			}
		}

		Factory::getApplication()->triggerEvent('onRsformDefineHiddenComponents', array(&$this->hiddenComponents));
		Factory::getApplication()->triggerEvent('onRsformDefineCheckboxes', array(&$this->checkboxes, $this->formId));
		Factory::getApplication()->triggerEvent('onRsformDefineRadiogroups', array(&$this->radiogroups, $this->formId));

		$data = json_decode($data, true);
		if (is_array($data) && isset($data[0], $data[1]))
		{
			$this->rows   = $data[0];
			$this->hidden = $data[1];
			$this->pages  = array();
			
			// Let's find the pages
			$length = 0;
			$offset = 0;
			foreach ($this->rows as $row_index => $row)
			{
				$length++;
				
				foreach ($row['columns'] as $fields)
				{
					foreach ($fields as $field)
					{
						if (isset($this->components[$field]))
						{
							if (!$this->components[$field]->Published)
							{
								continue;
							}
							
							if ($this->components[$field]->ComponentTypeId == RSFORM_FIELD_PAGEBREAK)
							{
								$this->pages[] = array_slice($this->rows, $offset, $length);
								$length = 0;
								$offset = $row_index + 1;
								continue 3;
							}
						}
					}
				}
			}
			
			$this->pages[] = array_slice($this->rows, $offset, $length);
		}
	}
	
	protected function getComponents()
	{
		$db = Factory::getDbo();
		$query = $db->getQuery(true)
			->select($db->qn('p.PropertyValue', 'ComponentName'))
			->select($db->qn('c.ComponentId'))
			->select($db->qn('c.ComponentTypeId'))
			->select($db->qn('c.Published'))
			->select($db->qn('ct.ComponentTypeName'))
			->from($db->qn('#__rsform_properties', 'p'))
			->join('LEFT', $db->qn('#__rsform_components', 'c').' ON ('.$db->qn('c.ComponentId').' = '.$db->qn('p.ComponentId').')')
			->join('LEFT', $db->qn('#__rsform_component_types', 'ct').' ON ('.$db->qn('ct.ComponentTypeId').' = '.$db->qn('c.ComponentTypeId').')')
			->where($db->qn('c.FormId') . ' = ' . $db->q($this->formId))
			->where($db->qn('p.PropertyName') . ' = ' . $db->q('NAME'));
			
		$components = $db->setQuery($query)->loadObjectList('ComponentId');
		
		$data = RSFormProHelper::getComponentProperties($components);
		foreach ($components as $component)
		{
			$component->Required = isset($data[$component->ComponentId], $data[$component->ComponentId]['REQUIRED']) && $data[$component->ComponentId]['REQUIRED'] == 'YES';

            if (in_array($component->ComponentTypeId, RSFormProHelper::$captchaFields))
            {
                // Invisible Captchas should not display a Required Marker
                $component->Required = isset($data[$component->ComponentId]) && in_array('INVISIBLE', $data[$component->ComponentId], true) ? false : true;
            }
		}
		
		return $components;
	}
	
	protected function getBlock($string)
	{
		if ($string === null)
		{
			$string = '';
		}

		// Remove any '-' from the string since they will be used as concatenaters
		$str = str_replace('-', ' ', $string);

		// Trim white spaces at beginning and end of alias and make lowercase
		$str = trim(strtolower($str));

		// Remove any duplicate whitespace, and ensure all characters are alphanumeric
		$str = preg_replace('/(\s|[^A-Za-z0-9\-])+/', '-', $str);

		// Trim dashes at beginning and end of alias
		$str = trim($str, '-');

		return $str;
	}
	
	protected function flattenRows()
	{
		$flat = array();

		foreach ($this->rows as $row)
		{
			foreach ($row['columns'] as $column => $fields)
			{
				foreach ($fields as $field)
				{
					$flat[] = $field;
				}
			}
		}
		
		return $flat;
	}
	
	protected function flatten()
	{
		return array_merge($this->flattenRows(), $this->hidden);
	}

    protected function doIf($placeholder, $then)
    {
        return '{if ' . $placeholder . '}' . $then . '{/if}';
    }

    protected function generateFor($data)
	{
		$componentTypeId = $data->ComponentTypeId;

		if (in_array($data->ComponentId, $this->checkboxes))
		{
			$componentTypeId = RSFORM_FIELD_CHECKBOXGROUP;
		}
		elseif (in_array($data->ComponentId, $this->radiogroups))
		{
			$componentTypeId = RSFORM_FIELD_RADIOGROUP;
		}

		switch ($componentTypeId)
		{
			default:
				return ' for="' . $data->ComponentName . '"';
				break;

			case RSFORM_FIELD_JQUERY_CALENDAR:
				require_once JPATH_ADMINISTRATOR . '/components/com_rsform/helpers/calendar.php';

				return ' for="txtjQcal' . $this->formId . '_' . RSFormProCalendar::getInstance('jQueryCalendar')->getPosition($this->formId, $data->ComponentId) . '"';
				break;

			case RSFORM_FIELD_CALENDAR:
				require_once JPATH_ADMINISTRATOR . '/components/com_rsform/helpers/calendar.php';

				return ' for="txtcal' . $this->formId . '_' . RSFormProCalendar::getInstance('YUICalendar')->getPosition($this->formId, $data->ComponentId) . '"';
				break;

			case RSFORM_FIELD_RANGE_SLIDER:
				require_once JPATH_ADMINISTRATOR . '/components/com_rsform/helpers/rangeslider.php';

				return ' for="rs-range-slider' . $this->formId . '_' . RSFormProRangeSlider::getInstance()->getPosition($this->formId, $data->ComponentId) . '"';
				break;

			case RSFORM_FIELD_CAPTCHA:
				return ' for="captchaTxt' . $data->ComponentId . '"';
				break;

			case RSFORM_FIELD_CHECKBOXGROUP:
			case RSFORM_FIELD_RADIOGROUP:
				return ' id="' . $data->ComponentName . '-grouplbl"';
				break;

			case RSFORM_FIELD_BIRTHDAY:
			case RSFORM_FIELD_BUTTON:
			case RSFORM_FIELD_SUBMITBUTTON:
				return '';
				break;
		}
	}
}

© 2025 Cubjrnet7