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/devries.creativefellows.nl/classes/CassetteForm.php
<?php

	class CassetteForm extends BaseController{

		function __construct($settings,$form_data,$form_fields,$client_settings)
		{	
			$this->client 			= $client_settings;
			$this->settings		 	= $settings;		

			$this->formHandler 		= $form_data["custom_handler"] != "" ? $form_data["custom_handler"] : "handle-form";
			
			foreach($form_data as $el => $val)
			{
				$this->$el = $val;
			}
			$this->fields = $form_fields;
			
			//d($this->settings);
		}
		
		
		public function getFormIntro($class=null)
		{
		
			$return = '<h2 class="'. $class .'">'. $this->getFormName() .'</h2>';
			if( $desc = $this->getFormDesc() ) $return .= '<p>'. $desc .'</p>';
			
			return $return;
		}		
		
		public function handleForm($post)
		{
						
			/*
			 * form settings
			 */
			$to_client_email	= $this->getClientResponseEmail();
			$unique_id			= $this->getFormId();
			$response			= $this->getResponseMessage();
			$subject			= $this->getFormName();
			$referrer 			= $_SERVER['HTTP_REFERER'];
			$post_to_email		= null;
			
	
			/*
			 * Check if user gets a copy of the email
			 */
			if( $response_field = $this->getResponseField() )
			{	
				$postName 	= $this->getPostName($response_field);
				$postValue 	= $post[$postName];
				if( isset($post[$postName]) && $post[$postName] != "" ) $post_to_email .= $postValue;
			}
			
			$form_header 	= $this->getFormHeader($subject);
			$form_footer 	= $this->getFormFooter();
			$html_email 	= "";
			
			/*
			 * loop fields
			 */
			foreach($this->fields as $f)
			{
		
				/*
				 * Only show visible html fields
				 */
				if(!$f["elementId"]) continue;

			
				/*
				 * Read post
				 */
				$postValue 	= $post[$f["valueName"]];
	
				/*
				 * Post element is array
				 */
				if(is_array($postValue))
				{
					$value = "";
					foreach($postValue as $i => $pv)
					{
						$value .= $f["options"][$i];
					}
					$postValue = $value;
				}
			
			
				/*
				 * Form field header
				 */
				if($f["type"] == "tussenkop")
				{
					$html_email .= "<tr>";
						$html_email .= "<td colspan=\"2\">&nbsp;</td>";
					$html_email .= "</tr>";
					$html_email .= "<tr>";
						$html_email .= "<td colspan=\"2\"><strong>". ucfirst($f["name"]) ."</strong></td>";
					$html_email .= "</tr>";	
				}
				/*
				 * Postcode check
				 */
				elseif($f["type"] == "postcode")
				{
					$html_email .= "<tr>";
						$html_email .= "<td style='width:200px;'>".ucfirst($f["name"])."</td><td>".$postValue."</td>";
					$html_email .= "</tr>";	
							
				}
				/*
				 * File Upload
				 */
				elseif($f["type"] == "bijlage")
				{	
					$uploaded_files = $_POST[$f["valueName"]];
				
					$html_email .= "<tr>";
						$html_email .= "<td style='vertical-align:top;'>".ucfirst($f["name"])."</td>";
						$html_email .= "<td>";
					
						foreach((array) $uploaded_files as $file){
							$html_email .= '<a href="'. $cassette->getBaseUrl() . $file .'">'. $file."</a><br />";
						}
					
						$html_email .= "<td>";
					$html_email .= "</tr>";	
				
				}
				/*
				 * Default field
				 */
				else
				{
					$html_email .= "<tr>";
						$html_email .= "<td style='width:200px;'>".ucfirst($f["name"])."</td><td>".$postValue."</td>";
					$html_email .= "</tr>";		
				}
			

			}
			
			
			/*
			 * merge email contentsts
			 */
			$mail_contents = $form_header.$html_email.$form_footer;
			
			
			//die($mail_contents);
			
			
			/*
			 * copy to user
			 */
			if($post_to_email != null) $this->sendMail($post_to_email, $subject, $mail_contents);
			
			
			/*
			 * submit to form response addresses
			 */
			if( $this->sendMail($to_client_email, $subject, $mail_contents) ) return true;
			else return true;
			

		
		}
		
		private function sendMail($post_to_email, $subject, $mail_contents)
		{
			
			if(mail($post_to_email, $subject, $mail_contents, $this->getMailHeaders())) return true;
			else return false;	
			
		}
		
		/*
		 * email headers
		 */
		private function getMailHeaders()
		{
			$headers  = "From: ". $this->client["master_email"] ."\n";  
			$headers .= "Reply-To: ". $this->client["master_email"] ."\n";
			$headers .= "Return-Path: ". $this->client["master_email"] ."\n";
			$headers .= "Content-type: text/html; charset=UTF-8\n";
			$headers .= "MIME-Version: 1.0\n";
			return $headers;
		}
		
		private function getWebsiteUrl()
		{
			return $this->settings["site_url"];
		}
		
		
		private function getFormHeader($subject_email)
		{
	
			/*
			 * Start HTML
			 */
			$data = "<html><head></head><body><table cellpadding='5' cellspacing='0' border='0' style='font:12px Helvetica,Arial,sans-serif;' width='600' align='center'>";
			$data .= "<tr>";
			$data .= "<td colspan='2' style='font-size:14px;font-weight:bold;padding-bottom:15px;'>&nbsp;</td>";
			$data .= "</tr>";
	
	
			/*
			 * Company logo
			 */
			$data .= "<tr>";
				$data .= "<td colspan='2' style='font-size:14px;font-weight:bold;'>". $this->getCompanyLogo(false, $this->getWebsiteUrl(),"width:300px;") ."</td>";
			$data .= "</tr>";
			$data .= "<tr>";
				$data .= "<td colspan='2' style='font-size:14px;font-weight:bold;'>&nbsp;</td>";
			$data .= "</tr>";
	
	
			/*
			 * subject
			 */
			$data .= "<tr>";
			$data .= "<td colspan='2' style='font-size:14px;font-weight:bold;padding-bottom:15px;padding-top:15px;border-bottom:solid 1px #efefef;border-top:solid 1px #efefef;'>". $subject_email ."</td>";
			$data .= "</tr>";
			
			return $data;
	
		}
		
		
		private function getFormFooter()
		{
			return "</table></body></html>";;
	
		}
		
		private function getPostName($response_field_arr)
		{
			return preg_replace("/[^0-9a-zA-Z]/","",strtolower($response_field_arr["form_element_id"].$response_field_arr["name"]));
			
		}
		
		private function getResponseField()
		{
			return $this->field_response_email;
		}
		
		private function getClientResponseEmail()
		{
			return $this->form_response;
		}
		
		
		public function getFormName()
		{
			return $this->form_name;
		}
		
		private function getFormId()
		{
			return $this->form_id;
		}
		
		public function getResponseMessage()
		{
			return $this->form_desc;
		}
		
		private function getFormDesc()
		{
			return $this->form_desc;
		}
		
		
		public function getForm($custom_fields_array=null)
		{
			$html =  '<form class="form regular" action="'. $this->getFormHandler() .'" method="post" enctype="multipart/form-data" data-abide novalidate>';	
			
				if($custom_fields_array != null)
				{
					foreach($custom_fields_array as $el)
					{
						$html .=  $this->cassetteFormElement($el);
					}
				}

				
				foreach($this->getFields() as $el)
				{
					$html .=  $this->cassetteFormElement($el);
				}
			$html .=  "</form>";
						
			return $html;
		}
	
		private function getMandatoryLabel()
		{
			return $this->settings["mandatory_field"];
		}
		
		private 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">'. $this->getMandatoryLabel() .'</span>';

			$el = "";

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

				case "inactiveinput":
			
				$el .= '<label><span>'. $desc .'</span>';		
					$el .= '<input type="text" autocomplete="off" disabled />';	
					$el .= '<input type="hidden" name="'. $inpName .'" id="'. $inpName .'" autocomplete="off" placeholder="'. $desc .'" '. $req .' />';	
					
					$el .= $required_msg;
				$el .= '</label>';	
				
				break;

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

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

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

				break;

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

				break;

				case "checkbox":
				
					$el .= '<legend><span>'. $desc . '</span></legend>';	
					$el .= '<div class="element-options">';	
					foreach($opts as $i => $o){
						$el .= '<div><input type="checkbox" id="'. $inpName . $i .'" name="'. $inpName .'[]" value="'. $i .'" '. $req .' /> <label for="'. $inpName . $i .'">'. $o .'</label></div>';
					}
					$el .= '</div>';
					$el .= $required_msg;
					
				break;

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

				case "submit":
			
					$el .= '<button class="button" type="submit">'. $this->getButtonLabel() .'</button>';
				
				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;

		}
		
		
		private function getButtonLabel()
		{
			return $this->button_label;
		}
		
		
		private function getFormHandler()
		{
			return $this->formHandler;
		}
		
		
		private function getFields()
		{
			return $this->fields;
		}
	
	
	}	
	
	
	
?>