<?php
/**
* @author Bettina Schwarzer, Fritz-Haber-Institut
* @copyright 03/2012
*
* Prozess INSERT/UPDATE/DELETE/DUPLICATE
*/
error_reporting(E_ALL ^ E_NOTICE);
session_start();
if (! isset($_SESSION["userid"]))
{
include_once ("inc/func_lib.inc.php");
login($_SERVER["PHP_SELF"]);
exit;
}
if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array("pzr",$_SESSION["recht"]) && !in_array("pze",$_SESSION["recht"])))
{
header("Location: start.php");
exit;
}
$pzid = $_GET["i"];
$del = $_POST["del"];
$sub = $_POST["eintragen"];
$dup = $_POST["dup"];
if (!$dup) $dup = $_GET["d"];
$copy = $_GET["c"];
$pz = $_POST["pz"];
$ok = $_POST["ok"];
if (!$pz["okn"]) $ok = false;
$duptext="";
include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
$dbc = new dbconnection();
$sql = "SELECT persknr FROM userweb WHERE userid ='" . $_SESSION["userid"] ."'";
$persknr = $dbc -> querySingleItem($sql);
if ($dup)
{ // Prozess duplizieren
$tab = "Prozess";
$key = "proz_ID";
$val = $pzid;
// $ret=1;
$ret = duplicate_record ($tab, $key, $val);
if ($ret)
{
$pzid_new=$ret;
// duplizieren Schritte
$sql = "INSERT INTO Proz_Step SELECT NULL, $pzid_new, proz_step FROM Proz_Step WHERE proz_ID=$pzid ORDER BY proz_step_ID";
$rets = $dbc -> execute($sql);
if ($ret && $rets)
{
$addr = $_SERVER["PHP_SELF"] . "?i=$pzid_new&c=1";
header("Location: $addr");
exit;
}
else $duptext = " - Fehler beim Duplizieren von '". $pz["bez"] ."'";
}
else $duptext = " - Fehler beim Duplizieren von '". $pz["bez"] ."'";
}
?>
<!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/jquery-ui-1.8.16.custom.css" rel="Stylesheet" />
<script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
-->
<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>
<script type="text/javascript">
var counter = 0;
var limit = 99;
var arr = new Array();
function addInput(divId){
if (counter == limit) {
alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
}
else {
var newdiv = document.createElement('div');
var opt="<option value='-1'></option>";
var i;
for (var key in arr)
{
opt = opt.concat("<option value='",key,"'>",arr[key],"</option>\n" );
}
opt += "</select>\n";
newdiv.innerHTML = "<span></span><input type='text' name='pz[step][]' size='50' maxlength='50' />";
newdiv.innerHTML += " Status <select name='pz[ststat][]'>"+opt;
newdiv.innerHTML += "<img src='/fhiiqm/img/nixt.gif' border='0' height='100%' />";
newdiv.innerHTML += "<br /> Bemerkung zu Schritt ";
newdiv.innerHTML += "<input type='text' name='pz[stbem][]' size='50' maxlength='50' />";
document.getElementById(divId).appendChild(newdiv);
counter++;
}
}
function delInput(divId){
// var kn = document.getElementById(divId).lastChild;
// document.getElementById(divId).removeChild(kn);
var kn = document.getElementById(divId);
while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SPAN" && 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 == "SPAN") document.getElementById(divId).removeChild(kn.lastChild);
}
//-->
</script>
<title>Edit Projekt</title>
</head>
<body>
<script>
$(document).ready(function() {
$("#bez").focus();
$("#pers").autocomplete({
source: "/fhiiqm/inc/ma_list_ac.inc.php",
minLength: 2,
select: function(event,ui){$("#pid").val(ui.item.id);}
});
$("#persa").autocomplete({
source: "/fhiiqm/inc/ma_list_ac.inc.php",
minLength: 2,
select: function(event,ui){$("#paid").val(ui.item.id);}
});
$("#sdat").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']
});
$("#edat").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']
});
$("#psdat").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']
});
$("#pedat").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='pers']").addClass("long20");
$("input[id='persa']").addClass("long20");
});
</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/sheduled_task.png\" border=\"0\" alt=\"Projekt ändern\" title=\"Projekt ändern\"/></div>\n";
echo "<div align='center'>";
if ($pzid) $text = "editieren"; else $text = "erfassen";
if ($copy) $duptext = " (Kopie)";
echo "<h3>Projekt $text$duptext<h3>";
echo "</div>\n";
if (!$ok || (!$sub && !$del && !$dup))
{
if ($pzid && (!$sub || !$del) && !isset($pz))
{ // update
$sql = "SELECT proz_ID,produkt_ID,proz_bez,proz_bez_l,proz_start,proz_end,proz_kosten,
proz_start_pl,proz_end_pl,proz_kost_pl,
proz_urg_ID,proz_stat_ID,p.persknr,proz_ref_ID,proz_bem,persknr_a,
CONCAT (m.nachname, ', ',m.vorname) AS vma,
CONCAT (a.nachname, ', ',a.vorname) AS ama
FROM Prozess p LEFT OUTER JOIN Mitarbeiter m
ON p.persknr=m.persknr LEFT OUTER JOIN Mitarbeiter a
ON p.persknr_a=a.persknr
WHERE proz_ID = $pzid";
if ($res = $dbc -> queryObjectArray($sql))
{
foreach ($res as $row)
{
$pz["pzid"] = $pzid;
$pz["bez"] = $row->proz_bez;
$pz["bezl"] = $row->proz_bez_l;
$pz["prid"] = $row->produkt_ID;
$pz["psdat"] = $row->proz_start_pl;
$pz["pedat"] = $row->proz_end_pl;
$pz["pkost"] = str_replace('.',',',$row->proz_kost_pl);
$pz["sdat"] = $row->proz_start;
$pz["edat"] = $row->proz_end;
$pz["kost"] = str_replace('.',',',$row->proz_kosten);
$pz["urg"] = $row->proz_urg_ID;
$pz["stat"] = $row->proz_stat_ID;
$pz["persknr"] = $row->persknr;
$pz["pzref"] = $row->proz_ref_ID;
$pz["bem"] = $row->proz_bem;
$pz["persknra"] = $row->persknr_a;
$pz["persa"] = $row->ama;
$pz["pers"] = $row->vma;
}
}
// Daten aus Proz_Step
$sql = "SELECT proz_step,step_stat_ID,step_bem FROM Proz_Step WHERE proz_ID = $pzid ORDER BY proz_step_ID";
if ($ress = $dbc -> queryObjectArray($sql))
{
foreach ($ress as $row)
{
$pz["step"][] = $row->proz_step;
$pz["ststat"][] = $row->step_stat_ID;
$pz["stbem"][] = $row->step_bem;
}
}
}
include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/prozess_form.inc.php");
if ($sub || $del)
{
if ($sub)
$frage = "Alle Angaben ok?";
elseif ($del)
$frage = "Projekt 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("pze",$_SESSION["recht"]))
{
echo "
<tr><td> </td>\n
<td><input class=\"button\" type=\"submit\" name=\"eintragen\" value=\" eintragen \" />";
if ($pzid)
{
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=\"prozess_flist.php\" target=\"_self\" title=\"Projektliste\">« zur Projektliste</a></p>\n";
echo "</form>\n";
}
else
{
echo "<div align='center'>\n";
if ($del)
{ // Loeschen, Proz_Step wird wegen DELETE CASCADE ebenfalls geloescht
$sql = "DELETE FROM Prozess WHERE proz_ID = '$pzid'";
$retdi = $dbc -> execute($sql);
if ($retdi)
{
echo "<p class='green'><b>DELETE: Daten zu '".$pz["bez"]."' wurden erfolgreich gelöscht.</b></p>\n";
include ("inc/prozess_dat_show.inc.php");
}
else
{
echo "<p class='red'><b>DELETE: Daten zu '".$pz["bez"]."', ID = '$pzid' konnten nicht gelöscht werden!</b></p>\n";
if (strpos($dbc->error,'1451') !== false)
echo "error DELETE: Es gibt mindestens einen abhängiges Projekt zu Projekt-ID '$pzid'<br />";
else
{
echo "sql = $sql<br />";
echo "error DELETE: " . $dbc->error . "<br />";
}
}
}
else //INSERT oder UPDATE
{
//daten speichern
// echo "INSERT/UPDATE: Daten speichern<br /><br />\n";
// print_r($pz); echo "<br />\n";
$pz["bezl"] = substr($pz["bezl"],0,100);
$pz["bem"] = substr($pz["bem"],0,500);
if ($pz["sdat"] == "") $pz["sdat"] = null;
if ($pz["edat"] == "") $pz["edat"] = null;
if ($pz["psdat"] == "") $pz["psdat"] = null;
if ($pz["pedat"] == "") $pz["pedat"] = null;
if ($pz["kost"]) $pz["kost"] = dbformat_wert($pz["kost"]); else $pz["kost"] = null;
if ($pz["pkost"]) $pz["pkost"] = dbformat_wert($pz["pkost"]); else $pz["pkost"] = null;
if ($pz["urg"] == -1) $pz["urg"] = null;
if ($pz["stat"] == -1) $pz["stat"] = null;
if ($pz["pzref"] == -1) $pz["pzref"] = null;
if ($pz["prid"] < 1) $pz["prid"] = null;
if ($pz["pers"] < "!") $pz["persknr"] = null;
if ($pz["persa"] < "!") $pz["persknra"] = null;
if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
$stmt = $dbc -> stmtinit();
if (is_object($stmt))
{
if ($pzid)
{ //UPDATE
$stmt -> prepare("UPDATE Prozess SET
produkt_ID = ?,
proz_bez = ?,
proz_bez_l = ?,
proz_start = ?,
proz_end = ?,
proz_kosten = ?,
proz_start_pl = ?,
proz_end_pl = ?,
proz_kost_pl = ?,
proz_urg_ID = ?,
proz_stat_ID = ?,
persknr = ?,
proz_ref_ID = ?,
proz_bem = ?,
persknr_a = ? WHERE proz_ID = $pzid");
$stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
$pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
$result = $stmt -> execute();
if ($stmt->error) echo "error UPDATE Projekt: " . $stmt->error . "<br><br>\n";
}
else
{ //INSERT
$stmt -> prepare ("INSERT INTO Prozess (produkt_ID, proz_bez, proz_bez_l, proz_start, proz_end, proz_kosten, proz_start_pl, proz_end_pl, proz_kost_pl,
proz_urg_ID, proz_stat_ID, persknr, proz_ref_ID, proz_bem, persknr_a) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
$pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
$result = $stmt -> execute();
if ($stmt->error) echo "error INSERT Projekt: " . $stmt->error . "<br><br>\n";
if ($result)
{ // INSERT o.k.
// info_ID ermitteln
$pzid = $dbc -> insertId();
}
}
if ($result && is_array($pz["step"]))
{ // INSERT Prozessschritte
$sql = "DELETE FROM Proz_Step WHERE proz_ID = $pzid";
$retd = $dbc -> execute($sql);
if ($retd)
{
$stmt -> prepare("INSERT INTO Proz_Step (proz_ID,proz_step,step_stat_ID,step_bem) VALUES(?,?,?,?)");
for ($k=0; $k<count($pz["step"]); $k++)
{
if ($pz["step"][$k])
{
if ($pz["ststat"][$k] == -1) $pz["ststat"][$k] = null;
if ($pz["stbem"][$k] < "!") $pz["stbem"][$k] = null;
$stmt -> bind_param('isis',$pzid, $pz["step"][$k], $pz["ststat"][$k], $pz["stbem"][$k]);
$rets = $stmt -> execute();
if (!$rets) $rets = false;
}
}
if (!$rets) echo "error INSERT Projekt-Schritt: $stmt->error<br />\n";
}
else echo "error INSERT Projekt-Schritt: $dbc->error<br />\n";
}
}
if ($result && $rets)
{
echo "<p class='green'><b>Projekt '".$pz["bez"]."' mit ID '$pzid' wurden erfolgreich gespeichert.</b></p>\n";
include ("inc/prozess_dat_show.inc.php");
}
else
echo "<p class='red'><b>Daten zu '".$pz["bez"]."' wurden nicht oder nur teilweise gespeichert</b></p>\n";
}
echo "</div>";
echo "<p class='sc'> <a href=\"prozess_flist.php\" target=\"_self\" title=\"Projektliste\">« zur Projektliste</a></p>\n";
}
echo "</body>\n</html>\n";
?>