File: /var/www/vhosts/creativefellows.nl/test.creativefellows.nl/nomor/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 .= $desc;
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\"> </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;'> </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;'> </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>';
$html .= '<div class="grid-x grid-padding-x">';
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 .= "</div>";
$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","checkbox");
$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 != 0 ? $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" ) .' cell '. $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;
}
}
?>