File: D:/HostingSpaces/SBogers96/smilefotografie.nl/app/Komma/Forms/FormService.php
<?php
namespace Komma\Forms;
class FormService
{
private $formName = '';
/**
* @var FormValidator
*/
private $formValidator;
private $errors;
/**
* @param FormValidator $formValidator
*/
public function __construct(FormValidator $formValidator)
{
$this->formValidator = $formValidator;
}
/**
* Return errors to the user
*
* @return mixed
*/
public function errors()
{
return $this->errors;
}
/**
* Which form are we on
*
* @param $name
*/
public function setFormName($name)
{
$this->formName = $name;
}
/**
* Save form data in session
*
* @param $data
*/
public function saveInSession($data)
{
\Session::put($this->formName, $data);
}
/**
* Save form data in session
*
* @param $data
*/
public function forgetSession()
{
\Session::forget($this->formName);
}
/**
* Get saved data from session
*
* @param $name
* @return mixed
*/
public function fromSession()
{
if( ! \Session::has($this->formName)) return $this->defaultValues();
return \Session::get($this->formName);
}
/**
* Validate form data
*
* @param $request
* @return bool
*/
public function isValid($request)
{
// Get rules
// Push rules to form validator
$this->formValidator->setRules($this->rules());
// Validate
if($this->formValidator->isValid($request)) return true;
// Set errors
$this->errors = $this->formValidator->errorMessages();
return false;
}
/**
* Return only the request data that we need
*
* @param $request
* @return array
*/
public function data($request)
{
// Get data for email and stuff
$data = [];
foreach(array_keys($this->defaultValues()) as $field)
{
// Make sure field exists in request
if( ! isset($request[$field]))
{
$data[$field] = null;
continue;
}
$data[$field] = $request[$field];
}
return $data;
}
/**
* Get configuration for this form
*
* @return mixed
*/
public function config()
{
return \Config::get('komma.' . $this->formName . '.config');
}
/**
* Get rules for this form
*
* @return mixed
*/
public function rules()
{
return \Config::get('komma.' . $this->formName . '.rules');
}
/**
* Get default values for this form
*
* @return mixed
*/
public function defaultValues()
{
return \Config::get('komma.' . $this->formName . '.values');
}
/**
* Make sure nobody tries to attempt an success page
* without successfully submitting a form
* Also check this for attempting error page without errors
*
* @return bool
*/
public function validAttempt()
{
// Nothing to worry about
if( ! \Request::has('status')) return true;
// 1: If query string status is equal to "success" ..
if(\Request::get('status') == 'success')
{
// .. make sure the session "success" exists
if( ! \Session::has('success')) return false;
}
// 2: If query string status is equal to "failed" ..
if(\Request::get('status') == 'failed')
{
// .. make sure the session "errors" exists
if( ! \Session::has('errors')) return false;
}
return true;
}
}