6 * SourceForge: Breaking Down the Barriers to Open Source Development
7 * Copyright 1999-2001 (c) VA Linux Systems
8 * http://sourceforge.net
13 require_once('www/news/news_utils.php');
14 require_once('www/include/trove.php');
15 require_once('www/include/project_summary.php');
17 $title = $Language->getText('project_home','title');
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
33 $res_admin = db_query("SELECT users.user_id,users.user_name,users.realname,user_group.admin_flags
35 WHERE user_group.user_id=users.user_id
36 AND user_group.group_id='$group_id'
38 ORDER BY admin_flags DESC,realname");
40 if ($project->getStatus() == 'H') {
41 print "<p>".$Language->getText('project_home','holding_note',$GLOBALS['sys_name'])."</p>\n";
44 if ($project->getDescription()) {
45 print "<p>" . nl2br($project->getDescription()) . '</p>';
47 print "<p>" . $Language->getText('group', 'nodescription') . '</p>';
52 print stripslashes(trove_getcatlisting($group_id,0,1));
55 print($Language->getText('group', 'registered') . date($sys_datefmt, $project->getStartDate()));
57 // Get the activity percentile
58 // CB hide stats if desired
59 if ($project->usesStats()) {
60 $actv = db_query("SELECT percentile FROM project_weekly_metric WHERE group_id='$group_id'");
61 $actv_res = db_result($actv,0,"percentile");
65 print '<br />'.$Language->getText('group', 'activity'). substr($actv_res, 0, 5). '%';
66 print '<br />'.$Language->getText('group', 'activitystat', $group_id);
67 print '<br />'.$Language->getText('group', 'rssfeeds', $group_id). ' ' . html_image('ic/rss.png',16,16,array('border'=>'0'));
70 if($GLOBALS['sys_use_people']) {
71 $jobs_res = db_query("SELECT name
72 FROM people_job,people_job_category
73 WHERE people_job.category_id=people_job_category.category_id
74 AND people_job.status_id=1
75 AND group_id='$group_id'
78 $num=db_numrows($jobs_res);
80 print '<br /><br />'.$Language->getText('project_home','help_wanted').' ';
82 print '<a href="'.$GLOBALS['sys_urlprefix'].'/people/?group_id='.$group_id.'">'. db_result($jobs_res,0,"name").'(s)</a>';
84 print $Language->getText('project_home','help_wanted_multiple', '<a href="'.$GLOBALS['sys_urlprefix'].'/people/?group_id='.$group_id.'">').' </a>';
89 plugin_hook ("project_after_description",false) ;
93 <td nowrap="nowrap" valign="top" width="20%">
97 // ########################### Developers on this project
99 echo $HTML->boxTop($Language->getText('group','developer_info'));
101 if (db_numrows($res_admin) > 0) {
104 <span class="develtitle"><?php echo $Language->getText('group','project_admins'); ?>:</span><br />
106 while ($row_admin = db_fetch_array($res_admin)) {
107 if (trim($row_admin['admin_flags']) != 'A' && !$started_developers) {
108 $started_developers=true;
109 echo '<span class="develtitle">'. $Language->getText('group','project_developers').':</span><br />';
111 echo '<a href="'.$GLOBALS['sys_urlprefix'].'/users/'.$row_admin['user_name'].'/">'.$row_admin['realname'].'</a><br />';
114 <hr width="100%" size="1" />
121 <p><a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/project/memberlist.php?group_id=<?php print $group_id; ?>">[<?php echo $Language->getText('project_home','view_members') ?>]</a></p>
122 <p><a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/project/request.php?group_id=<?php print $group_id; ?>">[<?php echo $Language->getText('project_joinrequest','request_link'); ?>]</a></p>
125 echo $HTML->boxBottom();
136 // ############################# File Releases
138 // CB hide FRS if desired
139 if ($project->usesFRS()) {
140 echo $HTML->boxTop($Language->getText('frs','latest_file_releases'));
141 $unix_group_name = $project->getUnixName();
144 <table cellspacing="1" cellpadding="5" width="100%" border="0">
147 '.$Language->getText('frs','file_package').'
150 '.$Language->getText('frs','file_version').'
153 '.$Language->getText('frs','file_rel_date').'
156 '.$Language->getText('frs','file_notes').' / '.$Language->getText('frs','file_monitor').'
159 '.$Language->getText('frs','file_download').'
164 // Members of projects can see all packages
165 // Non-members can only see public packages
167 if (session_loggedin()) {
168 if (user_ismember($group_id) || user_ismember(1,'A')) {
171 $pub_sql=' AND frs_package.is_public=1 ';
174 $pub_sql=' AND frs_package.is_public=1 ';
177 $sql="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
178 FROM frs_package,frs_release
179 WHERE frs_package.package_id=frs_release.package_id
180 AND frs_package.group_id='$group_id'
181 AND frs_release.status_id=1
183 ORDER BY frs_package.package_id,frs_release.release_date DESC";
185 $res_files = db_query($sql);
186 $rows_files=db_numrows($res_files);
187 if (!$res_files || $rows_files < 1) {
190 echo '<tr><td colspan="5"><strong>'.$Language->getText('group', 'norelease').'</strong></td></tr>';
194 This query actually contains ALL releases of all packages
195 We will test each row and make sure the package has changed before printing the row
197 for ($f=0; $f<$rows_files; $f++) {
198 if (db_result($res_files,$f,'package_id')==db_result($res_files,($f-1),'package_id')) {
199 //same package as last iteration - don't show this release
201 $rel_date = getdate(db_result($res_files,$f,'release_date'));
205 <strong>' . db_result($res_files,$f,'package_name'). '</strong></td>';
206 // Releases to display
207 print '<td>'.db_result($res_files,$f,'release_name') .'
209 <td>' . $rel_date["month"] . ' ' . $rel_date["mday"] . ', ' . $rel_date["year"] . '</td>
210 <td><a href="'.$GLOBALS['sys_urlprefix'].'/frs/shownotes.php?group_id=' . $group_id . '&release_id=' . db_result($res_files,$f,'release_id') . '">';
211 echo html_image('ic/manual16c.png','15','15',array('alt'=>$Language->getText('project_home','release_notes')));
212 echo '</a> - <a href="'.$GLOBALS['sys_urlprefix'].'/frs/monitor.php?filemodule_id=' . db_result($res_files,$f,'package_id') . '&group_id='.$group_id.'&start=1">';
213 echo html_image('ic/mail16d.png','15','15',array('alt'=>$Language->getText('project_home','monitor_package')));
216 <td><a href="'.$GLOBALS['sys_urlprefix'].'/frs/?group_id=' . $group_id . '&release_id=' . db_result($res_files,$f,'release_id') . '">'.$Language->getText('frs','file_download').'</a></td></tr>';
223 <a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/frs/?group_id=<?php print $group_id; ?>">[<?php echo $Language->getText('project_home','view_project_files')?>]</a>
226 echo $HTML->boxBottom();
231 <table width="100%" border="0" cellpadding="0" cellspacing="0">
233 <td valign="top" width="50%">
237 // ############################## PUBLIC AREAS
238 echo $HTML->boxTop($Language->getText('group','public_area'));
240 // ################# Homepage Link
242 print '<a href="http://' . $project->getHomePage() . '">';
243 print html_image('ic/home16b.png','20','20',array('alt'=>$Language->getText('group','short_homepage')));
244 print ' '.$Language->getText('group','long_homepage').'</a>';
246 // ################## ArtifactTypes
248 // CB hide tracker if desired
249 if ($project->usesTracker()) {
250 print '<hr size="1" /><a href="'.$GLOBALS['sys_urlprefix'].'/tracker/?group_id='.$group_id.'">';
251 print html_image('ic/tracker20g.png','20','20',array('alt'=>$Language->getText('group','short_tracker')));
252 print $Language->getText('group', 'long_tracker').'</a>';
254 $result=db_query("SELECT agl.*,aca.count,aca.open_count
255 FROM artifact_group_list agl
256 LEFT JOIN artifact_counts_agg aca USING (group_artifact_id)
257 WHERE agl.group_id='$group_id'
259 ORDER BY group_artifact_id ASC");
261 $rows = db_numrows($result);
263 if (!$result || $rows < 1) {
264 echo '<br /><em>'.$Language->getText('project_home','no_trackers').'</em>';
266 for ($j = 0; $j < $rows; $j++) {
268 - <a href="'.$GLOBALS['sys_urlprefix'].'/tracker/?atid='. db_result($result, $j, 'group_artifact_id') .
269 '&group_id='.$group_id.'&func=browse">'. db_result($result, $j, 'name') .'</a>
270 ( '.$Language->getText('project_home','tracker_open',array((int) db_result($result, $j, 'open_count'), (int) db_result($result, $j, 'count'))) .' )<br />'.
271 db_result($result, $j, 'description');
276 // ################## forums
278 if ($project->usesForum()) {
279 print '<hr size="1" /><a href="'.$GLOBALS['sys_urlprefix'].'/forum/?group_id='.$group_id.'">';
280 print html_image('ic/forum20g.png','20','20',array('alt'=>$Language->getText('group','short_forum')));
281 print ' '.$Language->getText('group','long_forum').'</a>';
282 $forums_count = project_get_public_forum_count($group_id);
283 if ($forums_count > 1) {
284 $label = 'forum_messages';
286 $label = 'forum_messages_only_one_forum';
288 print " ( ".$Language->getText('project_home',$label,array(project_get_public_forum_message_count($group_id), $forums_count))." ";
292 // ##################### Doc Manager
294 if ($project->usesDocman()) {
297 <a href="'.$GLOBALS['sys_urlprefix'].'/docman/?group_id='.$group_id.'">';
298 print html_image('ic/docman16b.png','20','20',array('alt'=>$Language->getText('group','short_docman')));
299 print ' '.$Language->getText('group','long_docman').'</a>';
302 // ##################### Mailing lists
304 if ($project->usesMail()) {
305 print '<hr size="1" /><a href="'.$GLOBALS['sys_urlprefix'].'/mail/?group_id='.$group_id.'">';
306 print html_image('ic/mail16b.png','20','20',array('alt'=>$Language->getText('group','short_mail')));
307 print ' '.$Language->getText('group','long_mail').'</a>';
308 print " ( <strong>". project_get_mail_list_count($group_id) ."</strong> ".$Language->getText('project_home','public_mailing_lists').")";
311 // ##################### Task Manager
313 if ($project->usesPm()) {
314 print '<hr size="1" /><a href="'.$GLOBALS['sys_urlprefix'].'/pm/?group_id='.$group_id.'">';
315 print html_image('ic/taskman20g.png','20','20',array('alt'=>$Language->getText('group','short_pm')));
316 print ' '.$Language->getText('group','long_pm').'</a>';
317 $sql="SELECT * FROM project_group_list WHERE group_id='$group_id' AND is_public=1";
318 $result = db_query ($sql);
319 $rows = db_numrows($result);
320 if (!$result || $rows < 1) {
321 echo '<br /><em>'.$Language->getText('project_home','no_subprojects').'</em>';
323 for ($j = 0; $j < $rows; $j++) {
325 <br /> - <a href="'.$GLOBALS['sys_urlprefix'].'/pm/task.php?group_project_id='.db_result($result, $j, 'group_project_id').
326 '&group_id='.$group_id.'&func=browse">'.db_result($result, $j, 'project_name').'</a>';
332 // ######################### Surveys
334 if ($project->usesSurvey()) {
335 print '<hr size="1" /><a href="'.$GLOBALS['sys_urlprefix'].'/survey/?group_id='.$group_id.'">';
336 print html_image('ic/survey16b.png','20','20',array('alt'=>$Language->getText('group','short_survey')));
337 print " ".$Language->getText('group','long_survey')."</a>";
338 echo ' ( <strong>'. project_get_survey_count($group_id) .'</strong> '.$Language->getText('project_home','surveys').' )';
341 // ######################### SCM
343 if ($project->usesSCM()) {
344 print '<hr size="1" /><a href="'.$GLOBALS['sys_urlprefix'].'/scm/?group_id='.$group_id.'">';
345 print html_image('ic/cvs16b.png','20','20',array('alt'=>$Language->getText('group','short_scm')));
346 print " ".$Language->getText('group','long_scm')."</a>";
350 SELECT sum(commits) AS commits,sum(adds) AS adds
352 WHERE group_id='$group_id'
353 ", -1, 0, SYS_DB_STATS);
354 $cvs_commit_num = db_result($result,0,0);
355 $cvs_add_num = db_result($result,0,1);
356 if (!$cvs_commit_num) {
363 $hook_params = array () ;
364 $hook_params['group_id'] = $group_id ;
365 plugin_hook ("scm_stats", $hook_params) ;
369 // ######################## AnonFTP
371 // CB hide FTP if desired
372 if ($project->usesFTP()) {
373 if ($project->isActive()) {
374 print '<hr size="1" />';
375 print '<a href="ftp://' . $project->getUnixName() . '.' . $GLOBALS['sys_default_domain'] . '/pub/'. $project->getUnixName() .'/">';
376 print html_image('ic/ftp16b.png','20','20',array('alt'=>$Language->getText('group','long_ftp')));
377 print $Language->getText('group','long_ftp')."</a>";
382 plugin_hook("cal_link_group",$group_id);
383 echo $HTML->boxBottom();
385 if ($project->usesNews()) {
390 <td width="15"> </td>
391 <td valign="top" width="50%">
394 // ############################# Latest News
396 echo $HTML->boxTop($Language->getText('group','long_news'));
398 echo news_show_latest($group_id,10,false);
400 echo $HTML->boxBottom();
404 // Linked projects (hierarchy)
407 plugin_hook('project_home_link',$group_id);
416 site_project_footer(array());