<?php
/**
* @author Bettina Schwarzer, Fritz-Haber-Institut
* @copyright 07/2012, 08/2012
*
* INSERT,UPDATE Informationen Betriebsstoerung, Betriebsanweisung
*/
error_reporting(E_ALL ^ E_NOTICE);
session_start();
if (! isset($_SESSION["userid"]))
{
include_once ("inc/func_lib.inc.php");
login($_SERVER["PHP_SELF"]);
exit;
}
$ityp = $_GET["t"]; // t=7 - Betriebsstoerung, t=8 - Betriebsanweisung
if ($ityp == 71) $repr = "dd"; else $repr = "i";
if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array($repr."r",$_SESSION["recht"]) && !in_array($repr."e",$_SESSION["recht"])))
{
header("Location: start.php");
exit;
}
$infid = $_GET["i"];
$zeil = $_GET["z"];
if (!$zeil) $zeil = 10; // Anzahl der gezeigten Zeilen
$start = $_GET["st"]; // Start bei DS $start+1
if (!$start) $start=0;
$sort = $_GET["s"]; // Sortierung nach Spalte
$dir = $_GET["d"]; // Sortierrichtung
$fnum = $_GET["f"]; // Spaltennummer, nach der aktuell gefiltert wird
$filter = $_GET["b"]; // Filterbegriff
// $_GET-Parameter zurück zur Infoliste mit den selben Einstellungen wie zuvor
$getp = "s=$sort&d=$dir&f=$fnum&b=$filter&st=$start&z=$zeil";
$del = $_POST["del"];
$sub = $_POST["eintragen"];
$dup = $_POST["dup"];
if (!$dup) $dup = $_GET["dp"];
$copy = $_GET["c"];
$inf = $_POST["inf"];
$ok = $_POST["ok"];
if (!$inf["okn"]) $ok = false;
$duptext="";
switch ($ityp)
{
case 7: $titel = "Betriebsstörung";
break;
case 71: $titel = "Betriebsstörung dezentrale Technik";
break;
case 8: $titel = "Betriebsanweisung";
break;
case 81: $titel = "Betriebsanweisung Anlage";
break;
}
if ($_FILES["ifile"]["error"] == 1 || $_FILES["ifile"]["error"] == 2)
{
echo "<p class='red'><b>Uploadfile zu ID '$infid' > 32MByte!.</b></p>\n";
$retf=0; $reti=0;
}
include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
$dbc = new dbconnection();
if ($dup)
{ // Info duplizieren
$tab = "Info";
$key = "info_ID";
$val = $infid;
// $ret=1;
$ret = duplicate_record ($tab, $key, $val);
if ($ret)
{
$infid_new=$ret;
// Infofilename loeschen
$sql = "UPDATE fhiiqm.Info SET info_file = NULL WHERE info_ID = $infid_new";
$retf = $dbc -> execute($sql);
if ($dbc->error) echo "<p class='red'>error loeschen Info-File: " . $dbc->error . "</p>";
// duplizieren Produkte
$sql = "INSERT INTO Info_Produkt SELECT $infid_new,produkt_ID FROM Info_Produkt WHERE info_ID = $infid";
$retp = $dbc -> execute($sql);
if ($dbc->error) echo "<p class='red'>error copy Info_Produkt: " . $dbc->error . "</p>";
// duplizieren Adressat
$sql = "INSERT INTO Info_Funktion SELECT $infid_new,fkt_ID FROM Info_Funktion WHERE info_ID = $infid";
$reta = $dbc -> execute($sql);
if ($dbc->error) echo "<p class='red'>error copy Info_Adressat: " . $dbc->error . "</p>";
// duplizieren Verantwortliche
$retv=1;
/* $sql = "INSERT INTO Info_Verantwortlich SELECT $infid_new,persknr,prioritaet FROM Info_Verantwortlich WHERE info_ID = $infid";
$retv = $dbc -> execute($sql);
if ($dbc->error) echo "<p class='red'>error copy Info_Verantwortlich: " . $dbc->error . "</p>";
*/
if ($ret && $retf && $retp && $reta && $retv)
{
$addr = $_SERVER["PHP_SELF"] . "?i=$infid_new&c=1&t=$ityp&$getp";
header("Location: $addr");
exit;
}
else $duptext = " - Fehler beim Duplizieren von ". $inf["iname"];
}
else $duptext = " - Fehler beim Duplizieren von ". $inf["iname"];
}
?>
<!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="css/db.css" rel="STYLESHEET" type="TEXT/CSS" media="screen"/>
<link href="css/db_print.css" rel="STYLESHEET" type="TEXT/CSS" media="print"/>
<link type="text/css" href="/fhiiqm/css/jquery/ui-lightness-1.8.21/jquery-ui-1.8.21.custom.css" rel="Stylesheet" />
<script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.21.custom.min.js"></script>
<?php echo "<title>Edit $titel</title>\n"; ?>
</head>
<body>
<script>
<!--
function split( val ) {
return val.split( /;\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
// $(document).ready(function() {
$(function() {
$("#titel").focus();
$("#persknr").autocomplete({
source: "/fhiiqm/inc/ma_list_ac.inc.php",
minLength: 2,
select: function(event,ui){$("#pid").val(ui.item.id);}
});
$("#cdat").datepicker({
dateFormat: 'yy-mm-dd', //nur Datum
yearRange: '2000:2025',
changeMonth: true,
changeYear: true,
firstDay: 1,
dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
});
$("#vdat").datepicker({
dateFormat: 'yy-mm-dd', //nur Datum
yearRange: '2000:2025',
changeMonth: true,
changeYear: true,
firstDay: 1,
dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
});
$("#bdat").datepicker({
dateFormat: 'yy-mm-dd', //nur Datum
yearRange: '2000:2025',
changeMonth: true,
changeYear: true,
firstDay: 1,
dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']
});
$("input[id='persknr']").addClass("long20");
$("input[id='cdat']").addClass("long10");
$("input[id='vdat']").addClass("long10");
$("input[id='bdat']").addClass("long10");
});
// Adressat mehrfach erstellen
var counter = 0;
var limit = 99;
var arr = new Array();
function addInput(divName){
if (counter == limit) {
alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
}
else {
var newdiv = document.createElement('div');
var count;
var opt="<option value='-1'></option>";
for (var key in arr)
{
opt = opt.concat("<option value='",key,"'>",key, " - ",arr[key],"</option>\n" );
}
opt += "</select>\n";
newdiv.innerHTML += "<select name='inf[adr][]'>"+opt;
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
function delInput(divId){
var kn = document.getElementById(divId);
while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SELECT" && kn.lastChild.nodeName != "A")
{
// alert ("vor "+kn.lastChild.nodeName+", nodetyp = "+ kn.lastChild.nodeType);
var knc = kn.lastChild;
document.getElementById(divId).removeChild(knc);
}
if (kn.lastChild.nodeName == "SELECT") document.getElementById(divId).removeChild(kn.lastChild);
}
-->
</script>
<?php
echo " ";
echo "<div class=\"float-br smaller\" valign='top'>";
echo " user: " . $_SESSION["userid"];
echo " <a class='sc' href='/fhiiqm/logout.php' title='Session beenden'>logout</a></div>\n";
echo "<div class=\"float-r\"><img src=\"img/document_image_ver.png\" border=\"0\" alt=\"Infodaten ändern\" title=\"Infodaten ändern\"/></div>\n";
//print_r($inf); echo "<br />ok = $ok, okn = " .$inf['okn'].", upload: " . $_FILES["ifile"]["error"] .", sub = $sub<br /><br />";
//print_r($_FILES["ifile"]); echo "<br /><br />";
echo "<div align='center'>";
if ($infid) $text = "editieren"; else $text = "erfassen";
if ($copy) $duptext = " (Kopie)";
echo "<h3>$titel $text$duptext<h3>";
echo "</div>\n";
if (!$ok || (!$sub && !$del && !$dup))
{
if ($infid && (!$sub || !$del) && !isset($inf))
{ // update
$sql = "SELECT info_ID,info_name_s,info_name_l,info_date,info_valid_from,info_valid_to,infotyp_ID,
i.persknr,lang,info_file,info_rel_ID,info_freigabe_ID,info_sort,
CONCAT(nachname,', ',vorname) AS aname, i.raum_ID, i.geb_ID
FROM fhiiqm.Info i LEFT OUTER JOIN fhiiqm.Mitarbeiter m
ON i.persknr=m.persknr LEFT OUTER JOIN Raum r
ON i.raum_ID = r.raum_ID
WHERE info_ID = $infid";
if ($result = $dbc -> queryObjectArray($sql))
{
foreach ($result as $row)
{
$inf["infid"] = $infid;
$inf["iname"] = $row->info_name_s;
$inf["ilong"] = $row->info_name_l;
$inf["cdat"] = $row->info_date;
$inf["vdat"] = $row->info_valid_from;
$inf["bdat"] = $row->info_valid_to;
$inf["ityp"] = $row->infotyp_ID;
$inf["persknr"] = $row->aname;
$inf["pers"] = $row->persknr;
$inf["infrel"] = $row->info_rel_ID;
$inf["ifname"] = $row->info_file;
$inf["lang"] = $row->lang;
$inf["sort"] = $row->info_sort;
$inf["raum"] = $row->raum_ID;
$inf["geb"] = $row->geb_ID;
$inf["fg"] = $row->info_freigabe_ID;
}
}
// Produkt
$sql = "SELECT produkt_ID FROM Info_Produkt WHERE info_ID = $infid";
if ($result = $dbc -> queryObjectArray($sql))
{
foreach ($result as $row)
{
$inf['prid'][] = $row->produkt_ID;
}
}
if (substr($ityp,0,1) !=8)
{
// Adressat
$sql = "SELECT i.fkt_ID, fkt_bez FROM fhiiqm.Info_Funktion i
LEFT OUTER JOIN Funktion f ON i.fkt_ID=f.fkt_ID WHERE info_id = $infid";
if ($result = $dbc->queryObjectArray($sql))
{
foreach ($result as $row)
$inf["adr"][] = $row->fkt_ID;
}
}
if ($ityp == 81) // Betriebsanweisung Anlage
{
$sql = "SELECT al_ID FROM Info_Anlage WHERE info_ID = $infid";
$inf["anl"] = $dbc -> querySingleItem($sql);
}
// print_r($inf); echo "<br /><br />";
}
include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/info_betrst_form.inc.php");
if ($sub)
{
echo
"<tr>
<td>Upload Infodokument </td>
<td><input type=\"file\" name=\"ifile\" size=\"50\" maxlength=\"50\" value=\"" .
$_FILES["ifile"]["name"] . "\"/></td>
</tr>";
}
if ($sub || $del)
{
if ($sub)
$frage = "Alle Angaben ok?";
elseif ($del)
$frage = "Information wirklich löschen?";
echo "<tr>
<td class=\"red\" valign=\"top\" align=\"left\">$frage</td>
<td><input type=\"checkbox\" name=\"ok\" value=\"1\"";
if ($ok) echo "checked=\"checked\"";
echo " /></td>\n</tr>\n";
}
if (!is_null($_SESSION["recht"]) && in_array($repr."e",$_SESSION["recht"]))
{
echo "
<tr><td> </td>\n
<td><input class=\"button\" type=\"submit\" name=\"eintragen\" value=\" eintragen \" />";
if ($infid)
{
echo " <input class=\"buttonr\" type=\"submit\" value=\"löschen\" name=\"del\" title=\"delete\" />";
echo " <input class=\"button\" type=\"submit\" value=\"duplizieren\" name=\"dup\" title=\"delete\" />";
}
echo "</td></tr>\n";
}
echo "</table>\n";
echo "</div>\n";
// if (!is_null($_SESSION["recht"]) && !in_array("le", $_SESSION["recht"]))
echo "<p class='sc'> <a href=\"info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">« zur Infoliste</a></p>\n";
echo "</form>\n";
}
else
{
echo "<div align='center'>\n";
if ($del)
{ // loescht auch m:n - Tabellen wegen Loeschweitergabe
$sql = "DELETE FROM Info WHERE info_ID = '$infid'";
$retdi = $dbc -> execute($sql);
if ($retdi)
{
include ("inc/file_upload.inc.php");
$retdf = mod_file("/var/www/fhiiqm/infos",$infid,"","del"); // Loeschen Dokument
if ($retdf) echo "<p class='green'><b>Infodokument zu ID '$infid' wurde gelöscht.</b></p>\n";
echo "<p class='green'><b>Infodaten zu ID '$infid' wurden gelöscht.</b></p>\n";
echo "<br /><br />\n";
// Anzeigen geloeschter Infodaten
if ($fname)
$ifile = $infid . "_" . $fname;
else
$ifile = $inf['ifname'];
echo "<p class='green'><b>DELETE: Daten zu '".$inf["iname"]."' wurden erfolgreich gelöscht.</b></p>\n";
include ("inc/info_dat_show.inc.php");
}
else
{
echo "<p class='red'><b>DELETE: Daten zu '".$inf["iname"]."' konnten nicht gelöscht werden!</b></p>\n";
echo "sql = $sql<br />";
echo "error DELETE: " . $dbc->error . "<br />";
}
}
else //INSERT oder UPDATE
{
//daten speichern
$inf["iname"] = substr($inf["iname"],0,300);
$inf["ilong"] = substr($inf["ilong"],0,8000);
$inf["sort"] = substr($inf["sort"],0,10); // 28.03.2012 5 -> 10 Zeichen
if ($ityp == 8) $inf["sort"] = null;
if ($inf["ityp"] == -1) $inf["ityp"] = null;
if ($inf["persknr"] < "!") $inf["pers"] = null;
if ($inf["infrel"] == -1) $inf["infrel"] = null;
if ($inf["lang"] == -1) $inf["lang"] = null;
if ($inf["ifname"] < "!") $inf["ifname"] = null;
if ($inf["raum"] == -1) $inf["raum"] = null;
if ($inf["geb"] == -1) $inf["geb"] = null;
if ($inf["cdat"] == "") $inf["cdat"] = null;
if ($inf["vdat"] == "") $inf["vdat"] = null;
if ($inf["bdat"] == "") $inf["bdat"] = null;
if ($inf["fg"] == -1) $inf["fg"] = null;
if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
$stmt = $dbc -> stmtinit();
if (is_object($stmt))
{
if ($infid)
{ //UPDATE
// alter Name Infofile
$sql = "SELECT info_file FROM Info WHERE info_ID = $infid";
$ifile_old = $dbc -> querySingleItem($sql);
$stmt -> prepare("UPDATE fhiiqm.Info SET
info_name_s = ?,
info_name_l = ?,
info_date = ?,
info_valid_from = ?,
info_valid_to = ?,
infotyp_ID = ?,
persknr = ?,
lang = ?,
info_freigabe_ID = ?,
info_sort = ?,
info_rel_ID = ?,
raum_ID = ?,
geb_ID = ? WHERE info_ID = $infid");
$stmt -> bind_param('sssssiisisiis',$inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["fg"],$inf["sort"],$inf["infrel"],$inf["raum"],$inf["geb"]);
$result = $stmt -> execute();
if ($stmt->error) echo "error UPDATE Info: " . $stmt->error . "<br><br>\n";
}
else
{ //INSERT
// print_r($inf); echo "<br /><br />";
$stmt -> prepare ("INSERT INTO Info (info_name_s,info_name_l,info_date,info_valid_from,info_valid_to,
infotyp_ID,persknr,lang,info_freigabe_ID,info_sort,info_rel_ID,raum_ID,geb_ID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt -> bind_param('sssssiisisiis', $inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["fg"],$inf["sort"],$inf["infrel"],$inf["raum"],$inf["geb"]);
$result = $stmt -> execute();
if ($stmt->error) echo "error INSERT Info: " . $stmt->error . "<br><br>\n";
if ($result)
{ // INSERT o.k.
// info_ID ermitteln
$infid = $dbc -> insertId();
}
}
} // stmt-Objekt
if ($result)
{
// echo "upload error: ". $_FILES["ifile"]["error"] . "<br /><br />";
// n:m Tabellen INSERT
include ("inc/info_tab_ins.inc.php");
// upload File
if ($_FILES["ifile"]["error"] == 1 || $_FILES["ifile"]["error"] == 2)
{
echo "<p class='red'><b>Uploadfile zu ID '$infid' > 32MByte!.</b></p>\n";
$retf=0; $reti=0;
}
elseif (is_uploaded_file($_FILES["ifile"]["tmp_name"]) && isset($_FILES["ifile"]["name"]) && $_FILES["ifile"]["name"] )
{
include ("inc/file_upload.inc.php");
$fname = gen_filename($inf['ifname'],"ifile",$infid);
$retdf = mod_file("/var/www/fhiiqm/infos",$infid,"","del"); // Loeschen alte Datei
$retf = upload("ifile", $fname, $infid, "infos"); // Datei prüfen und in Dokumentenverzeichnis verschieben
if ($retf)
{ // upload o.k.
//UPDATE des Filenamens
$sql = "UPDATE Info SET info_file = '" . $infid . "_" . $fname ."' WHERE info_ID=$infid";
$reti=$dbc->execute($sql);
if (!$reti)
echo $dbc -> error . "<br>\n";
}
}
else
{// nur Aenderung Dateiname
if ($inf["ifname"]) // Dateiname vergeben
{
include ("inc/file_upload.inc.php");
$fname = gen_filename($inf["ifname"],$ifile_old,$infid,0);
$len = strlen($infid)+1;
if (substr($fname,0,$len) != "$infid" . "_") $fname = $infid . "_" . $fname;
if ($inf["ifname"] != $ifile_old)
{
$retf = mod_file("/var/www/fhiiqm/infos",$infid,$fname,"upd"); // Umbenennen alte Datei
if ($retf)
{
$sql = "UPDATE Info SET info_file = '" . $fname . "' WHERE info_ID=$infid";
$reti=$dbc->execute($sql);
if (!$reti)
echo $dbc -> error . "<br>\n";
if (substr($fname,0,$len) == "$infid" . "_") $fname = substr($fname,$len,50);
}
}
else
{
//kein Upload, keine Dateinamenaenderung
if (substr($fname,0,$len) == "$infid" . "_") $fname = substr($fname,$len,50);
$retf=1; $reti=1;
}
}
else // kein Dateiname angegeben
{
include ("inc/file_upload.inc.php");
$retf=1; $reti=1;
if ($ifile_old)
{ // Loeschen alte Datei
$retf = mod_file("/var/www/fhiiqm/infos",$infid,"","del");
if ($retf)
{
$sql = "UPDATE Info SET info_file = null WHERE info_ID=$infid";
$reti=$dbc->execute($sql);
if (!$reti)
echo $dbc -> error . "<br>\n";
}
}
}
}
}
if ($result && $retf && $reti && $reta && $retp && $retv && $retl) // INSERT/UPDATE Info
{
//Eingabe Daten, Upload File erfolgreich
echo "<p class='green'><b>Infodaten zu ID '$infid' wurden erfolgreich gespeichert.</b></p>\n";
echo "<br /><br />\n";
// Anzeigen gespeicherte Infodaten
if ($fname)
$ifile = $infid . "_" . $fname;
else
$ifile = $inf['ifname'];
include ("inc/info_dat_show.inc.php");
}
} // INSERT / UPDATE
echo "</div>";
echo "<p class='sc'> <a href=\"info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">Infoliste</a></p>\n";
echo "<p class='sc'> <a href=\"".$_SERVER["PHP_SELF"]."?t=" . $ityp ."\" target=\"_self\" title=\"Info erfassen\">Weitere $titel erfassen</a></p>\n";
} // Form o.k. und submit
?>
</body>
</html>