3 * Project Admin: Edit Releases of Packages
5 * Copyright 1999-2001 (c) VA Linux Systems
6 * The rest Copyright 2002-2004 (c) GForge Team
11 * This file is part of GForge.
13 * GForge is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
18 * GForge is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with GForge; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29 require_once('pre.php');
30 require_once('common/frs/FRSPackage.class');
31 require_once('common/frs/FRSRelease.class');
32 require_once('common/frs/FRSFile.class');
33 require_once('www/frs/include/frs_utils.php');
39 $g =& group_get_object($group_id);
40 if (!$g || $g->isError()) {
41 exit_error('Error',$g->getErrorMessage());
43 $perm =& $g->getPermission(session_get_user());
44 if (!$perm->isReleaseTechnician()) {
45 exit_permission_denied();
48 if (!$package_id || !$release_id) {
49 header("Location: /frs/admin/?group_id=$group_id");
56 $frsp = new FRSPackage($g,$package_id);
57 if (!$frsp || !is_object($frsp)) {
58 exit_error('Error','Could Not Get FRSPackage');
59 } elseif ($frsp->isError()) {
60 exit_error('Error',$frsp->getErrorMessage());
66 $frsr = new FRSRelease($frsp,$release_id);
67 if (!$frsr || !is_object($frsr)) {
68 exit_error('Error','Could Not Get FRSRelease');
69 } elseif ($frsr->isError()) {
70 exit_error('Error',$frsr->getErrorMessage());
75 * Here's where we do the dirty work based on the step the user has chosen
82 // Check for uploaded release notes
83 if ($uploaded_notes != "" && $uploaded_notes != "none") {
84 if (!is_uploaded_file($uploaded_notes)) {
85 exit_error('Error','Attempted File Upload Attack');
87 $notes = addslashes(fread(fopen($HTTP_POST_FILES['uploaded_notes']['tmp_name'],'r'),filesize($HTTP_POST_FILES['uploaded_notes']['tmp_name'])));
88 if (strlen($notes) < 20) {
89 $feedback .= $Language->getText('project_admin_editrelease','release_notes_too_small');
90 $exec_changes = false;
93 $notes = $release_notes;
96 // Check for uploaded change logs
97 if ($uploaded_changes != "" && $uploaded_changes != "none") {
98 if (!is_uploaded_file($uploaded_changes)) {
99 exit_error('Error','Attempted File Upload Attack');
101 $changes = addslashes(fread(fopen($HTTP_POST_FILES['uploaded_changes']['tmp_name'],'r'), filesize($HTTP_POST_FILES['uploaded_changes']['tmp_name'])));
102 if (strlen($changes) < 20) {
103 $feedback .= $Language->getText('project_admin_editrelease','changelog_too_small');
104 $exec_changes = false;
107 $changes = $release_changes;
110 // If we haven't encountered any problems so far then save the changes
111 if ($exec_changes == true) {
112 $date_list = split('[- :]',$release_date,5);
113 $release_date = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
114 if (!$frsr->update($status_id,$release_name,$notes,$changes,$preformatted,$release_date)) {
115 exit_error('Error',$frsr->getErrorMessage());
117 $feedback .= $Language->getText('project_admin_editrelease','data_saved');
122 // Add file(s) to the release
124 // Build a Unix time value from the supplied Y-m-d value
125 $group_unix_name=group_getunixname($group_id);
127 if ($userfile && is_uploaded_file($userfile)) {
129 // Now create the new FRSFile in the db
131 $frsf = new FRSFile($frsr);
132 if (!$frsf || !is_object($frsf)) {
133 exit_error('Error','Could Not Get FRSFile');
134 } elseif ($frsf->isError()) {
135 exit_error('Error',$frsf->getErrorMessage());
137 if (!$frsf->create($userfile_name,$userfile,$type_id,$processor_id,$release_date)) {
139 exit_error('Error',$frsf->getErrorMessage());
141 $feedback=$Language->getText('project_admin_editrelease','file_released');
146 // Edit/Delete files in a release
148 // If the user chose to delete the file and he's sure then delete the file
149 if( $step3 == "Delete File" && $im_sure ) {
150 $frsf = new FRSFile($frsr,$file_id);
151 if (!$frsf || !is_object($frsf)) {
152 exit_error('Error','Could Not Get FRSFile');
153 } elseif ($frsf->isError()) {
154 exit_error('Error',$frsf->getErrorMessage());
156 if (!$frsf->delete()) {
157 exit_error('Error',$frsf->getErrorMessage());
159 $feedback .= $Language->getText('project_admin_editrelease','file_deleted');
162 // Otherwise update the file information
164 $frsf = new FRSFile($frsr,$file_id);
165 if (!$frsf || !is_object($frsf)) {
166 exit_error('Error','Could Not Get FRSFile');
167 } elseif ($frsf->isError()) {
168 exit_error('Error',$frsf->getErrorMessage());
170 $date_list = split('[- :]',$release_time,5);
171 $release_time = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
172 if (!$frsf->update($type_id,$processor_id,$release_time)) {
173 exit_error('Error',$frsf->getErrorMessage());
175 $feedback .= $Language->getText('project_admin_editrelease','file_updated');
181 frs_admin_header(array('title'=>$Language->getText('project_admin_editrelease','title'),'group'=>$group_id,'pagename'=>'project_admin_editreleases','sectionvals'=>array(group_getname($group_id))));
183 * Show the forms for each step
187 <h3><?php echo $Language->getText('project_admin_editrelease','step_1') ?></h3>
189 <form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
190 <input type="hidden" name="step1" value="1" />
191 <table border="0" cellpadding="1" cellspacing="1">
193 <td width="10%"><strong><?php echo $Language->getText('project_admin_editrelease','release_date') ?>:<strong></td>
194 <td><input type="text" name="release_date" value="<?php echo date('Y-m-d H:i',$frsr->getReleaseDate()) ?>" size="16" maxlength="16" /></td>
197 <td><strong><?php echo $Language->getText('project_admin_editrelease','release_name') ?>:<strong></td>
198 <td><input type="text" name="release_name" value="<?php echo htmlspecialchars($frsr->getName()); ?>" /></td>
201 <td><strong><?php echo $Language->getText('project_admin_editrelease','status') ?>:</strong></td>
204 echo frs_show_status_popup('status_id',$frsr->getStatus());
211 <?php echo $Language->getText('project_admin_editrelease','note') ?>
215 <td><strong><?php echo $Language->getText('project_admin_editrelease','upload_release_notes') ?>:</strong></td>
216 <td><input type="file" name="uploaded_notes" size="30" /></td>
219 <td><strong><?php echo $Language->getText('project_admin_editrelease','upload_change_log') ?>:</strong></td>
220 <td><input type="file" name="uploaded_changes" size="30" /></td>
224 <strong><?php echo $Language->getText('project_admin_editrelease','paste_release_notes') ?>:</strong><br />
225 <textarea name="release_notes" rows="10" cols="60" wrap="soft"><?php echo $frsr->getNotes(); ?></textarea>
230 <strong><?php echo $Language->getText('project_admin_editrelease','paste_changelog') ?>:</strong><br />
231 <textarea name="release_changes" rows="10" cols="60" wrap="soft"><?php echo $frsr->getChanges(); ?></textarea>
237 <input type="checkbox" name="preformatted" value="1" <?php echo (($frsr->getPreformatted())?'checked="checked"':''); ?> /> <?php echo $Language->getText('project_admin_editrelease','preserve_preformatted') ?>
239 <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','submit_refresh') ?>"/></p>
246 <h3><?php echo $Language->getText('project_admin_editrelease','step_2') ?></h3>
248 <form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
249 <input type="hidden" name="step2" value="1" />
250 <span style="color:red"><strong>
251 <?php echo $Language->getText('project_admin_editrelease','add_files_note') ?>
252 </strong></span><br />
253 <?php echo $Language->getText('project_admin_editrelease','upload_new_file') ?>: <input type="file" name="userfile" size="30" />
257 <h4><?php echo $Language->getText('project_admin_editrelease','file_type') ?>:</h4>
259 print frs_show_filetype_popup ('type_id');
263 <h4><?php echo $Language->getText('project_admin_editrelease','processor_type') ?>:</h4>
265 print frs_show_processor_popup ('processor_id');
271 <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','add_file') ?>" /></p>
276 <h3><?php echo $Language->getText('project_admin_editrelease','step_3') ?></h3>
279 // Get a list of files associated with this release
280 $res=db_query("SELECT * FROM frs_file WHERE release_id='$release_id'");
281 $rows=db_numrows($res);
283 print("<h4>".$Language->getText('project_admin_editrelease','no_files_in_release')."</h4>\n");
285 print($Language->getText('project_admin_editrelease','file_list_note')."\n");
286 $title_arr[]=$Language->getText('project_admin_editrelease','filename_release').'<br />';
287 $title_arr[]=$Language->getText('project_admin_editrelease','processor_update').'<br />';
288 $title_arr[]=$Language->getText('project_admin_editrelease','file_type_update').'<br />';
290 echo $GLOBALS['HTML']->listTableTop ($title_arr);
292 for($x=0; $x<$rows; $x++) {
294 <form action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>" method="post">
295 <input type="hidden" name="file_id" value="<?php echo db_result($res,$x,'file_id'); ?>" />
296 <input type="hidden" name="step3" value="1" />
297 <tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
298 <td nowrap="nowrap"><span style="font-size:smaller"><?php echo db_result($res,$x,'filename'); ?></span></td>
299 <td><span style="font-size:smaller"><?php echo frs_show_processor_popup ('processor_id', db_result($res,$x,'processor_id')); ?></span></td>
300 <td><span style="font-size:smaller"><?php echo frs_show_filetype_popup ('type_id', db_result($res,$x,'type_id')); ?></span></td>
302 <tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
304 <span style="font-size:smaller">
305 <?php echo frs_show_release_popup ($group_id, $name='new_release_id',db_result($res,$x,'release_id')); ?>
309 <span style="font-size:smaller">
310 <input type="text" name="release_time" value="<?php echo date('Y-m-d',db_result($res,$x,'release_time')); ?>" size="10" maxlength="10" />
313 <td><input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','update_refresh') ?> " /></td>
317 <form action="<?php echo $PHP_SELF; ?>" method="post">
318 <input type="hidden" name="group_id" value="<?php echo $group_id; ?>" />
319 <input type="hidden" name="release_id" value="<?php echo $release_id; ?>" />
320 <input type="hidden" name="package_id" value="<?php echo $package_id; ?>" />
321 <input type="hidden" name="file_id" value="<?php echo db_result($res,$x,'file_id'); ?>" />
322 <input type="hidden" name="step3" value="Delete File" />
323 <tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
327 <span style="font-size:smaller">
328 <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') ?>
335 echo $GLOBALS['HTML']->listTableBottom();
338 echo '<br />'.$Language->getText('project_admin_editrelease', 'monitor_count', array($frsp->getMonitorCount()));