Add namespace.

This commit is contained in:
2014-06-02 18:58:49 +04:00
parent aec1a60985
commit 1ba341b064
159 changed files with 265 additions and 264 deletions

155
Form/Form.php Normal file
View File

@ -0,0 +1,155 @@
<?php namespace Majestic\Form;
/**
* @copyright NetMonsters <team@netmonsters.ru>
* @link http://netmonsters.ru
* @package Majestic
* @subpackage form
* @since 2010-04-24
*/
abstract class Form
{
const SUCCESS = 'success';
const ERROR = 'error';
/**
* @var FormField[]
*/
protected $fields = array();
/**
* @var array
*/
protected $messages = array(
self::SUCCESS => 'Form data valid',
self::ERROR => 'Form data invalid');
protected $valid = true;
public function __construct()
{
$this->init();
}
/**
* @param string $name
* @param bool|string $message
* @return FormField
*/
protected function addField($name, $message = false)
{
$this->fields[$name] = new FormField($message);
return $this->fields[$name];
}
public function isValid($data)
{
if (!is_array($data)) {
throw new \Majestic\Exception\InitializationException(__CLASS__ . '::' . __METHOD__ . ' expects an array');
}
foreach ($this->fields as $field_name => $field) {
if (isset($data[$field_name])) {
$this->valid &= $field->isValid($data[$field_name], $data);
} else {
$this->valid &= $field->isValid(null, $data);
}
}
if (!$this->valid) {
$this->fillHelperData();
}
return $this->valid;
}
public function getMessages()
{
$messages = array();
foreach ($this->fields as $name => $field) {
if ($mess = $field->getMessage()) {
$messages[$name] = $mess;
}
}
return $messages;
}
public function getValue($key)
{
if (isset($this->fields[$key])) {
return $this->fields[$key]->getValue();
}
return false;
}
/**
* @return array
*/
public function getValues()
{
$values = array();
foreach ($this->fields as $key => $field) {
if (!$field->isIgnored()) {
$values[$key] = $field->getValue();
}
}
return $values;
}
/**
* @return array
*/
public function getSourceValues()
{
$values = array();
foreach ($this->fields as $key => $field) {
$values[$key] = $field->getSourceValue();
}
return $values;
}
/**
* @return string
*/
public function getMessageType()
{
return ($this->valid) ? self::SUCCESS : self::ERROR;
}
/**
* @return string
*/
public function getMessage()
{
return $this->messages[$this->getMessageType()];
}
/**
* @param string $message
* @return Form
*/
public function setSuccessMessage($message)
{
$this->messages[self::SUCCESS] = (string) $message;
return $this;
}
/**
* @param string $message
* @return Form
*/
public function setErrorMessage($message)
{
$this->messages[self::ERROR] = (string) $message;
return $this;
}
protected function fillHelperData()
{
$data['messages'] = $this->getMessages();
$data['values'] = $this->getSourceValues();
\Majestic\Session::set(get_class($this), $data);
}
abstract protected function init();
}

218
Form/FormField.php Normal file
View File

@ -0,0 +1,218 @@
<?php namespace Majestic\Form;
/**
* @copyright NetMonsters <team@netmonsters.ru>
* @link http://netmonsters.ru
* @package Majestic
* @subpackage form
* @since 2010-04-25
*/
class FormField
{
/**
* @var iValidator[]
*/
protected $validators = array();
/**
* @var iFilter[]
*/
protected $filters = array();
/**
* Used instead message of validator if defined.
*
* @var string
*/
protected $default_message = false;
/**
* @var string
*/
protected $message = false;
/**
* @var mixed
*/
protected $value;
/* Flags */
/**
* @var bool
*/
protected $required = true;
/**
* @var bool
*/
protected $ignored = false;
/**
* @param bool|string $default_message
*/
public function __construct($default_message = false)
{
$this->default_message = $default_message;
}
/**
* @param bool $flag
* @return FormField
*/
public function setRequired($flag)
{
$this->required = (bool) $flag;
return $this;
}
/**
* @return bool
*/
public function isRequired()
{
return $this->required;
}
/**
* @param bool $flag
* @return FormField
*/
public function setIgnored($flag)
{
$this->ignored = (bool) $flag;
return $this;
}
/**
* @return bool
*/
public function isIgnored()
{
return $this->ignored;
}
/**
* @param string[]|\Majestic\Validator\iValidator[] $validators
* @return FormField
*/
public function addValidators($validators)
{
foreach ($validators as $validator) {
$this->addValidator($validator);
}
return $this;
}
/**
* @param string|\Majestic\Validator\iValidator $validator
* @return FormField
* @throws \Majestic\Exception\InitializationException
*/
public function addValidator($validator)
{
if ($validator instanceof \Majestic\Validator\iValidator) {
$name = get_class($validator);
} elseif (is_string($validator)) {
$name = $validator . 'Validator';
$validator = new $name();
} else {
throw new \Majestic\Exception\InitializationException('Invalid validator provided to addValidator; must be string or iValidator');
}
$this->validators[$name] = $validator;
return $this;
}
public function addFilters($filters)
{
foreach ($filters as $filter) {
$this->addFilter($filter);
}
return $this;
}
public function addFilter($filter)
{
if ($filter instanceof iFilter) {
$name = get_class($filter);
} elseif (is_string($filter)) {
$name = $filter . 'Filter';
$filter = new $name();
} else {
throw new \Majestic\Exception\InitializationException('Invalid filter provided to addFilter; must be string or iFilter');
}
$this->filters[$name] = $filter;
return $this;
}
public function getValue()
{
$value = $this->value;
if (is_array($value)) {
array_walk_recursive($value, array($this, 'filterValue'));
} else {
$this->filterValue($value, $value);
}
return $value;
}
/**
* $value & $key for array_walk_recursive
*
* @param mixed $value
* @param mixed $key
*/
protected function filterValue(&$value, &$key)
{
foreach ($this->filters as $filter) {
$value = $filter->filter($value);
}
}
public function getSourceValue()
{
return $this->value;
}
public function isValid($value, $context = null)
{
$this->value = $value;
// filtered value here
$value = $this->getValue();
$valid = true;
if ((($value === '') || ($value === null)) && !$this->isRequired()) {
return $valid;
}
foreach ($this->validators as $validator) {
if (is_array($value)) {
foreach ($value as $val) {
if (!$validator->isValid($val, $context)) {
$valid = false;
if (!$this->default_message) {
throw new \Majestic\Validator\InitializationException('Define default message for array fields');
}
$this->message = $this->default_message;
}
}
if ($valid) {
continue;
}
} elseif ($validator->isValid($value, $context)) {
continue;
}
$valid = false;
$this->message = ($this->default_message) ? $this->default_message : $validator->getMessage();
break;
}
return $valid;
}
public function getMessage()
{
return $this->message;
}
}

42
Form/FormViewHelper.php Normal file
View File

@ -0,0 +1,42 @@
<?php namespace Majestic\Form;
/**
* @copyright NetMonsters <team@netmonsters.ru>
* @link http://netmonsters.ru
* @package Majestic
* @subpackage Form
* @since 2010-04-25
*/
class FormViewHelper extends ViewHelper
{
protected $data = null;
public function form($form = null)
{
if ($this->data === null) {
if ($form == null) {
throw new \Majestic\ExceptionInitializationException('Form name required for helper init');
}
$this->data = \Majestic\Session\Session::get($form, array());
\Majestic\Session\Session::del($form);
}
return $this;
}
public function value($field, $default = '')
{
if (isset($this->data['values'][$field])) {
return $this->view->escape($this->data['values'][$field]);
}
return $this->view->escape($default);
}
public function message($field)
{
if (isset($this->data['messages'][$field])) {
return '<span class="error">' . $this->view->escape($this->data['messages'][$field]) . '</span>';
}
return '';
}
}