[evolvis-commits] r15155: Use PL/ pgSQL function from PHP to migrate RBAC permissions on the fly
mirabilos at evolvis.org
mirabilos at evolvis.org
Mon Feb 28 23:47:01 CET 2011
Author: mirabilos
Date: 2011-02-28 23:47:01 +0100 (Mon, 28 Feb 2011)
New Revision: 15155
Modified:
trunk/gforge_base/evolvisforge-5.1/gforge/common/include/RBAC.php
Log:
Use PL/pgSQL function from PHP to migrate RBAC permissions on the fly
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/include/RBAC.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/include/RBAC.php 2011-02-28 22:46:59 UTC (rev 15154)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/include/RBAC.php 2011-02-28 22:47:01 UTC (rev 15155)
@@ -109,120 +109,59 @@
}
$this->perms_array=array();
+ $tohandle = array () ;
+ $gid = $this->data_array['group_id'] ;
foreach ($this->setting_array as $oldsection => $t) {
switch ($oldsection) {
case 'projectadmin':
- $newsection = 'project_admin' ;
+ $tohandle[] = array ('project_admin', $gid) ;
if ($this->data_array['group_id'] == 1 && $t[0] == 'A') {
- $this->perms_array['forge_admin'][-1] = 1 ;
+ $tohandle[] = array ('forge_admin', -1) ;
}
if ($this->data_array['group_id'] == forge_get_config ('news_group') && $t[0] == 'A') {
- $this->perms_array['approve_news'][-1] = 1 ;
+ $tohandle[] = array ('forge_admin', -1) ;
}
if ($this->data_array['group_id'] == forge_get_config ('stats_group') && $t[0] == 'A') {
- $this->perms_array['forge_stats'][-1] = 2 ;
+ $tohandle[] = array ('forge_stats', -1) ;
}
break ;
case 'trackeradmin':
- $newsection = 'tracker_admin' ;
+ $tohandle[] = array ('tracker_admin', $gid) ;
break ;
case 'pmadmin':
- $newsection = 'pm_admin' ;
+ $tohandle[] = array ('pm_admin', $gid) ;
break ;
case 'forumadmin':
- $newsection = 'forum_admin' ;
+ $tohandle[] = array ('forum_admin', $gid) ;
break ;
case 'newtracker':
- $newsection = 'new_tracker' ;
+ $tohandle[] = array ('new_tracker', $gid) ;
break ;
case 'newpm':
- $newsection = 'new_pm' ;
+ $tohandle[] = array ('new_pm', $gid) ;
break ;
case 'newforum':
- $newsection = 'new_forum' ;
+ $tohandle[] = array ('new_forum', $gid) ;
break ;
-
- default:
- $newsection = $oldsection ;
- }
-
- foreach ($t as $oldreference => $oldvalue) {
- $newvalue = 0 ;
- $newreference = $oldreference ;
- switch ($newsection) {
- case 'project_admin':
- $newreference = $this->Group->getID() ;
- switch ($oldvalue) {
- case '0': $newvalue = 0 ; break ;
- case 'A': $newvalue = 1 ; break ;
- }
- break;
- case 'tracker_admin':
- case 'pm_admin':
- case 'forum_admin':
- $newreference = $this->Group->getID() ;
- switch ($oldvalue) {
- case '0': $newvalue = 0 ; break ;
- case '2': $newvalue = 1 ; break ;
- }
- break;
-
- case 'tracker':
- case 'new_tracker':
- case 'pm':
- case 'new_pm':
- switch ($oldvalue) {
- case '-1': $newvalue = 0 ; break ;
- case '0': $newvalue = 1 ; break ;
- case '1': $newvalue = 3 ; break ;
- case '2': $newvalue = 7 ; break ;
- case '3': $newvalue = 5 ; break ;
- }
- break ;
-
- case 'docman':
- $newreference = $this->Group->getID() ;
- switch ($oldvalue) {
- case '0': $newvalue = 1 ; break ;
- case '1': $newvalue = 4 ; break ;
- }
+ default:
+ foreach ($t as $oldreference => $oldvalue) {
+ $tohandle[] = array ($oldsection, $oldreference) ;
break ;
-
- case 'frs':
- $newreference = $this->Group->getID() ;
- switch ($oldvalue) {
- case '0': $newvalue = 1 ; break ;
- case '1': $newvalue = 3 ; break ;
- }
- break ;
-
- case 'scm':
- $newreference = $this->Group->getID() ;
- switch ($oldvalue) {
- case '-1': $newvalue = 0 ; break ;
- case '0': $newvalue = 1 ; break ;
- case '1': $newvalue = 2 ; break ;
- }
- break ;
-
- case 'forum':
- case 'new_forum':
- switch ($oldvalue) {
- case '-1': $newvalue = 0 ; break ;
- case '0': $newvalue = 2 ; break ;
- case '1': $newvalue = 3 ; break ;
- case '2': $newvalue = 4 ; break ;
- }
- break ;
-
- default:
- $newvalue = $oldvalue ;
- $newreference = $oldreference ;
}
+ }
+ }
- $this->perms_array[$newsection][$newreference] = $newvalue ;
+ foreach ($tohandle as $t) {
+ $nsec = $t[0] ;
+ $nref = $t[1] ;
+
+ $res = db_query_params ('SELECT pfo_rbac_permissions_from_old($1,$2,$3)',
+ array ($role_id, $nsec, $nref)) ;
+ if ($res) {
+ $arr =& db_fetch_array($res) ;
+ $this->perms_array[$nsec][$nref] = $arr[0] ;
}
}
}
More information about the evolvis-commits
mailing list