File: D:/HostingSpaces/SBogers10/spire.komma-mediadesign.nl/wwwroot/mvc/models/form.class.php
<?php
/**
* m_form.php
* Created by Komma Mediadesign.
* Author: mike
* Date: 3/27/13
*/
require_once DOCUMENT_ROOT . 'config/recaptcha.php';
require_once DOCUMENT_ROOT . 'lib/recaptchalib.php';
require_once DOCUMENT_ROOT . 'mvc/models/form_field.class.php';
class Form extends SiteTemplate
{
/*
* Form id
*/
private $_id;
/*
* Form name
*/
private $_formName;
/*
* Contains the fields
*/
private $_fields = array();
private $_submit;
private $_errors;
public function __construct($name)
{
$this->_formName = $name;
$this->_id = $this->_formName;
}
/*
* Adds a field to the form
* @param Field
*/
public function addField($Field)
{
$this->_fields[] = $Field;
}
/*
* SETS
*/
public function setId($id)
{
if( ! empty($id))
{
$this->_id = $id;
}
}
public function addSubmit($label)
{
$this->_submit = '';
$this->_submit .= '<a id="submitBtn" class="awardLink ctaButton submitForm" href="/">
<span class="text">' . $label . '</span>
<span class="left"><span class="up"></span><span class="hover"></span></span>
<span class="right"><span class="up"></span><span class="hover"></span></span>
</a>';
}
public function render()
{
$form = '<form method="post"';
if( ! empty($this->_formName)) $form .= ' name="' . $this->_formName . '"';
if( ! empty($this->_id)) $form .= ' id="' . $this->_id . '"';
$form .= '>';
foreach($this->_fields as $Field)
{
$data = $Field->get();
if( ! empty($data['name']))
{
$form .= '<div class="inputHolder">';
switch($data['type'])
{
case 'checkbox':
/* Checkbox buttons */
$key = $this->_formName . '_' . $data['name'];
$form .= '<div class="gender">';
$form .= '<input type="checkbox" name="' . $key . '" value="' . $data['value'] . '" id="checkbox' . ucfirst($data['name']) . '" data-label="' . $data['label'] . '"';
if(isset($_POST[$key]) && ! empty($_POST[$key])) $form .= ' checked';
if(count($data['classes']) > 0)
{
$form .= ' class="';
foreach($data['classes'] as $i => $class)
{
if($i != 0) $form .= ' ';
$form .= $class;
}
$form .= '"';
}
$form .= '/>
<label for="checkbox' . ucfirst($data['name']) . '">' . $data['label'] . '</label>';
$form .= '</div>';
break;
case 'radio':
/* Radio buttons */
$form .= '<div class="gender">';
foreach($data['options'] as $option)
{
$form .= '<input type="radio" name="' . $this->_formName . '_' . $data['name'] . '" value="' . $option['value'] . '" id="checkbox' . ucfirst($option['value']) . '" data-label="' . $data['label'] . '"';
if(count($data['classes']) > 0)
{
$form .= ' class="';
foreach($data['classes'] as $i => $class)
{
if($i != 0) $form .= ' ';
$form .= $class;
}
$form .= '"';
}
if($data['value'] == $option['value']) $form .= ' checked';
$form .= '/>
<label for="checkbox' . ucfirst($option['value']) . '">' . $option['name'] . '</label>';
}
$form .= '</div>';
break;
case 'textarea':
/* Text area */
$form .= '<textarea name="' . $this->_formName . '_' . $data['name'] . '" data-label="' . $data['label'] . '"';
if( ! empty($data['id'])) $form .= ' id="' . $data['id'] . '"';
if(count($data['classes']) > 0)
{
$form .= ' class="';
foreach($data['classes'] as $i => $class)
{
if($i != 0) $form .= ' ';
$form .= $class;
}
$form .= '"';
}
$form .= ' >' . $data['value'] . '</textarea>';
break;
case 'countryList':
/* Country List */
$form .= 'Country:<br />';
$form .= '<select name="' . $this->_formName . '_' . $data['name'] . '" data-label="' . $data['label'] . '">';
$form .= ' <option value="">Select your country</option>';
$countries = array("Argentina","Armenia","Australia","Austria","Belgium","Brazil","Bulgaria","Canada","China","Croatia","Czech_Republic","Denmark","Estonia","Finland","France","Germany","Greece","Hungary","Indonesia","Israel","Italy","Japan","Macedonia","Malaysia","Malta","Moldova","Netherlands","New_Zealand","Norway","Poland","Portugal","Romania","Russia","Serbia","Slovakia","Slovenija","South_Africa","Spain","Sweden","Switzerland","Thailand","Ukraine","United_Kingdom","Uruguay","USA");
foreach($countries as $country)
{
$form .= ' <option value="' . $country . '"';
if($data['value'] == $country) $form .= ' selected';
$form .= '>' . str_replace('_',' ',$country) . '</option>';
}
$form .= '</select><br /><br />';
break;
case 'ean':
/* EAN Code */
$form .= '<input name="' . $this->_formName . '_' . $data['name'] . '" type="text" value="' . $data['label'] . ' : 6943051.." data-label="' . $data['label'] . ' : 6943051.."';
if( ! empty($data['id'])) $form .= ' id="' . $data['id'] . '"';
if(count($data['classes']) > 0)
{
$form .= ' class="';
foreach($data['classes'] as $i => $class)
{
if($i != 0) $form .= ' ';
$form .= $class;
}
$form .= '"';
}
$form .= ' />';
break;
case 'recaptcha':
/* reCAPTCHA */
$form .= '<script type="text/javascript">
var RecaptchaOptions = {
custom_translations : { instructions_visual : "Type the two words:" },
theme : \'white\'
};
</script>';
$form .= recaptcha_get_html(RECAPTHA_PUBLIC);
break;
default:
/* Text field */
$form .= '<input name="' . $this->_formName . '_' . $data['name'] . '" type="' . $data['type'] . '" value="' . $data['value'] . '" data-label="' . $data['label'] . '"';
if( ! empty($data['id'])) $form .= ' id="' . $data['id'] . '"';
if(count($data['classes']) > 0)
{
$form .= ' class="';
foreach($data['classes'] as $i => $class)
{
if($i != 0) $form .= ' ';
$form .= $class;
}
$form .= '"';
}
$form .= ' />';
}
$error = '';
if( isset($_SESSION[$this->_formName . '_errors'][$data['name']]))
{
$error = $_SESSION[$this->_formName . '_errors'][$data['name']];
}
if(! empty($error))
{
$form .= '<div class="error"><span></span>' . $error . '</div>';
}
$form .= '</div>';
}
}
if( ! empty($this->_submit))
{
$form .= $this->_submit;
}
$form .= "<div class='g-recaptcha' data-sitekey='6LcAt3cUAAAAAEfFffSNNfb3KcFGtIcEh990KTZ4'></div>";
$form .= '</form>';
return $form;
}
public function validate()
{
if(isset($_SESSION[$this->_formName . '_errors'])) unset($_SESSION[$this->_formName . '_errors']);
$valid = true;
foreach($this->_fields as $Field)
{
$data = $Field->get();
if( ! $Field->validate())
{
$_SESSION[$this->_formName . '_errors'][$data['name']] = $Field->getError();
$valid = false;
}
else
{
if($_SESSION[$this->_formName][$data['name']] == $data['label']) $_SESSION[$this->_formName][$data['name']] = '';
if($_SESSION[$this->_formName][$data['name']] == $data['label'] . ' : 6943051..') $_SESSION[$this->_formName][$data['name']] = '';
}
}
return $valid;
}
public function clearFields()
{
$this->_fields = array();
}
}