+
+ private static function stripBadChars($text)
+ {
+ return str_replace(array(' ', "'"), array('-', ''),
+ strtolower(stripslashes(replace_accent(trim($text)))));
+ }
+
+ /** Creates a username from a first and last name
+ * @param $firstname User's firstname
+ * @param $lasttname User's lastname
+ * return STRING the corresponding username
+ */
+ public static function makeUserName($firstname, $lastname)
+ {
+ return self::stripBadChars($firstname) . '.' . self::stripBadChars($lastname);
+ }
+
+ /**
+ * Creates a user forlive identifier from:
+ * @param $firstname User's firstname
+ * @param $lasttname User's lastname
+ * @param $category User's promotion or type of account
+ */
+ public static function makeHrid($firstname, $lastname, $category)
+ {
+ $cat = self::stripBadChars($category);
+ if (!cat) {
+ Platal::page()->kill("$category is not a suitable category.");
+ }
+
+ return self::makeUserName($firstname, $lastname) . '.' . $cat;
+ }
+
+ /** Reformats the firstname so that all letters are in lower case,
+ * except the first letter of each part of the name.
+ */
+ public static function fixFirstnameCase($firstname)
+ {
+ $firstname = strtolower($firstname);
+ $pieces = explode('-', $firstname);
+
+ foreach ($pieces as $piece) {
+ $subpieces = explode("'", $piece);
+ $usubpieces = '';
+
+ foreach ($subpieces as $subpiece) {
+ $usubpieces[] = ucwords($subpiece);
+ }
+ $upieces[] = implode("'", $usubpieces);
+ }
+ return implode('-', $upieces);
+ }