Files
luos/rbac/engine/classes/model/Roles.php

713 lines
28 KiB
PHP
Executable File

<?php
/**
* 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(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 "));
}
}
//Added by QENNIX
function getAllRolesFilter($start, $limit, $filter='') {
//echo $start.'<<<<'.$limit;
$systemCode = 'PROCESSMAKER';
$oCriteria2 = new Criteria('rbac');
$result = Array();
$oCriteria2->addSelectColumn('COUNT(*) AS CNT');
$oCriteria2->add(RolesPeer::ROL_UID, '', Criteria::NOT_EQUAL);
$oCriteria2->add(SystemsPeer::SYS_CODE, $systemCode);
$oCriteria2->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL);
$oCriteria2->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL);
$oCriteria2->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID);
if ($filter != '') {
$oCriteria2->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE);
}
$result['COUNTER'] = $oCriteria2;
$oCriteria = new Criteria('rbac');
$oCriteria->clear();
$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(SystemsPeer::SYS_CODE, $systemCode);
$oCriteria->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL);
$oCriteria->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL);
$oCriteria->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID);
if ($filter != '') {
$oCriteria->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE);
}
$oCriteria->setOffset($start);
$oCriteria->setLimit($limit);
$result['LIST'] = $oCriteria;
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 {
$con->begin();
$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()) {
$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';
G::auditLog("UpdateRole", "Role Name: ".$rol_name." - Role ID: (".$fields['ROL_UID'].") - Role Code: ".$fields['ROL_CODE']." - 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='') {
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(RbacUsersPeer::USR_UID);
$criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME);
$criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME);
$criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME);
$criteria->add(RolesPeer::ROL_UID, "", Criteria::NOT_EQUAL);
$criteria->add(RolesPeer::ROL_UID, $ROL_UID);
$criteria->add(RbacUsersPeer::USR_STATUS, 0, Criteria::NOT_EQUAL);
$criteria->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID);
$criteria->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID);
if ($filter != ''){
$criteria->add(
$criteria->getNewCriterion(RbacUsersPeer::USR_USERNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
$criteria->getNewCriterion(RbacUsersPeer::USR_FIRSTNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
$criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE)))
);
}
$oDataset = RolesPeer::doSelectRS($criteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
return $oDataset;
} catch( exception $e ) {
throw $e;
}
}
function getAllUsers($ROL_UID, $filter='') {
try {
$c = new Criteria();
$c->addSelectColumn(RbacUsersPeer::USR_UID);
$c->add(RolesPeer::ROL_UID, $ROL_UID);
$c->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID);
$c->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID);
$result = RolesPeer::doSelectRS($c);
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next();
$a = Array();
while( $row = $result->getRow() ) {
$a[] = $row['USR_UID'];
$result->next();
}
$criteria = new Criteria();
$criteria->addSelectColumn(RbacUsersPeer::USR_UID);
$criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME);
$criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME);
$criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME);
$criteria->add(RbacUsersPeer::USR_STATUS, 1, Criteria::EQUAL);
$criteria->add(RbacUsersPeer::USR_UID, $a, Criteria::NOT_IN);
if ($filter != ''){
$criteria->add(
$criteria->getNewCriterion(RbacUsersPeer::USR_USERNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
$criteria->getNewCriterion(RbacUsersPeer::USR_FIRSTNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
$criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE)))
);
}
$oDataset = RbacUsersPeer::doSelectRS($criteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
return $oDataset;
} catch( exception $e ) {
throw $e;
}
}
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.") ");
}
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 = Array();
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