diff --git a/web_service/ws/Workspaces.class.inc b/web_service/ws/Workspaces.class.inc index f7919371bef63fc8513882758fce30e65f300664..d4670d928a5ca83b80037a5887d7381eb7955d9a 100755 --- a/web_service/ws/Workspaces.class.inc +++ b/web_service/ws/Workspaces.class.inc @@ -714,7 +714,7 @@ class Workspaces extends GTF { $error_message = ""; // Si le dossier {id} n'existe pas (Important pour gérer les erreurs) - if (!is_dir($sDirName)) { + if (isDirInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"]) !== true) { $error_message .= $sDirName . " does not exist"; writeToErrorLog("WARNING: " . $error_message); @@ -725,7 +725,7 @@ class Workspaces extends GTF { return $sMessage; } // Si le dossier {id}/fme n'existe pas (Important pour gérer les erreurs) - if (!is_dir($sDirName . "/fme")) { + if (isDirInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'fme') !== true) { $error_message .= $sDirName . "/fme does not exist"; writeToErrorLog("WARNING: " . $error_message); @@ -737,9 +737,10 @@ class Workspaces extends GTF { } // Si le dossier {id}/form n'existe pas il est crée - if (!is_dir($sDirName . "/form")) { + if (isDirInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'form') !== true) { writeToErrorLog("WARNING: " . $sDirName . "/form dit not exist"); - @mkdir($sDirName . "/form"); + if ($this->aProperties['fileS3Uploader'] === false) + @mkdir($sDirName . "/form"); } if (!empty($this->aValues["cmd"])) { @@ -846,15 +847,16 @@ class Workspaces extends GTF { if (!empty($this->aValues["fmw_file_file"])) { $this->aValues["fmw_file"] = $this->aValues["fmw_file_name"]; } + // Upload du fichier de ressource. if (!empty($this->aValues["comp_file_file"])) { $this->aValues["comp_file"] = $this->aValues["comp_file_name"]; - $fp = fopen($sDirName . "/fme/" . utf8_decode($this->aValues["comp_file_name"]), "w"); - fwrite($fp, $this->aValues["comp_file_file"]); - fclose($fp); - $ext = pathinfo($sDirName . "/fme/" . utf8_decode($this->aValues["comp_file_name"]), PATHINFO_EXTENSION); + putFileContentInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'fme', $this->aValues["comp_file_name"], $this->aValues["comp_file_file"]); + /* + $ext = pathinfo($_FILES['comp_file']['name'], PATHINFO_EXTENSION); if ($ext == "zip") { - unZip($sDirName . "/fme/" . utf8_decode($this->aValues["comp_file_name"]), $sDirName . "/fme/"); + unZip($sDirName . "/fme/" . utf8_decode($_FILES['comp_file']['name']), $sDirName . "/fme/"); } + */ } $aReturn = $this->genericPut($this->aProperties['schema_gtf'], 'workspace', 'workspace_id'); if ($aReturn["sStatus"] == 1) { @@ -882,35 +884,38 @@ class Workspaces extends GTF { $aExt = explode(".", $this->aValues["fmw_file_name"]); if ($aExt[count($aExt) - 1] == "fmw") { // Sauve le nouveau fichier fmw. - $fp = fopen($sDirName . "/fme/" . utf8_decode($this->aValues["fmw_file_name"]), "w"); - fwrite($fp, $this->aValues["fmw_file_file"]); - fclose($fp); - // Fichier .fmw original en .bak. - copy($sDirName . "/fme/" . utf8_decode($this->aValues['fmw_file_name']), $sDirName . "/fme/" . utf8_decode($this->aValues['fmw_file_name']) . '.bak'); - // Création du nouveau formulaire. - $oFmwParser = new GtfFmwParser($sDirName . "/fme/" . $this->aValues["fmw_file_name"]); - // Sauve le .fmw sans les visualizers. - $oFmwParser->save($sDirName . "/fme/" . utf8_decode($this->aValues["fmw_file_name"])); - // Création des formulaires json. - $aJson = $oFmwParser->productJson($this->aProperties, $oWorkspace->aFields["name"]); - $fJson = fopen($sDirName . "/form/DSubform.json", "w"); - if (fwrite($fJson, json_encode($aJson)) == FALSE) { - if ($fJson == FALSE) { - writeToErrorLog("Subform.json can't be opened : " . $sDirName . "/form/ressources/Subform.json" . "(Workspaces.class.inc : verify the property workspace_dir)"); - } else { - writeToErrorLog("Subform.json can't be writed : " . $sDirName . "/form/ressources/Subform.json" . "(Workspaces.class.inc : verify the folder's rights)"); - } + putFileContentInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'fme', $this->aValues["fmw_file_name"], $this->aValues["fmw_file_file"]); + // Copie du .fmw original en .bak. + if (!empty($sErrorMessage)) { + writeToErrorLog($sErrorMessage); + $oError = new VitisError(8, $sErrorMessage); + $aXmlRacineAttribute['status'] = 0; + $sMessage = $oError->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); } - fclose($fJson); - if ($oWorkspace->aFields["form_type"] == 'default') { - copy($sDirName . "/form/DSubform.json", $sDirName . "/form/Subform.json"); - copy($sDirName . "/form/DSubform.json", $sDirName . "/form/WSubform.json"); + else { + copyFileInWsDataDir ('gtf', 'workspace', $this->aValues["my_vitis_id"], 'fme', $this->aValues['fmw_file_name'], $this->aValues['fmw_file_name'] . '.bak'); + // Création des fichiers vides de ressources js et css. + putFileContentInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'form/ressources', 'Subform.js', ''); + putFileContentInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'form/ressources', 'Subform.css', ''); + // Lit le contenu du fichier .fmw du projet. + $sFmwFileContent = getFileContentInWsDataDir("gtf", "workspace", $this->aValues["my_vitis_id"], $sField = 'fme', $this->aValues['fmw_file_name']); + // Sauve le .fmw sans les visualizers. + $oFmwParser = new GtfFmwParser($this->aValues['fmw_file_name'], $sFmwFileContent, $this->aProperties); + $oFmwParser->save($oFmwParser->sFmwFileName); + putFileContentInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'fme', $this->aValues['fmw_file_name'], file_get_contents($oFmwParser->sFmwFileName)); + // Création des formulaires json. + $aJson = $oFmwParser->productJson($oWorkspace->aFields["name"]); + if (putFileContentInWsDataDir('gtf', 'workspace', $this->aValues["my_vitis_id"], 'form', 'DSubform.json', json_encode($aJson)) !== false && $oWorkspace->aFields["form_type"] == 'default') { + copyFileInWsDataDir ('gtf', 'workspace', $this->aValues["my_vitis_id"], 'form', 'DSubform.json', 'WSubform.json'); + copyFileInWsDataDir ('gtf', 'workspace', $this->aValues["my_vitis_id"], 'form', 'DSubform.json', 'Subform.json'); + } + // Récupère les anciens paramètres. + $oFmwParser->getBdMetadata($this->oConnection->oBd, $this->aValues["my_vitis_id"]); + // Mise à jour des paramètres du nouveau fichier dans la base. + $oFmwParser->sSaveDate = gmdate('Y-m-d G:i:s'); + $oFmwParser->updateMetadata($this->oConnection->oBd, $this->aValues["my_vitis_id"]); + /*****************************************************************/ } - // Récupère les anciens paramètres. - $oFmwParser->getBdMetadata($this->oConnection->oBd, $this->aValues["my_vitis_id"]); - // Mise à jour des paramètres du nouveau fichier dans la base. - $oFmwParser->sSaveDate = gmdate('Y-m-d G:i:s'); - $oFmwParser->updateMetadata($this->oConnection->oBd, $this->aValues["my_vitis_id"]); } } else { $aXmlRacineAttribute['status'] = 1;