<?
require 'inc/config.php3'; // Variablen Deklaration
require "$inc_path/db_connect.php3"; // Datenbank Verbindung
require "$inc_path/auth.php3"; // Authentifizierung
require "$inc_path/header.php3"; // HTML Header (Layout)
require "$inc_path/user_track.php3"; // User Logging
?>
<center>
<h3><?echo $nav_publizieren?></h3>
<?
function subst_vals($what_to_replace, $replacement) {
global $output_overview_content;
global $overview_document;
global $output_detail_content;
global $ofout;
global $dfout;
global $olink;
global $dlink;
if (!($replacement)) {
$output_overview_content = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , '', $output_overview_content);
} else {
$regs = '';
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $output_overview_content, $regs)) {
$output_overview_content = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $output_overview_content);
}
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $overview_document, $regs)) {
$overview_document = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $overview_document);
}
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $output_detail_content, $regs)) {
$output_detail_content = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $output_detail_content);
}
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $ofout, $regs)) {
$ofout = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $ofout);
}
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $dfout, $regs)) {
$dfout = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $dfout);
}
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $olink, $regs)) {
$olink = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $olink);
}
if (preg_match("/<!--(.*?)$what_to_replace(.*?)-->/i", $dlink, $regs)) {
$dlink = preg_replace("/<!--(.*?)$what_to_replace(.*?)-->/i" , $regs[1] . "$replacement" . $regs[2], $dlink);
}
}
}
$sqlquery = " SELECT Regeln.autoID
FROM Regeln,
Vorlage,
Dokument
WHERE Regeln.vorlageID = Vorlage.autoID AND
Vorlage.dokID = Dokument.autoID AND
Dokument.bereichID = $bereich
ORDER BY Regeln.autoID DESC";
$db_object->query_db($content_db, $sqlquery, 3);
while ($row3 = $db_object->getrow(3)) {
$overview_document = '';
$detail_document = '';
$projektID = '';
$bereichID = '';
$vorlageID = '';
$vorlageTyp = '';
$zeitangabe = '';
$sortierung_nach = '';
$output_file = '';
$detail_file = '';
$output_link = '';
$detail_link = '';
$praecondition = '';
$postcondition = '';
$anzahl_artikel = '';
$ofout = '';
$dfout = '';
$olink = '';
$dlink = '';
$regelID = $row3[0];
echo "<B>Verarbeite Regel Nummer $regelID</B><br>";
// DOKUMENT PROCESSING
$sqlquery = " SELECT Projekt.autoID,
Bereich.autoID,
Dokument.autoID,
Dokument.name,
DokDef.autoID,
DokDef.name,
Vorlage.detail_template,
Vorlage.autoID,
Vorlage.typ,
Regeln.zeitangabe,
Vorlage.input_template,
Regeln.sortierung_nach,
Regeln.sqlquery,
Regeln.output_file,
Regeln.detail_file,
Regeln.output_link,
Regeln.detail_link,
Regeln.praecondition,
Regeln.postcondition,
Regeln.anzahl_artikel
FROM
Projekt, Bereich, Dokument, Vorlage, Regeln, DokDef
WHERE
Projekt.autoID = Bereich.projektID AND
Bereich.autoID = $bereich AND
Dokument.bereichID = Bereich.autoID AND
Vorlage.dokID = Dokument.autoID AND
Regeln.vorlageID = Vorlage.autoID AND
Regeln.autoID = $regelID AND
DokDef.autoID = Regeln.sortierung_nach";
$db_object->query_db($content_db, $sqlquery);
$row = $db_object->getrow();
if (!($row)) {
require 'inc/satheader.php3'; // HTML Header (Layout)
?> <h2>Fehler!</h2>
Es sind keine Dokumente oder Regeln verfügbar!
<? require 'inc/db_disconnect.php3';
require 'inc/satfooter.php3';
exit;
} else {
$projektID = $row[0];
$bereichID = $row[1];
$vorlageID = $row[7];
$vorlageTyp = $row[8];
$zeitangabe = $row[9];
$sortierung_nach = $row[11];
$output_file = $row[13];
$detail_file = $row[14];
$output_link = $row[15];
$detail_link = $row[16];
$praecondition = $row[17];
$postcondition = $row[18];
$anzahl_artikel = $row[19];
// TEMPLATE AUFSPALTEN
$overview_template_array = split("<!--WHILE-->", $db_object->unescapeChar($row[10]));
$overview_document = $overview_document . $overview_template_array[0];
$detail_document = $db_object->unescapeChar($row[6]);
$overview_template_array = split("<!--END-->", $overview_template_array[1]);
$output_overview_content = '';
$output_detail_content = '';
// CONTENT PROCESSING
$defTables = '';
$instanzTables = '';
$contentTables = '';
$conjunktions = '';
$contentElements = '';
$orderby = '';
$i = 0;
$sqlquery = trim($row[12]);
if (!($sqlquery)) {
// CONTENT PROCESSING
$sqlquery = " SELECT DokDef.autoID,
DokDef.name,
DokDef.inhaltFeld
FROM DokDef
WHERE DokDef.dokID = " . $row[2];
$db_object->query_db($content_db, $sqlquery, 1);
$defTables = '';
$instanzTables = '';
$contentTables = '';
$conjunktions = '';
$contentElements = '';
$orderby = '';
$i = 0;
if ($db_object->db_engine == 'mysql') {
while ($row2 = $db_object->getrow(1)) {
$db_spalte = get_field_mapping($row2[2]);
$defTables = $defTables . ", DokDef AS DokDef$i";
$instanzTables = $instanzTables . ", DokInstanz AS DokInstanz$i";
$contentTables = $contentTables . ", DokInhalt AS DokInhalt$i";
$contentElements = $contentElements . ", DokInhalt$i.autoID AS " . ereg_replace(' ', '_', $row2[1]) . "AutoID, DokDef$i.inhaltFeld AS inhalt$i, DokInhalt$i.$db_spalte AS " . ereg_replace(' ', '_', $row2[1]) . " ";
$conjunktions = $conjunktions . "AND DokDef$i.dokID = Dokument.autoID AND DokInstanz.autoID = DokInhalt$i.instanzID AND DokInstanz.dokID = Dokument.autoID AND DokInhalt$i.dokDefID = DokDef$i.autoID AND DokDef$i.autoID = " . $row2[0] . " ";
if ($row2[0] == $row[11]) {
$orderby = "DokInhalt$i.$db_spalte";
}
$i++;
}
} else if (($db_object->db_engine == 'ora') || ($db_object->db_engine == 'oci')) {
while ($row2 = $db_object->getrow(1)) {
$db_spalte = get_field_mapping($row2[2]);
$defTables = $defTables . ", DokDef DokDef$i";
$instanzTables = $instanzTables . ", DokInstanz DokInstanz$i";
$contentTables = $contentTables . ", DokInhalt DokInhalt$i";
$contentElements = $contentElements . ", DokInhalt$i.autoID AS " . ereg_replace(' ', '_', $row2[1]) . "AutoID, DokDef$i.inhaltFeld inhalt$i, DokInhalt$i.$db_spalte " . ereg_replace(' ', '_', $row2[1]) . " ";
$conjunktions = $conjunktions . "AND DokDef$i.dokID = Dokument.autoID AND DokInstanz.autoID = DokInhalt$i.instanzID AND DokInstanz.dokID = Dokument.autoID AND DokInhalt$i.dokDefID = DokDef$i.autoID AND DokDef$i.autoID = " . $row2[0] . " ";
if ($row2[0] == $row[11]) {
$orderby = "DokInhalt$i.$db_spalte";
}
$i++;
}
} else {
while ($row2 = $db_object->getrow(1)) {
$db_spalte = get_field_mapping($row2[2]);
$defTables = $defTables . ", DokDef AS DokDef$i";
$instanzTables = $instanzTables . ", DokInstanz AS DokInstanz$i";
$contentTables = $contentTables . ", DokInhalt AS DokInhalt$i";
$contentElements = $contentElements . ", DokInhalt$i.autoID AS " . ereg_replace(' ', '_', $row2[1]) . "AutoID, DokDef$i.inhaltFeld AS inhalt$i, DokInhalt$i.$db_spalte AS " . ereg_replace(' ', '_', $row2[1]) . " ";
$conjunktions = $conjunktions . "AND DokDef$i.dokID = Dokument.autoID AND DokInstanz.autoID = DokInhalt$i.instanzID AND DokInstanz.dokID = Dokument.autoID AND DokInhalt$i.dokDefID = DokDef$i.autoID AND DokDef$i.autoID = " . $row2[0] . " ";
if ($row2[0] == $row[11]) {
$orderby = "DokInhalt$i.$db_spalte";
}
$i++;
}
}
$defTables = substr($defTables, 1, strlen($defTables));
$instanzTables = substr($instanzTables, 1, strlen($instanzTables));
$contentTables = substr($contentTables, 1, strlen($contentTables));
$contentElements = substr($contentElements, 1, strlen($contentElements));
# $conjunktions = substr($conjunktions, 4, strlen($conjunktions));
// Projekt-, Bereichs- und Dokumentvariablen
$defTables = substr($defTables, 1, strlen($defTables));
$instanzTables = substr($instanzTables, 1, strlen($instanzTables));
$contentTables = substr($contentTables, 1, strlen($contentTables));
$contentElements = substr($contentElements, 1, strlen($contentElements));
$conjunktions = substr($conjunktions, 4, strlen($conjunktions));
// Projekt-, Bereichs- und Dokumentvariablen
if ($db_object->db_engine == 'mysql') {
$projekt_vars = ' Projekt.autoID AS PautoID,
Projekt.name AS PName,
Projekt.beschreibung AS PBeschreibung,
Projekt.erstellt AS PErstellt,
Projekt.geaendert AS PGeaendert,
Projekt.lastaccess AS PLastAccess,
Projekt.lastupdate AS PLastUpdate,
Projekt.lastdump AS PLastDump';
$bereich_vars = ' Bereich.autoID AS BautoID,
Bereich.name As BName,
Bereich.beschreibung As BBeschreibung,
Bereich.erstellt AS BErstellt,
Bereich.geaendert AS BGeaendert,
Bereich.lastaccess AS BLastAccess,
Bereich.lastupdate AS BLastUpdate,
Bereich.lastdump AS BLastDump';
$dokument_vars = ' Dokument.autoID As DautoID,
Dokument.name AS DName,
Dokument.beschreibung AS DBeschreibung,
Dokument.erstellt AS DErstellt,
Dokument.geaendert AS DGeaendert';
$dokumentinstanz_vars = ' DokInstanz.autoID As DIautoID,
DokInstanz.erstellt AS DIErstellt,
DokInstanz.lastupdate AS DIGeaendert';
} else if (($db_object->db_engine == 'ora') || ($db_object->db_engine == 'oci')) {
$projekt_vars = ' Projekt.autoID PautoID,
Projekt.name PName,
Projekt.beschreibung PBeschreibung,
Projekt.erstellt PErstellt,
Projekt.geaendert PGeaendert,
Projekt.lastaccess PLastAccess,
Projekt.lastupdate PLastUpdate,
Projekt.lastdump PLastDump';
$bereich_vars = ' Bereich.autoID BautoID,
Bereich.name BName,
Bereich.beschreibung BBeschreibung,
Bereich.erstellt BErstellt,
Bereich.geaendert BGeaendert,
Bereich.lastaccess BLastAccess,
Bereich.lastupdate BLastUpdate,
Bereich.lastdump BLastDump';
$dokument_vars = ' Dokument.autoID DautoID,
Dokument.name DName,
Dokument.beschreibung DBeschreibung,
Dokument.erstellt DErstellt,
Dokument.geaendert DGeaendert';
$dokumentinstanz_vars = ' DokInstanz.autoID DIautoID,
DokInstanz.erstellt DIErstellt,
DokInstanz.lastupdate DIGeaendert';
} else {
$projekt_vars = ' Projekt.autoID AS PautoID,
Projekt.name AS PName,
Projekt.beschreibung AS PBeschreibung,
Projekt.erstellt AS PErstellt,
Projekt.geaendert AS PGeaendert,
Projekt.lastaccess AS PLastAccess,
Projekt.lastupdate AS PLastUpdate,
Projekt.lastdump AS PLastDump';
$bereich_vars = ' Bereich.autoID AS BautoID,
Bereich.name As BName,
Bereich.beschreibung As BBeschreibung,
Bereich.erstellt AS BErstellt,
Bereich.geaendert AS BGeaendert,
Bereich.lastaccess AS BLastAccess,
Bereich.lastupdate AS BLastUpdate,
Bereich.lastdump AS BLastDump';
$dokument_vars = ' Dokument.autoID As DautoID,
Dokument.name AS DName,
Dokument.beschreibung AS DBeschreibung,
Dokument.erstellt AS DErstellt,
Dokument.geaendert AS DGeaendert';
$dokumentinstanz_vars = ' DokInstanz.autoID As DIautoID,
DokInstanz.erstellt AS DIErstellt,
DokInstanz.lastupdate AS DIGeaendert';
}
$sqlquery = " SELECT $projekt_vars,
$bereich_vars,
$dokument_vars,
$dokumentinstanz_vars,
$contentElements
FROM $defTables,
$contentTables,
DokInstanz,
Dokument,
Bereich,
Projekt
WHERE $conjunktions AND
Dokument.bereichID = Bereich.autoID AND
Bereich.projektID = Projekt.autoID AND
DokInstanz.aktiv = 1
ORDER BY $orderby";
} else {
$sqlquery = $db_object->unescapeChar($row[12]);
}
if ($praecondition) {
?> </center><pre>
<? system($praecondition);
?> </pre><center>
<? }
$db_object->query_db($content_db, $sqlquery, 1);
$j=0;
while (($db_object->getrow(1)) && ($j < $anzahl_artikel)) {
if ($db_object->db_engine == 'mysql') {
$db_object->query_db($content_db, "UPDATE DokInstanz SET lastdump = " . time() . " WHERE autoID = " . $db_object->act_row_hash[1]['diautoid'], 2);
} else if (($db_object->db_engine == 'ora') || ($db_object->db_engine == 'oci')) {
$db_object->query_db($content_db, "UPDATE DokInstanz SET lastdump = " . time() . " WHERE autoID = " . $db_object->act_row_hash[1]['DIAUTOID'], 2);
} else {
$db_object->query_db($content_db, "UPDATE DokInstanz SET lastdump = " . time() . " WHERE autoID = " . $db_object->act_row_hash[1]['diautoid'], 2);
}
$output_overview_content = $overview_template_array[0];
$output_detail_content = $detail_document;
$ofout = trim($output_file);
$dfout = trim($detail_file);
$olink = trim($output_link);
$dlink = trim($detail_link);
// Projekt-, Bereichs- und Dokumentvariablen
subst_vals('counter', $j+1);
subst_vals('today', date($zeitangabe, time()));
if ($db_object->db_engine == 'mysql') {
subst_vals('PErstellt', date($zeitangabe, $db_object->act_row_hash[1]['PErstellt']));
subst_vals('PGeaendert', date($zeitangbe, $db_object->act_row_hash[1]['PGeaendert']));
subst_vals('PLastUpdate', date($zeitangabe, $db_object->act_row_hash[1]['PLastUpdate']));
subst_vals('PLastAccess', date($zeitangabe, $db_object->act_row_hash[1]['PLastAccess']));
subst_vals('PLastDump', date($zeitangabe, $db_object->act_row_hash[1]['PLastDump']));
subst_vals('BErstellt', date($zeitangabe, $db_object->act_row_hash[1]['BErstellt']));
subst_vals('BGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['BGeaendert']));
subst_vals('BLastUpdate', date($zeitangabe, $db_object->act_row_hash[1]['BLastUpdate']));
subst_vals('BLastAccess', date($zeitangabe, $db_object->act_row_hash[1]['BLastAccess']));
subst_vals('BLastDump', date($zeitangabe, $db_object->act_row_hash[1]['BLastDump']));
subst_vals('DErstellt', date($zeitangabe, $db_object->act_row_hash[1]['DErstellt']));
subst_vals('DGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['DGeaendert']));
subst_vals('DIautoID', $db_object->act_row_hash[1]['DIautoID']);
subst_vals('DIErstellt', date($zeitangabe, $db_object->act_row_hash[1]['DIErstellt']));
subst_vals('DIGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['DIGeaendert']));
} else if (($db_object->db_engine == 'ora') || ($db_object->db_engine == 'oci')) {
subst_vals('PErstellt', date($zeitangabe, $db_object->act_row_hash[1]['PERSTELLT']));
subst_vals('PGeaendert', date($zeitangbe, $db_object->act_row_hash[1]['PGEAENDERT']));
subst_vals('PLastUpdate', date($zeitangabe, $db_object->act_row_hash[1]['PLASTUPDATE']));
subst_vals('PLastAccess', date($zeitangabe, $db_object->act_row_hash[1]['PLASTACCESS']));
subst_vals('PLastDump', date($zeitangabe, $db_object->act_row_hash[1]['PLASTDUMP']));
subst_vals('BErstellt', date($zeitangabe, $db_object->act_row_hash[1]['BERSTELLT']));
subst_vals('BGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['BGEAENDERT']));
subst_vals('BLastUpdate', date($zeitangabe, $db_object->act_row_hash[1]['BLASTUPDATE']));
subst_vals('BLastAccess', date($zeitangabe, $db_object->act_row_hash[1]['BLASTACCESS']));
subst_vals('BLastDump', date($zeitangabe, $db_object->act_row_hash[1]['BLASTDUMP']));
subst_vals('DErstellt', date($zeitangabe, $db_object->act_row_hash[1]['DERSTELLT']));
subst_vals('DGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['DGEAENDERT']));
subst_vals('DIautoID', $db_object->act_row_hash[1]['DIAUTOID']);
subst_vals('DIErstellt', date($zeitangabe, $db_object->act_row_hash[1]['DIERSTELLT']));
subst_vals('DIGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['DIGEAENDERT']));
} else {
subst_vals('PErstellt', date($zeitangabe, $db_object->act_row_hash[1]['PErstellt']));
subst_vals('PGeaendert', date($zeitangbe, $db_object->act_row_hash[1]['PGeaendert']));
subst_vals('PLastUpdate', date($zeitangabe, $db_object->act_row_hash[1]['PLastUpdate']));
subst_vals('PLastAccess', date($zeitangabe, $db_object->act_row_hash[1]['PLastAccess']));
subst_vals('PLastDump', date($zeitangabe, $db_object->act_row_hash[1]['PLastDump']));
subst_vals('BErstellt', date($zeitangabe, $db_object->act_row_hash[1]['BErstellt']));
subst_vals('BGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['BGeaendert']));
subst_vals('BLastUpdate', date($zeitangabe, $db_object->act_row_hash[1]['BLastUpdate']));
subst_vals('BLastAccess', date($zeitangabe, $db_object->act_row_hash[1]['BLastAccess']));
subst_vals('BLastDump', date($zeitangabe, $db_object->act_row_hash[1]['BLastDump']));
subst_vals('DErstellt', date($zeitangabe, $db_object->act_row_hash[1]['DErstellt']));
subst_vals('DGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['DGeaendert']));
subst_vals('DIautoID', $db_object->act_row_hash[1]['DIautoID']);
subst_vals('DIErstellt', date($zeitangabe, $db_object->act_row_hash[1]['DIErstellt']));
subst_vals('DIGeaendert', date($zeitangabe, $db_object->act_row_hash[1]['DIGeaendert']));
}
$k=0;
while ( list( $key, $val ) = each( $db_object->act_row_hash[1]) ) {
if (($db_object->db_engine == 'ora') || ($db_object->db_engine == 'oci')) {
$key = strtoupper($key);
}
// Ersetzen der Variablen
if ( ($elementtyp_old == 'zeit')) {
if ($val) {
subst_vals(eregi_replace('_', ' ', $key) , date($zeitangabe, $val));
} else {
subst_vals(eregi_replace('_', ' ', $key) , '');
}
} else {
//subst_vals(eregi_replace('_', ' ', $key) , ereg_replace("\n", "<br>", $db_object->unescapeChar($val)));
subst_vals(eregi_replace('_', ' ', $key) , ($db_object->unescapeChar($val)));
}
$elementtyp_old = $val;
$elementlabel_old = $val;
$k++;
}
$overview_document = $overview_document . $output_overview_content;
// SCHREIBE DETAIL DATEI
if ($dfout) {
$sqlquery = "SELECT ersetzen, ersetzung FROM Ersetzung WHERE typID = $vorlageTyp";
$db_object->query_db($content_db, $sqlquery, 2);
while ($row = $db_object->getrow(2)) {
# $output_detail_content = eregi_replace($db_object->unescapeChar($row[0]), $db_object->unescapeChar($row[1]), $output_detail_content);
}
$fpdetail = fopen("$dfout", "w");
fputs($fpdetail, $output_detail_content);
fclose($fpdetail);
echo "<a href='$dlink'>Detail [$dfout] geschrieben.</a><br>";
}
// SCHLIESSE DETAIL DATEI
$j++;
}
$overview_document = $overview_document . $overview_template_array[1];
// SCHREIBE UEBERSICHTSDATEI
if ($ofout) {
$sqlquery = "SELECT ersetzen, ersetzung FROM Ersetzung WHERE typID = $vorlageTyp";
$db_object->query_db($content_db, $sqlquery, 2);
while ($row = $db_object->getrow(2)) {
# $overview_document = eregi_replace($db_object->unescapeChar($row[0]), $db_object->unescapeChar($row[1]), $overview_document);
}
$fpoverview = fopen("$ofout", "w");
fputs($fpoverview, $overview_document);
fclose($fpoverview);
echo "<a href='$olink'>Übersicht geschrieben</a><br>";
}
// SCHLIESSE UEBERSICHTSDATEI
if ($postcondition) {
?> </center><pre>
<? system($postcondition);
?> </pre><center>
<? }
}
}
require 'inc/db_disconnect.php3';
require 'inc/footer.php3';
?>