3 * GForge Project Management Facility
5 * Copyright 2002 GForge, LLC
13 By Tim Perdue, Sourceforge, 11/99
14 Heavy rewrite by Tim Perdue April 2000
16 Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue
19 require_once('../../env.inc.php');
20 require_once('pre.php');
21 require_once('www/pm/include/ProjectGroupHTML.class');
22 require_once('common/pm/ProjectGroupFactory.class');
23 require_once('common/pm/ProjectCategory.class');
25 if (!session_loggedin()) {
29 $group_id = getIntFromRequest('group_id');
30 $group_project_id = getIntFromRequest('group_project_id');
36 $g =& group_get_object($group_id);
37 if (!$g || !is_object($g)) {
39 } elseif ($g->isError()) {
40 exit_error('Error',$g->getErrorMessage());
43 $perm =& $g->getPermission( session_get_user() );
45 $update_cat = getStringFromRequest('update_cat');
46 $add_cat = getStringFromRequest('add_cat');
47 $delete = getStringFromRequest('delete');
48 $id = getIntFromRequest('id');
50 if (getStringFromRequest('post_changes')) {
54 $pg = new ProjectGroup($g,$group_project_id);
55 if (!$pg || !is_object($pg)) {
56 exit_error('Error','Unable to create ProjectCategory Object');
57 } elseif ($pg->isError()) {
58 exit_error('Error',$pg->getErrorMessage());
61 if (getStringFromRequest('addproject')) {
62 $project_name = getStringFromRequest('project_name');
63 $description = getStringFromRequest('description');
64 $is_public = getStringFromRequest('is_public');
65 $send_all_posts_to = getStringFromRequest('send_all_posts_to');
70 if (!$perm->isPMAdmin()) {
71 exit_permission_denied();
73 if (!$pg->create($project_name,$description,$is_public,$send_all_posts_to)) {
74 exit_error('Error',$pg->getErrorMessage());
76 $feedback .= $Language->getText('pm_admin_projects','project_inserted');
79 } else if ($add_cat) {
80 $name = getStringFromRequest('name');
83 Add a project_category
85 if (!$pg->userIsAdmin()) {
86 exit_permission_denied();
89 $pc = new ProjectCategory($pg);
90 if (!$pc || !is_object($pc)) {
91 exit_error('Error','Unable to create ProjectCategory Object');
93 if (!$pc->create($name)) {
94 exit_error('Error','Error inserting: '.$pc->getErrorMessage());
96 $feedback .= $Language->getText('pm_admin_projects','category_inserted');
100 } else if ($update_cat) {
101 $id = getIntFromRequest('id');
102 $name = getStringFromRequest('name');
105 Update a project_category
107 if (!$pg->userIsAdmin()) {
108 exit_permission_denied();
111 $pc = new ProjectCategory($pg,$id);
112 if (!$pc || !is_object($pc)) {
113 exit_error('Error','Unable to create ProjectCategory Object');
114 } elseif ($pc->isError()) {
115 exit_error('Error',$pc->getErrorMessage());
117 if (!$pc->update($name)) {
118 exit_error('Error','Error updating: '.$pc->getErrorMessage());
120 $feedback .= $Language->getText('pm_admin_projects','category_updated');
126 } else if (getStringFromRequest('update_pg')) {
127 $project_name = getStringFromRequest('project_name');
128 $description = getStringFromRequest('description');
129 $send_all_posts_to = getStringFromRequest('send_all_posts_to');
134 if (!$pg->userIsAdmin()) {
135 exit_permission_denied();
138 if (!$pg->update($project_name,$description,$send_all_posts_to)) {
139 exit_error('Error',$pg->getErrorMessage());
141 $feedback .= $Language->getText('general','update_successful');
144 } else if ($delete) {
145 $sure = getStringFromRequest('sure');
146 $really_sure = getStringFromRequest('really_sure');
152 if (!$pg->userIsAdmin()) {
153 exit_permission_denied();
156 if (!$pg->delete(getStringFromRequest('sure'),getStringFromRequest('really_sure'))) {
157 exit_error('Error',$pg->getErrorMessage());
159 $feedback .= $Language->getText('pm_admin_projects','deleted');
168 if ($add_cat && $group_project_id) {
170 // FORM TO ADD CATEGORIES
173 $pg = new ProjectGroup($g,$group_project_id);
174 if (!$pg || !is_object($pg)) {
175 exit_error('Error','Unable to create ProjectCategory Object');
176 } elseif ($pg->isError()) {
177 exit_error('Error',$pg->getErrorMessage());
179 if (!$pg->userIsAdmin()) {
180 exit_permission_denied();
182 pm_header(array ('title'=>$Language->getText('pm_admin_projects','add_categories_title')));
183 echo "<h2>".$Language->getText('pm_admin_projects','add_categories_to').": ". $pg->getName() ."</h2>";
186 List of possible categories for this ArtifactType
188 $result=$pg->getCategories();
190 $rows=db_numrows($result);
191 if ($result && $rows > 0) {
193 $title_arr[]=$Language->getText('pm_admin_projects','id');
194 $title_arr[]=$Language->getText('pm_admin_projects','project_title');
196 echo $GLOBALS['HTML']->listTableTop ($title_arr);
198 for ($i=0; $i < $rows; $i++) {
199 echo '<tr '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'>'.
200 '<td>'.db_result($result, $i, 'category_id').'</td>'.
201 '<td><a href="'.getStringFromServer('PHP_SELF').'?update_cat=1&id='.
202 db_result($result, $i, 'category_id').'&group_id='.$group_id.'&group_project_id='. $pg->getID() .'">'.
203 db_result($result, $i, 'category_name').'</a></td></tr>';
206 echo $GLOBALS['HTML']->listTableBottom();
209 echo "\n<h3>".$Language->getText('pm_admin_projects','no_categories')."</h3>";
214 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
215 <input type="hidden" name="add_cat" value="y" />
216 <input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>" />
217 <strong><?php echo $Language->getText('pm_admin_projects','category_name') ?>:</strong><br />
218 <input type="text" name="name" value="" size="15" maxlength="30" /><br />
220 <span class="important"><?php echo $Language->getText('pm_admin_projects','category_note') ?></span>
222 <input type="submit" name="post_changes" value="<?php echo $Language->getText('general','submit') ?>" />
228 } elseif ($update_cat && $group_project_id && $id) {
231 // FORM TO UPDATE CATEGORIES
234 Allow modification of a category
237 $pg = new ProjectGroup($g,$group_project_id);
238 if (!$pg || !is_object($pg)) {
239 exit_error('Error','Unable to create ProjectCategory Object');
240 } elseif ($pg->isError()) {
241 exit_error('Error',$pg->getErrorMessage());
243 if (!$pg->userIsAdmin()) {
244 exit_permission_denied();
246 pm_header(array ('title'=>$Language->getText('pm_admin_projects','add_categories')));
248 echo '<h2>'.$Language->getText('pm_admin_projects','modify_category').': '. $pg->getName() .'</h2>';
250 $ac = new ProjectCategory($pg,$id);
251 if (!$ac || !is_object($ac)) {
252 $feedback .= 'Unable to create ProjectCategory Object';
253 } elseif ($ac->isError()) {
254 $feedback .= $ac->getErrorMessage();
258 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post" />
259 <input type="hidden" name="update_cat" value="y" />
260 <input type="hidden" name="id" value="<?php echo $ac->getID(); ?>" />
261 <input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>" />
263 <strong><?php echo $Language->getText('pm_admin_projects','category_name')?>:</strong><br />
264 <input type="text" name="name" value="<?php echo $ac->getName(); ?>" />
266 <span class="important"><?php echo $Language->getText('pm_admin_projects','category_note2')?></span>
268 <input type="submit" name="post_changes" value="<?php echo $Language->getText('general','submit') ?>" />
275 } elseif (getStringFromRequest('addproject')) {
277 Create a new subproject
279 if (!$perm->isPMAdmin()) {
280 exit_permission_denied();
283 pm_header(array ('title'=>$Language->getText('pm_admin_projects','add_subprojects_title')));
286 <p><?php echo $Language->getText('pm_admin_projects','projects_intro') ?></p>
289 <form action="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id"; ?>" method="post">
290 <input type="hidden" name="addproject" value="y" />
291 <input type="hidden" name="post_changes" value="y" />
293 <strong><?php echo $Language->getText('pm_admin_projects','is_public')?></strong><br />
294 <input type="radio" name="is_public" value="1" checked="checked" /><?php echo $Language->getText('general','yes') ?><br />
295 <input type="radio" name="is_public" value="0" /><?php echo $Language->getText('general','no') ?><p />
297 <h3><?php echo $Language->getText('pm_admin_projects','project_name')?></h3>
299 <input type="text" name="project_name" value="" size="15" maxlength="30" />
301 <strong><?php echo $Language->getText('pm_admin_projects','description')?></strong><br />
302 <input type="text" name="description" value="" size="40" maxlength="80" />
304 <strong><?php echo $Language->getText('pm_admin_projects','send_updates')?>:</strong><br />
305 <input type="text" name="send_all_posts_to" value="" size="40" maxlength="80" /><br />
307 <input type="submit" name="submit" value="<?php echo $Language->getText('general','submit') ?>" />
312 } else if (getStringFromRequest('update_pg') && $group_project_id) {
314 $pg = new ProjectGroup($g,$group_project_id);
315 if (!$pg || !is_object($pg)) {
316 exit_error('Error','Could Not Get ProjectGroup');
317 } elseif ($pg->isError()) {
318 exit_error('Error',$pg->getErrorMessage());
320 if (!$pg->userIsAdmin()) {
321 exit_permission_denied();
324 pm_header(array('title'=>$Language->getText('pm_admin_projects','change_project_title')));
327 <p><?php echo $Language->getText('pm_admin_projects','change_project_intro') ?></p>
330 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
331 <input type="hidden" name="post_changes" value="y" />
332 <input type="hidden" name="update_pg" value="y" />
333 <input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>" />
337 <strong><?php echo $Language->getText('pm_admin_projects','is_public')?></strong><br />
338 <input type="radio" name="is_public" value="1"<?php echo (($pg->isPublic()=='1')?' checked="checked"':''); ?> /> <?php echo $Language->getText('general','yes') ?><br />
339 <input type="radio" name="is_public" value="0"<?php echo (($pg->isPublic()=='0')?' checked="checked"':''); ?> /> <?php echo $Language->getText('general','no') ?><br />
340 <input type="radio" name="is_public" value="9"<?php echo (($pg->isPublic()=='9')?' checked="checked"':''); ?> /> <?php echo $Language->getText('general','deleted')?><br />
344 <td><strong><?php echo $Language->getText('pm_admin_projects','project_name')?>:</strong><br />
345 <input type="text" name="project_name" value="<?php echo $pg->getName() ?>" />
350 <strong><?php echo $Language->getText('pm_admin_projects','description')?>:</strong><br />
351 <input type="text" name="description" value="<?php echo $pg->getDescription(); ?>" size="40" maxlength="80" /><br />
356 <strong><?php echo $Language->getText('pm_admin_projects','send_updates')?>:</strong><br />
357 <input type="text" name="send_all_posts_to" value="<?php echo $pg->getSendAllPostsTo(); ?>" size="40" maxlength="80" /><br />
362 <strong><a href="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id&add_cat=1&group_project_id=".$pg->getID(); ?>"><?php echo $Language->getText('pm_admin_projects','add_edit_categories')?></a></strong><br />
363 <strong><a href="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id&delete=1&group_project_id=".$pg->getID(); ?>"><?php echo $Language->getText('pm_admin_projects','delete_info')?></a></strong><br />
368 <input type="submit" name="submit" value="<?php echo $Language->getText('general','update') ?>" />
377 } else if ($delete && $group_project_id) {
380 $pg = new ProjectGroup($g,$group_project_id);
381 if (!$pg || !is_object($pg)) {
382 exit_error('Error','Could Not Get ProjectGroup');
383 } elseif ($pg->isError()) {
384 exit_error('Error',$pg->getErrorMessage());
386 if (!$pg->userIsAdmin()) {
387 exit_permission_denied();
390 pm_header(array('title'=>$Language->getText('pm_admin_projects','delete')));
393 <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_project_id='.$group_project_id; ?>" method="post">
394 <input type="hidden" name="post_changes" value="y" />
395 <input type="hidden" name="delete" value="y" /><br />
396 <?php echo $Language->getText('pm_admin_projects','delete_warning'); ?>
398 <input type="checkbox" name="sure" value="1"><?php echo $Language->getText('pm_admin_projects','sure') ?><br />
399 <input type="checkbox" name="really_sure" value="1"><?php echo $Language->getText('pm_admin_projects','really_sure'); ?>
401 <input type="submit" name="post_changes" value="<?php echo $Language->getText('pm_admin_projects','delete') ?>" />
412 pm_header(array('title'=>$Language->getText('pm_admin_projects','admin_title')));
415 // Show link to create new subproject
417 if ($perm->isPMAdmin()) {
420 <a href="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>&addproject=1"><?php echo $Language->getText('pm_admin_projects','add_project') ?></a><br />
421 <?php echo $Language->getText('pm_admin_projects','add_project_intro') ?>
426 $pgf = new ProjectGroupFactory($g);
427 if (!$pgf || !is_object($pgf)) {
428 exit_error('Error','Could Not Get Factory');
429 } elseif ($pgf->isError()) {
430 exit_error('Error',$pgf->getErrorMessage());
433 $pg_arr =& $pgf->getProjectGroups();
435 if (count($pg_arr) < 1 || $pg_arr == false) {
436 echo $Language->getText('pm_admin_projects','no_projects_found');
439 for ($i=0; $i<count($pg_arr); $i++) {
440 echo '<a href="'. getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_project_id='.$pg_arr[$i]->getID().'&update_pg=1">'.$Language->getText('pm_admin_projects','edit_update').': <strong>'.$pg_arr[$i]->getName().'</strong></a><p />';