6 * SourceForge: Breaking Down the Barriers to Open Source Development
7 * Copyright 1999-2001 (c) VA Linux Systems
8 * http://sourceforge.net
12 require_once $gfwww.'news/news_utils.php';
13 require_once $gfwww.'include/trove.php';
14 require_once $gfwww.'include/project_summary.php';
15 require_once $gfcommon.'include/tag_cloud.php';
17 $title = _('Project Info');
19 site_project_header(array('title'=>$title,'group'=>$group_id,'toptab'=>'home'));
22 // ########################################### end top area
27 <table width="100%" border="0">
29 <td width="80%" valign="top">
32 // ########################################## top area, not in box
34 $res_admin = db_query_params ('SELECT users.user_id,users.user_name,users.realname,user_group.admin_flags
36 WHERE user_group.user_id=users.user_id
37 AND user_group.group_id=$1
39 ORDER BY admin_flags DESC,realname',
43 if ($project->getStatus() == 'H') {
44 print "<p>".sprintf(_('NOTE: This project entry is maintained by the %1$s staff. We are not the official site for this product. Additional copyright information may be found on this project\'s homepage.'), $GLOBALS['sys_name'])."</p>\n";
47 $hook_params = array () ;
48 $hook_params['group_id'] = $group_id ;
49 plugin_hook ("project_before_description",$hook_params) ;
51 if ($project->getDescription()) {
52 print "<p>" . nl2br($project->getDescription()) . '</p>';
54 print "<p>" . _('This project has not yet submitted a description.') . '</p>';
60 if ($GLOBALS['sys_use_project_tags']) {
61 $list_tag = list_project_tag($group_id);
63 print '<p>' . _('Tags').': '. $list_tag . '</p>';
66 $project =& group_get_object($group_id);
67 $perm =& $project->getPermission(session_get_user());
68 if ($perm->isAdmin()) {
69 print '<p><a href="/project/admin/editgroupinfo.php?group_id=' . $group_id . '" >' . _('No tag defined for this project') . '</a>.</p>';
72 print '<p>' . _('No tag defined for this project') . '</p>';
77 if($GLOBALS['sys_use_trove']) {
79 print stripslashes(trove_getcatlisting($group_id,0,1,1));
83 print(_('Registered: ') . date(_('Y-m-d H:i'), $project->getStartDate()));
85 // Get the activity percentile
86 // CB hide stats if desired
87 if ($project->usesStats()) {
88 $actv = db_query_params ('SELECT ranking FROM project_weekly_metric WHERE group_id=$1',
90 $actv_res = db_result($actv,0,"ranking");
94 print '<br />'.sprintf (_('Activity Ranking: %d'). $actv_res) ;
95 print '<br />'.sprintf(_('View project <a href="%1$s" >Statistics</a> or <a href="%2$s">Activity</a>'), util_make_url ('/project/stats/?group_id='.$group_id),util_make_url ('/project/report/?group_id='.$group_id));
96 print '<br />'.sprintf(_('View list of <a href="%1$s">RSS feeds</a> available for this project.'), util_make_url ('/export/rss_project.php?group_id='.$group_id)). ' ' . html_image('ic/rss.png',16,16,array('border'=>'0'));
99 if($GLOBALS['sys_use_people']) {
100 $jobs_res = db_query_params ('SELECT name
101 FROM people_job,people_job_category
102 WHERE people_job.category_id=people_job_category.category_id
103 AND people_job.status_id=1
109 $num=db_numrows($jobs_res);
111 print '<br /><br />';
113 ngettext('HELP WANTED: This project is looking for a <a href="%1$s">"%2$s"</a>.',
114 'HELP WANTED: This project is looking for people to fill <a href="%1$s">several different positions</a>.',
116 util_make_url ('/people/?group_id='.$group_id),
117 db_result($jobs_res,0,"name"));
121 $hook_params = array () ;
122 $hook_params['group_id'] = $group_id ;
123 plugin_hook ("project_after_description",$hook_params) ;
127 <td valign="top" width="20%">
131 // ########################### Developers on this project
133 echo $HTML->boxTop(_('Developer Info'));
135 $iam_member = false ;
137 if (db_numrows($res_admin) > 0) {
140 <span class="develtitle"><?php echo _('Project Admins'); ?>:</span><br />
142 $started_developers = false;
143 while ($row_admin = db_fetch_array($res_admin)) {
144 if (trim($row_admin['admin_flags']) != 'A' && !$started_developers) {
145 $started_developers=true;
146 echo '<span class="develtitle">'. _('Members').':</span><br />';
148 echo util_make_link_u ($row_admin['user_name'],$row_admin['user_id'],$row_admin['realname']).'<br />';
149 if ($row_admin['user_id'] == user_getid())
153 <hr width="100%" size="1" />
161 $members = $project->getUsers();
162 echo util_make_link ('/project/memberlist.php?group_id='.$group_id,'['.sprintf(_('View the %1$d Member(s)'),count($members)).']'); ?></p>
167 echo '<p>'.util_make_link ('/project/request.php?group_id='.$group_id,'['._('Request to join').']').'</p>';
169 echo $HTML->boxBottom();
180 // ############################# File Releases
182 // CB hide FRS if desired
183 if ($project->usesFRS()) {
184 echo $HTML->boxTop(_('Latest File Releases'));
185 $unix_group_name = $project->getUnixName();
188 <table cellspacing="1" cellpadding="5" width="100%" border="0">
190 <td style="text-align:left">
193 <td style="text-align:center">
196 <td style="text-align:center">
199 <td style="text-align:center">
200 '._('Notes').' / '._('Monitor').'
202 <td style="text-align:center">
208 // Members of projects can see all packages
209 // Non-members can only see public packages
211 $public_required = 1;
212 if (session_loggedin() &&
213 (user_ismember($group_id) || user_ismember(1,'A'))) {
214 $public_required = 0 ;
217 $res_files = db_query_params ('SELECT frs_package.package_id,frs_package.name AS package_name,frs_release.name AS release_name,frs_release.release_id AS release_id,frs_release.release_date AS release_date
218 FROM frs_package,frs_release
219 WHERE frs_package.package_id=frs_release.package_id
220 AND frs_package.group_id=$1
221 AND frs_release.status_id=1
222 AND (frs_package.is_public=1 OR 1 != $2)
223 ORDER BY frs_package.package_id,frs_release.release_date DESC',
226 $rows_files=db_numrows($res_files);
227 if (!$res_files || $rows_files < 1) {
230 echo '<tr><td colspan="5"><strong>'._('This Project Has Not Released Any Files').'</strong></td></tr>';
234 This query actually contains ALL releases of all packages
235 We will test each row and make sure the package has changed before printing the row
237 for ($f=0; $f<$rows_files; $f++) {
238 if (db_result($res_files,$f,'package_id')==db_result($res_files,($f-1),'package_id')) {
239 //same package as last iteration - don't show this release
241 $rel_date = getdate(db_result($res_files,$f,'release_date'));
243 <tr style="text-align:center">
244 <td style="text-align:left">
245 <strong>' . db_result($res_files,$f,'package_name'). '</strong></td>';
246 // Releases to display
247 print '<td>'.db_result($res_files,$f,'release_name') .'
249 <td>' . $rel_date["month"] . ' ' . $rel_date["mday"] . ', ' . $rel_date["year"] . '</td>
250 <td><a href="'.util_make_url ('/frs/shownotes.php?group_id=' . $group_id . '&release_id=' . db_result($res_files,$f,'release_id')) . '">';
251 echo html_image('ic/manual16c.png','15','15',array('alt'=>_('Release Notes')));
252 echo '</a> - <a href="'.util_make_url ('/frs/monitor.php?filemodule_id=' . db_result($res_files,$f,'package_id') . '&group_id='.$group_id.'&start=1').'">';
253 echo html_image('ic/mail16d.png','15','15',array('alt'=>_('Monitor this package')));
256 <td>'.util_make_link ('/frs/?group_id=' . $group_id . '&release_id=' . db_result($res_files,$f,'release_id'),_('Download')).'</td></tr>';
262 <div style="text-align:center">
263 <?php echo util_make_link ('/frs/?group_id='.$group_id,'['._('View All Project Files').']'); ?>
266 echo $HTML->boxBottom();
271 <table width="100%" border="0" cellpadding="0" cellspacing="0">
273 <td valign="top" width="50%">
277 // ############################## PUBLIC AREAS
278 echo $HTML->boxTop(_('Public Areas'));
280 // ################# Homepage Link
282 print '<a href="http://' . $project->getHomePage() . '">';
283 print html_image('ic/home16b.png','20','20',array('alt'=>_('Home Page')));
284 print ' '._('Project Home Page').'</a>';
286 // ################## ArtifactTypes
288 // CB hide tracker if desired
289 if ($project->usesTracker()) {
290 print '<hr size="1" /><a href="'.util_make_url ('/tracker/?group_id='.$group_id).'">';
291 print html_image('ic/tracker20g.png','20','20',array('alt'=>_('Tracker')));
292 print ' '._('Tracker').'</a>';
294 $result=db_query_params ('SELECT agl.*,aca.count,aca.open_count
295 FROM artifact_group_list agl
296 LEFT JOIN artifact_counts_agg aca USING (group_artifact_id)
297 WHERE agl.group_id=$1
299 ORDER BY group_artifact_id ASC',
302 $rows = db_numrows($result);
304 if (!$result || $rows < 1) {
305 echo '<br /><em>'._('There are no public trackers available').'</em>';
309 for ($j = 0; $j < $rows; $j++) {
311 print util_make_link ('/tracker/?atid='. db_result($result, $j, 'group_artifact_id') . '&group_id='.$group_id.'&func=browse',db_result($result, $j, 'name')) . ' ' ;
312 printf(ngettext('(<strong>%1$s</strong> open / <strong>%2$s</strong> total)', '(<strong>%1$s</strong> open / <strong>%2$s</strong> total)', (int) db_result($result, $j, 'open_count')), (int) db_result($result, $j, 'open_count'), (int) db_result($result, $j, 'count')) .'<br />'.
313 db_result($result, $j, 'description');
320 // ################## forums
322 if ($project->usesForum()) {
323 print '<hr size="1" /><a href="'.util_make_url ('/forum/?group_id='.$group_id).'">';
324 print html_image('ic/forum20g.png','20','20',array('alt'=>_('Forums')));
325 print ' '._('Public Forums').'</a> ( ';
326 $messages_count = project_get_public_forum_message_count($group_id);
327 $forums_count = project_get_public_forum_count($group_id);
328 printf(ngettext("<strong>%d</strong> message","<strong>%d</strong> messages",$messages_count),$messages_count);
330 printf(ngettext("<strong>%d</strong> forum","<strong>%d</strong> forums",$forums_count),$forums_count);
334 // ##################### Doc Manager
336 if ($project->usesDocman()) {
339 <a href="'.util_make_url ('/docman/?group_id='.$group_id).'">';
340 print html_image('ic/docman16b.png','20','20',array('alt'=>_('Docs')));
341 print ' '._('DocManager: Project Documentation').'</a>';
344 // ##################### Mailing lists
346 if ($project->usesMail()) {
347 print '<hr size="1" /><a href="'.util_make_url ('/mail/?group_id='.$group_id).'">';
348 print html_image('ic/mail16b.png','20','20',array('alt'=>_('Lists')));
349 print ' '._('Mailing Lists').'</a>';
350 $n = project_get_mail_list_count($group_id);
351 printf(ngettext('(<strong>%1$s</strong> public mailing list)', '(<strong>%1$s</strong> public mailing lists)', $n), $n);
354 // ##################### Task Manager
356 if ($project->usesPm()) {
357 print '<hr size="1" /><a href="'.util_make_url ('/pm/?group_id='.$group_id).'">';
358 print html_image('ic/taskman20g.png','20','20',array('alt'=>_('Tasks')));
359 print ' '._('Task Manager').'</a>';
360 $result = db_query_params ('SELECT * FROM project_group_list WHERE group_id=$1 AND is_public=1',
362 $rows = db_numrows($result);
363 if (!$result || $rows < 1) {
364 echo '<br /><em>'._('There are no public subprojects available').'</em>';
367 for ($j = 0; $j < $rows; $j++) {
369 print util_make_link ('/pm/task.php?group_project_id='.db_result($result, $j, 'group_project_id').'&group_id='.$group_id.'&func=browse',db_result($result, $j, 'project_name'));
376 // ######################### Surveys
378 if ($project->usesSurvey()) {
379 print '<hr size="1" /><a href="'.util_make_url ('/survey/?group_id='.$group_id).'">';
380 print html_image('ic/survey16b.png','20','20',array('alt'=>_('Surveys')));
381 print ' '._('Surveys')."</a>";
382 echo ' ( <strong>'. project_get_survey_count($group_id) .'</strong> '._('surveys').' )';
385 // ######################### SCM
387 if ($project->usesSCM()) {
388 print '<hr size="1" /><a href="'.util_make_url ('/scm/?group_id='.$group_id).'">';
389 print html_image('ic/cvs16b.png','20','20',array('alt'=>_('SCM')));
390 print ' '._('SCM Repository')."</a>";
392 $hook_params = array () ;
393 $hook_params['group_id'] = $group_id ;
394 plugin_hook ("scm_stats", $hook_params) ;
397 // ######################### Plugins
399 $hook_params = array ();
400 $hook_params['group_id'] = $group_id;
401 plugin_hook ("project_public_area", $hook_params);
403 // ######################## AnonFTP
405 // CB hide FTP if desired
406 if ($project->usesFTP()) {
407 if ($project->isActive()) {
408 print '<hr size="1" />';
409 print '<a href="ftp://' . $project->getUnixName() . '.' . $GLOBALS['sys_default_domain'] . '/pub/'. $project->getUnixName() .'/">';
410 print html_image('ic/ftp16b.png','20','20',array('alt'=>_('Anonymous FTP Space')));
411 print ' '._('Anonymous FTP Space')."</a>";
416 plugin_hook("cal_link_group",$group_id);
417 echo $HTML->boxBottom();
419 if ($project->usesNews()) {
424 <td width="15"> </td>
425 <td valign="top" width="50%">
428 // ############################# Latest News
430 echo $HTML->boxTop(_('Latest News'));
432 echo news_show_latest($group_id,10,false);
434 echo $HTML->boxBottom();
438 // Linked projects (hierarchy)
441 plugin_hook('project_home_link',$group_id);
450 site_project_footer(array());
454 // c-file-style: "bsd"