/** * Determines if the email address is valid. * * @since 1.0 * @access public */ public function isValid() { // Get ajax library. $ajax = FD::ajax(); // Get the value from the query. $email = JRequest::getVar('email'); // Get the user id of the profile being editted $userid = JRequest::getInt('userid'); // Get the user object $user = FD::user($userid); // Check for required if ($this->isRequired() && empty($email)) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_REQUIRED')); } // Check against regex if (!empty($email) && $this->params->get('regex_validate')) { $format = $this->params->get('regex_format'); $modifier = $this->params->get('regex_modifier'); $pattern = '/' . $format . '/' . $modifier; $result = preg_match($pattern, $email); if (empty($result)) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_INVALID_FORMAT')); } } $valid = SocialFieldsUserJoomlaEmailHelper::isValid($email); // Check for email validity if (!$valid) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_INVALID_EMAIL')); } // Check for allowed if (!SocialFieldsUserJoomlaEmailHelper::isAllowed($email, $this->params)) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_DOMAIN_IS_NOT_ALLOWED')); } // Check for disallowed if (SocialFieldsUserJoomlaEmailHelper::isDisallowed($email, $this->params)) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_DOMAIN_IS_DISALLOWED')); } // Check for forbidden words if (SocialFieldsUserJoomlaEmailHelper::isForbidden($email, $this->params)) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_CONTAINS_FORBIDDEN')); } // Check for existance if (SocialFieldsUserJoomlaEmailHelper::exists($email, $user->email)) { return $ajax->reject(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_ALREADY_USED')); } return $ajax->resolve(); }
/** * Validates the posted email * * @since 1.0 * @access private * @param string * @return bool True if valid, false otherwise. */ private function validateEmail(&$post, $currentEmail = '') { $email = !empty($post['email']) ? trim($post['email']) : ''; $confirm = !empty($post['email-reconfirm']) ? trim($post['email-reconfirm']) : ''; if ($this->isRequired() && empty($email)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_REQUIRED')); return false; } // Check against regex if (!empty($email) && $this->params->get('regex_validate')) { $format = $this->params->get('regex_format'); $modifier = $this->params->get('regex_modifier'); $pattern = '/' . $format . '/' . $modifier; $result = preg_match($pattern, $email); if (empty($result)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_INVALID_FORMAT')); return false; } } // Check for email validity if (!SocialFieldsUserJoomlaEmailHelper::isValid($email)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_INVALID_EMAIL')); return false; } // Check for allowed domains if (!SocialFieldsUserJoomlaEmailHelper::isAllowed($email, $this->params)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_DOMAIN_IS_NOT_ALLOWED')); return false; } // Check for disallowed domains if (SocialFieldsUserJoomlaEmailHelper::isDisallowed($email, $this->params)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_DOMAIN_IS_DISALLOWED')); return false; } // Check for forbidden words if (SocialFieldsUserJoomlaEmailHelper::isForbidden($email, $this->params)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_CONTAINS_FORBIDDEN')); return false; } // Check if current email exist if (SocialFieldsUserJoomlaEmailHelper::exists($email, $currentEmail)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_ALREADY_USED')); return false; } // Check reconfirm if ($this->params->get('reconfirm_email')) { if ($email !== $currentEmail && empty($confirm)) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_RECONFIRM_REQUIRED')); return false; } if (!empty($confirm) && $email !== $confirm) { $this->setError(JText::_('PLG_FIELDS_JOOMLA_EMAIL_VALIDATION_NOT_MATCHING')); return false; } } return true; }