input('email', 'noreply@metager.de'); if ($replyTo === "") { $replyTo = "noreply@metager.de"; } else { $replyTo = $request->input('email'); } if (!$request->has('message')) { $messageType = "error"; $returnMessage = "Tut uns leid, aber leider haben wir mit Ihrer Kontaktanfrage keine Daten erhalten. Die Email wurde nicht versand"; } else { # Wir versenden die Mail des Benutzers an uns: $message = $request->input('message'); Mail::to("office@suma-ev.de") ->send(new Kontakt($replyTo, $message)); $returnMessage = 'Ihre Email wurde uns erfolgreich zugestellt. Vielen Dank dafür! Wir werden diese schnellstmöglich bearbeiten und uns dann ggf. wieder bei Ihnen melden.'; $messageType = "success"; } return view('kontakt.kontakt') ->with('title', 'Kontakt') ->with('js', ['openpgp.min.js', 'kontakt.js']) ->with($messageType, $returnMessage); } public function donation(Request $request) { # Der enthaltene String wird dem Benutzer nach der Spende ausgegeben $messageToUser = ""; $messageType = ""; # [success|error] #Sicherheitsüberprüfung (Wir wurden in letzter Zeit ziemlich mit Mails zugespammt # Wir überprüfen also, ob das Feld für die Kontonummer tatsächlich eine Kontonummer, oder eine IBAN enthält: $iban = $request->input('Kontonummer', ''); $iban = preg_replace("/\s/s", "", $iban); # Eine Kontonummer besteht nur aus Zahlen # Eine IBAN besteht aus einem Ländercode (2 Buchstaben), einer 2 stelligen Prüfsumme (2 Ziffern) gefolgt von # einer Kombination aus Buchstaben und Zahlen if (!preg_match("/^\d+$/s", $iban) && !preg_match("/^[a-zA-Z]{2}\d{2}[a-zA-Z0-9]+$/s", $iban)) { $messageToUser = "Die eingegebene IBAN/Kontonummer scheint nicht Korrekt zu sein. Nachricht wurde nicht gesendet"; $messageType = "error"; } else { # Folgende Felder werden vom Spendenformular als Input übergeben: # Name # Telefon # email # Kontonummer ( IBAN ) # Bankleitzahl ( BIC ) # Nachricht if (!$request->has('Kontonummer') || !$request->has('Bankleitzahl') || !$request->has('Nachricht')) { $messageToUser = "Sie haben eins der folgenden Felder nicht ausgefüllt: IBAN, BIC, Nachricht. Bitte korrigieren Sie Ihre Eingabe und versuchen es erneut.\n"; $messageType = "error"; } else { $message = "\r\nName: " . $request->input('Name', 'Keine Angabe'); $message .= "\r\nTelefon: " . $request->input('Telefon', 'Keine Angabe'); $message .= "\r\nKontonummer: " . $request->input('Kontonummer'); $message .= "\r\nBankleitzahl: " . $request->input('Bankleitzahl'); $message .= "\r\nNachricht: " . $request->input('Nachricht'); $replyTo = $request->input('email', 'anonymous-user@metager.de'); if (!filter_var($replyTo, FILTER_VALIDATE_EMAIL)) { $messageToUser .= "Die eingegebene Email-Addresse ($replyTo) scheint nicht korrekt zu sein."; } try { Mail::to("office@suma-ev.de") ->send(new Spende($replyTo, $message)); $messageType = "success"; $messageToUser = "Herzlichen Dank!! Wir haben Ihre Spendenbenachrichtigung erhalten."; } catch (\Swift_TransportException $e) { $messageType = "error"; $messageToUser = 'Beim Senden Ihrer Spendenbenachrichtigung ist ein Fehler auf unserer Seite aufgetreten. Bitte schicken Sie eine Email an: office@suma-ev.de, damit wir uns darum kümmern können.'; } } } if ($messageType === "error") { $request->flash(); return view('spende.spende') ->with('title', 'Kontakt') ->with($messageType, $messageToUser); } else { $data = ['name' => $request->input('Name', 'Keine Angabe'), 'telefon' => $request->input('Telefon', 'Keine Angabe'), 'kontonummer' => $request->input('Kontonummer'), 'bankleitzahl' => $request->input('Bankleitzahl'), 'email' => $request->input('email', 'anonymous-user@metager.de'), 'nachricht' => $request->input('Nachricht')]; $data = base64_encode(serialize($data)); return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), route("danke", ['data' => $data]))); } } #Ueberprueft ob ein bereits vorhandener Eintrag bearbeitet worden ist private function isEdited($k, $v, $filename) { $temp = include resource_path()."/".$filename; foreach ($temp as $key => $value) { if($k === $key && $v !== $value) { return true; } } return false; } private function extractLanguage($key) { preg_match("/^(?:_new_)?([^_]*)/", $key, $matches); foreach($matches as $dir) { if(strlen($dir) == 2) return $dir; } } private function processKey($key) { $key = trim($key); preg_match("/^(?:_new_)?(?:[^_]*)_(\w*#?\w*)/", $key, $matches); foreach($matches as $processedKey) { if(strpos($processedKey, "_") === FALSE) { return $processedKey; } } return $key; } public function sendLanguageFile(Request $request, $from, $to, $exclude = "", $email ="") { $filename = $request->input('filename'); # Wir erstellen nun zunächst den Inhalt der Datei: $data = []; $new = 0; $emailAddress = ""; $editedKeys = ""; foreach ($request->all() as $key => $value) { if ($key === "filename" || $value === "") { continue; } if($key === "email") { $emailAddress = $value; continue; } $key = base64_decode($key); if (strpos($key, "_new_") === 0 && $value !== "") { $new++; $key = substr($key, strpos($key, "_new_") + 5); $editedKeys = $editedKeys."\n".$key; } else if ($this->isEdited($key, $value, $filename)) { $new++; $editedKeys = $editedKeys."\n".$key; } $key = trim($key); if (!strpos($key, "#")) { $data[$key] = $value; } else { $ref = &$data; do { $ref = &$ref[substr($key, 0, strpos($key, "#"))]; $key = substr($key, strpos($key, "#") + 1); } while (strpos($key, "#")); $ref = &$ref[$key]; $ref = $value; } } $output = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $output = preg_replace("/\{/si", "[", $output); $output = preg_replace("/\}/si", "]", $output); $output = preg_replace("/\": ([\"\[])/si", "\"\t=>\t$1", $output); $output = " 0) { if($emailAddress !== "") { Mail::to("aria@suma-ev.de") ->send(new Sprachdatei($message, $output, basename($filename), $emailAddress)); } else { Mail::to("aria@suma-ev.de") ->send(new Sprachdatei($message, $output, basename($filename))); } } $ex = base64_encode(serialize($ex)); return redirect(url('languages/edit', ['from' => $from, 'to' => $to, 'exclude' => $ex, 'email' => $emailAddress])); } public function downloadModifiedLanguagefiles(Request $request, $exclude = "") { $filename = $request->input('filename'); $data = []; $new = 0; $editedFiles = []; foreach ($request->all() as $key => $value) { if ($key === "filename" || $value === "") { continue; } $key = base64_decode($key); #Pfad zur Datei anhand des Schlüsselnamens rekonstruieren (Schlüssel enthält Sprachkürzel) $langdir = $this->extractLanguage($key); $fn = "lang/".$langdir."/".$filename; if (strpos($key, "_new_") === 0 && $value !== "") { $new++; $editedFiles[$langdir] = $filename; } else if ($this->isEdited($key, $value, $fn)) { $new++; $editedFiles[$langdir] = $filename; } #Überspringe Datei, falls diese nicht bearbeitet worden ist if(!isset($editedFiles[$langdir])) { continue; } #Key verarbeiten, sodass er nur den eigentlichen Keynamen enthält $key = $this->processKey($key); #Aufdröseln von 2D-Arrays if (!strpos($key, "#")) { $data[$langdir][$key] = $value; } else { $ref = &$data; do { $ref = &$ref[$langdir][substr($key, 0, strpos($key, "#"))]; $key = substr($key, strpos($key, "#") + 1); } while (strpos($key, "#")); $ref = &$ref[$key]; $ref = $value; } } #Erstelle Ausgabedateien foreach($data as $lang => $entries) { $output[$lang] = json_encode($entries, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $output[$lang] = preg_replace("/\{/si", "[", $output[$lang]); $output[$lang] = preg_replace("/\}/si", "]", $output[$lang]); $output[$lang] = preg_replace("/\": ([\"\[])/si", "\"\t=>\t$1", $output[$lang]); $output[$lang] = " 0) { } $ex = base64_encode(serialize($ex)); $zip = new ZipArchive(); return response()->make($output["fr"]) ->header("Content-type","text/plain; charset=utf-8") ->header("Content-disposition","attachment; filename=\"".$filename."\""); //return response()->download($output["fr"], $filename); //return redirect(url('synoptic', ['exclude' => $ex])); } }