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/dhwd.creativefellows.nl/src/CassetteForm.php
<?php

class CassetteForm extends BaseController{

	function __construct($db_connection,$formid,$csrf_token=null,$captcha_key=null)
	{
		
		$this->db 			= $db_connection;
		
		$r 					= $this->db->run("SELECT * FROM `forms` WHERE `form_id` = ". $this->db->esc($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;
		
	}
	
	public function insertFormResponse($table,$columns,$values)
	{	
		$values[3] = $this->db->esc($values[3]);
		$this->db->insert($table, $columns, $values);
	}
	
	public function getUid()
	{
		return uniqid();
	}
	
	public function getId()
	{
		return $this->formid;	
	}
	
	public function getName()
	{
		return $this->eName;
	}
	
	public function getClientResponseEmail()
	{
		return $this->response;
	}
	
	public function getResponseMessage()
	{
		return preg_replace("/\n/","<br />",$this->desc);
	}
	
	function getFields()
	{

		$elements 		= array();
		
		$form_fields 	= $this->db->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"] 		= "*) Mandatory field";
		$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->db->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->db->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->db->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 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"] = $form_el_id . preg_replace("/[^0-9a-zA-Z]/","",strtolower($naam));


		return $d;	
	}
	
	function cassetteFormElement($array)
	{

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

		$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" : "";

		$inpName = $eid.preg_replace("/[^0-9a-zA-Z]/","",strtolower($name));
		
		$required_msg = '<span class="form-error">Mandatory field</span>';

		$el = "";

		switch($type){
			case "input":
				
				$el .= '<label>'. $desc;		
				$el .= '<input type="text" name="'. $inpName .'" autocomplete="off" placeholder="'. $desc .'" '. $req .' />';	
				$el .= $required_msg;
				$el .= '</label>';
				
			break;

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

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

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

			case "select":	
				
				$el .= '<label>'. $desc;	
				$el .= '<select type="text" name="'. $inpName .'" '. $req .'>';
				foreach($opts as $o)
				{
					$el .= '<option value="'. htmlentities($o) .'">'. utf8_decode($o) .'</option>';
				}
				$el .= "</select>";	
				$el .= $required_msg;
				$el .= '</label>';

			break;

			case "radio":
				
				$el .= '<legend>'. $desc . '</legend>';	
				foreach($opts as $i => $o)
				{
					$checked = $i == 0 ? " checked" : null;
					$el .= '<input type="radio" id="'. $inpName . $i .'" name="'. $inpName .'" value="'. $o .'" '. $req .' /> <label for="'. $inpName . $i .'">'. $o .'</label>';
				}
				$el .= $required_msg;
				$el .= '</label>';

			break;

			case "checkbox":
				
				$el .= '<legend>'. $desc . '</legend>';	
				foreach($opts as $o){
					$el .= '<input type="checkbox" id="'. $inpName . $i .'" name="'. $inpName .'[]" value="'. $o .'" /> <label for="'. $inpName . $i .'">'. $o .'</label>';
				}

			break;

			case "textarea":
			
				$el .= '<label>'. $desc;
				$el .= '<textarea name="'. $inpName .'"" placeholder="'. $desc .'"></textarea>';
				$el .= '</label>';
				
			break;

			case "submit":
			
				$el .= '<button class="button" type="submit">'. $this->btn_label .'</button><br /><br />';
				
			break;

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

			case "msg":
			
				$el .= "<p>". $desc ."</p>";	
						
			break;

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

			case "bijlage":
			
				$el .= '<label>'. $desc;
				$el .= '<input type="file" name="'. $inpName .'"" accept="image/*" />';
				$el .= '</label>';
				
			break;

			case "captcha":
			
				$el .= '<div class="g-recaptcha" data-sitekey="'. $name .'"></div>';
							
			break;
		}				
		
		$data = "";
		if(!in_array($type,$hidefieldsets)) $data .= '<fieldset class="'. (!in_array($type,$full_width) ? "small-12 medium-6" : "small-12" ) .' columns '. $f[3] .'">';
		$data .= $el;
		if(!in_array($type,$hidefieldsets)) $data .= '</fieldset>';

		return $data;

	}
	
}	
	
	
	
?>