diff --git a/gulliver/system/class.rbac.php b/gulliver/system/class.rbac.php index 86fb39f3c..42c128e1d 100755 --- a/gulliver/system/class.rbac.php +++ b/gulliver/system/class.rbac.php @@ -738,8 +738,8 @@ class RBAC * @param string $ROL_UID * @return $this->rolesObj->getRolePermissions */ - function getRolePermissions($ROL_UID, $filter=''){ - return $this->rolesObj->getRolePermissions($ROL_UID,$filter); + function getRolePermissions($ROL_UID, $filter='', $status=null){ + return $this->rolesObj->getRolePermissions($ROL_UID, $filter, $status); } /** @@ -752,8 +752,8 @@ class RBAC * @param string $PER_SYSTEM * @return $this->rolesObj->getAllPermissions */ - function getAllPermissions($ROL_UID,$PER_SYSTEM="",$filter=''){ - return $this->rolesObj->getAllPermissions($ROL_UID,$PER_SYSTEM,$filter); + function getAllPermissions($ROL_UID, $PER_SYSTEM="", $filter='', $status=null){ + return $this->rolesObj->getAllPermissions($ROL_UID, $PER_SYSTEM, $filter, $status); } /** diff --git a/rbac/engine/classes/model/Roles.php b/rbac/engine/classes/model/Roles.php index 75ca3835e..629224ce5 100755 --- a/rbac/engine/classes/model/Roles.php +++ b/rbac/engine/classes/model/Roles.php @@ -2,10 +2,10 @@ /** * 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 @@ -15,13 +15,13 @@ * 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 . - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * + * */ /** * @access public @@ -48,7 +48,7 @@ require_once 'classes/model/Content.php'; * @package rbac-classes-model */ class Roles extends BaseRoles { - + public $rol_name; /** @@ -63,10 +63,10 @@ class Roles extends BaseRoles { $aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME); $this->fromArray($aFields, BasePeer::TYPE_FIELDNAME); $this->setNew(false); - + $this->getRolName(); $aFields['ROL_NAME'] = $this->rol_name; - + return $aFields; } else { throw (new Exception("The '$Uid' row doesn't exist!")); @@ -75,7 +75,7 @@ class Roles extends BaseRoles { throw ($oError); } } - + function loadByCode($sRolCode = '') { try { $oCriteria = new Criteria('rbac'); @@ -93,10 +93,10 @@ class Roles extends BaseRoles { throw ($oError); } } - + function listAllRoles($systemCode = 'PROCESSMAKER', $filter = '') { try { - + $oCriteria = new Criteria('rbac'); $oCriteria->addSelectColumn(RolesPeer::ROL_UID); $oCriteria->addSelectColumn(RolesPeer::ROL_PARENT); @@ -112,24 +112,24 @@ class Roles extends BaseRoles { $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->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 + + //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); @@ -137,7 +137,7 @@ class Roles extends BaseRoles { $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); + $oCriteria2->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); } $result['COUNTER'] = $oCriteria2; $oCriteria = new Criteria('rbac'); @@ -155,28 +155,28 @@ class Roles extends BaseRoles { $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->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(); @@ -188,7 +188,7 @@ class Roles extends BaseRoles { return $aRows; } - + function listAllPermissions($systemCode = 'PROCESSMAKER') { try { $oCriteria = new Criteria('rbac'); @@ -198,14 +198,14 @@ class Roles extends BaseRoles { $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 { @@ -222,18 +222,18 @@ class Roles extends BaseRoles { if (is_array($aRow)) { return $aRow; } - + $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); - + } else { $e = new Exception("Failed Validation in class " . get_class($this) . "."); $e->aValidationFailures = $this->getValidationFailures(); @@ -245,7 +245,7 @@ class Roles extends BaseRoles { throw ($e); } } - + public function updateRole($fields) { $con = Propel::getConnection(RolesPeer::DATABASE_NAME); try { @@ -253,12 +253,12 @@ class Roles extends BaseRoles { $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); return $result; } else { @@ -270,7 +270,7 @@ class Roles extends BaseRoles { throw ($e); } } - + function removeRole($ROL_UID) { $con = Propel::getConnection(RolesPeer::DATABASE_NAME); try { @@ -278,7 +278,7 @@ class Roles extends BaseRoles { $this->setRolUid($ROL_UID); Content::removeContent('ROL_NAME', '', $this->getRolUid()); $result = $this->delete(); - + $con->commit(); return $result; } catch( exception $e ) { @@ -286,23 +286,23 @@ class Roles extends BaseRoles { 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); @@ -312,11 +312,11 @@ class Roles extends BaseRoles { $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']); @@ -326,22 +326,22 @@ class Roles extends BaseRoles { 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(){ @@ -360,7 +360,7 @@ class Roles extends BaseRoles { } return $aRoles; } - + //Added by Enrique at Feb 10th, 2011 //Gets number of users by department function getAllUsersByDepartment(){ @@ -378,7 +378,7 @@ class Roles extends BaseRoles { } return $aDepts; } - + function getRoleUsers($ROL_UID, $filter='') { try { $criteria = new Criteria(); @@ -395,12 +395,12 @@ class Roles extends BaseRoles { $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( @@ -408,16 +408,16 @@ class Roles extends BaseRoles { $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(); @@ -425,26 +425,26 @@ class Roles extends BaseRoles { $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( @@ -452,7 +452,7 @@ class Roles extends BaseRoles { $criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE))) ); } - + $oDataset = RbacUsersPeer::doSelectRS($criteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); return $oDataset; @@ -460,7 +460,7 @@ class Roles extends BaseRoles { throw $e; } } - + function assignUserToRole($aData) { /*find the system uid for this role */ require_once 'classes/model/Users.php'; @@ -471,15 +471,15 @@ class Roles extends BaseRoles { $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 + + //delete roles for the same System $c = new Criteria(); $c->addSelectColumn(UsersRolesPeer::USR_UID); $c->addSelectColumn(RolesPeer::ROL_UID); @@ -491,7 +491,7 @@ class Roles extends BaseRoles { $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']); @@ -499,26 +499,26 @@ class Roles extends BaseRoles { UsersRolesPeer::doDelete($crit); $result->next(); } - - //save the unique role for this system + + //save the unique role for this system $oUsersRoles = new UsersRoles(); $oUsersRoles->setUsrUid($aData['USR_UID']); $oUsersRoles->setRolUid($aData['ROL_UID']); $oUsersRoles->save(); - + } - + 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); } - - function getRolePermissions($ROL_UID, $filter='') { + + function getRolePermissions($ROL_UID, $filter='', $status=null) { try { $criteria = new Criteria(); $criteria->addSelectColumn(RolesPeer::ROL_UID); @@ -537,38 +537,42 @@ class Roles extends BaseRoles { $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 != ''){ + + 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='') { + + 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); @@ -582,11 +586,15 @@ class Roles extends BaseRoles { $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; @@ -594,21 +602,21 @@ class Roles extends BaseRoles { throw $e; } } - + function assignPermissionRole($sData) { $o = new RolesPermissions(); $o->setPerUid($sData['PER_UID']); $o->setRolUid($sData['ROL_UID']); $o->save(); } - + 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); } - + function numUsersWithRole($ROL_UID) { $criteria = new Criteria(); $criteria->addSelectColumn(RbacUsersPeer::USR_UID); @@ -616,10 +624,10 @@ class Roles extends BaseRoles { $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'); @@ -637,7 +645,7 @@ class Roles extends BaseRoles { throw ($oError); } } - + public function getRolName() { if ($this->getRolUid() == '') { throw (new Exception("Error in getRolName, the ROL_UID can't be blank")); @@ -646,7 +654,7 @@ class Roles extends BaseRoles { $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")); @@ -656,12 +664,12 @@ class Roles extends BaseRoles { 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 diff --git a/workflow/engine/methods/roles/data_rolesPermissions.php b/workflow/engine/methods/roles/data_rolesPermissions.php index ad63f66e6..c56df0461 100755 --- a/workflow/engine/methods/roles/data_rolesPermissions.php +++ b/workflow/engine/methods/roles/data_rolesPermissions.php @@ -35,8 +35,8 @@ if ($RBAC->permissionsObj->loadByCode('PM_CANCELCASE') === false) { $RBAC->permissionsObj->create(array('PER_CODE' => 'PM_CANCELCASE', 'PER_CREATE_DATE' => date('Y-m-d H:i:s'))); } -if ($TYPE_DATA=='list') $oDataset = $RBAC->getRolePermissions($ROL_UID,$filter); -if ($TYPE_DATA=='show') $oDataset = $RBAC->getAllPermissions($ROL_UID,$RBAC->sSystem,$filter); +if ($TYPE_DATA=='list') $oDataset = $RBAC->getRolePermissions($ROL_UID, $filter, 1); +if ($TYPE_DATA=='show') $oDataset = $RBAC->getAllPermissions($ROL_UID, $RBAC->sSystem, $filter, 1); $rows = Array(); while($oDataset->next()){