* The rest Copyright 2002-2004 (c) GForge Team
* http://gforge.org/
*
- * @version $Id$
- *
* This file is part of GForge.
*
* GForge is free software; you can redistribute it and/or modify
*/
-require_once('pre.php');
-require_once('common/frs/FRSPackage.class');
-require_once('common/frs/FRSRelease.class');
-require_once('common/frs/FRSFile.class');
-require_once('www/frs/include/frs_utils.php');
+require_once('../../env.inc.php');
+require_once $gfwww.'include/pre.php';
+require_once $gfcommon.'frs/FRSPackage.class.php';
+require_once $gfcommon.'frs/FRSRelease.class.php';
+require_once $gfcommon.'frs/FRSFile.class.php';
+require_once $gfwww.'frs/include/frs_utils.php';
+$group_id = getIntFromRequest('group_id');
+$package_id = getIntFromRequest('package_id');
+$release_id = getIntFromRequest('release_id');
if (!$group_id) {
exit_no_group();
}
+if (!$package_id || !$release_id) {
+ header("Location: /frs/admin/?group_id=$group_id");
+ exit;
+}
$g =& group_get_object($group_id);
if (!$g || $g->isError()) {
exit_permission_denied();
}
-if (!$package_id || !$release_id) {
- header("Location: /frs/admin/?group_id=$group_id");
- exit;
-}
-
//
// Get the package
//
exit_error('Error',$frsr->getErrorMessage());
}
+$upload_dir = forge_get_config('ftp_upload_dir') . "/" . $g->getUnixName();
+
/*
* Here's where we do the dirty work based on the step the user has chosen
*/
// Edit release info
-if ($step1) {
+if (getStringFromRequest('step1')) {
+ $release_date = getStringFromRequest('release_date');
+ $release_name = getStringFromRequest('release_name');
+ $status_id = getIntFromRequest('status_id');
+ $uploaded_notes = getUploadedFile('uploaded_notes');
+ $uploaded_changes = getUploadedFile('uploaded_changes');
+ $release_notes = getStringFromRequest('release_notes');
+ $release_changes = getStringFromRequest('release_changes');
+ $preformatted = getStringFromRequest('preformatted');
$exec_changes = true;
// Check for uploaded release notes
- if ($uploaded_notes != "" && $uploaded_notes != "none") {
- if (!is_uploaded_file($uploaded_notes)) {
+ if ($uploaded_notes["tmp_name"]) {
+ if (!is_uploaded_file($uploaded_notes['tmp_name'])) {
exit_error('Error','Attempted File Upload Attack');
}
- $notes = addslashes(fread(fopen($HTTP_POST_FILES['uploaded_notes']['tmp_name'],'r'),filesize($HTTP_POST_FILES['uploaded_notes']['tmp_name'])));
- if (strlen($notes) < 20) {
- $feedback .= $Language->getText('project_admin_editrelease','release_notes_too_small');
+ if ($uploaded_notes['type'] !== 'text/plain') {
+ $feedback .= _('Release Notes Are not in Text');
$exec_changes = false;
+ } else {
+ $notes = addslashes(fread(fopen($uploaded_notes['tmp_name'],'r'),$uploaded_notes['size']));
+ if (strlen($notes) < 20) {
+ $feedback .= _('Release Notes Are Too Small');
+ $exec_changes = false;
+ }
}
} else {
$notes = $release_notes;
}
// Check for uploaded change logs
- if ($uploaded_changes != "" && $uploaded_changes != "none") {
- if (!is_uploaded_file($uploaded_changes)) {
+ if ($uploaded_changes['tmp_name']) {
+ if (!is_uploaded_file($uploaded_changes['tmp_name'])) {
exit_error('Error','Attempted File Upload Attack');
}
- $changes = addslashes(fread(fopen($HTTP_POST_FILES['uploaded_changes']['tmp_name'],'r'), filesize($HTTP_POST_FILES['uploaded_changes']['tmp_name'])));
- if (strlen($changes) < 20) {
- $feedback .= $Language->getText('project_admin_editrelease','changelog_too_small');
+ if ($uploaded_changes['type'] !== 'text/plain') {
+ $feedback .= _('Change Log Is not in Text');
$exec_changes = false;
+ } else {
+ $changes = addslashes(fread(fopen($uploaded_changes['tmp_name'],'r'), $uploaded_changes['size']));
+ if (strlen($changes) < 20) {
+ $feedback .= _('Change Log Is Too Small');
+ $exec_changes = false;
+ }
}
} else {
$changes = $release_changes;
if (!$frsr->update($status_id,$release_name,$notes,$changes,$preformatted,$release_date)) {
exit_error('Error',$frsr->getErrorMessage());
} else {
- $feedback .= $Language->getText('project_admin_editrelease','data_saved');
+ $feedback .= _('Data Saved');
}
}
}
// Add file(s) to the release
-if ($step2) {
+if (getStringFromRequest('step2')) {
+ $userfile = getUploadedFile('userfile');
+ $userfile_name = $userfile['name'];
+ $type_id = getIntFromRequest('type_id');
+ $release_date = getStringFromRequest('release_date');
+ $release_date = strtotime($release_date);
+ $processor_id = getStringFromRequest('processor_id');
// Build a Unix time value from the supplied Y-m-d value
$group_unix_name=group_getunixname($group_id);
+ $ftp_filename = getStringFromRequest('ftp_filename');
- if ($userfile && (is_uploaded_file($userfile) || ($sys_use_ftpuploads && $ftp_filename))) {
- if ($sys_use_ftpuploads && $ftp_filename && util_is_valid_filename($ftp_filename) && is_file($sys_ftp_upload_dir.'/'.$ftp_filename)) {
+ if (($userfile && is_uploaded_file($userfile['tmp_name'])) || (forge_get_config('use_ftpuploads') && $ftp_filename)){
+ if (forge_get_config('use_ftpuploads') && $ftp_filename && util_is_valid_filename($ftp_filename) && is_file($upload_dir.'/'.$ftp_filename)) {
//file was uploaded already via ftp
//use setuid prog to chown it
//$cmd = escapeshellcmd("$sys_ftp_upload_chowner $ftp_filename");
//exec($cmd,$output);
$userfile_name=$ftp_filename;
- $userfile=$sys_ftp_upload_dir.'/'.$ftp_filename;
+ $userfile=$upload_dir.'/'.$ftp_filename;
//echo $cmd.'***'.$output.'***'.$userfile;
}
-
//
// Now create the new FRSFile in the db
//
} elseif ($frsf->isError()) {
exit_error('Error',$frsf->getErrorMessage());
} else {
- if (!$frsf->create($userfile_name,$userfile,$type_id,$processor_id,$release_date)) {
+ if (!$frsf->create($userfile_name,$userfile['tmp_name'],$type_id,$processor_id,$release_date)) {
db_rollback();
exit_error('Error',$frsf->getErrorMessage());
}
- $feedback=$Language->getText('project_admin_editrelease','file_released');
+ $feedback=_('File Released');
}
}
}
// Edit/Delete files in a release
-if ($step3) {
+if (getStringFromRequest('step3')) {
+ $step3 = getStringFromRequest('step3');
+ $file_id = getIntFromRequest('file_id');
+ $processor_id = getIntFromRequest('processor_id');
+ $type_id = getIntFromRequest('type_id');
+ $new_release_id = getIntFromRequest('new_release_id');
+ $release_time = getStringFromRequest('release_time');
+ $group_id = getIntFromRequest('group_id');
+ $release_id = getIntFromRequest('release_id');
+ $package_id = getIntFromRequest('package_id');
+ $file_id = getIntFromRequest('file_id');
+ $im_sure = getStringFromRequest('im_sure');
+
// If the user chose to delete the file and he's sure then delete the file
- if( $step3 == "Delete File" && $im_sure ) {
- $frsf = new FRSFile($frsr,$file_id);
- if (!$frsf || !is_object($frsf)) {
- exit_error('Error','Could Not Get FRSFile');
- } elseif ($frsf->isError()) {
- exit_error('Error',$frsf->getErrorMessage());
- } else {
- if (!$frsf->delete()) {
+ if( $step3 == "Delete File" ) {
+ if ($im_sure) {
+ $frsf = new FRSFile($frsr,$file_id);
+ if (!$frsf || !is_object($frsf)) {
+ exit_error('Error','Could Not Get FRSFile');
+ } elseif ($frsf->isError()) {
exit_error('Error',$frsf->getErrorMessage());
} else {
- $feedback .= $Language->getText('project_admin_editrelease','file_deleted');
+ if (!$frsf->delete()) {
+ exit_error('Error',$frsf->getErrorMessage());
+ } else {
+ $feedback .= _('File Deleted');
+ }
}
+ } else {
+ exit_error('Error',_('Missing Parameters'));
}
// Otherwise update the file information
} else {
//$date_list = split('[- :]',$release_time,5);
//$release_time = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
$release_time = strtotime($release_time);
- if (!$frsf->update($type_id,$processor_id,$release_time)) {
+ if (!$frsf->update($type_id,$processor_id,$release_time,$new_release_id)) {
exit_error('Error',$frsf->getErrorMessage());
} else {
- $feedback .= $Language->getText('project_admin_editrelease','file_updated');
+ $feedback .= _('File Updated');
}
}
}
}
-frs_admin_header(array('title'=>$Language->getText('project_admin_editrelease','title'),'group'=>$group_id,'pagename'=>'project_admin_editreleases','sectionvals'=>array(group_getname($group_id))));
+frs_admin_header(array('title'=>_('Edit Releases'),'group'=>$group_id));
/*
* Show the forms for each step
*/
?>
-<h3><?php echo $Language->getText('project_admin_editrelease','step_1') ?></h3>
+<h3><?php echo _('Step 1: Edit Release') ?></h3>
-<form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
+<form enctype="multipart/form-data" method="post" action="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
<input type="hidden" name="step1" value="1" />
<table border="0" cellpadding="1" cellspacing="1">
<tr>
- <td width="10%"><strong><?php echo $Language->getText('project_admin_editrelease','release_date') ?>:<strong></td>
+ <td width="10%"><strong><?php echo _('Release date') ?>:</strong></td>
<td><input type="text" name="release_date" value="<?php echo date('Y-m-d H:i',$frsr->getReleaseDate()) ?>" size="16" maxlength="16" /></td>
</tr>
<tr>
- <td><strong><?php echo $Language->getText('project_admin_editrelease','release_name') ?>:<strong></td>
+ <td><strong><?php echo _('Release name') ?>:</strong></td>
<td><input type="text" name="release_name" value="<?php echo htmlspecialchars($frsr->getName()); ?>" /></td>
</tr>
<tr>
- <td><strong><?php echo $Language->getText('project_admin_editrelease','status') ?>:</strong></td>
+ <td><strong><?php echo _('Status') ?></strong></td>
<td>
<?php
echo frs_show_status_popup('status_id',$frsr->getStatus());
<tr>
<td colspan="2">
<br />
- <?php echo $Language->getText('project_admin_editrelease','note') ?>
+ <?php echo _('Edit the Release Notes or Change Log for this release of this package. These changes will apply to all files attached to this release.<br />You can either upload the release notes and change log individually, or paste them in together below.') ?>
</td>
</tr>
<tr>
- <td><strong><?php echo $Language->getText('project_admin_editrelease','upload_release_notes') ?>:</strong></td>
+ <td><strong><?php echo _('Upload Release Notes') ?>:</strong></td>
<td><input type="file" name="uploaded_notes" size="30" /></td>
</tr>
<tr>
- <td><strong><?php echo $Language->getText('project_admin_editrelease','upload_change_log') ?>:</strong></td>
+ <td><strong><?php echo _('Upload Change Log') ?>:</strong></td>
<td><input type="file" name="uploaded_changes" size="30" /></td>
</tr>
<tr>
<td colspan="2">
- <strong><?php echo $Language->getText('project_admin_editrelease','paste_release_notes') ?>:</strong><br />
- <textarea name="release_notes" rows="10" cols="60" wrap="soft"><?php echo $frsr->getNotes(); ?></textarea>
+ <strong><?php echo _('Paste The Notes In') ?>:</strong><br />
+ <textarea name="release_notes" rows="10" cols="60"><?php echo $frsr->getNotes(); ?></textarea>
</td>
</tr>
<tr>
<td colspan="2">
- <strong><?php echo $Language->getText('project_admin_editrelease','paste_changelog') ?>:</strong><br />
- <textarea name="release_changes" rows="10" cols="60" wrap="soft"><?php echo $frsr->getChanges(); ?></textarea>
+ <strong><?php echo _('Paste The Change Log In') ?>:</strong><br />
+ <textarea name="release_changes" rows="10" cols="60"><?php echo $frsr->getChanges(); ?></textarea>
</td>
</tr>
<tr>
<td>
<br />
- <input type="checkbox" name="preformatted" value="1" <?php echo (($frsr->getPreformatted())?'checked="checked"':''); ?> /> <?php echo $Language->getText('project_admin_editrelease','preserve_preformatted') ?>
+ <input type="checkbox" name="preformatted" value="1" <?php echo (($frsr->getPreformatted())?'checked="checked"':''); ?> /> <?php echo _('Preserve my pre-formatted text.') ?>
<p>
- <input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','submit_refresh') ?>"/></p>
+ <input type="submit" name="submit" value="<?php echo _('Submit/Refresh') ?>"/>
+ </p>
</td>
</tr>
</table>
</form>
-<p> </p>
<hr />
-<h3><?php echo $Language->getText('project_admin_editrelease','step_2') ?></h3>
-<p>
-<form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
-<input type="hidden" name="step2" value="1" />
-<span style="color:red"><strong>
-<?php echo $Language->getText('project_admin_editrelease','add_files_note') ?>
-</strong></span><br />
-<?php echo $Language->getText('project_admin_editrelease','upload_new_file') ?>: <input type="file" name="userfile" size="30" />
-<?php if ($sys_use_ftpuploads) {
+<h3><?php echo _('Step 2: Add Files To This Release') ?></h3>
+<p><?php echo _('Now, choose a file to upload into the system.') ?></p>
+
+<form enctype="multipart/form-data" method="post" action="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>">
+<input type="hidden" name="step2" value="1" />
+<fieldset><legend><strong><?php echo _("File Name") ?></strong></legend>
+<?php echo _("Upload a new file") ?>: <input type="file" name="userfile" size="30" />
+<?php if (forge_get_config('use_ftpuploads')) {
echo '<p>';
- echo $Language->getText('project_admin_qrs','ftpupload_new_file',array($sys_ftp_upload_host)).'<br />';
- echo $Language->getText('project_admin_qrs','ftpupload_choosefile').'<br />';
+ printf(_('Alternatively, you can use FTP to upload a new file at %1$s'), forge_get_config('ftp_upload_host')).'<br />';
+ echo _('Choose an FTP file instead of uploading:').'<br />';
$arr[]='';
- $ftp_files_arr=array_merge($arr,ls($sys_ftp_upload_dir,true));
+ $ftp_files_arr=array_merge($arr,ls($upload_dir,true));
echo html_build_select_box_from_arrays($ftp_files_arr,$ftp_files_arr,'ftp_filename','',false); ?>
</p>
<?php } ?>
+<p>
+<span class="important">
+<?php echo _('NOTE: In some browsers you must select the file in the file-upload dialog and click "OK". Double-clicking doesn\'t register the file.').' ('._('Maximum upload file size:').' '. ini_get('upload_max_filesize')?>)
+</span>
+</p>
+<p>
+<?php echo _('Specify a new URL') ?>: <input type="text" name="userlink" size="50" />
+</p>
+</fieldset>
<table width="60%">
<tr>
<td>
-<h4><?php echo $Language->getText('project_admin_editrelease','file_type') ?>:</h4>
+<strong><?php echo _('File Type') ?>:</strong>
<?php
print frs_show_filetype_popup ('type_id');
?>
</td>
<td>
-<h4><?php echo $Language->getText('project_admin_editrelease','processor_type') ?>:</h4>
+<strong><?php echo _('Processor Type') ?>:</strong>
<?php
print frs_show_processor_popup ('processor_id');
?>
</tr>
</table>
<p>
-<input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','add_file') ?>" /></p>
-</form></p>
-<p> </p>
+<input type="submit" name="submit" value="<?php echo _('Add This File') ?>" /></p>
+</form>
<hr />
-<p> </p>
-<h3><?php echo $Language->getText('project_admin_editrelease','step_3') ?></h3>
+<h3><?php echo _('Step 3: Edit Files In This Release') ?></h3>
<?php
// Get a list of files associated with this release
- $res=db_query("SELECT * FROM frs_file WHERE release_id='$release_id'");
+ $res=db_query_params ('SELECT * FROM frs_file WHERE release_id=$1',
+ array($release_id));
$rows=db_numrows($res);
if($rows < 1) {
- print("<h4>".$Language->getText('project_admin_editrelease','no_files_in_release')."</h4>\n");
+ print("<span class=\"error\">"._('No Files In This Release')."</span>\n");
} else {
- print($Language->getText('project_admin_editrelease','file_list_note')."\n");
- $title_arr[]=$Language->getText('project_admin_editrelease','filename_release').'<br />';
- $title_arr[]=$Language->getText('project_admin_editrelease','processor_update').'<br />';
- $title_arr[]=$Language->getText('project_admin_editrelease','file_type_update').'<br />';
+ print(_('Once you have added files to this release you <strong>must</strong> update each of these files with the correct information or they will not appear on your download summary page.')."\n");
+ $title_arr[]=_('Filename<br />Release').'<br />';
+ $title_arr[]=_('Processor<br />Release Date').'<br />';
+ $title_arr[]=_('File Type<br />Update').'<br />';
echo $GLOBALS['HTML']->listTableTop ($title_arr);
for($x=0; $x<$rows; $x++) {
?>
- <form action="<?php echo $PHP_SELF."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>" method="post">
+ <form action="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id&release_id=$release_id&package_id=$package_id"; ?>" method="post">
<input type="hidden" name="file_id" value="<?php echo db_result($res,$x,'file_id'); ?>" />
<input type="hidden" name="step3" value="1" />
<tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
- <td nowrap="nowrap"><span style="font-size:smaller"><?php echo db_result($res,$x,'filename'); ?></span></td>
- <td><span style="font-size:smaller"><?php echo frs_show_processor_popup ('processor_id', db_result($res,$x,'processor_id')); ?></span></td>
- <td><span style="font-size:smaller"><?php echo frs_show_filetype_popup ('type_id', db_result($res,$x,'type_id')); ?></span></td>
+ <td style="white-space: nowrap;"><?php echo db_result($res,$x,'filename'); ?></td>
+ <td><?php echo frs_show_processor_popup ('processor_id', db_result($res,$x,'processor_id')); ?></td>
+ <td><?php echo frs_show_filetype_popup ('type_id', db_result($res,$x,'type_id')); ?></td>
</tr>
<tr <?php echo $HTML->boxGetAltRowStyle($x); ?>>
<td>
- <span style="font-size:smaller">
+
<?php echo frs_show_release_popup ($group_id, $name='new_release_id',db_result($res,$x,'release_id')); ?>
- </span>
+
</td>
<td>
- <span style="font-size:smaller">
+
<input type="text" name="release_time" value="<?php echo date('Y-m-d',db_result($res,$x,'release_time')); ?>" size="10" maxlength="10" />
- </span>
+
</td>
- <td><input type="submit" name="submit" value="<?php echo $Language->getText('project_admin_editrelease','update_refresh') ?> " /></td>
+ <td><input type="submit" name="submit" value="<?php echo _('Update/Refresh') ?> " /></td>
</tr>
</form>
- <form action="<?php echo $PHP_SELF; ?>" method="post">
+ <form action="<?php echo getStringFromServer('PHP_SELF'); ?>" method="post">
<input type="hidden" name="group_id" value="<?php echo $group_id; ?>" />
<input type="hidden" name="release_id" value="<?php echo $release_id; ?>" />
<input type="hidden" name="package_id" value="<?php echo $package_id; ?>" />
<td> </td>
<td> </td>
<td>
- <span style="font-size:smaller">
- <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') ?>
- </span>
+
+ <input type="submit" name="submit" value="<?php echo _('Delete File') ?> " /> <input type="checkbox" name="im_sure" value="1" /> <?php echo _('I\'m Sure') ?>
+
</td>
</tr>
</form>
echo $GLOBALS['HTML']->listTableBottom();
}
-echo '<br />'.$Language->getText('project_admin_editrelease', 'monitor_count', array($frsp->getMonitorCount()));
+echo '<p>' . sprintf(ngettext('There is %1$s user monitoring this package.', 'There are %1$s users monitoring this package.', $frsp->getMonitorCount()), $frsp->getMonitorCount()) . '</p>';
echo '<hr />';
frs_admin_footer();
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
?>