File: /var/www/vhosts/creativefellows.nl/fvr.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 $action;
protected $email;
protected $form_error_message = "Het formulier kan niet verstuurd worden omdat we een aantal velden niet begrijpen.";
public function id()
{
return $this->form_id;
}
public function setId($id)
{
$this->form_id = $id;
}
public function setHashKey($hash)
{
$this->hash = uniqid($hash);
}
public function setClass($class=null)
{
$this->class = $class;
}
public function class()
{
return $this->class ? " ".$this->class : null;
}
public function uid()
{
return $this->unique_id;
}
public function setUid($uid)
{
$this->uid = $uid;
}
public function getUid()
{
return $this->uid;
}
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 preg_replace("/ /","-",strtolower($this->form_name));
}
public function lead()
{
return $this->form_desc;
}
public function responseText()
{
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" id="form'. $this->id() .'" action="'. $this->action() .'" data-token="'. $this->spamtoken() .'" method="post" enctype="multipart/form-data" novalidate>';
foreach($this->fields as $field)
{
$this->html .= $field->html($sizes);
}
$this->html .= $this->refererPageId();
$this->html .= $this->button();
$this->html .= $this->formError();
$this->html .= '</form>';
return $this->html;
}
private function spamtoken()
{
return $this->hash;
}
private function refererPageId(){
return '<input type="hidden" name="uid" value="'. $this->getUid() .'" />';
}
private function button()
{
//return '<div class="grid-x grid-padding-x"><div class="cell small-12"><button class="button secondary" type="submit"><i class="fa fa-arrow-circle-right"></i>'. $this->button_label .'</button></div></div>';
$el = '<br /><label>Schuif het balkje naar rechts om te verzenden</label>';
$el .= '<div class="hide "><input type="text" name="slided_by_human" class="slided_by_human" 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() ."' data-abide-ignore />";
$el .= "<div class='button-wrapper' style='display:none'>";
$el .= '<button class="button secondary" type="submit"><i class="fa fa-arrow-circle-right"></i>'. $this->button_label .'</button>';
$el .= "</div>";
return $el;
}
private function formError()
{
return '<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="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;
// 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->subjectHtml() . $this->email;
}
}