<?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;
}
?>