1 | <?php
|
---|
2 | /********************************************************************************************\
|
---|
3 | * Expresso Administração *
|
---|
4 | * by Diógenes Ribiro Duarte (diogenes.duarte@gmail.com, diogenes.duarte@prodeb.ba.gov.br) *
|
---|
5 | * ------------------------------------------------------------------------------------------*
|
---|
6 | * This program is free software; you can redistribute it and/or modify it under the terms *
|
---|
7 | * of the GNU General Public License as published by the Free Software Foundation; *
|
---|
8 | * either version 2 of the License, or (at your option) any later version. *
|
---|
9 | \********************************************************************************************/
|
---|
10 |
|
---|
11 | class login_algorithm_example implements login{
|
---|
12 | var $xml_nomes;
|
---|
13 | /*var $nomes_comuns;
|
---|
14 | var $preposicoes;
|
---|
15 | var $sobrenomes_especiais;*/
|
---|
16 |
|
---|
17 | function login_algorithm_example() {
|
---|
18 | $this->xml_nomes = new DOMDocument();
|
---|
19 | $this->xml_nomes->load("inc/names.xml");// Carrega o xml antes de iniciar os nomes.
|
---|
20 | }
|
---|
21 |
|
---|
22 | function generate_login($primeiro_nome,$segundo_nome,$conexao_ldap) {
|
---|
23 |
|
---|
24 | $primeiro_nome_exp = explode("#",$this->formata_frase(strtolower($primeiro_nome)));
|
---|
25 | $segundo_nome_exp = explode("#",$this->formata_frase(strtolower($segundo_nome)));
|
---|
26 |
|
---|
27 | $login = "";
|
---|
28 |
|
---|
29 | //Tratar primeiro nome...
|
---|
30 | $login.=$primeiro_nome_exp[0]; //A primeira parte do primeiro nome é sempre inserida
|
---|
31 |
|
---|
32 | if(count($primeiro_nome_exp)>1) { //Se houver mais partes...
|
---|
33 | if ( ($this->is_nome_comum($primeiro_nome_exp[0]))
|
---|
34 | && (!$this->is_preposicao($primeiro_nome_exp[1]))) { //Se a primeira parte do nome for comum e a segunda NÃO for uma preposição...
|
---|
35 | $login.=$primeiro_nome_exp[1];
|
---|
36 | }
|
---|
37 | }
|
---|
38 |
|
---|
39 | //"." separa o primeiro do segundo nome
|
---|
40 | $login.=".";
|
---|
41 |
|
---|
42 | //Tratar segundo nome...
|
---|
43 | if( (!$this->is_sobrenome_especial($segundo_nome_exp[count($segundo_nome_exp)-1]))
|
---|
44 | || (count($segundo_nome_exp)==1) )
|
---|
45 | $login.=$segundo_nome_exp[count($segundo_nome_exp)-1];
|
---|
46 | else {
|
---|
47 | $login.=$segundo_nome_exp[count($segundo_nome_exp)-2].
|
---|
48 | $segundo_nome_exp[count($segundo_nome_exp)-1];
|
---|
49 | }
|
---|
50 | return $login;
|
---|
51 | }
|
---|
52 |
|
---|
53 | private function is_nome_comum($nome) {
|
---|
54 | $nomes = $this->xml_nomes->getElementsByTagName("nomes");
|
---|
55 | foreach($nomes as $node) {
|
---|
56 | if($node->getAttribute("tipo") == "nome") {
|
---|
57 | foreach($node->getElementsByTagName("nome") as $subnode) {
|
---|
58 | if($subnode->nodeValue == $nome)
|
---|
59 | return true;
|
---|
60 | }
|
---|
61 | }
|
---|
62 | }
|
---|
63 | return false;
|
---|
64 | }
|
---|
65 |
|
---|
66 | private function is_preposicao($preposicao) {
|
---|
67 | $nomes = $this->xml_nomes->getElementsByTagName("nomes");
|
---|
68 | foreach($nomes as $node) {
|
---|
69 | if($node->getAttribute("tipo") == "preposicao") {
|
---|
70 | foreach($node->getElementsByTagName("nome") as $subnode) {
|
---|
71 | if($subnode->nodeValue == $preposicao)
|
---|
72 | return true;
|
---|
73 | }
|
---|
74 | }
|
---|
75 | }
|
---|
76 | return false;
|
---|
77 | }
|
---|
78 |
|
---|
79 | private function is_sobrenome_especial($sobrenome) {
|
---|
80 | $nomes = $this->xml_nomes->getElementsByTagName("nomes");
|
---|
81 | foreach($nomes as $node) {
|
---|
82 | if($node->getAttribute("tipo") == "sobrenome") {
|
---|
83 | foreach($node->getElementsByTagName("nome") as $subnode) {
|
---|
84 | if($subnode->nodeValue == $sobrenome)
|
---|
85 | return true;
|
---|
86 | }
|
---|
87 | }
|
---|
88 | }
|
---|
89 | return false;
|
---|
90 | }
|
---|
91 |
|
---|
92 | //Retira acentos e caracteres especiais, e substitui espaço em branco pelo caracter #.
|
---|
93 | private function formata_frase($frase) {
|
---|
94 | $frase = ereg_replace("[^a-zA-Z0-9#.]", "",
|
---|
95 | strtr($frase, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ",
|
---|
96 | "aaaaeeiooouucAAAAEEIOOOUUC#"));
|
---|
97 | return $frase;
|
---|
98 | }
|
---|
99 |
|
---|
100 | }
|
---|
101 | ?> |
---|