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/fvr.creativefellows.nl/src/Domain/Form/Data/FormFieldData.php
<?php

namespace App\Domain\Form\Data;

use App\Domain\Data;


final class FormFieldData extends Data
{	
	protected $options = [];
	protected $html;
	protected $error;
	protected $value;
	protected $class_prefix= "input-group-label__";
	
	public function id()
	{
		return $this->form_element_id;
	}	
	
	public function setOptions($options)
	{
		$this->options = $options;
		
	}
	
	public function html($sizes)
	{	
		$this->sizes = $sizes;
		$this->create();
					
		return $this->html;
	}
	
	private function create()
	{
		$this->html .= '<div class="grid-x grid-padding-x">';
		
			$this->html .= $this->inputType();
			
		$this->html .= '</div>';
	}
	
	public function type()
	{
		return $this->field_id;
	}
	
	
	public function postName()
	{
		return preg_replace("/ /","",strtolower($this->name()) );
	}
	
	public function postId()
	{
		return $this->postName()."-".$this->id();
	}
	
	public function setPostValue($post)
	{	
		$this->post_value = $post;
	}
	
	public function postValue()
	{
		if(is_array($this->post_value))
		{	
			$values = [];
			
			foreach($this->options() as $i => $option)
			{
				if(in_array($i, $this->post_value)) $values[] = $option->name();
			}
			
			return implode("<br />",$values);
		}
		return $this->post_value;
	}
	
	public function htmlRow()
	{	
		switch( $this->type() )
		{
			default:						
				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-4 columns first" 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:12px;padding-top:0;text-align:left;vertical-align:top;width:216px;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;font-weight:bold">'. $this->name() .'</th></tr></tbody></table></th><th class="small-12 large-8 columns 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:12px;padding-right:24px;padding-top:0;text-align:left;vertical-align:top;width:456px;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">'. $this->postValue() .'</th></tr></tbody></table></th></tr></tbody></table>';
			break;
			
			case 32:
				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:#082c5c;margin:24px 0 0 0;font-size:15px;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>';
			break;
		}
		
		
		
	}
	
	private function required()
	{
		return $this->value == 1 ? "required" : "";
	}
	
	private function inputType()
	{	
		
		switch( $this->type() )
		{
			// input
			default:
				return '<div class="'. $this->sizes["label"] .' cell input-label">
							<label class="label__'. $this->id() .'">'. $this->name() .'</label>
					    </div>
						<div class="'. $this->sizes["input"] .' cell">
							<input type="text" id="'. $this->postId() .'" class="input input-group-field" name="'. $this->postName() .'" value="" placeholder="'.  $this->placeholder() .'" '. $this->required() .'>
							'. $this->inputError() .'
						</div>';
			break;
			
			// textarea	
			case 5:
				return '<div class="'. $this->sizes["label"] .' cell input-label">
							<label class="label__'. $this->id() .'">'. $this->name() .'</label>
				    	</div>
						<div class="'. $this->sizes["input"] .' cell">
							<div class="'. $this->class() .'">
								<textarea id="'. $this->postId() .'" class="textarea" name="'. $this->postName() .'" placeholder="'.  $this->placeholder() .'"></textarea>
								'. $this->inputError() .'
							</div>
						</div>';
			break;
			
			// select
			case 28:

				$select = '<div class="'. $this->sizes["label"] .' input-label">';
					$select .= '<label class="text-right label__'. $this->id() .'">'. $this->name() .'</label>';
				$select .= '</div>';
					
				 $select .= '<div class="'. $this->sizes["input"] .' cell">';
				 	
					$select .= '<select id="'. $this->postId() .'" name="'. $this->postName() .'" >';		
						foreach($this->options() as $option)
						{
							$select .= '<option value="'. $option->value() .'">'. $option->name() .'</option>';
						}	
					$select .= '<select>';
					$select .= $this->inputError();
					
				$select .= '</div>';	
	
				return $select;
					
			break;
			
			// ceckbox
			case 24:


				$check = '<div class="cell '. $this->sizes["input"] .'">';

					$check .= '<h5 class="choice-options-header">'.  $this->name() .'</h5>';					

					foreach($this->options() as $i => $option)
					{							
						$check .= '<div class="grid-x">';
							$check .= '<div class="cell shrink"><input id="'. $this->postId() . $i .'" name="'. $this->postName() .'[]" type="checkbox" '. $this->required() .' value="'. $i .'"></div>';
							$check .= '<div class="cell auto text-left"><label for="'. $this->postId() . $i .'" class="option-label">'. $option->name() .'</label></div>';
						$check .= '</div>';
					}
		
				$check .= '</div>';	
				
				return $check;
			
			break;
			
			case 32:
				return '<div class="cell '. $this->sizes["input"] .'">
							<h4 class="form-group-header">'.  $this->name() .'</h4>
						</div>';
			break;
			
		}

	}
	
	private function options()
	{
		return $this->options;
	}
	
	
	private function name()
	{
		return $this->name;
	}
	
	private function value()
	{
		return $this->value;
	}
	
	private function placeholder()
	{
		return $this->name;
	}
	
	private function class()
	{
		return $this->class_prefix . $this->class;
	}
		
	private function inputLabel()
	{	
		switch( $this->type() )
		{
			default:
				return '<div class="small-12 medium-3 cell">
							<label class="text-left middle label__'. $this->id() .'">'. $this->name() .'</label>
						</div>';
			break;
			
			case "hidden":			
			case "button":
				return;
			break;
		}
		
		return $label; 
	}
	
	private function inputError(){
		return '<span class="form-error">'. $this->error .'</span>';
	}

}