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 $gfcommon.'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 plugin_hook("blocks", "files index");
68 if ( $num_packages < 1) {
69 echo "<h1>"._('No File Packages')."</h1>";
70 echo "<p><strong>"._('There are no file packages defined for this project.')."</strong>";
72 echo '<div id="forge-frs" class="underline-link">'."\n";
74 echo '<div class="blue-box">'._('Below is a list of all files of the project.').' ';
76 echo _('The release you have chosen is <span class="selected">highlighted</span>.').' ';
78 echo _('Before downloading, you may want to read Release Notes and ChangeLog (accessible by clicking on release version).').'
79 </div><!-- class="blue-box" -->
82 // check the permissions and see if this user is a release manager.
83 // If so, offer the opportunity to create a release
85 if (forge_check_perm ('frs', $group_id, 'write')) {
86 echo '<p><a href="admin/qrs.php?group_id='.$group_id.'">';
87 echo _('To create a new release click here.');
91 // get unix group name for path
92 $group_unix_name=group_getunixname($group_id);
94 $proj_stats['packages'] = $num_packages;
95 $proj_stats['releases'] = 0;
96 $proj_stats['size'] = 0;
98 // Iterate and show the packages
99 for ( $p = 0; $p < $num_packages; $p++ ) {
101 $frsPackage = new FRSPackage($cur_group, db_result($res_package, $p, 'package_id'));
103 $package_name = db_result($res_package, $p, 'name');
105 if($frsPackage->isMonitoring()) {
106 $title = db_result($res_package, $p, 'name') . " - " . _('Stop monitoring this package');
107 $url = '/frs/monitor.php?filemodule_id='. db_result($res_package, $p, 'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&stop=1';
108 $package_monitor = util_make_link ( $url, $GLOBALS['HTML']->getMonitorPic($title));
110 $title = db_result($res_package, $p, 'name') . " - " . _('Monitor this package');
111 $url = '/frs/monitor.php?filemodule_id='. db_result($res_package, $p, 'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&start=1';
112 $package_monitor = util_make_link ( $url, $GLOBALS['HTML']->getMonitorPic($title));
115 $package_name_protected = $HTML->toSlug($package_name);
116 echo "\n".'<h2 id="title_'. $package_name_protected .'">' . $package_name . ' <span class="frs-monitor-package">' . $package_monitor . '</span></h2>'."\n";
118 // get the releases of the package
119 $res_release = db_query_params ('SELECT * FROM frs_release
121 AND status_id=1 ORDER BY release_date DESC, name ASC',
122 array (db_result($res_package,$p,'package_id')));
123 $num_releases = db_numrows( $res_release );
125 $proj_stats['releases'] += $num_releases;
127 if ( !$res_release || $num_releases < 1 ) {
128 echo '<strong>' . _('No releases') . '</strong>
131 // iterate and show the releases of the package
132 for ( $r = 0; $r < $num_releases; $r++ ) {
133 $package_release = db_fetch_array( $res_release );
135 // Switch whether release_id exists and/or release_id is current one
136 if ( ! $release_id || $release_id==$package_release['release_id'] ) {
137 // no release_id OR release_id is current one
138 $release_title = util_make_link ( 'frs/shownotes.php?release_id=' . $package_release['release_id'], $package_name.' '.$package_release['name']);
139 echo $GLOBALS['HTML']->boxTop($release_title, $package_name . '_' . $package_release['name'])."\n";
140 } elseif ( $release_id!=$package_release['release_id'] ) {
141 // release_id but not current one
142 $t_url_anchor = $HTML->toSlug($package_name)."-".$HTML->toSlug($package_release['name'])."-title-content";
143 $t_url = 'frs/?group_id='.$group_id.'&release_id=' . $package_release['release_id'] . "#" . $t_url_anchor;
144 $release_title = util_make_link ( $t_url, $package_name.' '.$package_release['name']);
145 echo '<div class="frs_release_name_version">'.$release_title."</div>"."\n";
148 // get the files in this release....
149 $res_file = db_query_params("SELECT frs_file.filename AS filename,
150 frs_file.file_size AS file_size,
151 frs_file.file_id AS file_id,
152 frs_file.release_time AS release_time,
153 frs_filetype.name AS type,
154 frs_processor.name AS processor,
155 frs_dlstats_filetotal_agg.downloads AS downloads
156 FROM frs_filetype,frs_processor,
157 frs_file LEFT JOIN frs_dlstats_filetotal_agg ON frs_dlstats_filetotal_agg.file_id=frs_file.file_id
159 AND frs_filetype.type_id=frs_file.type_id
160 AND frs_processor.processor_id=frs_file.processor_id
161 ORDER BY filename", array($package_release['release_id']));
162 $num_files = db_numrows( $res_file );
164 @$proj_stats['files'] += $num_files;
166 $cell_data = array();
167 $cell_data[] = _('Filename');
168 $cell_data[] = _('Date');
169 $cell_data[] = _('Size');
170 $cell_data[] = _('D/L');
171 $cell_data[] = _('Arch');
172 $cell_data[] = _('Type');
174 // Switch whether release_id exists and/or release_id == package_release['release_id']
175 if ( ! $release_id ) {
177 echo $GLOBALS['HTML']->listTableTop($cell_data,'',false);
178 } elseif ( $release_id==$package_release['release_id'] ) {
179 // release_id is current one
180 echo $GLOBALS['HTML']->listTableTop($cell_data,'',true);
182 // release_id but not current one => dont print anything here
185 if ( ! $release_id || $release_id==$package_release['release_id'] ) {
186 // no release_id OR no release_id OR release_id is current one
187 if ( !$res_file || $num_files < 1 ) {
188 echo '<tr><td colspan="6"> <em>'._('No releases').'</em></td></tr>
191 // now iterate and show the files in this release....
192 for ( $f = 0; $f < $num_files; $f++ ) {
193 $file_release = db_fetch_array( $res_file );
195 $tmp_col1 = util_make_link ('/frs/download.php/'.$file_release['file_id'].'/'.$file_release['filename'], $file_release['filename']);
196 $tmp_col2 = date(_('Y-m-d H:i'), $package_release['release_date'] );
197 $tmp_col3 = human_readable_bytes($file_release['file_size']);
198 $tmp_col4 = ($file_release['downloads'] ? number_format($file_release['downloads'], 0) : '0');
199 $tmp_col5 = $file_release['processor'];
200 $tmp_col6 = $file_release['type'];
202 $proj_stats['size'] += $file_release['file_size'];
203 @$proj_stats['downloads'] += $file_release['downloads'];
206 echo ' <td>' . $tmp_col1 . '</td>'."\n";
207 echo ' <td>' . $tmp_col2 . '</td>'."\n";
208 echo ' <td>' . $tmp_col3 . '</td>'."\n";
209 echo ' <td>' . $tmp_col4 . '</td>'."\n";
210 echo ' <td>' . $tmp_col5 . '</td>'."\n";
211 echo ' <td>' . $tmp_col6 . '</td>'."\n";
215 echo $GLOBALS['HTML']->listTableBottom();
217 // release_id but not current one
218 // nothing to print here
221 if ( ! $release_id || $release_id==$package_release['release_id'] ) {
222 echo $GLOBALS['HTML']->boxBottom();
225 } //if: release(s) available
227 // print statistics for this table datas
229 if ( $proj_stats['size'] ) {
230 print '<tr><td colspan="8"> </tr>'."\n";
231 print '<tr><td><strong>'._('Project totals').'</strong></td>'
232 . '<td align="right"><strong><em>' . $proj_stats['releases'] . '</em></strong></td>'
233 . '<td align="right"><strong><em>' . $proj_stats['files'] . '</em></strong></td>'
234 . '<td align="right"><strong><em>' . human_readable_bytes($proj_stats['size']) . '</em></strong></td>'
235 . '<td align="right"><strong><em>' . $proj_stats['downloads'] . '</em></strong></td>'
236 . '<td colspan="3"> </td></tr>'."\n";
239 print "</table>\n\n";
243 echo '</div><!-- id="forge-frs" -->';