person/Benutzer_model.php: generated alias string is sanitized (special characters, spaces,...)

This commit is contained in:
Alexei
2020-05-04 20:21:57 +02:00
parent 554fb2586a
commit e8648e52ec
+46 -2
View File
@@ -59,7 +59,7 @@ class Benutzer_model extends DB_Model
}
/**
* Generates alias for a uid
* Generates alias for a uid.
* @param $uid
* @return array the alias
*/
@@ -73,7 +73,7 @@ class Benutzer_model extends DB_Model
if (hasData($nameresult))
{
$aliasdata = getData($nameresult);
$alias = mb_strtolower($aliasdata[0]->vorname).'.'.mb_strtolower($aliasdata[0]->nachname);
$alias = $this->_sanitizeAliasName($aliasdata[0]->vorname).'.'.$this->_sanitizeAliasName($aliasdata[0]->nachname);
$aliasexists = $this->aliasExists($alias);
if (hasData($aliasexists) && !getData($aliasexists)[0])
@@ -82,4 +82,48 @@ class Benutzer_model extends DB_Model
}
return success($aliasres);
}
// --------------------------------------------------------------------------------------------
// Private methods
/**
* Sanitizes a string used for alias. Replaces special characters, spaces, upper case.
* @param string $str
* @return string
*/
private function _sanitizeAliasName($str)
{
$enc = 'UTF-8';
$acentos = array(
'A' => '/À|Á|Â|Ã|Å/',
'Ae' => '/Ä/',
'a' => '/à|á|â|ã|å/',
'ae'=> '/ä/',
'C' => '/Ç/',
'c' => '/ç/',
'E' => '/È|É|Ê|Ë/',
'e' => '/è|é|ê|ë/',
'I' => '/Ì|Í|Î|Ï/',
'i' => '/ì|í|î|ï/',
'N' => '/Ñ/',
'n' => '/ñ/',
'O' => '/Ò|Ó|Ô|Õ/',
'Oe' => '/Ö/',
'o' => '/ò|ó|ô|õ/',
'oe' => '/ö/',
'U' => '/Ù|Ú|Û/',
'Ue' => '/Ü/',
'u' => '/ù|ú|û/',
'ue' => '/ü/',
'Y' => '/Ý/',
'y' => '/ý|ÿ/',
'a.' => '/ª/',
'o.' => '/º/',
'ss' => '/ß/',
);
$str = preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc));
return mb_strtolower(str_replace(' ','_', $str));
}
}