<?php
/**
* @author Bettina Schwarzer, Fritz-Haber-Institut
* @copyright 08/2012
*
* info_ed.php fuer tab
*/
error_reporting(E_ALL ^ E_NOTICE);
header('Content-type: text/html; charset="iso-8859-1',true);
session_start();
if (! isset($_SESSION["userid"]))
{
include_once ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
login($_SERVER["PHP_SELF"]);
exit;
}
if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array("ir",$_SESSION["recht"]) && !in_array("ie",$_SESSION["recht"])))
{
header("Location: start.php");
exit;
}
$ityp = $_GET["t"];
$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="";
if (!$infid) $infid = $inf['infid'];
// print_r($inf); echo "<br /><br />";
include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
if (!isset($dbc) || !$dbc) $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_Adressat SELECT $infid_new,info_adr_ID FROM Info_Adressat WHERE info_ID = $infid";
$reta = $dbc -> execute($sql);
if ($dbc->error) echo "<p class='red'>error copy Info_Adressat: " . $dbc->error . "</p>";
// duplizieren Verantwortliche
$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";
header("Location: $addr");
exit;
}
else $duptext = " - Fehler beim Duplizieren von ". $inf["iname"];
}
else $duptext = " - Fehler beim Duplizieren von ". $inf["iname"];
}
?>
<script>
function split( val ) {
return val.split( /;\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$(document).ready(function() {
$("#titel").focus();
$("#persknr").autocomplete({
source: "/fhiiqm/inc/ma_list_ac.inc.php",
minLength: 2,
select: function(event,ui){$("#pid").val(ui.item.id);}
});
$("#vpers")
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
alert ("bind: "+event.keyCode);
}
})
.autocomplete({
// source: "/fhiiqm/inc/ma_list_ac.inc.php",
// minLength: 2,
// select: function(event,ui){$("#pid").val(ui.item.id);}
source: function( request, response ) {
$.getJSON( "/fhiiqm/inc/ma_list_ac.inc.php", {
term: extractLast( request.term )
}, response );
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
if (this.value.length < 6) // zuvor Feld-id 'vpers' geleert und bis zu 5 Zeichen eingegeben
{ $("#vpid").val("");
// alert ("change2: "+ui.item.value+", vpid = "+ $("#vpid").val());
}
var terms = split( this.value );
// alert ("eingabe: "+terms+ ", ids="+idstr.valueOf());
// alert ("eingabe: "+terms+ ", ids="+$("#vpid").val());
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
// alert ("select: "+terms+ ", ids = "+$("#vpid").val());
this.value = terms.join( "; " );
var ids = $("#vpid").val().split(",");
ids.push(ui.item.id);
ids.join(",");
// alert ("ids = "+ids);
$("#vpid").val(ids);
return false;
},
change: function(event, ui){
// alert ("change1: ui.item.id = "+ ui.item.id);
},
search: function() {
// custom minLength
var term = extractLast( this.value );
if ( term.length < 2 ) {
return false;
}
}
});
$("#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");
});
</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=\"/fhiiqm/img/document_image_ver.png\" border=\"0\" alt=\"Infodaten ändern\" title=\"Infodaten ändern\"/></div>\n";
echo "<div align='center'>";
if ($infid) $text = "editieren"; else $text = "erfassen";
if ($copy) $duptext = " (Kopie)";
echo "<h3>Information $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,info_sort,betrag,
CONCAT(nachname,', ',vorname) AS aname
FROM fhiiqm.Info i LEFT OUTER JOIN fhiiqm.Mitarbeiter m
ON i.persknr=m.persknr
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["fg"] = $row->info_freigabe_ID;
$inf["sort"] = $row->info_sort;
$inf["betr"] = str_replace('.',',',$row->betrag);
}
}
// 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;
}
}
// Adressat
$sql = "SELECT info_adr_ID FROM Info_Adressat WHERE info_id = $infid";
if ($result = $dbc->queryObjectArray($sql))
{
foreach ($result as $row)
$inf["adr"][] = $row->info_adr_ID;
}
// Verantwortlicher
$sql = "SELECT iv.persknr,prioritaet, CONCAT (nachname, ', ',vorname) as ma
FROM Info_Verantwortlich iv INNER JOIN Mitarbeiter m ON iv.persknr=m.persknr
WHERE info_id = $infid
ORDER BY 3";
if ($result = $dbc->queryObjectArray($sql))
{
foreach ($result as $row)
{
$inf["vpers"] .= $row->ma . "; ";
$inf["vpn"] .= $row->persknr .",";
// $inf["prio"][] = $row->prioritaet;
$inf["prio"][$row->persknr] = $row->prioritaet;
}
$inf["vpn"] = substr($inf["vpn"],0,strlen($inf["vpn"])-1);
}
/*
$sql = "SELECT iv.persknr,prioritaet, CONCAT (nachname, ', ',vorname)
FROM Info_Verantwortlich iv INNER JOIN Mitarbeiter m ON iv.persknr=m.persknr
WHERE info_id = $infid
ORDER BY 3";
if ($result = $dbc->queryObjectArray($sql))
{
foreach ($result as $row)
{
$inf["vpers"][] = $row->persknr;
// $inf["prio"][] = $row->prioritaet;
$inf["prio"][$row->persknr] = $row->prioritaet;
}
}
*/
// print_r($inf); echo "<br /><br />";
}
echo "<div>";
include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/info_form3.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("ie",$_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=\"".$_SERVER["PHP_SELF"]."\" target=\"_self\" title=\"Info erfassen\">Weitere Info erfassen</a></p>\n";
echo "</form>\n";
echo "</div>\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 ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/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 ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/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 ($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["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($inf['betr']) && $inf['betr']) $betrag = dbformat_wert($inf['betr']); else $betrag = 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 = ?,
betrag = ? WHERE info_ID = $infid");
$stmt -> bind_param('sssssiisisid',$inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["fg"],$inf["sort"],$inf["infrel"],$betrag);
$result = $stmt -> execute();
if ($stmt->error) echo "error UPDATE Info: " . $stmt->error . "<br><br>\n";
}
else
{ //INSERT
$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,betrag) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt -> bind_param('sssssiisisid', $inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["fg"],$inf["sort"],$inf["infrel"],$betrag);
$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)
{
// n:m Tabellen INSERT
include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/info_tab_ins.inc.php");
// upload File
if (is_uploaded_file($_FILES["ifile"]["tmp_name"]) && isset($_FILES["ifile"]["name"]) && $_FILES["ifile"]["name"] )
{
include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/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, "/var/www/fhiiqm/infos"); // Datei prüfen und in Dokumentenverzeichnis (vollstaendiger Pfad)) 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 ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/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
{$retf=1; $reti=1;}
}
}
if ($result && $retf && $reti && $reta && $retp && $retv) // 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 ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/info_dat_show.inc.php");
}
} // INSERT / UPDATE
echo "</div>";
// echo "<p class='sc'> <a href=\"/fhiiqm/info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">Infoliste</a></p>\n";
echo "<p class='sc'> <a href=\"".$_SERVER["PHP_SELF"]."\" target=\"_self\" title=\"Info erfassen\">Weitere Info erfassen</a></p>\n";
} // Form o.k. und submit
?>