forked from tohe/wmdeit_kaform
458 lines
12 KiB
PHP
458 lines
12 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
require "config.php";
|
|
require "PHPMailer/PHPMailer.php";
|
|
require "PHPMailer/SMTP.php";
|
|
require "PHPMailer/Exception.php";
|
|
|
|
#$CONVERT_CMD = "/usr/bin/pdftk";
|
|
|
|
require_once('TCPDF/tcpdf.php');
|
|
|
|
class kaformPDF extends TCPDF {
|
|
//Page header
|
|
public function Header() {
|
|
}
|
|
|
|
// // Logo
|
|
// $image_file = K_PATH_IMAGES.'logo_example.jpg';
|
|
// $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
|
|
// // Set font
|
|
// $this->SetFont('helvetica', 'B', 20);
|
|
// // Title
|
|
// $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
|
|
// }
|
|
//
|
|
// // Page footer
|
|
public function Footer() {
|
|
}
|
|
// // Position at 15 mm from bottom
|
|
// $this->SetY(-15);
|
|
// // Set font
|
|
// $this->SetFont('helvetica', 'I', 8);
|
|
// // Page number
|
|
// $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
|
|
// }
|
|
// }
|
|
//
|
|
};
|
|
|
|
|
|
function get_adv()
|
|
{
|
|
$aval = $_POST['advance'];
|
|
if (!$aval)
|
|
$aval = "0";
|
|
$advance = floatval(str_replace(",",".",$aval));
|
|
if ($advance < 0 )
|
|
$advance = -$advance;
|
|
return $advance;
|
|
}
|
|
|
|
function mkFrontPDF(){
|
|
$comments = str_replace("\n","<BR>",$_POST['comments']);
|
|
$bankaddress = str_replace("\n","<BR>",$_POST['n_bankaddress']);
|
|
$address = str_replace("\n","<BR>",$_POST['n_address']);
|
|
|
|
$account_owner = $_POST['owner'];
|
|
if (!$account_owner) $account_owner = $_POST['realname'];
|
|
|
|
# $aval = $_POST['advance'];
|
|
# $advance = floatval(str_replace(",",".",$aval));
|
|
|
|
$aw = $_POST;
|
|
|
|
switch ($_POST['banktype']){
|
|
|
|
case "bank-eu":
|
|
$aw = "EU-Banküberweisung";
|
|
$aw_details = "
|
|
Kontoinhaber: $account_owner<br>
|
|
IBAN: $_POST[iban]<br>
|
|
BIC: $_POST[bic]<br>
|
|
Anmerkungen:<br> $comments<br>
|
|
";
|
|
break;
|
|
case "bank-noneu":
|
|
$aw = "Non-EU-Banküberweisung";
|
|
$aw_details = "
|
|
Kontoinhaber: $account_owner<br>
|
|
Kontonummer: $_POST[n_iban]<br>
|
|
BIC/SWIFT: $_POST[n_bic]<br>
|
|
Bank: $_POST[n_ankname]<br><br>
|
|
Bankanschrift:<br>$bankaddress<br><br>
|
|
Anschrift des Empfängers:<br>$address<br><br>
|
|
Verwendungszweck:<br> $_POST[n_purpose]<br>
|
|
Anmerkungen:<br> $comments<br>
|
|
";
|
|
break;
|
|
case "bank-paypal":
|
|
$aw = "PayPal";
|
|
$aw_details = "PayPal Account:";
|
|
|
|
}
|
|
|
|
|
|
$thtml = mkTable();
|
|
|
|
|
|
// create new PDF document
|
|
$pdf = new kaformPDF(
|
|
PDF_PAGE_ORIENTATION, PDF_UNIT, $pageLayout /*PDF_PAGE_FORMAT*/,
|
|
true, 'UTF-8', false);
|
|
|
|
// set document information
|
|
/* $pdf->SetCreator(PDF_CREATOR);
|
|
$pdf->SetAuthor('Nicola Asuni');
|
|
$pdf->SetTitle('TCPDF Example 001');
|
|
$pdf->SetSubject('TCPDF Tutorial');
|
|
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
|
|
*/
|
|
// set default header data
|
|
// $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH,
|
|
// PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING,
|
|
// array(0,64,255), array(0,64,128));
|
|
|
|
// $pdf->setFooterData(array(0,64,0), array(0,64,128));
|
|
|
|
// set header and footer fonts
|
|
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
|
|
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
|
|
|
|
// set default monospaced font
|
|
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
|
|
|
|
// set margins
|
|
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
|
|
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
|
|
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
|
|
|
|
// set auto page breaks
|
|
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
|
|
|
|
// set image scale factor
|
|
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
|
|
|
|
// set some language-dependent strings (optional)
|
|
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
|
|
require_once(dirname(__FILE__).'/lang/eng.php');
|
|
$pdf->setLanguageArray($l);
|
|
}
|
|
|
|
// ---------------------------------------------------------
|
|
|
|
// set default font subsetting mode
|
|
$pdf->setFontSubsetting(true);
|
|
|
|
// Set font
|
|
// dejavusans is a UTF-8 Unicode font, if you only need to
|
|
// print standard ASCII chars, you can use core fonts like
|
|
// helvetica or times to reduce file size.
|
|
$pdf->SetFont('dejavusans', '', 14, '', true);
|
|
|
|
// Add a page
|
|
// This method has several options, check the source code
|
|
// documentation for more information.
|
|
$pdf->AddPage('P');
|
|
|
|
// set text shadow effect
|
|
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2,
|
|
'depth_h'=>0.2, 'color'=>array(196,196,196),
|
|
'opacity'=>1, 'blend_mode'=>'Normal'));
|
|
|
|
// calculate the overall summary
|
|
$sum = calcSum();
|
|
|
|
// Set some content to print
|
|
$html =
|
|
<<<EOD
|
|
<h1>Kostenerstattungsantrag über $sum EUR</h1>
|
|
<p><b>Projekt: $_POST[project]</b></p>
|
|
<hr>
|
|
<p>
|
|
|
|
<br>
|
|
<!-- Nickname: $_POST[nickname]<br> -->
|
|
Name: $_POST[realname]<br>
|
|
Telefon: $_POST[phone]<br>
|
|
E-Mail: $_POST[email]<br>
|
|
Ansprechpartner: $_POST[wmdecontact]<br>
|
|
</p>
|
|
<hr>
|
|
<br>
|
|
<p>
|
|
Auszahlungsweg: $aw<br>
|
|
$aw_details
|
|
</p>
|
|
<hr>
|
|
$thtml
|
|
|
|
|
|
|
|
EOD;
|
|
|
|
#var_dump($thtml);
|
|
#die;
|
|
|
|
// <p>WMDE Ansprechpartner: $_POST[wmdecontact]</p>
|
|
// Telefon: $_POST[phone]
|
|
|
|
// Print text using writeHTMLCell()
|
|
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
|
|
|
|
// ---------------------------------------------------------
|
|
$tn = tempnam("/tmp","kaform");
|
|
|
|
// Close and output PDF document
|
|
// This method has several options, check the source code
|
|
// documentation for more information.
|
|
$pdf->Output($tn, 'F');
|
|
return $tn;
|
|
|
|
}
|
|
|
|
function mkSnippedPdf($key){
|
|
$pageLayout = array(210,70);
|
|
|
|
// create new PDF document
|
|
# $pdf = new kaformPDF(
|
|
# PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,
|
|
# true, 'UTF-8', false);
|
|
|
|
$pdf = new kaformPDF(
|
|
PDF_PAGE_ORIENTATION, PDF_UNIT, $pageLayout /*PDF_PAGE_FORMAT*/,
|
|
true, 'UTF-8', false);
|
|
|
|
|
|
|
|
$pdf->AddPage('L');
|
|
|
|
$pos = array_search($key,array_keys($_POST['description']))+1;
|
|
|
|
|
|
|
|
// echo "<br>Make Snipped for $key -> $pos<br>";
|
|
|
|
# $mydesk = $_POST[desc][$key];
|
|
#
|
|
$amount = $_POST['amount'][$key];
|
|
$desc = $_POST['description'][$key];
|
|
|
|
$am = floatval(str_replace(",",".",$amount));
|
|
$am = str_replace(".",",",sprintf("%.2f",$am));
|
|
|
|
|
|
$html =
|
|
<<<EOD
|
|
|
|
<h1>Position $pos</h1>
|
|
<p>$desc</p><br>
|
|
<p>$am EUR</p><br>
|
|
EOD;
|
|
|
|
// Print text using writeHTMLCell()
|
|
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
|
|
|
|
$tn = tempnam("/tmp","kaform");
|
|
|
|
// Close and output PDF document
|
|
// This method has several options, check the source code
|
|
// documentation for more information.
|
|
$pdf->Output("$tn", 'F');
|
|
return $tn;
|
|
}
|
|
|
|
|
|
|
|
//var_dump($_POST);
|
|
function convert($row) {
|
|
$r = array();
|
|
foreach ($_SESSION['files'] as $filename => $file){
|
|
if ($file['row'] != $row)
|
|
continue;
|
|
|
|
$tn = tempnam("/tmp","kaform");
|
|
file_put_contents("$tn",$file['content']);
|
|
array_push($r,"$tn");
|
|
}
|
|
return $r;
|
|
}
|
|
|
|
|
|
function calcSum(){
|
|
$sum =0;
|
|
if (!isset($_POST['amount'])) {
|
|
echo "wrong parameters";
|
|
die;
|
|
}
|
|
|
|
foreach ($_POST['amount'] as $val){
|
|
// var_dump($val);
|
|
$sum += floatval(str_replace(",",".",$val));
|
|
|
|
}
|
|
$sum -= get_adv();
|
|
return str_replace(".",",",sprintf("%0.2f",$sum));
|
|
// return sprintf("%.2f",$sum);
|
|
}
|
|
|
|
|
|
function mkTable(){
|
|
$html = "<br> <br><table>";
|
|
$pos = 1;
|
|
$sum =0;
|
|
if (!isset($_POST['amount'])) {
|
|
echo "wrong parameters";
|
|
die;
|
|
}
|
|
|
|
|
|
|
|
foreach ($_POST['amount'] as $key=>$val){
|
|
$currency = $_POST['currency'][$key];
|
|
|
|
$html .='<tr>';
|
|
|
|
$html .= "<td>$pos</td>";
|
|
|
|
$html .= "<td>".$_POST['date'][$key]."</td>";
|
|
$html .= "<td>".$_POST['description'][$key]."</td>";
|
|
$am = floatval(str_replace(",",".",$val));
|
|
$am = str_replace(".",",",sprintf("%.2f",$am));
|
|
$html .= '<td align="right">'.$am." ".$_POST['currency'][$key]. "</td>";
|
|
|
|
|
|
$html .="</tr>";
|
|
|
|
|
|
|
|
$sum += floatval(str_replace(",",".",$val));
|
|
$pos ++;
|
|
}
|
|
|
|
$adv = get_adv();
|
|
if ($adv) {
|
|
$html .= "<tr>";
|
|
$html .= '<td colspan="3">';
|
|
$html .= "Bereits erhaltener Vorschuss:";
|
|
$html .= '</td>';
|
|
$html .= '<td align="right">';
|
|
$html .= sprintf("-%0.2f",$adv)." $currency";
|
|
$html .= '</td>';
|
|
$html .= "</tr>";
|
|
|
|
}
|
|
|
|
$html .= '<tr>';
|
|
$html .= '<td colspan="3">';
|
|
$html .= "<b>Summe:</b>";
|
|
$html .= '</td>';
|
|
$html .= '<td align="right">';
|
|
$html .= "<b>".calcSum()." $currency</b>";
|
|
$html .= '</td>';
|
|
$html .= '</tr>';
|
|
|
|
$html .= "</table>";
|
|
# $html .="<br> <br>";
|
|
# $html .="<b>Summe: ".calcSum()."</b>";
|
|
return $html;
|
|
|
|
// return str_replace(".",",",sprintf("%0.2f",$sum));
|
|
// return sprintf("%.2f",$sum);
|
|
|
|
}
|
|
|
|
|
|
$pdfs = array();
|
|
|
|
// Applicatoin starts here
|
|
//
|
|
$p = mkFrontPDF();
|
|
|
|
$file = $p;
|
|
#header('Content-Disposition: attachment; filename="'. basename($file) . '"');
|
|
#header('Content-Length: ' . filesize($file));
|
|
#readfile($file);
|
|
|
|
#var_dump($p);
|
|
#die();
|
|
|
|
#echo "Making Fromt PDF<BR>";
|
|
|
|
|
|
#echo "Did Making Fromt PDF<BR>";
|
|
|
|
|
|
array_push($pdfs,$p);
|
|
//var_dump($pdfs);
|
|
|
|
foreach ($_POST['description'] as $key => $val) {
|
|
// echo "DREESK KEY VAL $key --> $val<br>";
|
|
$p = mkSnippedPDF($key);
|
|
array_push($pdfs,$p);
|
|
|
|
$pr = convert($key);
|
|
$pdfs = array_merge($pdfs,$pr);
|
|
|
|
}
|
|
|
|
//var_dump($pdfs);
|
|
//
|
|
$resultnam = tempnam("/tmp","karesult");
|
|
|
|
|
|
$cmd = "$CONVERT_CMD";
|
|
foreach ($pdfs as $filename){
|
|
$cmd .= " $filename";
|
|
}
|
|
$cmd .= " cat output $resultnam.pdf";
|
|
exec ($cmd);
|
|
#var_dump($_POST);
|
|
|
|
$file = "$resultnam.pdf";
|
|
|
|
if ($_POST['sendmail']=='yes'){
|
|
$subj = "Kostenerstattungsantrag ueber".calcSum()." EUR";
|
|
|
|
|
|
$mail = new PHPMailer\PHPMailer\PHPMailer();
|
|
$mail->SMTPOptions = array(
|
|
'ssl' => array(
|
|
'verify_peer' => false,
|
|
'verify_peer_name' => false,
|
|
'allow_self_signed' => true
|
|
)
|
|
);
|
|
|
|
$mail->IsSMTP();
|
|
$mail->setFrom($mailFrom);
|
|
$mail->Subject = $subj;
|
|
$mail->Body = "Kostenerstattungsantrag ...";
|
|
$mail->AddAddress($mailDest);
|
|
$mail->AddAttachment( $file , 'antrag.pdf' );
|
|
|
|
$mail->Host = $mailHost; // Specify main and backup server
|
|
$mail->Port = $mailPort; // Set the SMTP port
|
|
$mail->SMTPAuth = $mailSMTPAuth;
|
|
$mail->Username = $mailUsername;
|
|
$mail->Password = $mailPassword;
|
|
$mail->SMTPSecure = $mailSMTPSecure; // Enable encryption, 'ssl' also accepted
|
|
$rc = $mail->send();
|
|
if (!$rc) {
|
|
echo 'Mailer Error: ' . $mail->ErrorInfo;
|
|
}
|
|
echo "Dein Antrag wurde versendet.<BR>";
|
|
echo '<a href="ka.php">
|
|
Weiteren Antrag auf Kostenerstattung stellen</a><BR>';
|
|
|
|
|
|
die;
|
|
}
|
|
$file = "$resultnam.pdf";
|
|
header('Content-Disposition: attachment; filename="'. basename($file) . '"');
|
|
header('Content-Length: ' . filesize($file));
|
|
readfile($file);
|
|
|
|
|