3 * Project Admin: Edit Releases of Packages
5 * SourceForge: Breaking Down the Barriers to Open Source Development
6 * Copyright 1999-2001 (c) VA Linux Systems
7 * http://sourceforge.net
13 require_once('pre.php');
14 require_once('common/frs/FRSPackage.class');
15 require_once('common/frs/FRSRelease.class');
16 require_once('common/frs/FRSFile.class');
17 require_once('www/frs/include/frs_utils.php');
23 $g =& group_get_object($group_id);
24 if (!$g || $g->isError()) {
25 exit_error('Error',$g->getErrorMessage());
27 $perm =& $g->getPermission(session_get_user());
28 if (!$perm->isReleaseTechnician()) {
29 exit_permission_denied();
32 if (!$package_id || !$release_id) {
33 header("Location: /frs/admin/?group_id=$group_id");
40 $frsp = new FRSPackage($g,$package_id);
41 if (!$frsp || !is_object($frsp)) {
42 exit_error('Error','Could Not Get FRSPackage');
43 } elseif ($frsp->isError()) {
44 exit_error('Error',$frsp->getErrorMessage());
50 $frsr = new FRSRelease($frsp,$release_id);
51 if (!$frsr || !is_object($frsr)) {
52 exit_error('Error','Could Not Get FRSRelease');
53 } elseif ($frsr->isError()) {
54 exit_error('Error',$frsr->getErrorMessage());
59 * Here's where we do the dirty work based on the step the user has chosen
66 // Check for uploaded release notes
67 if ($uploaded_notes != "" && $uploaded_notes != "none") {
68 if (!is_uploaded_file($uploaded_notes)) {
69 exit_error('Error','Attempted File Upload Attack');
71 $notes = addslashes(fread(fopen($HTTP_POST_FILES['uploaded_notes']['tmp_name'],'r'),filesize($HTTP_POST_FILES['uploaded_notes']['tmp_name'])));
72 if (strlen($notes) < 20) {
73 $feedback .= $Language->getText('project_admin_editrelease','release_notes_too_small');
74 $exec_changes = false;
77 $notes = $release_notes;
80 // Check for uploaded change logs
81 if ($uploaded_changes != "" && $uploaded_changes != "none") {
82 if (!is_uploaded_file($uploaded_changes)) {
83 exit_error('Error','Attempted File Upload Attack');
85 $changes = addslashes(fread(fopen($HTTP_POST_FILES['uploaded_changes']['tmp_name'],'r'), filesize($HTTP_POST_FILES['uploaded_changes']['tmp_name'])));
86 if (strlen($changes) < 20) {
87 $feedback .= $Language->getText('project_admin_editrelease','changelog_too_small');
88 $exec_changes = false;
91 $changes = $release_changes;
94 // If we haven't encountered any problems so far then save the changes
95 if ($exec_changes == true) {
96 $date_list = split('[- :]',$release_date,5);
97 $release_date = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
98 if (!$frsr->update($status_id,$release_name,$notes,$changes,$preformatted,$release_date)) {
99 exit_error('Error',$frsr->getErrorMessage());
101 $feedback .= $Language->getText('project_admin_editrelease','data_saved');
106 // Add file(s) to the release
108 // Build a Unix time value from the supplied Y-m-d value
109 $group_unix_name=group_getunixname($group_id);
111 if ($userfile && is_uploaded_file($userfile)) {
113 // Now create the new FRSFile in the db
115 $frsf = new FRSFile($frsr);
116 if (!$frsf || !is_object($frsf)) {
117 exit_error('Error','Could Not Get FRSFile');
118 } elseif ($frsf->isError()) {
119 exit_error('Error',$frsf->getErrorMessage());
121 if (!$frsf->create($userfile_name,$userfile,$type_id,$processor_id,$release_date)) {
123 exit_error('Error',$frsf->getErrorMessage());
125 $feedback=$Language->getText('project_admin_editrelease','file_released');
130 // Edit/Delete files in a release
132 // If the user chose to delete the file and he's sure then delete the file
133 if( $step3 == "Delete File" && $im_sure ) {
134 $frsf = new FRSFile($frsr,$file_id);
135 if (!$frsf || !is_object($frsf)) {
136 exit_error('Error','Could Not Get FRSFile');
137 } elseif ($frsf->isError()) {
138 exit_error('Error',$frsf->getErrorMessage());
140 if (!$frsf->delete()) {
141 exit_error('Error',$frsf->getErrorMessage());
143 $feedback .= $Language->getText('project_admin_editrelease','file_deleted');
146 // Otherwise update the file information
148 $frsf = new FRSFile($frsr,$file_id);
149 if (!$frsf || !is_object($frsf)) {
150 exit_error('Error','Could Not Get FRSFile');
151 } elseif ($frsf->isError()) {
152 exit_error('Error',$frsf->getErrorMessage());
154 $date_list = split('[- :]',$release_time,5);
155 $release_time = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
156 if (!$frsf->update($type_id,$processor_id,$release_time)) {
157 exit_error('Error',$frsf->getErrorMessage());
159 $feedback .= $Language->getText('project_admin_editrelease','file_updated');
165 frs_admin_header(array('title'=>$Language->getText('project_admin_editrelease','title'),'group'=>$group_id,'pagename'=>'project_admin_editreleases','sectionvals'=>array(group_getname($group_id))));
167 * Show the forms for each step
171 <h3><?php echo $Language->getText('project_admin_editrelease','step_1') ?></h3>
173 <form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
174 <input type="hidden" name="step1" value="1" />
175 <table border="0" cellpadding="1" cellspacing="1">
177 <td width="10%"><strong><?php echo $Language->getText('project_admin_editrelease','release_date') ?>:<strong></td>
178 <td><input type="text" name="release_date" value="<?php echo date('Y-m-d H:i',$frsr->getReleaseDate()) ?>" size="16" maxlength="16" /></td>
181 <td><strong><?php echo $Language->getText('project_admin_editrelease','release_name') ?>:<strong></td>
182 <td><input type="text" name="release_name" value="<?php echo htmlspecialchars($frsr->getName()); ?>" /></td>
185 <td><strong><?php echo $Language->getText('project_admin_editrelease','status') ?>:</strong></td>
188 echo frs_show_status_popup('status_id',$frsr->getStatus());
195 <?php echo $Language->getText('project_admin_editrelease','note') ?>
199 <td><strong><?php echo $Language->getText('project_admin_editrelease','upload_release_notes') ?>:</strong></td>
200 <td><input type="file" name="uploaded_notes" size="30" /></td>
203 <td><strong><?php echo $Language->getText('project_admin_editrelease','upload_change_log') ?>:</strong></td>
204 <td><input type="file" name="uploaded_changes" size="30" /></td>
208 <strong><?php echo $Language->getText('project_admin_editrelease','paste_release_notes') ?>:</strong><br />
209 <textarea name="release_notes" rows="10" cols="60" wrap="soft"><?php echo $frsr->getNotes(); ?></textarea>
214 <strong><?php echo $Language->getText('project_admin_editrelease','paste_changelog') ?>:</strong><br />
215 <textarea name="release_changes" rows="10" cols="60" wrap="soft"><?php echo $frsr->getChanges(); ?></textarea>
221 <input type="checkbox" name="preformatted" value="1" <?php echo (($frsr->getPreformatted())?'checked="checked"':''); ?> /> <?php echo $Language->getText('project_admin_editrelease','preserve_preformatted') ?>
223 <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','submit_refresh') ?>"/></p>
230 <h3><?php echo $Language->getText('project_admin_editrelease','step_2') ?></h3>
232 <form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
233 <input type="hidden" name="step2" value="1" />
234 <span style="color:red"><strong>
235 <?php echo $Language->getText('project_admin_editrelease','add_files_note') ?>
236 </strong></span><br />
237 <?php echo $Language->getText('project_admin_editrelease','upload_new_file') ?>: <input type="file" name="userfile" size="30" />
241 <h4><?php echo $Language->getText('project_admin_editrelease','file_type') ?>:</h4>
243 print frs_show_filetype_popup ('type_id');
247 <h4><?php echo $Language->getText('project_admin_editrelease','processor_type') ?>:</h4>
249 print frs_show_processor_popup ('processor_id');
255 <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','add_file') ?>" /></p>
260 <h3><?php echo $Language->getText('project_admin_editrelease','step_3') ?></h3>
263 // Get a list of files associated with this release
264 $res=db_query("SELECT * FROM frs_file WHERE release_id='$release_id'");
265 $rows=db_numrows($res);
267 print("<h4>".$Language->getText('project_admin_editrelease','no_files_in_release')."</h4>\n");
269 print($Language->getText('project_admin_editrelease','file_list_note')."\n");
270 $title_arr[]=$Language->getText('project_admin_editrelease','filename_release').'<br />';
271 $title_arr[]=$Language->getText('project_admin_editrelease','processor_update').'<br />';
272 $title_arr[]=$Language->getText('project_admin_editrelease','file_type_update').'<br />';
274 echo $GLOBALS['HTML']->listTableTop ($title_arr);
276 for($x=0; $x<$rows; $x++) {
278 <form action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>" method="post">
279 <input type="hidden" name="file_id" value="<?php echo db_result($res,$x,'file_id'); ?>" />
280 <input type="hidden" name="step3" value="1" />
281 <tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
282 <td nowrap="nowrap"><span style="font-size:smaller"><?php echo db_result($res,$x,'filename'); ?></span></td>
283 <td><span style="font-size:smaller"><?php echo frs_show_processor_popup ('processor_id', db_result($res,$x,'processor_id')); ?></span></td>
284 <td><span style="font-size:smaller"><?php echo frs_show_filetype_popup ('type_id', db_result($res,$x,'type_id')); ?></span></td>
286 <tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
288 <span style="font-size:smaller">
289 <?php echo frs_show_release_popup ($group_id, $name='new_release_id',db_result($res,$x,'release_id')); ?>
293 <span style="font-size:smaller">
294 <input type="text" name="release_time" value="<?php echo date('Y-m-d',db_result($res,$x,'release_time')); ?>" size="10" maxlength="10" />
297 <td><input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','update_refresh') ?> " /></td>
301 <form action="<?php echo $PHP_SELF; ?>" method="post">
302 <input type="hidden" name="group_id" value="<?php echo $group_id; ?>" />
303 <input type="hidden" name="release_id" value="<?php echo $release_id; ?>" />
304 <input type="hidden" name="package_id" value="<?php echo $package_id; ?>" />
305 <input type="hidden" name="file_id" value="<?php echo db_result($res,$x,'file_id'); ?>" />
306 <input type="hidden" name="step3" value="Delete File" />
307 <tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
311 <span style="font-size:smaller">
312 <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','delete_file') ?> " /> <input type="checkbox" name="im_sure" value="1" /> <?php echo $Language->getText('project_admin_editrelease','i_am_sure') ?>
319 echo $GLOBALS['HTML']->listTableBottom();
322 print "<br>There are ".$frsp->getMonitorCount()." users monitoring this package.";