3 * GForge File Release Facility
5 * Copyright 2002 GForge, LLC
10 require_once('../../env.inc.php');
11 require_once $gfwww.'include/pre.php';
12 require_once $gfcommon.'frs/FRSPackage.class.php';
13 require_once $gfcommon.'frs/FRSRelease.class.php';
14 require_once $gfcommon.'frs/FRSFile.class.php';
15 require_once $gfwww.'frs/include/frs_utils.php';
17 $group_id = getIntFromRequest('group_id');
18 $package_id = getIntFromRequest('package_id');
24 $g =& group_get_object($group_id);
25 if (!$g || $g->isError()) {
26 exit_error('Error',$g->getErrorMessage());
29 // check the permissions and see if this user is a release manager.
30 // If so, he can create a release
31 $perm =& $g->getPermission(session_get_user());
32 $can_post = $perm->isReleaseTechnician();
33 $packages = get_frs_packages($g);
36 // If user has write access to at least one package, then it's ok.
37 foreach ( $packages as $f ) {
38 if ($f->userCanPost()) {
45 exit_permission_denied();
48 $upload_dir = $sys_ftp_upload_dir . "/" . $g->getUnixName();
51 Quick file release system , Darrell Brogdon, SourceForge, Aug, 2000
53 With much code horked from editreleases.php
56 if (getStringFromRequest('submit')) {
57 $release_name = trim(getStringFromRequest('release_name'));
58 $userfile = getUploadedFile('userfile');
59 $userfile_name = $userfile['name'];
60 $type_id = getIntFromRequest('type_id');
61 $processor_id = getIntFromRequest('processor_id');
62 $release_date = getStringFromRequest('release_date');
63 $release_notes = getStringFromRequest('release_notes');
64 $release_changes = getStringFromRequest('release_changes');
65 $preformatted = getStringFromRequest('preformatted');
66 $ftp_filename = getStringFromRequest('ftp_filename');
68 if ($sys_use_ftpuploads && $ftp_filename && util_is_valid_filename($ftp_filename) && is_file($upload_dir.'/'.$ftp_filename)) {
69 //file was uploaded already via ftp
70 //use setuid prog to chown it
71 //$cmd = escapeshellcmd("$sys_ftp_upload_chowner $ftp_filename");
73 $userfile_name=$ftp_filename;
74 $userfile=$upload_dir.'/'.$ftp_filename;
75 //echo $cmd.'***'.$output.'***'.$userfile;
78 $feedback .= _('Must define a release name.');
79 } else if (!$package_id) {
80 $feedback .= _('Must select a package.');
81 } else if (!$userfile['tmp_name'] && !$ftp_filename) {
83 switch($userfile['error']) {
84 case UPLOAD_ERR_INI_SIZE:
85 case UPLOAD_ERR_FORM_SIZE:
86 $feedback .= _('The uploaded file exceeds the maximum file size. Contact to the site admin to upload this big file.');
88 case UPLOAD_ERR_PARTIAL:
89 $feedback .= _('The uploaded file was only partially uploaded.');
91 case UPLOAD_ERR_NO_FILE:
92 $feedback .= _('Must select a file.');
95 $feedback .= _('Unknown file upload error.');
98 } else if (!$type_id || $type_id == "100") {
99 $feedback .= _('Must select a file type.');
100 } else if (!$processor_id || $processor_id == "100") {
101 $feedback .= _('Must select a processor type.');
107 $frsp = new FRSPackage($g,$package_id);
108 if (!$frsp || !is_object($frsp)) {
109 exit_error('Error','Could Not Get FRSPackage');
110 } elseif ($frsp->isError()) {
111 exit_error('Error',$frsp->getErrorMessage());
113 if ($userfile && (is_uploaded_file($userfile['tmp_name']) || ($sys_use_ftpuploads && $ftp_filename))) {
115 // Create a new FRSRelease in the db
117 $frsr = new FRSRelease($frsp);
118 if (!$frsr || !is_object($frsr)) {
119 exit_error('Error','Could Not Get FRSRelease');
120 } elseif ($frsr->isError()) {
121 exit_error('Error',$frsr->getErrorMessage());
123 // $date_list = split('[- :]',$release_date,5);
124 // $release_date = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
125 $release_date = strtotime($release_date);
127 if (!$frsr->create($release_name,$release_notes,$release_changes,
128 $preformatted,$release_date)) {
130 exit_error('Error',$frsr->getErrorMessage());
134 // Now create the new FRSFile in the db
136 $frsf = new FRSFile($frsr);
137 if (!$frsf || !is_object($frsf)) {
138 exit_error('Error','Could Not Get FRSFile');
139 } elseif ($frsf->isError()) {
140 exit_error('Error',$frsf->getErrorMessage());
142 if (!$frsf->create($userfile_name,$userfile['tmp_name'],$type_id,$processor_id,$release_date)) {
144 exit_error('Error',$frsf->getErrorMessage());
147 $feedback .= _('File Released: You May Choose To Edit the Release Now');
149 frs_admin_header(array('title'=>_('Quick Release System'),'group'=>$group_id));
153 printf (_('You can now <a href="%1$s"><strong>add files to this release</strong></a> if you wish, or edit the release. Please note that file(s) may not appear immediately on the <a href="%2$s">download page</a>. Allow several hours for propagation.'),
154 util_make_url ('/frs/admin/editrelease.php?release_id='.$frsr->getID().'&group_id='.$group_id.'&package_id='.$package_id),
155 util_make_url ('/frs/?group_id='.$group_id)
160 frs_admin_footer(array());
161 exit(); //quite dirty but less that a buggy output like before
168 exit_error('Error','Could Not Upload User File: '.$userfile['name']);
183 $release_changes = '';
188 frs_admin_header(array('title'=>_('Quick Release System'),'group'=>$group_id));
192 <form enctype="multipart/form-data" method="post" action="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id"; ?>">
193 <table border="0" cellpadding="2" cellspacing="2">
196 <strong><?php echo _('Package ID') ?>:</strong>
200 $res=db_query_params("SELECT * FROM frs_package WHERE group_id=$1 AND status_id='1'", array($group_id));
201 $rows=db_numrows($res);
202 if (!$res || $rows < 1) {
203 echo '<h4>'._('No File Types Available').'</h4>';
206 echo '<select name="package_id">';
207 for ($i=0; $i<$rows; $i++) {
208 echo '<option value="' . db_result($res,$i,'package_id') .
209 ((db_result($res,$i,'package_id') ==$package_id) ? '" selected="selected"' : '"').'>' .
210 db_result($res,$i,'name') . '</option>';
217 <?php printf(_('Or %1$s create a new package %2$s'), '<a href="'.util_make_url ('/frs/admin/?group_id='.$group_id).'">', '</a>') ?>
222 <strong><?php echo _('Release name') ?>:<?php echo utils_requiredField();?></strong>
225 <input type="text" name="release_name" value="<?php echo htmlspecialchars(stripslashes($release_name)) ?>" />
230 <strong><?php echo _('Release date') ?>:</strong>
233 <input type="text" name="release_date" value="<?php echo date('Y-m-d H:i'); ?>" size="16" maxlength="16" />
238 <h4><?php echo _('File Name') ?>:<?php echo utils_requiredField();?></h4>
241 <span class="important">
242 <?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.')?>
244 <?php echo _('Upload a new file') ?>: <input type="file" name="userfile" size="30" />
245 <?php if ($sys_use_ftpuploads) {
248 printf(_('Alternatively, you can use FTP to upload a new file at %1$s'), $sys_ftp_upload_host).'<br />';
249 echo _('Choose an FTP file instead of uploading:').'<br />';
251 $ftp_files_arr=array_merge($arr,ls($upload_dir,true));
252 echo html_build_select_box_from_arrays($ftp_files_arr,$ftp_files_arr,'ftp_filename',''); ?>
260 <strong><?php echo _('File Type') ?>:<?php echo utils_requiredField();?></strong>
264 print frs_show_filetype_popup ('type_id',$type_id);
270 <strong><?php echo _('Processor Type') ?>:<?php echo utils_requiredField();?></strong>
274 print frs_show_processor_popup ('processor_id',$processor_id);
280 <strong><?php echo _('Release Notes') ?>:</strong>
283 <textarea name="release_notes" rows="7" cols="50"><?php echo htmlspecialchars(stripslashes($release_notes)); ?></textarea>
288 <strong><?php echo _('Change Log') ?>:</strong>
291 <textarea name="release_changes" rows="7" cols="50"><?php echo htmlspecialchars(stripslashes($release_changes)); ?></textarea>
295 <td colspan="2" style="text-align:center">
296 <input type="checkbox" name="preformatted" value="1" /> <?php echo _('Preserve my pre-formatted text') ?>
297 <p><input type="submit" name="submit" value="<?php echo _('Release File') ?>" /></p>
309 // c-file-style: "bsd"