Spaces:
Sleeping
Sleeping
| /** | |
| * Roles.php | |
| * @package rbac-classes-model | |
| * | |
| * ProcessMaker Open Source Edition | |
| * Copyright (C) 2004 - 2011 Colosa Inc. | |
| * | |
| * This program is free software: you can redistribute it and/or modify | |
| * it under the terms of the GNU Affero General Public License as | |
| * published by the Free Software Foundation, either version 3 of the | |
| * License, or (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU Affero General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Affero General Public License | |
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| * | |
| * For more information, contact Colosa Inc, 2566 Le Jeune Rd., | |
| * Coral Gables, FL, 33134, USA, or email info@colosa.com. | |
| * | |
| */ | |
| /** | |
| * @access public | |
| */ | |
| require_once 'classes/model/Permissions.php'; | |
| require_once 'classes/model/Systems.php'; | |
| require_once 'classes/model/RolesPermissions.php'; | |
| require_once 'classes/model/RbacUsers.php'; | |
| require_once 'classes/model/om/BaseRoles.php'; | |
| require_once 'classes/model/om/BaseRbacUsers.php'; | |
| require_once 'classes/model/om/BaseUsersRoles.php'; | |
| require_once 'classes/model/Content.php'; | |
| /** | |
| * Skeleton subclass for representing a row from the 'ROLES' 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 output directory. | |
| * | |
| * @package rbac-classes-model | |
| */ | |
| class Roles extends BaseRoles { | |
| public $rol_name; | |
| /** | |
| * Function load | |
| * access public | |
| */ | |
| public function load($Uid) { | |
| try { | |
| $oRow = RolesPeer::retrieveByPK($Uid); | |
| if (! is_null($oRow)) { | |
| $aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME); | |
| $this->fromArray($aFields, BasePeer::TYPE_FIELDNAME); | |
| $this->setNew(false); | |
| $this->getRolName(); | |
| $aFields['ROL_NAME'] = ($this->rol_name != '' ? $this->rol_name: $this->getRolCode()); | |
| return $aFields; | |
| } else { | |
| throw (new Exception("The '$Uid' row doesn't exist!")); | |
| } | |
| } catch( exception $oError ) { | |
| throw ($oError); | |
| } | |
| } | |
| function loadByCode($sRolCode = '') { | |
| try { | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->add(RolesPeer::ROL_CODE, $sRolCode); | |
| $oDataset = RolesPeer::doSelectRS($oCriteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $oDataset->next(); | |
| $aRow = $oDataset->getRow(); | |
| $roles = new Roles(); | |
| $roles->load($aRow['ROL_UID']); | |
| $aRow['ROL_NAME'] = $roles->getRolName(); | |
| if ($aRow['ROL_NAME'] == '') { | |
| $aRow['ROL_NAME'] = $roles->getRolCode(); | |
| } | |
| if (is_array($aRow)) { | |
| return $aRow; | |
| } else { | |
| throw (new Exception("The role '$sRolCode' doesn\'t exist!")); | |
| } | |
| } catch( exception $oError ) { | |
| throw ($oError); | |
| } | |
| } | |
| function listAllRoles($systemCode = 'PROCESSMAKER', $filter = '') { | |
| try { | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_UID); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_PARENT); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_SYSTEM); | |
| $oCriteria->addSelectColumn(SystemsPeer::SYS_CODE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_CODE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_STATUS); | |
| $oCriteria->add(RolesPeer::ROL_UID, '', Criteria::NOT_EQUAL); | |
| $oCriteria->add(RolesPeer::ROL_CODE, RBAC::PROCESSMAKER_GUEST, Criteria::NOT_EQUAL); | |
| $oCriteria->add(SystemsPeer::SYS_CODE, $systemCode); | |
| $oCriteria->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); | |
| $oCriteria->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); | |
| //Added by QENNIX Jan 21th, 2011 | |
| if ($filter != ''){ | |
| $oCriteria->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); | |
| } | |
| $oCriteria->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); | |
| return $oCriteria; | |
| } catch( exception $oError ) { | |
| throw (new Exception("Class ROLES::FATAL ERROR. Criteria with rbac Can't initialized ")); | |
| } | |
| } | |
| /** | |
| * This function get all Roles filters | |
| * We can apply page and filters | |
| * | |
| * @param integer $start | |
| * @param integer $limit | |
| * @param string $filter | |
| * | |
| * @return array | |
| */ | |
| function getAllRolesFilter($start, $limit, $filter = '') | |
| { | |
| $systemCode = 'PROCESSMAKER'; | |
| $criteriaCount = new Criteria('rbac'); | |
| $result = []; | |
| $criteriaCount->addSelectColumn('COUNT(*) AS CNT'); | |
| $criteriaCount->add(RolesPeer::ROL_UID, '', Criteria::NOT_EQUAL); | |
| $criteriaCount->add(SystemsPeer::SYS_CODE, $systemCode); | |
| $criteriaCount->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); | |
| $criteriaCount->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); | |
| $criteriaCount->add(RolesPeer::ROL_UID, ['', RBAC::PROCESSMAKER_GUEST_UID], Criteria::NOT_IN); | |
| $criteriaCount->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); | |
| if ($filter != '') { | |
| $criteriaCount->add(RolesPeer::ROL_CODE, '%' . $filter . '%', Criteria::LIKE); | |
| } | |
| $result['COUNTER'] = $criteriaCount; | |
| $criteria = new Criteria('rbac'); | |
| $criteria->clear(); | |
| $criteria->addSelectColumn(RolesPeer::ROL_UID); | |
| $criteria->addSelectColumn(RolesPeer::ROL_PARENT); | |
| $criteria->addSelectColumn(RolesPeer::ROL_SYSTEM); | |
| $criteria->addSelectColumn(SystemsPeer::SYS_CODE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_CODE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_STATUS); | |
| $criteria->add(RolesPeer::ROL_UID, ['', RBAC::PROCESSMAKER_GUEST_UID], Criteria::NOT_IN); | |
| $criteria->add(SystemsPeer::SYS_CODE, $systemCode); | |
| $criteria->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); | |
| $criteria->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); | |
| $criteria->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); | |
| if ($filter != '') { | |
| $criteria->add(RolesPeer::ROL_CODE, '%' . $filter . '%', Criteria::LIKE); | |
| } | |
| $criteria->setOffset($start); | |
| $criteria->setLimit($limit); | |
| $result['LIST'] = $criteria; | |
| return $result; | |
| } | |
| function getAllRoles($systemCode = 'PROCESSMAKER') { | |
| $c = $this->listAllRoles($systemCode); | |
| $rs = RolesPeer::DoSelectRs($c); | |
| $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $aRows = Array(); | |
| while($rs->next()) { | |
| $row = $rs->getRow(); | |
| $o = new Roles(); | |
| $o->load($row['ROL_UID']); | |
| $row['ROL_NAME'] = $o->getRolName(); | |
| if ($row['ROL_NAME'] == '') { | |
| $row['ROL_NAME'] = $o->getRolCode(); | |
| } | |
| $aRows[] = $row; | |
| } | |
| return $aRows; | |
| } | |
| function listAllPermissions($systemCode = 'PROCESSMAKER') { | |
| try { | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(PermissionsPeer::PER_UID); | |
| $oCriteria->addSelectColumn(PermissionsPeer::PER_CODE); | |
| $oCriteria->addSelectColumn(PermissionsPeer::PER_CREATE_DATE); | |
| $oCriteria->addSelectColumn(PermissionsPeer::PER_UPDATE_DATE); | |
| $oCriteria->addSelectColumn(PermissionsPeer::PER_STATUS); | |
| $oCriteria->add(PermissionsPeer::PER_CODE, substr($systemCode, 0, 3) . '_%', Criteria::LIKE); | |
| return $oCriteria; | |
| } catch( exception $oError ) { | |
| throw (new Exception("Class ROLES::FATAL ERROR. Criteria with rbac Can't initialized ")); | |
| } | |
| } | |
| function createRole($aData) { | |
| $con = Propel::getConnection(RolesPeer::DATABASE_NAME); | |
| try { | |
| $sRolCode = $aData['ROL_CODE']; | |
| $sRolSystem = $aData['ROL_SYSTEM']; | |
| $status = $fields['ROL_STATUS'] = 1 ? 'ACTIVE' : 'INACTIVE'; | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->add(RolesPeer::ROL_CODE, $sRolCode); | |
| $oCriteria->add(RolesPeer::ROL_SYSTEM, $sRolSystem); | |
| $oDataset = RolesPeer::doSelectRS($oCriteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $oDataset->next(); | |
| $aRow = $oDataset->getRow(); | |
| if (is_array($aRow)) { | |
| return $aRow; | |
| } | |
| if (!isset($aData['ROL_NAME'])) { | |
| $aData['ROL_NAME'] = ''; | |
| } | |
| $rol_name = $aData['ROL_NAME']; | |
| unset($aData['ROL_NAME']); | |
| $obj = new Roles(); | |
| $obj->fromArray($aData, BasePeer::TYPE_FIELDNAME); | |
| if ($obj->validate()) { | |
| $con->begin(); | |
| $result = $obj->save(); | |
| $con->commit(); | |
| $obj->setRolName($rol_name); | |
| G::auditLog("CreateRole", "Role Name: ". $rol_name ." - Role Code: ".$aData['ROL_CODE']." - Role Status: ".$status); | |
| } else { | |
| $e = new Exception("Failed Validation in class " . get_class($this) . "."); | |
| $e->aValidationFailures = $this->getValidationFailures(); | |
| throw ($e); | |
| } | |
| return $result; | |
| } catch( exception $e ) { | |
| $con->rollback(); | |
| throw ($e); | |
| } | |
| } | |
| public function updateRole($fields) { | |
| $con = Propel::getConnection(RolesPeer::DATABASE_NAME); | |
| try { | |
| $con->begin(); | |
| $this->load($fields['ROL_UID']); | |
| $rol_name = $fields['ROL_NAME']; | |
| unset($fields['ROL_NAME']); | |
| $this->fromArray($fields, BasePeer::TYPE_FIELDNAME); | |
| if ($this->validate()) { | |
| $result = $this->save(); | |
| $con->commit(); | |
| $this->setRolName($rol_name); | |
| $status = $fields['ROL_STATUS'] = 1 ? 'ACTIVE' : 'INACTIVE'; | |
| $rolCode = (isset($fields["ROL_CODE"]))? "- Role Code: " . $fields["ROL_CODE"] : ""; | |
| G::auditLog("UpdateRole", "Role Name: " . $rol_name . " - Role ID: (".$fields['ROL_UID'].") " . $rolCode . " - Role Status: ".$status); | |
| return $result; | |
| } else { | |
| $con->rollback(); | |
| throw (new Exception("Failed Validation in class " . get_class($this) . ".")); | |
| } | |
| } catch( exception $e ) { | |
| $con->rollback(); | |
| throw ($e); | |
| } | |
| } | |
| function removeRole($ROL_UID) { | |
| $con = Propel::getConnection(RolesPeer::DATABASE_NAME); | |
| try { | |
| $con->begin(); | |
| $this->setRolUid($ROL_UID); | |
| $rol_name = $this->load($ROL_UID); | |
| Content::removeContent('ROL_NAME', '', $this->getRolUid()); | |
| $result = $this->delete(); | |
| $con->commit(); | |
| G::auditLog("DeleteRole", "Role Name: ".$rol_name['ROL_NAME']." Role UID: (".$ROL_UID.") "); | |
| return $result; | |
| } catch( exception $e ) { | |
| $con->rollback(); | |
| throw ($e); | |
| } | |
| } | |
| function verifyNewRole($code) { | |
| $code = trim($code); | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_UID); | |
| $oCriteria->add(RolesPeer::ROL_CODE, $code); | |
| $count = RolesPeer::doCount($oCriteria); | |
| if ($count == 0) { | |
| return true; | |
| } else { | |
| return false; | |
| } | |
| } | |
| function loadById($ROL_UID) { | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_UID); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_PARENT); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_SYSTEM); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_CODE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_STATUS); | |
| $oCriteria->add(RolesPeer::ROL_UID, $ROL_UID); | |
| $result = RolesPeer::doSelectRS($oCriteria); | |
| $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $result->next(); | |
| $row = $result->getRow(); | |
| if (is_array($row)) { | |
| $o = RolesPeer::retrieveByPK($row['ROL_UID']); | |
| $row['ROL_NAME'] = $o->getRolName(); | |
| if ($row['ROL_NAME'] == '') { | |
| $row['ROL_NAME'] = $o->getRolCode(); | |
| } | |
| return $row; | |
| } else { | |
| return null; | |
| } | |
| } | |
| function getRoleCode($ROL_UID) { | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_UID); | |
| $oCriteria->addSelectColumn(RolesPeer::ROL_CODE); | |
| $oCriteria->add(RolesPeer::ROL_UID, $ROL_UID); | |
| $result = RolesPeer::doSelectRS($oCriteria); | |
| $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $result->next(); | |
| $row = $result->getRow(); | |
| $ret = $row['ROL_CODE']; | |
| return $ret; | |
| } | |
| //Added by Enrique at Feb 9th, 2011 | |
| //Gets number of users by role | |
| function getAllUsersByRole(){ | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(UsersRolesPeer::ROL_UID); | |
| $oCriteria->addSelectColumn('COUNT(*) AS CNT'); | |
| $oCriteria->addJoin(RbacUsersPeer::USR_UID,UsersRolesPeer::USR_UID,Criteria::INNER_JOIN); | |
| $oCriteria->add(RbacUsersPeer::USR_STATUS,0,Criteria::NOT_EQUAL); | |
| $oCriteria->addGroupByColumn(UsersRolesPeer::ROL_UID); | |
| $oDataset = UsersRolesPeer::doSelectRS($oCriteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $aRoles = array(); | |
| while ($oDataset->next()){ | |
| $row = $oDataset->getRow(); | |
| $aRoles[$row['ROL_UID']] = $row['CNT']; | |
| } | |
| return $aRoles; | |
| } | |
| //Added by Enrique at Feb 10th, 2011 | |
| //Gets number of users by department | |
| function getAllUsersByDepartment(){ | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->addSelectColumn(UsersPeer::DEP_UID); | |
| $oCriteria->addSelectColumn('COUNT(*) AS CNT'); | |
| $oCriteria->add(UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL); | |
| $oCriteria->addGroupByColumn(UsersPeer::DEP_UID); | |
| $oDataset = UsersPeer::doSelectRS($oCriteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $aDepts = array(); | |
| while ($oDataset->next()){ | |
| $row = $oDataset->getRow(); | |
| $aDepts[$row['DEP_UID']] = $row['CNT']; | |
| } | |
| return $aDepts; | |
| } | |
| function getRoleUsers($ROL_UID, $filter='') { | |
| throw new Exception(__METHOD__ . ': The method is deprecated'); | |
| } | |
| function getAllUsers($ROL_UID, $filter='') { | |
| throw new Exception(__METHOD__ . ': The method is deprecated'); | |
| } | |
| function assignUserToRole($aData) { | |
| /*find the system uid for this role */ | |
| require_once 'classes/model/Users.php'; | |
| $c = new Criteria(); | |
| $c->add(RolesPeer::ROL_UID, $aData['ROL_UID']); | |
| $result = RolesPeer::doSelectRS($c); | |
| $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $result->next(); | |
| $row = $result->getRow(); | |
| $sSystemId = $row['ROL_SYSTEM']; | |
| //updating the role into users table | |
| $oCriteria1 = new Criteria('workflow'); | |
| $oCriteria1->add(UsersPeer::USR_UID , $aData['USR_UID'], Criteria::EQUAL); | |
| $oCriteria2 = new Criteria('workflow'); | |
| $oCriteria2->add(UsersPeer::USR_ROLE , $row['ROL_CODE']); | |
| BasePeer::doUpdate($oCriteria1, $oCriteria2, Propel::getConnection('workflow')); | |
| //delete roles for the same System | |
| $c = new Criteria(); | |
| $c->addSelectColumn(UsersRolesPeer::USR_UID); | |
| $c->addSelectColumn(RolesPeer::ROL_UID); | |
| $c->addSelectColumn(RolesPeer::ROL_CODE); | |
| $c->addSelectColumn(RolesPeer::ROL_SYSTEM); | |
| $c->add(UsersRolesPeer::USR_UID, $aData['USR_UID']); | |
| $c->add(RolesPeer::ROL_SYSTEM, $sSystemId); | |
| $c->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID); | |
| $result = RolesPeer::doSelectRS($c); | |
| $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $result->next(); | |
| while( $row = $result->getRow() ) { | |
| $crit = new Criteria(); | |
| $crit->add(UsersRolesPeer::USR_UID, $row['USR_UID']); | |
| $crit->add(UsersRolesPeer::ROL_UID, $row['ROL_UID']); | |
| UsersRolesPeer::doDelete($crit); | |
| $result->next(); | |
| } | |
| //save the unique role for this system | |
| $oUsersRoles = new UsersRoles(); | |
| $oUsersRoles->setUsrUid($aData['USR_UID']); | |
| $oUsersRoles->setRolUid($aData['ROL_UID']); | |
| $oUsersRoles->save(); | |
| $rol = $this->load($aData['ROL_UID']); | |
| $oUsersRbac = new RbacUsers(); | |
| $user = $oUsersRbac->load($aData['USR_UID']); | |
| G::auditLog("AssignUserToRole", "Assign user ".$user['USR_USERNAME']." (".$aData['USR_UID'].") to Role ".$rol['ROL_NAME']." (".$aData['ROL_UID'].") "); | |
| } | |
| function deleteUserRole($ROL_UID, $USR_UID) { | |
| $crit = new Criteria(); | |
| $crit->add(UsersRolesPeer::USR_UID, $USR_UID); | |
| if ($ROL_UID != '%') { | |
| $crit->add(UsersRolesPeer::ROL_UID, $ROL_UID); | |
| } | |
| UsersRolesPeer::doDelete($crit); | |
| $rol = $this->load($ROL_UID); | |
| $oUsersRbac = new RbacUsers(); | |
| $user = $oUsersRbac->load($USR_UID); | |
| G::auditLog("DeleteUserToRole", "Delete user ".$user['USR_USERNAME']." (".$USR_UID.") to Role ".$rol['ROL_NAME']." (".$ROL_UID.") "); | |
| } | |
| /** | |
| * @param $roleUid | |
| * @return ResultSet | |
| * @throws Exception | |
| */ | |
| function getRolePermissionsByPerUid($roleUid){ | |
| try { | |
| $criteria = new Criteria(); | |
| $criteria->addSelectColumn(RolesPermissionsPeer::ROL_UID); | |
| $criteria->addSelectColumn(RolesPermissionsPeer::PER_UID); | |
| $criteria->add(RolesPermissionsPeer::PER_UID, $roleUid); | |
| $oDataset = RolesPeer::doSelectRS($criteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| return $oDataset; | |
| } catch( exception $e ) { | |
| throw $e; | |
| } | |
| } | |
| /** | |
| * Checks a permission is assigned to a Role | |
| * @param $ROL_UID | |
| * @param $PER_UID | |
| * @return bool | |
| * @throws Exception | |
| */ | |
| function getPermissionAssignedRole($ROL_UID, $PER_UID) | |
| { | |
| try { | |
| $criteria = new Criteria(); | |
| $criteria->addSelectColumn(RolesPermissionsPeer::ROL_UID); | |
| $criteria->addSelectColumn(RolesPermissionsPeer::PER_UID); | |
| $criteria->add(RolesPermissionsPeer::ROL_UID, $ROL_UID, Criteria::EQUAL); | |
| $criteria->add(RolesPermissionsPeer::PER_UID, $PER_UID, Criteria::EQUAL); | |
| $oDataset = RolesPermissionsPeer::doSelectRS($criteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $oDataset->next(); | |
| if($aRowRP = $oDataset->getRow()){ | |
| return true; | |
| } | |
| return false; | |
| } catch (exception $e) { | |
| throw $e; | |
| } | |
| } | |
| function getRolePermissions($ROL_UID, $filter='', $status=null) { | |
| try { | |
| $criteria = new Criteria(); | |
| $criteria->addSelectColumn(RolesPeer::ROL_UID); | |
| $criteria->addSelectColumn(RolesPeer::ROL_PARENT); | |
| $criteria->addSelectColumn(RolesPeer::ROL_SYSTEM); | |
| $criteria->addSelectColumn(RolesPeer::ROL_CODE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE); | |
| $criteria->addSelectColumn(RolesPeer::ROL_STATUS); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_UID); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_CODE); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_CREATE_DATE); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_UPDATE_DATE); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_STATUS); | |
| $criteria->add(RolesPeer::ROL_UID, "", Criteria::NOT_EQUAL); | |
| $criteria->add(RolesPeer::ROL_UID, $ROL_UID); | |
| $criteria->addJoin(RolesPeer::ROL_UID, RolesPermissionsPeer::ROL_UID); | |
| $criteria->addJoin(RolesPermissionsPeer::PER_UID, PermissionsPeer::PER_UID); | |
| if ($filter != '') { | |
| $criteria->add(PermissionsPeer::PER_CODE, '%'.$filter.'%',Criteria::LIKE); | |
| } | |
| if (!is_null($status) && ($status == 1 || $status == 0)) { | |
| $criteria->add(PermissionsPeer::PER_STATUS, $status); | |
| } | |
| $oDataset = RolesPeer::doSelectRS($criteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| return $oDataset; | |
| } catch( exception $e ) { | |
| throw $e; | |
| } | |
| } | |
| function getAllPermissions($ROL_UID, $PER_SYSTEM = "", $filter='', $status=null) { | |
| try { | |
| $c = new Criteria(); | |
| $c->addSelectColumn(PermissionsPeer::PER_UID); | |
| $c->add(RolesPeer::ROL_UID, $ROL_UID); | |
| $c->addJoin(RolesPeer::ROL_UID, RolesPermissionsPeer::ROL_UID); | |
| $c->addJoin(RolesPermissionsPeer::PER_UID, PermissionsPeer::PER_UID); | |
| $result = PermissionsPeer::doSelectRS($c); | |
| $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| $result->next(); | |
| $a = [RBAC::PM_GUEST_CASE_UID]; | |
| while( $row = $result->getRow() ) { | |
| $a[] = $row['PER_UID']; | |
| $result->next(); | |
| } | |
| $criteria = new Criteria(); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_UID); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_CODE); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_CREATE_DATE); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_UPDATE_DATE); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_STATUS); | |
| $criteria->addSelectColumn(PermissionsPeer::PER_SYSTEM); | |
| $criteria->addSelectColumn(SystemsPeer::SYS_CODE); | |
| $criteria->add(PermissionsPeer::PER_UID, $a, Criteria::NOT_IN); | |
| if ($PER_SYSTEM != "") { | |
| $criteria->add(SystemsPeer::SYS_CODE, $PER_SYSTEM); | |
| } | |
| $criteria->addJoin(PermissionsPeer::PER_SYSTEM, SystemsPeer::SYS_UID); | |
| if ($filter != ''){ | |
| $criteria->add(PermissionsPeer::PER_CODE, '%'.$filter.'%',Criteria::LIKE); | |
| } | |
| if (!is_null($status) && ($status == 1 || $status == 0)) { | |
| $criteria->add(PermissionsPeer::PER_STATUS, $status); | |
| } | |
| $oDataset = PermissionsPeer::doSelectRS($criteria); | |
| $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); | |
| return $oDataset; | |
| } catch( exception $e ) { | |
| throw $e; | |
| } | |
| } | |
| function assignPermissionRole($sData) { | |
| $o = new RolesPermissions(); | |
| $o->setPerUid($sData['PER_UID']); | |
| $o->setRolUid($sData['ROL_UID']); | |
| if (isset($sData['PER_NAME'])) { | |
| $o->setPermissionName($sData['PER_NAME']); | |
| } | |
| $permission = $o->getPermissionName($sData['PER_UID']); | |
| $role = $this->load($sData['ROL_UID']); | |
| $o->save(); | |
| G::auditLog("AddPermissionToRole", "Add Permission ".$permission." (".$sData['PER_UID'].") to Role ".$role['ROL_NAME']." (".$sData['ROL_UID'].") "); | |
| } | |
| function deletePermissionRole($ROL_UID, $PER_UID) { | |
| $crit = new Criteria(); | |
| $crit->add(RolesPermissionsPeer::ROL_UID, $ROL_UID); | |
| $crit->add(RolesPermissionsPeer::PER_UID, $PER_UID); | |
| RolesPermissionsPeer::doDelete($crit); | |
| $o = new RolesPermissions(); | |
| $o->setPerUid($PER_UID); | |
| $permission = $o->getPermissionName($PER_UID); | |
| $role = $this->load($ROL_UID); | |
| G::auditLog("DeletePermissionToRole", "Delete Permission ".$permission." (".$PER_UID.") from Role ".$role['ROL_NAME']." (".$ROL_UID.") "); | |
| } | |
| function numUsersWithRole($ROL_UID) { | |
| $criteria = new Criteria(); | |
| $criteria->addSelectColumn(RbacUsersPeer::USR_UID); | |
| $criteria->add(RolesPeer::ROL_UID, "", Criteria::NOT_EQUAL); | |
| $criteria->add(RolesPeer::ROL_UID, $ROL_UID); | |
| $criteria->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID); | |
| $criteria->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID); | |
| return RolesPeer::doCount($criteria); | |
| } | |
| function verifyByCode($sRolCode = '') { | |
| try { | |
| $oCriteria = new Criteria('rbac'); | |
| $oCriteria->add(RolesPeer::ROL_CODE, $sRolCode); | |
| $oDataset = RolesPeer::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); | |
| } | |
| } | |
| public function getRolName() { | |
| if ($this->getRolUid() == '') { | |
| throw (new Exception("Error in getRolName, the ROL_UID can't be blank")); | |
| } | |
| $lang = defined('SYS_LANG') ? SYS_LANG : 'en'; | |
| $this->rol_name = Content::load('ROL_NAME', '', $this->getRolUid(), $lang); | |
| return $this->rol_name; | |
| } | |
| public function setRolName($v) { | |
| if ($this->getRolUid() == '') { | |
| throw (new Exception("Error in setProTitle, the PRO_UID can't be blank")); | |
| } | |
| // Since the native PHP type for this column is string, | |
| // we will cast the input to a string (if it is not). | |
| if ($v !== null && ! is_string($v)) { | |
| $v = (string)$v; | |
| } | |
| if ($this->rol_name !== $v || $v === '') { | |
| $this->rol_name = $v; | |
| $lang = defined('SYS_LANG') ? SYS_LANG : 'en'; | |
| $res = Content::addContent('ROL_NAME', '', $this->getRolUid(), $lang, $this->rol_name); | |
| } | |
| } | |
| } // Roles | |