/**
* Process a custom date regexp on a widget.
*
* @param string $rgxp The rgxp being evaluated.
*
* @param string $value The value to check.
*
* @param Widget $widget The widget to process.
*
* @return void
*
* @SuppressWarnings(PHPMD.Superglobals)
* @SuppressWarnings(PHPMD.CamelCaseVariableName)
*/
public static function processCustomDateRegexp($rgxp, $value, $widget)
{
if ('MetaModelsFilterRangeDateRgXp' !== $rgxp) {
return;
}
$format = $widget->dateformat;
if (!preg_match('~^' . Date::getRegexp($format) . '$~i', $value)) {
$widget->addError(sprintf($GLOBALS['TL_LANG']['ERR']['date'], Date::getInputFormat($format)));
} else {
// Validate the date (see https://github.com/contao/core/issues/5086)
try {
new Date($value, $format);
} catch (\OutOfBoundsException $e) {
$widget->addError(sprintf($GLOBALS['TL_LANG']['ERR']['invalidDate'], $value));
}
}
}