Пример #1
0
function brugernavn_ledigt_test()
{
    echo "Tester brugernavn_ledigt: ";
    backend_dbquery("DELETE FROM brugere WHERE brugernavn='nykoptg'");
    backend_dbquery("DELETE FROM brugere WHERE brugernavn='nyktte'");
    backend_dbquery("DELETE FROM vaerelser WHERE vaerelse = 'L88'");
    if (backend_brugernavn_ledigt('nykledig') != true) {
        fejl(__LINE__);
    }
    backend_dbquery("INSERT INTO vaerelser SET vaerelse = 'L88', " . "vaerelse_type='vaerelse'");
    backend_dbquery("INSERT INTO brugere SET vaerelse = 'L88', brugernavn='nykoptg', " . "navn='test'");
    if (backend_brugernavn_ledigt('nykoptg') != false) {
        fejl(__LINE__);
    }
    backend_dbquery("DELETE FROM brugere WHERE brugernavn='nykoptg'");
    backend_dbquery("DELETE FROM vaerelser WHERE vaerelse = 'L88'");
    echo "ok\n";
}
Пример #2
0
/**
 * Genrerer et ledigt brugernavn af initialer af fulde navn med prefiks "nyk".
 *
 * @param string $fulde_navn Brugerens fulde navn
 * @return Et genereret brugernavn
 */
function backend_generer_brugernavn($fulde_navn)
{
    $fulde_navn = str_replace('æ', 'a', $fulde_navn);
    $fulde_navn = str_replace('Æ', 'a', $fulde_navn);
    $fulde_navn = str_replace('ø', 'o', $fulde_navn);
    $fulde_navn = str_replace('Ø', 'o', $fulde_navn);
    $fulde_navn = str_replace('å', 'å', $fulde_navn);
    $fulde_navn = str_replace('Å', 'å', $fulde_navn);
    $fulde_navn = str_replace('ö', 'o', $fulde_navn);
    $fulde_navn = str_replace('Ö', 'o', $fulde_navn);
    $fulde_navn = preg_replace('/([^\\w ])/', '', $fulde_navn);
    // opdel fornavn, mellemnavn og efternavne
    $q = explode(' ', strtolower($fulde_navn));
    // brugernavn kandidater
    $k = array();
    if (count($q) == 1) {
        // kun fornavn var givet
        $k[] = substr($q[0], 0, 3);
        // kandidat: første tre bogstaver
        if (strlen($q[0]) < 6) {
            $k[] = $q[0];
        }
        // kandidat: hele navn
        $k[] = substr($q[0], 0, 4);
        // kandidat: første fire bogstaver
        $k[] = substr($q[0], 0, 5);
        // kandidat: første fem bostaver
    } elseif (count($q) == 2) {
        // fornavn og efternavn
        // kandidat: første bogstave af fornavn samt to første fra efternavn
        $k[] = substr($q[0], 0, 1) . substr($q[1], 0, 2);
        // kandidat: første to bogstaver af fornavn samt første fra efternavn
        $k[] = substr($q[0], 0, 2) . substr($q[1], 0, 1);
        $k[] = substr($q[0], 0, 2) . substr($q[1], 0, 2);
        // ...
        $k[] = substr($q[0], 0, 1) . substr($q[1], 0, 3);
        $k[] = substr($q[0], 0, 3) . substr($q[1], 0, 1);
    } elseif (count($q) >= 3) {
        $k[] = substr($q[0], 0, 1) . substr($q[1], 0, 1) . substr($q[count($q) - 1], 0, 1);
        if (count($q) == 4) {
            $k[] = substr($q[0], 0, 1) . substr($q[1], 0, 1) . substr($q[2], 0, 1) . substr($q[3], 0, 1);
        }
        $k[] = substr($q[0], 0, 2) . substr($q[count($q) - 1], 0, 1);
        $k[] = substr($q[0], 0, 1) . substr($q[count($q) - 1], 0, 2);
    } else {
        $k[] = '1';
    }
    // filtrer latterlige navne
    $k = array_values(array_diff($k, array('root', 'gud', 'lort', 'pik', 'pikr', 'dad', 'hak', 'hec', 'h**o', 'hom', 'kilo', 'adm', 'pis')));
    // sæt nyk foran alle kandidater
    for ($i = 0; $i < count($k); $i++) {
        $k[$i] = 'nyk' . $k[$i];
    }
    // vælg et ledigt brugernavn blandt kandidater
    $brugernavn = null;
    for ($i = 0; $brugernavn == null && $i < count($k); $i++) {
        if (backend_brugernavn_ledigt($k[$i])) {
            $brugernavn = $k[$i];
        }
    }
    // hvis intet var fundet, prøv da at sæt tal bagpå
    for ($i = 1; $brugernavn == null; $i++) {
        if (backend_brugernavn_ledigt($k[0] . $i)) {
            $brugernavn = $k[0] . $i;
        }
    }
    return $brugernavn;
}