API16

JFormRuleEmail/test

From Joomla! Documentation

< API16:JFormRuleEmail
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The "API16" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Description[edit]

Method to test if an e-mail address is unique.


<! removed transcluded page call, red link never existed >

Syntax[edit]

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[edit]

mixed on invalid rule, true if the value is valid, false otherwise.

Defined in[edit]

libraries/joomla/form/rules/email.php

Importing[edit]

jimport( 'joomla.form.rules.email' );

Source Body[edit]

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[edit]

Code Examples[edit]