public static function validateRule($Value, $FieldName, $Rule, $CustomError = false)
{
// Figure out the type of rule.
if (is_string($Rule)) {
if (stringBeginsWith($Rule, 'regex:', true)) {
$RuleName = 'validateregex';
$Args = substr($Rule, 6);
} elseif (stringBeginsWith($Rule, 'function:', true)) {
$RuleName = substr($Rule, 9);
} else {
$RuleName = $Rule;
}
} elseif (is_array($Rule)) {
$RuleName = val('Name', $Rule);
$Args = val('Args', $Rule);
}
if (!isset($Args)) {
$Args = null;
}
if (function_exists($RuleName)) {
$Result = $RuleName($Value, $Args);
if ($Result === true) {
return true;
} elseif ($CustomError) {
return $CustomError;
} elseif (is_string($Result)) {
return $Result;
} else {
return sprintf(T($RuleName), T($FieldName));
}
} else {
return sprintf('Validation does not exist: %s.', $RuleName);
}
}