'docman'=>array('0','1'),
'forumadmin'=>array('0','2'),
'forum'=>array('-1','0','1','2'),
+ 'newforum'=>array('-1','0','1','2'),
'trackeradmin'=>array('0','2'),
'tracker'=>array('-1','0','1','2','3'),
+ 'newtracker'=>array('-1','0','1','2','3'),
'pmadmin'=>array('0','2'),
'pm'=>array('-1','0','1','2','3'),
+ 'newpm'=>array('-1','0','1','2','3'),
'webcal'=>array('0','1','2'));
var $defaults;
-
/**
* Role($group,$id) - CONSTRUCTOR.
*
$this->defaults=$GLOBALS['default_roles'];
} else {
$this->defaults=array(
- 'Admin'=>array( 'projectadmin'=>'A', 'frs'=>'1', 'scm'=>'1', 'docman'=>'1', 'forumadmin'=>'2', 'forum'=>'2', 'trackeradmin'=>'2', 'tracker'=>'2', 'pmadmin'=>'2', 'pm'=>'2', 'webcal'=>'1' ),
- 'Senior Developer'=>array( 'projectadmin'=>'0', 'frs'=>'1', 'scm'=>'1', 'docman'=>'1', 'forumadmin'=>'2', 'forum'=>'2', 'trackeradmin'=>'2', 'tracker'=>'2', 'pmadmin'=>'2', 'pm'=>'2', 'webcal'=>'2' ),
- 'Junior Developer'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'1', 'docman'=>'0', 'forumadmin'=>'0', 'forum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'1', 'pmadmin'=>'0', 'pm'=>'1', 'webcal'=>'2' ),
- 'Doc Writer'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'0', 'docman'=>'1', 'forumadmin'=>'0', 'forum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'0', 'pmadmin'=>'0', 'pm'=>'0' , 'webcal'=>'2'),
- 'Support Tech'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'0', 'docman'=>'1', 'forumadmin'=>'0', 'forum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'2', 'pmadmin'=>'0', 'pm'=>'0' , 'webcal'=>'2')
+ 'Admin'=>array( 'projectadmin'=>'A', 'frs'=>'1', 'scm'=>'1', 'docman'=>'1', 'forumadmin'=>'2', 'forum'=>'2', 'newforum'=>'2', 'trackeradmin'=>'2', 'tracker'=>'2', 'newtracker'=>'2', 'pmadmin'=>'2', 'pm'=>'2', 'newpm'=>'2', 'webcal'=>'1' ),
+ 'Senior Developer'=>array( 'projectadmin'=>'0', 'frs'=>'1', 'scm'=>'1', 'docman'=>'1', 'forumadmin'=>'2', 'forum'=>'2', 'newforum'=>'2', 'trackeradmin'=>'2', 'tracker'=>'2', 'newtracker'=>'2', 'pmadmin'=>'2', 'pm'=>'2', 'newpm'=>'2', 'webcal'=>'2' ),
+ 'Junior Developer'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'1', 'docman'=>'0', 'forumadmin'=>'0', 'forum'=>'1', 'newforum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'1', 'newtracker'=>'1', 'pmadmin'=>'0', 'pm'=>'1', 'newpm'=>'1', 'webcal'=>'2' ),
+ 'Doc Writer'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'0', 'docman'=>'1', 'forumadmin'=>'0', 'forum'=>'1', 'newforum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'0', 'newtracker'=>'0', 'pmadmin'=>'0', 'pm'=>'0' , 'newpm'=>'0' , 'webcal'=>'2'),
+ 'Support Tech'=>array( 'projectadmin'=>'0', 'frs'=>'0', 'scm'=>'0', 'docman'=>'1', 'forumadmin'=>'0', 'forum'=>'1', 'newforum'=>'1', 'trackeradmin'=>'0', 'tracker'=>'2', 'newtracker'=>'2', 'pmadmin'=>'0', 'pm'=>'0' , 'newpm'=>'0' , 'webcal'=>'2')
);
}
return true;
}
+ function normalizeData($role_id) {
+ db_begin () ;
+ $this->fetchData ($role_id) ;
+
+ $new_sa = array () ;
+
+ // Add missing settings
+ // ...project-wide settings
+ $arr = array ('projectadmin', 'frs', 'scm', 'docman', 'forumadmin', 'trackeradmin', 'newtracker', 'pmadmin', 'newpm', 'webcal') ;
+ foreach ($arr as $section) {
+ if (array_key_exists ($section, $this->setting_array)) {
+ $new_sa[$section][0] = $this->setting_array[$section][0] ;
+ } else {
+ $new_sa[$section][0] = 0 ;
+ }
+ }
+
+ // ...tracker-related settings
+ $new_sa['tracker'] = array () ;
+ $res = db_query_params ('SELECT group_artifact_id FROM artifact_group_list WHERE group_id=$1',
+ array ($this->Group->getID())) ;
+ if (!$res) {
+ $this->setError('Error: Tracker '.db_error());
+ return false;
+ }
+ for ($j=0; $j<db_numrows($res); $j++) {
+ $tid = db_result ($res,$j,'group_artifact_id') ;
+ if (array_key_exists ('tracker', $this->setting_array)
+ && array_key_exists ($tid, $this->setting_array['tracker']) ) {
+ $new_sa[$section][$tid] = $this->setting_array[$section][$tid] ;
+ } else {
+ $new_sa[$section][$tid] = $new_sa['newtracker'] ;
+ }
+ }
+
+ // ...forum-related settings
+ $new_sa['forum'] = array () ;
+ $res = db_query_params ('SELECT group_forum_id FROM forum_group_list WHERE group_id=$1',
+ array ($this->Group->getID())) ;
+ if (!$res) {
+ $this->setError('Error: Forum '.db_error());
+ return false;
+ }
+ for ($j=0; $j<db_numrows($res); $j++) {
+ $tid = db_result ($res,$j,'group_forum_id') ;
+ if (array_key_exists ('forum', $this->setting_array)
+ && array_key_exists ($tid, $this->setting_array['forum']) ) {
+ $new_sa[$section][$tid] = $this->setting_array[$section][$tid] ;
+ } else {
+ $new_sa[$section][$tid] = $new_sa['newforum'] ;
+ }
+ }
+
+ // ...subproject-related settings
+ $new_sa['pm'] = array () ;
+ $res = db_query_params ('SELECT group_project_id FROM project_group_list WHERE group_id=$1',
+ array ($this->Group->getID())) ;
+ if (!$res) {
+ $this->setError('Error: Subproject '.db_error());
+ return false;
+ }
+ for ($j=0; $j<db_numrows($res); $j++) {
+ $tid = db_result ($res,$j,'group_project_id') ;
+ if (array_key_exists ('pm', $this->setting_array)
+ && array_key_exists ($tid, $this->setting_array['pm']) ) {
+ $new_sa[$section][$tid] = $this->setting_array[$section][$tid] ;
+ } else {
+ $new_sa[$section][$tid] = $new_sa['newpm'] ;
+ }
+ }
+
+ // Delete extra settings
+ db_query_params ('DELETE FROM role_settings WHERE role_id=$1 AND section_name <> ALL ($2)',
+ array ($this->getID(),
+ db_string_array_to_any_clause (array_keys ($this->role_values)))) ;
+ db_query_params ('DELETE FROM role_settings WHERE role_id=$1 AND section_name = $2 AND ref_id <> ALL ($3)',
+ array ($this->getID(),
+ 'tracker',
+ db_int_array_to_any_clause (array_keys ($new_sa['tracker'])))) ;
+ db_query_params ('DELETE FROM role_settings WHERE role_id=$1 AND section_name = $2 AND ref_id <> ALL ($3)',
+ array ($this->getID(),
+ 'forum',
+ db_int_array_to_any_clause (array_keys ($new_sa['forum'])))) ;
+ db_query_params ('DELETE FROM role_settings WHERE role_id=$1 AND section_name = $2 AND ref_id <> ALL ($3)',
+ array ($this->getID(),
+ 'pm',
+ db_int_array_to_any_clause (array_keys ($new_sa['pm'])))) ;
+
+ db_commit () ;
+
+ // Save
+ $this->update ($this->data_array['role_name'], $this->setting_array) ;
+
+ return true;
+ }
+
/**
* &getRoleVals - get all the values and language text strings for this section.
*