File: /var/www/vhosts/creativefellows.nl/hermitage.creativefellows.nl/src/Domain/Form/Data/FormData.php
<?php
namespace App\Domain\Form\Data;
use App\Domain\Data;
final class FormData extends Data
{
protected $fields = [];
protected $html;
protected $email;
protected $form_error_message = "Het formulier kan nog niet verstuurd worden. De rood gemarkeerde velden bevatten waarden die wij niet snappen.";
protected $honeyPot;
function __construct($data =null)
{
foreach((array) $data as $key => $val)
{
$this->$key = $val;
}
$this->is_sent = null;
}
public function set($data =null)
{
foreach((array) $data as $key => $val)
{
$this->$key = $val;
}
$this->button();
$this->formError();
}
public function setHoneyPotField($field)
{
$this->honeyPot = $field;
}
public function id()
{
return $this->form_id;
}
public function setId($id)
{
$this->form_id = $id;
}
public function uid()
{
return $this->unique_id;
}
public function setClass($class=null)
{
$this->class = $class;
}
public function class()
{
return $this->class ? " ".$this->class : null;
}
public function setField($field)
{
$this->fields[] = $field;
}
public function getFields()
{
return $this->fields;
}
public function title($class="")
{
return '<h2 class="form-name">'. $this->name() .'</h2>';
}
public function name()
{
return $this->form_name;
}
public function url()
{
return $this->slugify($this->form_name);
}
public function isNotSent()
{
$this->is_sent = false;
$this->formError();
}
public function lead()
{
return $this->form_desc;
}
public function responseText()
{
return $this->form_submitted;
}
public function emailIntro()
{
return $this->form_submitted;
}
public function hash()
{
return hash_hmac('sha256', $this->name(), $this->id());
}
public function receivers()
{
return explode(",",$this->form_response);
}
public function html($sizes = [])
{
$this->html .= '<form class="form'. $this->class() .'" action="'. $this->action() .'" method="post" enctype="multipart/form-data" data-abide novalidate>';
foreach($this->fields as $field)
{
$this->html .= $field->html($sizes);
}
$this->html .= $this->formError();
$this->html .= $this->button();
$this->html .= '</form>';
return $this->html;
}
private function button()
{
$this->button = '<div class="grid-x grid-padding-x"><div class="cell small-12"><button class="button primary" type="submit">'. $this->button_label .'</button></div></div>';
}
/* private function honeyPot()
{
$this-> = '<div class="grid-x grid-padding-x"><div class="cell small-12"><input type="text" class="input" value="" autocomplete="off">'. $this->button_label .'</div></div>';
}
*/
private function formError()
{
$this->formError = '<div class="grid-x grid-padding-x">
<div class="cell small-12">
<div data-abide-error class="callout alert text-center" aria-live="assertive" style="'.( $this->is_sent === false ? "" : "display: none;" ).'">
<p><i class="fi-alert"></i> '. $this->form_error_message .'</p>
</div>
</div>
</div>';
}
public function setAction($action)
{
$this->action = $action;
}
private function action()
{
return $this->action;
}
public function setPostData($postData)
{
$fields = $this->getFields();
foreach($fields as $field)
{
// post value
$post_value = $postData[ $field->postName() ] ?? null;
$_SESSION["form"][$field->postName()] = $post_value;
// set
$field->setPostValue( $post_value );
// set html
$this->email .= $field->htmlRow() ;
}
}
private function subjectHtml()
{
return '<table class="row" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;position:relative;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th class="small-12 large-12 columns first last" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0 auto;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0 auto;padding-bottom:0;padding-left:24px;padding-right:24px;padding-top:0;text-align:left;vertical-align:top;width:696px;word-wrap:break-word"><table style="border-collapse:collapse;border-spacing:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;width:100%"><tbody><tr style="padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top"><th style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;word-wrap:break-word"><h4 style="color:#000000;margin:0 0 24px 0;font-size:20px;font-weight:bold;">'. $this->name() .'</h4></th><th class="expander" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#2b2d33;font-family:Helvetica,Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:1.4;margin:0;padding:0!important;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;text-align:left;vertical-align:top;visibility:hidden;width:0;word-wrap:break-word"></th></tr></tbody></table></th></tr></tbody></table>';
}
public function getEmailHtml()
{
return $this->email;
}
public function setResponseField($field)
{
$this->responseField = $field;
}
public function responseField()
{
return $this->responseField;
}
public function setUserEmail()
{
if( $this->responseFieldId() ) $this->form_response .= ",".$_SESSION["form"][ $this->responseField->postName() ];
}
public function honeyPot()
{
return $this->honeyPot;
}
public function responseFieldId()
{
return $this->field_response;
}
}