From 2906790fe38ec96811a09e270ce3df978bf68638 Mon Sep 17 00:00:00 2001 From: norahmollo Date: Fri, 19 Oct 2012 13:13:05 +0000 Subject: [PATCH] CODE STYLE Formating worflow/engine/classes/model/AppFolder.php CODE STYLE Formating worflow/engine/classes/model/Step.php Change format files in worflow/engine/classes/model/AppFolder.php Change format files in worflow/engine/classes/model/Step.php --- workflow/engine/classes/model/AppFolder.php | 1100 +++++++++--------- workflow/engine/classes/model/Step.php | 1124 +++++++++---------- 2 files changed, 1105 insertions(+), 1119 deletions(-) diff --git a/workflow/engine/classes/model/AppFolder.php b/workflow/engine/classes/model/AppFolder.php index b5e70efa6..11299b741 100755 --- a/workflow/engine/classes/model/AppFolder.php +++ b/workflow/engine/classes/model/AppFolder.php @@ -1,543 +1,557 @@ -|number - */ - function createFolder($folderName, $folderParent = "/", $action="createifnotexists") { - $validActions=array("createifnotexists","create","update"); - if(!in_array($action,$validActions)) $action="createifnotexists"; - //Clean Folder and Parent names (delete spaces...) - $folderName=trim($folderName); - $folderParent=trim($folderParent); - //Try to Load the folder (Foldername+FolderParent) - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->add ( AppFolderPeer::FOLDER_NAME, $folderName ); - $oCriteria->add ( AppFolderPeer::FOLDER_PARENT_UID, $folderParent ); - $oDataset = AppFolderPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - if ($aRow = $oDataset->getRow ()) {//Folder exist, then return the ID - $response['success']=false; - $response['message']=$response['error']="Can't create folder
A folder with same name already exist.
$folderName"; - $response['folderUID']=$aRow ['FOLDER_UID']; - //return ($aRow ['FOLDER_UID']); - return ($response); - } else {//Folder doesn't exist. Create and return the ID - $folderUID = G::GenerateUniqueID (); - $tr = new AppFolder ( ); - $tr->setFolderUid ( $folderUID ); - $tr->setFolderParentUid ( $folderParent ); - $tr->setFolderName ( $folderName ); - $tr->setFolderCreateDate ( 'now' ); - $tr->setFolderUpdateDate ( 'now' ); - if ($tr->validate ()) { - // we save it, since we get no validation errors, or do whatever else you like. - $res = $tr->save (); - $response['success']=true; - $response['message']="Folder successfully created.
$folderName"; - $response['folderUID']=$folderUID; - return ($response); - //return $folderUID; - } else { - // Something went wrong. We can now get the validationFailures and handle them. - $msg = ''; - $validationFailuresArray = $tr->getValidationFailures (); - foreach ( $validationFailuresArray as $objValidationFailure ) { - $msg .= $objValidationFailure->getMessage () . "
"; - } - $response['success']=false; - - $response['message']=$response['error']="Can't create folder \n A \n ".$msg; - return ($response); - } - } - } - /** - * @param string $folderPath - * @param strin(32) $sessionID - * @return string Last Folder ID generated - */ - function createFromPath($folderPath, $sessionID = "") { - if ($sessionID == "") - $sessionID = $_SESSION ['APPLICATION']; - //Get current Application Fields - $oApplication = new Application ( ); - - $appFields = $oApplication->Load ( $sessionID ); - - $folderPathParsed = G::replaceDataField ( $folderPath, $appFields ); - $folderPathParsed = G::replaceDataField ( $folderPath, unserialize ( $appFields ['APP_DATA'] ) ); - - $folderPathParsedArray = explode ( "/", $folderPathParsed ); - - $folderRoot = "/"; //Always starting from Root - foreach ( $folderPathParsedArray as $folderName ) { - if (trim ( $folderName ) != "") { - $response = $this->createFolder ( $folderName, $folderRoot ); - $folderRoot=$response['folderUID']; - } - } - return $folderRoot != "/" ? $folderRoot : ""; - } - - /** - * @param string $fileTags - * @param string(32) $sessionID Application ID - * @return string - */ - function parseTags($fileTags, $sessionID = "") { - - if ($sessionID == "") - $sessionID = $_SESSION ['APPLICATION']; - //Get current Application Fields - $oApplication = new Application ( ); - - $appFields = $oApplication->Load ( $sessionID ); - - $fileTagsParsed = G::replaceDataField ( $fileTags, $appFields ); - $fileTagsParsed = G::replaceDataField ( $fileTags, unserialize ( $appFields ['APP_DATA'] ) ); - - return $fileTagsParsed; - } - /** - * @param string(32) $folderID - * @return multitype: - */ - function getFolderList($folderID, $limit=0, $start=0) { - $Criteria = new Criteria ( 'workflow' ); - $Criteria->clearSelectColumns ()->clearOrderByColumns (); - - $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_UID ); - $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_PARENT_UID ); - $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_NAME ); - $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_CREATE_DATE ); - $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_UPDATE_DATE ); - - $Criteria->add ( appFolderPeer::FOLDER_PARENT_UID, $folderID, CRITERIA::EQUAL ); - - $Criteria->addAscendingOrderByColumn ( AppFolderPeer::FOLDER_NAME ); - - $response['totalFoldersCount'] = AppFolderPeer::doCount($Criteria); - $response['folders'] = array(); - -if($limit != 0){ - - $Criteria->setLimit($limit); - $Criteria->setOffset($start); -} - $rs = appFolderPeer::doSelectRS ( $Criteria ); - $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $rs->next (); - $folderResult = array (); - while ( is_array ( $row = $rs->getRow () ) ) { - $response['folders'] [] = $row; - $rs->next (); - } - return ($response); - } - /** - * @param string(32) $folderUid - * @return array - */ - function load($folderUid) { - $tr = AppFolderPeer::retrieveByPK ( $folderUid ); - if ((is_object ( $tr ) && get_class ( $tr ) == 'AppFolder')) { - $fields ['FOLDER_UID'] = $tr->getFolderUid (); - $fields ['FOLDER_PARENT_UID'] = $tr->getFolderParentUid (); - $fields ['FOLDER_NAME'] = $tr->getFolderName (); - $fields ['FOLDER_CREATE_DATE'] = $tr->getFolderCreateDate (); - $fields ['FOLDER_UPDATE_DATE'] = $tr->getFolderUpdateDate (); - } elseif ($folderUid == "/") { - $fields ['FOLDER_UID'] = "/"; - $fields ['FOLDER_PARENT_UID'] = ""; - $fields ['FOLDER_NAME'] = "/"; - $fields ['FOLDER_CREATE_DATE'] = ""; - $fields ['FOLDER_UPDATE_DATE'] = ""; - } else { -// $fields = array (); - $fields ['FOLDER_UID'] = "/"; - $fields ['FOLDER_PARENT_UID'] = ""; - $fields ['FOLDER_NAME'] = "root"; - $fields ['FOLDER_CREATE_DATE'] = ""; - $fields ['FOLDER_UPDATE_DATE'] = ""; - } - return $fields; - } - function getFolderStructure($folderId) { - - $folderObj = $this->load ( $folderId ); - $folderArray [$folderObj ['FOLDER_UID']] = array ("NAME" => $folderObj ['FOLDER_NAME'], "PARENT" => $folderObj ['FOLDER_PARENT_UID'] ); - $folderArray ['PATH_ARRAY'] [] = $folderObj ['FOLDER_NAME']; - - while ( $folderObj ['FOLDER_PARENT_UID'] != "" ) { - $folderObj = $this->load ( $folderObj ['FOLDER_PARENT_UID'] ); - $folderArray [$folderObj ['FOLDER_UID']] = array ("NAME" => $folderObj ['FOLDER_NAME'], "PARENT" => $folderObj ['FOLDER_PARENT_UID'] ); - $folderArray ['PATH_ARRAY'] [] = $folderObj ['FOLDER_NAME']; - } - - $folderArray ['PATH'] = str_replace ( "//", "/", implode ( "/", array_reverse ( $folderArray ['PATH_ARRAY'] ) ) ); - return $folderArray; - } - - 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"); - - G::LoadClass ( 'case' ); - $oCase = new Cases ( ); - G::LoadClass ( 'process' ); - $oProcess = new Process ( ); - - $oAppDocument = new AppDocument ( ); - $oCriteria = new Criteria ( ); - - if ((is_array ( $docIdFilter )) && (count ( $docIdFilter ) > 0)) { //Search by App Doc UID no matter what Folder it is - $oCriteria->add ( AppDocumentPeer::APP_DOC_UID, $docIdFilter, CRITERIA::IN ); - } elseif ($folderID != NULL) { - if($folderID=="/"){ - $oCriteria->add ( AppDocumentPeer::FOLDER_UID, array('root','',NULL), CRITERIA::IN ); - }else{ - $oCriteria->add ( AppDocumentPeer::FOLDER_UID, $folderID ); - } - } elseif ($searchType == "TAG") { - $oCriteria->add ( AppDocumentPeer::APP_DOC_TAGS, "%" . $keyword . "%", CRITERIA::LIKE ); - } - - if ($user != '') { - require_once ("classes/model/AppDelegation.php"); - $criteria = new Criteria (); - $criteria->addSelectColumn (AppDelegationPeer::APP_UID); - $criteria->setDistinct(); - - $conditions = array (); - $conditions [] = array (AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID); - $conditions [] = array (AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX); - - $criteria->addJoinMC($conditions, Criteria::LEFT_JOIN); - - $criteria->add(AppDelegationPeer::USR_UID, $user); - - $rs2 = AppDocumentPeer::doSelectRS($criteria); - - $rs2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $data = array(); - while ($rs2->next()) { - $row = $rs2->getRow(); - $data[] = $row['APP_UID']; - } - $oCriteria->add ( AppDocumentPeer::APP_UID, $data, CRITERIA::IN ); - } - if ($onlyActive){ - $oCriteria->add(AppDocumentPeer::APP_DOC_STATUS, 'ACTIVE'); - } - - $oCase->verifyTable (); - - - $oCriteria->addAscendingOrderByColumn ( AppDocumentPeer::APP_DOC_INDEX ); - $oCriteria->addDescendingOrderByColumn ( AppDocumentPeer::DOC_VERSION ); - - - $response['totalDocumentsCount'] = AppDocumentPeer::doCount($oCriteria); - $response['documents'] = array(); - - - - $oCriteria->setLimit($limit); - $oCriteria->setOffset($start); - - - $rs = AppDocumentPeer::doSelectRS ( $oCriteria ); - $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $rs->next (); - $filesResult = array (); - while ( is_array ( $row = $rs->getRow () ) ) { - //**** start get Doc Info - $oApp = new Application ( ); - if (($oApp->exists ( $row ['APP_UID'] )) || ($row ['APP_UID'] == "00000000000000000000000000000000")) { - - //$completeInfo = array("APP_DOC_FILENAME" => $row ["APP_DOC_UID"],"APP_DOC_UID"=>$row ['APP_UID']); - $completeInfo = $this->getCompleteDocumentInfo ( $row ['APP_UID'], $row ['APP_DOC_UID'], $row ['DOC_VERSION'], $row ['DOC_UID'], $row ['USR_UID'] ); - - $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 (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 {//No search filter active - $response['documents'][] = $completeInfo; - } - } - - } - } - } - $rs->next (); - } - return ($response); - } - 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"); - //**** start get Doc Info - $oApp = new Application ( ); - $oAppDocument = new AppDocument ( ); - G::LoadClass ( 'case' ); - $oCase = new Cases ( ); - G::LoadClass ( 'process' ); - $oProcess = new Process ( ); - if (($oApp->exists ( $appUid )) || ($appUid == "00000000000000000000000000000000")) { - if ($appUid == "00000000000000000000000000000000") { //External Files - $row1 = $oAppDocument->load ( $appDocUid, $docVersion ); - $row2 = array ('PRO_TITLE' => G::LoadTranslation ( 'ID_NOT_PROCESS_RELATED' ) ); - $row3 = array ('APP_TITLE' => G::LoadTranslation ( 'ID_NOT_PROCESS_RELATED' ) ); - } else { - $row1 = $oAppDocument->load ( $appDocUid, $docVersion ); - $row2 = $oCase->loadCase ( $appUid ); - $row3 = $oProcess->Load ( $row2 ['PRO_UID'] ); - } - $lastVersion = $oAppDocument->getLastAppDocVersion ( $appDocUid, $appUid ); - - switch ($row1 ['APP_DOC_TYPE']) { - case "OUTPUT" : - $oOutputDocument = new OutputDocument ( ); - $row4 = $oOutputDocument->load ( $docUid ); - $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 (); - $downloadLink1 = ""; - $downloadLabel = ".pdf"; - $downloadLabel1 = ""; - break; - case "DOC" : - $downloadLink = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=doc" . "&random=" . rand (); - $downloadLink1 = ""; - $downloadLabel = ".doc"; - $downloadLabel1 = ""; - break; - case "BOTH" : - $downloadLink = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=pdf" . "&random=" . rand (); - $downloadLink1 = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=doc" . "&random=" . rand (); - $downloadLabel = ".pdf"; - $downloadLabel1 = ".doc"; - break; - } - - break; - case "INPUT" : - $oInputDocument = new InputDocument(); - if ($docUid != - 1) { - if ($oInputDocument->InputExists ( $docUid )) { - $row4 = $oInputDocument->load ( $docUid ); - $versioningEnabled = $row4 ['INP_DOC_VERSIONING']; - } else { - $row4 = array (); - $versioningEnabled = false; - } - $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; - $downloadLink1 = ""; - $downloadLabel = G::LoadTranslation ( 'ID_DOWNLOAD' ); - $downloadLabel1 = ""; - } else { - $row4 = array (); - $versioningEnabled = false; - $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; - $downloadLink1 = ""; - $downloadLabel = G::LoadTranslation ( 'ID_DOWNLOAD' ); - $downloadLabel1 = ""; - } - - /////// - if (!empty($row1["APP_DOC_PLUGIN"])) { - $pluginRegistry = &PMPluginRegistry::getSingleton(); - - $pluginName = $row1["APP_DOC_PLUGIN"]; - $fieldValue = ""; - - if (file_exists(PATH_PLUGINS . $pluginName . ".php")) { - $pluginDetail = $pluginRegistry->getPluginDetails($pluginName . ".php"); - - if ($pluginDetail) { - if ($pluginDetail->enabled) { - require_once (PATH_PLUGINS . $pluginName . ".php"); - - $pluginNameClass = $pluginName . "Plugin"; - - $objPluginClass = new $pluginNameClass($pluginName); - - if (isset($objPluginClass->sMethodGetUrlDownload) && !empty($objPluginClass->sMethodGetUrlDownload)) { - if (file_exists(PATH_PLUGINS . $pluginName . PATH_SEP . "class." . $pluginName . ".php")) { - require_once (PATH_PLUGINS . $pluginName . PATH_SEP . "class." . $pluginName . ".php"); - - $pluginNameClass = $pluginName . "Class"; - - $objClass = new $pluginNameClass(); - - if (method_exists($objClass, $objPluginClass->sMethodGetUrlDownload)) { - eval("\$url = \$objClass->" . $objPluginClass->sMethodGetUrlDownload . "(\"" . $row1["APP_DOC_UID"] . "\");"); - $downloadLink = $url; - - $fieldValue = $row1["APP_DOC_PLUGIN"]; - } - } - } - } - } - } - - $row1["APP_DOC_PLUGIN"] = $fieldValue; - } - break; - - default : - $row4 = array (); - $versioningEnabled = false; - $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; - $downloadLink1 = ""; - $downloadLabel = G::LoadTranslation ( 'ID_DOWNLOAD' ); - $downloadLabel1 = ""; - break; - - } - $oUser = new Users ( ); - if (($usrId != "-1")&&($oUser->userExists($usrId))) { - $row5 = $oUser->load ( $usrId ); - } else { - $row5 ['USR_USERNAME'] = "***"; - } - - //Labels/Links - $row6 = array (); - $row6 ['DELETE_LABEL'] = G::LoadTranslation('ID_DELETE'); - $row6 ['DOWNLOAD_LABEL'] = $downloadLabel; - $row6 ['DOWNLOAD_LINK'] = $downloadLink; - $row6 ['DOWNLOAD_LABEL1'] = $downloadLabel1; - $row6 ['DOWNLOAD_LINK1'] = $downloadLink1; - //if(($docVersion>1)&&($row1['APP_DOC_TYPE']!="OUTPUT")){ - if (($docVersion > 1)) { - $row6 ['VERSIONHISTORY_LABEL'] = G::LoadTranslation ( 'ID_VERSION_HISTORY' ); - } - if ($versioningEnabled) { - $row6 ['NEWVERSION_LABEL'] = G::LoadTranslation ( 'ID_NEW_VERSION' ); - } - $row6 ['APP_DOC_UID_VERSION'] = $appDocUid . "_" . $docVersion; - - if ($appUid == "00000000000000000000000000000000") { //External Files - $row1 ['APP_DOC_TYPE'] = G::LoadTranslation ( 'ID_EXTERNAL_FILE' ); - } - //**** End get docinfo - - - $infoMerged = array_merge ( $row1, $row2, $row3, $row4, $row5, $row6 ); - //krumo($infoMerged); - //**************************************************************************************************** - $sUserUID = $_SESSION ['USER_LOGGED']; - $aObjectPermissions = array (); - if (isset ( $infoMerged ['PRO_UID'] )) { - $aObjectPermissions = $oCase->getAllObjects ( $infoMerged ['PRO_UID'], $infoMerged ['APP_UID'], '', $sUserUID ); - } - - if (! is_array ( $aObjectPermissions )) { - $aObjectPermissions = array ('DYNAFORMS' => array (- 1 ), 'INPUT_DOCUMENTS' => array (- 1 ), 'OUTPUT_DOCUMENTS' => array (- 1 ) ); - } - if (! isset ( $aObjectPermissions ['DYNAFORMS'] )) { - $aObjectPermissions ['DYNAFORMS'] = array (- 1 ); - } else { - if (! is_array ( $aObjectPermissions ['DYNAFORMS'] )) { - $aObjectPermissions ['DYNAFORMS'] = array (- 1 ); - } - } - if (! isset ( $aObjectPermissions ['INPUT_DOCUMENTS'] )) { - $aObjectPermissions ['INPUT_DOCUMENTS'] = array (- 1 ); - } else { - if (! is_array ( $aObjectPermissions ['INPUT_DOCUMENTS'] )) { - $aObjectPermissions ['INPUT_DOCUMENTS'] = array (- 1 ); - } - } - if (! isset ( $aObjectPermissions ['OUTPUT_DOCUMENTS'] )) { - $aObjectPermissions ['OUTPUT_DOCUMENTS'] = array (- 1 ); - } else { - if (! is_array ( $aObjectPermissions ['OUTPUT_DOCUMENTS'] )) { - $aObjectPermissions ['OUTPUT_DOCUMENTS'] = array (- 1 ); - } - } - //**************************************************************************************************** - - - return array_merge ( $infoMerged, $aObjectPermissions ); - } - } - function getFolderChilds($folderID, $folderArray) { - $folderList = $this->getFolderList ( $folderID ); - $foldersList = array (); - foreach ( $folderList as $key => $folderObj ) { - $foldersList [$folderObj ['FOLDER_UID']] = $folderObj ['FOLDER_NAME']; - $foldersList = array_merge ( $foldersList, $this->getFolderChilds ( $folderObj ['FOLDER_UID'], $folderArray ) ); - } - return (array_merge ( $folderArray, $foldersList )); - } - - function getFolderTags($rootFolder) { - $folderArray [$rootFolder] = $rootFolder; - $foldersToProcess = $this->getFolderChilds ( $rootFolder, $folderArray ); - $tagsInfo = array (); - - foreach ( $foldersToProcess as $folderkey => $foldername ) { - $filesList = $this->getFolderContent ( $folderkey ); - - foreach ( $filesList as $key => $fileInfo ) { - $fileTags = explode ( ",", $fileInfo ['APP_DOC_TAGS'] ); - foreach ( $fileTags as $key1 => $tag ) { - if (! (isset ( $tagsInfo [$tag] ))) - $tagsInfo [$tag] = 0; - $tagsInfo [$tag] ++; - } - } - } - return $tagsInfo; - - } - function remove ($FolderUid, $rootfolder ) { - $oCriteria = new Criteria('workflow'); - $oCriteria->add ( AppFolderPeer::FOLDER_UID, $FolderUid ); - AppFolderPeer::doDelete($oCriteria); - } -} // AppFolder +|number + */ + function createFolder ($folderName, $folderParent = "/", $action = "createifnotexists") + { + $validActions = array ("createifnotexists","create","update" + ); + if (! in_array( $action, $validActions )) { + $action = "createifnotexists"; + } + + //Clean Folder and Parent names (delete spaces...) + $folderName = trim( $folderName ); + $folderParent = trim( $folderParent ); + //Try to Load the folder (Foldername+FolderParent) + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( AppFolderPeer::FOLDER_NAME, $folderName ); + $oCriteria->add( AppFolderPeer::FOLDER_PARENT_UID, $folderParent ); + $oDataset = AppFolderPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + if ($aRow = $oDataset->getRow()) { + //Folder exist, then return the ID + $response['success'] = false; + $response['message'] = $response['error'] = "Can't create folder
A folder with same name already exist.
$folderName"; + $response['folderUID'] = $aRow['FOLDER_UID']; + //return ($aRow ['FOLDER_UID']); + return ($response); + } else { + //Folder doesn't exist. Create and return the ID + $folderUID = G::GenerateUniqueID(); + $tr = new AppFolder(); + $tr->setFolderUid( $folderUID ); + $tr->setFolderParentUid( $folderParent ); + $tr->setFolderName( $folderName ); + $tr->setFolderCreateDate( 'now' ); + $tr->setFolderUpdateDate( 'now' ); + if ($tr->validate()) { + // we save it, since we get no validation errors, or do whatever else you like. + $res = $tr->save(); + $response['success'] = true; + $response['message'] = "Folder successfully created.
$folderName"; + $response['folderUID'] = $folderUID; + return ($response); + //return $folderUID; + } else { + // Something went wrong. We can now get the validationFailures and handle them. + $msg = ''; + $validationFailuresArray = $tr->getValidationFailures(); + foreach ($validationFailuresArray as $objValidationFailure) { + $msg .= $objValidationFailure->getMessage() . "
"; + } + $response['success'] = false; + $response['message'] = $response['error'] = "Can't create folder \n A \n " . $msg; + return ($response); + } + } + } + + /** + * + * @param string $folderPath + * @param strin(32) $sessionID + * @return string Last Folder ID generated + */ + function createFromPath ($folderPath, $sessionID = "") + { + if ($sessionID == "") { + $sessionID = $_SESSION['APPLICATION']; + //Get current Application Fields + } + + $oApplication = new Application(); + $appFields = $oApplication->Load( $sessionID ); + $folderPathParsed = G::replaceDataField( $folderPath, $appFields ); + $folderPathParsed = G::replaceDataField( $folderPath, unserialize( $appFields['APP_DATA'] ) ); + $folderPathParsedArray = explode( "/", $folderPathParsed ); + $folderRoot = "/"; //Always starting from Root + foreach ($folderPathParsedArray as $folderName) { + if (trim( $folderName ) != "") { + $response = $this->createFolder( $folderName, $folderRoot ); + $folderRoot = $response['folderUID']; + } + } + return $folderRoot != "/" ? $folderRoot : ""; + } + + /** + * + * @param string $fileTags + * @param string(32) $sessionID Application ID + * @return string + */ + function parseTags ($fileTags, $sessionID = "") + { + + if ($sessionID == "") { + $sessionID = $_SESSION['APPLICATION']; + //Get current Application Fields + } + + $oApplication = new Application(); + $appFields = $oApplication->Load( $sessionID ); + $fileTagsParsed = G::replaceDataField( $fileTags, $appFields ); + $fileTagsParsed = G::replaceDataField( $fileTags, unserialize( $appFields['APP_DATA'] ) ); + return $fileTagsParsed; + } + + /** + * + * @param string(32) $folderID + * @return multitype: + */ + function getFolderList ($folderID, $limit = 0, $start = 0) + { + $Criteria = new Criteria( 'workflow' ); + $Criteria->clearSelectColumns()->clearOrderByColumns(); + $Criteria->addSelectColumn( AppFolderPeer::FOLDER_UID ); + $Criteria->addSelectColumn( AppFolderPeer::FOLDER_PARENT_UID ); + $Criteria->addSelectColumn( AppFolderPeer::FOLDER_NAME ); + $Criteria->addSelectColumn( AppFolderPeer::FOLDER_CREATE_DATE ); + $Criteria->addSelectColumn( AppFolderPeer::FOLDER_UPDATE_DATE ); + $Criteria->add( appFolderPeer::FOLDER_PARENT_UID, $folderID, CRITERIA::EQUAL ); + $Criteria->addAscendingOrderByColumn( AppFolderPeer::FOLDER_NAME ); + + $response['totalFoldersCount'] = AppFolderPeer::doCount( $Criteria ); + $response['folders'] = array (); + + if ($limit != 0) { + $Criteria->setLimit( $limit ); + $Criteria->setOffset( $start ); + } + + $rs = appFolderPeer::doSelectRS( $Criteria ); + $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $rs->next(); + $folderResult = array (); + while (is_array( $row = $rs->getRow() )) { + $response['folders'][] = $row; + $rs->next(); + } + return ($response); + } + + /** + * + * @param string(32) $folderUid + * @return array + */ + function load ($folderUid) + { + $tr = AppFolderPeer::retrieveByPK( $folderUid ); + if ((is_object( $tr ) && get_class( $tr ) == 'AppFolder')) { + $fields['FOLDER_UID'] = $tr->getFolderUid(); + $fields['FOLDER_PARENT_UID'] = $tr->getFolderParentUid(); + $fields['FOLDER_NAME'] = $tr->getFolderName(); + $fields['FOLDER_CREATE_DATE'] = $tr->getFolderCreateDate(); + $fields['FOLDER_UPDATE_DATE'] = $tr->getFolderUpdateDate(); + } elseif ($folderUid == "/") { + $fields['FOLDER_UID'] = "/"; + $fields['FOLDER_PARENT_UID'] = ""; + $fields['FOLDER_NAME'] = "/"; + $fields['FOLDER_CREATE_DATE'] = ""; + $fields['FOLDER_UPDATE_DATE'] = ""; + } else { + // $fields = array (); + $fields['FOLDER_UID'] = "/"; + $fields['FOLDER_PARENT_UID'] = ""; + $fields['FOLDER_NAME'] = "root"; + $fields['FOLDER_CREATE_DATE'] = ""; + $fields['FOLDER_UPDATE_DATE'] = ""; + } + return $fields; + } + + function getFolderStructure ($folderId) + { + $folderObj = $this->load( $folderId ); + $folderArray[$folderObj['FOLDER_UID']] = array ("NAME" => $folderObj['FOLDER_NAME'],"PARENT" => $folderObj['FOLDER_PARENT_UID'] + ); + $folderArray['PATH_ARRAY'][] = $folderObj['FOLDER_NAME']; + + while ($folderObj['FOLDER_PARENT_UID'] != "") { + $folderObj = $this->load( $folderObj['FOLDER_PARENT_UID'] ); + $folderArray[$folderObj['FOLDER_UID']] = array ("NAME" => $folderObj['FOLDER_NAME'],"PARENT" => $folderObj['FOLDER_PARENT_UID']); + $folderArray['PATH_ARRAY'][] = $folderObj['FOLDER_NAME']; + } + + $folderArray['PATH'] = str_replace( "//", "/", implode( "/", array_reverse( $folderArray['PATH_ARRAY'] ) ) ); + return $folderArray; + } + + 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"); + + G::LoadClass( 'case' ); + $oCase = new Cases(); + G::LoadClass( 'process' ); + $oProcess = new Process(); + + $oAppDocument = new AppDocument(); + $oCriteria = new Criteria(); + + if ((is_array( $docIdFilter )) && (count( $docIdFilter ) > 0)) { + //Search by App Doc UID no matter what Folder it is + $oCriteria->add( AppDocumentPeer::APP_DOC_UID, $docIdFilter, CRITERIA::IN ); + } elseif ($folderID != null) { + if ($folderID == "/") { + $oCriteria->add( AppDocumentPeer::FOLDER_UID, array ('root','',null), CRITERIA::IN ); + } else { + $oCriteria->add( AppDocumentPeer::FOLDER_UID, $folderID ); + } + } elseif ($searchType == "TAG") { + $oCriteria->add( AppDocumentPeer::APP_DOC_TAGS, "%" . $keyword . "%", CRITERIA::LIKE ); + } + + if ($user != '') { + require_once ("classes/model/AppDelegation.php"); + $criteria = new Criteria(); + $criteria->addSelectColumn( AppDelegationPeer::APP_UID ); + $criteria->setDistinct(); + + $conditions = array (); + $conditions[] = array (AppDelegationPeer::APP_UID,AppDocumentPeer::APP_UID); + $conditions[] = array (AppDelegationPeer::DEL_INDEX,AppDocumentPeer::DEL_INDEX); + + $criteria->addJoinMC( $conditions, Criteria::LEFT_JOIN ); + + $criteria->add( AppDelegationPeer::USR_UID, $user ); + + $rs2 = AppDocumentPeer::doSelectRS( $criteria ); + + $rs2->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $data = array (); + while ($rs2->next()) { + $row = $rs2->getRow(); + $data[] = $row['APP_UID']; + } + $oCriteria->add( AppDocumentPeer::APP_UID, $data, CRITERIA::IN ); + } + if ($onlyActive) { + $oCriteria->add( AppDocumentPeer::APP_DOC_STATUS, 'ACTIVE' ); + } + + $oCase->verifyTable(); + + $oCriteria->addAscendingOrderByColumn( AppDocumentPeer::APP_DOC_INDEX ); + $oCriteria->addDescendingOrderByColumn( AppDocumentPeer::DOC_VERSION ); + + $response['totalDocumentsCount'] = AppDocumentPeer::doCount( $oCriteria ); + $response['documents'] = array (); + + $oCriteria->setLimit( $limit ); + $oCriteria->setOffset( $start ); + + $rs = AppDocumentPeer::doSelectRS( $oCriteria ); + $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $rs->next(); + $filesResult = array (); + while (is_array( $row = $rs->getRow() )) { + //**** start get Doc Info + $oApp = new Application(); + if (($oApp->exists( $row['APP_UID'] )) || ($row['APP_UID'] == "00000000000000000000000000000000")) { + //$completeInfo = array("APP_DOC_FILENAME" => $row ["APP_DOC_UID"],"APP_DOC_UID"=>$row ['APP_UID']); + $completeInfo = $this->getCompleteDocumentInfo( $row['APP_UID'], $row['APP_DOC_UID'], $row['DOC_VERSION'], $row['DOC_UID'], $row['USR_UID'] ); + $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 (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 { + //No search filter active + $response['documents'][] = $completeInfo; + } + } + } + } + } + $rs->next(); + } + return ($response); + } + + 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"); + //**** start get Doc Info + $oApp = new Application(); + $oAppDocument = new AppDocument(); + G::LoadClass( 'case' ); + $oCase = new Cases(); + G::LoadClass( 'process' ); + $oProcess = new Process(); + if (($oApp->exists( $appUid )) || ($appUid == "00000000000000000000000000000000")) { + if ($appUid == "00000000000000000000000000000000") { //External Files + $row1 = $oAppDocument->load( $appDocUid, $docVersion ); + $row2 = array ('PRO_TITLE' => G::LoadTranslation( 'ID_NOT_PROCESS_RELATED' )); + $row3 = array ('APP_TITLE' => G::LoadTranslation( 'ID_NOT_PROCESS_RELATED' )); + } else { + $row1 = $oAppDocument->load( $appDocUid, $docVersion ); + $row2 = $oCase->loadCase( $appUid ); + $row3 = $oProcess->Load( $row2['PRO_UID'] ); + } + $lastVersion = $oAppDocument->getLastAppDocVersion( $appDocUid, $appUid ); + + switch ($row1['APP_DOC_TYPE']) { + case "OUTPUT": + $oOutputDocument = new OutputDocument(); + $row4 = $oOutputDocument->load( $docUid ); + $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(); + $downloadLink1 = ""; + $downloadLabel = ".pdf"; + $downloadLabel1 = ""; + break; + case "DOC": + $downloadLink = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=doc" . "&random=" . rand(); + $downloadLink1 = ""; + $downloadLabel = ".doc"; + $downloadLabel1 = ""; + break; + case "BOTH": + $downloadLink = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=pdf" . "&random=" . rand(); + $downloadLink1 = "../cases/cases_ShowOutputDocument?a=" . $appDocUid . "&v=" . $docVersion . "&ext=doc" . "&random=" . rand(); + $downloadLabel = ".pdf"; + $downloadLabel1 = ".doc"; + break; + } + + break; + case "INPUT": + $oInputDocument = new InputDocument(); + if ($docUid != - 1) { + if ($oInputDocument->InputExists( $docUid )) { + $row4 = $oInputDocument->load( $docUid ); + $versioningEnabled = $row4['INP_DOC_VERSIONING']; + } else { + $row4 = array (); + $versioningEnabled = false; + } + $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; + $downloadLink1 = ""; + $downloadLabel = G::LoadTranslation( 'ID_DOWNLOAD' ); + $downloadLabel1 = ""; + } else { + $row4 = array (); + $versioningEnabled = false; + $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; + $downloadLink1 = ""; + $downloadLabel = G::LoadTranslation( 'ID_DOWNLOAD' ); + $downloadLabel1 = ""; + } + + /////// + if (! empty( $row1["APP_DOC_PLUGIN"] )) { + $pluginRegistry = &PMPluginRegistry::getSingleton(); + $pluginName = $row1["APP_DOC_PLUGIN"]; + $fieldValue = ""; + + if (file_exists( PATH_PLUGINS . $pluginName . ".php" )) { + $pluginDetail = $pluginRegistry->getPluginDetails( $pluginName . ".php" ); + + if ($pluginDetail) { + if ($pluginDetail->enabled) { + require_once (PATH_PLUGINS . $pluginName . ".php"); + $pluginNameClass = $pluginName . "Plugin"; + $objPluginClass = new $pluginNameClass( $pluginName ); + + if (isset( $objPluginClass->sMethodGetUrlDownload ) && ! empty( $objPluginClass->sMethodGetUrlDownload )) { + if (file_exists( PATH_PLUGINS . $pluginName . PATH_SEP . "class." . $pluginName . ".php" )) { + require_once (PATH_PLUGINS . $pluginName . PATH_SEP . "class." . $pluginName . ".php"); + $pluginNameClass = $pluginName . "Class"; + $objClass = new $pluginNameClass(); + + if (method_exists( $objClass, $objPluginClass->sMethodGetUrlDownload )) { + eval( "\$url = \$objClass->" . $objPluginClass->sMethodGetUrlDownload . "(\"" . $row1["APP_DOC_UID"] . "\");" ); + $downloadLink = $url; + $fieldValue = $row1["APP_DOC_PLUGIN"]; + } + } + } + } + } + } + $row1["APP_DOC_PLUGIN"] = $fieldValue; + } + break; + + default: + $row4 = array (); + $versioningEnabled = false; + $downloadLink = "../cases/cases_ShowDocument?a=" . $appDocUid . "&v=" . $docVersion; + $downloadLink1 = ""; + $downloadLabel = G::LoadTranslation( 'ID_DOWNLOAD' ); + $downloadLabel1 = ""; + break; + } + $oUser = new Users(); + if (($usrId != "-1") && ($oUser->userExists( $usrId ))) { + $row5 = $oUser->load( $usrId ); + } else { + $row5['USR_USERNAME'] = "***"; + } + + //Labels/Links + $row6 = array (); + $row6['DELETE_LABEL'] = G::LoadTranslation( 'ID_DELETE' ); + $row6['DOWNLOAD_LABEL'] = $downloadLabel; + $row6['DOWNLOAD_LINK'] = $downloadLink; + $row6['DOWNLOAD_LABEL1'] = $downloadLabel1; + $row6['DOWNLOAD_LINK1'] = $downloadLink1; + //if(($docVersion>1)&&($row1['APP_DOC_TYPE']!="OUTPUT")){ + if (($docVersion > 1)) { + $row6['VERSIONHISTORY_LABEL'] = G::LoadTranslation( 'ID_VERSION_HISTORY' ); + } + if ($versioningEnabled) { + $row6['NEWVERSION_LABEL'] = G::LoadTranslation( 'ID_NEW_VERSION' ); + } + $row6['APP_DOC_UID_VERSION'] = $appDocUid . "_" . $docVersion; + + if ($appUid == "00000000000000000000000000000000") { + //External Files + $row1['APP_DOC_TYPE'] = G::LoadTranslation( 'ID_EXTERNAL_FILE' ); + } + //**** End get docinfo + $infoMerged = array_merge( $row1, $row2, $row3, $row4, $row5, $row6 ); + //krumo($infoMerged); + //**************************************************************************************************** + $sUserUID = $_SESSION['USER_LOGGED']; + $aObjectPermissions = array (); + if (isset( $infoMerged['PRO_UID'] )) { + $aObjectPermissions = $oCase->getAllObjects( $infoMerged['PRO_UID'], $infoMerged['APP_UID'], '', $sUserUID ); + } + + if (! is_array( $aObjectPermissions )) { + $aObjectPermissions = array ('DYNAFORMS' => array (- 1), + 'INPUT_DOCUMENTS' => array (- 1), + 'OUTPUT_DOCUMENTS' => array (- 1) + ); + } + if (! isset( $aObjectPermissions['DYNAFORMS'] )) { + $aObjectPermissions['DYNAFORMS'] = array (- 1); + } else { + if (! is_array( $aObjectPermissions['DYNAFORMS'] )) { + $aObjectPermissions['DYNAFORMS'] = array (- 1); + } + } + if (! isset( $aObjectPermissions['INPUT_DOCUMENTS'] )) { + $aObjectPermissions['INPUT_DOCUMENTS'] = array (- 1); + } else { + if (! is_array( $aObjectPermissions['INPUT_DOCUMENTS'] )) { + $aObjectPermissions['INPUT_DOCUMENTS'] = array (- 1); + } + } + if (! isset( $aObjectPermissions['OUTPUT_DOCUMENTS'] )) { + $aObjectPermissions['OUTPUT_DOCUMENTS'] = array (- 1); + } else { + if (! is_array( $aObjectPermissions['OUTPUT_DOCUMENTS'] )) { + $aObjectPermissions['OUTPUT_DOCUMENTS'] = array (- 1); + } + } + //**************************************************************************************************** + return array_merge( $infoMerged, $aObjectPermissions ); + } + } + + function getFolderChilds ($folderID, $folderArray) + { + $folderList = $this->getFolderList( $folderID ); + $foldersList = array (); + foreach ($folderList as $key => $folderObj) { + $foldersList[$folderObj['FOLDER_UID']] = $folderObj['FOLDER_NAME']; + $foldersList = array_merge( $foldersList, $this->getFolderChilds( $folderObj['FOLDER_UID'], $folderArray ) ); + } + return (array_merge( $folderArray, $foldersList )); + } + + function getFolderTags ($rootFolder) + { + $folderArray[$rootFolder] = $rootFolder; + $foldersToProcess = $this->getFolderChilds( $rootFolder, $folderArray ); + $tagsInfo = array (); + + foreach ($foldersToProcess as $folderkey => $foldername) { + $filesList = $this->getFolderContent( $folderkey ); + + foreach ($filesList as $key => $fileInfo) { + $fileTags = explode( ",", $fileInfo['APP_DOC_TAGS'] ); + foreach ($fileTags as $key1 => $tag) { + if (! (isset( $tagsInfo[$tag] ))) + $tagsInfo[$tag] = 0; + $tagsInfo[$tag] ++; + } + } + } + return $tagsInfo; + + } + + function remove ($FolderUid, $rootfolder) + { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( AppFolderPeer::FOLDER_UID, $FolderUid ); + AppFolderPeer::doDelete( $oCriteria ); + } +} +// AppFolder + diff --git a/workflow/engine/classes/model/Step.php b/workflow/engine/classes/model/Step.php index ad32da5af..34d080fb8 100755 --- a/workflow/engine/classes/model/Step.php +++ b/workflow/engine/classes/model/Step.php @@ -1,218 +1,209 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ - -require_once 'classes/model/om/BaseStep.php'; - - -/** - * Skeleton subclass for representing a row from the 'STEP' table. - * - * - * - * You should add additional methods to this class to meet the - * application requirements. This class will only be generated as - * long as it does not already exist in the output directory. - * - * @package workflow.engine.classes.model - */ -class Step extends BaseStep { - function create($aData) - { - $con = Propel::getConnection(StepPeer::DATABASE_NAME); - try - { - if ( isset ( $aData['STEP_UID'] ) && $aData['STEP_UID']== '' ) - unset ( $aData['STEP_UID'] ); - if ( isset ( $aData['STEP_UID'] ) ) - $sStepUID = $aData['STEP_UID']; - else - $sStepUID = G::generateUniqueID(); - - $con->begin(); - $this->setStepUid($sStepUID); - $this->setProUid($aData['PRO_UID']); - $this->setTasUid($aData['TAS_UID']); - - if (isset ( $aData['STEP_TYPE_OBJ'] )) - $this->setStepTypeObj( $aData['STEP_TYPE_OBJ'] ); - else - $this->setStepTypeObj("DYNAFORM"); - - if (isset ( $aData['STEP_UID_OBJ'] )) - $this->setStepUidObj( $aData['STEP_UID_OBJ'] ); - else - $this->setStepUidObj(""); - - if (isset ( $aData['STEP_CONDITION'] )) - $this->setStepCondition( $aData['STEP_CONDITION'] ); - else - $this->setStepCondition(""); - - if (isset ( $aData['STEP_POSITION'] )) - $this->setStepPosition( $aData['STEP_POSITION'] ); - else - $this->setStepPosition(""); - - if (isset ( $aData['STEP_MODE'] )) - $this->setStepMode( $aData['STEP_MODE'] ); - else - $this->setStepMode(""); - - if($this->validate()) - { - $result=$this->save(); - $con->commit(); - return $sStepUID; - } - else - { - $con->rollback(); - throw(new Exception("Failed Validation in class ".get_class($this).".")); - } - } - catch(Exception $e) - { - $con->rollback(); - throw($e); - } - } - - public function load($StepUid) - { - try { - $oRow = StepPeer::retrieveByPK( $StepUid ); - if (!is_null($oRow)) - { - $aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME); - $this->fromArray($aFields,BasePeer::TYPE_FIELDNAME); - $this->setNew(false); - return $aFields; - } - else { - throw( new Exception( "The row '$StepUid' in table StepUid doesn't exist!" )); - } - } - catch (Exception $oError) { - throw($oError); - } - } - - public function loadByProcessTaskPosition($sProUid, $sTasUid, $sPosition ) - { - try { - $c = new Criteria('workflow'); - $c->add ( StepPeer::PRO_UID, $sProUid ); - $c->add ( StepPeer::TAS_UID, $sTasUid ); - $c->add ( StepPeer::STEP_POSITION, $sPosition ); - if (StepPeer::doCount($c) > 0) { - $rs = StepPeer::doSelect( $c ); - return $rs[0]; - } - else { - return null; - } - - } - catch (Exception $oError) { - throw($oError); - } - } - - /* +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +require_once 'classes/model/om/BaseStep.php'; + +/** + * Skeleton subclass for representing a row from the 'STEP' table. + * + * + * + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package workflow.engine.classes.model + */ +class Step extends BaseStep +{ + + public function create ($aData) + { + $con = Propel::getConnection( StepPeer::DATABASE_NAME ); + try { + if (isset( $aData['STEP_UID'] ) && $aData['STEP_UID'] == '') { + unset( $aData['STEP_UID'] ); + } + if (isset( $aData['STEP_UID'] )) { + $sStepUID = $aData['STEP_UID']; + } else { + $sStepUID = G::generateUniqueID(); + } + + $con->begin(); + $this->setStepUid( $sStepUID ); + $this->setProUid( $aData['PRO_UID'] ); + $this->setTasUid( $aData['TAS_UID'] ); + + if (isset( $aData['STEP_TYPE_OBJ'] )) { + $this->setStepTypeObj( $aData['STEP_TYPE_OBJ'] ); + } else { + $this->setStepTypeObj( "DYNAFORM" ); + } + + if (isset( $aData['STEP_UID_OBJ'] )) { + $this->setStepUidObj( $aData['STEP_UID_OBJ'] ); + } else { + $this->setStepUidObj( "" ); + } + + if (isset( $aData['STEP_CONDITION'] )) { + $this->setStepCondition( $aData['STEP_CONDITION'] ); + } else { + $this->setStepCondition( "" ); + } + + if (isset( $aData['STEP_POSITION'] )) { + $this->setStepPosition( $aData['STEP_POSITION'] ); + } else { + $this->setStepPosition( "" ); + } + + if (isset( $aData['STEP_MODE'] )) { + $this->setStepMode( $aData['STEP_MODE'] ); + } else { + $this->setStepMode( "" ); + } + + if ($this->validate()) { + $result = $this->save(); + $con->commit(); + return $sStepUID; + } else { + $con->rollback(); + throw (new Exception( "Failed Validation in class " . get_class( $this ) . "." )); + } + + } catch (Exception $e) { + $con->rollback(); + throw ($e); + } + } + + public function load ($StepUid) + { + try { + $oRow = StepPeer::retrieveByPK( $StepUid ); + if (! is_null( $oRow )) { + $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); + $this->fromArray( $aFields, BasePeer::TYPE_FIELDNAME ); + $this->setNew( false ); + return $aFields; + } else { + throw (new Exception( "The row '$StepUid' in table StepUid doesn't exist!" )); + } + } catch (Exception $oError) { + throw ($oError); + } + } + + public function loadByProcessTaskPosition ($sProUid, $sTasUid, $sPosition) + { + try { + $c = new Criteria( 'workflow' ); + $c->add( StepPeer::PRO_UID, $sProUid ); + $c->add( StepPeer::TAS_UID, $sTasUid ); + $c->add( StepPeer::STEP_POSITION, $sPosition ); + if (StepPeer::doCount( $c ) > 0) { + $rs = StepPeer::doSelect( $c ); + return $rs[0]; + } else { + return null; + } + + } catch (Exception $oError) { + throw ($oError); + } + } + + /* * Load the step information using the Task UID, the type and the object UID * @param string $sTaskUID * @param string $sType * @param string $sUID * @return variant - */ - public function loadByType($sTasUid, $sType, $sUid ) - { - try { - $c = new Criteria('workflow'); - $c->add ( StepPeer::TAS_UID, $sTasUid ); - $c->add ( StepPeer::STEP_TYPE_OBJ, $sType ); - $c->add ( StepPeer::STEP_UID_OBJ, $sUid ); - $rs = StepPeer::doSelect( $c ); - if (!is_null($rs) && !is_null($rs[0])) - { - return $rs[0]; - } - else { - throw( new Exception( "You tried to call to loadByType method without send the Task UID or Type or Object UID !" )); - } - } - catch (Exception $oError) { - throw($oError); - } - } - - /* + */ + public function loadByType ($sTasUid, $sType, $sUid) + { + try { + $c = new Criteria( 'workflow' ); + $c->add( StepPeer::TAS_UID, $sTasUid ); + $c->add( StepPeer::STEP_TYPE_OBJ, $sType ); + $c->add( StepPeer::STEP_UID_OBJ, $sUid ); + $rs = StepPeer::doSelect( $c ); + if (! is_null( $rs ) && ! is_null( $rs[0] )) { + return $rs[0]; + } else { + throw (new Exception( "You tried to call to loadByType method without send the Task UID or Type or Object UID !" )); + } + } catch (Exception $oError) { + throw ($oError); + } + } + + /* * update the step information using an array with all values * @param array $fields * @return variant - */ - function update($fields) - { - $con = Propel::getConnection(StepPeer::DATABASE_NAME); - try - { - $con->begin(); - $this->load($fields['STEP_UID']); - $this->fromArray($fields,BasePeer::TYPE_FIELDNAME); - if($this->validate()) - { - $result=$this->save(); - $con->commit(); - return $result; - } - else - { - $con->rollback(); - throw(new Exception("Failed Validation in class ".get_class($this).".")); - } - } - catch(Exception $e) - { - $con->rollback(); - throw($e); - } - } - function remove($sStepUID) - { - require_once('classes/model/StepTrigger.php'); - $oStepTriggers = new StepTrigger(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepTriggerPeer::STEP_UID , $sStepUID); - $oDataset = StepTriggerPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - while($oDataset->next()){ - $aRow = $oDataset->getRow(); - $oStepTriggers->remove($aRow['STEP_UID'], $aRow['TAS_UID'], $aRow['TRI_UID'], $aRow['ST_TYPE']); - } - /*$con = Propel::getConnection(StepPeer::DATABASE_NAME); + */ + public function update ($fields) + { + $con = Propel::getConnection( StepPeer::DATABASE_NAME ); + try { + $con->begin(); + $this->load( $fields['STEP_UID'] ); + $this->fromArray( $fields, BasePeer::TYPE_FIELDNAME ); + if ($this->validate()) { + $result = $this->save(); + $con->commit(); + return $result; + } else { + $con->rollback(); + throw (new Exception( "Failed Validation in class " . get_class( $this ) . "." )); + } + } catch (Exception $e) { + $con->rollback(); + throw ($e); + } + } + + public function remove ($sStepUID) + { + require_once ('classes/model/StepTrigger.php'); + $oStepTriggers = new StepTrigger(); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepTriggerPeer::STEP_UID, $sStepUID ); + $oDataset = StepTriggerPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + $oStepTriggers->remove( $aRow['STEP_UID'], $aRow['TAS_UID'], $aRow['TRI_UID'], $aRow['ST_TYPE'] ); + } + /*$con = Propel::getConnection(StepPeer::DATABASE_NAME); try { $con->begin(); @@ -226,376 +217,357 @@ class Step extends BaseStep { { $con->rollback(); throw($e); - }*/ - $oConnection = Propel::getConnection(StepPeer::DATABASE_NAME); - try { - $oStep = StepPeer::retrieveByPK($sStepUID); - if (!is_null($oStep)) - { - $oConnection->begin(); - $iResult = $oStep->delete(); - $oConnection->commit(); - return $iResult; - } - else { - throw(new Exception('This row doesn\'t exist!')); - } - } - catch (Exception $oError) { - $oConnection->rollback(); - throw($oError); - } - } - - function getNextPosition($sTaskUID) { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('(COUNT(*) + 1) AS POSITION'); - $oCriteria->add(StepPeer::TAS_UID, $sTaskUID); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - return (int)$aRow['POSITION']; - } - catch (Exception $oException) { - throw $Exception; - } - } - - function reOrder($sStepUID, $iPosition) { - try { - /*$oCriteria1 = new Criteria('workflow'); + }*/ + $oConnection = Propel::getConnection( StepPeer::DATABASE_NAME ); + try { + $oStep = StepPeer::retrieveByPK( $sStepUID ); + if (! is_null( $oStep )) { + $oConnection->begin(); + $iResult = $oStep->delete(); + $oConnection->commit(); + return $iResult; + } else { + throw (new Exception( 'This row doesn\'t exist!' )); + } + } catch (Exception $oError) { + $oConnection->rollback(); + throw ($oError); + } + } + + public function getNextPosition ($sTaskUID) + { + try { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( '(COUNT(*) + 1) AS POSITION' ); + $oCriteria->add( StepPeer::TAS_UID, $sTaskUID ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aRow = $oDataset->getRow(); + return (int) $aRow['POSITION']; + } catch (Exception $oException) { + throw $Exception; + } + } + + public function reOrder ($sStepUID, $iPosition) + { + try { + /*$oCriteria1 = new Criteria('workflow'); $oCriteria1->add(StepPeer::STEP_POSITION, StepPeer::STEP_POSITION); $oCriteria2 = new Criteria('workflow'); $oCriteria2->add(StepPeer::TAS_UID, $sTaskUID); $oCriteria2->add(StepPeer::STEP_POSITION, $iPosition, '>'); - BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));*/ - $oStep = StepPeer::retrieveByPK($sStepUID); - $sTaskUID = $oStep->getTasUid(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepPeer::TAS_UID, $sTaskUID); - $oCriteria->add(StepPeer::STEP_POSITION, $iPosition, '>'); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oStep = StepPeer::retrieveByPK($aRow['STEP_UID']); - $oStep->setStepPosition(($aRow['STEP_POSITION']) - 1); - $oStep->save(); - $oDataset->next(); - } - } - catch (Exception $oException) { - throw $oException; - } - } - - function up($sStepUID = '', $sTaskUID = '', $iPosition = 0) { - try { - if ($iPosition > 1) { - $oCriteria1 = new Criteria('workflow'); - $oCriteria1->add(StepPeer::STEP_POSITION, $iPosition); - $oCriteria2 = new Criteria('workflow'); - $oCriteria2->add(StepPeer::TAS_UID, $sTaskUID); - $oCriteria2->add(StepPeer::STEP_POSITION, ($iPosition - 1)); - BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow')); - $oCriteria1 = new Criteria('workflow'); - $oCriteria1->add(StepPeer::STEP_POSITION, ($iPosition - 1)); - $oCriteria2 = new Criteria('workflow'); - $oCriteria2->add(StepPeer::STEP_UID, $sStepUID); - BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow')); - } - } - catch (Exception $oException) { - throw $oException; - } - } - - function down($sStepUID = '', $sTaskUID = '', $iPosition = 0) { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MAX_POSITION'); - $oCriteria->add(StepPeer::TAS_UID, $sTaskUID); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - if ($iPosition < (int)$aRow['MAX_POSITION']) { - $oCriteria1 = new Criteria('workflow'); - $oCriteria1->add(StepPeer::STEP_POSITION, $iPosition); - $oCriteria2 = new Criteria('workflow'); - $oCriteria2->add(StepPeer::TAS_UID, $sTaskUID); - $oCriteria2->add(StepPeer::STEP_POSITION, ($iPosition + 1)); - BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow')); - $oCriteria1 = new Criteria('workflow'); - $oCriteria1->add(StepPeer::STEP_POSITION, ($iPosition + 1)); - $oCriteria2 = new Criteria('workflow'); - $oCriteria2->add(StepPeer::STEP_UID, $sStepUID); - BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow')); - } - } - catch (Exception $oException) { - throw $oException; - } - } - - function removeStep($sType = '', $sObjUID = '') { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepPeer::STEP_TYPE_OBJ, $sType); - $oCriteria->add(StepPeer::STEP_UID_OBJ, $sObjUID); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $this->reOrder($aRow['STEP_UID'], $aRow['STEP_POSITION']); - $this->remove($aRow['STEP_UID']); - $oDataset->next(); - } - } - catch (Exception $oException) { - throw $oException; - } - } - - /** - * verify if Step row specified in [sUid] exists. - * - * @param string $sUid the uid of the - */ - - function StepExists ( $sUid ) { - $con = Propel::getConnection(StepPeer::DATABASE_NAME); - try { - $oObj = StepPeer::retrieveByPk( $sUid ); - if (is_object($oObj) && get_class ($oObj) == 'Step' ) { - return true; - } - else { - return false; - } - } - catch (Exception $oError) { - throw($oError); - } - } - - /** - * verify if a dynaform is assigned some steps - * - * @param string $sproUid the uid of the process - * @param string $sObjUID the uid of the dynaform - */ - function loadInfoAssigDynaform($sproUid,$sObjUID){ - - require_once ( "classes/model/DynaformPeer.php" ); - G::LoadSystem('dynaformhandler'); - - $oC = new Criteria('workflow'); - $oC->add(DynaformPeer::DYN_UID, $sObjUID); - $oC->add(DynaformPeer::PRO_UID, $sproUid); - $oDataset = DynaformPeer::doSelectRS($oC); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - - if($aRow['DYN_TYPE']!='xmlform') { - - $oC1 = new Criteria('workflow'); - $oC1->add(DynaformPeer::PRO_UID, $sproUid); - $oC1->add(DynaformPeer::DYN_TYPE, "xmlform"); - $oDataset = DynaformPeer::doSelectRS($oC1); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - while($oDataset->next()){ - $aRow1 = $oDataset->getRow(); - //print_r($aRow1); - $dynHandler = new dynaFormHandler(PATH_DYNAFORM.$_POST['PRO_UID']."/".$aRow1['DYN_UID'].".xml"); - $dynFields = $dynHandler->getFields(); - $sxmlgrid = ''; - $sType = ''; - $check=0; - foreach($dynFields as $field){ - $sType = $this->getAttribute($field, 'type'); - if($sType == 'grid'){ - $sxmlgrid = $this->getAttribute($field, 'xmlgrid'); - $aGridInfo= explode("/",$sxmlgrid); - if($aGridInfo[0] == $sproUid && $aGridInfo[1] == $sObjUID){ - $check=1; - } - } - } - } - return ($check==1)?$aGridInfo:''; - }else{ - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepPeer::PRO_UID, $sproUid); - $oCriteria->add(StepPeer::STEP_UID_OBJ, $sObjUID); - $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - return($aRow); - } - die; - } - - function getAttribute($node, $attName){ - - foreach ( $node->attributes as $attribute ) - { - if ( $attribute->name == $attName ) - { - return $attribute->value; - } - - } - } - - /** - * verify if a dbconnection is assigned in some dynaforms or triggers - * - * @param string $sproUid the uid of the process - * @param string $sdbsUid the uid of the db connection - */ - function loadInfoAssigConnecctionDB($sproUid,$sdbsUid){ - - require_once ( "classes/model/DynaformPeer.php" ); - G::LoadSystem('dynaformhandler'); - $swDynaform = true; - $swTriggers = true; - //we are looking for triggers if there is at least one db connection - $oC = new Criteria('workflow'); - $oC->add(TriggersPeer::PRO_UID, $sproUid); - $oDataset = TriggersPeer::doSelectRS($oC); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - //print $sproUid; - while($aRowT = $oDataset->getRow()){ - $uidConnection =preg_quote($sdbsUid) ; - if( strrpos($uidConnection,$aRowT['TRI_WEBBOT']) ) { - $swTriggers = false; - } - $oDataset->next(); - } - //we are looking for dynaforms if there is at least one db connection - $oC = new Criteria('workflow'); - $oC->add(DynaformPeer::PRO_UID, $sproUid); - $oDataset = DynaformPeer::doSelectRS($oC); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while($aRow = $oDataset->getRow()){ - if($aRow['DYN_TYPE']=='xmlform') { - $dynHandler = new dynaFormHandler(PATH_DYNAFORM.$aRow['DYN_FILENAME'].".xml"); - $dynFields = $dynHandler->getFields(); - $sxmlgrid = ''; - $sType = ''; - $check=0; - foreach($dynFields as $field){ - $ssqlConnection = $this->getAttribute($field, 'sqlconnection'); - if($ssqlConnection==$sdbsUid) - $swDynaform=false; - }//end foreach - - }//end if - $oDataset->next(); - }//end while - //is there a connecction? - if ($swDynaform && $swTriggers){ - //there is no db connection, you can delete this connection - return true; - } else { - //there is a db connection, you can not delete this connection - return false; - } - die; - } - - /** - * Get related steps for a determinated case - * - * @author Erik A. O. - */ - function getAllCaseSteps($PRO_UID, $TAS_UID, $APP_UID) - { - - $c = new Criteria(); - $c->addSelectColumn('*'); - $c->add(StepPeer::PRO_UID, $PRO_UID); - $c->add(StepPeer::TAS_UID, $TAS_UID); - $c->addAscendingOrderByColumn (StepPeer::STEP_POSITION); - - return StepPeer::doSelect($c); - } - - /** - * Get the uids of the grids into a xml form - * - * @param string $sproUid the uid of the process - * @param string $sdbsUid the uid of the db connection - * @author krlos - */ - function lookingforUidGrids($sproUid,$sObjUID) { - - require_once ( "classes/model/DynaformPeer.php" ); - G::LoadSystem('dynaformhandler'); - $uidsGrids=array(); - $oC = new Criteria('workflow'); - $oC->add(DynaformPeer::DYN_UID, $sObjUID); - $oC->add(DynaformPeer::PRO_UID, $sproUid); - $oDataset = DynaformPeer::doSelectRS($oC); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if($aRow['DYN_TYPE']=='xmlform') { - - $oC1 = new Criteria('workflow'); - $oC1->add(DynaformPeer::PRO_UID, $sproUid); - $oC1->add(DynaformPeer::DYN_TYPE, "xmlform"); - $oDataset = DynaformPeer::doSelectRS($oC1); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - while($oDataset->next()){ - $aRow1 = $oDataset->getRow(); - - $dynHandler = new dynaFormHandler(PATH_DYNAFORM.$sproUid."/".$sObjUID.".xml"); - $dynFields = $dynHandler->getFields(); - $sxmlgrid = ''; - $sType = ''; - $check=0; - foreach($dynFields as $field){ - $sType = $this->getAttribute($field, 'type'); - - if($sType == 'grid'){ - $sxmlgrid = $this->getAttribute($field, 'xmlgrid'); - //print_r($sxmlgrid);print"
"; - $aGridInfo= explode("/",$sxmlgrid); - $uidsGrids[]=$aGridInfo[1]; - } - } - } - return ($uidsGrids); - - } - } - - -} // Step - - - - - - - - - - - - - - - - + BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));*/ + $oStep = StepPeer::retrieveByPK( $sStepUID ); + $sTaskUID = $oStep->getTasUid(); + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepPeer::TAS_UID, $sTaskUID ); + $oCriteria->add( StepPeer::STEP_POSITION, $iPosition, '>' ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oStep = StepPeer::retrieveByPK( $aRow['STEP_UID'] ); + $oStep->setStepPosition( ($aRow['STEP_POSITION']) - 1 ); + $oStep->save(); + $oDataset->next(); + } + } catch (Exception $oException) { + throw $oException; + } + } + + public function up ($sStepUID = '', $sTaskUID = '', $iPosition = 0) + { + try { + if ($iPosition > 1) { + $oCriteria1 = new Criteria( 'workflow' ); + $oCriteria1->add( StepPeer::STEP_POSITION, $iPosition ); + $oCriteria2 = new Criteria( 'workflow' ); + $oCriteria2->add( StepPeer::TAS_UID, $sTaskUID ); + $oCriteria2->add( StepPeer::STEP_POSITION, ($iPosition - 1) ); + BasePeer::doUpdate( $oCriteria2, $oCriteria1, Propel::getConnection( 'workflow' ) ); + $oCriteria1 = new Criteria( 'workflow' ); + $oCriteria1->add( StepPeer::STEP_POSITION, ($iPosition - 1) ); + $oCriteria2 = new Criteria( 'workflow' ); + $oCriteria2->add( StepPeer::STEP_UID, $sStepUID ); + BasePeer::doUpdate( $oCriteria2, $oCriteria1, Propel::getConnection( 'workflow' ) ); + } + } catch (Exception $oException) { + throw $oException; + } + } + + public function down ($sStepUID = '', $sTaskUID = '', $iPosition = 0) + { + try { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->addSelectColumn( 'COUNT(*) AS MAX_POSITION' ); + $oCriteria->add( StepPeer::TAS_UID, $sTaskUID ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aRow = $oDataset->getRow(); + if ($iPosition < (int) $aRow['MAX_POSITION']) { + $oCriteria1 = new Criteria( 'workflow' ); + $oCriteria1->add( StepPeer::STEP_POSITION, $iPosition ); + $oCriteria2 = new Criteria( 'workflow' ); + $oCriteria2->add( StepPeer::TAS_UID, $sTaskUID ); + $oCriteria2->add( StepPeer::STEP_POSITION, ($iPosition + 1) ); + BasePeer::doUpdate( $oCriteria2, $oCriteria1, Propel::getConnection( 'workflow' ) ); + $oCriteria1 = new Criteria( 'workflow' ); + $oCriteria1->add( StepPeer::STEP_POSITION, ($iPosition + 1) ); + $oCriteria2 = new Criteria( 'workflow' ); + $oCriteria2->add( StepPeer::STEP_UID, $sStepUID ); + BasePeer::doUpdate( $oCriteria2, $oCriteria1, Propel::getConnection( 'workflow' ) ); + } + } catch (Exception $oException) { + throw $oException; + } + } + + public function removeStep ($sType = '', $sObjUID = '') + { + try { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepPeer::STEP_TYPE_OBJ, $sType ); + $oCriteria->add( StepPeer::STEP_UID_OBJ, $sObjUID ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $this->reOrder( $aRow['STEP_UID'], $aRow['STEP_POSITION'] ); + $this->remove( $aRow['STEP_UID'] ); + $oDataset->next(); + } + } catch (Exception $oException) { + throw $oException; + } + } + + /** + * verify if Step row specified in [sUid] exists. + * + * @param string $sUid the uid of the + */ + + public function StepExists ($sUid) + { + $con = Propel::getConnection( StepPeer::DATABASE_NAME ); + try { + $oObj = StepPeer::retrieveByPk( $sUid ); + if (is_object( $oObj ) && get_class( $oObj ) == 'Step') { + return true; + } else { + return false; + } + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * verify if a dynaform is assigned some steps + * + * @param string $sproUid the uid of the process + * @param string $sObjUID the uid of the dynaform + */ + public function loadInfoAssigDynaform ($sproUid, $sObjUID) + { + + require_once ("classes/model/DynaformPeer.php"); + G::LoadSystem( 'dynaformhandler' ); + + $oC = new Criteria( 'workflow' ); + $oC->add( DynaformPeer::DYN_UID, $sObjUID ); + $oC->add( DynaformPeer::PRO_UID, $sproUid ); + $oDataset = DynaformPeer::doSelectRS( $oC ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ($aRow['DYN_TYPE'] != 'xmlform') { + + $oC1 = new Criteria( 'workflow' ); + $oC1->add( DynaformPeer::PRO_UID, $sproUid ); + $oC1->add( DynaformPeer::DYN_TYPE, "xmlform" ); + $oDataset = DynaformPeer::doSelectRS( $oC1 ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + while ($oDataset->next()) { + $aRow1 = $oDataset->getRow(); + //print_r($aRow1); + $dynHandler = new dynaFormHandler( PATH_DYNAFORM . $_POST['PRO_UID'] . "/" . $aRow1['DYN_UID'] . ".xml" ); + $dynFields = $dynHandler->getFields(); + $sxmlgrid = ''; + $sType = ''; + $check = 0; + foreach ($dynFields as $field) { + $sType = $this->getAttribute( $field, 'type' ); + if ($sType == 'grid') { + $sxmlgrid = $this->getAttribute( $field, 'xmlgrid' ); + $aGridInfo = explode( "/", $sxmlgrid ); + if ($aGridInfo[0] == $sproUid && $aGridInfo[1] == $sObjUID) { + $check = 1; + } + } + } + } + return ($check == 1) ? $aGridInfo : ''; + } else { + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( StepPeer::PRO_UID, $sproUid ); + $oCriteria->add( StepPeer::STEP_UID_OBJ, $sObjUID ); + $oCriteria->add( StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); + $oDataset = StepPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aRow = $oDataset->getRow(); + return ($aRow); + } + die(); + } + + public function getAttribute ($node, $attName) + { + + foreach ($node->attributes as $attribute) { + if ($attribute->name == $attName) { + return $attribute->value; + } + + } + } + + /** + * verify if a dbconnection is assigned in some dynaforms or triggers + * + * @param string $sproUid the uid of the process + * @param string $sdbsUid the uid of the db connection + */ + public function loadInfoAssigConnecctionDB ($sproUid, $sdbsUid) + { + require_once ("classes/model/DynaformPeer.php"); + G::LoadSystem( 'dynaformhandler' ); + $swDynaform = true; + $swTriggers = true; + //we are looking for triggers if there is at least one db connection + $oC = new Criteria( 'workflow' ); + $oC->add( TriggersPeer::PRO_UID, $sproUid ); + $oDataset = TriggersPeer::doSelectRS( $oC ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + //print $sproUid; + while ($aRowT = $oDataset->getRow()) { + $uidConnection = preg_quote( $sdbsUid ); + if (strrpos( $uidConnection, $aRowT['TRI_WEBBOT'] )) { + $swTriggers = false; + } + $oDataset->next(); + } + //we are looking for dynaforms if there is at least one db connection + $oC = new Criteria( 'workflow' ); + $oC->add( DynaformPeer::PRO_UID, $sproUid ); + $oDataset = DynaformPeer::doSelectRS( $oC ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if ($aRow['DYN_TYPE'] == 'xmlform') { + $dynHandler = new dynaFormHandler( PATH_DYNAFORM . $aRow['DYN_FILENAME'] . ".xml" ); + $dynFields = $dynHandler->getFields(); + $sxmlgrid = ''; + $sType = ''; + $check = 0; + foreach ($dynFields as $field) { + $ssqlConnection = $this->getAttribute( $field, 'sqlconnection' ); + if ($ssqlConnection == $sdbsUid) + $swDynaform = false; + } //end foreach + + + } //end if + $oDataset->next(); + } //end while + //is there a connecction? + if ($swDynaform && $swTriggers) { + //there is no db connection, you can delete this connection + return true; + } else { + //there is a db connection, you can not delete this connection + return false; + } + die(); + } + + /** + * Get related steps for a determinated case + * + * @author Erik A. O. + */ + public function getAllCaseSteps ($PRO_UID, $TAS_UID, $APP_UID) + { + + $c = new Criteria(); + $c->addSelectColumn( '*' ); + $c->add( StepPeer::PRO_UID, $PRO_UID ); + $c->add( StepPeer::TAS_UID, $TAS_UID ); + $c->addAscendingOrderByColumn( StepPeer::STEP_POSITION ); + + return StepPeer::doSelect( $c ); + } + + /** + * Get the uids of the grids into a xml form + * + * @param string $sproUid the uid of the process + * @param string $sdbsUid the uid of the db connection + * @author krlos + */ + public function lookingforUidGrids ($sproUid, $sObjUID) + { + + require_once ("classes/model/DynaformPeer.php"); + G::LoadSystem( 'dynaformhandler' ); + $uidsGrids = array (); + $oC = new Criteria( 'workflow' ); + $oC->add( DynaformPeer::DYN_UID, $sObjUID ); + $oC->add( DynaformPeer::PRO_UID, $sproUid ); + $oDataset = DynaformPeer::doSelectRS( $oC ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ($aRow['DYN_TYPE'] == 'xmlform') { + $oC1 = new Criteria( 'workflow' ); + $oC1->add( DynaformPeer::PRO_UID, $sproUid ); + $oC1->add( DynaformPeer::DYN_TYPE, "xmlform" ); + $oDataset = DynaformPeer::doSelectRS( $oC1 ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + while ($oDataset->next()) { + $aRow1 = $oDataset->getRow(); + + $dynHandler = new dynaFormHandler( PATH_DYNAFORM . $sproUid . "/" . $sObjUID . ".xml" ); + $dynFields = $dynHandler->getFields(); + $sxmlgrid = ''; + $sType = ''; + $check = 0; + foreach ($dynFields as $field) { + $sType = $this->getAttribute( $field, 'type' ); + + if ($sType == 'grid') { + $sxmlgrid = $this->getAttribute( $field, 'xmlgrid' ); + //print_r($sxmlgrid);print"
"; + $aGridInfo = explode( "/", $sxmlgrid ); + $uidsGrids[] = $aGridInfo[1]; + } + } + } + return ($uidsGrids); + + } + } + +} +// Step +