diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php b/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php index a949ce0a5..629e87a52 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php @@ -84,12 +84,13 @@ class FilesManager } } foreach ($aFiles as $aFile) { - $arrayFileUid = $this->getFileManagerUid($sDirectory.$aFile['FILE']); + $arrayFileUid = $this->getFileManagerUid($sDirectory.$aFile['FILE'], $aFile['FILE']); $fcontent = ""; if ($getContent === true) { $fcontent = file_get_contents($sDirectory . $aFile['FILE']); } - $fileUid = $arrayFileUid["PRF_UID"]; + $fileUid = isset($arrayFileUid["PRF_UID"]) ? $arrayFileUid["PRF_UID"] : ''; + $derivationScreen = isset($arrayFileUid["DERIVATION_SCREEN_TPL"]) ? 'true' : 'false'; if ($fileUid != null) { $oProcessFiles = \ProcessFilesPeer::retrieveByPK($fileUid); $editable = $oProcessFiles->getPrfEditable(); @@ -107,7 +108,8 @@ class FilesManager 'prf_editable' => $editable, 'prf_create_date' => $oProcessFiles->getPrfCreateDate(), 'prf_update_date' => $oProcessFiles->getPrfUpdateDate(), - 'prf_content' => $fcontent); + 'prf_content' => $fcontent, + 'prf_derivation_screen' => $derivationScreen); } else { $extention = end(explode(".", $aFile['FILE'])); if ($extention == 'docx' || $extention == 'doc' || $extention == 'html' || $extention == 'php' || $extention == 'jsp' @@ -125,7 +127,8 @@ class FilesManager 'prf_editable' => $editable, 'prf_create_date' => '', 'prf_update_date' => '', - 'prf_content' => $fcontent); + 'prf_content' => $fcontent, + 'prf_derivation_screen' => 'false'); } } return $aTheFiles; @@ -389,13 +392,14 @@ class FilesManager } /** - * Get data of unique ids of a file + * Get data of unique ids of a file and if the template is used in a derivation screen * * @param string $path + * @param string $fileName the name of template * * return array */ - public function getFileManagerUid($path) + public function getFileManagerUid($path, $fileName = '') { try { if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { @@ -406,11 +410,25 @@ class FilesManager $baseName2 = $path[count($path)-2]."/".$path[count($path)-1]; $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\ProcessFilesPeer::PRF_UID); + $criteria->addSelectColumn(\ProcessPeer::PRO_DERIVATION_SCREEN_TPL); + $criteria->addSelectColumn(\TaskPeer::TAS_DERIVATION_SCREEN_TPL); + $criteria->addJoin(\ProcessFilesPeer::PRO_UID, \ProcessPeer::PRO_UID); + $criteria->addJoin(\ProcessPeer::PRO_UID, \TaskPeer::PRO_UID); $criteria->add( $criteria->getNewCriterion( \ProcessFilesPeer::PRF_PATH, '%' . $baseName . '%', \Criteria::LIKE )->addOr( $criteria->getNewCriterion( \ProcessFilesPeer::PRF_PATH, '%' . $baseName2 . '%', \Criteria::LIKE ))); $rsCriteria = \ProcessFilesPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $rsCriteria->next(); - return $rsCriteria->getRow(); + $row = array(); + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + if (!empty($row['PRO_DERIVATION_SCREEN_TPL']) && $row['PRO_DERIVATION_SCREEN_TPL'] == $fileName) { + $row['DERIVATION_SCREEN_TPL'] = true; + return $row; + } elseif (!empty($row['TAS_DERIVATION_SCREEN_TPL']) && $row['TAS_DERIVATION_SCREEN_TPL'] == $fileName) { + $row['DERIVATION_SCREEN_TPL'] = true; + return $row; + } + } + return $row; } catch (\Exception $e) { throw $e; }