PMCORE-2284

This commit is contained in:
Julio Cesar Laura Avendaño
2020-10-29 18:53:46 +00:00
parent 0d32551ca5
commit a769ece072

View File

@@ -42,84 +42,94 @@ class FilesManager
/** /**
* Return the Process Files Manager Path * Return the Process Files Manager Path
* *
* @param string $sProcessUID {@min 32} {@max 32} * @param string $processUid
* @param string $path * @param string $path
* @param boolean $getContent
* *
* return array * @return array
* @throws Exception
* *
* @access public * @access public
*/ */
public function getProcessFilesManagerPath($sProcessUID, $path, $getContent = true) public function getProcessFilesManagerPath($processUid, $path, $getContent = true)
{ {
try { try {
$checkPath = substr($path, -1); $checkPath = substr($path, -1);
if ($checkPath == '/') { if ($checkPath == '/') {
$path = substr($path, 0, -1); $path = substr($path, 0, -1);
} }
$sMainDirectory = current(explode("/", $path)); $mainDirectory = current(explode('/', $path));
if (strstr($path,'/')) { if (strstr($path,'/')) {
$sSubDirectory = substr($path, strpos($path, "/")+1). PATH_SEP ; $subDirectory = substr($path, strpos($path, '/') + 1) . PATH_SEP;
} else { } else {
$sSubDirectory = ''; $subDirectory = '';
} }
switch ($sMainDirectory) { switch ($mainDirectory) {
case 'templates': case 'templates':
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectory; $currentDirectory = PATH_DATA_MAILTEMPLATES . $processUid . PATH_SEP . $subDirectory;
break; break;
case 'public': case 'public':
$sDirectory = PATH_DATA_PUBLIC . $sProcessUID . PATH_SEP . $sSubDirectory; $currentDirectory = PATH_DATA_PUBLIC . $processUid . PATH_SEP . $subDirectory;
break; break;
default: default:
throw new \Exception(\G::LoadTranslation("ID_INVALID_VALUE_FOR", array('path'))); throw new Exception(G::LoadTranslation('ID_INVALID_VALUE_FOR', ['path']));
break; break;
} }
\G::verifyPath($sDirectory, true); G::verifyPath($currentDirectory, true);
$aTheFiles = array(); $filesToList = [];
$aFiles = array(); $files = [];
$oDirectory = dir($sDirectory); $directory = dir($currentDirectory);
while ($sObject = $oDirectory->read()) { while ($object = $directory->read()) {
if (($sObject !== '.') && ($sObject !== '..')) { if (($object !== '.') && ($object !== '..')) {
$sPath = $sDirectory . $sObject; // Skip files related to web entries
if (is_dir($sPath)) { if ($object === 'wsClient.php' || WebEntry::isWebEntry($processUid, $object)) {
$aTheFiles[] = array('prf_name' => $sObject, continue;
'prf_type' => "folder", }
'prf_path' => $sMainDirectory); $path = $currentDirectory . $object;
if (is_dir($path)) {
$filesToList[] = [
'prf_name' => $object,
'prf_type' => 'folder',
'prf_path' => $mainDirectory
];
} else { } else {
$aAux = pathinfo($sPath); $aux = pathinfo($path);
$aAux['extension'] = (isset($aAux['extension'])?$aAux['extension']:''); $aux['extension'] = (isset($aux['extension']) ? $aux['extension'] : '');
$aFiles[] = array('FILE' => $sObject, 'EXT' => $aAux['extension'] ); $files[] = ['FILE' => $object, 'EXT' => $aux['extension']];
} }
} }
} }
foreach ($aFiles as $aFile) { foreach ($files as $file) {
$arrayFileUid = $this->getFileManagerUid($sDirectory.$aFile['FILE'], $aFile['FILE']); $arrayFileUid = $this->getFileManagerUid($currentDirectory.$file['FILE'], $file['FILE']);
$fcontent = ""; $content = '';
if ($getContent === true) { if ($getContent === true) {
$fcontent = file_get_contents($sDirectory . $aFile['FILE']); $content = file_get_contents($currentDirectory . $file['FILE']);
} }
$fileUid = isset($arrayFileUid["PRF_UID"]) ? $arrayFileUid["PRF_UID"] : ''; $fileUid = isset($arrayFileUid['PRF_UID']) ? $arrayFileUid['PRF_UID'] : '';
$derivationScreen = isset($arrayFileUid["DERIVATION_SCREEN_TPL"]) ? true : false; $derivationScreen = isset($arrayFileUid['DERIVATION_SCREEN_TPL']) ? true : false;
if ($fileUid != null) { if ($fileUid != null) {
$oProcessFiles = \ProcessFilesPeer::retrieveByPK($fileUid); $processFiles = ProcessFilesPeer::retrieveByPK($fileUid);
$editable = $oProcessFiles->getPrfEditable(); $editable = $processFiles->getPrfEditable();
if ($editable == '1') { if ($editable == '1') {
$editable = 'true'; $editable = 'true';
} else { } else {
$editable = 'false'; $editable = 'false';
} }
$aTheFiles[] = array( 'prf_uid' => $oProcessFiles->getPrfUid(), $filesToList[] = [
'prf_filename' => $aFile['FILE'], 'prf_uid' => $processFiles->getPrfUid(),
'usr_uid' => $oProcessFiles->getUsrUid(), 'prf_filename' => $file['FILE'],
'prf_update_usr_uid' => $oProcessFiles->getPrfUpdateUsrUid(), 'usr_uid' => $processFiles->getUsrUid(),
'prf_path' => $sMainDirectory. PATH_SEP .$sSubDirectory, 'prf_update_usr_uid' => $processFiles->getPrfUpdateUsrUid(),
'prf_type' => $oProcessFiles->getPrfType(), 'prf_path' => $mainDirectory. PATH_SEP .$subDirectory,
'prf_editable' => $editable, 'prf_type' => $processFiles->getPrfType(),
'prf_create_date' => $oProcessFiles->getPrfCreateDate(), 'prf_editable' => $editable,
'prf_update_date' => $oProcessFiles->getPrfUpdateDate(), 'prf_create_date' => $processFiles->getPrfCreateDate(),
'prf_content' => $fcontent, 'prf_update_date' => $processFiles->getPrfUpdateDate(),
'prf_derivation_screen' => $derivationScreen); 'prf_content' => $content,
'prf_derivation_screen' => $derivationScreen
];
} else { } else {
$explodeExt = explode(".", $aFile['FILE']); $explodeExt = explode('.', $file['FILE']);
$extension = end($explodeExt); $extension = end($explodeExt);
if ($extension == 'docx' || $extension == 'doc' || $extension == 'html' || $extension == 'php' || $extension == 'jsp' if ($extension == 'docx' || $extension == 'doc' || $extension == 'html' || $extension == 'php' || $extension == 'jsp'
|| $extension == 'xlsx' || $extension == 'xls' || $extension == 'js' || $extension == 'css' || $extension == 'txt') { || $extension == 'xlsx' || $extension == 'xls' || $extension == 'js' || $extension == 'css' || $extension == 'txt') {
@@ -127,21 +137,23 @@ class FilesManager
} else { } else {
$editable = 'false'; $editable = 'false';
} }
$aTheFiles[] = array('prf_uid' => '', $filesToList[] = [
'prf_filename' => $aFile['FILE'], 'prf_uid' => '',
'usr_uid' => '', 'prf_filename' => $file['FILE'],
'prf_update_usr_uid' => '', 'usr_uid' => '',
'prf_path' => $sMainDirectory. PATH_SEP .$sSubDirectory, 'prf_update_usr_uid' => '',
'prf_type' => 'file', 'prf_path' => $mainDirectory. PATH_SEP .$subDirectory,
'prf_editable' => $editable, 'prf_type' => 'file',
'prf_create_date' => '', 'prf_editable' => $editable,
'prf_update_date' => '', 'prf_create_date' => '',
'prf_content' => $fcontent, 'prf_update_date' => '',
'prf_derivation_screen' => false); 'prf_content' => $content,
'prf_derivation_screen' => false
];
} }
} }
return $aTheFiles; return $filesToList;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }