3 * Project File Information/Download Page
5 * Copyright 1999-2001 (c) VA Linux Systems
6 * The rest Copyright 2002-2004 (c) GForge Team
9 * This file is part of GForge.
11 * GForge is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * GForge is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with GForge; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 require_once('../env.inc.php');
28 require_once $gfwww.'include/pre.php';
29 require_once $gfwww.'frs/include/frs_utils.php';
30 require_once $gfcommon.'frs/FRSPackage.class.php';
32 $group_id = getIntFromRequest('group_id');
33 $release_id = getIntFromRequest('release_id');
34 $cur_group =& group_get_object($group_id);
37 exit_error(_('No group title'), _('No group'));
41 // Members of projects can see all packages
42 // Non-members can only see public packages
44 if (session_loggedin()) {
45 if (user_ismember($group_id) || user_ismember(1,'A')) {
48 $pub_sql=' AND is_public=1 ';
51 $pub_sql=' AND is_public=1 ';
60 $res_package = db_query_params( $sql, array($group_id));
61 $num_packages = db_numrows( $res_package );
63 frs_header(array('title'=>_('Project Filelist'),'group'=>$group_id));
65 if ( $num_packages < 1) {
66 echo "<h1>"._('No File Packages')."</h1>";
67 echo "<p><strong>"._('There are no file packages defined for this project.')."</strong>";
69 echo '<div id="forge-frs" class="underline-link">'."\n";
71 echo '<div class="blue-box">'._('Below is a list of all files of the project.').' ';
73 echo _('The release you have chosen is <span class="selected">highlighted</span>.').' ';
75 echo _('Before downloading, you may want to read Release Notes and ChangeLog (accessible by clicking on release version).').'
76 </div><!-- class="blue-box" -->
79 // check the permissions and see if this user is a release manager.
80 // If so, offer the opportunity to create a release
82 $perm =& $cur_group->getPermission(session_get_user());
84 if ($perm->isReleaseTechnician()) {
85 echo '<p><a href="admin/qrs.php?group_id='.$group_id.'">';
86 echo _('To create a new release click here.');
90 // get unix group name for path
91 $group_unix_name=group_getunixname($group_id);
93 $proj_stats['packages'] = $num_packages;
94 $proj_stats['releases'] = 0;
95 $proj_stats['size'] = 0;
97 // Iterate and show the packages
98 for ( $p = 0; $p < $num_packages; $p++ ) {
100 $frsPackage = new FRSPackage($cur_group, db_result($res_package, $p, 'package_id'));
102 $package_name = db_result($res_package, $p, 'name');
104 if($frsPackage->isMonitoring()) {
105 $title = db_result($res_package, $p, 'name') . " - " . _('Stop monitoring this package');
106 $url = '/frs/monitor.php?filemodule_id='. db_result($res_package, $p, 'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&stop=1';
107 $package_monitor = util_make_link ( $url, $GLOBALS['HTML']->getMonitorPic($title));
109 $title = db_result($res_package, $p, 'name') . " - " . _('Monitor this package');
110 $url = '/frs/monitor.php?filemodule_id='. db_result($res_package, $p, 'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&start=1';
111 $package_monitor = util_make_link ( $url, $GLOBALS['HTML']->getMonitorPic($title));
114 $package_name_protected = $HTML->toSlug($package_name);
115 echo "\n".'<h2 id="title_'. $package_name_protected .'">' . $package_name . ' <span class="frs-monitor-package">' . $package_monitor . '</span></h2>'."\n";
117 // get the releases of the package
118 $res_release = db_query_params ('SELECT * FROM frs_release
120 AND status_id=1 ORDER BY release_date DESC, name ASC',
121 array (db_result($res_package,$p,'package_id')));
122 $num_releases = db_numrows( $res_release );
124 $proj_stats['releases'] += $num_releases;
126 if ( !$res_release || $num_releases < 1 ) {
127 echo '<strong>' . _('No releases') . '</strong>
130 // iterate and show the releases of the package
131 for ( $r = 0; $r < $num_releases; $r++ ) {
132 $package_release = db_fetch_array( $res_release );
134 // Switch whether release_id exists and/or release_id is current one
135 if ( ! $release_id || $release_id==$package_release['release_id'] ) {
136 // no release_id OR release_id is current one
137 $release_title = util_make_link ( 'frs/shownotes.php?release_id=' . $package_release['release_id'], $package_name.' '.$package_release['name']);
138 echo $GLOBALS['HTML']->boxTop($release_title, $package_name . '_' . $package_release['name'])."\n";
139 } elseif ( $release_id!=$package_release['release_id'] ) {
140 // release_id but not current one
141 $t_url_anchor = $HTML->toSlug($package_name)."-".$HTML->toSlug($package_release['name'])."-title-content";
142 $t_url = 'frs/?group_id='.$group_id.'&release_id=' . $package_release['release_id'] . "#" . $t_url_anchor;
143 $release_title = util_make_link ( $t_url, $package_name.' '.$package_release['name']);
144 echo '<div class="frs_release_name_version">'.$release_title."</div>"."\n";
147 // get the files in this release....
148 $res_file = db_query_params("SELECT frs_file.filename AS filename,
149 frs_file.file_size AS file_size,
150 frs_file.file_id AS file_id,
151 frs_file.release_time AS release_time,
152 frs_filetype.name AS type,
153 frs_processor.name AS processor,
154 frs_dlstats_filetotal_agg.downloads AS downloads
155 FROM frs_filetype,frs_processor,
156 frs_file LEFT JOIN frs_dlstats_filetotal_agg ON frs_dlstats_filetotal_agg.file_id=frs_file.file_id
158 AND frs_filetype.type_id=frs_file.type_id
159 AND frs_processor.processor_id=frs_file.processor_id
160 ORDER BY filename", array($package_release['release_id']));
161 $num_files = db_numrows( $res_file );
163 @$proj_stats['files'] += $num_files;
165 $cell_data = array();
166 $cell_data[] = _('Filename');
167 $cell_data[] = _('Date');
168 $cell_data[] = _('Size');
169 $cell_data[] = _('D/L');
170 $cell_data[] = _('Arch');
171 $cell_data[] = _('Type');
173 // Switch whether release_id exists and/or release_id == package_release['release_id']
174 if ( ! $release_id ) {
176 echo $GLOBALS['HTML']->listTableTop($cell_data,'',false);
177 } elseif ( $release_id==$package_release['release_id'] ) {
178 // release_id is current one
179 echo $GLOBALS['HTML']->listTableTop($cell_data,'',true);
181 // release_id but not current one => dont print anything here
184 if ( ! $release_id || $release_id==$package_release['release_id'] ) {
185 // no release_id OR no release_id OR release_id is current one
186 if ( !$res_file || $num_files < 1 ) {
187 echo '<tr><td colspan="6"> <em>'._('No releases').'</em></td></tr>
190 // now iterate and show the files in this release....
191 for ( $f = 0; $f < $num_files; $f++ ) {
192 $file_release = db_fetch_array( $res_file );
194 $tmp_col1 = util_make_link ('/frs/download.php/'.$file_release['file_id'].'/'.$file_release['filename'], $file_release['filename']);
195 $tmp_col2 = date(_('Y-m-d H:i'), $package_release['release_date'] );
196 $tmp_col3 = human_readable_bytes($file_release['file_size']);
197 $tmp_col4 = ($file_release['downloads'] ? number_format($file_release['downloads'], 0) : '0');
198 $tmp_col5 = $file_release['processor'];
199 $tmp_col6 = $file_release['type'];
201 $proj_stats['size'] += $file_release['file_size'];
202 @$proj_stats['downloads'] += $file_release['downloads'];
205 echo ' <td>' . $tmp_col1 . '</td>'."\n";
206 echo ' <td>' . $tmp_col2 . '</td>'."\n";
207 echo ' <td>' . $tmp_col3 . '</td>'."\n";
208 echo ' <td>' . $tmp_col4 . '</td>'."\n";
209 echo ' <td>' . $tmp_col5 . '</td>'."\n";
210 echo ' <td>' . $tmp_col6 . '</td>'."\n";
214 echo $GLOBALS['HTML']->listTableBottom();
216 // release_id but not current one
217 // nothing to print here
220 if ( ! $release_id || $release_id==$package_release['release_id'] ) {
221 echo $GLOBALS['HTML']->boxBottom();
224 } //if: release(s) available
226 // print statistics for this table datas
228 if ( $proj_stats['size'] ) {
229 print '<tr><td colspan="8"> </tr>'."\n";
230 print '<tr><td><strong>'._('Project totals').'</strong></td>'
231 . '<td align="right"><strong><em>' . $proj_stats['releases'] . '</em></strong></td>'
232 . '<td align="right"><strong><em>' . $proj_stats['files'] . '</em></strong></td>'
233 . '<td align="right"><strong><em>' . human_readable_bytes($proj_stats['size']) . '</em></strong></td>'
234 . '<td align="right"><strong><em>' . $proj_stats['downloads'] . '</em></strong></td>'
235 . '<td colspan="3"> </td></tr>'."\n";
238 print "</table>\n\n";
242 echo '</div><!-- id="forge-frs" -->';