Files
gutachten_t3/packages/gutachten/Classes/Downloads/PdfStandards.php
T

216 lines
9.3 KiB
PHP

<?php
namespace HermannTelser\Gutachten\Downloads;
use HermannTelser\Gutachten\DB\DbFunction;
use HermannTelser\Gutachten\DB\Select\Paragraph62;
use HermannTelser\Gutachten\DB\Select\Select;
use HermannTelser\Gutachten\Utility\Helper;
use HermannTelser\Gutachten\Downloads\AllgemeinTabelle;
use Mpdf;
// Mpdf installed by typo3 extension
use TYPO3\CMS\Core\Utility\GeneralUtility;
class PdfStandards
{
public static $Mpdf;
/**
* @return array
*/
public static function download()
{
// ob_clean(); // set to remove wrong headers which crashed some files (e.g. xls, dot, ...)
// DbFunction::$debug = 1;
DbFunction::$projektid = GeneralUtility::_GP('projekt_aktive');
if (0 == DbFunction::$projektid or !is_numeric(DbFunction::$projektid)) {
die('aktive projekt ID fehlt!');
}
$_platzhalter = DbFunction::select(
'tx_gutachten_projekteplatzhalter',
['code', 'txt'],
['pid' => DbFunction::$projektid]
);
$_projekt = DbFunction::select(
'tx_gutachten_projekte',
['auftraggeber_id', 'gutachter_id', 'intname', 'name', 'beschreibung', 'erstellung', 'onoff', 'upload', 'allgemeinupload', 'recalculate', 'zuabTitel', 'nwbTitel', 'zustTitel', 'allgemTitel', 'loggia_title', 'nwbStartSeite', 'm1pP', 'm5pP', 'timestamp', 'status', 'erstelldatum'],
['id' => DbFunction::$projektid]
);
$_auftraggeber = DbFunction::select(
'tx_gutachten_auftraggeber',
'*',
['id' => $_projekt[0]['auftraggeber_id']]
);
$_gutachter = DbFunction::select(
'tx_gutachten_gutachter',
'*',
['id' => $_projekt[0]['gutachter_id']]
);
// print_r($_projekt);
// print_r($_auftraggeber);
// print_r($_gutachter);
// exit;
self::$Mpdf = new \Mpdf\Mpdf([
'mode' => 'utf-8',
'format' => 'A4-P',
'margin_left' => 0,
'margin_right' => 0,
'margin_top' => 0,
'margin_bottom' => 0,
'margin_header' => 0,
'margin_footer' => 0,
]);
$stylesheet = file_get_contents(__DIR__.'/style.css');
self::$Mpdf->WriteHTML($stylesheet, \Mpdf\HTMLParserMode::HEADER_CSS);
// 1 tabelle
// 2 inhaltsverzeichnis
// 3 textblock
// 4 deckblatt
// 5 nur Überschrift
// 6 auftraggeber
// 7 tabelle § 6/2
// 8 allgemeinflächen
$_standards = DbFunction::select('tx_gutachten_projektestandards', '*', ['AND' => ['hidden' => 0, 'pid' => DbFunction::$projektid], 'ORDER' => 'pos']);
foreach ($_standards as $key => $value) {
$textartid = (int)$value['textart_id'];
switch ($textartid) {
case '4':
// DECKBLATT
$html = Deckblatt::create($value, $_projekt, $_platzhalter, $_gutachter, $_auftraggeber);
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '2':
// INHALTSVERZEICHNIS
self::$Mpdf->AddPageByArray(['mgt' => 22, 'mgb' => 22, 'mgl' => 10, 'mgr' => 10]);
$html = Inhaltsverzeichnis::create($value, $_platzhalter);
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '1':
if (1 == $value['neueseite']) {
self::$Mpdf->AddPage();
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '';
if ('' != $value['titel']) {
$html = '<div class="header">'.$value['titel'].'</div>';
} elseif ('' != $value['kennung']) {
$html = '<div class="header">'.$value['kennung'].'</div>';
}
$text = Helper::replacePlatzhalter($_platzhalter, $value['txt']);
$_text = explode('<br />', $text);
$html .= '<table class="pure-table pure-table-striped ganzebreite size09">';
foreach ($_text as $key => $value) {
$_row = explode('|', $value);
$html .= Helper::table_row($_row);
}
$html .= '</table>';
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '3':
if (1 == $value['neueseite']) {
self::$Mpdf->AddPage();
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '';
if ('' != $value['titel']) {
$html = '<div class="header">'.$value['titel'].'</div>';
} elseif ('' != $value['kennung']) {
$html = '<div class="header">'.$value['kennung'].'</div>';
}
$textblock = Helper::replacePlatzhalter($_platzhalter, $value['txt']);
$html .= '<div class="textblock">'.$textblock.'</div>';
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '5':
if (1 == $value['neueseite']) {
self::$Mpdf->AddPage();
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
if ('' != $value['titel']) {
$html = '<div class="header">'.$value['titel'].'</div>';
} elseif ('' != $value['kennung']) {
$html = '<div class="header">'.$value['kennung'].'</div>';
}
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '6':
if (1 == $value['neueseite']) {
self::$Mpdf->AddPage();
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$html = '<div class="header">'.$value['titel'].'</div>';
$auftraggeber = str_replace('<br />', '|||', $_auftraggeber[0]['txt']);
$auftraggeber = str_replace('</div>', '|||', $auftraggeber);
$tmp = explode('|||', $auftraggeber);
$string = '';
foreach ($tmp as $key => $value) {
$value = strip_tags($value);
if ('-' == $value[0]) {
$value = substr($value, 1);
}
$string .= trim(strip_tags($value)).'<br>';
}
$html .= '<div class="textblock">'.$string.'</div>';
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '7':
// 7 tabelle § 6/2
if (1 == $value['neueseite']) {
self::$Mpdf->AddPage();
self::$Mpdf->SetHTMLFooter('<div class="size09 center">Seite {PAGENO}<br><br></div>');
}
$_paragraph_62 = Paragraph62::select(DbFunction::$projektid);
$html = '<table class="pure-table pure-table-striped ganzebreite size08 center">';
$html .= Helper::table_header_row(['Top', 'Geschoß', 'Orientierung', 'Typ']);
foreach ($_paragraph_62 as $key => $value) {
$html .= Helper::table_row($value, 1);
}
$html .= '</table>';
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
case '8':
// ALLGEMEINFLÄCHEN
if (1 == $value['neueseite']) {
self::$Mpdf->AddPage();
self::$Mpdf->SetHTMLFooter('<div class="center">Seite {PAGENO}<br><br></div>');
}
if ('' != $value['titel']) {
$html = '<div class="header">'.$value['titel'].'</div>';
} elseif ('' != $value['kennung']) {
$html = '<div class="header">'.$value['kennung'].'</div>';
}
$html .= AllgemeinTabelle::load(DbFunction::$projektid);
$html .= '<br><br><br><br><br><table class="inhalt"><tr>';
$html .= '<td>'.$_projekt[0]['erstellung'].'</td>';
$html .= '<td class="right">'.$_gutachter[0]['kopf'].'</td>';
$html .= '</tr></table>';
self::$Mpdf->WriteHTML($html, \Mpdf\HTMLParserMode::HTML_BODY);
break;
}
}
self::$Mpdf->Output('Standard.pdf', Mpdf\Output\Destination::INLINE);
exit;
}
}