API16:JFormRuleEmail/test
From Joomla! Documentation
Description
Method to test if an e-mail address is unique.
<! removed transcluded page call, red link never existed >
Syntax
test(&$field, &$values)
Parameter Name | Default Value | Description |
---|---|---|
&$field | $field A reference to the form field. | |
&$values | $values The values to test for validiaty. |
Returns
mixed on invalid rule, true if the value is valid, false otherwise.
Defined in
libraries/joomla/form/rules/email.php
Importing
jimport( 'joomla.form.rules.email' );
Source Body
public function test(&$field, &$values)
{
$return = false;
$name = (string)$field->attributes()->name;
$check = ((string)$field->attributes()->unique == 'true' || (string)$field->attributes()->unique == 'unique');
// If the field is empty and not required, the field is valid.
if ((string)$field->attributes()->required != 'true') {
// Get the data for the field.
$value = array_key_exists($name, $values) ? $values[$name] : null;
// If the data is empty, return valid.
if ($value == null) {
return true;
}
}
// Check if we should test for uniqueness.
if ($check) {
$key = (string)$field->attributes()->field;
$value = isset($values[$key]) ? $values[$key] : 0;
// Check the rule.
if (!$key) {
return new JException('Invalid Form Rule :: '.get_class($this));
}
// Check if the username is unique.
$db = &JFactory::getDbo();
$db->setQuery(
'SELECT count(*) FROM `#__users`' .
' WHERE `email` = '.$db->Quote($values[$name]) .
' AND '.$db->nameQuote($key).' != '.$db->Quote($value)
);
$duplicate = (bool)$db->loadResult();
// Check for a database error.
if ($db->getErrorNum()) {
return new JException('Database Error :: '.$db->getErrorMsg());
}
// Test the value against the regular expression.
if (parent::test($field, $values) && !$duplicate) {
$return = true;
}
} else {
// Test the value against the regular expression.
if (parent::test($field, $values)) {
$return = true;
}
}
return $return;
}
<! removed transcluded page call, red link never existed >
Examples
Code Examples