diff --git a/workflow/engine/classes/class.pmTable.php b/workflow/engine/classes/class.pmTable.php index 01ffda4c3..44c8214e0 100755 --- a/workflow/engine/classes/class.pmTable.php +++ b/workflow/engine/classes/class.pmTable.php @@ -910,5 +910,65 @@ class PmTable $m->execute( $args ); $m->runBuild(); } + + public function addPMFieldsToList($action) + { + $conf = new Configurations(); + $confCasesList = $conf->getConfiguration('casesList', $action); + + if (!class_exists('AdditionalTables')) { + require_once ("classes/model/AdditionalTables.php"); + } + + $oCriteria = new Criteria('workflow'); + $oCriteria->clearSelectColumns(); + + //If there is PMTable for this case list + if (is_array($confCasesList) && count($confCasesList) > 0 && isset($confCasesList["PMTable"]) && trim($confCasesList["PMTable"]) != "") { + //Getting the table name + $additionalTableUid = $confCasesList["PMTable"]; + + $additionalTable = AdditionalTablesPeer::retrieveByPK($additionalTableUid); + $tableName = $additionalTable->getAddTabName(); + + $additionalTable = new AdditionalTables(); + $tableData = $additionalTable->load($additionalTableUid, true); + + $tableField = array(); + + foreach ($tableData["FIELDS"] as $arrayField) { + $tableField[] = $arrayField["FLD_NAME"]; + } + + foreach ($confCasesList["second"]["data"] as $fieldData) { + $fieldData['name'] = ($fieldData['name'] == 'APP_STATUS_LABEL')? 'APP_STATUS' : $fieldData['name']; + if (in_array($fieldData["name"], $tableField)) { + $fieldTable = $fieldData["name"]; + $fieldName = $tableName . "." . $fieldTable; + $oCriteria->addSelectColumn($fieldName); + } + } + + switch ($action) { + case "sent": + $listTablePeer = 'ListParticipatedLastPeer'; + break; + case "selfservice": + case "unassigned": + $listTablePeer = 'ListUnassignedPeer'; + break; + case "paused": + $listTablePeer = 'ListPausedPeer'; + break; + case "todo": + case 'draft': + $listTablePeer = 'ListInboxPeer'; + break; + } + + $oCriteria->addJoin($listTablePeer::APP_UID, $tableName.'.APP_UID', Criteria::LEFT_JOIN); + } + return $oCriteria; + } } diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index be80ddf35..4a78b1111 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -499,7 +499,8 @@ class ListInbox extends BaseListInbox */ public function loadList($usr_uid, $filters = array(), $callbackRecord = null) { - $criteria = new Criteria(); + $pmTable = new PmTable(); + $criteria = $pmTable->addPMFieldsToList('todo'); $criteria->addSelectColumn(ListInboxPeer::APP_UID); $criteria->addSelectColumn(ListInboxPeer::DEL_INDEX); @@ -600,5 +601,6 @@ class ListInbox extends BaseListInbox $aRow = $dataset->getRow(); return isset($aRow[$fieldName]) ? $aRow[$fieldName] : NULL; } + } diff --git a/workflow/engine/classes/model/ListParticipatedLast.php b/workflow/engine/classes/model/ListParticipatedLast.php index 47bb2a3c3..850980cea 100644 --- a/workflow/engine/classes/model/ListParticipatedLast.php +++ b/workflow/engine/classes/model/ListParticipatedLast.php @@ -295,8 +295,9 @@ class ListParticipatedLast extends BaseListParticipatedLast public function loadList($usr_uid, $filters = array(), $callbackRecord = null) { - $criteria = new Criteria(); - + $pmTable = new PmTable(); + $criteria = $pmTable->addPMFieldsToList('sent'); + $criteria->addSelectColumn(ListParticipatedLastPeer::APP_UID); $criteria->addSelectColumn(ListParticipatedLastPeer::DEL_INDEX); $criteria->addSelectColumn(ListParticipatedLastPeer::USR_UID); diff --git a/workflow/engine/classes/model/ListPaused.php b/workflow/engine/classes/model/ListPaused.php index cb014a2f6..76449aa0c 100644 --- a/workflow/engine/classes/model/ListPaused.php +++ b/workflow/engine/classes/model/ListPaused.php @@ -276,7 +276,8 @@ class ListPaused extends BaseListPaused { public function loadList($usr_uid, $filters = array(), $callbackRecord = null) { $resp = array(); - $criteria = new Criteria(); + $pmTable = new PmTable(); + $criteria = $pmTable->addPMFieldsToList('paused'); $criteria->addSelectColumn(ListPausedPeer::APP_UID); $criteria->addSelectColumn(ListPausedPeer::USR_UID); diff --git a/workflow/engine/classes/model/ListUnassigned.php b/workflow/engine/classes/model/ListUnassigned.php index 0fc92cf71..cd99d7a6b 100644 --- a/workflow/engine/classes/model/ListUnassigned.php +++ b/workflow/engine/classes/model/ListUnassigned.php @@ -246,7 +246,8 @@ class ListUnassigned extends BaseListUnassigned public function loadList($usr_uid, $filters = array(), $callbackRecord = null) { $resp = array(); - $criteria = new Criteria(); + $pmTable = new PmTable(); + $criteria = $pmTable->addPMFieldsToList('unassigned'); $criteria->addSelectColumn(ListUnassignedPeer::APP_UID); $criteria->addSelectColumn(ListUnassignedPeer::DEL_INDEX); diff --git a/workflow/engine/methods/cases/casesListExtJs.php b/workflow/engine/methods/cases/casesListExtJs.php index d97d41268..51ce2bc34 100755 --- a/workflow/engine/methods/cases/casesListExtJs.php +++ b/workflow/engine/methods/cases/casesListExtJs.php @@ -83,11 +83,6 @@ try { $generalConfCasesList = array (); } -$caseListBuilder = (count($confCasesList)) ? 1 : 0; -if ($caseListBuilder) { - $urlProxy = 'proxyCasesList'; -} - // reassign header configuration $confReassignList = getReassignList(); diff --git a/workflow/engine/methods/cases/proxyNewCasesList.php b/workflow/engine/methods/cases/proxyNewCasesList.php index 65d469b1d..fd99d9ae3 100644 --- a/workflow/engine/methods/cases/proxyNewCasesList.php +++ b/workflow/engine/methods/cases/proxyNewCasesList.php @@ -200,4 +200,3 @@ try { $msg = array("error" => $e->getMessage()); echo G::json_encode($msg); } -