diff --git a/workflow/engine/src/BusinessModel/FilesManager.php b/workflow/engine/src/BusinessModel/FilesManager.php index 33acdcbd4..a2da64444 100644 --- a/workflow/engine/src/BusinessModel/FilesManager.php +++ b/workflow/engine/src/BusinessModel/FilesManager.php @@ -150,6 +150,17 @@ class FilesManager if (!$aData['prf_filename']) { throw (new \Exception( 'Invalid value specified for `prf_filename`.')); } + $extention = strstr($aData['prf_filename'], '.'); + if (!$extention) { + $extention = '.html'; + $aData['prf_filename'] = $aData['prf_filename'].$extention; + } + if ($extention == '.docx' || $extention == '.doc' || $extention == '.html' || $extention == '.php' || $extention == '.jsp' || + $extention == '.xlsx' || $extention == '.xls' || $extention == '.js' || $extention == '.css' || $extention == '.txt') { + $sEditable = true; + } else { + $sEditable = false; + } $sMainDirectory = current(explode("/", $aData['prf_path'])); if ($sMainDirectory != 'public' && $sMainDirectory != 'templates') { throw (new \Exception( 'Invalid value specified for `prf_path`. Expecting `templates/` or `public/`')); @@ -163,27 +174,31 @@ class FilesManager case 'templates': $sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectory . $aData['prf_filename']; $sCheckDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectory; - $sEditable = false; break; case 'public': $sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . $sSubDirectory . $aData['prf_filename']; $sCheckDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . $sSubDirectory; + $sEditable = false; break; default: $sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectory . $aData['prf_filename']; break; } - $extention = end(explode(".", $aData['prf_filename'])); - if ($extention == 'docx' || $extention == 'doc' || $extention == 'html' || $extention == 'php' || $extention == 'jsp' || - $extention == 'xlsx' || $extention == 'xls' || $extention == 'js' || $extention == 'css' || $extention == 'txt') { - $sEditable = true; - } else { - $sEditable = false; + if (!file_exists($sCheckDirectory)) { + $sPkProcessFiles = \G::generateUniqueID(); + $oProcessFiles = new \ProcessFiles(); + $sDate = date('Y-m-d H:i:s'); + $oProcessFiles->setPrfUid($sPkProcessFiles); + $oProcessFiles->setProUid($sProcessUID); + $oProcessFiles->setUsrUid($userUID); + $oProcessFiles->setPrfUpdateUsrUid(''); + $oProcessFiles->setPrfPath($sCheckDirectory); + $oProcessFiles->setPrfType('folder'); + $oProcessFiles->setPrfEditable(''); + $oProcessFiles->setPrfCreateDate($sDate); + $oProcessFiles->save(); } \G::verifyPath($sCheckDirectory, true); - if (file_exists(PATH_SEP.$sDirectory)) { - throw (new \Exception( 'The file: '. $sDirectory . ' already exists.')); - } $sPkProcessFiles = \G::generateUniqueID(); $oProcessFiles = new \ProcessFiles(); $sDate = date('Y-m-d H:i:s'); @@ -254,7 +269,6 @@ class FilesManager throw new \Exception(\G::LoadTranslation('ID_PMTABLE_UPLOADING_FILE_PROBLEM')); } $oProcessFile = array('prf_uid' => $prfUid); - var_dump($oProcessFile); return $oProcessFile; } catch (Exception $e) { throw $e; @@ -344,7 +358,7 @@ class FilesManager 'prf_filename' => $sFile, 'usr_uid' => $oProcessFiles->getUsrUid(), 'prf_update_usr_uid' => $oProcessFiles->getPrfUpdateUsrUid(), - 'prf_path' => $sMainDirectory.PATH_SEP.$sSubDirectory, + 'prf_path' => $sMainDirectory.$sSubDirectory, 'prf_type' => $oProcessFiles->getPrfType(), 'prf_editable' => $sEditable, 'prf_create_date' => $oProcessFiles->getPrfCreateDate(), @@ -472,11 +486,16 @@ class FilesManager die(); break; } - if (file_exists($sDirectory . $sDirToDelete)) { - \G::rm_dir($sDirectory . $sDirToDelete); + if (file_exists($sDirectory.$sDirToDelete)) { + \G::rm_dir($sDirectory.$sDirToDelete); } else { throw (new \Exception( 'Invalid value specified for `path`.')); } + $criteria = new \Criteria("workflow"); + $criteria->addSelectColumn(\ProcessFilesPeer::PRF_PATH); + $criteria->add( \ProcessFilesPeer::PRF_PATH, '%' . $sDirectory.$sDirToDelete. PATH_SEP . '%', \Criteria::LIKE ); + $rs = \ProcessFilesPeer::doDelete($criteria); + return $sDirectory.$sDirToDelete; } catch (Exception $e) { throw $e; } diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/FilesManager.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/FilesManager.php index 339e93a28..e916c8a8f 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/FilesManager.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/FilesManager.php @@ -12,19 +12,19 @@ use \Luracast\Restler\RestException; class FilesManager extends Api { /** - * @param string $prjUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} * @param string $path * - * @url GET /:prjUid/file-manager + * @url GET /:prj_uid/file-manager */ - public function doGetProcessFilesManager($prjUid, $path = '') + public function doGetProcessFilesManager($prj_uid, $path = '') { try { $filesManager = new \BusinessModel\FilesManager(); if ($path != '') { - $arrayData = $filesManager->getProcessFilesManagerPath($prjUid, $path); + $arrayData = $filesManager->getProcessFilesManagerPath($prj_uid, $path); } else { - $arrayData = $filesManager->getProcessFilesManager($prjUid); + $arrayData = $filesManager->getProcessFilesManager($prj_uid); } //Response $response = $arrayData; @@ -36,18 +36,18 @@ class FilesManager extends Api } /** - * @param string $prjUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} * @param ProcessFilesManagerStructure $request_data * - * @url POST /:prjUid/file-manager + * @url POST /:prj_uid/file-manager */ - public function doPostProcessFilesManager($prjUid, ProcessFilesManagerStructure $request_data) + public function doPostProcessFilesManager($prj_uid, ProcessFilesManagerStructure $request_data) { try { $userUid = $this->getUserId(); $request_data = (array)($request_data); $filesManager = new \BusinessModel\FilesManager(); - $arrayData = $filesManager->addProcessFilesManager($prjUid, $userUid, $request_data); + $arrayData = $filesManager->addProcessFilesManager($prj_uid, $userUid, $request_data); //Response $response = $arrayData; } catch (\Exception $e) { @@ -58,16 +58,16 @@ class FilesManager extends Api } /** - * @param string $prjUid {@min 32} {@max 32} - * @param string $prfUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} + * @param string $prf_uid {@min 32} {@max 32} * - * @url POST /:prjUid/file-manager/:prfUid/upload + * @url POST /:prj_uid/file-manager/:prf_uid/upload */ - public function doPostProcessFilesManagerUpload($prjUid, $prfUid) + public function doPostProcessFilesManagerUpload($prj_uid, $prf_uid) { try { $filesManager = new \BusinessModel\FilesManager(); - $sData = $filesManager->uploadProcessFilesManager($prjUid, $prfUid); + $sData = $filesManager->uploadProcessFilesManager($prj_uid, $prf_uid); //Response $response = $sData; } catch (\Exception $e) { @@ -77,19 +77,19 @@ class FilesManager extends Api } /** - * @param string $prjUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} * @param ProcessFilesManagerStructure $request_data - * @param string $prfUid {@min 32} {@max 32} + * @param string $prf_uid {@min 32} {@max 32} * - * @url PUT /:prjUid/file-manager/:prfUid + * @url PUT /:prj_uid/file-manager/:prf_uid */ - public function doPutProcessFilesManager($prjUid, ProcessFilesManagerStructure $request_data, $prfUid) + public function doPutProcessFilesManager($prj_uid, ProcessFilesManagerStructure $request_data, $prf_uid) { try { $userUid = $this->getUserId(); $request_data = (array)($request_data); $filesManager = new \BusinessModel\FilesManager(); - $arrayData = $filesManager->updateProcessFilesManager($prjUid, $userUid, $request_data, $prfUid); + $arrayData = $filesManager->updateProcessFilesManager($prj_uid, $userUid, $request_data, $prf_uid); //Response $response = $arrayData; } catch (\Exception $e) { @@ -100,16 +100,16 @@ class FilesManager extends Api } /** - * @param string $prjUid {@min 32} {@max 32} - * @param string $prfUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} + * @param string $prf_uid {@min 32} {@max 32} * - * @url DELETE /:prjUid/file-manager/:prfUid + * @url DELETE /:prj_uid/file-manager/:prf_uid */ - public function doDeleteProcessFilesManager($prjUid, $prfUid) + public function doDeleteProcessFilesManager($prj_uid, $prf_uid) { try { $filesManager = new \BusinessModel\FilesManager(); - $filesManager->deleteProcessFilesManager($prjUid, $prfUid); + $filesManager->deleteProcessFilesManager($prj_uid, $prf_uid); } catch (\Exception $e) { //response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); @@ -117,16 +117,16 @@ class FilesManager extends Api } /** - * @param string $prjUid {@min 32} {@max 32} - * @param string $prfUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} + * @param string $prf_uid {@min 32} {@max 32} * - * @url GET /:prjUid/file-manager/:prfUid/download + * @url GET /:prj_uid/file-manager/:prf_uid/download */ - public function doGetProcessFilesManagerDownload($prjUid, $prfUid) + public function doGetProcessFilesManagerDownload($prj_uid, $prf_uid) { try { $filesManager = new \BusinessModel\FilesManager(); - $filesManager->downloadProcessFilesManager($prjUid, $prfUid); + $filesManager->downloadProcessFilesManager($prj_uid, $prf_uid); } catch (\Exception $e) { //response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); @@ -134,16 +134,16 @@ class FilesManager extends Api } /** - * @param string $prjUid {@min 32} {@max 32} + * @param string $prj_uid {@min 32} {@max 32} * @param string $path * - * @url DELETE /:prjUid/file-manager/folder + * @url DELETE /:prj_uid/file-manager/folder */ - public function doDeleteFolderProcessFilesManager($prjUid, $path) + public function doDeleteFolderProcessFilesManager($prj_uid, $path) { try { $filesManager = new \BusinessModel\FilesManager(); - $filesManager->deleteFolderProcessFilesManager($prjUid, $path); + $filesManager->deleteFolderProcessFilesManager($prj_uid, $path); } catch (\Exception $e) { //response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());