Fixed handling long emails

Signed-off-by: Janos SUTO <sj@acts.hu>
This commit is contained in:
Janos SUTO 2022-03-14 20:30:06 +01:00
parent 7d655b569d
commit d38e5e281f
2 changed files with 4 additions and 10 deletions

View File

@ -843,6 +843,10 @@ class ModelSearchSearch extends Model {
public function fix_email_address_for_sphinx($email = '') { public function fix_email_address_for_sphinx($email = '') {
if(strlen($email) > MAX_EMAIL_LEN) {
return md5($email . ' ');
}
$email = preg_replace("/\|@/", "|", $email); $email = preg_replace("/\|@/", "|", $email);
return preg_replace("/[\@\.\+\-\_]/", "X", $email); return preg_replace("/[\@\.\+\-\_]/", "X", $email);
} }

View File

@ -147,16 +147,6 @@ function checkemail($email, $domains) {
function validemail($email = '') { function validemail($email = '') {
if($email == '') { return 0; } if($email == '') { return 0; }
// sphinxsearch supports tokens up to 41 characters long
// If there's a longer token in the query, then sphinx
// reports a query error even if the query is itself correct
// So the workaround is to get rid of these email addresses
if(strlen($email) > MAX_EMAIL_LEN) {
$msg = sprintf("discarding email %s: longer than %d", $email, MAX_EMAIL_LEN);
syslog(LOG_INFO, $msg);
return 0;
}
if(preg_match("/@local$/", $email)) { return 1; } if(preg_match("/@local$/", $email)) { return 1; }
if(preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,10})$/', $email)) { if(preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,10})$/', $email)) {