From ebfef336c3e6939e45400b7d641cd8ef9b00c8b4 Mon Sep 17 00:00:00 2001 From: Dheeyi William Date: Tue, 30 Aug 2016 13:33:46 -0400 Subject: [PATCH] R-1733 Cannot "Save As" in Russian language R-1733 Cannot "Save As" in Russian language --- .../engine/methods/processes/processes_DownloadFile.php | 6 +++--- .../ProcessMaker/BusinessModel/Migrator/PMXPublisher.php | 9 +++++++-- .../engine/src/ProcessMaker/Exporter/XmlExporter.php | 9 +++++++-- workflow/engine/src/ProcessMaker/Util/IO/HttpStream.php | 8 ++++++-- workflow/engine/templates/processes/main.js | 2 +- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/workflow/engine/methods/processes/processes_DownloadFile.php b/workflow/engine/methods/processes/processes_DownloadFile.php index 56cfce6c7..7cd355876 100644 --- a/workflow/engine/methods/processes/processes_DownloadFile.php +++ b/workflow/engine/methods/processes/processes_DownloadFile.php @@ -22,16 +22,16 @@ * Coral Gables, FL, 33134, USA, or email info@colosa.com. */ -if (! isset($_GET["file_hash"])) { +if (!isset($_GET["file_hash"])) { throw new Exception("Invalid Request, param 'file_hash' was not sent."); } $httpStream = new \ProcessMaker\Util\IO\HttpStream(); $outputDir = PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "files" . PATH_SEP . "output" . PATH_SEP; -$filename = base64_decode($_GET["file_hash"]); +$filename = urldecode(base64_decode($_GET["file_hash"])); $fileExtension = pathinfo($outputDir . $filename, PATHINFO_EXTENSION); -if (! file_exists($outputDir . $filename)) { +if (!file_exists($outputDir . $filename)) { throw new Exception("Error, couldn't find request file: $filename"); } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PMXPublisher.php b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PMXPublisher.php index 9ac9d6e9f..13371f7dc 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PMXPublisher.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PMXPublisher.php @@ -10,7 +10,7 @@ class PMXPublisher { $parentDir = dirname($filename); - if (! is_dir($parentDir)) { + if (!is_dir($parentDir)) { Util\Common::mk_dir($parentDir, 0775); } @@ -19,7 +19,12 @@ class PMXPublisher file_put_contents($outputFile, $data); @chmod($outputFile, 0755); - return basename($outputFile); + $currentLocale = setlocale(LC_CTYPE, 0); + setlocale(LC_CTYPE, 'en_US.UTF-8'); + $filename = basename($outputFile); + setlocale(LC_CTYPE, $currentLocale); + + return $filename; } public function truncateName($outputFile, $dirName = true) diff --git a/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php b/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php index abd6d6d7b..fa817dc02 100644 --- a/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php +++ b/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php @@ -135,8 +135,13 @@ class XmlExporter extends Exporter file_put_contents($outputFile, $this->export()); chmod($outputFile, 0755); - - return basename($outputFile); + + $currentLocale = setlocale(LC_CTYPE, 0); + setlocale(LC_CTYPE, 'en_US.UTF-8'); + $filename = basename($outputFile); + setlocale(LC_CTYPE, $currentLocale); + + return $filename; } /** diff --git a/workflow/engine/src/ProcessMaker/Util/IO/HttpStream.php b/workflow/engine/src/ProcessMaker/Util/IO/HttpStream.php index b8e3b8d3d..5da5f84e8 100644 --- a/workflow/engine/src/ProcessMaker/Util/IO/HttpStream.php +++ b/workflow/engine/src/ProcessMaker/Util/IO/HttpStream.php @@ -155,7 +155,7 @@ class HttpStream */ public function loadFromFile($filename) { - if (! file_exists($filename)) { + if (!file_exists($filename)) { throw new \Exception("Unable to find file: $filename"); } @@ -163,7 +163,11 @@ class HttpStream $this->content = file_get_contents($this->filename); $fileInfo = pathinfo($filename, PATHINFO_EXTENSION); $this->setExtension($fileInfo); - $this->setSourceName(basename($filename)); + $currentLocale = setlocale(LC_CTYPE, 0); + setlocale(LC_CTYPE, 'en_US.UTF-8'); + $filename = basename($filename); + setlocale(LC_CTYPE, $currentLocale); + $this->setSourceName($filename); } public function setExtension($extension) diff --git a/workflow/engine/templates/processes/main.js b/workflow/engine/templates/processes/main.js index e28ca2e76..9a376c4fc 100644 --- a/workflow/engine/templates/processes/main.js +++ b/workflow/engine/templates/processes/main.js @@ -1127,7 +1127,7 @@ function exportProcess() { myMask.hide(); if (result.success) { - window.location = "../processes/processes_DownloadFile?file_hash=" + result.file_hash; + window.location = "../processes/processes_DownloadFile?file_hash=" + encodeURIComponent(result.file_hash); } else { Ext.Msg.show({ title: "",