diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index eca921f8e..180ba7107 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -1897,20 +1897,20 @@ function PMFGenerateOutputDocument ($outputID, $sApplication = null, $index = nu * @label PMF Group List * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#PMFGroupList.28.29 * + * @param string | $search = null | String to search | Optional parameter. + * @param int | $start = null | Start | Optional parameter. + * @param int | $limit = null | Limit | Optional parameter. * @return array | $rows | List of groups | An array of groups * */ -function PMFGroupList () //its test was successfull +function PMFGroupList ($search = null, $start = null, $limit = null) //its test was successfull { G::LoadClass( 'wsBase' ); $ws = new wsBase(); - $result = $ws->groupList(); - $rows = Array (); - $i = 1; + $result = $ws->groupList($search, $start, $limit); + $rows = array(); if (isset( $result )) { - foreach ($result as $item) { - $rows[$i ++] = $item; - } + $rows = array_combine(range(1, count($result)), array_values($result)); } return $rows; } diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 1b92381e6..e95fc0a6c 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -229,32 +229,41 @@ class wsBase /** * get all groups * - * @param none - * @return $result will return an object + * @param null $search + * @param null $start + * @param null $limit + * @return array|stdClass */ - public function groupList () + public function groupList($search = null, $start = null, $limit = null) { try { - $result = array (); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); - $oDataset = GroupwfPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - - while ($aRow = $oDataset->getRow()) { - $oGroupwf = new Groupwf(); - $arrayGroupwf = $oGroupwf->Load( $aRow['GRP_UID'] ); - $result[] = array ('guid' => $aRow['GRP_UID'],'name' => $arrayGroupwf['GRP_TITLE'] - ); - $oDataset->next(); + $criteria = new Criteria('workflow'); + $criteria->addSelectColumn(GroupwfPeer::GRP_UID); + $criteria->addSelectColumn(GroupwfPeer::GRP_TITLE); + $criteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); + $criteria->addAscendingOrderByColumn(GroupwfPeer::GRP_TITLE); + if ($search) { + $criteria->add(GroupwfPeer::GRP_TITLE, $search, Criteria::EQUAL); + $criteria->addOr(GroupwfPeer::GRP_TITLE, $search . '%', Criteria::LIKE); + $criteria->addOr(GroupwfPeer::GRP_TITLE, '%' . $search, Criteria::LIKE); + $criteria->addOr(GroupwfPeer::GRP_TITLE, '%' . $search . '%', Criteria::LIKE); + } + if ($start) { + $criteria->setOffset($start); + } + if ($limit) { + $criteria->setLimit($limit); + } + $rs = GroupwfPeer::doSelectRS($criteria); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $result = array(); + while ($rs->next()) { + $rows = $rs->getRow(); + $result[] = array('guid' => $rows['GRP_UID'], 'name' => $rows['GRP_TITLE']); } - return $result; } catch (Exception $e) { - $result[] = array ('guid' => $e->getMessage(),'name' => $e->getMessage() - ); - + $result[] = array('guid' => $e->getMessage(), 'name' => $e->getMessage()); return $result; } }