fhiiqm/test/tab_info_ed.php
changeset 29 72f79dab938e
child 30 d02d02efc55a
equal deleted inserted replaced
28:8d8bce56918f 29:72f79dab938e
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * @author Bettina Schwarzer, Fritz-Haber-Institut
       
     5  * @copyright 08/2012
       
     6  * 
       
     7  * info_ed.php fuer tab
       
     8  */
       
     9 
       
    10 
       
    11     error_reporting(E_ALL ^ E_NOTICE);
       
    12     header('Content-type: text/html; charset="iso-8859-1',true);    
       
    13     
       
    14     session_start();
       
    15     if (! isset($_SESSION["userid"]))
       
    16     { 
       
    17         include_once ($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");	
       
    18         login($_SERVER["PHP_SELF"]);
       
    19         exit;
       
    20     }
       
    21     
       
    22     if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array("ir",$_SESSION["recht"]) && !in_array("ie",$_SESSION["recht"])))
       
    23     {
       
    24         header("Location: start.php");
       
    25         exit;
       
    26     }    
       
    27 
       
    28     $ityp   = $_GET["t"];
       
    29     
       
    30     $infid  = $_GET["i"];
       
    31 
       
    32     $zeil = $_GET["z"];
       
    33     if (!$zeil) $zeil = 10; // Anzahl der gezeigten Zeilen
       
    34     $start = $_GET["st"];   // Start bei DS $start+1
       
    35     if (!$start) $start=0;
       
    36 	$sort   = $_GET["s"];   // Sortierung nach Spalte
       
    37     $dir    = $_GET["d"];   // Sortierrichtung
       
    38     $fnum   = $_GET["f"];   // Spaltennummer, nach der aktuell gefiltert wird
       
    39     $filter = $_GET["b"];   // Filterbegriff
       
    40     // $_GET-Parameter zurück zur Infoliste mit den selben Einstellungen wie zuvor
       
    41     $getp = "s=$sort&d=$dir&f=$fnum&b=$filter&st=$start&z=$zeil";
       
    42     
       
    43     $del    = $_POST["del"];
       
    44     $sub    = $_POST["eintragen"];
       
    45     $dup    = $_POST["dup"];
       
    46     if (!$dup) $dup = $_GET["dp"];
       
    47     $copy   = $_GET["c"];
       
    48 	$inf    = $_POST["inf"];
       
    49     $ok		= $_POST["ok"];
       
    50     if (!$inf["okn"]) $ok = false;
       
    51     $duptext="";
       
    52     
       
    53 //    print_r($inf); echo "<br /><br />";
       
    54 
       
    55 	include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
       
    56     include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
       
    57 	$dbc = new dbconnection();
       
    58     
       
    59     if ($dup)
       
    60     {   // Info duplizieren
       
    61         $tab = "Info";
       
    62         $key = "info_ID";
       
    63         $val =  $infid;
       
    64 //        $ret=1;
       
    65         $ret = duplicate_record ($tab, $key, $val);
       
    66         if ($ret)
       
    67         { 
       
    68             $infid_new=$ret;
       
    69             // Infofilename loeschen
       
    70             $sql = "UPDATE fhiiqm.Info SET info_file = NULL WHERE info_ID = $infid_new";
       
    71             $retf = $dbc -> execute($sql);
       
    72             if ($dbc->error) echo "<p  class='red'>error loeschen Info-File: " . $dbc->error . "</p>";
       
    73             
       
    74             // duplizieren Produkte
       
    75             $sql = "INSERT INTO Info_Produkt SELECT $infid_new,produkt_ID FROM Info_Produkt WHERE info_ID = $infid";
       
    76             $retp = $dbc -> execute($sql);
       
    77             if ($dbc->error) echo "<p  class='red'>error copy Info_Produkt: " . $dbc->error . "</p>";
       
    78             
       
    79             // duplizieren Adressat
       
    80             $sql = "INSERT INTO Info_Adressat SELECT $infid_new,info_adr_ID FROM Info_Adressat WHERE info_ID = $infid";
       
    81             $reta = $dbc -> execute($sql);
       
    82             if ($dbc->error) echo "<p  class='red'>error copy Info_Adressat: " . $dbc->error . "</p>";
       
    83             
       
    84             // duplizieren Verantwortliche
       
    85             $sql = "INSERT INTO Info_Verantwortlich SELECT $infid_new,persknr,prioritaet FROM Info_Verantwortlich WHERE info_ID = $infid";
       
    86             $retv = $dbc -> execute($sql);
       
    87             if ($dbc->error) echo "<p  class='red'>error copy Info_Verantwortlich: " . $dbc->error . "</p>";
       
    88             
       
    89             if ($ret && $retf && $retp && $reta && $retv)
       
    90             {
       
    91                 $addr = $_SERVER["PHP_SELF"] . "?i=$infid_new&c=1";
       
    92                 header("Location: $addr");
       
    93                 exit;
       
    94             }
       
    95             else $duptext = " - Fehler beim Duplizieren von ". $inf["iname"];    
       
    96         }
       
    97         else $duptext = " - Fehler beim Duplizieren von ". $inf["iname"];    
       
    98     }
       
    99 
       
   100 ?>
       
   101     <script>
       
   102       $(document).ready(function() {
       
   103         $("#titel").focus();
       
   104         $("#persknr").autocomplete({
       
   105                 source: "/fhiiqm/inc/ma_list_ac.inc.php",
       
   106     			minLength: 2,
       
   107                 select: function(event,ui){$("#pid").val(ui.item.id);}
       
   108     		});
       
   109         $("#cdat").datepicker({
       
   110             dateFormat: 'yy-mm-dd', //nur Datum
       
   111             yearRange: '2000:2025',
       
   112             changeMonth: true,
       
   113 			changeYear: true,
       
   114             firstDay: 1,
       
   115             dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
       
   116             monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
       
   117         });
       
   118         $("#vdat").datepicker({
       
   119             dateFormat: 'yy-mm-dd', //nur Datum
       
   120             yearRange: '2000:2025',
       
   121             changeMonth: true,
       
   122 			changeYear: true,
       
   123             firstDay: 1,
       
   124             dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
       
   125             monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
       
   126         });
       
   127         $("#bdat").datepicker({
       
   128             dateFormat: 'yy-mm-dd', //nur Datum
       
   129             yearRange: '2000:2025',
       
   130             changeMonth: true,
       
   131 			changeYear: true,
       
   132             firstDay: 1,
       
   133             dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
       
   134             monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
       
   135         });
       
   136         $("input").persknr("long20").addClass("long20");
       
   137         $("input").cdat("long10").addClass("long10");
       
   138         $("input").vdat("long10").addClass("long10");
       
   139         $("input").bdat("long10").addClass("long10");
       
   140         });
       
   141     </script>
       
   142 <?php
       
   143     echo "&nbsp;";  
       
   144     echo "<div class=\"float-br smaller\" valign='top'>";
       
   145     echo "&nbsp;&nbsp;&nbsp;user: " . $_SESSION["userid"];
       
   146     echo "&nbsp;&nbsp;&nbsp;<a class='sc' href='/fhiiqm/logout.php' title='Session beenden'>logout</a></div>\n";
       
   147     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";
       
   148 
       
   149 
       
   150     echo "<div align='center'>";
       
   151     if ($infid) $text = "editieren"; else $text = "erfassen";
       
   152     if ($copy) $duptext = " (Kopie)";
       
   153     echo "<h3>Information $text$duptext<h3>";
       
   154     
       
   155     echo "</div>\n";
       
   156     
       
   157     if (!$ok || (!$sub && !$del && !$dup))
       
   158     {
       
   159         if ($infid && (!$sub || !$del) && !isset($inf))
       
   160         { // update
       
   161             $sql = "SELECT info_ID,info_name_s,info_name_l,info_date,info_valid_from,info_valid_to,infotyp_ID,
       
   162                                 i.persknr,lang,info_file,info_rel_ID,info_freigabe_ID,info_sort, 
       
   163                                 CONCAT(nachname,', ',vorname) AS aname 
       
   164                                 FROM fhiiqm.Info i LEFT OUTER JOIN fhiiqm.Mitarbeiter m 
       
   165                                 ON i.persknr=m.persknr 
       
   166                                 WHERE info_ID = $infid";
       
   167             if ($result = $dbc -> queryObjectArray($sql))
       
   168             {
       
   169                 foreach ($result as $row)
       
   170                 {
       
   171                     $inf["infid"]   = $infid;
       
   172                     $inf["iname"]   = $row->info_name_s;
       
   173                     $inf["ilong"]   = $row->info_name_l;
       
   174                     $inf["cdat"]    = $row->info_date;
       
   175                     $inf["vdat"]    = $row->info_valid_from;
       
   176                     $inf["bdat"]    = $row->info_valid_to;
       
   177                     $inf["ityp"]    = $row->infotyp_ID;
       
   178                     $inf["persknr"] = $row->aname;
       
   179                     $inf["pers"]    = $row->persknr;
       
   180                     $inf["infrel"]  = $row->info_rel_ID;
       
   181                     $inf["ifname"]  = $row->info_file;
       
   182                     $inf["lang"]    = $row->lang;     
       
   183                     $inf["fg"]      = $row->info_freigabe_ID;
       
   184                     $inf["sort"]    = $row->info_sort;     
       
   185                 }            
       
   186             }
       
   187             // Produkt
       
   188             $sql = "SELECT produkt_ID FROM Info_Produkt WHERE info_ID = $infid";
       
   189             if ($result = $dbc -> queryObjectArray($sql))
       
   190             {
       
   191                 foreach ($result as $row)
       
   192                 {
       
   193                     $inf['prid'][] = $row->produkt_ID;
       
   194                 }
       
   195             }
       
   196             // Adressat
       
   197             $sql = "SELECT info_adr_ID FROM Info_Adressat WHERE info_id = $infid";
       
   198             if ($result = $dbc->queryObjectArray($sql))
       
   199             {
       
   200                 foreach ($result as $row)
       
   201                 $inf["adr"][] = $row->info_adr_ID;
       
   202             }
       
   203             // Verantwortlicher
       
   204             $sql = "SELECT iv.persknr,prioritaet, CONCAT (nachname, ', ',vorname) 
       
   205                     FROM Info_Verantwortlich iv INNER JOIN Mitarbeiter m ON iv.persknr=m.persknr
       
   206                     WHERE info_id = $infid
       
   207                     ORDER BY 3";
       
   208             if ($result = $dbc->queryObjectArray($sql))
       
   209             {
       
   210                 foreach ($result as $row)
       
   211                 {
       
   212                     $inf["vpers"][] = $row->persknr;
       
   213 //                    $inf["prio"][]  = $row->prioritaet;
       
   214                     $inf["prio"][$row->persknr]  = $row->prioritaet;
       
   215                 }
       
   216             }
       
   217 //    print_r($inf); echo "<br /><br />";
       
   218             
       
   219         }
       
   220         echo "<div>\n";
       
   221         include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/info_form2.inc.php");     
       
   222         if ($sub)
       
   223 		{
       
   224             echo            
       
   225             "<tr>
       
   226         		<td>Upload Infodokument </td>
       
   227         		<td><input type=\"file\" name=\"ifile\" size=\"50\" maxlength=\"50\" value=\"" .
       
   228             $_FILES["ifile"]["name"] . "\"/></td>
       
   229             </tr>";
       
   230     
       
   231 		}
       
   232         if ($sub || $del)
       
   233 		{
       
   234 		  	if ($sub)
       
   235                 $frage = "Alle Angaben ok?";
       
   236             elseif ($del)
       
   237                 $frage = "Information wirklich l&ouml;schen?";
       
   238 			echo "<tr>
       
   239 			  <td class=\"red\" valign=\"top\" align=\"left\">$frage</td>
       
   240 			        <td><input type=\"checkbox\" name=\"ok\" value=\"1\"";
       
   241 			        if ($ok)  echo "checked=\"checked\""; 
       
   242 			echo " /></td>\n</tr>\n"; 
       
   243 		}
       
   244         if (!is_null($_SESSION["recht"]) && in_array("ie",$_SESSION["recht"]))
       
   245         {
       
   246             echo "
       
   247            	<tr><td>&nbsp;</td>\n
       
   248             	<td><input  class=\"button\" type=\"submit\" name=\"eintragen\" value=\"  eintragen  \" />";
       
   249             if ($infid)
       
   250             {
       
   251                 echo "&nbsp;&nbsp;&nbsp;<input class=\"buttonr\" type=\"submit\" value=\"l&ouml;schen\" name=\"del\" title=\"delete\" />";
       
   252                 echo "&nbsp;&nbsp;&nbsp;<input class=\"button\" type=\"submit\" value=\"duplizieren\" name=\"dup\" title=\"delete\" />";
       
   253             }    
       
   254            	echo "</td></tr>\n";
       
   255         }
       
   256         echo "</table>\n";
       
   257         echo "</div>\n";
       
   258 //            if (!is_null($_SESSION["recht"]) && !in_array("le", $_SESSION["recht"]))
       
   259             echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"/fhiiqm/info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">&laquo; zur Infoliste</a></p>\n"; 
       
   260         echo "</form>\n";   
       
   261         echo "</div>\n";
       
   262     }
       
   263     else
       
   264     {
       
   265         echo "<div align='center'>\n";
       
   266         
       
   267         if ($del)
       
   268         {   // loescht auch m:n - Tabellen wegen Loeschweitergabe
       
   269             $sql = "DELETE FROM Info WHERE info_ID = '$infid'";
       
   270             $retdi = $dbc -> execute($sql);
       
   271             if ($retdi)
       
   272             {
       
   273                 include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/file_upload.inc.php");
       
   274                 $retdf  = mod_file("/var/www/fhiiqm/infos",$infid,"","del");  // Loeschen Dokument
       
   275                 if ($retdf) echo "<p class='green'><b>Infodokument zu ID '$infid' wurde gel&ouml;scht.</b></p>\n";
       
   276                 echo "<p class='green'><b>Infodaten zu ID '$infid' wurden gel&ouml;scht.</b></p>\n";
       
   277                 echo "<br /><br />\n";
       
   278     
       
   279                 // Anzeigen geloeschter Infodaten
       
   280                 if ($fname)
       
   281                     $ifile = $infid . "_" . $fname;
       
   282                 else
       
   283                     $ifile = $inf['ifname'];
       
   284                 echo "<p class='green'><b>DELETE: Daten  zu '".$inf["iname"]."' wurden erfolgreich gel&ouml;scht.</b></p>\n";
       
   285                 include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/info_dat_show.inc.php");
       
   286             }                
       
   287             else
       
   288             {
       
   289                 echo "<p class='red'><b>DELETE: Daten  zu '".$inf["iname"]."' konnten nicht gel&ouml;scht werden!</b></p>\n";
       
   290                 echo "sql = $sql<br />";
       
   291                 echo "error DELETE: " . $dbc->error . "<br />";
       
   292             }
       
   293         }
       
   294         else //INSERT oder UPDATE
       
   295         {
       
   296             //daten speichern
       
   297             $inf["iname"] = substr($inf["iname"],0,300);
       
   298             $inf["ilong"] = substr($inf["ilong"],0,8000);
       
   299             $inf["sort"] = substr($inf["sort"],0,10);   // 28.03.2012 5 -> 10 Zeichen
       
   300             if ($inf["ityp"] == -1) $inf["ityp"] = null;
       
   301             
       
   302             if ($inf["persknr"] < "!") $inf["pers"] = null;
       
   303             if ($inf["infrel"] == -1) $inf["infrel"] = null;
       
   304             if ($inf["lang"] == -1) $inf["lang"] = null;
       
   305             if ($inf["ifname"] < "!") $inf["ifname"] = null;
       
   306             
       
   307             if ($inf["cdat"] == "") $inf["cdat"] = null; 
       
   308             if ($inf["vdat"] == "") $inf["vdat"] = null; 
       
   309             if ($inf["bdat"] == "") $inf["bdat"] = null; 
       
   310             if ($inf["fg"] == -1) $inf["fg"] = null;
       
   311     
       
   312             if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
       
   313             
       
   314             $stmt = $dbc -> stmtinit();
       
   315             if (is_object($stmt))
       
   316             {
       
   317                 if ($infid)
       
   318                 {   //UPDATE
       
   319                     // alter Name Infofile
       
   320                     $sql = "SELECT info_file FROM Info WHERE info_ID = $infid";
       
   321                     $ifile_old = $dbc -> querySingleItem($sql);
       
   322                     
       
   323                     $stmt -> prepare("UPDATE fhiiqm.Info SET
       
   324                                 info_name_s = ?, 
       
   325                                 info_name_l = ?, 
       
   326                                 info_date = ?, 
       
   327                                 info_valid_from = ?, 
       
   328                                 info_valid_to = ?, 
       
   329                                 infotyp_ID = ?, 
       
   330                                 persknr = ?, 
       
   331                                 lang = ?,
       
   332                                 info_freigabe_ID = ?, 
       
   333                                 info_sort = ?, 
       
   334                                 info_rel_ID = ? WHERE info_ID = $infid");
       
   335                     $stmt -> bind_param('sssssiisisi',$inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["fg"],$inf["sort"],$inf["infrel"]);
       
   336                     $result = $stmt -> execute();
       
   337                     if ($stmt->error) echo "error UPDATE Info: " . $stmt->error . "<br><br>\n";
       
   338                 }
       
   339                 else
       
   340                 {   //INSERT
       
   341                     $stmt -> prepare ("INSERT INTO Info (info_name_s,info_name_l,info_date,info_valid_from,info_valid_to,
       
   342                                 infotyp_ID,persknr,lang,info_freigabe_ID,info_sort,info_rel_ID) VALUES (?,?,?,?,?,?,?,?,?,?,?)");
       
   343                     $stmt -> bind_param('sssssiisisi', $inf["iname"],$inf["ilong"],$inf["cdat"],$inf["vdat"],$inf["bdat"],$inf["ityp"],$inf["pers"],$inf["lang"],$inf["fg"],$inf["sort"],$inf["infrel"]);
       
   344                     $result = $stmt -> execute();      
       
   345                 
       
   346                     if ($stmt->error) echo "error INSERT Info: " . $stmt->error . "<br><br>\n";
       
   347                     if ($result)
       
   348                     { // INSERT o.k.
       
   349                       // info_ID ermitteln
       
   350                         $infid = $dbc -> insertId();
       
   351                     }    
       
   352                 } 
       
   353             }   // stmt-Objekt
       
   354             if ($result)
       
   355             {
       
   356                  // n:m Tabellen INSERT
       
   357                 include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/info_tab_ins.inc.php");
       
   358 
       
   359                 // upload File
       
   360                 if (is_uploaded_file($_FILES["ifile"]["tmp_name"]) && isset($_FILES["ifile"]["name"]) && $_FILES["ifile"]["name"] )
       
   361                 {
       
   362                     include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/file_upload.inc.php");
       
   363                     $fname  = gen_filename($inf['ifname'],"ifile",$infid);
       
   364                     $retdf  = mod_file("/var/www/fhiiqm/infos",$infid,"","del");     // Loeschen alte Datei
       
   365                     $retf   = upload("ifile", $fname, $infid, "infos");              // Datei prüfen und in Dokumentenverzeichnis verschieben
       
   366                     
       
   367                     if ($retf)
       
   368                     {   // upload o.k.
       
   369                         //UPDATE des Filenamens
       
   370                         $sql = "UPDATE Info SET info_file = '" . $infid . "_" . $fname ."' WHERE info_ID=$infid";
       
   371                         $reti=$dbc->execute($sql);
       
   372                         if (!$reti) 
       
   373                             echo $dbc -> error . "<br>\n";
       
   374                     }
       
   375                    
       
   376                 }
       
   377                 else
       
   378                 {// nur Aenderung Dateiname
       
   379                     if ($inf["ifname"]) // Dateiname vergeben
       
   380                     {
       
   381                         include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/file_upload.inc.php");
       
   382                         $fname = gen_filename($inf["ifname"],$ifile_old,$infid,0);
       
   383                         $len = strlen($infid)+1;
       
   384                         if (substr($fname,0,$len) != "$infid" . "_") $fname = $infid . "_" . $fname;
       
   385                         if ($inf["ifname"] != $ifile_old)
       
   386                         {
       
   387                             $retf  = mod_file("/var/www/fhiiqm/infos",$infid,$fname,"upd");  // Umbenennen alte Datei
       
   388                             if ($retf) 
       
   389                             {
       
   390                                 $sql = "UPDATE Info SET info_file = '" . $fname . "' WHERE info_ID=$infid";
       
   391                                 $reti=$dbc->execute($sql);
       
   392                                 if (!$reti) 
       
   393                                     echo $dbc -> error . "<br>\n";
       
   394                                 if (substr($fname,0,$len) == "$infid" . "_") $fname = substr($fname,$len,50);
       
   395                             }
       
   396                             
       
   397                         }
       
   398                         else
       
   399                         {
       
   400                             //kein Upload, keine Dateinamenaenderung
       
   401                             if (substr($fname,0,$len) == "$infid" . "_") $fname = substr($fname,$len,50);
       
   402                             $retf=1; $reti=1;
       
   403                         }
       
   404                     }
       
   405                     else // kein Dateiname angegeben
       
   406                     {$retf=1; $reti=1;}
       
   407                 }
       
   408             }            
       
   409             if ($result && $retf && $reti && $reta && $retp && $retv) // INSERT/UPDATE Info
       
   410             {
       
   411                 //Eingabe Daten, Upload File erfolgreich 
       
   412                     echo "<p class='green'><b>Infodaten zu ID '$infid' wurden erfolgreich gespeichert.</b></p>\n";
       
   413                     echo "<br /><br />\n";
       
   414 
       
   415                 // Anzeigen gespeicherte Infodaten
       
   416                 if ($fname)
       
   417                     $ifile = $infid . "_" . $fname;
       
   418                 else
       
   419                     $ifile = $inf['ifname'];
       
   420                 include ($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/inc/info_dat_show.inc.php");
       
   421             }            
       
   422         }   // INSERT / UPDATE
       
   423         echo "</div>";
       
   424         echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"/fhiiqm/info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">Infoliste</a></p>\n"; 
       
   425         echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"".$_SERVER["PHP_SELF"]."\" target=\"_self\" title=\"Info erfassen\">Weitere Info erfassen</a></p>\n";    
       
   426         
       
   427     }   // Form o.k. und submit
       
   428 ?>