/** * Method to test for a valid color in hexadecimal. * * @param object &$element The SimpleXMLElement object representing the <field /> tag for the form field object. * @param mixed $value The form field value to validate. * @param string $group The field name group control value. This acts as as an array container for the field. * For example if the field has name="foo" and the group value is set to "bar" then the * full field name would end up being "bar[foo]". * @param object &$input An optional Registry object with the entire data set to validate against the entire form. * @param object &$form The form object for which the field is being tested. * @return boolean True if the value is valid, false otherwise. */ public function test(&$element, $value, $group = null, &$input = null, &$form = null) { // If the field is empty and not required, the field is valid. $required = (string) $element['required'] == 'true' || (string) $element['required'] == 'required'; if (!$required && empty($value)) { return true; } // Test the value against the regular expression. if (!parent::test($element, $value, $group, $input, $form)) { return false; } // Check if we should test for uniqueness. $unique = (string) $element['unique'] == 'true' || (string) $element['unique'] == 'unique'; if ($unique) { // Get the extra field check attribute. $userId = $form instanceof Form ? $form->getValue('id') : ''; $duplicate = User::all()->whereEquals('email', $value)->where('id', '<>', (int) $userId)->total(); if ($duplicate) { return false; } } return true; }