3 * GForge File Release Facility
5 * Copyright 2002 GForge, LLC
11 require_once('../../env.inc.php');
12 require_once('pre.php');
13 require_once('common/frs/FRSPackage.class');
14 require_once('common/frs/FRSRelease.class');
15 require_once('common/frs/FRSFile.class');
16 require_once('www/frs/include/frs_utils.php');
18 $group_id = getIntFromRequest('group_id');
19 $package_id = getIntFromRequest('package_id');
25 $g =& group_get_object($group_id);
26 if (!$g || $g->isError()) {
27 exit_error('Error',$g->getErrorMessage());
29 $perm =& $g->getPermission(session_get_user());
30 if (!$perm->isReleaseTechnician()) {
31 exit_permission_denied();
34 $upload_dir = $sys_ftp_upload_dir . "/" . $g->getUnixName();
37 Quick file release system , Darrell Brogdon, SourceForge, Aug, 2000
39 With much code horked from editreleases.php
42 if (getStringFromRequest('submit')) {
43 $release_name = getStringFromRequest('release_name');
44 $userfile = getUploadedFile('userfile');
45 $userfile_name = $userfile['name'];
46 $type_id = getIntFromRequest('type_id');
47 $processor_id = getIntFromRequest('processor_id');
48 $release_date = getStringFromRequest('release_date');
49 $release_notes = getStringFromRequest('release_notes');
50 $release_changes = getStringFromRequest('release_changes');
51 $preformatted = getStringFromRequest('preformatted');
52 $ftp_filename = getStringFromRequest('ftp_filename');
53 if ($sys_use_ftpuploads && $ftp_filename && util_is_valid_filename($ftp_filename) && is_file($upload_dir.'/'.$ftp_filename)) {
54 //file was uploaded already via ftp
55 //use setuid prog to chown it
56 //$cmd = escapeshellcmd("$sys_ftp_upload_chowner $ftp_filename");
58 $userfile_name=$ftp_filename;
59 $userfile=$upload_dir.'/'.$ftp_filename;
60 //echo $cmd.'***'.$output.'***'.$userfile;
63 $feedback .= _('Must define a release name.');
64 } else if (!$package_id) {
65 $feedback .= _('Must select a package.');
66 } else if (!$userfile['tmp_name'] && !$ftp_filename) {
68 switch($userfile['error']) {
69 case UPLOAD_ERR_INI_SIZE:
70 case UPLOAD_ERR_FORM_SIZE:
71 $feedback .= _('The uploaded file exceeds the maximum file size. Contact to the site admin to upload this big file.');
73 case UPLOAD_ERR_PARTIAL:
74 $feedback .= _('The uploaded file was only partially uploaded.');
76 case UPLOAD_ERR_NO_FILE:
77 $feedback .= _('Must select a file.');
80 $feedback .= _('Unknown file upload error.');
83 } else if (!$type_id || $type_id == "100") {
84 $feedback .= _('Must select a file type.');
85 } else if (!$processor_id || $processor_id == "100") {
86 $feedback .= _('Must select a processor type.');
92 $frsp = new FRSPackage($g,$package_id);
93 if (!$frsp || !is_object($frsp)) {
94 exit_error('Error','Could Not Get FRSPackage');
95 } elseif ($frsp->isError()) {
96 exit_error('Error',$frsp->getErrorMessage());
98 if ($userfile && (is_uploaded_file($userfile['tmp_name']) || ($sys_use_ftpuploads && $ftp_filename))) {
100 // Create a new FRSRelease in the db
102 $frsr = new FRSRelease($frsp);
103 if (!$frsr || !is_object($frsr)) {
104 exit_error('Error','Could Not Get FRSRelease');
105 } elseif ($frsr->isError()) {
106 exit_error('Error',$frsr->getErrorMessage());
108 // $date_list = split('[- :]',$release_date,5);
109 // $release_date = mktime($date_list[3],$date_list[4],0,$date_list[1],$date_list[2],$date_list[0]);
110 $release_date = strtotime($release_date);
112 if (!$frsr->create($release_name,$release_notes,$release_changes,
113 $preformatted,$release_date)) {
115 exit_error('Error',$frsr->getErrorMessage());
119 // Now create the new FRSFile in the db
121 $frsf = new FRSFile($frsr);
122 if (!$frsf || !is_object($frsf)) {
123 exit_error('Error','Could Not Get FRSFile');
124 } elseif ($frsf->isError()) {
125 exit_error('Error',$frsf->getErrorMessage());
127 if (!$frsf->create($userfile_name,$userfile['tmp_name'],$type_id,$processor_id,$release_date)) {
129 exit_error('Error',$frsf->getErrorMessage());
132 $feedback .= _('File Released: You May Choose To Edit the Release Now');
134 frs_admin_header(array('title'=>_('Quick Release System'),'group'=>$group_id));
137 <?php echo $Language->getText('project_admin_qrs','qrs_info',
138 array('<a href="'.$GLOBALS['sys_urlprefix'].'/frs/admin/editrelease.php?release_id='.$frsr->getID().'&group_id='.$group_id.'&package_id='.$package_id.' "><strong>',
140 '<a href="'.$GLOBALS['sys_urlprefix'].'/frs/?group_id='.$group_id.'">','</a>')) ?>
143 frs_admin_footer(array());
144 exit(); //quite dirty but less that a buggy output like before
151 exit_error('Error','Could Not Upload User File: '.$userfile['name']);
160 frs_admin_header(array('title'=>_('Quick Release System'),'group'=>$group_id));
164 <form enctype="multipart/form-data" method="post" action="<?php echo getStringFromServer('PHP_SELF')."?group_id=$group_id"; ?>">
165 <table border="0" cellpadding="2" cellspacing="2">
168 <h4><?php echo _('Package ID') ?>:</h4>
172 $sql="SELECT * FROM frs_package WHERE group_id='$group_id' AND status_id='1'";
174 $rows=db_numrows($res);
175 if (!$res || $rows < 1) {
176 echo '<h4>'._('No File Types Available').'</h4>';
179 echo '<select name="package_id">';
180 for ($i=0; $i<$rows; $i++) {
181 echo '<option value="' . db_result($res,$i,'package_id') .
182 ((db_result($res,$i,'package_id') ==$package_id) ? '" selected="selected"' : '"').'>' .
183 db_result($res,$i,'name') . '</option>';
190 <?php printf(_('Or %1$s create a new package %2$s'), '<a href="'.$GLOBALS['sys_urlprefix'].'/frs/admin/?group_id='.$group_id.'">', '</a>') ?>
195 <h4><?php echo _('Release Name') ?>:<?php echo utils_requiredField();?></h4>
198 <input type="text" name="release_name" value="<?php echo htmlspecialchars(stripslashes($release_name)) ?>" />
203 <h4><?php echo _('Release Date') ?>:</h4>
206 <input type="text" name="release_date" value="<?php echo date('Y-m-d H:i'); ?>" size="16" maxlength="16" />
211 <h4><?php echo _('File Name') ?>:<?php echo utils_requiredField();?></h4>
214 <span class="important">
215 <?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').' ('._('NOTE: In some browsers you must select the file in the file-upload dialog and click "OK". Double-clicking doesn\'t register the file').' '. ini_get('upload_max_filesize')?>)</span><br />
216 <?php echo _('Upload a new file') ?>: <input type="file" name="userfile" size="30" />
217 <?php if ($sys_use_ftpuploads) {
220 printf(_('Alternatively, you can use FTP to upload a new file at %1$s'), $sys_ftp_upload_host).'<br />';
221 echo _('Choose an FTP file instead of uploading:').'<br />';
223 $ftp_files_arr=array_merge($arr,ls($upload_dir,true));
224 echo html_build_select_box_from_arrays($ftp_files_arr,$ftp_files_arr,'ftp_filename',''); ?>
232 <h4><?php echo _('File Type') ?>:<?php echo utils_requiredField();?></h4>
236 print frs_show_filetype_popup ('type_id',$type_id) . "<br />";
242 <h4><?php echo _('Processor Type') ?>:<?php echo utils_requiredField();?></h4>
246 print frs_show_processor_popup ('processor_id',$processor_id);
252 <h4><?php echo _('Release Notes') ?>:</h4>
255 <textarea name="release_notes" rows="7" cols="50"><?php echo htmlspecialchars(stripslashes($release_notes)); ?></textarea>
260 <h4><?php echo _('Change Log') ?>:</h4>
263 <textarea name="release_changes" rows="7" cols="50"><?php echo htmlspecialchars(stripslashes($release_changes)); ?></textarea>
267 <td colspan="2" align="center">
268 <input type="checkbox" name="preformatted" value="1" /> <?php echo _('Preserve my pre-formatted text') ?>
269 <p><input type="submit" name="submit" value="<?php echo _('Release File') ?>" /></p>