. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ require_once 'classes/model/Groupwf.php'; require_once 'classes/model/GroupUser.php'; require_once 'classes/model/Users.php'; /** * Groups - Groups class * * @package workflow.engine.ProcessMaker * @copyright 2007 COLOSA */ class Groups { /** * Get the assigned users of a group * * @param string $sGroupUID * @return array */ function getUsersOfGroup ($sGroupUID) { try { $aUsers = array (); $oCriteria = new Criteria(); $oCriteria->addJoin( UsersPeer::USR_UID, GroupUserPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( GroupUserPeer::GRP_UID, $sGroupUID ); $oCriteria->add( UsersPeer::USR_STATUS, 'ACTIVE' ); $oDataset = UsersPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aUsers[] = $aRow; $oDataset->next(); } return $aUsers; } catch (exception $oError) { throw ($oError); } } /** * Get the active groups for an user * * @param string $sUserUID * @return array */ function getActiveGroupsForAnUser ($sUserUID) { try { $oCriteria = new Criteria(); $oCriteria->addSelectColumn( GroupUserPeer::GRP_UID ); $oCriteria->addSelectColumn( GroupwfPeer::GRP_STATUS ); $oCriteria->add( GroupUserPeer::USR_UID, $sUserUID ); $oCriteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $oCriteria->addJoin( GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN ); $oDataset = GroupUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aGroups = array (); $aRow = $oDataset->getRow(); while (is_array( $aRow )) { $aGroups[] = $aRow['GRP_UID']; $oDataset->next(); $aRow = $oDataset->getRow(); } return $aGroups; } catch (exception $oError) { throw ($oError); } } /** * Set a user to group * * @param string $GrpUid, $UsrUid * @return array */ function addUserToGroup ($GrpUid, $UsrUid) { try { $oGrp = GroupUserPeer::retrieveByPk( $GrpUid, $UsrUid ); if (is_object( $oGrp ) && get_class( $oGrp ) == 'GroupUser') { return true; } else { $oGrp = new GroupUser(); $oGrp->setGrpUid( $GrpUid ); $oGrp->setUsrUid( $UsrUid ); $oGrp->Save(); } } catch (exception $oError) { throw ($oError); } } /* * Remove a user from group * @param string $GrpUid, $UsrUid * @return array */ function removeUserOfGroup ($GrpUid, $UsrUid) { $gu = new GroupUser(); $gu->remove( $GrpUid, $UsrUid ); } /** * get all groups * * @param none * @return $objects */ function getAllGroups () { try { $criteria = new Criteria(); $criteria->add( GroupwfPeer::GRP_UID, "", Criteria::NOT_EQUAL ); $con = Propel::getConnection( GroupwfPeer::DATABASE_NAME ); $objects = GroupwfPeer::doSelect( $criteria, $con ); return $objects; } catch (exception $e) { throw $e; } } /** * get all the groups from a single user * * @param $sUserUid user uid * @return an array of group objects */ function getUserGroups ($sUserUID) { try { $criteria = new Criteria(); $criteria->add( GroupwfPeer::GRP_UID, "", Criteria::NOT_EQUAL ); $criteria->add( GroupUserPeer::USR_UID, $sUserUID ); $criteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $criteria->addJoin( GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN ); $con = Propel::getConnection( GroupwfPeer::DATABASE_NAME ); $objects = GroupwfPeer::doSelect( $criteria, $con ); return $objects; } catch (exception $e) { throw $e; } } /** * Get Available Groups for a single user * * @author Qennix * @param string $sUserUid * @return object */ function getAvailableGroupsCriteria ($sUserUid, $filter = '') { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( GroupUserPeer::GRP_UID ); $oCriteria->add( GroupUserPeer::USR_UID, $sUserUid ); $oCriteria->add( GroupUserPeer::GRP_UID, '', Criteria::NOT_EQUAL ); $oDataset = GroupUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $gUIDs = array (); while ($aRow = $oDataset->getRow()) { $gUIDs[] = $aRow['GRP_UID']; $oDataset->next(); } $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( GroupwfPeer::GRP_UID ); $oCriteria->addSelectColumn( GroupwfPeer::GRP_STATUS ); $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); $oCriteria->addJoin( GroupwfPeer::GRP_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN ); $oCriteria->add( GroupwfPeer::GRP_UID, $gUIDs, Criteria::NOT_IN ); $oCriteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $oCriteria->add( ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); $oCriteria->add( ContentPeer::CON_LANG, SYS_LANG ); if ($filter != '') { $oCriteria->add( ContentPeer::CON_VALUE, '%' . $filter . '%', Criteria::LIKE ); } return $oCriteria; } catch (exception $e) { throw $e; } } /** * Get Assigned Groups for a single user * * @author Qennix * @param string $sUserUid * @return object */ function getAssignedGroupsCriteria ($sUserUid, $filter = '') { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( GroupwfPeer::GRP_UID ); $oCriteria->addSelectColumn( GroupwfPeer::GRP_STATUS ); $oCriteria->addSelectColumn( GroupwfPeer::GRP_LDAP_DN ); $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); $oCriteria->addJoin( GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN ); $oCriteria->addJoin( GroupwfPeer::GRP_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN ); $oCriteria->add( GroupUserPeer::USR_UID, $sUserUid, Criteria::EQUAL ); $oCriteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $oCriteria->add( ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); $oCriteria->add( ContentPeer::CON_LANG, SYS_LANG ); if ($filter != '') { $oCriteria->add( ContentPeer::CON_VALUE, '%' . $filter . '%', Criteria::LIKE ); } return $oCriteria; } catch (exception $e) { throw $e; } } function getGroupsForUser ($usrUid) { $criteria = $this->getAssignedGroupsCriteria( $usrUid ); $criteria->addAscendingOrderByColumn( ContentPeer::CON_VALUE ); $dataset = GroupwfPeer::doSelectRS( $criteria ); $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->next(); $groups = array (); while ($row = $dataset->getRow()) { if (! isset( $groups[$row['GRP_UID']] )) { $groups[$row['GRP_UID']] = $row; } $dataset->next(); } return $groups; } /** * Remove a user from all groups * * @param string $sUsrUid * @return void */ public function removeUserOfAllGroups ($sUserUID = '') { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( GroupUserPeer::USR_UID, $sUserUID ); GroupUserPeer::doDelete( $oCriteria ); } catch (exception $oError) { throw ($oError); } } /** * Get a criteria object of all users from group * * @param string $sGroupUID * @return array */ function getUsersGroupCriteria ($sGroupUID = '') { require_once 'classes/model/GroupUser.php'; require_once 'classes/model/Users.php'; try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( GroupUserPeer::GRP_UID ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addSelectColumn( UsersPeer::USR_USERNAME ); $oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME ); $oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME ); $oCriteria->addSelectColumn( UsersPeer::USR_EMAIL ); $oCriteria->addJoin( GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( GroupUserPeer::GRP_UID, $sGroupUID ); $oCriteria->add( UsersPeer::USR_STATUS, 'ACTIVE' ); return $oCriteria; } catch (exception $oError) { throw ($oError); } } /** * Get a criteria object of all groups from user * * @param string $sGroupUID * @return array */ function getUserGroupsCriteria ($sUserUID = '') { require_once 'classes/model/GroupUser.php'; require_once 'classes/model/Users.php'; try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addSelectColumn( GroupUserPeer::GRP_UID ); $oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME ); $oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME ); $oCriteria->addJoin( GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( GroupUserPeer::GRP_UID, $sUserUID ); $oCriteria->add( UsersPeer::USR_STATUS, 'ACTIVE' ); return $oCriteria; } catch (exception $oError) { throw ($oError); } } /** * Get the number of groups * * @param string $sGroupUid * @return integer $cnt */ function getNumberGroups ($sUserUID) { try { $allGroups = $this->getUserGroups( $sUserUID ); $cnt = 0; foreach ($allGroups as $group) { $cnt ++; } return $cnt; } catch (exception $oError) { print_r( $oError ); } } /** * Return the available users list criteria object * * @param string $sGroupUID * @return object */ function getAvailableUsersCriteria ($sGroupUID = '') { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addJoin( GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( GroupUserPeer::GRP_UID, $sGroupUID ); $oCriteria->add( UsersPeer::USR_STATUS, 'ACTIVE' ); $oDataset = UsersPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aUIDs = array (); while ($aRow = $oDataset->getRow()) { $aUIDs[] = $aRow['USR_UID']; $oDataset->next(); } $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME ); $oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME ); $oCriteria->add( UsersPeer::USR_UID, $aUIDs, Criteria::NOT_IN ); $oCriteria->add( UsersPeer::USR_STATUS, 'ACTIVE' ); return $oCriteria; } catch (exception $oError) { throw ($oError); } } /** * Verify if a user is assigned to a group * * @param $GrpUid group Uid * @param $UsrUid user Uid * @return 1/0 if it's or not assigned */ function verifyUsertoGroup ($GrpUid, $UsrUid) { try { $oGrp = GroupUserPeer::retrieveByPk( $GrpUid, $UsrUid ); if (is_object( $oGrp ) && get_class( $oGrp ) == 'GroupUser') { return 1; } else { return 0; } } catch (exception $oError) { throw ($oError); } } /** * Verify the existence of a Group * * @param $sGroupUid group Uid * @return 1/0 if exist or not */ function verifyGroup ($sGroupUID) { try { $aUsers = array (); $oCriteria = new Criteria(); //$oCriteria->addJoin(UsersPeer::USR_UID, GroupUserPeer::USR_UID, Criteria::LEFT_JOIN); $oCriteria->add( GroupwfPeer::GRP_UID, $sGroupUID ); //$oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); $oDataset = GroupwfPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRow = $oDataset->getRow(); if (is_array( $aRow )) return 1; else return 0; } catch (exception $oError) { throw ($oError); } } /** * Load all the data of a group with a search based on it uid * * @param $GrpUid group uid * @return an array of objects/false/exception object * */ public function load ($GrpUid) { try { $criteria = new Criteria(); $criteria->add( GroupwfPeer::GRP_UID, $GrpUid, Criteria::EQUAL ); $con = Propel::getConnection( GroupwfPeer::DATABASE_NAME ); $objects = GroupwfPeer::doSelect( $criteria, $con ); if (is_array( $objects ) && count( $objects ) > 0) { return $objects[0]; } else { return false; } } catch (exception $e) { throw $e; } } }