fhiiqm/info_ed.php
author Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
Thu, 05 Apr 2012 15:35:43 +0200
changeset 25 482252ff12fd
parent 24 15f33315f045
child 26 3c1e3ac7089f
permissions -rw-r--r--
+ Prozesse edit, Liste; Reports Info, GVP

<?php

/**
 * @author Bettina Schwarzer, Fritz-Haber-Institut
 * @copyright 02/2012
 *
 * INSERT,UPDATE Informationen Geschaeftverteilungsplan   
 */

    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("ir",$_SESSION["recht"]) && !in_array("ie",$_SESSION["recht"])))
    {
        header("Location: start.php");
        exit;
    }    

    $ityp   = $_GET["t"];
    
    $infid  = $_GET["i"];
    $del    = $_POST["del"];
    $sub    = $_POST["eintragen"];
    $dup    = $_POST["dup"];
    if (!$dup) $dup = $_GET["d"];
    $copy   = $_GET["c"];
	$inf    = $_POST["inf"];
    $ok		= $_POST["ok"];
    if (!$inf["okn"]) $ok = false;
    $duptext="";
    
//    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");
	$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"];    
    }
    
?>
<!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>

	<title>Edit Informationen</title>
</head>

<body>

    <script>
      $(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);}
    		});
        $("#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").persknr("long20").addClass("long20");
        $("input").cdat("long10").addClass("long10");
        $("input").vdat("long10").addClass("long10");
        $("input").bdat("long10").addClass("long10");
        });
    </script>

<?php
    echo "&nbsp;";  
    echo "<div class=\"float-br smaller\" valign='top'>";
    echo "&nbsp;&nbsp;&nbsp;user: " . $_SESSION["userid"];
    echo "&nbsp;&nbsp;&nbsp;<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 &auml;ndern\" title=\"Infodaten &auml;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,info_sort, 
                                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["sort"]    = $row->info_sort;     
                }            
            }
            // 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) 
                    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 />";
            
        }
        include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/info_form2.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&ouml;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>&nbsp;</td>\n
            	<td><input  class=\"button\" type=\"submit\" name=\"eintragen\" value=\"  eintragen  \" />";
            if ($infid)
            {
                echo "&nbsp;&nbsp;&nbsp;<input class=\"buttonr\" type=\"submit\" value=\"l&ouml;schen\" name=\"del\" title=\"delete\" />";
                echo "&nbsp;&nbsp;&nbsp;<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'>&nbsp;&nbsp;&nbsp;<a href=\"info_flist.php\" target=\"_self\" title=\"Infoliste\">&laquo; 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&ouml;scht.</b></p>\n";
                echo "<p class='green'><b>Infodaten zu ID '$infid' wurden gel&ouml;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&ouml;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&ouml;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 (!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_sort = ?, 
                                info_rel_ID = ? WHERE info_ID = $infid");
                    $stmt -> bind_param('sssssiissi',$inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["sort"],$inf["infrel"]);
                    $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_sort,info_rel_ID) VALUES (?,?,?,?,?,?,?,?,?,?)");
                    $stmt -> bind_param('sssssiissi', $inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["sort"],$inf["infrel"]);
                    $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 ("inc/info_tab_ins.inc.php");

                // upload File
                if (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);
                    $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
                    {$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 ("inc/info_dat_show.inc.php");
            }            
        }   // INSERT / UPDATE
        echo "</div>";
        echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"info_flist.php\" target=\"_self\" title=\"Infoliste\">Infoliste</a></p>\n"; 
        echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"".$_SERVER["PHP_SELF"]."\" target=\"_self\" title=\"Info erfassen\">Weitere Info erfassen</a></p>\n";    
        
    }   // Form o.k. und submit
?>
    
</body>
</html>