<? require 'inc/config.php3'; // Variablen Deklaration
require "$inc_path/db_connect.php3"; // Datenbank Verbindung
require "$inc_path/auth.php3"; // Authentifizierung
require "$inc_path/updatelog.php3"; // Update logging
require "$inc_path/user_track.php3"; // User Logging
$zeitstempel = time();
$mailbenachrichtigung = false; // sichere Initialisierung
if (($aktiv == 'on') || ($aktiv == 1)) { // Freischalten kann eh nur der Admin !
$aktiv = 1;
} else {
$aktiv = 0;
}
$sqlquery = " SELECT Dokument.mail
FROM Dokument, DokInstanz
WHERE Dokument.autoID = DokInstanz.dokID AND
DokInstanz.autoID = $instanzID";
$db_object->query_db($content_db, $sqlquery);
$row = $db_object->getrow();
if (@$row[0] == 1) {
$mailbenachrichtigung = true;
}
$sqlquery = "
SELECT DokDef.autoID,
DokDef.name,
DokDef.inhaltFeld,
DokDef.typ,
DokDef.linkerweiterung,
DokDef.wysiwyg,
Typ.mime,
Bereich.autoID,
Bereich.projektID
FROM Dokument,
DokDef,
DokInstanz,
Typ,
Bereich
WHERE
DokDef.dokID = Dokument.autoID AND
DokInstanz.dokID = Dokument.autoID AND
(DokInstanz.autoID = $instanzID OR DokInstanz.autoID IS NULL) AND
DokDef.typ = Typ.autoID AND
Dokument.bereichID = Bereich.autoID
ORDER BY
DokDef.reihenfolge";
$db_object->query_db($content_db, $sqlquery);
$i=0;
while ($row = $db_object->getrow()) {
# TYPE MAPPING STARTS HERE
switch ($row[2]) {
case 'binaer' : $db_spalte = 'binaer';
break;
case 'shorttext' : $db_spalte = 'shorttext';
break;
case 'text' : $db_spalte = 'text';
break;
case 'single_liste' : $db_spalte = 'text';
break;
case 'multi_liste' : $db_spalte = 'text';
break;
case 'shortzahl' : $db_spalte = 'shortzahl';
break;
case 'zeit' : $db_spalte = 'shortzahl';
break;
case 'zahl' : $db_spalte = 'zahl';
break;
default: $db_spalte = $row[2];
break;
}
# TYPE MAPPING ENDS HERE
/* if ($row[5] == 1) {
TO DO: CHECK FOR IMAGES WITHIN THE WYSIWYG COMPONENT
}
*/
if (isset($HTTP_POST_FILES['element' . $row[0]])) {
// BINAERDATEN BERPR FEN START
if ($HTTP_POST_FILES['element' . $row[0]]['size'] > $max_bin_size) {
// Datei zu gross!
require "$inc_path/header.php3";
?> <b><u>Fehler:</u></b><br>
Die Datei ist zu groß! Bitte wählen Sie eine kleinere Datei.<br>
Die Größe ist <b><?echo $HTTP_POST_FILES['element' . $row[0]]['size']?></b> byte, es sind aber nur <b><?echo $max_bin_size?></b> byte zugelassen.
<? require 'inc/footer.php3';
exit;
} else if (@strpos($row[6], $HTTP_POST_FILES['element' . $row[0]]['type']) < 0) {
// Falscher Datentyp
require "$inc_path/header.php3";
?> <b><u>Fehler:</u></b><br>
Das Dateiformat ist unbekannt (Format: <?echo $HTTP_POST_FILES['element' . $row[0]]['type']?>)!
Gültige Formate sind: <b><?echo $row[6]?></b>.
<? require 'inc/footer.php3';
exit;
}
// BINAERDATEN BERPR FEN ENDE
}
// Update oder Insert ?
$sqlquery = "SELECT autoID FROM DokInhalt WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
$db_object->query_db($content_db, $sqlquery, 1);
$row2 = $db_object->getrow(1);
if (@$row2[0]) {
// UPDATE
if ($row[2] == 'zeit') {
$zeit = split(' ', $HTTP_POST_VARS['element' . $row[0]]);
// Deutsches Format - Datum
$datum = $zeit[0];
$dat = explode('.', $datum);
$tag = $dat[0];
$monat = $dat[1];
$jahr = $dat[2];
// Uhrzeit
$uhrzeit = $zeit[1];
$uhr = explode(':', $uhrzeit);
$std = $uhr[0];
$min = $uhr[1];
$sek = $uhr[2];
// Englisches Format - Datum
if ((!($tag)) || (!($monat)) || (!($jahr))) {
$datum = $zeit[0];
$dat = explode('/', $datum);
$tag = $dat[1];
$monat = $dat[0];
$jahr = $dat[2];
}
// nur Uhrzeit
if ((!($tag)) || (!($monat)) || (!($jahr))) {
$tag = '';
$monat = '';
$jahr = '';
$uhrzeit = $zeit[0];
$uhr = explode(':', $uhrzeit);
$std = $uhr[0];
$min = $uhr[1];
$sek = $uhr[2];
}
// leer
if ((!($std)) || (!($min))) {
$std = '';
$min = '';
$sek = '';
$zeitstpl = 0;
}
$zeitstpl = gmmktime($std, $min, $sek, $monat, $tag, $jahr, 1);
$sqlquery = "UPDATE DokInhalt SET $db_spalte = $zeitstpl WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'zahl') || ($row[2] == 'shortzahl') ) {
if (!($HTTP_POST_VARS['element' . $row[0]])) {
$zahl = 0;
} else {
$zahl = $HTTP_POST_VARS['element' . $row[0]];
}
$sqlquery = "UPDATE DokInhalt SET $db_spalte = $zahl WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
$db_object->query_db($content_db, $sqlquery, 2);
$sqlquery = "UPDATE DokInstanz SET lastupdate = $zeitstempel, aktiv = $aktiv, autor = $benutzerID WHERE DokInstanz.autoID = $instanzID";
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'text') || ($row[2] == 'shorttext') || ($row[2] == 'single_liste')) {
if ($row[5] == 1) {
$inhalt = $db_object->escapeChar($HTTP_POST_VARS['element' . $row[0]]);
if (@eregi("http:\/\/([a-zA-Z1-9\.\/-]+)?", $inhalt, $out)) {
# $inhalt = ereg_replace($out[0], '<a href="'.$out[0].'">'.$out[0].'</a>', $inhalt);
}
if (eregi("mailto:([a-zA-Z1-9\hide@address.com\/-]+)?", $inhalt, $out)) {
# $inhalt = ereg_replace($out[0], '<a href="'.$out[0].'">'.$out[0].'</a>', $inhalt);
}
} else {
$inhalt = $db_object->escapeChar($HTTP_POST_VARS['element' . $row[0]]);
}
$sqlquery = "UPDATE DokInhalt SET $db_spalte = '" . $inhalt . "' WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
$db_object->query_db($content_db, $sqlquery, 2);
$sqlquery = "UPDATE DokInstanz SET lastupdate = $zeitstempel, aktiv = $aktiv, autor = $benutzerID WHERE DokInstanz.autoID = $instanzID";
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'multi_liste')) {
$inhalt = ${"element".$row[0]};
$inhalt = join(', ', $inhalt);
$inhalt = $db_object->unescapeChar($inhalt);
$sqlquery = "UPDATE DokInhalt SET $db_spalte = '" . $inhalt . "' WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
$db_object->query_db($content_db, $sqlquery, 2);
$sqlquery = "UPDATE DokInstanz SET lastupdate = $zeitstempel, aktiv = $aktiv, autor = $benutzerID WHERE DokInstanz.autoID = $instanzID";
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'binaer') && ($HTTP_POST_FILES['element' . $row[0]]['size'] > 0 )) {
$mailnachricht = $mailnachricht . $row[1] . "\n" . $HTTP_POST_FILES['element' . $row[0]]."\n\n";
if ( ($db_spalte == 'binaer') && ($HTTP_POST_FILES['element' . $row[0]]['size'] > 0)) {
switch($HTTP_POST_FILES['element' . $row[0]]['type']) {
case 'image/png':
$fileName = $row2[0] . '.png';
break;
case 'image/gif':
$fileName = $row2[0] . '.gif';
break;
case 'image/jpeg':
$fileName = $row2[0] . '.jpg';
break;
case 'image/pjpeg':
$fileName = $row2[0] . '.jpg';
break;
default:
$fileName = $row2[0];
break;
}
if (!is_dir("$output_path/images")) {
require "$inc_path/header.php3";
?> <b><u>Fehler:</u></b><br>
Die Basispfadangabe ist nicht korrekt.<br>
Bitte wenden Sie sich an den Systemadministrator.
<? require 'inc/footer.php3';
exit;
} else if (!is_dir("$output_path/images/$row[8]")){
mkdir("$output_path/images/$row[8]", 0755);
} else if (!is_dir("$output_path/images/$row[8]/$row[7]")){
mkdir("$output_path/images/$row[8]/$row[7]", 0755);
}
copy($HTTP_POST_FILES['element' . $row[0]]['tmp_name'], "$output_path/images/$row[8]/$row[7]/$fileName");
if ($db_object->db_engine == 'mysql') {
$sqlquery = ' UPDATE DokInhalt SET ' . $row[2] . " = '$fileName' WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
} else if ($db_object->db_engine == 'ora') {
$sqlquery = ' UPDATE DokInhalt SET ' . $row[2] . " = '$fileName' WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
} else {
$sqlquery = ' UPDATE DokInhalt SET ' . $row[2] . " = '$fileName' WHERE DokInhalt.instanzID = $instanzID AND DokInhalt.dokDefID = " . $row[0];
}
$db_object->query_db($content_db, $sqlquery, 2);
}
$sqlquery = "UPDATE DokInstanz SET lastupdate = $zeitstempel, aktiv = $aktiv, autor = $benutzerID WHERE DokInstanz.autoID = $instanzID";
$db_object->query_db($content_db, $sqlquery, 2);
} else {
// INSERT
if ($row[2] == 'zeit') {
$zeit = split(' ', $HTTP_POST_VARS['element' . $row[0]]);
// Deutsches Format - Datum
$datum = $zeit[0];
$dat = explode('.', $datum);
$tag = $dat[0];
$monat = $dat[1];
$jahr = $dat[2];
// Uhrzeit
$uhrzeit = $zeit[1];
$uhr = explode(':', $uhrzeit);
$std = $uhr[0];
$min = $uhr[1];
$sek = $uhr[2];
// Englisches Format - Datum
if ((!($tag)) || (!($monat)) || (!($jahr))) {
$datum = $zeit[0];
$dat = explode('/', $datum);
$tag = $dat[1];
$monat = $dat[0];
$jahr = $dat[2];
}
// nur Uhrzeit
if ((!($tag)) || (!($monat)) || (!($jahr))) {
$tag = '';
$monat = '';
$jahr = '';
$uhrzeit = $zeit[0];
$uhr = explode(':', $uhrzeit);
$std = $uhr[0];
$min = $uhr[1];
$sek = $uhr[2];
}
// leer
if ((!($std)) || (!($min))) {
$std = '';
$min = '';
$sek = '';
$zeitstpl = 0;
}
$zeitstpl = gmmktime($std, $min, $sek, $monat, $tag, $jahr, 1);
if ($db_object->db_engine == 'mysql') {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
$zeitstpl,
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else if ($db_object->db_engine == 'ora') {
$sqlquery = " INSERT INTO DokInhalt (autoID, $db_spalte, dokDefID, erstellt, instanzID) VALUES (
dokInhaltID.nextval,
$zeitstpl,
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
$zeitstpl,
" . $row[0] . ",
$zeitstempel,
$instanzID)";
}
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'zahl') || ($row[2] == 'shortzahl') ) {
if (!($HTTP_POST_VARS['element' . $row[0]])) {
$zahl = 0;
} else {
$zahl = $HTTP_POST_VARS['element' . $row[0]];
}
if ($db_object->db_engine == 'mysql') {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
$zahl,
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else if ($db_object->db_engine == 'ora') {
$sqlquery = " INSERT INTO DokInhalt (autoID, $db_spalte, dokDefID, erstellt, instanzID) VALUES (
dokInhaltID.nextval,
$zahl,
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
$zahl,
" . $row[0] . ",
$zeitstempel,
$instanzID)";
}
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'text') || ($row[2] == 'shorttext') || ($row[2] == 'single_liste') ) {
if ($db_object->db_engine == 'mysql') {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
'".$db_object->escapeChar($HTTP_POST_VARS['element' . $row[0]])."',
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else if ($db_object->db_engine == 'ora') {
$sqlquery = " INSERT INTO DokInhalt (autoID, $db_spalte, dokDefID, erstellt, instanzID) VALUES (
dokInhaltID.nextval,
'".$db_object->escapeChar($HTTP_POST_VARS['element' . $row[0]])."',
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
'".$db_object->escapeChar($HTTP_POST_VARS['element' . $row[0]])."',
" . $row[0] . ",
$zeitstempel,
$instanzID)";
}
$db_object->query_db($content_db, $sqlquery, 2);
} else if ( ($row[2] == 'binaer') && ($HTTP_POST_VARS['element' . $row[0]]['size']> 0 )) {
$fname = $zeitstempel;
$fname = $fname . $row[0];
switch($HTTP_POST_FILES['element' . $row[0]]['type']) {
case 'image/png':
$fileName = $fname . '.png';
break;
case 'image/gif':
$fileName = $fname . '.gif';
break;
case 'image/jpeg':
$fileName = $fname . '.jpg';
break;
case 'image/pjpeg':
$fileName = $fname . '.jpg';
break;
default:
$fileName = $fname;
break;
}
if (!is_dir("$output_path/images")) {
require "$inc_path/header.php3";
?> <b><u>Fehler:</u></b><br>
Die Basispfadangabe ist nicht korrekt.<br>
Bitte wenden Sie sich an den Systemadministrator.
<? require 'inc/footer.php3';
exit;
} else if (!is_dir("$output_path/images/$row[8]")){
mkdir("$output_path/images/$row[8]", 0755);
} else if (!is_dir("$output_path/images/$row[8]/$row[7]")){
mkdir("$output_path/images/$row[8]/$row[7]", 0755);
}
copy($HTTP_POST_FILES['element' . $row[0]]['tmp_name'], "$output_path/images/$row[8]/$row[7]/$fileName");
if ($db_object->db_engine == 'mysql') {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
'$content',
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else if ($db_object->db_engine == 'ora') {
$sqlquery = " INSERT INTO DokInhalt (autoID, $db_spalte, dokDefID, erstellt, instanzID) VALUES (
dokInhaltID.nextval,
HEXTORAW('$content'),
" . $row[0] . ",
$zeitstempel,
$instanzID)";
} else {
$sqlquery = " INSERT INTO DokInhalt ($db_spalte, dokDefID, erstellt, instanzID) VALUES (
'$content',
" . $row[0] . ",
$zeitstempel,
$instanzID)";
}
$db_object->query_db($content_db, $sqlquery, 2);
}
}
}
$content = '';
$i++;
}
if ( ($enable_user_mailing) && ($mailbenachrichtigung) ) {
require("inc/user_mailing.php3");
}
require 'inc/db_disconnect.php3';
header("Location: artikel.php3?projekt=$projekt&bereich=$bereich");
exit;
?>