--- a/fhiiqm/inc/func_lib.inc.php Wed Jul 31 15:10:48 2013 +0200
+++ b/fhiiqm/inc/func_lib.inc.php Thu Sep 12 09:04:56 2013 +0200
@@ -1,322 +1,632 @@
-<?php
-
-/**
- * @author Bettina Schwarzer, Fritz-Haber-Institut
- * @copyright 06/2011
- *
- *
- */
-
- function tab_column($colnum=2,$bez,$sort,$dir,$fcol=0,$fanr=0,$filtb="",$start="",$anzds="25",$id="",$g=0,$tab="",$adr="")
- {
- /** beliebige Tabellenspalte mit Sortier-/Filtersymbolen und Links generieren
- * Parameter
- * $colnum SpaltenNr. in SELECT-Statement
- * $bez Spaltenbezeichnung
- * $sort aktuelle SortspaltenNr.
- * $dir Sortrichtung (ASC/DESC)
- * $fcol SpaltenNr. Filter (=0, wenn nicht gefiltert werden soll)
- * $fanr aktuelle FilterspaltenNr.
- * $filtb Filterbegriff
- * $start ab Datensatz $start+1
- * $anzds Anzahl angezeigter Datensaetze
- * $id fuer spezielle ID als zusaetzl. Filter (Laser-Log)
- * $g Gesamtansicht (rag-gefahr-massnahmen-vorsorge)
- * [$tab fuer tab-basierte Seite
- * $adr wohin gehen (Teilseite)]
- */
-
- if ($colnum == $sort)
- if ($dir == 'DESC')
- {
- $auf = "auf";
- $ab = "ab_activ";
- }
- else
- {
- $auf = "auf_activ";
- $ab = "ab";
- }
- else
- {
- $auf = "auf";
- $ab = "ab";
- }
-
- if ($bez == "Haus") $tip = "Haus: A, B, BES, C, D, E, F, FAB, HAR, K, L, M, N, P, Q, R, S, T, U"; else $tip = "Filter";
- if ($tab > "!")
- {
- $addr = $adr;
- $ank = $tab;
- }
- else
- {
- $addr = $_SERVER['PHP_SELF'];
- $ank = "";
- }
- if ($fcol>0 && $fanr>0) // Filtern nach Spalte moeglich
- {
- if ($fcol == $fanr) $filt = "filter_activ"; else $filt = "filter";
- $filt = " <a href='".$addr."$ank?f=$fcol&s=$sort&d=$dir&st=$start&z=$anzds&i=$id&g=$g'><img src='/fhiiqm/img/$filt.gif' border='0' width='14' hight='11' alt='$tip' title='$tip'></a>";
- }
- else
- $filt="";
- if ($filtb>'!') $where = "&f=$fanr&b=$filtb&i=$id&g=$g"; else $where="&i=$id&g=$g";
- echo "<th>$bez <a href='".$addr."$ank?s=$colnum$where&st=$start&z=$anzds'><img src='/fhiiqm/img/$auf.gif' border='0' width='11' hight='11' alt='sort aufsteigend' title='sort aufsteigend'></a>
- <a href='".$addr."$ank?s=$colnum&d=DESC$where&st=$start&z=$anzds'><img src='/fhiiqm/img/$ab.gif' border='0' width='11' hight='11' alt='sort absteigend' title='sort absteigend'></a>$filt</th>\n";
- }
-
- function date_obj($jahr,$mon,$tag)
- {
- /** prueft auf valides Datum und erstellt DateTime-Objekt, wenn o.k.
- * Voraussetzung: Klasse 'DateTime_s' ist included
- */
- include_once ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
- if ($jahr && $mon && $tag)
- {
- $dat = $jahr."-".$mon."-".$tag;
- // Datum valid?
- if (!$dat = new DateTime_s($dat)) $dat = null;
- }
- else
- $dat = null;
- return $dat;
-
- }
-
- function liste_links($start,$zeil,$anz,$liste)
- {
- /** erstellt links zu Seiten einer Liste
- * Parameter
- * $start Beginn bei DS $start+1 (1.DS -> $start=0)
- * $zeil Anzahl Zeilen pro Seite
- * $anz Anzahl DS gesamt
- * $liste weitere Inhalte fuer $_GET-Array
- */
- $page = 1;
- while (($page-1)*$zeil < $anz)
- {
- $be = ($page-1)*$zeil+1;
- if (($page-1)*$zeil+$zeil < $anz) $en = ($page-1)*$zeil+$zeil; else $en = $anz;
- $st = ($page-1)*$zeil;
- if ($start == $be-1)
- echo "$be - $en";
- else
- echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?st=$st$liste\" class=\"sc\">$be - $en</a>";
- if (($page-1)*$zeil+$zeil < $anz) echo "<span class=\"sc\"> | </span>";
- $page++;
- }
-
- }
-
- function login($target, $headl="")
- {
- /** zeigt Login-Form, prueft userid und passwort, leitet zu gewuenschter Seite weiter
- * Parameter
- * $target Zieladresse
- * $headl Ueberschrift Loginform
- */
-
- session_start();
- if ($_SESSION["userid"])
- {
- header("Location: $target");
- exit;
- }
-
-
-
- $login = $_POST["login"];
- $log = $_POST["log"];
-
- if ($login)
- {
- include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
- if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
-
- $stmt = $dbc -> stmtinit();
- if (is_object($stmt))
- {
- $stmt -> prepare("SELECT userid, pwd FROM userweb WHERE userid = ?");
- $stmt -> bind_param('s',$log["user"]);
- $result = $stmt -> execute();
- // $stmt -> store_result(); // wegen weiterer query dies oder $stmt -> free_result();
- }
- if ($result)
- {
- if ($log["pass"] <= '') $log["pass"] = null;
- $stmt->bind_result($userid, $pwdmd5);
- if ($stmt->fetch())
- {
-// if ($pwdmd5 == md5($log["pass"]) || $log["pass"]==null)
- if ($pwdmd5 === md5($log["pass"]) || ($pwdmd5 === null && $log["pass"] === null))
- {
- $_SESSION = array();
- $_SESSION["userid"] = $userid;
-
- // Recht
- $stmt -> free_result(); // wegen weiterer query
- $sql = "SELECT recht_ID FROM user_recht WHERE userid = '$userid'";
- if ($res = $dbc -> queryObjectArray($sql))
- {
- $arecht = array();
- foreach ($res as $row)
- { $arecht[] = $row->recht_ID;}
- if (count($arecht)>0)
- $_SESSION["recht"] = $arecht;
- else
- $_SESSION["recht"] = null;
- }
- else
- {
- $_SESSION["recht"] = null;
-// echo "error_recht: " . $dbc->error . "<br />";
- }
-// print_r($arecht);
-
- // Recht Produkt-Gruppe
- $sql = "SELECT prod_group_ID FROM user_prodgroup WHERE userid = '$userid'";
- if ($re = $dbc -> queryObjectArray($sql))
- {
- $pgrecht = array();
- foreach ($re as $row)
- { $pgrecht[] = $row->prod_group_ID;}
- if (count($pgrecht)>0)
- $_SESSION["prodg"] = $pgrecht;
- else
- $_SESSION["prodg"] = null;
- }
- else
- $_SESSION["prodg"] = null;
- header("Location: $target");
- exit;
- }
- else
- $err2 = "<br /><span class=\"red\">Passwort ist nicht korrekt</span>\n";
- }
- else
- $err1 = "<br /><span class=\"red\">Username ist nicht korrekt</span>\n";
-
- }
- }
- if ($err1 || $err2 || !$log)
- {
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-
- <head>
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
- <link href="/fhiiqm/css/db.css" rel="STYLESHEET" type="TEXT/CSS" />
-
- <title>Login fhiiqm</title>
- </head>
-
- <body onload="document.flogin.user.focus();">
- <!-- <div class="float-r"><img src="img/document_mark_as_final.png" border="0" alt="Verträge" title="Verträge"/></div> -->
-
- <?php
- include ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/form/login_form.inc.php");
- echo "</body>
- </html>\n";
- }
- }
-
- function duplicate_record ($table, $key_name, $key_value, $auto=1)
- {
- /** dupliziert Datensatz in table
- * Parameter
- * $table Tabellenname
- * $key_name Name ID-Spalte
- * $key_value Wert ID des DSes, der dupliziert werden soll
- * $auto ID ist Auto-Wert
- */
-
- include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
- global $dbc; // Verbindung ist schon da?
- if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
-
- // erfragen Namen aller Felder in $table
- $sql = 'SHOW COLUMNS FROM ' . $table . ';';
- $result = $dbc -> queryObjectArray($sql);
-
- // Generieren der INSERT-Abfrage mit allen Feldern ausser ID-Feld
- $query = 'INSERT INTO ' . $table . ' (SELECT ';
-
- foreach ($result as $row)
- {
- if ($row->Field == $key_name && $auto) {
- $query .= 'NULL, ';
- }
- elseif ($row->Field == $key_name && !$auto)
- {$query .= '"'. $key_value . '_COPY", ';}
- else {
- $query .= $row->Field . ', ';
- } // END IF
- }
-
- $query = substr($query, 0, strlen($query) - 2);
- $query .= ' FROM ' . $table . ' WHERE ' . $key_name . ' = "' . $key_value . '")';
-// echo "$query<br />";
- $ret = $dbc -> execute($query);
- if ($ret && $auto)
- {
- // Return new id
- $new_id = $dbc -> insertId();
- return $new_id;
- }
- elseif ($ret && !$auto)
- return $key_value . "_COPY";
- else
- return false;
-/*
- return $query;
-*/
- }
-
- function dbformat_wert($wert)
- {
- /** wandelt Dezimalzahl mit Komma und Tausender-Trennzeichen in Datenbankformat
- *
- * Parameter
- * $wert - zu konvertierende Zahl
- */
-
- if (isset($wert) && $wert<>0)
- {
- if (strpos($wert,',') >0)
- {
- $wert = str_replace(',','.',$wert);
- $aw = explode('.',$wert);
- if (count($aw) > 2) // mit Dezimalpunkt und Tausendertrennzeichen
- {
- for ($i=0; $i<count($aw)-1; $i++)
- {
- $dbw .= $aw[$i];
- }
- $dbw .= "." .$aw[count($aw)-1];
- }
- else // kein Dezimalpunkt,nur Kommastellen
- $dbw = $wert;
- }
- else
- {
- $aw = explode('.',$wert);
- if (count($aw) > 1 && strlen($aw[count($aw)-1]) == 2)
- { // Dezimalpunkt mit 2 Stellen danach (= .nn)
- for ($i=0; $i<count($aw)-1; $i++)
- {
- $dbw .= $aw[$i];
- }
- $dbw .= "." .$aw[count($aw)-1];
- }
- else
- $dbw = str_replace('.','',$wert);
- }
- return $dbw;
- }
- else
- return 0;
- }
-
+<?php
+
+/**
+ * @author Bettina Schwarzer, Fritz-Haber-Institut
+ * @copyright 06/2011
+ *
+ *
+ */
+
+ function tab_column($colnum=2,$bez,$sort,$dir,$fcol=0,$fanr=0,$filtb="",$start="",$anzds="25",$id="",$g=0,$tab="",$adr="")
+ {
+ /** beliebige Tabellenspalte mit Sortier-/Filtersymbolen und Links generieren
+ * Parameter
+ * $colnum SpaltenNr. in SELECT-Statement
+ * $bez Spaltenbezeichnung
+ * $sort aktuelle SortspaltenNr.
+ * $dir Sortrichtung (ASC/DESC)
+ * $fcol SpaltenNr. Filter (=0, wenn nicht gefiltert werden soll)
+ * $fanr aktuelle FilterspaltenNr.
+ * $filtb Filterbegriff
+ * $start ab Datensatz $start+1
+ * $anzds Anzahl angezeigter Datensaetze
+ * $id fuer spezielle ID als zusaetzl. Filter (Laser-Log)
+ * $g Gesamtansicht (rag-gefahr-massnahmen-vorsorge)
+ * [$tab fuer tab-basierte Seite
+ * $adr wohin gehen (Teilseite)]
+ */
+
+ if ($colnum == $sort)
+ if ($dir == 'DESC')
+ {
+ $auf = "auf";
+ $ab = "ab_activ";
+ }
+ else
+ {
+ $auf = "auf_activ";
+ $ab = "ab";
+ }
+ else
+ {
+ $auf = "auf";
+ $ab = "ab";
+ }
+
+ if ($bez == "Haus") $tip = "Haus: A, B, BES, C, D, E, F, FAB, HAR, K, L, M, N, P, Q, R, S, T, U"; else $tip = "Filter";
+ if ($tab > "!")
+ {
+ $addr = $adr;
+ $ank = $tab;
+ }
+ else
+ {
+ $addr = $_SERVER['PHP_SELF'];
+ $ank = "";
+ }
+ if ($fcol>0 && $fanr>0) // Filtern nach Spalte moeglich
+ {
+ if ($fcol == $fanr) $filt = "filter_activ"; else $filt = "filter";
+ $filt = " <a href='".$addr."$ank?f=$fcol&s=$sort&d=$dir&st=$start&z=$anzds&i=$id&g=$g'><img src='/fhiiqm/img/$filt.gif' border='0' width='14' hight='11' alt='$tip' title='$tip'></a>";
+ }
+ else
+ $filt="";
+ if ($filtb>'!') $where = "&f=$fanr&b=$filtb&i=$id&g=$g"; else $where="&i=$id&g=$g";
+ echo "<th>$bez <a href='".$addr."$ank?s=$colnum$where&st=$start&z=$anzds'><img src='/fhiiqm/img/$auf.gif' border='0' width='11' hight='11' alt='sort aufsteigend' title='sort aufsteigend'></a>
+ <a href='".$addr."$ank?s=$colnum&d=DESC$where&st=$start&z=$anzds'><img src='/fhiiqm/img/$ab.gif' border='0' width='11' hight='11' alt='sort absteigend' title='sort absteigend'></a>$filt</th>\n";
+ }
+
+ function date_obj($jahr,$mon,$tag)
+ {
+ /** prueft auf valides Datum und erstellt DateTime-Objekt, wenn o.k.
+ * Voraussetzung: Klasse 'DateTime_s' ist included
+ */
+ include_once ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
+ if ($jahr && $mon && $tag)
+ {
+ $dat = $jahr."-".$mon."-".$tag;
+ // Datum valid?
+ if (!$dat = new DateTime_s($dat)) $dat = null;
+ }
+ else
+ $dat = null;
+ return $dat;
+
+ }
+
+ function liste_links($start,$zeil,$anz,$liste)
+ {
+ /** erstellt links zu Seiten einer Liste
+ * Parameter
+ * $start Beginn bei DS $start+1 (1.DS -> $start=0)
+ * $zeil Anzahl Zeilen pro Seite
+ * $anz Anzahl DS gesamt
+ * $liste weitere Inhalte fuer $_GET-Array
+ */
+ $page = 1;
+ while (($page-1)*$zeil < $anz)
+ {
+ $be = ($page-1)*$zeil+1;
+ if (($page-1)*$zeil+$zeil < $anz) $en = ($page-1)*$zeil+$zeil; else $en = $anz;
+ $st = ($page-1)*$zeil;
+ if ($start == $be-1)
+ echo "$be - $en";
+ else
+ echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?st=$st$liste\" class=\"sc\">$be - $en</a>";
+ if (($page-1)*$zeil+$zeil < $anz) echo "<span class=\"sc\"> | </span>";
+ $page++;
+ }
+
+ }
+
+ function login_db($target, $headl="")
+ {
+ /** zeigt Login-Form, prueft userid und passwort, leitet zu gewuenschter Seite weiter
+ * Authentifizierung gegen die Datenbank
+ * Parameter
+ * $target Zieladresse
+ * $headl Ueberschrift Loginform
+ */
+
+ session_start();
+ if ($_SESSION["userid"])
+ {
+ header("Location: $target");
+ exit;
+ }
+
+
+
+ $login = $_POST["login"];
+ $log = $_POST["log"];
+
+ if ($login)
+ {
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
+ if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
+
+ $stmt = $dbc -> stmtinit();
+ if (is_object($stmt))
+ {
+ $stmt -> prepare("SELECT userid, pwd FROM userweb WHERE userid = ?");
+ $stmt -> bind_param('s',$log["user"]);
+ $result = $stmt -> execute();
+ // $stmt -> store_result(); // wegen weiterer query dies oder $stmt -> free_result();
+ }
+ if ($result)
+ {
+ if ($log["pass"] <= '') $log["pass"] = null;
+ $stmt->bind_result($userid, $pwdmd5);
+ if ($stmt->fetch())
+ {
+// if ($pwdmd5 == md5($log["pass"]) || $log["pass"]==null)
+ if ($pwdmd5 === md5($log["pass"]) || ($pwdmd5 === null && $log["pass"] === null))
+ {
+ $_SESSION = array();
+ $_SESSION["userid"] = $userid;
+
+ // Recht
+ $stmt -> free_result(); // wegen weiterer query
+ $sql = "SELECT recht_ID FROM user_recht WHERE userid = '$userid'";
+ if ($res = $dbc -> queryObjectArray($sql))
+ {
+ $arecht = array();
+ foreach ($res as $row)
+ { $arecht[] = $row->recht_ID;}
+ if (count($arecht)>0)
+ $_SESSION["recht"] = $arecht;
+ else
+ $_SESSION["recht"] = null;
+ }
+ else
+ {
+ $_SESSION["recht"] = null;
+// echo "error_recht: " . $dbc->error . "<br />";
+ }
+// print_r($arecht);
+
+ // Recht Produkt-Gruppe
+ $sql = "SELECT prod_group_ID FROM user_prodgroup WHERE userid = '$userid'";
+ if ($re = $dbc -> queryObjectArray($sql))
+ {
+ $pgrecht = array();
+ foreach ($re as $row)
+ { $pgrecht[] = $row->prod_group_ID;}
+ if (count($pgrecht)>0)
+ $_SESSION["prodg"] = $pgrecht;
+ else
+ $_SESSION["prodg"] = null;
+ }
+ else
+ $_SESSION["prodg"] = null;
+ header("Location: $target");
+ exit;
+ }
+ else
+ $err2 = "<br /><span class=\"red\">Passwort ist nicht korrekt</span>\n";
+ }
+ else
+ $err1 = "<br /><span class=\"red\">Username ist nicht korrekt</span>\n";
+
+ }
+ }
+ if ($err1 || $err2 || !$log)
+ {
+ ?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <link href="/fhiiqm/css/db.css" rel="STYLESHEET" type="TEXT/CSS" />
+
+ <title>Login fhiiqm</title>
+ </head>
+
+ <body onload="document.flogin.user.focus();">
+ <!-- <div class="float-r"><img src="img/document_mark_as_final.png" border="0" alt="Verträge" title="Verträge"/></div> -->
+
+ <?php
+ include ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/form/login_form.inc.php");
+ echo "</body>
+ </html>\n";
+ }
+ }
+
+ function login($target, $headl="")
+ {
+ /** zeigt Login-Form, prueft userid und passwort, leitet zu gewuenschter Seite weiter
+ * Authentifizierung gegen LDAP
+ * Parameter
+ * $target Zieladresse
+ * $headl Ueberschrift Loginform
+ */
+
+ session_start();
+ if ($_SESSION["userid"])
+ {
+ header("Location: $target");
+ exit;
+ }
+
+
+
+ $login = $_POST["login"];
+ $log = $_POST["log"];
+
+ if ($login)
+ {
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
+ if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
+
+ $stmt = $dbc -> stmtinit();
+ if (is_object($stmt))
+ {
+ $stmt -> prepare("SELECT userid FROM userweb WHERE userid = ?");
+ $stmt -> bind_param('s',$log["user"]);
+ $result = $stmt -> execute();
+ // $stmt -> store_result(); // wegen weiterer query dies oder $stmt -> free_result();
+ }
+ if ($result)
+ {
+ $ldaphost = "ldap.rz-berlin.mpg.de"; // ldap server
+ $ldapport = 389; // Die Portnummer ldap server
+ $ldapconn = ldap_connect( $ldaphost, $ldapport )
+ or die( "Keine Verbindung zu {$ldaphost} möglich" );
+ $stmt->bind_result($userid);
+ if ($stmt->fetch())
+ {
+ $ldaprdn = "uid=" . $log["user"].",ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
+ $ldappwd = $log["pass"];
+ ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
+ ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
+ if ($ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappwd))
+ {
+ ldap_close($ldapconn);
+ $_SESSION = array();
+ $_SESSION["userid"] = $userid;
+
+ // Recht
+ $stmt -> free_result(); // wegen weiterer query
+ $sql = "SELECT recht_ID FROM user_recht WHERE userid = '$userid'";
+ if ($res = $dbc -> queryObjectArray($sql))
+ {
+ $arecht = array();
+ foreach ($res as $row)
+ { $arecht[] = $row->recht_ID;}
+ if (count($arecht)>0)
+ $_SESSION["recht"] = $arecht;
+ else
+ $_SESSION["recht"] = null;
+ }
+ else
+ {
+ $_SESSION["recht"] = null;
+// echo "error_recht: " . $dbc->error . "<br />";
+ }
+// print_r($arecht);
+
+ // Recht Produkt-Gruppe
+ $sql = "SELECT prod_group_ID FROM user_prodgroup WHERE userid = '$userid'";
+ if ($re = $dbc -> queryObjectArray($sql))
+ {
+ $pgrecht = array();
+ foreach ($re as $row)
+ { $pgrecht[] = $row->prod_group_ID;}
+ if (count($pgrecht)>0)
+ $_SESSION["prodg"] = $pgrecht;
+ else
+ $_SESSION["prodg"] = null;
+ }
+ else
+ $_SESSION["prodg"] = null;
+ header("Location: $target");
+ exit;
+ }
+ else
+ $err2 = "<br /><span class=\"red\">Passwort ist nicht korrekt</span>\n";
+ }
+ else
+ $err1 = "<br /><span class=\"red\">Username ist nicht korrekt</span>\n";
+
+ }
+ }
+ if ($err1 || $err2 || !$log)
+ {
+ ?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <link href="/fhiiqm/css/db.css" rel="STYLESHEET" type="TEXT/CSS" />
+
+ <title>Login fhiiqm</title>
+ </head>
+
+ <body onload="document.flogin.user.focus();">
+ <!-- <div class="float-r"><img src="img/document_mark_as_final.png" border="0" alt="Verträge" title="Verträge"/></div> -->
+
+ <?php
+ include ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/form/login_form.inc.php");
+ echo "</body>
+ </html>\n";
+ }
+ }
+
+ function duplicate_record ($table, $key_name, $key_value, $auto=1)
+ {
+ /** dupliziert Datensatz in table
+ * Parameter
+ * $table Tabellenname
+ * $key_name Name ID-Spalte
+ * $key_value Wert ID des DSes, der dupliziert werden soll
+ * $auto ID ist Auto-Wert
+ */
+
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
+ global $dbc; // Verbindung ist schon da?
+ if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
+
+ // erfragen Namen aller Felder in $table
+ $sql = 'SHOW COLUMNS FROM ' . $table . ';';
+ $result = $dbc -> queryObjectArray($sql);
+
+ // Generieren der INSERT-Abfrage mit allen Feldern ausser ID-Feld
+ $query = 'INSERT INTO ' . $table . ' (SELECT ';
+
+ foreach ($result as $row)
+ {
+ if ($row->Field == $key_name && $auto) {
+ $query .= 'NULL, ';
+ }
+ elseif ($row->Field == $key_name && !$auto)
+ {$query .= '"'. $key_value . '_COPY", ';}
+ else {
+ $query .= $row->Field . ', ';
+ } // END IF
+ }
+
+ $query = substr($query, 0, strlen($query) - 2);
+ $query .= ' FROM ' . $table . ' WHERE ' . $key_name . ' = "' . $key_value . '")';
+// echo "$query<br />";
+ $ret = $dbc -> execute($query);
+ if ($ret && $auto)
+ {
+ // Return new id
+ $new_id = $dbc -> insertId();
+ return $new_id;
+ }
+ elseif ($ret && !$auto)
+ return $key_value . "_COPY";
+ else
+ return false;
+/*
+ return $query;
+*/
+ }
+
+ function dbformat_wert($wert)
+ {
+ /** wandelt Dezimalzahl mit Komma und Tausender-Trennzeichen in Datenbankformat
+ *
+ * Parameter
+ * $wert - zu konvertierende Zahl
+ */
+
+ if (isset($wert) && $wert<>0)
+ {
+ if (strpos($wert,',') >0)
+ {
+ $wert = str_replace(',','.',$wert);
+ $aw = explode('.',$wert);
+ if (count($aw) > 2) // mit Dezimalpunkt und Tausendertrennzeichen
+ {
+ for ($i=0; $i<count($aw)-1; $i++)
+ {
+ $dbw .= $aw[$i];
+ }
+ $dbw .= "." .$aw[count($aw)-1];
+ }
+ else // kein Dezimalpunkt,nur Kommastellen
+ $dbw = $wert;
+ }
+ else
+ {
+ $aw = explode('.',$wert);
+ if (count($aw) > 1 && strlen($aw[count($aw)-1]) == 2)
+ { // Dezimalpunkt mit 2 Stellen danach (= .nn)
+ for ($i=0; $i<count($aw)-1; $i++)
+ {
+ $dbw .= $aw[$i];
+ }
+ $dbw .= "." .$aw[count($aw)-1];
+ }
+ else
+ $dbw = str_replace('.','',$wert);
+ }
+ return $dbw;
+ }
+ else
+ return 0;
+ }
+
+ function ldap_replace($sn,$gn,$title,$roomnr,$tel,$mail,$dep,$ag)
+ {
+ /** ersetzt bestehende Eintraege von LDAP-Objektklassen
+ * erstellt weiteres Attribut zu Telefon und Arbeitsgruppe, falls erforderlich
+ *
+ * Parameter
+ * $sn
+ * $gn - givenName
+ * $title
+ * $roomnr - roomNumber
+ * $tel[] - telephonNumber
+ * $mail
+ * $dep - departmentNumber
+ * $ag[] - physicalDeliveryOfficeName
+ * */
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/conf.inc.php");
+ $ldaphost = "ldap.rz-berlin.mpg.de"; // Ihr ldap servers
+ $ldapport = 389; // Die Portnummer ihres ldap servers
+ global $ldapconn;
+ global $ldapbd;
+
+ // Verbindung zu LDAP
+ if (!$ldapconn) $ldapconn = ldap_connect( $ldaphost, $ldapport );
+ ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
+ ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
+ $ldapbd = @ldap_bind($ldapconn, $ldaprdn, $ldappwd);
+// echo "ldapbd=$ldapbd, ldaprdn=$ldaprdn<br />";
+
+ if ($ldapbd)
+ {
+ $base="ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
+ $uid = ldap_search_uid($sn,$gn);
+ //Parameter abfragen
+ if ($uid)
+ {
+ $dn = "uid=".$uid .",ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
+// echo "dn-mod = $dn<br />";
+ $su = array("ä","ö","ü","ß","Ä","Ö","Ü");
+ $rp = array("ae","oe","ue","ss","Ae","Oe","Ue");
+ $gn = str_replace($su,$rp,$gn);
+ $sn = str_replace($su,$rp,$sn);
+ $entry["sn"] = $sn;
+ $entry["givenName"] = $gn;
+ if (isset($title) && $title) $entry["title"] = $title;
+ if (isset($roomnr) && $roomnr) $entry["roomNumber"] = $roomnr;
+ if (isset($mail) && $mail) $entry["mail"] = $mail;
+ if (isset($dep) && $dep) $entry["departmentNumber"] = $dep;
+// print_r ($entry); echo "ldapconn=$ldapconn: single<br />";
+ $result1 = ldap_mod_replace($ldapconn, $dn, $entry);
+ if (!$result1)
+ {
+ printf("LDAP-Fehlernummer replace: %s<br>\n", ldap_errno($ldapconn));
+ printf("LDAP-Fehler replace: %s<br>\n", ldap_error($ldapconn));
+ }
+
+ if (is_array($tel) && $tel)
+ {
+ $entry2["telephoneNumber"] = array();
+ $result = ldap_mod_del($ldapconn, $dn, $entry2);
+ if (!$result)
+ {
+ printf("LDAP-Fehlernummer del1: %s<br>\n", ldap_errno($ldapconn));
+ printf("LDAP-Fehler del1: %s<br>\n", ldap_error($ldapconn));
+ }
+ foreach ($tel as $telf)
+ if ($telf > "!") $entry2["telephoneNumber"][] = $telf;
+ }
+ if (is_array($ag) && $ag)
+ {
+ $entry3["physicalDeliveryOfficeName"] = array();
+ $result = ldap_mod_del($ldapconn, $dn, $entry3);
+ if (!$result)
+ {
+ printf("LDAP-Fehlernummer del2: %s<br>\n", ldap_errno($ldapconn));
+ printf("LDAP-Fehler del2: %s<br>\n", ldap_error($ldapconn));
+ }
+ foreach ($ag as $agr)
+ if ($agr > "!") $entry2["physicalDeliveryOfficeName"][] = $agr;
+ }
+// print_r ($entry2); echo ": multiple<br />";
+ $result2 = ldap_mod_add($ldapconn, $dn, $entry2);
+ if (!$result2)
+ {
+ printf("LDAP-Fehlernummer add: %s<br>\n", ldap_errno($ldapconn));
+ printf("LDAP-Fehler add: %s<br>\n", ldap_error($ldapconn));
+ }
+
+ $filter = "(uid=".$uid.")";
+ $afields = array ("uid","cn","givenName","sn","title","userPassword","mail","departmentNumber","telephoneNumber","roomNumber","physicalDeliveryOfficeName");
+ if (!($search=@ldap_search($ldapconn,$base,$filter,$afields))) die("Unable to search ldap server");
+ echo "<div align = 'center'>LDAP-Eintrag nach Änderung 1<br />";
+ $info = ldap_get_entries($ldapconn, $search);
+ $bg1 = "#F8F8F8";
+ $bg2 = "#DEDFE1";
+ $bg = "#FFFFFF";
+// print_r ($info); echo "<br /><br />";
+
+ echo "<table border='0' cellspacing='2' cellpadding='2'>\n
+ <tr bgcolor='#68ACBF'><th>sn</th><th>givenName</th><th>cn</th><th>title</th><th>uid</th><th>userPassword</th><th>mail</th>
+ <th>departmentNumber</th><th>telephoneNumber</th><th>roomNumber</th><th>physicalDeliveryOfficeName</th></tr>\n";
+ for ($i=0; $i<$info["count"]; $i++)
+ {
+ if ($bg == $bg1) $bg = $bg2; else $bg = $bg1;
+ echo "<tr bgcolor='" . $bg . "'>";
+ echo "<td>". $info[$i]["sn"][0]."</td>";
+ echo "<td>". $info[$i]["givenname"][0]."</td>";
+ echo "<td>". $info[$i]["cn"][0]."</td>";
+ echo "<td>". $info[$i]["title"][0]."</td>";
+ echo "<td>". $info[$i]["uid"][0]."</td>";
+ echo "<td>". $info[$i]["userpassword"][0]."</td>";
+ echo "<td>". $info[$i]["mail"][0]."</td>";
+ echo "<td>". $info[$i]["departmentnumber"][0]."</td>";
+ $stel = "";
+ foreach ($info[$i]["telephonenumber"] as $tel)
+ $stel .= $tel . ", ";
+ echo "<td>". substr($stel,strpos($stel,",")+1,strlen(substr($stel,strpos($stel,",")+1))-2) . "</td>";
+ echo "<td>". $info[$i]["roomnumber"][0]."</td>";
+ $sag = "";
+ foreach ($info[$i]["physicaldeliveryofficename"] as $ag)
+ $sag .= $ag . ", ";
+ echo "<td>". substr($sag,strpos($sag,",")+1,strlen(substr($sag,strpos($sag,",")+1))-2) . "</td>";
+ echo "</tr>\n";
+ }
+ echo "</table>";
+ echo "</div>\n";
+
+ if (!$result1 || !$result2) return 0; else return 1;
+ }
+ else
+ {
+ echo "Nutzer '".$gn ." " . $sn ."' konnte nicht identifiziert werden.";
+ return 0;
+ }
+ }
+ }
+ function ldap_search_uid($sn,$gn)
+ {
+ /** Suchrt uid des gegebenen Nutzers
+ *
+ * Parameter
+ * $sn
+ * $gn - givenName
+ * */
+
+ include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/conf.inc.php");
+ $ldaphost = "ldap.rz-berlin.mpg.de"; // Ihr ldap servers
+ $ldapport = 389; // Die Portnummer ihres ldap servers
+
+ // Verbindung zu LDAP
+ if (!$ldapconn) $ldapconn = ldap_connect( $ldaphost, $ldapport );
+ ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
+ ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
+ if (!$ldapbd) $ldapbd = @ldap_bind($ldapconn, $ldaprdn, $ldappwd);
+
+ if ($ldapbd)
+ {
+ $base="ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de";
+ $su = array("ä","ö","ü","ß","Ä","Ö","Ü");
+ $rp = array("ae","oe","ue","ss","Ae","Oe","Ue");
+ $afields = array ("uid");
+ $filter = "(cn=" . $gn . " " . $sn .")";
+ $search=@ldap_search($ldapconn,$base,$filter,$afields);
+ if (!ldap_count_entries($ldapconn,$search))
+ {
+ $gnr = str_replace($su,$rp,$gn);
+ $snr = str_replace($su,$rp,$sn);
+ $filter = "(cn=" . $gnr . " " . $snr .")";
+ $search=@ldap_search($ldapconn,$base,$filter,$afields);
+ }
+ if (!ldap_count_entries($ldapconn,$search))
+
+ {
+ $gn = utf8_encode($gn);
+ $sn = utf8_encode($sn);
+ $filter = "(cn=" . $gn . " " . $sn .")";
+ $search=@ldap_search($ldapconn,$base,$filter,$afields);
+ }
+ if (ldap_count_entries($ldapconn,$search))
+ {
+ $info = ldap_get_entries($ldapconn, $search);
+ for ($i=0; $i<$info["count"]; $i++)
+ $uid = $info[$i]["uid"][0];
+ }
+ echo " $filter<br />";
+ if (isset($uid) && $uid) return $uid;
+ else return null;
+ }
+ }
?>
\ No newline at end of file