diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index 45b77ad51..e43f4ea88 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -476,36 +476,9 @@ class ListInbox extends BaseListInbox if (!empty($caseLink)) { $criteria->add(ListInboxPeer::APP_UID, $search, Criteria::EQUAL); } else { - $oTmpCriteria = ''; //If we have additional tables configured in the custom cases list, prepare the variables for search - if (count($additionalColumns) > 0) { - require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $this->additionalClassName . '.php'); - $oNewCriteria = new Criteria("workflow"); - $oTmpCriteria = $oNewCriteria->getNewCriterion(current($additionalColumns), "%" . $search . "%", Criteria::LIKE); - - //We prepare the query related to the custom cases list - foreach (array_slice($additionalColumns, 1) as $value) { - $oTmpCriteria = $oNewCriteria->getNewCriterion($value, "%" . $search . "%", Criteria::LIKE)->addOr($oTmpCriteria); - } - } - - if (!empty($oTmpCriteria)) { - $criteria->add( - $criteria->getNewCriterion(ListInboxPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListInboxPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListInboxPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListInboxPeer::APP_NUMBER, $search, Criteria::EQUAL)->addOr( - $oTmpCriteria - )))) - ); - } else { - $criteria->add( - $criteria->getNewCriterion(ListInboxPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListInboxPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListInboxPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListInboxPeer::APP_NUMBER, $search, Criteria::EQUAL)))) - ); - } + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $casesList->getSearchCriteriaListCases($criteria, 'ListInboxPeer', $search, $this->additionalClassName, $additionalColumns); } } diff --git a/workflow/engine/classes/model/ListParticipatedLast.php b/workflow/engine/classes/model/ListParticipatedLast.php index 5a445f72a..c9209aeda 100644 --- a/workflow/engine/classes/model/ListParticipatedLast.php +++ b/workflow/engine/classes/model/ListParticipatedLast.php @@ -287,34 +287,8 @@ class ListParticipatedLast extends BaseListParticipatedLast $criteria->add(ListParticipatedLastPeer::APP_UID, $search, Criteria::EQUAL); } else { //If we have additional tables configured in the custom cases list, prepare the variables for search - if (count($additionalColumns) > 0) { - require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $this->additionalClassName . '.php'); - $oNewCriteria = new Criteria("workflow"); - $oTmpCriteria = $oNewCriteria->getNewCriterion(current($additionalColumns), "%" . $search . "%", Criteria::LIKE); - - //We prepare the query related to the custom cases list - foreach (array_slice($additionalColumns, 1) as $value) { - $oTmpCriteria = $oNewCriteria->getNewCriterion($value, "%" . $search . "%", Criteria::LIKE)->addOr($oTmpCriteria); - } - } - - if (!empty($oTmpCriteria)) { - $criteria->add( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_NUMBER, $search, Criteria::EQUAL)->addOr( - $oTmpCriteria - )))) - ); - } else { - $criteria->add( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListParticipatedLastPeer::APP_NUMBER, $search, Criteria::EQUAL)))) - ); - } + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $casesList->getSearchCriteriaListCases($criteria, 'ListParticipatedLastPeer', $search, $this->additionalClassName, $additionalColumns); } } diff --git a/workflow/engine/classes/model/ListPaused.php b/workflow/engine/classes/model/ListPaused.php index b8a0b2365..dd3d58586 100644 --- a/workflow/engine/classes/model/ListPaused.php +++ b/workflow/engine/classes/model/ListPaused.php @@ -246,34 +246,8 @@ class ListPaused extends BaseListPaused $criteria->add(ListPausedPeer::APP_UID, $search, Criteria::EQUAL); } else { //If we have additional tables configured in the custom cases list, prepare the variables for search - if (count($additionalColumns) > 0) { - require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $this->additionalClassName . '.php'); - $oNewCriteria = new Criteria("workflow"); - $oTmpCriteria = $oNewCriteria->getNewCriterion(current($additionalColumns), "%" . $search . "%", Criteria::LIKE); - - //We prepare the query related to the custom cases list - foreach (array_slice($additionalColumns, 1) as $value) { - $oTmpCriteria = $oNewCriteria->getNewCriterion($value, "%" . $search . "%", Criteria::LIKE)->addOr($oTmpCriteria); - } - } - - if (!empty($oTmpCriteria)) { - $criteria->add( - $criteria->getNewCriterion(ListPausedPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListPausedPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListPausedPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListPausedPeer::APP_NUMBER, $search, Criteria::EQUAL)->addOr( - $oTmpCriteria - )))) - ); - } else { - $criteria->add( - $criteria->getNewCriterion(ListPausedPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListPausedPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListPausedPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListPausedPeer::APP_NUMBER, $search, Criteria::EQUAL)))) - ); - } + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $casesList->getSearchCriteriaListCases($criteria, 'ListPausedPeer', $search, $this->additionalClassName, $additionalColumns); } } diff --git a/workflow/engine/classes/model/ListUnassigned.php b/workflow/engine/classes/model/ListUnassigned.php index 8ce590486..eb2cfdbdf 100644 --- a/workflow/engine/classes/model/ListUnassigned.php +++ b/workflow/engine/classes/model/ListUnassigned.php @@ -190,34 +190,8 @@ class ListUnassigned extends BaseListUnassigned $criteria->add(ListUnassignedPeer::APP_UID, $search, Criteria::EQUAL); } else { //If we have additional tables configured in the custom cases list, prepare the variables for search - if (count($additionalColumns) > 0) { - require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $this->additionalClassName . '.php'); - $oNewCriteria = new Criteria("workflow"); - $oTmpCriteria = $oNewCriteria->getNewCriterion(current($additionalColumns), "%" . $search . "%", Criteria::LIKE); - - //We prepare the query related to the custom cases list - foreach (array_slice($additionalColumns, 1) as $value) { - $oTmpCriteria = $oNewCriteria->getNewCriterion($value, "%" . $search . "%", Criteria::LIKE)->addOr($oTmpCriteria); - } - } - - if (!empty($oTmpCriteria)) { - $criteria->add( - $criteria->getNewCriterion(ListUnassignedPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListUnassignedPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListUnassignedPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListUnassignedPeer::APP_NUMBER, $search, Criteria::EQUAL)->addOr( - $oTmpCriteria - )))) - ); - } else { - $criteria->add( - $criteria->getNewCriterion(ListUnassignedPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListUnassignedPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListUnassignedPeer::APP_PRO_TITLE, '%' . $search . '%', Criteria::LIKE)->addOr( - $criteria->getNewCriterion(ListUnassignedPeer::APP_NUMBER, $search, Criteria::EQUAL)))) - ); - } + $casesList = new \ProcessMaker\BusinessModel\Cases(); + $casesList->getSearchCriteriaListCases($criteria, 'ListUnassignedPeer', $search, $this->additionalClassName, $additionalColumns); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index ba1cbc5e8..39cf05952 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -3283,4 +3283,50 @@ class Cases } return $delIndex; } + /** + * This function will be return the criteria for the search filter + * + * We considered in the search criteria the custom cases list, + * the titles related to: caseTitle taskTitle processTitle and + * the case number + * @param Criteria $criteria, must be contain the initial criteria for search + * @param string $listPeer, name of the list class + * @param string $search, the parameter for search in the table + * @param string $additionalClassName, name of the className of pmtable + * @param array $additionalColumns, columns related to the custom cases list + * @throws PropelException + */ + public function getSearchCriteriaListCases(&$criteria, $listPeer ,$search, $additionalClassName = '', $additionalColumns = array() ) + { + $oTmpCriteria = ''; + //If we have additional tables configured in the custom cases list, prepare the variables for search + if (count($additionalColumns) > 0) { + require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $additionalClassName . '.php'); + $oNewCriteria = new \Criteria("workflow"); + $oTmpCriteria = $oNewCriteria->getNewCriterion(current($additionalColumns), "%" . $search . "%", \Criteria::LIKE); + + //We prepare the query related to the custom cases list + foreach (array_slice($additionalColumns, 1) as $value) { + $oTmpCriteria = $oNewCriteria->getNewCriterion($value, "%" . $search . "%", \Criteria::LIKE)->addOr($oTmpCriteria); + } + } + + if (!empty($oTmpCriteria)) { + $criteria->add( + $criteria->getNewCriterion($listPeer::APP_TITLE, '%' . $search . '%', \Criteria::LIKE)->addOr( + $criteria->getNewCriterion($listPeer::APP_TAS_TITLE, '%' . $search . '%', \Criteria::LIKE)->addOr( + $criteria->getNewCriterion($listPeer::APP_PRO_TITLE, '%' . $search . '%', \Criteria::LIKE)->addOr( + $criteria->getNewCriterion($listPeer::APP_NUMBER, $search, \Criteria::EQUAL)->addOr( + $oTmpCriteria + )))) + ); + } else { + $criteria->add( + $criteria->getNewCriterion($listPeer::APP_TITLE, '%' . $search . '%', \Criteria::LIKE)->addOr( + $criteria->getNewCriterion($listPeer::APP_TAS_TITLE, '%' . $search . '%', \Criteria::LIKE)->addOr( + $criteria->getNewCriterion($listPeer::APP_PRO_TITLE, '%' . $search . '%', \Criteria::LIKE)->addOr( + $criteria->getNewCriterion($listPeer::APP_NUMBER, $search, \Criteria::EQUAL)))) + ); + } + } }