getProperties();
foreach ($properties as $prop)
{
/* @var $prop ReflectionProperty */
$getMethod = "get" . ucFirst($prop->name);
if (!method_exists($object, $getMethod))
{
throw new FormBuilderException(
"FormBuilder: Missing get method for property "
. $prop->name . " of class "
. get_class($object)
);
}
$annotations = $annotationReader->getPropertyAnnotations($prop);
foreach ($annotations as $annotation)
{
if ($annotation instanceof Validate)
{
switch ($annotation->type)
{
case "ascii":
if (!preg_match('/^[A-Za-z]*$/',$object->$getMethod()))
$errors->put($errorPrefix . $prop->name, 'Pole "' . $prop->name . '" smí obsahovat pouze znaky anglické abecedy');
break;
case "alphabet":
if (!preg_match('/^[A-Za-zěščřžýáíéóťďňůúĚŠČŘŽÝÁÍÉÓĎŤŇŮÚ]*$/',$object->$getMethod()))
$errors->put($errorPrefix . $prop->name, 'Pole "' . $prop->name . '" smí obsahovat pouze znaky abecedy');
break;
case "alphabetext":
if (!preg_match('/^[A-Za-zěščřžýáíéóťďňůúĚŠČŘŽÝÁÍÉÓĎŤŇŮÚ ,._-]*$/',$object->$getMethod()))
$errors->put($errorPrefix . $prop->name, 'Pole "' . $prop->name . '" obsahuje nepovolené znaky');
break;
case "alphanumeric":
if (!preg_match('/^[0-9A-Za-zěščřžýáíéóťďňůúĚŠČŘŽÝÁÍÉÓĎŤŇŮÚ]*$/',$object->$getMethod()))
$errors->put($errorPrefix . $prop->name, 'Pole "' . $prop->name . '" smí obsahovat pouze znaky abecedy a číslice');
break;
case "password":
if (!preg_match('/[[:print:]]{8,16}/',$object->$getMethod()))
$errors->put($errorPrefix . $prop->name, 'Heslo musí obsahovat jen tisknutelné znaky a musí být dlouhé 8-16 znaků');
break;
case "alphanumericext":
if (!preg_match('/^[0-9A-Za-zěščřžýáíéóťďňůúĚŠČŘŽÝÁÍÉÓĎŤŇŮÚ ,._-]*$/',$object->$getMethod()))
$errors->put($errorPrefix . $prop->name, 'Pole "' . $prop->name . '" smí obsahovat pouze znaky abecedy a číslice');
break;
case "integer":
if (!filter_var($object->$getMethod(), FILTER_VALIDATE_INT))
$errors->put($errorPrefix . $prop->name, 'Pole "' . $prop->name . '" musí být celé číslo');
break;
case "email":
if (!filter_var($object->$getMethod(), FILTER_VALIDATE_EMAIL))
$errors->put($errorPrefix . $prop->name, "Špatný formát E-mailové adresy");
break;
}
}
}
}
if ($errors->isEmpty())
{
return false;
}
else
{
return $errors;
}
}
}