Skip to content
Snippets Groups Projects
Commit 304be59e authored by Aria Givi's avatar Aria Givi
Browse files

Bugs behoben, Dateien werden nun vollständig zum Zip-Archiv hinzugefügt

parent 8403f793
No related branches found
No related tags found
2 merge requests!912Development,!904Resolve "Arbeit am Übersetzungstool"
...@@ -100,7 +100,7 @@ class LanguageController extends Controller ...@@ -100,7 +100,7 @@ class LanguageController extends Controller
if ($exclude !== "") { if ($exclude !== "") {
try { try {
$ex = unserialize(base64_decode($exclude)); $ex = unserialize(base64_decode($exclude));
} catch (\ErrorException $e) { } catch (ErrorException $e) {
$ex = ['files' => [], 'new' => 0]; $ex = ['files' => [], 'new' => 0];
} }
} }
...@@ -202,7 +202,7 @@ class LanguageController extends Controller ...@@ -202,7 +202,7 @@ class LanguageController extends Controller
$fn = ""; $fn = "";
#Wähle die erste Datei aus #Wähle die erste, unbearbeitete Datei aus
foreach($languageObjects as $folder => $languageObject) { foreach($languageObjects as $folder => $languageObject) {
foreach($languageObject->stringMap as $languageFileName => $languageFile) { foreach($languageObject->stringMap as $languageFileName => $languageFile) {
$fn = $languageFileName; $fn = $languageFileName;
......
...@@ -121,17 +121,23 @@ class MailController extends Controller ...@@ -121,17 +121,23 @@ class MailController extends Controller
#Ueberprueft ob ein bereits vorhandener Eintrag bearbeitet worden ist #Ueberprueft ob ein bereits vorhandener Eintrag bearbeitet worden ist
private function isEdited($k, $v, $filename) private function isEdited($k, $v, $filename)
{ {
$temp = include resource_path()."/".$filename; try {
foreach ($temp as $key => $value) { $temp = include resource_path()."/".$filename;
if($k === $key && $v !== $value) { foreach ($temp as $key => $value) {
return true; if($k === $key && $v !== $value) {
} return true;
}
}
} catch (\ErrorException $e) {
#Datei existiert noch nicht
return true;
} }
return false; return false;
} }
private function extractLanguage($key) private function extractLanguage($key)
{ {
#Kürzt bspw. "_new_de_redirect bzw. "de_redirect" zu "de"
preg_match("/^(?:_new_)?([^_]*)/", $key, $matches); preg_match("/^(?:_new_)?([^_]*)/", $key, $matches);
foreach($matches as $dir) { foreach($matches as $dir) {
if(strlen($dir) == 2) if(strlen($dir) == 2)
...@@ -142,6 +148,7 @@ class MailController extends Controller ...@@ -142,6 +148,7 @@ class MailController extends Controller
private function processKey($key) private function processKey($key)
{ {
$key = trim($key); $key = trim($key);
#Kürzt bspw. "_new_de_redirect bzw. "de_redirect" zu "redirect"
preg_match("/^(?:_new_)?(?:[^_]*)_(\w*.?\w*#?.?\w*)/", $key, $matches); preg_match("/^(?:_new_)?(?:[^_]*)_(\w*.?\w*#?.?\w*)/", $key, $matches);
foreach($matches as $processedKey) { foreach($matches as $processedKey) {
if(strpos($processedKey, "_") === FALSE) { if(strpos($processedKey, "_") === FALSE) {
...@@ -242,8 +249,9 @@ class MailController extends Controller ...@@ -242,8 +249,9 @@ class MailController extends Controller
$filename = $request->input('filename'); $filename = $request->input('filename');
#Identifizieren des gedrückten Buttons
if(isset($request['nextpage'])) { if(isset($request['nextpage'])) {
#Leite weiter zur nächsten Seite
$ex = []; $ex = [];
if ($exclude !== "") { if ($exclude !== "") {
...@@ -266,6 +274,7 @@ class MailController extends Controller ...@@ -266,6 +274,7 @@ class MailController extends Controller
return redirect(url('synoptic', ['exclude' => $ex])); return redirect(url('synoptic', ['exclude' => $ex]));
} }
#Andernfalls auslesen, zippen und herunterladen der veränderten Dateien
$data = []; $data = [];
$new = 0; $new = 0;
$editedFiles = []; $editedFiles = [];
...@@ -275,30 +284,42 @@ class MailController extends Controller ...@@ -275,30 +284,42 @@ class MailController extends Controller
if ($key === "filename" || $value === "") { if ($key === "filename" || $value === "") {
continue; continue;
} }
$key = base64_decode($key); $key = base64_decode($key);
#Pfad zur Datei anhand des Schlüsselnamens rekonstruieren (Schlüssel enthält Sprachkürzel) #Pfad zur Datei anhand des Schlüsselnamens rekonstruieren (Schlüssel enthält Sprachkürzel)
$langdir = $this->extractLanguage($key); $langdir = $this->extractLanguage($key);
$fn = "lang/".$langdir."/".$filename; $filepath = "lang/".$langdir."/".$filename;
if (strpos($key, "_new_") === 0 && $value !== "") {
if (strpos($key, "_new_") === 0 && $value !== "" || $this->isEdited($this->processKey($key), $value, $filepath)) {
$new++; $new++;
$editedFiles[$langdir] = $filename; $editedFiles[$langdir] = $filepath;
} else if ($this->isEdited($this->processKey($key), $value, $fn)) { }
$new++; }
$editedFiles[$langdir] = $filename;
#Erneute Iteration über Request, damit Dateien mitsamt vorherigen Einträgen abgespeichert werden
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);
#Überspringe Datei, falls diese nicht bearbeitet worden ist #Überspringe Datei, falls diese nicht bearbeitet worden ist
if(!isset($editedFiles[$langdir])) { if(!isset($editedFiles[$langdir])) {
continue; continue;
} }
#Key verarbeiten, sodass er nur den eigentlichen Keynamen enthält
$key = $this->processKey($key);
#Aufdröseln von 2D-Arrays #Key kuerzen, sodass er nur den eigentlichen Keynamen enthält
$key = $this->processKey($key);
if (!strpos($key, "#")) { if (!strpos($key, "#")) {
$data[$langdir][$key] = $value; $data[$langdir][$key] = $value;
#Aufdröseln von 2D-Arrays
} else { } else {
$ref = &$data; $ref = &$data;
do { do {
...@@ -308,7 +329,7 @@ class MailController extends Controller ...@@ -308,7 +329,7 @@ class MailController extends Controller
$ref = &$ref[$key]; $ref = &$ref[$key];
$ref = $value; $ref = $value;
} }
} }
if(empty($data)) { if(empty($data)) {
return redirect(url('synoptic', ['exclude' => $exclude])); return redirect(url('synoptic', ['exclude' => $exclude]));
...@@ -316,8 +337,9 @@ class MailController extends Controller ...@@ -316,8 +337,9 @@ class MailController extends Controller
$zip = new ZipArchive(); $zip = new ZipArchive();
if ($zip->open("langfiles.zip", ZipArchive::OVERWRITE)!==TRUE) { if ($zip->open("langfiles.zip", ZipArchive::OVERWRITE)!==TRUE) {
exit("cannot open <$filename>\n"); } else if ($zip->open("langfiles.zip", ZipArchive::CREATE)!==TRUE) {
exit("Cannot open".$filename);
} }
#Erstelle Ausgabedateien #Erstelle Ausgabedateien
......
...@@ -12,7 +12,7 @@ class LanguageObject ...@@ -12,7 +12,7 @@ class LanguageObject
public $filePath = ""; public $filePath = "";
#2D-Array der Form [$filename][$key] #2D-Array der Form [$filename][$key]
public $stringMap; public $stringMap = [];
public function __construct($lang, $path) public function __construct($lang, $path)
{ {
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment