fhiiqm/ldap_mod_uid.php
author Bettina Schwarzer
Fri, 05 Feb 2016 14:03:40 +0100
changeset 44 d652bbba2d43
permissions -rw-r--r--
fhiiqm: achilleus -> db2, Korrekturen
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     1
#!/usr/bin/php
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     2
<?php
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     3
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     4
/**
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     5
 * @author Bettina Schwarzer, Fritz-Haber-Institut
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     6
 * @copyright 11/2014
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     7
 * 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     8
 * Uebertragen von Telefon-Nr. je Mitarbeiter nach LDAP
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
     9
 */
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    10
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    11
    error_reporting(E_ALL ^ E_NOTICE);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    12
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    13
    function ldap_replace($sn,$gn,$mail,$tel)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    14
    {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    15
        /** ersetzt bestehende Eintraege von LDAP-Objektklassen
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    16
         *  erstellt weiteres Attribut zu Telefon
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    17
         * 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    18
         * Parameter
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    19
         * $sn
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    20
         * $gn      - givenName
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    21
         * $tel[]   - telephonNumber
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    22
         * */ 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    23
        global $ldapconn;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    24
        global $ldapbd;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    25
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    26
        if ($ldapbd)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    27
        {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    28
            $base="ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    29
            $uid = ldap_search_uid($sn,$gn,$mail);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    30
            //Parameter abfragen
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    31
            if ($uid)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    32
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    33
                $dn = "uid=".$uid .",ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    34
/*
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    35
                $su = array("ä","ö","ü","ß","Ä","Ö","Ü");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    36
                $rp = array("ae","oe","ue","ss","Ae","Oe","Ue");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    37
                $gn = str_replace($su,$rp,$gn);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    38
                $sn = str_replace($su,$rp,$sn); 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    39
                $entry["sn"] = $sn;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    40
                $entry["givenName"] = $gn;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    41
//                    print_r ($entry); echo "ldapconn=$ldapconn: single<br />";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    42
                $result1 = ldap_mod_replace($ldapconn, $dn, $entry);    
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    43
                if (!$result1)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    44
                {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    45
                    printf("LDAP-Fehlernummer replace: %s<br>\n", ldap_errno($ldapconn));
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    46
                    printf("LDAP-Fehler replace: %s<br>\n", ldap_error($ldapconn));
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    47
                }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    48
*/
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    49
                if (is_array($tel) && $tel)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    50
                {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    51
                    $entry2["telephoneNumber"] = array();
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    52
                    $afields = array ("telephoneNumber");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    53
                    $searcht = @ldap_search($ldapconn,$dn,"(telephoneNumber=*)",$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    54
//                    echo "anzahl telefonNumber=" . ldap_count_entries($ldapconn,$searcht)."<br />";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    55
                    if (ldap_count_entries($ldapconn,$searcht))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    56
                    {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    57
                        $result = ldap_mod_del($ldapconn, $dn, $entry2);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    58
                        if (!$result && ldap_errno($ldapconn) <> 16)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    59
                        {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    60
                            printf("LDAP-Fehlernummer del: %s<br>\n", ldap_errno($ldapconn));
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    61
                            printf("LDAP-Fehler deltel: %s<br>\n", ldap_error($ldapconn));
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    62
                        }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    63
                    }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    64
                    foreach ($tel as $telf)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    65
                    {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    66
                        if ($telf > "!") $entry2["telephoneNumber"][] = $telf;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    67
                    }    
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    68
                }        
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    69
                $result2 = ldap_mod_add($ldapconn, $dn, $entry2);    
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    70
                if (!$result2)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    71
                {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    72
                    printf("LDAP-Fehlernummer add: %s<br>\n", ldap_errno($ldapconn));
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    73
                    printf("LDAP-Fehler addtel: %s<br>\n", ldap_error($ldapconn));
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    74
                    return 0;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    75
                }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    76
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    77
                return 1;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    78
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    79
            else
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    80
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    81
                echo "Mitarbeiter '".$gn ." " . $sn ."' konnte nicht identifiziert werden.<br />";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    82
                return 1; 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    83
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    84
        }        
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    85
    } 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    86
    function ldap_search_uid($sn,$gn,$mail)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    87
    {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    88
        /** Sucht uid des gegebenen Nutzers
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    89
         * 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    90
         * Parameter
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    91
         * $sn
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    92
         * $gn      - givenName
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    93
         * */ 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    94
        global $ldapconn;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    95
        global $ldapbd;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    96
    
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    97
        if ($ldapbd)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    98
        {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
    99
            $base="ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   100
            $su = array("ä","ö","ü","ß","Ä","Ö","Ü","ó","é");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   101
            $rp = array("ae","oe","ue","ss","Ae","Oe","Ue","o","e");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   102
            $afields = array ("uid");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   103
//            $afields = array ("uid","cn","mail","sn");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   104
            if (strpos($sn,' ')) // Nachname mit Leerzeichen
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   105
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   106
                $snt = substr(strstr($sn,' '),1); // 2. Teil Nachname
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   107
                $sntr = str_replace($su,$rp,$snt);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   108
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   109
            $gnr = str_replace($su,$rp,$gn);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   110
            $snr = str_replace($su,$rp,$sn); 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   111
            $gnu = utf8_encode($gn);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   112
            $snu = utf8_encode($sn);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   113
            if (isset($mail) && $mail)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   114
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   115
                $filter = "(mail=$mail)";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   116
                $search=@ldap_search($ldapconn,$base,$filter,$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   117
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   118
            if (!$mail || ($mail && !ldap_count_entries($ldapconn,$search)))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   119
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   120
                if ($gn && $sn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   121
                    $filter = "(|(&(sn=$sn*)(givenName=$gn*))(mail=$gn*)(mail=$sn*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   122
                if ($sn && !$gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   123
                    $filter = "(|(&(sn=$sn*)(givenName=$gn*))(mail=$sn*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   124
                if (!$sn && $gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   125
                    $filter = "(|(&(sn=$sn*)(givenName=$gn*))(mail=$gn*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   126
                $search=@ldap_search($ldapconn,$base,$filter,$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   127
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   128
            if (!ldap_count_entries($ldapconn,$search))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   129
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   130
                if ($gn && $sn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   131
                    $filter = "(|(&(sn=$snr*)(givenName=$gnr*))(mail=$gnr*)(mail=$snr*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   132
                if ($sn && !$gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   133
                    $filter = "(|(&(sn=$snr*)(givenName=$gnr*))(mail=$snr*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   134
                if (!$sn && $gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   135
                    $filter = "(|(&(sn=$snr*)(givenName=$gnr*))(mail=$gnr*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   136
                $search=@ldap_search($ldapconn,$base,$filter,$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   137
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   138
            if (!ldap_count_entries($ldapconn,$search))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   139
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   140
                if ($gn && $sn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   141
                    $filter = "(|(&(sn=$snu*)(givenName=$gnu*))(mail=$gnu*)(mail=$snu*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   142
                if ($sn && !$gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   143
                    $filter = "(|(&(sn=$snu*)(givenName=$gnu*))(mail=$snu*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   144
                if (!$sn && $gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   145
                    $filter = "(|(&(sn=$snu*)(givenName=$gnu*))(mail=$gnu*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   146
                $search=@ldap_search($ldapconn,$base,$filter,$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   147
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   148
            if (isset($snt)&& $snt && !ldap_count_entries($ldapconn,$search))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   149
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   150
                if ($gn && $snt)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   151
                    $filter = "(|(&(sn=$snt*)(givenName=$gn*))(mail=$gn*)(mail=$snt*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   152
                if ($snt && !$gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   153
                    $filter = "(|(&(sn=$snt*)(givenName=$gn*))(mail=$snt*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   154
                if (!$sn && $gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   155
                    $filter = "(|(&(sn=$snt*)(givenName=$gn*))(mail=$gn*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   156
                $search=@ldap_search($ldapconn,$base,$filter,$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   157
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   158
            if (isset($snt) && $snt && !ldap_count_entries($ldapconn,$search))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   159
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   160
                if ($gn && $snt)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   161
                    $filter = "(|(&(sn=$sntr*)(givenName=$gnr*))(mail=$gnr*)(mail=$sntr*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   162
                if ($snt && !$gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   163
                    $filter = "(|(&(sn=$sntr*)(givenName=$gnr*))(mail=$sntr*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   164
                if (!$sn && $gn)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   165
                    $filter = "(|(&(sn=$sntr*)(givenName=$gnr*))(mail=$gnr*))";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   166
                $search=@ldap_search($ldapconn,$base,$filter,$afields);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   167
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   168
            if (ldap_count_entries($ldapconn,$search))
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   169
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   170
                $info = ldap_get_entries($ldapconn, $search);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   171
                for ($i=0; $i<$info["count"]; $i++)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   172
                    $uid = $info[$i]["uid"][0];
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   173
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   174
            return $uid;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   175
        }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   176
        else {return 0;}
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   177
    }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   178
    
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   179
	include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   180
    if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   181
    $sql = "CALL fhiiqm.tel_list_comp('1','','','',@anz);"; 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   182
    $result = $dbc ->queryObjectArray($sql);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   183
    if ($result)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   184
    {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   185
        include($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/conf.inc.php");
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   186
        $erfolg = 1;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   187
        $ldaphost = "a-rth-urp-hil-ipdenu.rz-berlin.mpg.de";  // Ihr ldap server
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   188
//        $ldaphost = "ldaps://a-rth-urp-hil-ipdenu.rz-berlin.mpg.de";  // Ihr ssl-ldap server
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   189
        $ldapport = 389;                 // StandardPortnummer ldap server
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   190
//        $ldapport = 636;                 // SSL-Portnummer ldap server
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   191
        
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   192
        // Verbindung zu LDAP
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   193
//        if (!$ldapconn) $ldapconn = ldap_connect( $ldaphost, $ldapport );
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   194
//        ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); // nur zur Fehlersuche
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   195
        if (!$ldapconn) $ldapconn = ldap_connect( $ldaphost) 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   196
            or die( "Keine Verbindung zu $ldaphost möglich" );
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   197
        ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   198
        ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   199
        if ($ldapconn && ldap_start_tls($ldapconn)) $ldapbd = @ldap_bind($ldapconn, $ldaprdn, $ldappwd);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   200
//        if ($ldapconn) $ldapbd = @ldap_bind($ldapconn, $ldaprdn, $ldappwd);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   201
        if (!$ldapbd) echo ldap_errno($ldapconn).": ".ldap_error($ldapconn)."<br/>";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   202
       
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   203
        if ($ldapbd)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   204
        {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   205
            foreach ($result as $row) 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   206
            {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   207
                $sn = $row->name;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   208
                $gn = $row->vorname;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   209
                $tels = $row->tel;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   210
                $mail = $row->email;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   211
                $atel = explode("; ",$tels);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   212
                foreach ($atel as $key=>$tel)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   213
                {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   214
                    $pat = "/([^0-9\+\-\ \(\)\#\/])+/";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   215
                    if (preg_match($pat,$tel)) unset($atel[$key]);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   216
                    elseif (strlen($tel) > 4 && substr($tel,0,1) != 0 ) $atel[$key] = '0'.$tel;
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   217
                    elseif (substr($tel,0,1) == '#')
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   218
                    {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   219
                        $atel[$key] = substr($tel,1);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   220
                    } 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   221
                }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   222
                $atelf = array_filter($atel); //filtert alle 'falschen' Werte und damit key/value-Eintraege  aus $atel
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   223
                if (isset($atel) && $atel && count($atelf) > 0)
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   224
                {
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   225
//                    print_r($atelf); echo "->$sn, $gn<br />";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   226
                    $erfolg =  $erfolg && ldap_replace($sn,$gn,$mail,$atelf);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   227
                }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   228
            }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   229
            if ($erfolg) $erfolg = "mit Erfolg"; else $erfolg = "nicht oder nur teilweise"; 
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   230
            echo "LDAP wurde $erfolg aktualisiert<br />";
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   231
            ldap_unbind($ldapconn);
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   232
        }
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   233
   }      
d652bbba2d43 fhiiqm: achilleus -> db2, Korrekturen
Bettina Schwarzer
parents:
diff changeset
   234
?>