isError()) { exit_error('Error', $group->getErrorMessage()); } session_require_perm ('frs', $group_id, 'write') ; // // Get the package // $frsp = new FRSPackage($group,$package_id); if (!$frsp || !is_object($frsp)) { exit_error('Error','Could Not Get FRSPackage'); } elseif ($frsp->isError()) { exit_error('Error',$frsp->getErrorMessage()); } // // Get the release // $frsr = new FRSRelease($frsp,$release_id); if (!$frsr || !is_object($frsr)) { exit_error('Error','Could Not Get FRSRelease'); } elseif ($frsr->isError()) { 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 (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('Error','Attempted File Upload Attack'); } 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['tmp_name']) { if (!is_uploaded_file($uploaded_changes['tmp_name'])) { exit_error('Error','Attempted File Upload Attack'); } 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 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('Error',$frsr->getErrorMessage()); } 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 = getStringFromRequest('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 { $feedback .= $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('Error','Could Not Get FRSFile'); } elseif ($frsf->isError()) { exit_error('Error',$frsf->getErrorMessage()); } else { if (!$frsf->delete()) { exit_error('Error',$frsf->getErrorMessage()); } else { $feedback .= _('File Deleted'); } } } else { exit_error('Error',_('Missing Parameters')); } // Otherwise update the file information } else { $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 { //$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('Error',$frsf->getErrorMessage()); } 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()) . '
'; echo '