HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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();
    }
}