|
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 " "; |
|
144 echo "<div class=\"float-br smaller\" valign='top'>"; |
|
145 echo " user: " . $_SESSION["userid"]; |
|
146 echo " <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 ändern\" title=\"Infodaten ä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ö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> </td>\n |
|
248 <td><input class=\"button\" type=\"submit\" name=\"eintragen\" value=\" eintragen \" />"; |
|
249 if ($infid) |
|
250 { |
|
251 echo " <input class=\"buttonr\" type=\"submit\" value=\"löschen\" name=\"del\" title=\"delete\" />"; |
|
252 echo " <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'> <a href=\"/fhiiqm/info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">« 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öscht.</b></p>\n"; |
|
276 echo "<p class='green'><b>Infodaten zu ID '$infid' wurden gelö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ö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ö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'> <a href=\"/fhiiqm/info_flist.php?$getp\" target=\"_self\" title=\"Infoliste\">Infoliste</a></p>\n"; |
|
425 echo "<p class='sc'> <a href=\"".$_SERVER["PHP_SELF"]."\" target=\"_self\" title=\"Info erfassen\">Weitere Info erfassen</a></p>\n"; |
|
426 |
|
427 } // Form o.k. und submit |
|
428 ?> |