isError()) {
exit_error($group->getErrorMessage(),'frs');
}
session_require_perm ('frs', $group_id, 'write') ;
//
// Get the package
//
$frsp = new FRSPackage($group,$package_id);
if (!$frsp || !is_object($frsp)) {
exit_error(_('Could Not Get FRSPackage'),'frs');
} elseif ($frsp->isError()) {
exit_error($frsp->getErrorMessage(),'frs');
}
//
// Get the release
//
$frsr = new FRSRelease($frsp,$release_id);
if (!$frsr || !is_object($frsr)) {
exit_error(_('Could Not Get FRSRelease'),'frs');
} elseif ($frsr->isError()) {
exit_error($frsr->getErrorMessage(),'frs');
}
$upload_dir = forge_get_config('ftp_upload_dir') . "/" . $group->getUnixName();
/*
* Here's where we do the dirty work based on the step the user has chosen
*/
// Edit release info
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["tmp_name"]) {
if (!is_uploaded_file($uploaded_notes['tmp_name'])) {
exit_error(_('Attempted File Upload Attack'),'frs');
}
if ($uploaded_notes['type'] !== 'text/plain') {
$error_msg .= _('Release Notes Are not in Text').'
';
$exec_changes = false;
} else {
$notes = fread(fopen($uploaded_notes['tmp_name'],'r'),$uploaded_notes['size']);
if (strlen($notes) < 20) {
$error_msg .= _('Release Notes Are Too Small').'
';
$exec_changes = false;
}
}
} else {
$notes = $release_notes;
}
// Check for uploaded change logs
if ($uploaded_changes['tmp_name']) {
if (!is_uploaded_file($uploaded_changes['tmp_name'])) {
exit_error(_('Attempted File Upload Attack'),'frs');
}
if ($uploaded_changes['type'] !== 'text/plain') {
$error_msg .= _('Change Log Is not in Text').'
';
$exec_changes = false;
} else {
$changes = fread(fopen($uploaded_changes['tmp_name'],'r'), $uploaded_changes['size']);
if (strlen($changes) < 20) {
$error_msg .= _('Change Log Is Too Small').'
';
$exec_changes = false;
}
}
} else {
$changes = $release_changes;
}
// If we haven't encountered any problems so far then save the changes
if ($exec_changes == true) {
//$date_list = split('[- :]',$release_date,5);
//$release_date = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
$release_date = strtotime($release_date);
if (!$frsr->update($status_id,$release_name,$notes,$changes,$preformatted,$release_date)) {
exit_error($frsr->getErrorMessage(),'frs');
} else {
$feedback .= _('Data Saved');
}
}
}
// Add file(s) to the release
if (getStringFromRequest('step2')) {
$userfile = getUploadedFile('userfile');
$userfile_name = $userfile['name'];
$type_id = getIntFromRequest('type_id');
$release_date = getStringFromRequest('release_date');
// Build a Unix time value from the supplied Y-m-d value
$release_date = strtotime($release_date);
$processor_id = getIntFromRequest('processor_id');
$group_unix_name=group_getunixname($group_id);
$ftp_filename = getStringFromRequest('ftp_filename');
$manual_filename = getStringFromRequest('manual_filename');
$ret = frs_add_file_from_form ($frsr, $type_id, $processor_id, $release_date,
$userfile, $ftp_filename, $manual_filename) ;
if ($ret == true) {
$feedback = _('File Released') ;
} else {
$error_msg .= $ret ;
}
}
// Edit/Delete files in a release
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" ) {
if ($im_sure) {
$frsf = new FRSFile($frsr,$file_id);
if (!$frsf || !is_object($frsf)) {
exit_error(_('Could Not Get FRSFile'),'frs');
} elseif ($frsf->isError()) {
exit_error($frsf->getErrorMessage(),'frs');
} else {
if (!$frsf->delete()) {
exit_error($frsf->getErrorMessage(),'frs');
} else {
$feedback .= _('File Deleted');
}
}
} else {
$error_msg .= _('File not deleted: you did not check "I\'m Sure"');
}
// Otherwise update the file information
} else {
$frsf = new FRSFile($frsr,$file_id);
if (!$frsf || !is_object($frsf)) {
exit_error(_('Could Not Get FRSFile'),'frs');
} elseif ($frsf->isError()) {
exit_error($frsf->getErrorMessage(),'frs');
} 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,$new_release_id)) {
exit_error($frsf->getErrorMessage(),'frs');
} else {
$feedback .= _('File Updated');
}
}
}
}
frs_admin_header(array('title'=>_('Edit Releases'),'group'=>$group_id));
/*
* Show the forms for each step
*/
?>
' . sprintf(ngettext('There is %1$s user monitoring this package.', 'There are %1$s users monitoring this package.', $frsp->getMonitorCount()), $frsp->getMonitorCount()) . '
'; frs_admin_footer(); // Local Variables: // mode: php // c-file-style: "bsd" // End: ?>