From 6dd48d4b00a4a57460fc667ecb91e50d7122d8ad Mon Sep 17 00:00:00 2001 From: Julio Cesar Laura Date: Thu, 19 Jul 2012 11:08:49 -0400 Subject: [PATCH] BUG 8444 Remove permission PM_REPORTS, since it no longer serves any purpose SOLVED - The permission PM_REPORTS cannot be removed because many projects already used (plugins made by projects), then the permision has changed to status inactive and in new installations will be hidden in the permision administrator module --- gulliver/system/class.rbac.php | 8 +- rbac/engine/classes/model/Roles.php | 206 +++++++++--------- .../methods/roles/data_rolesPermissions.php | 4 +- 3 files changed, 113 insertions(+), 105 deletions(-) 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()){