HEX
Server: Apache
System: Linux v38079.2is.nl 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: democfellows (10015)
PHP: 8.1.34
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/creativefellows.nl/test.creativefellows.nl/ergatis/src/class.cassette_form.php
<?php

class cassetteForm extends dbConnect{

	function __construct($connection,$formid,$csrf_token=null,$captcha_key=null){
		
		$this->connection = $connection;
		
		$r 					= $this->run("SELECT * FROM `forms` WHERE `form_id` = $formid",false);
					
		$this->formid		= $formid;
		$this->unique_id 	= $r["unique_id"];
		$this->eName 		= $r["form_name"];
		$this->response 	= $r["form_response"];
		$this->desc 		= $r["form_desc"];
		$this->btn_label	= $r["button_label"];
		$this->handler		= $r["custom_handler"] != "" ? $r["custom_handler"] : "handle-form";

		$this->showMsg		= false;
		$this->csrf_token	= $csrf_token;
		$this->captcha_key	= $captcha_key;
		
		$this->spamtoken 	= uniqid($this->security_key);
		
		
	}

	function getFields(){

		$elements 		= array();
		
		$form_fields 	= $this->run("SELECT * FROM `form_elements` WHERE `unique_id`= '$this->unique_id' ORDER BY `position` ASC ");
		foreach($form_fields as $r)
		{
			$e = array();
			$e["elementId"] 	= $r["form_element_id"];
			$e["type"] 			= $r["field_id"];
			$e["required"] 		= $r["value"];
			if($e["required"] == 1) $this->showMsg = true;

			$test = $this->getFormField($r['form_element_id'],$r['field_id'],$r["name"],$r["description"]);
			foreach($test as $t => $v){
				$e[$t] = $v;
			}
			array_push($elements,$e);
		}

		// add form id
		array_push($elements,$this->addFormId());		
		
		// add form id
		if($this->captcha_key != null) array_push($elements,$this->addCaptcha());	
		
		// add a csrf			
		array_push($elements,$this->addCsrf());		

		// add a button			
		array_push($elements,$this->addButton());			

		// add required filling fields
		if($this->showMsg == true) array_push($elements,$this->addMsg());

		return $elements;
		
	}

	function addCaptcha()
	{
		$d 				= array();
		$d["type"] 		= "captcha";
		$d["name"] 		= $this->captcha_key;//$naam;
		$d["desc"] 		= $this->captcha_key;//$desc;

		return $d;
	}

	function addMsg(){
		$d 				= array();
		$d["type"] 		= "msg";
		$d["name"] 		= "*) Verplicht invullen";
		$d["desc"] 		= "";

		return $d;
	}
	
	function addButton(){
		$d 				= array();
		$d["type"] 		= "submit";
		$d["name"] 		= "";//$naam;
		$d["desc"] 		= "";//$desc;

		return $d;
	}

	function addFormId(){
		$d 				= array();
		$d["type"] 		= "hidden";
		$d["name"] 		= "formid";
		$d["desc"] 		= $this->formid;

		return $d;
	}
	function addCsrf(){
		$d 				= array();
		$d["type"] 		= "hidden";
		$d["name"] 		= "csrf";
		$d["desc"] 		= $this->csrf_token;

		return $d;
	}
	function getFormField($form_el_id,$field_id,$naam,$desc){
		$d 				= array();
		$elementName 	= str_replace(" ","",$form_el_id."-".$naam);

		switch($field_id){
			// input
			case 1:
			
				$d["type"] = "input";
				$d["name"] = $naam;
				$d["desc"] = $desc;
				
			break;

			//dropdown
			case 28:
			
				$d["type"] = "select";
				$d["name"] = $naam;
				$d["desc"] = $desc;

				$o = array();
				
				$element_options = $this->run("SELECT * FROM form_elements_options WHERE form_element_id = $form_el_id ORDER BY form_option_id ASC");
				foreach($element_options as $r)
				{
					array_push($o,$r['value']);
				}
				$d["options"] = $o;

			break;

			//radio
			case 31:
			
				$d["type"] = "radio";
				$d["name"] = $naam;
				$d["desc"] = $desc;

				$o = array();
				$element_options = $this->run("SELECT * FROM form_elements_options WHERE form_element_id = $form_el_id ORDER BY form_option_id ASC");
				foreach($element_options as $r)
				{
					array_push($o,$r['value']);
				}
				$d["options"] = $o;
				
			break;

			//checkbox
			case 24:
				$d["type"] = "checkbox";
				$d["name"] = $naam;
				$d["desc"] = $desc;

				$o = array();
				$element_options = $this->run("SELECT * FROM form_elements_options WHERE form_element_id = $form_el_id");
				foreach($element_options as $r){
					array_push($o,$r['value']);
				}
				$d["options"] = $o;
			break;

			//multi text line
			case 5:
				$d["type"] = "textarea";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;

			case 15:
				$d["type"] = "deactivatedfield";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;

			case 14:
				$d["type"] = "datepicker";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;

			case 16:
				$d["type"] = "inactiveinput";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;
			
			case 53:
			case 54:
				$d["type"] = "hidden";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;

			case 32:
				$d["type"] = "tussenkop";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;
			case 18:
				$d["type"] = "bijlage";
				$d["name"] = $naam;
				$d["desc"] = $desc;
			break;

		}

		$d["valueName"] = preg_replace("/ /","_",strtolower($form_el_id."_".$naam));



		return $d;	
	}
	
	
	function spamtoken()
	{
		return $this->spamtoken;
	}
	
	
	
	function cassetteFormElement($array){

		$hidefieldsets = array("submit","hidden","msg","captcha");

		$type 	= $array["type"];
		$name 	= $array["name"];
		$desc 	= (trim($array["desc"]) != "") ? $array["desc"] : $name;	
		$opts	= (isset($array["options"])) ? $array["options"] : null ;
		$eid	= (isset($array["elementId"])) ? $array["elementId"] : null;
		$req	= (isset($array["required"]) && $array["required"] == 1) ? " required" : "";
		$lbl	= (isset($array["required"]) && $array["required"] == 1) ? " *" : "";
	
		$inpName 	= $eid.preg_replace("/[^0-9a-zA-Z]/","",strtolower($name));
		$value 		= isset($_SESSION[ $this->vl($this->eName) ][$inpName]) ? $_SESSION[$this->vl($this->eName)][$inpName] : "";

		$el = "";

		switch($type){
			case "input":
				//$el .= "<legend>$desc $lbl</legend>";
				$el .= "<label class='legend'>$name $lbl</label>";		
				$el .= "<div class='input-wrapper'><input type='text' class='form-text$req' name='$inpName' autocomplete='off' placeholder='". $array["desc"] ."'  value='". $this->outputSafe($value) ."'/></div>";			
			break;

			case "inactiveinput":
				//$el .= "<legend>$desc $lbl</legend>";
				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<input type='text' name='$inpName' class='$req' value='#value#'disabled />";	
			break;

			case "deactivatedfield":
				$el .= "<input type='hidden' name='$inpName' value='$desc'/>";			
			break;

			case "datepicker":
				//$el .= "<legend>$desc $lbl</legend>";	
				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<div class='input-wrapper'><input type='text' name='$inpName' class='form-text calendar$req' autocomplete='off' /></div>";			

			break;

			case "select":
				//$el .= "<legend>$desc $lbl</legend>";	
				
				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<div class='option-wrapper'><select type='text' name='$inpName' class='select'>";
				foreach($opts as $o){
					$el .= "<option value='".htmlentities($o)."'>".utf8_decode($o)."</option>";
				}
				$el .= "</select></div>";	

			break;

			case "radio":
				$verplicht	= ($array["required"] == 1) ? " required" : "";

				//$el .= "<legend>$desc $lbl</legend>";
				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<div class='block$verplicht' id='$inpName'>";
				foreach($opts as $i => $o){
					$checked = ($i == 0) ? " checked" : null;
					$el .= "<span class='floatleft'><input type='radio' name='$inpName' value='$o' $checked /> <label>$o</label></span>";
				}
				$el .= "</div>";
			break;

			case "checkbox":
				$verplicht	= ($array["required"] == 1) ? " required" : "";

				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<div class='block$verplicht' id='$inpName'>";
				
				foreach($opts as $i => $o){
					$checked = !empty($value) && in_array($o,$value) ? " checked" : "";
					
					$el .= "<span class='floatleft'><input type='checkbox' name='".$inpName."[]' id='". $inpName . $i ."' value='$o' $checked/> <label for='". $inpName . $i ."'>$o</label></span>";
				}
				$el .= "</div>";
			break;

			case "textarea":
				//$el .= "<legend>$desc $lbl</legend>";		
				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<div class='input-wrapper'><textarea class='form-text textarea$req' name='$inpName' placeholder='". $array["desc"] ."'>". $this->outputSafe($value) ."</textarea></div>";
			break;

			case "submit":
			
				
				$el .= '<div class="slide-message"><strong>Schuif het blauwe balkje naar rechts om het formulier te verzenden </strong><br >(Ter voorkoming van spam)</div>';		
				$el .= '<div class="fieldset hidden"><input type="text" name="slided_by_human" class="slided_by_human required"  value="" /></div>';
				
				$el .= '<div class="slide-submit">';
					$el .= '<div class="slide-submit-text"></div>';
					$el .= '<div class="slide-submit-thumb"></div>';
				$el .= '</div>';
				$el .= "<input type='hidden' name='slider-validate' value='". $this->spamtoken() ."'/>";			
			
				$el .= "<div class='button-wrapper' style='display:none'>";
					$el .= "<input type='submit' name='". $this->eName ."' value='". $this->btn_label ."' class='form-button' id='".preg_replace("/[^0-9a-zA-Z]/","",strtolower($this->btn_label))."' />";
				$el .= "</div>";								
				
			break;

			case "hidden":
				$el .= "<input type='hidden' name='$inpName' id='$inpName' value='$desc'/>";			
			break;

			case "msg":
				$el .= "<div class='msg-wrapper'><p>$desc</p></div>";			
			break;

			case "tussenkop":
				$el .= "<label class='group'>$name</label>";			
				if($array["desc"]) $el .= "<p>".$array["desc"]."</p>";
			break;

			case "bijlage":
				$el .= "<label class='legend'>$desc $lbl</label>";		
				$el .= "<div class='file-wrapper'><input type='file' class='form-text$req' name='$inpName' accept='image/*' /></div>";
			break;

			case "captcha":
				$el .= '<div class="g-recaptcha" data-sitekey="'. $name .'"></div>';			
			break;
		}				
		
		$data = "";
		if(!in_array($type,$hidefieldsets)) $data .= '<div class="form-row '. $type .' '. $f[3] .'">';
		$data .= $el;
		if(!in_array($type,$hidefieldsets)) $data .= "</div>";

		return $data;

	}
	
}	
	
	
	
?>