function getAllUsersFromAnyTask ($sTasUid) { $users = array (); $c = new Criteria( 'workflow' ); $c->clearSelectColumns(); $c->addSelectColumn( TaskUserPeer::USR_UID ); $c->addSelectColumn( TaskUserPeer::TU_RELATION ); $c->add( TaskUserPeer::TAS_UID, $sTasUid ); $c->add( TaskUserPeer::TU_TYPE, 1 ); $rs = TaskUserPeer::DoSelectRs( $c ); $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $rs->next(); $row = $rs->getRow(); while (is_array( $row )) { if ($row['TU_RELATION'] == '2') { $cGrp = new Criteria( 'workflow' ); $cGrp->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $cGrp->add( GroupUserPeer::GRP_UID, $row['USR_UID'] ); $cGrp->addJoin( GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN ); $cGrp->addJoin( GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); $cGrp->add( UsersPeer::USR_STATUS, 'INACTIVE', Criteria::NOT_EQUAL ); $rsGrp = GroupUserPeer::DoSelectRs( $cGrp ); $rsGrp->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $rsGrp->next(); $rowGrp = $rsGrp->getRow(); while (is_array( $rowGrp )) { $users[$rowGrp['USR_UID']] = $rowGrp['USR_UID']; $rsGrp->next(); $rowGrp = $rsGrp->getRow(); } } else { //filter to users that is in vacation or has an inactive estatus, and others $oUser = UsersPeer::retrieveByPK( $row['USR_UID'] ); if ($oUser->getUsrStatus() == 'ACTIVE') { $users[$row['USR_UID']] = $row['USR_UID']; } else { $userUID = $this->checkReplacedByUser( $oUser ); if ($userUID != '') { $users[$userUID] = $userUID; } } } $rs->next(); $row = $rs->getRow(); } //to do: different types of sort sort( $users ); return $users; }
function getAllUsersFromAnyTask($sTasUid) { $users = array(); $c = new Criteria('workflow'); $c->clearSelectColumns(); $c->addSelectColumn(TaskUserPeer::USR_UID); $c->addSelectColumn(TaskUserPeer::TU_RELATION); $c->add(TaskUserPeer::TAS_UID, $sTasUid); $c->add(TaskUserPeer::TU_TYPE, 1); $rs = TaskUserPeer::DoSelectRs($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); while (is_array($row)) { if ($row['TU_RELATION'] == '2') { $cGrp = new Criteria('workflow'); $cGrp->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); $cGrp->add(GroupUserPeer::GRP_UID, $row['USR_UID']); $cGrp->addJoin(GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN); $cGrp->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); $cGrp->add(UsersPeer::USR_STATUS, 'ACTIVE'); $rsGrp = GroupUserPeer::DoSelectRs($cGrp); $rsGrp->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rsGrp->next(); $rowGrp = $rsGrp->getRow(); while (is_array($rowGrp)) { $users[$rowGrp['USR_UID']] = $rowGrp['USR_UID']; $rsGrp->next(); $rowGrp = $rsGrp->getRow(); } } else { //filter to users that is in vacation or has an inactive estatus, and others $oUser = UsersPeer::retrieveByPK($row['USR_UID']); if ($oUser->getUsrStatus() == 'ACTIVE') { $users[$row['USR_UID']] = $row['USR_UID']; } else { if ($oUser->getUsrStatus() == 'VACATION') { //this a litle hook for this issue,... //TODO if the user in getUsrReplacedBy() is not assignet to the same task,. will have problems,.... $UsrReplace = $oUser->getUsrReplacedBy(); if (trim($UsrReplace) != '') { //$users[$UsrReplace] = $UsrReplace; } } } } $rs->next(); $row = $rs->getRow(); } //to do: different types of sort sort($users); return $users; }