fhiiqm/test/tab_info_ed.php
author Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
Fri, 16 Nov 2012 10:39:25 +0100
changeset 31 0a1eb975fbd9
parent 30 d02d02efc55a
permissions -rw-r--r--
+ Raumverantwortliche + Mitarbeiter - Telefon

<?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 "&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=\"/fhiiqm/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_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&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=\"".$_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&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 ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/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 ($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'>&nbsp;&nbsp;&nbsp;<a href=\"/fhiiqm/info_flist.php?$getp\" 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
?>