利用者:Mindrones/Python/Bf-extensions/Gforge Roles

提供: wiki
移動先: 案内検索
project admin frs scm docman forum admin forum tracker admin tracker pm admin pm
Admin A 1 1 1 2 2 2 2 2 2
Senior Developer 0 1 1 1 2 2 2 2 2 2
Junior Developer 0 0 1 0 0 1 0 1 0 1
Doc Writer 0 0 0 1 0 1 0 0 0 0
Support Tech 0 0 0 1 0 1 0 2 0 0
'projectadmin'=>array('0','A'),
'frs'=>array('0','1'),
'scm'=>array('-1','0','1'),
'docman'=>array('0','1'),
'forumadmin'=>array('0','2'),
'forum'=>array('-1','0','1','2'),
'trackeradmin'=>array('0','2'),
'tracker'=>array('-1','0','1','2','3'),
'pmadmin'=>array('0','2'),
'pm'=>array('-1','0','1','2','3'));

From:

[fusionforge] / branches / Branch_4_5 / gforge / common / include / Role.class      
ViewVC logotype
View of /branches/Branch_4_5/gforge/common/include/Role.class

Parent Directory Parent Directory | Revision Log Revision Log
Revision 4590 - (download) (as text) (annotate)
Sun Aug 28 14:51:51 2005 UTC (5 years, 3 months ago)
File size: 21699 byte(s)

This commit was manufactured by cvs2svn to create branch 'Branch_4_5'.

<?php
/**
 * Role Class
 *
 * Copyright 2004 (c) GForge LLC
 *
 * @version   $Id$
 * @author Tim Perdue tim@gforge.org
 * @date 2004-03-16
 *
 * This file is part of GForge.
 *
 * GForge is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * GForge 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GForge; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */


class Role extends Error {

    var $data_array;
    var $setting_array;
    var $role_vals;
    var $Group;
    var $role_values=array(
    'projectadmin'=>array('0','A'),
    'frs'=>array('0','1'),
    'scm'=>array('-1','0','1'),
    'docman'=>array('0','1'),
    'forumadmin'=>array('0','2'),
    'forum'=>array('-1','0','1','2'),
    'trackeradmin'=>array('0','2'),
    'tracker'=>array('-1','0','1','2','3'),
    'pmadmin'=>array('0','2'),
    'pm'=>array('-1','0','1','2','3'));

    var $defaults=array(
        'Admin'=>array( 'projectadmin'=>'A', 'frs'=>'1', 'scm'=>'1', 'docman'=>'1', 'forumadmin'=>'2', 'forum'=>'2', 'trackeradmin'=>'2', 'tracker'=>'2', 'pmadmin'=>'2', 'pm'=>'2' ),
        'Senior Developer'=>array( 'projectadmin'=>'0', 'frs'=>'1', 'scm'=>'1', 'docman'=>'1', 'forumadmin'=>'2', 'forum'=>'2', 'trackeradmin'=>'2', 'tracker'=>'2', 'pmadmin'=>'2', 'pm'=>'2' ),
        'Junior Developer'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'1', 'docman'=>'0', 'forumadmin'=>'0', 'forum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'1', 'pmadmin'=>'0', 'pm'=>'1' ),
        'Doc Writer'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'0', 'docman'=>'1', 'forumadmin'=>'0', 'forum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'0', 'pmadmin'=>'0', 'pm'=>'0' ),
        'Support Tech'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'0', 'docman'=>'1', 'forumadmin'=>'0', 'forum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'2', 'pmadmin'=>'0', 'pm'=>'0' )
    );
    
    /**
     *  Role($group,$id) - CONSTRUCTOR.
     *
     *  @param  object     The Group object.
     *  @param  int     The role_id.
     */
    function Role ($Group,$role_id=false) {
        $this->Error();
        if (!$Group || !is_object($Group) || $Group->isError()) {
            $this->setError('Role::'.$Group->getErrorMessage());
            return false;
        }
        $this->Group =& $Group;
        if (!$role_id) {
            //setting up an empty object
            //probably going to call create()
            return true;
        }
        return $this->fetchData($role_id);
    }

    /**
     *    getID - get the ID of this role.
     *
     *    @return    integer    The ID Number.
     */
    function getID() {
        return $this->data_array['role_id'];
    }

    /**
     *    getName - get the name of this role.
     *
     *    @return    string    The name of this role.
     */
    function getName() {
        return $this->data_array['role_name'];
    }

    /**
     *    create - create a new role in the database.
     *
     *    @param    string    The name of the role.
     *    @param    array    A multi-dimensional array of data in this format: $data['section_name']['ref_id']=$val
     *    @return integer    The id on success or false on failure.
     */
    function create($role_name,$data) {
        $perm =& $this->Group->getPermission( session_get_user() );
        if (!$perm || !is_object($perm) || $perm->isError() || !$perm->isAdmin()) {
            $this->setPermissionDeniedError();
            return false;
        }

        db_begin();
        $sql="INSERT INTO role (group_id,role_name) 
            VALUES ('".$this->Group->getID()."','".htmlspecialchars($role_name)."')";
//echo "\n<br>$sql";
        $res=db_query($sql);
        if (!$res) {
            $this->setError('create::'.db_error());
            db_rollback();
            return false;
        }
        $role_id=db_insertid($res,'role','role_id');
        if (!$role_id) {
            $this->setError('create::db_insertid::'.db_error());
            db_rollback();
            return false;
        }

        $arr1 = array_keys($data);
        for ($i=0; $i<count($arr1); $i++) {    
        //    array_values($Report->adjust_days)
            $arr2 = array_keys($data[$arr1[$i]]);
            for ($j=0; $j<count($arr2); $j++) {
                $usection_name=$arr1[$i];
                $uref_id=$arr2[$j];
                $uvalue=$data[$arr1[$i]][$arr2[$j]];
                if (!$uref_id) {
                    $uref_id=0;
                }
                if (!$uvalue) {
                    $uvalue=0;
                }
                $sql="INSERT INTO role_setting (role_id,section_name,ref_id,value) 
                    values ('$role_id','$usection_name', '$uref_id','$uvalue')";
//echo "\n<br>$sql";
                $res=db_query($sql);
                if (!$res) {
                    $this->setError('create::insertsetting::'.db_error());
                    db_rollback();
                    return false;
                }
            }
        }
        db_commit();
        return $role_id;
    }

    function createDefault($name) {
//echo '<html><body><pre>';
//echo $name;
//print_r($this->defaults);
        $arr =& $this->defaults[$name];
        $keys = array_keys($arr);
        $data = array();

//print_r($keys);
//print_r($arr);
//db_rollback();
//exit;
        for ($i=0; $i<count($keys); $i++) {

            if ($keys[$i] == 'forum') {
                $res=db_query("SELECT group_forum_id 
                    FROM forum_group_list 
                    WHERE group_id='".$this->Group->getID()."'");
                if (!$res) {
                    $this->setError('Error: Forum'.db_error());
                    return false;
                }
                for ($j=0; $j<db_numrows($res); $j++) {
                    $data[$keys[$i]][db_result($res,$j,'group_forum_id')]= $arr[$keys[$i]];
                }
            } elseif ($keys[$i] == 'pm') {
                $res=db_query("SELECT group_project_id 
                    FROM project_group_list 
                    WHERE group_id='".$this->Group->getID()."'");
                if (!$res) {
                    $this->setError('Error: TaskMgr'.db_error());
                    return false;
                }
                for ($j=0; $j<db_numrows($res); $j++) {
                    $data[$keys[$i]][db_result($res,$j,'group_project_id')]= $arr[$keys[$i]];
                }
            } elseif ($keys[$i] == 'tracker') {
                $res=db_query("SELECT group_artifact_id 
                    FROM artifact_group_list 
                    WHERE group_id='".$this->Group->getID()."'");
                if (!$res) {
                    $this->setError('Error: Tracker'.db_error());
                    return false;
                }
                for ($j=0; $j<db_numrows($res); $j++) {
                    $data[$keys[$i]][db_result($res,$j,'group_artifact_id')]= $arr[$keys[$i]];
                }
            } else {
                $data[$keys[$i]][0]= $arr[$keys[$i]];
            }
        }
//print_r($data);
//db_rollback();
//exit;
        return $this->create($name,$data);
    }

    /**
     *  fetchData - May need to refresh database fields.
     *
     *  If an update occurred and you need to access the updated info.
     *
     *  @return boolean success;
     */
    function fetchData($role_id) {
        unset($this->data_array);
        unset($this->setting_array);
        $res=db_query("SELECT * FROM role WHERE role_id='$role_id'");
        if (!$res || db_numrows($res) < 1) {
            $this->setError('Role::fetchData()::'.db_error());
            return false;
        }
        $this->data_array =& db_fetch_array($res);
        $res=db_query("SELECT * FROM role_setting WHERE role_id='$role_id'");
        if (!$res) {
            $this->setError('Role::fetchData()::'.db_error());
            return false;
        }
        $this->setting_array=array();
        while ($arr =& db_fetch_array($res)) {
            $this->setting_array[$arr['section_name']][$arr['ref_id']] = $arr['value'];
        }
        return true;
    }

    /**
     *  &getRoleVals - get all the values and language text strings for this section.
     *
     *  @return array    Assoc array of values for this section.
     */
    function &getRoleVals($section) {
        global $Language,$role_vals;

        //
        //    Optimization - save array so it is only built once per page view
        //
        if (!isset($role_vals[$section])) {

            for ($i=0; $i<count($this->role_values[$section]); $i++) {
                //
                //    Build an associative array of these key values + localized description
                //
                $role_vals[$section][$this->role_values[$section][$i]]=$Language->getText('rbac_vals',"$section".$this->role_values[$section][$i]);
            }
        }
        return $role_vals[$section];
    }

    /**
     *    getVal - get a value out of the array of settings for this role.
     *
     *    @param    string    The name of the role.
     *    @param    integer    The ref_id (ex: group_artifact_id, group_forum_id) for this item.
     *    @return integer    The value of this item.
     */
    function getVal($section,$ref_id) {
        global $role_default_array;
        if (!$ref_id) {
            $ref_id=0;
        }
        return $this->setting_array[$section][$ref_id];
    }

    /**
     *    update - update a new in the database.
     *
     *    @param    string    The name of the role.
     *    @param    array    A multi-dimensional array of data in this format: $data['section_name']['ref_id']=$val
     *    @return    boolean    True on success or false on failure.
     */
    function update($role_name,$data) {
        global $SYS;
        //
        //    Cannot update role_id=1
        //
        if ($this->getID() == 1) {
            $this->setError('Cannot Update Default Role');
            return false;
        }
        $perm =& $this->Group->getPermission( session_get_user() );
        if (!$perm || !is_object($perm) || $perm->isError() || !$perm->isAdmin()) {
            $this->setPermissionDeniedError();
            return false;
        }

        db_begin();

        if ($this->getName() != stripslashes($role_name)) {
            $sql="UPDATE role
                SET role_name='".htmlspecialchars($role_name)."'
                WHERE group_id='".$this->Group->getID()."'
                AND role_id='".$this->getID()."'";
//echo "\n<br>$sql";
            $res=db_query($sql);
            if (!$res || db_affected_rows($res) < 1) {
                $this->setError('update::name::'.db_error());
                db_rollback();
                return false;
            }
        }
////$data['section_name']['ref_id']=$val
        $arr1 = array_keys($data);
        for ($i=0; $i<count($arr1); $i++) {    
        //    array_values($Report->adjust_days)
            $arr2 = array_keys($data[$arr1[$i]]);
            for ($j=0; $j<count($arr2); $j++) {
                $usection_name=$arr1[$i];
                $uref_id=$arr2[$j];
                $uvalue=$data[$usection_name][$uref_id];
                if (!$uref_id) {
                    $uref_id=0;
                }
                if (!$uvalue) {
                    $uvalue=0;
                }
                //
                //    See if this setting changed. If so, then update it
                //
//                if ($this->getVal($usection_name,$uref_id) != $uvalue) {
                    $sql="UPDATE role_setting 
                        SET value='$uvalue' 
                        WHERE role_id='".$this->getID()."' 
                        AND section_name='$usection_name'
                        AND ref_id='$uref_id'";
//echo "\n<br>$sql";
                    $res=db_query($sql);
                    if (!$res  || db_affected_rows($res) < 1) {
                        $sql="INSERT INTO role_setting (role_id,section_name,ref_id,value) 
                        values ('".$this->getID()."','$usection_name', '$uref_id','$uvalue')";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::rolesettinginsert::'.db_error());
                            db_rollback();
                            return false;
                        }
                    }
                    if ($usection_name == 'frs') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'scm') {
                        //$update_usergroup=true;

                        //iterate all users with this role
                        $res=db_query("SELECT user_id
                            FROM user_group 
                            WHERE role_id='".$this->getID()."'");
                        for ($z=0; $z<db_numrows($res); $z++) {

                            //TODO - Shell should be separate flag
                            //  If user acquired admin access to CVS,
                            //  one to be given normal shell on CVS machine,
                            //  else - restricted.
                            //
                            $cvs_flags=$data['scm'][0];
                            $sql="UPDATE user_group
                                SET cvs_flags=".$cvs_flags." 
                                WHERE user_id=".db_result($res,$z,'user_id')." AND role_id=".$this->getID();
                            //echo '<h1>'.$data['scm'][0].'::'.$sql.'</h1>';
                            $res2=db_query($sql);
                            if (!$res2) {
                                $this->setError('update::scm::'.db_error());
                                db_rollback();
                                return false;
                            }
                            // I have doubt the following is usefull
                            // This is probably buggy if used
                            if ($cvs_flags>1) {
                                if (!$SYS->sysUserSetAttribute($user_id,"debGforgeCvsShell","/bin/bash")) {
                                    $this->setError($SYS->getErrorMessage());
                                    db_rollback();
                                    return false;
                                }
                            } else {
                                if (!$SYS->sysUserSetAttribute($user_id,"debGforgeCvsShell","/bin/cvssh")) {
                                    $this->setError($SYS->getErrorMessage());
                                    db_rollback();
                                    return false;
                                }
                            }

                            //
                            //  If user acquired at least commit access to CVS,
                            //  one to be promoted to CVS group, else, demoted.
                            //
                            if ($uvalue>0) {
                                if (!$SYS->sysGroupAddUser($this->Group->getID(),db_result($res,$z,'user_id'),1)) {
                                    $this->setError($SYS->getErrorMessage());
                                    db_rollback();
                                    return false;
                                }
                            } else {
                                if (!$SYS->sysGroupRemoveUser($this->Group->getID(),db_result($res,$z,'user_id'),1)) {
                                    $this->setError($SYS->getErrorMessage());
                                    db_rollback();
                                    return false;
                                }
                            }


                        }
//
//    If we decide to use a "RBAC Group" to define template roles
//    The next 3 items will have to be modified to remap IDs for each project
//

                    //
                    //    Forum
                    //
                    } elseif ($usection_name == 'forum') {
                        $sql="UPDATE forum_perm
                            SET perm_level='$uvalue'
                            WHERE
                            group_forum_id='$uref_id'
                            AND user_id IN (SELECT ug.user_id FROM
                            user_group ug, forum_group_list fgl, forum_perm fp
                            WHERE ug.role_id='".$this->getID()."'
                            AND ug.group_id=fgl.group_id AND 
                            fgl.group_forum_id='$uref_id'
                            AND ug.user_id=fp.user_id
                            AND fp.group_forum_id=fgl.group_forum_id)";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::forum::'.db_error());
                            db_rollback();
                            return false;
                        }
                    } elseif ($usection_name == 'pm') {
                        $sql="UPDATE project_perm
                            SET perm_level='$uvalue'
                            WHERE
                            group_project_id='$uref_id'
                            AND user_id IN (SELECT ug.user_id FROM
                            user_group ug, project_group_list pgl, project_perm pp
                            WHERE ug.role_id='".$this->getID()."'
                            AND ug.group_id=pgl.group_id AND
                            pgl.group_project_id='$uref_id'
                            AND ug.user_id=pp.user_id
                            AND pp.group_project_id=pgl.group_project_id)";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::pm::'.db_error());
                            db_rollback();
                            return false;
                        }
                    } elseif ($usection_name == 'tracker') {
                        $sql="UPDATE artifact_perm
                            SET perm_level='$uvalue'
                            WHERE
                            group_artifact_id='$uref_id'
                            AND user_id IN (SELECT ug.user_id FROM
                            user_group ug, artifact_group_list agl, artifact_perm ap 
                            WHERE ug.role_id='".$this->getID()."'
                            AND ug.group_id=agl.group_id AND
                            agl.group_artifact_id='$uref_id'
                            AND ug.user_id=ap.user_id
                            AND agl.group_artifact_id=ap.group_artifact_id)";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::tracker::'.db_error());
                            db_rollback();
                            return false;
                        }

                    } elseif ($usection_name == 'docman') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'forumadmin') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'trackeradmin') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'projectadmin') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'pmadmin') {
                        $update_usergroup=true;
                    }
    //            }
            }
        }
//        if ($update_usergroup) {
            $sql="UPDATE user_group 
                SET
                admin_flags='".$data['projectadmin'][0]."',
                forum_flags='".$data['forumadmin'][0]."',
                project_flags='".$data['pmadmin'][0]."',
                doc_flags='".$data['docman'][0]."',
                cvs_flags='".$data['scm'][0]."',
                release_flags='".$data['frs'][0]."',
                artifact_flags='".$data['trackeradmin'][0]."'
                WHERE role_id='".$this->getID()."'";
//echo "\n<br>$sql";
            $res=db_query($sql);
            if (!$res) {
                $this->setError('update::usergroup::'.db_error());
                db_rollback();
                return false;
            }

//        }
        db_commit();
        $this->fetchData($this->getID());
        return true;
    }

    function setUser($user_id) {
        global $SYS;
        $perm =& $this->Group->getPermission( session_get_user() );
        if (!$perm || !is_object($perm) || $perm->isError() || !$perm->isAdmin()) {
            $this->setPermissionDeniedError();
            return false;
        }

        db_begin();

        //
        //    See if role is actually changing
        //
        $res=db_query("SELECT role_id FROM user_group 
            WHERE user_id='$user_id' 
            AND group_id='".$this->Group->getID()."'");
        $old_roleid=db_result($res,0,0);
        if ($this->getID() == $old_roleid) {
            db_commit();
            return true;
        }
        //
        //    Get the old role so we can compare new values to old
        //
        $oldrole= new Role($this->Group,$old_roleid);
        if (!$oldrole || !is_object($oldrole) || $oldrole->isError()) {
            $this->setError($oldrole->getErrorMessage());
            db_rollback();
            return false;
        }

        //
        //    Iterate each setting to see if it's changing
        //    If not, no sense updating it
        //
        $arr1 = array_keys($this->setting_array);
        for ($i=0; $i<count($arr1); $i++) {    
        //    array_values($Report->adjust_days)
            $arr2 = array_keys($this->setting_array[$arr1[$i]]);
            for ($j=0; $j<count($arr2); $j++) {
                $usection_name=$arr1[$i];
                $uref_id=$arr2[$j];
                $uvalue=$this->setting_array[$usection_name][$uref_id];
                if (!$uref_id) {
                    $uref_id=0;
                }
                if (!$uvalue) {
                    $uvalue=0;
                }
                //
                //    See if this setting changed. If so, then update it
                //
    //            if (($this->getVal($usection_name,$uref_id) != $oldrole->getVal($usection_name,$uref_id)) || ($old_roleid == 1)) {
                    if ($usection_name == 'frs') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'scm') {
                        //TODO - Shell should be separate flag
                        //  If user acquired admin access to CVS,
                        //  one to be given normal shell on CVS machine,
                        //  else - restricted.
                        //
                        $cvs_flags=$this->getVal('scm',0);
                        $sql="UPDATE user_group
                            SET cvs_flags=".$cvs_flags." 
                            WHERE user_id=".$user_id."
                            AND group_id='".$this->Group->getID()."'";
                        //echo '<h1>'.$cvs_flags.'::'.$sql.'</h1>';
                        $res2=db_query($sql);
                        if (!$res2) {
                            $this->setError('update::scm::'.db_error());
                            db_rollback();
                            return false;
                        }
                        // I have doubt the following is usefull
                        // This is probably buggy if used
                        if ($cvs_flags>1) {
                            if (!$SYS->sysUserSetAttribute($user_id,"debGforgeCvsShell","/bin/bash")) {
                                $this->setError($SYS->getErrorMessage());
                                db_rollback();
                                return false;
                            }
                        } else {
                            if (!$SYS->sysUserSetAttribute($user_id,"debGforgeCvsShell","/bin/cvssh")) {
                                $this->setError($SYS->getErrorMessage());
                                db_rollback();
                                return false;
                            }
                        }

                        //
                        //  If user acquired at least commit access to CVS,
                        //  one to be promoted to CVS group, else, demoted.
                        //  When we add the user we also check he has a shell as a group member
                        //  When we remove we only check for SCM (cvs_only=1)
                        //
                        if ($uvalue>0) {
//echo "<h3>Role::setUser SYS->sysGroupAddUser(".$this->Group->getID().",$user_id,1)</h3>";
                            if (!$SYS->sysGroupAddUser($this->Group->getID(),$user_id,0)) {
                                $this->setError($SYS->getErrorMessage());
                                db_rollback();
                                return false;
                            }
                        } else {
//echo "<h3>Role::setUser SYS->sysGroupRemoveUser(".$this->Group->getID().",$user_id,1)</h3>";
                            if (!$SYS->sysGroupRemoveUser($this->Group->getID(),$user_id,1)) {
                                $this->setError($SYS->getErrorMessage());
                                db_rollback();
                                return false;
                            }
                        }

//
//    If we decide to use a "RBAC Group" to define template roles
//    The next 3 items will have to be modified to remap IDs for each project
//

                    //
                    //    Forum
                    //
                    } elseif ($usection_name == 'forum') {
                        $sql="UPDATE forum_perm
                            SET perm_level='$uvalue'
                            WHERE
                            group_forum_id='$uref_id'
                            AND user_id='$user_id'";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::forum::'.db_error());
                            db_rollback();
                            return false;
                        }
                    } elseif ($usection_name == 'pm') {
                        $sql="UPDATE project_perm
                            SET perm_level='$uvalue'
                            WHERE
                            group_project_id='$uref_id'
                            AND user_id='$user_id'";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::pm::'.db_error());
                            db_rollback();
                            return false;
                        }
                    } elseif ($usection_name == 'tracker') {
                        $sql="UPDATE artifact_perm
                            SET perm_level='$uvalue'
                            WHERE
                            group_artifact_id='$uref_id'
                            AND user_id='$user_id'";
//echo "\n<br>$sql";
                        $res=db_query($sql);
                        if (!$res) {
                            $this->setError('update::tracker::'.db_error());
                            db_rollback();
                            return false;
                        }

                    } elseif ($usection_name == 'docman') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'forumadmin') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'trackeradmin') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'projectadmin') {
                        $update_usergroup=true;
                    } elseif ($usection_name == 'pmadmin') {
                        $update_usergroup=true;
                    }
    //            }
            }
        }
    //    if ($update_usergroup) {
            $sql="UPDATE user_group 
                SET
                admin_flags='".$this->getVal('projectadmin',0)."',
                forum_flags='".$this->getVal('forumadmin',0)."',
                project_flags='".$this->getVal('pmadmin',0)."',
                doc_flags='".$this->getVal('docman',0)."',
                cvs_flags='".$this->getVal('scm',0)."',
                release_flags='".$this->getVal('frs',0)."',
                artifact_flags='".$this->getVal('trackeradmin',0)."',
                role_id='".$this->getID()."'
                WHERE 
                user_id='".$user_id."'
                AND group_id='".$this->Group->getID()."'";
//echo "\n<br>$sql";
            $res=db_query($sql);
            if (!$res) {
                $this->setError('update::usergroup::'.db_error());
                db_rollback();
                return false;
            }

    //    }
        db_commit();
        return true;

    }

}

?>

root@fusionforge.org
    ViewVC Help
Powered by ViewVC 1.0.0