3 //require_once('import_arrays.php');
6 require_once $gfwww.'include/pre.php';
7 require_once $gfwww.'project/admin/project_admin_utils.php';
8 require_once $gfcommon.'include/Role.class.php';
9 require_once $gfcommon.'include/RoleObserver.class.php';
10 require_once $gfcommon.'include/rbac_texts.php';
13 $equivs_text_value['projectadmin']['None']='0';
14 $equivs_text_value['projectadmin']['Admin']='A';
15 $equivs_text_value['frs']['Read']='0';
16 $equivs_text_value['frs']['Write']='1';
17 $equivs_text_value['scm']['No Access']='-1';
18 $equivs_text_value['scm']['Read']='0';
19 $equivs_text_value['scm']['Write']='1';
20 $equivs_text_value['docman']['Read/Post']='0';
21 $equivs_text_value['docman']['Admin']='1';
22 $equivs_text_value['forumadmin']['None']='0';
23 $equivs_text_value['forumadmin']['Admin']='2';
24 $equivs_text_value['forum']['No Access']='-1';
25 $equivs_text_value['forum']['Read']='0';
26 $equivs_text_value['forum']['Post']='1';
27 $equivs_text_value['forum']['Admin']='2';
28 $equivs_text_value['trackeradmin']['None']='0';
29 $equivs_text_value['trackeradmin']['Admin']='2';
30 $equivs_text_value['tracker']['No Access']='-1';
31 $equivs_text_value['tracker']['Read']='0';
32 $equivs_text_value['tracker']['Tech']='1';
33 $equivs_text_value['tracker']['Tech & Admin']='2';
34 $equivs_text_value['tracker']['Admin Only']='3';
35 $equivs_text_value['pmadmin']['None']='0';
36 $equivs_text_value['pmadmin']['Admin']='2';
37 $equivs_text_value['pm']['No Access']='-1';
38 $equivs_text_value['pm']['Read']='0';
39 $equivs_text_value['pm']['Tech']='1';
40 $equivs_text_value['pm']['Tech & Admin']='2';
41 $equivs_text_value['pm']['Admin Only']='3';
44 $observer_equivs_text_value['projectpublic']['Private']=0;
45 $observer_equivs_text_value['projectpublic']['Public']=1;
46 $observer_equivs_text_value['scmpublic']['Private']=0;
47 $observer_equivs_text_value['scmpublic']['Public (PServer)']=1;
48 $observer_equivs_text_value['forumpublic']['Private']=0;
49 $observer_equivs_text_value['forumpublic']['Public']=1;
50 $observer_equivs_text_value['forumanon']['No Anonymous Posts']=0;
51 $observer_equivs_text_value['forumanon']['Allow Anonymous Posts']=1;
52 $observer_equivs_text_value['trackerpublic']['Private']=0;
53 $observer_equivs_text_value['trackerpublic']['Public']=1;
54 $observer_equivs_text_value['trackeranon']['No Anonymous Posts']=0;
55 $observer_equivs_text_value['trackeranon']['Allow Anonymous Posts']=1;
56 $observer_equivs_text_value['pmpublic']['Private']=0;
57 $observer_equivs_text_value['pmpublic']['Public']=1;
58 $observer_equivs_text_value['frspackage']['Private']=0;
59 $observer_equivs_text_value['frspackage']['Public']=1;
62 $equivs_name_value['Documentation Manager']='docman';
63 $equivs_name_value['File Release System']='frs';
64 $equivs_name_value['Forum Admin']='forumadmin';
65 $equivs_name_value['Forum:']='forum';
66 $equivs_name_value['Project Admin']='projectadmin';
67 $equivs_name_value['Tasks Admin']='pmadmin';
68 $equivs_name_value['Tasks:']='pm';
69 $equivs_name_value['Tracker Admin']='trackeradmin';
70 $equivs_name_value['Tracker:']='tracker';
71 $equivs_name_value['SCM']='scm';
74 $observer_equivs_name_value['Project']='projectpublic';
75 $observer_equivs_name_value['SCM']='scmpublic';
76 $observer_equivs_name_value['Forum:']='forumpublic';
77 $observer_equivs_name_value['Forum:AnonPost:']='forumanon';
78 $observer_equivs_name_value['Tracker:']='trackerpublic';
79 $observer_equivs_name_value['Project']='projectpublic';
80 $observer_equivs_name_value['Tracker:AnonPost:']='trackeranon';
81 $observer_equivs_name_value['Tasks:']='pmpublic';
82 $observer_equivs_name_value['Files']='frspackage';
87 global $cache_trackers;
90 //$cache_forums=array();
91 //$cache_tasks=array();
92 //$cache_trackers=array();
96 function get_role_by_name($role,$group_id){
98 $res = db_query_params('SELECT role_id
100 WHERE group_id=$1 AND role_name=$2', array($group_id, $role));
101 //TODO:Cleanup, there must be a function to catch only one result
102 while ($row=db_fetch_array($res)){
103 $role_id=$row['role_id'];
110 function check_roles(&$roles, $group_id){
111 $rolestodelete = array();
112 $res = db_query_params('SELECT role_id,role_name
114 WHERE group_id=$1', array($group_id));
116 while ($row_roles=db_fetch_array($res)){
117 $res_roles[]=array($row_roles['role_name'],$row_roles['role_id']);
119 foreach($res_roles as $nameid){
120 if(isset($roles[$nameid[0]])){
121 $roles[$nameid[0]]["role_id"]=$nameid[1];
124 $rolestodelete[]=$nameid[1];
127 return $rolestodelete;
131 function get_forum_id($forumname,$group_id,$i){
134 if(array_key_exists($forumname,$cache_forums)){
135 $cache_forums[$forumname][1]=1;
136 $forum_id = $cache_forums[$forumname];
139 $res = db_query_params('SELECT group_forum_id,forum_name
140 FROM forum_group_list WHERE group_id=$1', array($group_id));
141 while ($row=db_fetch_array($res)){
142 if ($row['forum_name']==$forumname){
143 $cache_forums[$row['forum_name']]=array($row['group_forum_id'],1);
144 $forum_id = $row['group_forum_id'];
147 $cache_forums[$row['forum_name']]=array($row['group_forum_id'],0);
158 function get_tasks_id($taskname,$group_id,$i){
161 if(array_key_exists($taskname,$cache_tasks)){
162 $cache_tasks[$taskname][1]=1;
163 $task_id = $cache_tasks[$taskname][0];
166 $res = db_query_params('SELECT group_project_id,project_name
167 FROM project_group_list WHERE group_id=$1', array($group_id));
168 while ($row=db_fetch_array($res)){
169 if ($row['project_name']==$taskname){
170 $cache_tasks[$row['project_name']]=array($row['group_project_id'],1);
171 $task_id = $row['group_project_id'];
174 $cache_forums[$row['project_name']]=array($row['group_project_id'],0);
179 //TODO:Create Task tracker
185 function get_tracker_id($trackername,$group_id,$i){
188 if(array_key_exists($trackername,$cache_trackers)){
189 $cache_trackers[$trackername][1]=1;
190 $tracker_id = $cache_trackers[$trackername][0];
193 $res = db_query_params('SELECT group_artifact_id,name
194 FROM artifact_group_list WHERE group_id=$1', array($group_id));
195 while ($row=db_fetch_array($res)){
196 if ($row['name']==$trackername){
197 $cache_trackers[$row['name']]=array($row['group_artifact_id'],1);
198 $tracker_id = $row['group_artifact_id'];
201 $cache_trackers[$row['name']]=array($row['group_artifact_id'],0);
206 if ($tracker_id==-1){
207 //TODO:Create Tracker
213 function get_frs_id($frsname, $group_id){
215 if(array_key_exists($trackername,$cache_frs)){
216 $cache_frs[$frsname][1]=1;
217 $frs_id = $cache_frs[$frsname][0];
220 $res = db_query_param('SELECT package_id,name
221 FROM frs_package WHERE group_id=$1', array($group_id));
222 while ($row=db_fetch_array($res)){
223 if ($row['name']==$frsname){
224 $cache_frs[$row['name']]=array($row['package_id'],1);
225 $frs_id = $row['package_id'];
228 $cache_frs[$row['name']]=array($row['package_id'],0);
237 function role_update($group_id, $rolename, $role_id, $data){
239 if ($role_id=='observer') {
241 $role = new RoleObserver(group_get_object($group_id));
242 if (!$role || !is_object($role)) {
243 exit_error('Error','Could Not Get RoleObserver');
244 } elseif ($role->isError()) {
245 exit_error('Error',$role->getErrorMessage());
248 if (!$role->update($data)) {
249 $feedback = $role->getErrorMessage();
251 $feedback = _('Successfully Updated Role');
257 echo "update de : ".$role_id." ".$rolename."<br>";
258 $role = new Role(group_get_object($group_id),$role_id);
259 if (!$role || !is_object($role)) {
260 exit_error('Error',_('Could Not Get Role'));
261 } elseif ($role->isError()) {
262 exit_error('Error',$role->getErrorMessage());
265 if (!$role->update($rolename,$data)) {
266 $feedback = $role->getErrorMessage();
268 $feedback = _('Successfully Updated Role');
274 //function role_create($group_id, $rolename, $data){
275 // $role = new Role(group_get_object($group_id),false);
276 // if (!$role || !is_object($role)) {
277 // exit_error('Error',_('Could Not Get Role'));
278 // } elseif ($role->isError()) {
279 // exit_error('Error',$role->getErrorMessage());
281 // echo "<br>Role added:".$rolename;/*
282 // var_dump($rolename);
284 // echo "groupidid:<br>";
285 // var_dump($group_id);
290 // $role_id=$role->create($rolename,$data);
292 // $feedback = $role->getErrorMessage();
294 // $feedback = _('Successfully Created New Role');
297 /* TODO : reactivate or get rid, depending if still of any use
298 function role_fill($roles,$group_id, $equivs_text_value,$equivs_name_value, $observer_equivs_text_value, $observer_equivs_name_value ){
299 // $debugdata=array();
300 foreach($roles as $rolename => $rights){
302 $data = array(array());
306 if($rolename=='Observer'){
308 foreach($rights as $rightname => $right){
309 if(substr($rightname, 0, 6)=='Forum:'){
310 if(substr($rightname,6, 9)=='AnonPost:'){
311 $forum_id = get_forum_id(substr($rightname, 15),$group_id,$j);
312 $data['forumanon'][$forum_id]=$observer_equivs_text_value['forumanon'][$right];
315 $forum_id = get_forum_id(substr($rightname, 6),$group_id,$j);
316 $data['forumpublic'][$forum_id]=$observer_equivs_text_value['forumpublic'][$right];
319 elseif(substr($rightname, 0, 8)=='Tracker:'){
320 if(substr($rightname,8, 9)=='AnonPost:'){
321 $tracker_id = get_tracker_id(substr($rightname, 17),$group_id, $j);
322 $data['trackeranon'][$tracker_id]=$observer_equivs_text_value['trackeranon'][$right];
325 $tracker_id = get_tracker_id(substr($rightname, 6), $group_id, $j);
326 $data['trackerpublic'][$tracker_id]=$observer_equivs_text_value['trackerpublic'][$right];
329 elseif(substr($rightname, 0, 6)=='Tasks:'){
330 $tasks_id = get_tasks_id(substr($rightname, 6),$group_id,$j);
331 $data['pmpublic'][$tasks_id]=$observer_equivs_text_value['pmpublic'][$right];
333 elseif(substr($rightname, 0, 6)=='Files:'){
334 $frs_id = get_frs_id(substr($rightname, 6),$group_id);
335 $data['frspackage'][$frs_id]=$observer_equivs_text_value['frspackage'][$right];
337 elseif($rightname!='role_id'){
338 $data[$observer_equivs_name_value[$rightname]][0]=$observer_equivs_text_value[$observer_equivs_name_value[$rightname]][$right];
342 if(array_key_exists("role_id", $rights)){
343 role_update($group_id, $rolename, $rights['role_id'], $data);
346 role_create($group_id, $rolename, $data);
348 // $debugdata[]=array($rolename,$data);
352 foreach($rights as $rightname => $right){
353 if(substr($rightname, 0, 6)=='Forum:'){
354 $forum_id = get_forum_id(substr($rightname, 6),$group_id,$i);
355 $data['forum'][(int) $forum_id]=$equivs_text_value['forum'][(string)$right];
357 elseif(substr($rightname, 0, 8)=='Tracker:'){
358 $tracker_id = get_tracker_id(substr($rightname, 8),$group_id,$i);
359 $data['tracker'][$tracker_id]=$equivs_text_value['tracker'][$right];
361 elseif(substr($rightname, 0, 6)=='Tasks:'){
362 $tasks_id = get_tasks_id(substr($rightname, 6),$group_id,$i);
363 $data['pm'][$tasks_id]=$equivs_text_value['pm'][$right];
365 elseif($rightname!='role_id'){
366 $data[$equivs_name_value[$rightname]][0]=$equivs_text_value[$equivs_name_value[$rightname]][$right];
370 if(array_key_exists("role_id", $rights)){
371 role_update($group_id, $rolename, $rights['role_id'], $data);
374 role_create($group_id,$rolename, $data);
376 // $debugdata[]=array($rolename,$data);
379 // var_dump($debugdata);
384 * Insert users into the group
385 * @param unknown_type $users 'user_name' => {'role': role_id }
387 * @param unknown_type $group_id group to insert users into
388 * @param unknown_type $check
390 function user_fill($users, $group_id, $check=False){
394 $group =& group_get_object($group_id);
395 if (!$group || !is_object($group)) {
396 exit_error('Error','Could Not Get Group');
397 } elseif ($group->isError()) {
398 exit_error('Error',$group->getErrorMessage());
401 foreach ($users as $user => $role){
402 $user_object = &user_get_object_by_name($user);
404 $feedback .= sprintf(_('Failed to find user %s'), $user);
406 $user_id = $user_object->getID();
408 //$role_id = get_role_by_name($role['role'],$group_id);
409 $role_id = $role['role'];
412 if (!$group->addUser($user,$role_id)) {
413 $feedback = $group->getErrorMessage();
415 //echo 'User added:'.$user.'<br>';
416 $feedback = _('User Added Successfully');
420 $message .= 'Need to add user: '.$user.' to group with role '. $role_id. "<br />\n";