diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index dc1c12052..9c4885016 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -1149,34 +1149,23 @@ class processMap { $aUsers = array(); $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(GroupwfPeer::GRP_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); - $oCriteria->add(GroupwfPeer::GRP_UID, $aUIDS1, Criteria::NOT_IN); - //$oCriteria->add(GroupwfPeer::GRP_UID, '', Criteria::NOT_EQUAL); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); + $groups = new Groupwf(); + $start = ''; + $limit = ''; + $filter = ''; + $result = $groups->getAllGroup($start,$limit,$filter); $c = 0; - while ($aRow = $oDataset->getRow()) { + foreach ($result as $results) { $c++; $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['GRP_UID']); + $oCriteria->add(GroupUserPeer::GRP_UID, $results ['GRP_UID']); $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset2->next(); $aRow2 = $oDataset2->getRow(); - $aUsers [] = array('LABEL' => $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); - $oDataset->next(); - } + $aUsers [] = array ('LABEL' => $results ['GRP_TITLE'] .' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $results ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); + } $sDelimiter = DBAdapter::getStringDelimiter (); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(UsersPeer::USR_UID); diff --git a/workflow/engine/classes/model/Groupwf.php b/workflow/engine/classes/model/Groupwf.php index 5c8116768..0e3fa69ed 100755 --- a/workflow/engine/classes/model/Groupwf.php +++ b/workflow/engine/classes/model/Groupwf.php @@ -313,6 +313,64 @@ class Groupwf extends BaseGroupwf { return $result; } + function getAllGroup($start=null, $limit=null, $search=null) + { + require_once PATH_RBAC . "model/RbacUsers.php"; + require_once 'classes/model/TaskUser.php'; + require_once 'classes/model/GroupUser.php'; + + $totalCount = 0; + $criteria = new Criteria('workflow'); + $criteria->addSelectColumn(GroupwfPeer::GRP_UID); + $criteria->addSelectColumn(GroupwfPeer::GRP_STATUS); + $criteria->addSelectColumn(GroupwfPeer::GRP_UX); + $criteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); + $oDataset = GroupwfPeer::doSelectRS ( $criteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $processes = Array(); + $uids=array(); + + while( $oDataset->next() ) { + $groups[] = $oDataset->getRow(); + $uids[] = $groups[sizeof($groups)-1]['GRP_UID']; + } + + // for labels of groups + $groupDetails = Array(); + $c = new Criteria('workflow'); + $c->add ( ContentPeer::CON_LANG, defined('SYS_LANG')?SYS_LANG:'en', Criteria::EQUAL ); + $c->add ( ContentPeer::CON_ID, $uids, Criteria::IN ); + + $dt = ContentPeer::doSelectRS ($c); + $dt->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while( $dt->next() ) { + $row = $dt->getRow(); + $groupDetails[$row['CON_ID']] [$row['CON_CATEGORY']] = $row['CON_VALUE']; + } + + // foreach all groups + + foreach( $groups as $group ) { + $grpTitle = isset($groupDetails[$group['GRP_UID']]) && isset($groupDetails[$group['GRP_UID']]['GRP_TITLE']) ? $groupDetails[$group['GRP_UID']]['GRP_TITLE'] : ''; + if ( trim($grpTitle) == '') { // if not, then load the record to generate content for current language + $grpData = $this->load($group['GRP_UID']); + $grpTitle = $grpData['GRP_TITLE']; + } + + //filtering by $processName + if( isset($search) && $search != '' && stripos($grpTitle, $search) === false){ + continue; + } + + $group['GRP_TITLE'] = $grpTitle; + + $aGroups[] = $group; + } + + return $aGroups; + } + function filterGroup($filter,$start,$limit) { require_once 'classes/model/Groupwf.php'; diff --git a/workflow/engine/methods/groups/groups_Ajax.php b/workflow/engine/methods/groups/groups_Ajax.php index e99849765..c44722bdd 100755 --- a/workflow/engine/methods/groups/groups_Ajax.php +++ b/workflow/engine/methods/groups/groups_Ajax.php @@ -99,7 +99,6 @@ switch ($_POST['action']) require_once 'classes/model/TaskUser.php'; require_once 'classes/model/GroupUser.php'; G::LoadClass('configuration'); - $co = new Configurations(); $config = $co->getConfiguration('groupList', 'pageSize','',$_SESSION['USER_LOGGED']); $env = $co->getConfiguration('ENVIRONMENT_SETTINGS', ''); @@ -107,35 +106,7 @@ switch ($_POST['action']) $start = isset($_REQUEST['start']) ? $_REQUEST['start'] : 0; $limit = isset($_REQUEST['limit']) ? $_REQUEST['limit'] : $limit_size; $filter = isset($_REQUEST['textFilter']) ? $_REQUEST['textFilter'] : ''; - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addJoin(GroupwfPeer::GRP_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN); - $oCriteria->add(ContentPeer::CON_CATEGORY,'GRP_TITLE'); - $oCriteria->add(ContentPeer::CON_LANG,SYS_LANG); - if ($filter != ''){ - $oCriteria->add(ContentPeer::CON_VALUE, '%'.$filter.'%', Criteria::LIKE); - } - $totalRows = GroupwfPeer::doCount($oCriteria); - $oCriteria = new Criteria('workflow'); - - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_STATUS); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UX); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); - $oCriteria->addAsColumn('GRP_TASKS', 0); - $oCriteria->addAsColumn('GRP_USERS', 0); - $oCriteria->addJoin(GroupwfPeer::GRP_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN); - $oCriteria->add(ContentPeer::CON_CATEGORY,'GRP_TITLE'); - $oCriteria->add(ContentPeer::CON_LANG,SYS_LANG); - if ($filter != ''){ - $oCriteria->add(ContentPeer::CON_VALUE, '%'.$filter.'%', Criteria::LIKE); - } - $oCriteria->setOffset($start); - $oCriteria->setLimit($limit); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); global $RBAC; $tasks = new TaskUser(); @@ -147,16 +118,15 @@ switch ($_POST['action']) require_once PATH_CONTROLLERS . 'adminProxy.php'; $uxList = adminProxy::getUxTypesList(); - $arrData = Array(); - while ($oDataset->next()){ - $row = $oDataset->getRow(); - $row['GRP_TASKS'] = isset($aTask[$row['GRP_UID']]) ? $aTask[$row['GRP_UID']] : 0; - $row['GRP_USERS'] = isset($aMembers[$row['GRP_UID']]) ? $aMembers[$row['GRP_UID']] : 0; - $group = GroupwfPeer::retrieveByPK($row['GRP_UID']); - $row['CON_VALUE'] = $group->getGrpTitle(); - $row['GRP_UX'] = isset($uxList[$row['GRP_UX']]) ? $uxList[$row['GRP_UX']] : $uxList['NORMAL']; - - $arrData[] = $row; + $groups = new Groupwf(); + $result = $groups->getAllGroup($start,$limit,$filter); + $totalRows = 0; + foreach ($result as $results) { + $totalRows ++; + $results['CON_VALUE'] = $results['GRP_TITLE']; + $results['GRP_TASKS'] = isset($aTask[$results['GRP_UID']]) ? $aTask[$results['GRP_UID']] : 0; + $results['GRP_USERS'] = isset($aMembers[$results['GRP_UID']]) ? $aMembers[$results['GRP_UID']] : 0; + $arrData[] = $results; } echo '{success: true, groups: '.G::json_encode($arrData).', total_groups: '.$totalRows.'}';