4 * Project Admin: Module of common functions
6 * SourceForge: Breaking Down the Barriers to Open Source Development
7 * Copyright 1999-2001 (c) VA Linux Systems
8 * http://sourceforge.net
17 Standard header to be used on all /project/admin/* pages
21 function project_admin_header($params) {
22 global $DOCUMENT_ROOT,$group_id,$feedback,$HTML,$Language;
24 $params['toptab']='admin';
25 $params['group']=$group_id;
27 $project =& group_get_object($group_id);
28 if (!$project || !is_object($project)) {
32 $perm =& $project->getPermission( session_get_user() );
33 if (!$perm || !is_object($perm)) {
38 Enforce Project Admin Perms
40 if (!$perm->isAdmin()) {
41 exit_permission_denied();
44 site_project_header($params);
49 $labels[] = $Language->getText('project_admin_utils','admin');
50 $labels[] = $Language->getText('project_admin_utils','user_permissions');
51 $labels[] = $Language->getText('project_admin_utils','edit_public_info');
52 $labels[] = $Language->getText('project_admin_utils','project_history');
53 $labels[] = $Language->getText('project_admin_utils','vhosts');
54 if($GLOBALS['sys_use_people']) {
55 $labels[] = $Language->getText('project_admin_utils','post_jobs');
56 $labels[] = $Language->getText('project_admin_utils','edit_jobs');
58 $labels[] = $Language->getText('project_admin_utils','multimedia_data');
59 $labels[] = $Language->getText('project_admin_utils','database_admin');
60 $labels[] = $Language->getText('project_admin_utils','stats');
62 $links[] = '/project/admin/?group_id='.$group_id;
63 $links[] = '/project/admin/userperms.php?group_id='.$group_id;
64 $links[] = '/project/admin/editgroupinfo.php?group_id='.$group_id;
65 $links[] = '/project/admin/history.php?group_id='.$group_id;
66 $links[] = '/project/admin/vhost.php?group_id='.$group_id;
67 if($GLOBALS['$sys_use_people']) {
68 $links[] = '/people/createjob.php?group_id='.$group_id;
69 $links[] = '/people/?group_id='.$group_id;
71 $links[] = '/project/admin/editimages.php?group_id='.$group_id;
72 $links[] = '/project/admin/database.php?group_id='.$group_id;
73 $links[] = '/project/stats/?group_id='.$group_id;
75 echo $HTML->subMenu($labels, $links);
80 Standard footer to be used on all /project/admin/* pages
84 function project_admin_footer($params) {
85 site_project_footer($params);
90 The following three functions are for group
93 When changes like adduser/rmuser/change status
94 are made to a group, a row is added to audit trail
95 using group_add_history()
99 function group_get_history ($group_id=false) {
100 $sql="SELECT group_history.field_name,group_history.old_value,group_history.adddate,users.user_name ".
101 "FROM group_history,users ".
102 "WHERE group_history.mod_by=users.user_id ".
103 "AND group_id='$group_id' ORDER BY group_history.adddate DESC";
104 return db_query($sql);
107 function group_add_history ($field_name,$old_value,$group_id) {
108 $group=group_get_object($group_id);
109 $group->addHistory($field_name,$old_value);
114 Nicely html-formatted output of this group's audit trail
118 function show_grouphistory ($group_id) {
120 show the group_history rows that are relevant to
123 global $sys_datefmt, $Language;
124 $result=group_get_history($group_id);
125 $rows=db_numrows($result);
130 <h3>'.$Language->getText('project_admin_utils','change_history').'</h3>
133 $title_arr[]=$Language->getText('project_admin_utils','field');
134 $title_arr[]=$Language->getText('project_admin_utils','old_value');
135 $title_arr[]=$Language->getText('project_admin_utils','date');
136 $title_arr[]=$Language->getText('project_admin_utils','by');
138 echo $GLOBALS['HTML']->listTableTop ($title_arr);
140 for ($i=0; $i < $rows; $i++) {
141 $field=db_result($result, $i, 'field_name');
143 <tr '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'><td>'.$field.'</td><td>';
145 if ($field=='removed user') {
146 echo user_getname(db_result($result, $i, 'old_value'));
148 echo db_result($result, $i, 'old_value');
151 '<td>'.date($sys_datefmt,db_result($result, $i, 'adddate')).'</td>'.
152 '<td>'.db_result($result, $i, 'user_name').'</td></tr>';
155 echo $GLOBALS['HTML']->listTableBottom();
159 <h3>'.$Language->getText('project_admin_utils','no_changes').'</h3>';
164 prdb_namespace_seek - check that a projects' potential db name hasn't
165 already been used. If it has - add a 1..20 to the end of it. If it
166 iterates through twenty times and still fails - namespace depletion -
170 function prdb_namespace_seek($namecheck) {
174 ."where dbname = '$namecheck'";
176 $res_dbl = db_query($query);
178 if (db_numrows($res_dbl) > 0) {
179 //crap, we're going to have issues
182 while ((db_numrows($res_dbl) > 0) && ($curr_num < 20)) {
185 $namecheck .= "$namecheck"."$curr_num";
189 ."where dbname = '$namecheck'";
191 $res_dbl = db_query($query);
194 // if we reached 20, then the namespace is depleted - eject eject
195 if ($curr_num == 20) {
196 exit_error("Namespace Failure","Failed to find namespace for database");
202 } //end prdb_namespace_seek()
204 function random_pwgen() {
206 srand ( (double) microtime()*10000000);
209 for ($i = 0; $i < 10; $i++) {
216 $rnpw .= chr(rand(65,122));
223 function permissions_blurb() {
226 return $Language->getText('project_admin_utils','permission_blurb');