diff --git a/workflow/engine/classes/model/AppFolder.php b/workflow/engine/classes/model/AppFolder.php index 8da08f5ae..7f9700822 100755 --- a/workflow/engine/classes/model/AppFolder.php +++ b/workflow/engine/classes/model/AppFolder.php @@ -85,49 +85,49 @@ class AppFolder extends BaseAppFolder } } - /** - * Update the application document registry - * - * @param array $aData - * @return string - * - */ - public function update ($aData) - { - $oConnection = Propel::getConnection( AppDocumentPeer::DATABASE_NAME ); - try { - $oAppFolder = AppFolderPeer::retrieveByPK( $aData['FOLDER_UID'] ); - if (! is_null( $oAppFolder )) { - $oAppFolder->fromArray( $aData, BasePeer::TYPE_FIELDNAME ); - if ($oAppFolder->validate()) { - $oConnection->begin(); - if (isset( $aData['FOLDER_NAME'] )) { - $oAppFolder->setFolderName( $aData['FOLDER_NAME'] ); - } - if (isset( $aData['FOLDER_UID'] )) { - $oAppFolder->setFolderUid( $aData['FOLDER_UID'] ); - } - if (isset( $aData['FOLDER_UPDATE_DATE'] )) { - $oAppFolder->setFolderUpdateDate( $aData['FOLDER_UPDATE_DATE'] ); - } - $iResult = $oAppFolder->save(); - $oConnection->commit(); - return $iResult; - } else { - $sMessage = ''; - $aValidationFailures = $oAppFolder->getValidationFailures(); - foreach ($aValidationFailures as $oValidationFailure) { - $sMessage .= $oValidationFailure->getMessage() . '
'; - } - throw (new Exception( 'The registry cannot be updated!
' . $sMessage )); - } - } else { - throw (new Exception( 'This row doesn\'t exist!' )); - } - } catch (Exception $oError) { - $oConnection->rollback(); - throw ($oError); - } + /** + * Update the application document registry + * + * @param array $aData + * @return string + * + */ + public function update ($aData) + { + $oConnection = Propel::getConnection( AppDocumentPeer::DATABASE_NAME ); + try { + $oAppFolder = AppFolderPeer::retrieveByPK( $aData['FOLDER_UID'] ); + if (! is_null( $oAppFolder )) { + $oAppFolder->fromArray( $aData, BasePeer::TYPE_FIELDNAME ); + if ($oAppFolder->validate()) { + $oConnection->begin(); + if (isset( $aData['FOLDER_NAME'] )) { + $oAppFolder->setFolderName( $aData['FOLDER_NAME'] ); + } + if (isset( $aData['FOLDER_UID'] )) { + $oAppFolder->setFolderUid( $aData['FOLDER_UID'] ); + } + if (isset( $aData['FOLDER_UPDATE_DATE'] )) { + $oAppFolder->setFolderUpdateDate( $aData['FOLDER_UPDATE_DATE'] ); + } + $iResult = $oAppFolder->save(); + $oConnection->commit(); + return $iResult; + } else { + $sMessage = ''; + $aValidationFailures = $oAppFolder->getValidationFailures(); + foreach ($aValidationFailures as $oValidationFailure) { + $sMessage .= $oValidationFailure->getMessage() . '
'; + } + throw (new Exception( 'The registry cannot be updated!
' . $sMessage )); + } + } else { + throw (new Exception( 'This row doesn\'t exist!' )); + } + } catch (Exception $oError) { + $oConnection->rollback(); + throw ($oError); + } } @@ -266,10 +266,10 @@ class AppFolder extends BaseAppFolder public function getFolderContent ($folderID, $docIdFilter = array(), $keyword = null, $searchType = null, $limit = 0, $start = 0, $user = '', $onlyActive = false) { - require_once ("classes/model/AppDocument.php"); - require_once ("classes/model/InputDocument.php"); - require_once ("classes/model/OutputDocument.php"); - require_once ("classes/model/Users.php"); + //require_once ("classes/model/AppDocument.php"); + //require_once ("classes/model/InputDocument.php"); + //require_once ("classes/model/OutputDocument.php"); + //require_once ("classes/model/Users.php"); G::LoadClass( 'case' ); $oCase = new Cases(); @@ -316,6 +316,7 @@ class AppFolder extends BaseAppFolder } $oCriteria->add( AppDocumentPeer::APP_UID, $data, CRITERIA::IN ); } + if ($onlyActive) { $oCriteria->add( AppDocumentPeer::APP_DOC_STATUS, 'ACTIVE' ); } @@ -352,27 +353,31 @@ class AppFolder extends BaseAppFolder $oAppDocument = new AppDocument(); $lastVersion = $oAppDocument->getLastAppDocVersion( $row['APP_DOC_UID'], $row['APP_UID'] ); //$filesResult [] = $completeInfo; + if ($completeInfo['APP_DOC_STATUS'] != "DELETED") { - if ((in_array( $row['APP_DOC_UID'], $completeInfo['INPUT_DOCUMENTS'] )) || (in_array( $row['APP_DOC_UID'], $completeInfo['OUTPUT_DOCUMENTS'] )) || (in_array( $completeInfo['USR_UID'], array ($_SESSION['USER_LOGGED'],'-1') ))) { + if (in_array($row["APP_DOC_UID"], $completeInfo["INPUT_DOCUMENTS"]) || in_array($row["APP_DOC_UID"], $completeInfo["OUTPUT_DOCUMENTS"]) || in_array($completeInfo["USR_UID"], array($_SESSION["USER_LOGGED"], "-1")) || $user == "") { if (count( $docIdFilter ) > 0) { if (in_array( $row['APP_DOC_UID'], $docIdFilter )) { $response['documents'][] = $completeInfo; } - } elseif ($lastVersion == $row['DOC_VERSION']) { - //Only Last Document version - if ($searchType == "ALL") { - // If search in name of docs is active then filter - if ((stripos( $completeInfo['APP_DOC_FILENAME'], $keyword ) !== false) || (stripos( $completeInfo['APP_DOC_TAGS'], $keyword ) !== false)) { - $response['documents'][] = $completeInfo; + } else { + if ($lastVersion == $row["DOC_VERSION"]) { + //Only Last Document version + if ($searchType == "ALL") { + //If search in name of docs is active then filter + if (stripos($completeInfo["APP_DOC_FILENAME"], $keyword) !== false || stripos($completeInfo["APP_DOC_TAGS"], $keyword) !== false) { + $response["documents"][] = $completeInfo; + } + } else { + //No search filter active + $response["documents"][] = $completeInfo; } - } else { - //No search filter active - $response['documents'][] = $completeInfo; } } } } } + $rs->next(); } @@ -383,10 +388,11 @@ class AppFolder extends BaseAppFolder public function getCompleteDocumentInfo ($appUid, $appDocUid, $docVersion, $docUid, $usrId) { - require_once ("classes/model/AppDocument.php"); - require_once ("classes/model/InputDocument.php"); - require_once ("classes/model/OutputDocument.php"); - require_once ("classes/model/Users.php"); + //require_once ("classes/model/AppDocument.php"); + //require_once ("classes/model/InputDocument.php"); + //require_once ("classes/model/OutputDocument.php"); + //require_once ("classes/model/Users.php"); + //**** start get Doc Info $oApp = new Application(); $oAppDocument = new AppDocument(); @@ -410,8 +416,55 @@ class AppFolder extends BaseAppFolder switch ($row1['APP_DOC_TYPE']) { case "OUTPUT": $oOutputDocument = new OutputDocument(); - $row4 = $oOutputDocument->load( $docUid ); + + $row4 = array(); + $swOutDocExists = 0; + + if ($oOutputDocument->OutputExists($docUid)) { + $row4 = $oOutputDocument->load($docUid); + $swOutDocExists = 1; + } + + if ($swOutDocExists == 0) { + $swpdf = 0; + $swdoc = 0; + + $info = pathinfo($oAppDocument->getAppDocFilename()); + + $version = (!empty($docVersion))? "_" . $docVersion : "_1"; + $outDocPath = PATH_DOCUMENT . $row1["APP_UID"] . PATH_SEP . "outdocs" . PATH_SEP; + + if (file_exists($outDocPath . $appDocUid . $version . ".pdf") || + file_exists($outDocPath . $info["basename"] . $version . ".pdf") || + file_exists($outDocPath . $info["basename"] . ".pdf") + ) { + $swpdf = 1; + } + + if (file_exists($outDocPath . $appDocUid . $version . ".doc") || + file_exists($outDocPath . $info["basename"] . $version . ".doc") || + file_exists($outDocPath . $info["basename"] . ".doc") + ) { + $swdoc = 1; + } + + if ($swpdf == 1 && $swdoc == 1) { + $row4["OUT_DOC_GENERATE"] = "BOTH"; + } else { + if ($swpdf == 1) { + $row4["OUT_DOC_GENERATE"] = "PDF"; + } else { + if ($swdoc == 1) { + $row4["OUT_DOC_GENERATE"] = "DOC"; + } else { + $row4["OUT_DOC_GENERATE"] = "NOFILE"; + } + } + } + } + $versioningEnabled = false; //$row4['OUT_DOC_VERSIONING']; //Only enabled for Input or Attached documents. Need to study the best way for Output docs. + switch ($row4['OUT_DOC_GENERATE']) { case "PDF": $downloadLink = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=pdf" . "&random=" . rand(); @@ -431,8 +484,17 @@ class AppFolder extends BaseAppFolder $downloadLabel = ".pdf"; $downloadLabel1 = ".doc"; break; + case "NOFILE": + $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; + $downloadLink1 = ""; + $downloadLabel = G::LoadTranslation("ID_DOWNLOAD"); + $downloadLabel1 = ""; + break; } + if ($swOutDocExists == 0) { + $row4 = array(); + } break; case "INPUT": $oInputDocument = new InputDocument(); diff --git a/workflow/engine/methods/appFolder/appFolderAjax.php b/workflow/engine/methods/appFolder/appFolderAjax.php index bf8583f72..5d1bb11f9 100755 --- a/workflow/engine/methods/appFolder/appFolderAjax.php +++ b/workflow/engine/methods/appFolder/appFolderAjax.php @@ -1,5 +1,4 @@ 0) { //$tempTree=array(); foreach ($folderList as $key => $obj) { @@ -268,6 +274,7 @@ function expandNode() //$processListTree [] = array(); } } + if (isset($folderContent)) { foreach ($folderContent as $key => $obj) { $tempTree ['text'] = $obj['APP_DOC_FILENAME']; @@ -380,6 +387,19 @@ function expandNode() $processListTree [] = $tempTree; } } else { + if ($obj["APP_DOC_TYPE"] == "OUTPUT" && + $tempTree["type"] == G::LoadTranslation("MIME_DES_FILE") && + preg_match("/^.+&ext=(.+)&.+$/", $tempTree["downloadLink"], $arrayMatch) + ) { + $ext = $arrayMatch[1]; + $mimeInformation = getMime($obj["APP_DOC_FILENAME"] . ".$ext"); + + $tempTree["text"] = $obj["APP_DOC_FILENAME"] . ".$ext"; + $tempTree["name"] = $obj["APP_DOC_FILENAME"] . ".$ext"; + $tempTree["type"] = $mimeInformation["description"]; + $tempTree["icon"] = $mimeInformation["icon"]; + } + $processListTree [] = $tempTree; } $tempTree=array();