From cda8fab073fad3748b304d3a6120c371143235cc Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Thu, 13 Jul 2017 14:58:43 -0400 Subject: [PATCH 1/3] HOR-3516 --- workflow/engine/classes/model/ListInbox.php | 14 +++++--- .../classes/model/ListParticipatedLast.php | 13 +++++-- workflow/engine/classes/model/ListPaused.php | 11 +++++- .../engine/classes/model/ListUnassigned.php | 14 ++++++-- .../methods/cases/proxyNewCasesList.php | 29 ++++++++++----- .../src/ProcessMaker/BusinessModel/Cases.php | 36 +++++++++++++++++++ 6 files changed, 97 insertions(+), 20 deletions(-) diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index 43501ce33..cc2368644 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -549,9 +549,16 @@ class ListInbox extends BaseListInbox $criteria->addJoin(ListInboxPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); self::loadFilters($criteria, $filters, $additionalColumns); - $sort = (!empty($filters['sort'])) ? - ListInboxPeer::TABLE_NAME.'.'.$filters['sort'] : - "LIST_INBOX.APP_UPDATE_DATE"; + //We will be defined the sort + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $sort = $casesList->getSortColumn( + __CLASS__ . 'Peer', + BasePeer::TYPE_FIELDNAME, + empty($filters['sort']) ? "APP_UPDATE_DATE" : $filters['sort'], + $this->additionalClassName, + $additionalColumns + ); + $dir = isset($filters['dir']) ? $filters['dir'] : "ASC"; $start = isset($filters['start']) ? $filters['start'] : "0"; $limit = isset($filters['limit']) ? $filters['limit'] : "25"; @@ -624,7 +631,6 @@ class ListInbox extends BaseListInbox * Returns the number of cases of a user * @param string $usrUid * @param array $filters - * @param string $status * @return int */ public function getCountList($usrUid, $filters = array()) diff --git a/workflow/engine/classes/model/ListParticipatedLast.php b/workflow/engine/classes/model/ListParticipatedLast.php index c5ca29955..07466f40d 100644 --- a/workflow/engine/classes/model/ListParticipatedLast.php +++ b/workflow/engine/classes/model/ListParticipatedLast.php @@ -364,9 +364,16 @@ class ListParticipatedLast extends BaseListParticipatedLast self::loadFilters($criteria, $filters, $additionalColumns); - $sort = (!empty($filters['sort'])) ? - ListParticipatedLastPeer::TABLE_NAME.'.'.$filters['sort'] : - 'DEL_DELEGATE_DATE'; + //We will be defined the sort + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $sort = $casesList->getSortColumn( + __CLASS__ . 'Peer', + BasePeer::TYPE_FIELDNAME, + empty($filters['sort']) ? "DEL_DELEGATE_DATE" : $filters['sort'], + $this->additionalClassName, + $additionalColumns + ); + $dir = isset($filters['dir']) ? $filters['dir'] : 'ASC'; $start = isset($filters['start']) ? $filters['start'] : '0'; $limit = isset($filters['limit']) ? $filters['limit'] : '25'; diff --git a/workflow/engine/classes/model/ListPaused.php b/workflow/engine/classes/model/ListPaused.php index 8844a9363..749205493 100644 --- a/workflow/engine/classes/model/ListPaused.php +++ b/workflow/engine/classes/model/ListPaused.php @@ -307,7 +307,16 @@ class ListPaused extends BaseListPaused $criteria->add(ListPausedPeer::USR_UID, $usr_uid, Criteria::EQUAL); self::loadFilters($criteria, $filters, $additionalColumns); - $sort = (!empty($filters['sort'])) ? ListPausedPeer::TABLE_NAME.'.'.$filters['sort'] : "APP_PAUSED_DATE"; + //We will be defined the sort + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $sort = $casesList->getSortColumn( + __CLASS__ . 'Peer', + BasePeer::TYPE_FIELDNAME, + empty($filters['sort']) ? "APP_PAUSED_DATE" : $filters['sort'], + $this->additionalClassName, + $additionalColumns + ); + $dir = isset($filters['dir']) ? $filters['dir'] : "ASC"; $start = isset($filters['start']) ? $filters['start'] : "0"; $limit = isset($filters['limit']) ? $filters['limit'] : "25"; diff --git a/workflow/engine/classes/model/ListUnassigned.php b/workflow/engine/classes/model/ListUnassigned.php index f5a7836ab..4cde1afce 100644 --- a/workflow/engine/classes/model/ListUnassigned.php +++ b/workflow/engine/classes/model/ListUnassigned.php @@ -301,9 +301,17 @@ class ListUnassigned extends BaseListUnassigned //Apply some filters self::loadFilters($criteria, $filters, $additionalColumns); - $sort = (!empty($filters['sort'])) ? - ListUnassignedPeer::TABLE_NAME.'.'.$filters['sort'] : - "LIST_UNASSIGNED.DEL_DELEGATE_DATE"; + + //We will be defined the sort + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $sort = $casesList->getSortColumn( + __CLASS__ . 'Peer', + BasePeer::TYPE_FIELDNAME, + empty($filters['sort']) ? "DEL_DELEGATE_DATE" : $filters['sort'], + $this->additionalClassName, + $additionalColumns + ); + $dir = isset($filters['dir']) ? $filters['dir'] : "ASC"; $start = isset($filters['start']) ? $filters['start'] : "0"; $limit = isset($filters['limit']) ? $filters['limit'] : "25"; diff --git a/workflow/engine/methods/cases/proxyNewCasesList.php b/workflow/engine/methods/cases/proxyNewCasesList.php index cf274c0ff..f2c4eb881 100644 --- a/workflow/engine/methods/cases/proxyNewCasesList.php +++ b/workflow/engine/methods/cases/proxyNewCasesList.php @@ -24,6 +24,7 @@ try { $filters['start'] = isset($_REQUEST["start"]) ? $filter->sanitizeInputValue($_REQUEST["start"], 'nosql') : "0"; $filters['limit'] = isset($_REQUEST["limit"]) ? $filter->sanitizeInputValue($_REQUEST["limit"], 'nosql') : "25"; $filters['sort'] = (isset($_REQUEST['sort']))? (($_REQUEST['sort'] == 'APP_STATUS_LABEL')? 'APP_STATUS' : $filter->sanitizeInputValue($_REQUEST["sort"], 'nosql')) : ''; + $filters['sort'] = G::toUpper($filters['sort']); $filters['dir'] = isset($_REQUEST["dir"]) ? $filter->sanitizeInputValue($_REQUEST["dir"], 'nosql') : "DESC"; $filters['action'] = isset($_REQUEST["action"]) ? $filter->sanitizeInputValue($_REQUEST["action"], 'nosql') : ""; $filters['user'] = isset($_REQUEST["user"]) ? $filter->sanitizeInputValue($_REQUEST["user"], 'nosql') : ""; @@ -102,16 +103,26 @@ try { } else { $filters['limit'] = (int)$filters['limit']; } - - $filters['sort'] = G::toUpper($filters['sort']); - $columnsList = $listpeer::getFieldNames(BasePeer::TYPE_FIELDNAME); - - if (!(in_array($filters['sort'], $columnsList))) { - if ($filters['sort'] == 'APP_CURRENT_USER' && ($listName == 'participated' || $listName == 'participated_last')) { + + switch ($filters['sort']) { + case 'APP_CURRENT_USER': $filters['sort'] = 'DEL_CURRENT_USR_LASTNAME'; - } else { - $filters['sort'] = ''; - } + break; + case 'DEL_TASK_DUE_DATE': + $filters['sort'] = 'DEL_DUE_DATE'; + break; + case 'APP_UPDATE_DATE': + $filters['sort'] = 'DEL_DELEGATE_DATE'; + break; + case 'APP_DEL_PREVIOUS_USER': + $filters['sort'] = 'DEL_DUE_DATE'; + break; + case 'DEL_CURRENT_TAS_TITLE': + $filters['sort'] = 'APP_TAS_TITLE'; + break; + case 'APP_STATUS_LABEL': + $filters['sort'] = 'APP_STATUS'; + break; } $filters['dir'] = G::toUpper($filters['dir']); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 39cf05952..4813caced 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -3329,4 +3329,40 @@ class Cases ); } } + + /** + * This function get the table.column by order by the result + * We can include the additional table related to the custom cases list + * + * @param string $listPeer, name of the list class + * @param string $field, name of the fieldName + * @param string $sort, name of column by sort + * @param string $additionalClassName, name of the className of pmTable + * @param array $additionalColumns, columns related to the custom cases list + * @return string $tableName + */ + public function getSortColumn($listPeer, $field, $sort, $additionalClassName = '', $additionalColumns = array()) + { + $columnSort = $sort; + + //We will check if the column by sort is a LIST table + $columnsList = $listPeer::getFieldNames($field); + if (in_array($sort, $columnsList)) { + $columnSort = $listPeer::TABLE_NAME . '.' . $sort; + } else { + //We will sort by CUSTOM CASE LIST table + if (count($additionalColumns) > 0) { + require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $additionalClassName . '.php'); + $aTable = explode('.', current($additionalColumns)); + if (count($aTable) > 0) { + $tableName = $aTable[0]; + } + } + if (!empty($tableName)) { + $columnSort = $tableName . '.' . $sort; + } + } + + return $columnSort; + } } From 1e8aeda475481c26a38be30a16700cf4b51dbf86 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Fri, 14 Jul 2017 11:57:21 -0400 Subject: [PATCH 2/3] HOR-3516 --- workflow/engine/classes/model/ListInbox.php | 1 + .../engine/classes/model/ListParticipatedLast.php | 1 + workflow/engine/classes/model/ListPaused.php | 1 + workflow/engine/classes/model/ListUnassigned.php | 1 + .../src/ProcessMaker/BusinessModel/Cases.php | 14 ++++++++------ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index cc2368644..619bebe1b 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -555,6 +555,7 @@ class ListInbox extends BaseListInbox __CLASS__ . 'Peer', BasePeer::TYPE_FIELDNAME, empty($filters['sort']) ? "APP_UPDATE_DATE" : $filters['sort'], + "APP_UPDATE_DATE", $this->additionalClassName, $additionalColumns ); diff --git a/workflow/engine/classes/model/ListParticipatedLast.php b/workflow/engine/classes/model/ListParticipatedLast.php index 07466f40d..ce7321e43 100644 --- a/workflow/engine/classes/model/ListParticipatedLast.php +++ b/workflow/engine/classes/model/ListParticipatedLast.php @@ -370,6 +370,7 @@ class ListParticipatedLast extends BaseListParticipatedLast __CLASS__ . 'Peer', BasePeer::TYPE_FIELDNAME, empty($filters['sort']) ? "DEL_DELEGATE_DATE" : $filters['sort'], + "DEL_DELEGATE_DATE", $this->additionalClassName, $additionalColumns ); diff --git a/workflow/engine/classes/model/ListPaused.php b/workflow/engine/classes/model/ListPaused.php index 749205493..1b885020d 100644 --- a/workflow/engine/classes/model/ListPaused.php +++ b/workflow/engine/classes/model/ListPaused.php @@ -313,6 +313,7 @@ class ListPaused extends BaseListPaused __CLASS__ . 'Peer', BasePeer::TYPE_FIELDNAME, empty($filters['sort']) ? "APP_PAUSED_DATE" : $filters['sort'], + "APP_PAUSED_DATE", $this->additionalClassName, $additionalColumns ); diff --git a/workflow/engine/classes/model/ListUnassigned.php b/workflow/engine/classes/model/ListUnassigned.php index 4cde1afce..26cf113eb 100644 --- a/workflow/engine/classes/model/ListUnassigned.php +++ b/workflow/engine/classes/model/ListUnassigned.php @@ -308,6 +308,7 @@ class ListUnassigned extends BaseListUnassigned __CLASS__ . 'Peer', BasePeer::TYPE_FIELDNAME, empty($filters['sort']) ? "DEL_DELEGATE_DATE" : $filters['sort'], + "DEL_DELEGATE_DATE", $this->additionalClassName, $additionalColumns ); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 4813caced..25194fd82 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -3337,13 +3337,14 @@ class Cases * @param string $listPeer, name of the list class * @param string $field, name of the fieldName * @param string $sort, name of column by sort + * @param string $defaultSort, name of column by sort default * @param string $additionalClassName, name of the className of pmTable * @param array $additionalColumns, columns related to the custom cases list * @return string $tableName */ - public function getSortColumn($listPeer, $field, $sort, $additionalClassName = '', $additionalColumns = array()) + public function getSortColumn($listPeer, $field, $sort, $defaultSort, $additionalClassName = '', $additionalColumns = array()) { - $columnSort = $sort; + $columnSort = $defaultSort; //We will check if the column by sort is a LIST table $columnsList = $listPeer::getFieldNames($field); @@ -3351,16 +3352,17 @@ class Cases $columnSort = $listPeer::TABLE_NAME . '.' . $sort; } else { //We will sort by CUSTOM CASE LIST table - if (count($additionalColumns) > 0) { + if (in_array($sort, $additionalColumns)) { require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $additionalClassName . '.php'); $aTable = explode('.', current($additionalColumns)); if (count($aTable) > 0) { $tableName = $aTable[0]; } + if (!empty($tableName)) { + $columnSort = $tableName . '.' . $sort; + } } - if (!empty($tableName)) { - $columnSort = $tableName . '.' . $sort; - } + } return $columnSort; From 425383dd776f758991e826b0d5eeb231ad20b0bb Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Fri, 14 Jul 2017 15:10:11 -0400 Subject: [PATCH 3/3] QA observations --- .../engine/src/ProcessMaker/BusinessModel/Cases.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 25194fd82..fe9a285e2 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -3339,12 +3339,13 @@ class Cases * @param string $sort, name of column by sort * @param string $defaultSort, name of column by sort default * @param string $additionalClassName, name of the className of pmTable - * @param array $additionalColumns, columns related to the custom cases list + * @param array $additionalColumns, columns related to the custom cases list with the format TABLE_NAME.COLUMN_NAME * @return string $tableName */ public function getSortColumn($listPeer, $field, $sort, $defaultSort, $additionalClassName = '', $additionalColumns = array()) { $columnSort = $defaultSort; + $tableName = ''; //We will check if the column by sort is a LIST table $columnsList = $listPeer::getFieldNames($field); @@ -3352,17 +3353,16 @@ class Cases $columnSort = $listPeer::TABLE_NAME . '.' . $sort; } else { //We will sort by CUSTOM CASE LIST table - if (in_array($sort, $additionalColumns)) { + if (count($additionalColumns) > 0) { require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $additionalClassName . '.php'); $aTable = explode('.', current($additionalColumns)); if (count($aTable) > 0) { $tableName = $aTable[0]; } - if (!empty($tableName)) { - $columnSort = $tableName . '.' . $sort; - } } - + if (in_array($tableName . '.' . $sort, $additionalColumns)) { + $columnSort = $tableName . '.' . $sort; + } } return $columnSort;