forked from tohe/wmdeit_kaform
				
			
		
			
				
	
	
		
			453 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			453 lines
		
	
	
		
			11 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){
 | 
						|
		$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)." EUR";
 | 
						|
		$html .= '</td>';
 | 
						|
		$html .= "</tr>";
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	$html .= '<tr>';
 | 
						|
	$html .= '<td colspan="3">';
 | 
						|
	$html .= "<b>Summe:</b>";
 | 
						|
	$html .= '</td>';
 | 
						|
	$html .= '<td align="right">';
 | 
						|
	$html .= "<b>".calcSum()." EUR</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";
 | 
						|
 | 
						|
	die;
 | 
						|
}
 | 
						|
$file = "$resultnam.pdf";
 | 
						|
header('Content-Disposition: attachment; filename="'. basename($file) . '"');
 | 
						|
header('Content-Length: ' . filesize($file));
 | 
						|
readfile($file);
 | 
						|
 | 
						|
 |