. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ //require_once 'classes/model/om/BaseGroupUser.php'; //require_once 'classes/model/Content.php'; //require_once 'classes/model/Users.php'; //require_once 'classes/model/Groupwf.php'; /** * Skeleton subclass for representing a row from the 'GROUP_USER' table. * * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as * long as it does not already exist in the input directory. * * @package workflow.engine.classes.model */ class GroupUser extends BaseGroupUser { /** * Create the application document registry * * @param array $aData * @return string */ public function create ($aData) { $oConnection = Propel::getConnection( GroupUserPeer::DATABASE_NAME ); try { $oGroupUser = new GroupUser(); $oGroupUser->fromArray( $aData, BasePeer::TYPE_FIELDNAME ); if ($oGroupUser->validate()) { $oConnection->begin(); $iResult = $oGroupUser->save(); $oConnection->commit(); return $iResult; } else { $sMessage = ''; $aValidationFailures = $oGroupUser->getValidationFailures(); foreach ($aValidationFailures as $oValidationFailure) { $sMessage .= $oValidationFailure->getMessage() . '
'; } throw (new Exception( 'The registry cannot be created!
' . $sMessage )); } } catch (Exception $oError) { $oConnection->rollback(); throw ($oError); } } /** * Remove the application document registry * * @param string $sGrpUid * @param string $sUserUid * @return string */ public function remove ($sGrpUid, $sUserUid) { $oConnection = Propel::getConnection( GroupUserPeer::DATABASE_NAME ); try { $oGroupUser = GroupUserPeer::retrieveByPK( $sGrpUid, $sUserUid ); if (! is_null( $oGroupUser )) { $oConnection->begin(); $iResult = $oGroupUser->delete(); $oConnection->commit(); $oGrpwf = new Groupwf(); $grpName = $oGrpwf->loadByGroupUid($sGrpUid); $oUsr = new Users(); $usrName = $oUsr->load($sUserUid); G::auditLog("AssignUserToGroup", "Remove user: ".$usrName['USR_USERNAME'] ." (".$sUserUid.") from group ".$grpName['CON_VALUE']." (".$sGrpUid.") "); return $iResult; } else { throw (new Exception( 'This row doesn\'t exist!' )); } } catch (Exception $oError) { $oConnection->rollback(); throw ($oError); } } public function getCountAllUsersByGroup () { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( GroupUserPeer::GRP_UID ); $oCriteria->addSelectColumn( 'COUNT(' . GroupUserPeer::GRP_UID . ') AS CNT' ); $oCriteria->addJoin( GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::INNER_JOIN ); $oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL ); $oCriteria->addGroupByColumn( GroupUserPeer::GRP_UID ); $oDataset = GroupUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $aRows = Array (); while ($oDataset->next()) { $row = $oDataset->getRow(); $aRows[$row['GRP_UID']] = $row['CNT']; } return $aRows; } public function getAllUserGroups ($usrUid) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( GroupUserPeer::USR_UID, $usrUid ); //$oCriteria->addGroupByColumn(GroupUserPeer::GRP_UID); $oDataset = GroupUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $rows = Array (); while ($oDataset->next()) { $row = $oDataset->getRow(); $g = new Groupwf(); try { $grpRow = $g->load( $row['GRP_UID'] ); $row = array_merge( $row, $grpRow ); $rows[] = $row; } catch (Exception $e) { continue; } } return $rows; } /** * Get all users assigned to Group * * @param string $gprUid * @return array $rows */ public function getAllGroupUser ($gprUid) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( GroupUserPeer::GRP_UID, $gprUid ); $oDataset = GroupUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $rows = Array (); while ($oDataset->next()) { $row = $oDataset->getRow(); $g = new Groupwf(); try { $grpRow = $g->load( $row['GRP_UID'] ); $row = array_merge( $row, $grpRow ); $rows[] = $row; } catch (Exception $e) { continue; } } return $rows; } /** * This function check if the array have at least one UID valid * Ex. we need to check the data for self service value based assignment * * @param array $toValidate , this array contains uid of user or uid of groups * @param array $statusToCheck , this array must be have a valid status for users or groups, ACTIVE INACTIVE VACATION * @param string $tableReview , if you need to check uid for users or groups * @return boolean $rows */ public function groupsUsersAvailable($toValidate, $statusToCheck = array('ACTIVE'), $tableReview = 'users') { //Define the batching value for the MySQL error related to max_allowed_packet $batching = 25000; $array = array_chunk($toValidate, $batching); foreach ($array as $key => $uidValues) { $oCriteria = new Criteria('workflow'); switch ($tableReview) { case 'groups': $oCriteria->add(GroupwfPeer::GRP_UID, $uidValues, Criteria::IN); $oCriteria->add(GroupwfPeer::GRP_STATUS, $statusToCheck, Criteria::IN); $oCriteria->setLimit(1); $rsCriteria = GroupwfPeer::doSelectRS($oCriteria); break; default: $oCriteria->add(UsersPeer::USR_UID, $uidValues, Criteria::IN); $oCriteria->add(UsersPeer::USR_STATUS, $statusToCheck, Criteria::IN); $oCriteria->setLimit(1); $rsCriteria = UsersPeer::doSelectRS($oCriteria); break; } $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { return true; } } return false; } }